lkml.org 
[lkml]   [2019]   [Jul]   [24]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    Patch in this message
    /
    From
    Subject[PATCH 5.2 372/413] HID: wacom: generic: only switch the mode on devices with LEDs
    Date
    From: Aaron Armstrong Skomra <skomra@gmail.com>

    commit d8e9806005f28bbb49899dab2068e3359e22ba35 upstream.

    Currently, the driver will attempt to set the mode on all
    devices with a center button, but some devices with a center
    button lack LEDs, and attempting to set the LEDs on devices
    without LEDs results in the kernel error message of the form:

    "leds input8::wacom-0.1: Setting an LED's brightness failed (-32)"

    This is because the generic codepath erroneously assumes that the
    BUTTON_CENTER usage indicates that the device has LEDs, the
    previously ignored TOUCH_RING_SETTING usage is a more accurate
    indication of the existence of LEDs on the device.

    Fixes: 10c55cacb8b2 ("HID: wacom: generic: support LEDs")
    Cc: <stable@vger.kernel.org> # v4.11+
    Signed-off-by: Aaron Armstrong Skomra <aaron.skomra@wacom.com>
    Reviewed-by: Jason Gerecke <jason.gerecke@wacom.com>
    Signed-off-by: Jiri Kosina <jkosina@suse.cz>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

    ---
    drivers/hid/wacom_sys.c | 3 +++
    drivers/hid/wacom_wac.c | 2 --
    drivers/hid/wacom_wac.h | 1 +
    3 files changed, 4 insertions(+), 2 deletions(-)

    --- a/drivers/hid/wacom_sys.c
    +++ b/drivers/hid/wacom_sys.c
    @@ -304,6 +304,9 @@ static void wacom_feature_mapping(struct
    wacom_hid_usage_quirk(hdev, field, usage);

    switch (equivalent_usage) {
    + case WACOM_HID_WD_TOUCH_RING_SETTING:
    + wacom->generic_has_leds = true;
    + break;
    case HID_DG_CONTACTMAX:
    /* leave touch_max as is if predefined */
    if (!features->touch_max) {
    --- a/drivers/hid/wacom_wac.c
    +++ b/drivers/hid/wacom_wac.c
    @@ -1926,8 +1926,6 @@ static void wacom_wac_pad_usage_mapping(
    features->device_type |= WACOM_DEVICETYPE_PAD;
    break;
    case WACOM_HID_WD_BUTTONCENTER:
    - wacom->generic_has_leds = true;
    - /* fall through */
    case WACOM_HID_WD_BUTTONHOME:
    case WACOM_HID_WD_BUTTONUP:
    case WACOM_HID_WD_BUTTONDOWN:
    --- a/drivers/hid/wacom_wac.h
    +++ b/drivers/hid/wacom_wac.h
    @@ -141,6 +141,7 @@
    #define WACOM_HID_WD_OFFSETBOTTOM (WACOM_HID_UP_WACOMDIGITIZER | 0x0d33)
    #define WACOM_HID_WD_DATAMODE (WACOM_HID_UP_WACOMDIGITIZER | 0x1002)
    #define WACOM_HID_WD_DIGITIZERINFO (WACOM_HID_UP_WACOMDIGITIZER | 0x1013)
    +#define WACOM_HID_WD_TOUCH_RING_SETTING (WACOM_HID_UP_WACOMDIGITIZER | 0x1032)
    #define WACOM_HID_UP_G9 0xff090000
    #define WACOM_HID_G9_PEN (WACOM_HID_UP_G9 | 0x02)
    #define WACOM_HID_G9_TOUCHSCREEN (WACOM_HID_UP_G9 | 0x11)

    \
     
     \ /
      Last update: 2019-07-24 22:39    [W:6.991 / U:0.028 seconds]
    ©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site