24 Oct, 2020

1 commit

  • Pull input updates from Dmitry Torokhov:

    - a new driver for ADC driven joysticks

    - a new Zintix touchscreen driver

    - enhancements to Intel SoC button array driver

    - support for F3A "function" in Synaptics RMI4 driver

    - assorted driver fixups

    * 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/dtor/input: (29 commits)
    Input: Add MAINTAINERS entry for SiS i2c touch input driver
    Input: evdev - per-client waitgroups
    Input: synaptics - enable InterTouch for ThinkPad T14 Gen 1
    Input: synaptics - enable InterTouch for ThinkPad P1/X1E gen 2
    Input: synaptics-rmi4 - support bootloader v8 in f34v7
    Input: synaptics-rmi4 - add support for F3A
    Input: synaptics-rmi4 - rename f30_data to gpio_data
    Input: add zinitix touchscreen driver
    dt-bindings: input/touchscreen: add bindings for zinitix
    Input: joystick - add ADC attached joystick driver.
    dt-bindings: input: Add docs for ADC driven joystick
    Input: sun4i-ps2 - fix handling of platform_get_irq() error
    Input: twl4030_keypad - fix handling of platform_get_irq() error
    Input: omap4-keypad - fix handling of platform_get_irq() error
    Input: ep93xx_keypad - fix handling of platform_get_irq() error
    Input: stmfts - fix a & vs && typo
    Input: imx6ul_tsc - unify open/close and PM paths
    Input: imx6ul_tsc - clean up some errors in imx6ul_tsc_resume()
    Input: elants_i2c - fix typo for an attribute to show calibration count
    Input: elants_i2c - report resolution of ABS_MT_TOUCH_MAJOR by FW information.
    ...

    Linus Torvalds
     

05 Oct, 2020

1 commit

  • f30_data in rmi_device_platform_data could be also referenced by RMI
    function 3A, so rename it and the structure name to avoid confusion.

    Signed-off-by: Vincent Huang
    Reviewed-by: Hans de Goede
    Tested-by: Hans de Goede
    Reviewed-by: Andrew Duggan
    Link: https://lore.kernel.org/r/20200930094147.635556-2-vincent.huang@tw.synaptics.com
    Signed-off-by: Dmitry Torokhov

    Vincent Huang
     

24 Aug, 2020

1 commit

  • Replace the existing /* fall through */ comments and its variants with
    the new pseudo-keyword macro fallthrough[1]. Also, remove unnecessary
    fall-through markings when it is the case.

    [1] https://www.kernel.org/doc/html/v5.7/process/deprecated.html?highlight=fallthrough#implicit-switch-case-fall-through

    Signed-off-by: Gustavo A. R. Silva

    Gustavo A. R. Silva
     

23 Mar, 2020

1 commit


18 Nov, 2019

1 commit

  • In the event that the RMI device is unreachable, the calls to rmi_set_mode() or
    rmi_set_page() will fail before registering the RMI transport device. When the
    device is removed, rmi_remove() will call rmi_unregister_transport_device()
    which will attempt to access the rmi_dev pointer which was not set.
    This patch adds a check of the RMI_STARTED bit before calling
    rmi_unregister_transport_device(). The RMI_STARTED bit is only set
    after rmi_register_transport_device() completes successfully.

    The kernel oops was reported in this message:
    https://www.spinics.net/lists/linux-input/msg58433.html

    [jkosina@suse.cz: reworded changelog as agreed with Andrew]
    Signed-off-by: Andrew Duggan
    Reported-by: Federico Cerutti
    Signed-off-by: Jiri Kosina

    Andrew Duggan
     

13 Jun, 2019

1 commit

  • Pull HID fixes from Jiri Kosina:

    - regression fixes (reverts) for module loading changes that turned out
    to be incompatible with some userspace, from Benjamin Tissoires

    - regression fix for special Logitech unifiying receiver 0xc52f, from
    Hans de Goede

    - a few device ID additions to logitech driver, from Hans de Goede

    - fix for Bluetooth support on 2nd-gen Wacom Intuos Pro, from Jason
    Gerecke

    * 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/hid/hid:
    HID: logitech-dj: Fix 064d:c52f receiver support
    Revert "HID: core: Call request_module before doing device_add"
    Revert "HID: core: Do not call request_module() in async context"
    Revert "HID: Increase maximum report size allowed by hid_field_extract()"
    HID: a4tech: fix horizontal scrolling
    HID: hyperv: Add a module description line
    HID: logitech-hidpp: Add support for the S510 remote control
    HID: multitouch: handle faulty Elo touch device
    HID: wacom: Sync INTUOSP2_BT touch state after each frame if necessary
    HID: wacom: Correct button numbering 2nd-gen Intuos Pro over Bluetooth
    HID: wacom: Send BTN_TOUCH in response to INTUOSP2_BT eraser contact
    HID: wacom: Don't report anything prior to the tool entering range
    HID: wacom: Don't set tool type until we're in range
    HID: rmi: Use SET_REPORT request on control endpoint for Acer Switch 3 and 5
    HID: logitech-hidpp: add support for the MX5500 keyboard
    HID: logitech-dj: add support for the Logitech MX5500's Bluetooth Mini-Receiver
    HID: i2c-hid: add iBall Aer3 to descriptor override

    Linus Torvalds
     

