lkml.org 
[lkml]   [2022]   [Aug]   [15]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    Patch in this message
    /
    From
    Subject[PATCH 5.15 018/779] HID: wacom: Only report rotation for art pen
    Date
    From: Ping Cheng <pinglinux@gmail.com>

    commit 7ccced33a0ba39b0103ae1dfbf7f1dffdc0a1bc2 upstream.

    The generic routine, wacom_wac_pen_event, turns rotation value 90
    degree anti-clockwise before posting the events. This non-zero
    event trggers a non-zero ABS_Z event for non art pen tools. However,
    HID_DG_TWIST is only supported by art pen.

    [jkosina@suse.cz: fix build: add missing brace]
    Cc: stable@vger.kernel.org
    Signed-off-by: Ping Cheng <ping.cheng@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_wac.c | 29 +++++++++++++++++++++--------
    1 file changed, 21 insertions(+), 8 deletions(-)

    --- a/drivers/hid/wacom_wac.c
    +++ b/drivers/hid/wacom_wac.c
    @@ -638,9 +638,26 @@ static int wacom_intuos_id_mangle(int to
    return (tool_id & ~0xFFF) << 4 | (tool_id & 0xFFF);
    }

    +static bool wacom_is_art_pen(int tool_id)
    +{
    + bool is_art_pen = false;
    +
    + switch (tool_id) {
    + case 0x885: /* Intuos3 Marker Pen */
    + case 0x804: /* Intuos4/5 13HD/24HD Marker Pen */
    + case 0x10804: /* Intuos4/5 13HD/24HD Art Pen */
    + is_art_pen = true;
    + break;
    + }
    + return is_art_pen;
    +}
    +
    static int wacom_intuos_get_tool_type(int tool_id)
    {
    - int tool_type;
    + int tool_type = BTN_TOOL_PEN;
    +
    + if (wacom_is_art_pen(tool_id))
    + return tool_type;

    switch (tool_id) {
    case 0x812: /* Inking pen */
    @@ -655,12 +672,9 @@ static int wacom_intuos_get_tool_type(in
    case 0x852:
    case 0x823: /* Intuos3 Grip Pen */
    case 0x813: /* Intuos3 Classic Pen */
    - case 0x885: /* Intuos3 Marker Pen */
    case 0x802: /* Intuos4/5 13HD/24HD General Pen */
    - case 0x804: /* Intuos4/5 13HD/24HD Marker Pen */
    case 0x8e2: /* IntuosHT2 pen */
    case 0x022:
    - case 0x10804: /* Intuos4/5 13HD/24HD Art Pen */
    case 0x10842: /* MobileStudio Pro Pro Pen slim */
    case 0x14802: /* Intuos4/5 13HD/24HD Classic Pen */
    case 0x16802: /* Cintiq 13HD Pro Pen */
    @@ -718,10 +732,6 @@ static int wacom_intuos_get_tool_type(in
    case 0x10902: /* Intuos4/5 13HD/24HD Airbrush */
    tool_type = BTN_TOOL_AIRBRUSH;
    break;
    -
    - default: /* Unknown tool */
    - tool_type = BTN_TOOL_PEN;
    - break;
    }
    return tool_type;
    }
    @@ -2323,6 +2333,9 @@ static void wacom_wac_pen_event(struct h
    }
    return;
    case HID_DG_TWIST:
    + /* don't modify the value if the pen doesn't support the feature */
    + if (!wacom_is_art_pen(wacom_wac->id[0])) return;
    +
    /*
    * Userspace expects pen twist to have its zero point when
    * the buttons/finger is on the tablet's left. HID values

    \
     
     \ /
      Last update: 2022-08-15 20:16    [W:2.862 / U:0.136 seconds]
    ©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site