Re: [PATCH 1/5] HID: wacom: Use hdev->product in wacom_setup_touch_input_capabilities
From: Lee Jones
Date: Tue Sep 01 2026 - 09:34:43 EST
Ping, Jason,
> Thank you for your effort and persistence! We (Wacom and Wacom's
> customers) are lucky to have people like you working in this
> community!
Thank you! :)
> In addition to making sure that you know your contribution is greatly
> appreciated, I am giving you an initial testing feedback so you know
> you are on the right track.
>
> I manually tested a few older and new Wacom tablets. Some of them have
> touch switches, some don't. They all worked well!
>
> Two more details I'd like to share.
>
> The first one is about the touch-only tablet. In all the models of
> Wacom tablets, there was only one model that is touch-only. It was a
> Bamboo Touch (model CTT-460) released on September 24, 2009. So, it
> was more than 17 years ago. However, the quality of Wacom tablets are
> so high, it is possible that some people are still using those ones
> ;).
>
> The second one is about the type of touch on/off switches. There are
> two types of touch on/off switches: it can be a soft key or hardware
> switch. The hardware touch switch is easy to understand. The soft key
> touch switch is actually an on-screen display in the shape of fingers,
> where the touch on/off is controlled by the driver: [1]. This softkey
> touch switch, somehow, is not reported to the userland by the existing
> driver. Your patchset doesn't show it either.
>
> I will do more testing to figure out the root cause of the softkey issue.
Is there anything left for me to do?
> [1] ttps://github.com/linuxwacom/input-wacom/blob/master/4.18/wacom_wac.c#L2063
>
> On Tue, Aug 25, 2026 at 10:09 AM Lee Jones <lee@xxxxxxxxxx> wrote:
> >
> > Replace the lookup-dependent 'wacom_wac->shared->touch->product' references
> > with 'hdev->product' inside wacom_setup_touch_input_capabilities() since
> > 'hdev' is already available (via container_of) and represents the touch
> > device itself.
> >
> > Signed-off-by: Lee Jones <lee@xxxxxxxxxx>
> > ---
> >
> > v7 -> v8: New patch
> >
> > drivers/hid/wacom_wac.c | 18 +++++++++---------
> > 1 file changed, 9 insertions(+), 9 deletions(-)
> >
> > diff --git a/drivers/hid/wacom_wac.c b/drivers/hid/wacom_wac.c
> > index a29bf051ada7..4436faf2d2bb 100644
> > --- a/drivers/hid/wacom_wac.c
> > +++ b/drivers/hid/wacom_wac.c
> > @@ -3953,8 +3953,8 @@ int wacom_setup_pen_input_capabilities(struct input_dev *input_dev,
> > int wacom_setup_touch_input_capabilities(struct input_dev *input_dev,
> > struct wacom_wac *wacom_wac)
> > {
> > + struct hid_device *hdev = container_of(wacom_wac, struct wacom, wacom_wac)->hdev;
> > struct wacom_features *features = &wacom_wac->features;
> > -
> > if (!(features->device_type & WACOM_DEVICETYPE_TOUCH))
> > return -ENODEV;
> >
> > @@ -3963,9 +3963,11 @@ int wacom_setup_touch_input_capabilities(struct input_dev *input_dev,
> > else
> > __set_bit(INPUT_PROP_POINTER, input_dev->propbit);
> >
> > - if (features->type == HID_GENERIC)
> > + if (features->type == HID_GENERIC) {
> > + hid_dbg(hdev, "generic touch setup\n");
> > /* setup has already been done */
> > return 0;
> > + }
> >
> > input_dev->evbit[0] |= BIT_MASK(EV_KEY) | BIT_MASK(EV_ABS);
> > __set_bit(BTN_TOUCH, input_dev->keybit);
> > @@ -3997,19 +3999,17 @@ int wacom_setup_touch_input_capabilities(struct input_dev *input_dev,
> > input_dev->evbit[0] |= BIT_MASK(EV_SW);
> > __set_bit(SW_MUTE_DEVICE, input_dev->swbit);
> >
> > - if (wacom_wac->shared->touch->product == 0x361) {
> > + if (hdev->product == 0x361) {
> > input_set_abs_params(input_dev, ABS_MT_POSITION_X,
> > 0, 12440, 4, 0);
> > input_set_abs_params(input_dev, ABS_MT_POSITION_Y,
> > 0, 8640, 4, 0);
> > - }
> > - else if (wacom_wac->shared->touch->product == 0x360) {
> > + } else if (hdev->product == 0x360) {
> > input_set_abs_params(input_dev, ABS_MT_POSITION_X,
> > 0, 8960, 4, 0);
> > input_set_abs_params(input_dev, ABS_MT_POSITION_Y,
> > 0, 5920, 4, 0);
> > - }
> > - else if (wacom_wac->shared->touch->product == 0x393) {
> > + } else if (hdev->product == 0x393) {
> > input_set_abs_params(input_dev, ABS_MT_POSITION_X,
> > 0, 6400, 4, 0);
> > input_set_abs_params(input_dev, ABS_MT_POSITION_Y,
> > @@ -4039,8 +4039,8 @@ int wacom_setup_touch_input_capabilities(struct input_dev *input_dev,
> > fallthrough;
> >
> > case WACOM_27QHDT:
> > - if (wacom_wac->shared->touch->product == 0x32C ||
> > - wacom_wac->shared->touch->product == 0xF6) {
> > + if (hdev->product == 0x32C ||
> > + hdev->product == 0xF6) {
> > input_dev->evbit[0] |= BIT_MASK(EV_SW);
> > __set_bit(SW_MUTE_DEVICE, input_dev->swbit);
> > wacom_wac->has_mute_touch_switch = true;
> > --
> > 2.55.0.887.g758fc8c411-goog
> >
> >
--
Lee Jones