31 May, 2019

1 commit

  • Based on 1 normalized pattern(s):

    this program is free software you can redistribute it and or modify
    it under the terms of the gnu general public license as published by
    the free software foundation either version 2 of the license or at
    your option any later version

    extracted by the scancode license scanner the SPDX license identifier

    GPL-2.0-or-later

    has been chosen to replace the boilerplate/reference in 3029 file(s).

    Signed-off-by: Thomas Gleixner
    Reviewed-by: Allison Randal
    Cc: linux-spdx@vger.kernel.org
    Link: https://lkml.kernel.org/r/20190527070032.746973796@linutronix.de
    Signed-off-by: Greg Kroah-Hartman

    Thomas Gleixner
     

10 May, 2019

1 commit

  • The touchpad on the cover keyboard for the Acer Switch 3 and 5 does not
    work as-is under Linux. Both devices have the same usb id for the cover
    keyboard.

    The kernel correctly assigns the hid-rmi driver to the device using usbhid
    for transport.
    Any attempts of hid-rmi to talk to the device using hid_hw_output_report
    fail however as usbhid does not have a working urbout due to the lack of
    any out endpoints.

    Looking through Wireshark usbmon recordings from the Windows Synaptics
    driver for this computer running inside of QEMU shows that it should be
    using SET_REPORT requests instead.

    This replaces the hid_hw_output_report in hid-rmi with a
    hid_hw_raw_request for this device, which is at least enough to enable
    the kernel to get working multi-touch input.

    Signed-off-by: Tobias Auerochs
    Signed-off-by: Jiri Kosina

    Tobias Auerochs
     

30 May, 2018

1 commit

  • When we receive a RMI4 report, we should not unconditionally send an
    input_sync event. Instead, we should let the rmi4 transport layer do it
    for us.

    This fixes a situation where we might receive X in a report and the rest
    in a subsequent one. And this messes up user space.

    Link: https://bugs.freedesktop.org/show_bug.cgi?id=100436

    Signed-off-by: Benjamin Tissoires
    Acked-by: Peter Hutterer
    Tested-by: Oscar Morante
    Signed-off-by: Jiri Kosina

    Benjamin Tissoires
     

16 Feb, 2018

1 commit

  • Follow the change of return type u32 of hid_report_len,
    fix all the types of variables those get the return value of
    hid_report_len to u32, and all other code already uses u32.

    Cc: stable@vger.kernel.org
    Signed-off-by: Aaron Ma
    Signed-off-by: Jiri Kosina

    Aaron Ma
     

23 Jan, 2018

1 commit


19 Oct, 2017

1 commit

  • The hid-rmi driver may handle non rmi devices on composite USB devices.
    Callbacks need to make sure that the current device is a RMI device before
    calling RMI specific functions. Most callbacks already have this check, but
    this patch adds checks to the remaining callbacks.

    Reported-by: Hendrik Langer
    Tested-by: Hendrik Langer
    Reviewed-by: Benjamin Tissoires
    Signed-off-by: Andrew Duggan
    Signed-off-by: Jiri Kosina

    Andrew Duggan
     

08 Sep, 2017

1 commit

  • So it looks like that suspend/resume has actually always been broken on
    hid-rmi. The fact it worked was a rather silly coincidence that was
    relying on the HID device to already be opened upon resume. This means
    that so long as anything was reading the /dev/input/eventX node for for
    an RMI device, it would suspend and resume correctly. As well, if
    nothing happened to be keeping the HID device away it would shut off,
    then the RMI driver would get confused on resume when it stopped
    responding and explode.

    So, call hid_hw_open() in rmi_post_resume() so we make sure that the
    device is alive before we try talking to it.

    This fixes RMI device suspend/resume over HID.

    Link: https://bugzilla.kernel.org/show_bug.cgi?id=196851
    [jkosina@suse.cz: removed useless hunk that was zero-initializing 'ret']
    Signed-off-by: Lyude
    Cc: Andrew Duggan
    Cc: stable@vger.kernel.org
    Reviewed-by: Benjamin Tissoires
    Signed-off-by: Jiri Kosina

    Lyude
     

