On Tue, Apr 24, 2018 at 12:19 AM, Ping Cheng <pingli...@gmail.com> wrote: > On Mon, Apr 23, 2018 at 4:37 PM Peter Hutterer <peter.hutte...@who-t.net> > wrote: >> >> On Mon, Apr 23, 2018 at 12:44:51PM -0700, Aaron Armstrong Skomra wrote: >> > Setting the bit for SW_MUTE_DEVICE on kernels which do not have >> > SW_MUTE_DEVICE declared in input.h (prior to 3.13), causes these >> > devices' touch interfaces not to work. >> >> Why is that? is that switch always enabled or something? because if it's >> always on 0, no-one in userspace should care. This seems like a separate >> issue somewhere. > > > The switch can be enabled/disabled by some devices. So, if it is set, its > value could be 1. >
Agreed with Peter... This sounds like a symptom of something else. In my experience the kernel doesn't care about "unknown" SW/ABS/KEY events, so any problem would have to be in our kernel or X driver. The fact that "only" removing the declaration SW_MUTE_DEVICE is enough to fix the issue is a head-scratcher. >> > Fixes: 7d13c26dd972 ("Backport support for the touch on/off switch"). >> > Signed-off-by: Aaron Armstrong Skomra<sko...@gmail.com> >> > --- >> > 1. Does INTUOSHT have a touch switch? > > > Yes, INTUOSHT has a hard touch switch. > >> Maybe the check for >> > BTN_TOOL_DOUBLETAP excludes INTUOSHT right after we catch its case. > > > Have to look into the details... > >> > >> > 2. Does TABLETPC somehow need this commit to disable touch? I don't >> > think >> > it could be using this non-existant constant, but I don't know which >> > devices TABLETPC applies to etc. > > > No TPC devices have touch switch. > >> On the Intuos Pro 2 and Intuos (CTH-680) >> > this switch is purely the reporting of the switch (the hardware disables >> > the touch) so removing our attempt at reporting the switch is of minor >> > consequence. >> >> with my "i don't follow input-wacom that closely" hat on: >> TABLETPC are the devices built into laptops. Google Bill Gates presenting >> a >> tablet pc, that's how far they go back. They have styli that only activate >> on press, with no proximity, etc. But they don't have the MUTE switch, >> that >> one was added for the 24QHD (or so?) to represent the physical hw switch. > > > Touch switch was first added to INTUOSHT. > > >> > 3. Why was SW_MUTE_DEVICE orignally backported? My guess was that it was >> > to remove differences between each of our kernel directories. But it >> > could > > > I feel it is just to sync with upstream code. Is that right Jason? > Git blame says it's been in the 2.6.38 tree since December 2013 (commit 955bc05d68). I added it to the 2.6.30 tree in December 2017 about a month after doing my Cintiq Pro backports. I *probably* tested that code the touch switch (and touch) worked for the Cintiq Pro, but I can absolutely guarantee that touch has been tested on 2.6.38 at multiple points in the past four years. >> > be for some other reason that I don't know of, in that case I will be >> > missing something here. >> > >> > 4. My guess is that SW_MUTE_DEVICE is supported in RHEL 7 (this bug was >> > found on RHEL 6) and that this code was tested against it, which is why >> > we >> > didn't catch this. ie RHEL probably added SW_MUTE_DEVICE to their >> > kernel. >> >> yep, looks like it was backported to the RHEL7.x kernel at some point but >> I > > > SW_MUTE_DEVICE is in RHEL 7 doesn’t mean other kernels older than 3.13 > backported it. We have to support those vanilla kernels. Looks like we may > have to test more kernels and probably treat RHEL7 differently. > . I doubt RHEL having SW_MUTE_DEVICE "support" matters at all. SW_MUTE_DEVICE is only declared in a header and defined in our driver. Nothing else in the kernel should care if a random (known or unknown) SW integer is declared. >> >> don't have the exact version on-hand. We tend to backport the professional >> tablets so it was likely part of the 24QHD or whichever device needed that >> one. > > > Intuos Pro 2 is the first professional tablet that has a hardware touch > switch. > > Cheers, > Ping > >> > It could also be that later input subsystems fail more gracefully when >> > they recieve a "__set_bit" that they are unfamiliar with, I'm not sure >> > if >> > we want to find supported vanilla versions of these older kernels to >> > test >> > against. Also, I have no idea how to check RHEL 7 source or if that's >> > possible. If necessary we can either revise this commit to check for >> > RHEL >> > 7 or come back and do that at a later date for this event which again is >> > of minor importance. >> I'd verify that something's not wrong with our test setup before moving forward with this patch. It seems too odd that touch is broken on anything merely declaring SW_MUTE_DEVICE, especially when that code has been working (at the very least for 2.6.38, and likely even for 2.6.30) in the past. Jason --- Now instead of four in the eights place / you’ve got three, ‘Cause you added one / (That is to say, eight) to the two, / But you can’t take seven from three, / So you look at the sixty-fours.... >> The official way if you don't have a RHEL install >> is https://git.centos.org/project/rpms >> yes, that's a CentOS link, for more backstory see: >> https://lwn.net/Articles/603865/ >> >> The kernel is here: >> https://git.centos.org/summary/?r=rpms/kernel.git >> >> And to 'unzip' the RPM file, I have a script that wraps this: >> rpm2cpio $rpmfile | cpio -idmv --no-absolute-filenames >> >> >> Alternatively, there's also the Red Hat Developers program which gives you >> free access to RHEL. >> https://developers.redhat.com/ >> >> Cheers, >> Peter >> >> >> > >> > 2.6.32/wacom_wac.c | 3 --- >> > 2.6.38/wacom_wac.c | 3 --- >> > 3.7/wacom_wac.c | 3 --- >> > 3 files changed, 9 deletions(-) >> > >> > diff --git a/2.6.32/wacom_wac.c b/2.6.32/wacom_wac.c >> > index 9f9899917a41..98589bea8f17 100644 >> > --- a/2.6.32/wacom_wac.c >> > +++ b/2.6.32/wacom_wac.c >> > @@ -2276,7 +2276,6 @@ void wacom_setup_input_capabilities(struct >> > input_dev *input_dev, >> > __set_bit(BTN_TOOL_DOUBLETAP, input_dev->keybit); >> > >> > input_dev->evbit[0] |= BIT_MASK(EV_SW); >> > - __set_bit(SW_MUTE_DEVICE, input_dev->swbit); >> > wacom_wac->shared->has_mute_touch_switch = true; >> > } else { >> > __set_bit(BTN_STYLUS3, input_dev->keybit); >> > @@ -2351,7 +2350,6 @@ void wacom_setup_input_capabilities(struct >> > input_dev *input_dev, >> > >> > if ((input_dev->id.product >= 0x353 && >> > input_dev->id.product <= 0x356)) { >> > input_dev->evbit[0] |= BIT_MASK(EV_SW); >> > - __set_bit(SW_MUTE_DEVICE, >> > input_dev->swbit); >> > wacom_wac->shared->has_mute_touch_switch = >> > true; >> > wacom_wac->shared->is_touch_on = true; >> > } >> > @@ -2394,7 +2392,6 @@ void wacom_setup_input_capabilities(struct >> > input_dev *input_dev, >> > if (features->touch_max && >> > features->device_type == BTN_TOOL_DOUBLETAP) { >> > input_dev->evbit[0] |= BIT_MASK(EV_SW); >> > - __set_bit(SW_MUTE_DEVICE, input_dev->swbit); >> > wacom_wac->shared->has_mute_touch_switch = true; >> > } >> > /* fall through */ >> > diff --git a/2.6.38/wacom_wac.c b/2.6.38/wacom_wac.c >> > index e0b5af1fc850..858602daf993 100644 >> > --- a/2.6.38/wacom_wac.c >> > +++ b/2.6.38/wacom_wac.c >> > @@ -2539,7 +2539,6 @@ int wacom_setup_input_capabilities(struct >> > input_dev *input_dev, >> > } >> > else { >> > input_dev->evbit[0] |= BIT_MASK(EV_SW); >> > - __set_bit(SW_MUTE_DEVICE, input_dev->swbit); >> > wacom_wac->shared->has_mute_touch_switch = true; >> > } >> > err = wacom_create_slots(wacom_wac); >> > @@ -2647,7 +2646,6 @@ int wacom_setup_input_capabilities(struct >> > input_dev *input_dev, >> > if ((features->device_type == BTN_TOOL_FINGER) && >> > (input_dev->id.product >= 0x353 && >> > input_dev->id.product <= 0x356)) { >> > input_dev->evbit[0] |= BIT_MASK(EV_SW); >> > - __set_bit(SW_MUTE_DEVICE, input_dev->swbit); >> > wacom_wac->shared->has_mute_touch_switch = true; >> > wacom_wac->shared->is_touch_on = true; >> > } >> > @@ -2693,7 +2691,6 @@ int wacom_setup_input_capabilities(struct >> > input_dev *input_dev, >> > if (features->touch_max && >> > features->device_type == BTN_TOOL_FINGER) { >> > input_dev->evbit[0] |= BIT_MASK(EV_SW); >> > - __set_bit(SW_MUTE_DEVICE, input_dev->swbit); >> > wacom_wac->shared->has_mute_touch_switch = true; >> > } >> > /* fall through */ >> > diff --git a/3.7/wacom_wac.c b/3.7/wacom_wac.c >> > index c91093e13de3..42b2050eb1e4 100644 >> > --- a/3.7/wacom_wac.c >> > +++ b/3.7/wacom_wac.c >> > @@ -2511,7 +2511,6 @@ int wacom_setup_input_capabilities(struct >> > input_dev *input_dev, >> > } >> > else { >> > input_dev->evbit[0] |= BIT_MASK(EV_SW); >> > - __set_bit(SW_MUTE_DEVICE, input_dev->swbit); >> > wacom_wac->shared->has_mute_touch_switch = true; >> > } >> > /* fall through */ >> > @@ -2592,7 +2591,6 @@ int wacom_setup_input_capabilities(struct >> > input_dev *input_dev, >> > if ((features->device_type == BTN_TOOL_FINGER) && >> > (input_dev->id.product >= 0x353 && >> > input_dev->id.product <= 0x356)) { >> > input_dev->evbit[0] |= BIT_MASK(EV_SW); >> > - __set_bit(SW_MUTE_DEVICE, input_dev->swbit); >> > wacom_wac->shared->has_mute_touch_switch = true; >> > wacom_wac->shared->is_touch_on = true; >> > } >> > @@ -2638,7 +2636,6 @@ int wacom_setup_input_capabilities(struct >> > input_dev *input_dev, >> > if (features->touch_max && >> > features->device_type == BTN_TOOL_FINGER) { >> > input_dev->evbit[0] |= BIT_MASK(EV_SW); >> > - __set_bit(SW_MUTE_DEVICE, input_dev->swbit); >> > wacom_wac->shared->has_mute_touch_switch = true; >> > } >> > /* fall through */ >> > -- >> > 2.7.4 >> > >> > >> > >> > ------------------------------------------------------------------------------ >> > Check out the vibrant tech community on one of the world's most >> > engaging tech sites, Slashdot.org! http://sdm.link/slashdot >> > _______________________________________________ >> > Linuxwacom-devel mailing list >> > Linuxwacom-devel@lists.sourceforge.net >> > https://lists.sourceforge.net/lists/listinfo/linuxwacom-devel >> > >> >> >> ------------------------------------------------------------------------------ >> Check out the vibrant tech community on one of the world's most >> engaging tech sites, Slashdot.org! http://sdm.link/slashdot >> _______________________________________________ >> Linuxwacom-devel mailing list >> Linuxwacom-devel@lists.sourceforge.net >> https://lists.sourceforge.net/lists/listinfo/linuxwacom-devel ------------------------------------------------------------------------------ Check out the vibrant tech community on one of the world's most engaging tech sites, Slashdot.org! http://sdm.link/slashdot _______________________________________________ Linuxwacom-devel mailing list Linuxwacom-devel@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/linuxwacom-devel