• Dmitry Torokhov's avatar
    Input: synaptics-rmi4 - unmask F03 interrupts when port is opened · 6abe534f
    Dmitry Torokhov authored
    Currently we register the pass-through serio port when we probe the F03 RMI
    function, and then, in sensor configure phase, we unmask interrupts.
    Unfortunately this is too late, as other drivers are free probe devices
    attached to the serio port as soon as it is probed. Because interrupts are
    masked, the IO times out, which may result in not being able to detect
    trackpoints on the pass-through port.
    
    To fix the issue we implement open() and close() methods for the
    pass-through serio port and unmask interrupts from there. We also move
    creation of the pass-through port form probe to configure stage, as RMI
    driver does not enable transport interrupt until all functions are probed
    (we should change this, but this is a separate topic).
    
    We also try to clear the pending data before unmasking interrupts, because
    some devices like to spam the system with multiple 0xaa 0x00 announcements,
    which may interfere with us trying to query ID of the device.
    
    Fixes: c5e8848f ("Input: synaptics-rmi4 - add support for F03")
    Cc: stable@vger.kernel.org
    Reviewed-by: default avatarLyude Paul <lyude@redhat.com>
    Signed-off-by: default avatarDmitry Torokhov <dmitry.torokhov@gmail.com>
    6abe534f
rmi_f03.c 7.81 KB