12 Jan, 2017

2 commits


24 Nov, 2016

1 commit


28 Jan, 2016

1 commit

  • Commit 092563604217 ("HID: rmi: Disable scanning if the device is not a wake
    source") introduced a regression for devices which use hid-rmi to handle
    composite USB devices. The suspend or resume callbacks are not checking
    that the device is a RMI device before calling rmi_read or rmi_write.
    This results in dereferencing uninitialized variables on non RMI devices. This
    patch checks that the RMI_DEVICE flag is set before sending RMI commands to the
    device.

    Reported-by: Rodrigo Gomes
    Signed-off-by: Andrew Duggan
    Signed-off-by: Jiri Kosina

    Andrew Duggan
     

06 Nov, 2015

1 commit

  • When configuring input device via input_configured callback we may
    encounter errors (for example input_mt_init_slots() may fail). Instead
    of continuing with half-initialized input device let's allow driver
    indicate failures.

    Signed-off-by: Jaikumar Ganesh
    Signed-off-by: Arve Hjønnevåg
    Reviewed-by: Benjamin Tissoires
    Reviewed-by: David Herrmann
    Acked-by: Nikolai Kondrashov
    Acked-by: Andrew Duggan
    Signed-off-by: Dmitry Torokhov
    Signed-off-by: Jiri Kosina

    Dmitry Torokhov
     

17 Jul, 2015

1 commit

  • A firmware bug in some touchpads causes the F01 interrupt enable register
    to be cleared on reset. This register controls which RMI functions generate
    interrupts and when it is cleared, the touchpad stops reporting all data.
    This patch looks for the cleared F01 control register and writes the
    correct value based on interrupt mask computed while scanning the PDT.

    Fixes:
    https://bugs.freedesktop.org/show_bug.cgi?id=91102
    Signed-off-by: Andrew Duggan
    Signed-off-by: Jiri Kosina

    Andrew Duggan
     

13 Jul, 2015

1 commit


09 Jul, 2015

1 commit

  • Some touchpads are configured with firmware which continues to scan for
    fingers at a minimal scan rate even after receiving the HID power sleep
    command. This allows a finger touching the touchpad to genrate a wake
    event. This patch ensures that scanning is disabled if the touchpad is
    not a wake source and ensures scanning is enabled on resume.

    Signed-off-by: Andrew Duggan
    Signed-off-by: Jiri Kosina

    Andrew Duggan
     

22 Jun, 2015

1 commit


17 Jun, 2015

1 commit

  • Physical buttons do not use F30 to report their state and in some cases the
    data reported in F30 is incorrect and inconsistent with what is reported by
    the HID descriptor. When physical buttons are present, ignore F30 and let
    hid-input report buttons based on what is defined in the HID descriptor.

    Signed-off-by: Andrew Duggan
    Reviewed-by: Benjamin Tissoires
    Signed-off-by: Jiri Kosina

    Andrew Duggan
     

18 May, 2015

1 commit

  • These defines are used like this:

    if (!(test_bit(RMI_STARTED, &hdata->flags)))

    So the intent was to use bits 0, 1 and 2 but because of the extra BIT()
    shifts we're actually using 1, 2 and 4. It's harmless because it's done
    consistently but static checkers will complain.

    Fixes: 9fb6bf02e3ad ('HID: rmi: introduce RMI driver for Synaptics touchpads')
    Signed-off-by: Dan Carpenter
    Reviewed-by: Benjamin Tissoires
    Signed-off-by: Jiri Kosina

    Dan Carpenter
     

25 Feb, 2015

3 commits

  • A touchpad may have firmware based palm detection code enabled which
    suppresses 2D data from being reported when the firmware believes a palm is
    on the touchpad. This functionality is meant to be used in mouse mode without
    a driver. When a driver is present, the driver can do a better job of
    determining if a contact is a palm. If this gesture is enabled on a touchpad
    operating in rmi mode then the firmware will not properly clear the palm detect
    interrupt, causing the touchpad to interrupt indefinately. This patch disables
    the palm detect gesture when the touchpad is operating in rmi mode.

    Signed-off-by: Andrew Duggan
    Tested-by: Gabriele Mazzotta
    Signed-off-by: Jiri Kosina

    Andrew Duggan
     
  • When a finger is lifted from a Synaptics touchpad the firmware will continue
    to interrupts for up to a second. These additional interrupts are know and
    dribble interrupts. Since the data read from the touchpad does not change
    the input subsystem only reports a single event. This makes the servicing of
    dribble interrupts on Linux unnecessary. This patch simply disables dribble
    interupts when configuring the touchpad.

    Signed-off-by: Andrew Duggan
    Tested-by: Gabriele Mazzotta
    Signed-off-by: Jiri Kosina

    Andrew Duggan
     
  • Writing to registers is needed for setting configuration parameters.

    Signed-off-by: Andrew Duggan
    Tested-by: Gabriele Mazzotta
    Signed-off-by: Jiri Kosina

    Andrew Duggan
     

17 Feb, 2015

1 commit

  • Knowing the firmware id is extremely useful when debugging issues related to
    the touchpad. It can be used to determine the hardware, firmware version,
    and configuation of the touchpad. This patch queries the firmware id and
    prints it as the touchpad is starting so that it will show up in the dmesg
    output included in bug reports.

    Signed-off-by: Andrew Duggan
    Signed-off-by: Jiri Kosina

    Andrew Duggan
     

12 Jan, 2015

3 commits


22 Dec, 2014

1 commit

  • Allowing hid-rmi to bind to non rmi devices allows us to support composite USB
    devices which contain several HID devices one of which is a HID touchpad.
    Since all of the devices have the same VID and PID we can add the device
    to the hid_have_special_driver list and have hid-rmi handle all of the devices.
    Then hid-rmi's probe can look for the rmi specific HID report IDs and decide if
    it should handle the device as a rmi device or simply report that the events
    needs additional processing.

    Signed-off-by: Andrew Duggan
    Reviewed-by: Benjamin Tissoires
    Signed-off-by: Jiri Kosina

    Andrew Duggan
     

12 Dec, 2014

2 commits


13 Sep, 2014

1 commit

  • In the Dell XPS 13 9333, it appears that sometimes the bus get confused
    and corrupts the incoming data. It fills the input report with the
    sentinel value "ff". Synaptics told us that such behavior does not comes
    from the touchpad itself, so we filter out such reports here.

    Unfortunately, we can not simply discard the incoming data because they
    may contain useful information. Most of the time, the misbehavior is
    quite near the end of the report, so we can still use the valid part of
    it.

    Fixes:
    https://bugzilla.redhat.com/show_bug.cgi?id=1123584

    Signed-off-by: Benjamin Tissoires
    Signed-off-by: Andrew Duggan
    Signed-off-by: Jiri Kosina

    Benjamin Tissoires
     

14 Aug, 2014

1 commit

  • Currently rmi_probe will return -EIO if the device doesn't report that it has F11.
    This would indicate that something happened and the device is in the bootloader.
    We can recover the device using a userspace firmware update tool, but it needs
    access to the device through the hidraw device file. If the probe returns -EIO
    the hidraw device won't be created. So instead of failing the probe, just print
    an error message, but leave the device accessible from userspace.

    Signed-off-by: Andrew Duggan
    Signed-off-by: Jiri Kosina

    Andrew Duggan
     

29 Jul, 2014

3 commits

  • It is possible that the hid-rmi driver could get loaded onto a device which does not have the
    expected report ids. This should not happen because it would indicate that the hid-rmi driver is
    not compatible with that device. However, if it does happen it should return an error from probe
    instead of dereferencing a null pointer.

    related bug:
    https://bugzilla.kernel.org/show_bug.cgi?id=80091

    Signed-off-by: Andrew Duggan
    Reviewed-by: Benjamin Tissoires
    Signed-off-by: Jiri Kosina

    Andrew Duggan
     
  • Userspace tools may use hidraw to perform operations on the device from userspace while
    hid-rmi is bound to the device. This can cause hid-rmi to print error messages when its
    ->raw_event() callback gets called as the reports pass through the HID stack. In this case
    receiving responses which were not initiated by hid-rmi is not actually an error so the resulting
    error messages are incorrect and misleading. This patch changes the log messages to debug so
    that the messages can be turned on in the event that there is a problem and there is not
    a userspace tool running.

    Signed-off-by: Andrew Duggan
    Reviewed-by: Benjamin Tissoires
    Signed-off-by: Jiri Kosina

    Andrew Duggan
     
  • There are additional queries which are optional and may not be present
    depending on the configuration of the firmware. Knowing which queries are
    present is needed to properly compute the address of Query 12 and all
    subsequent queries. Additional bits in Query 1 are used to indicate the
    presence of these optional queries.

    Signed-off-by: Andrew Duggan
    Reviewed-by: Benjamin Tissoires
    Signed-off-by: Jiri Kosina

    Andrew Duggan
     

12 Jun, 2014

1 commit