diff mbox

[4.12,regression] Thinkpad X250 Touchpad and Trackpoint not recognized anymore; commit e839ffa: "Input: synaptics - add support for Intertouch devices"

Message ID 41de7f92-8d98-3266-5d28-28ba48c5da38@pa-w.de (mailing list archive)
State New, archived
Headers show

Commit Message

Pascal Wichmann May 19, 2017, 6:46 p.m. UTC
Hello,

using the latest 4.12-rc1 kernel, the trackpoint and touchpad of my
Thinkpad X250 are not recognized.

This is caused by commit
e839ffa  Input: synaptics - add support for Intertouch devices


The specific problem seems to be the detection of whether to use
synaptics_intertouch for the psmouse module or not. That parameter
is set to -1 by default, in which case synaptics_intertouch is
enabled on my device.

When I explicitly set that parameter to 0, the trackpoint and touchpad
are recognized and work as expected.

Removing my device from smbus_pnp_ids in 4.12 rc1 fixes the issue
without need to manually disable synaptics_intertouch in the psmouse
module:



Is the ThinkPad X250 not supporting intertouch or is there another
problem causing the input devices not to work with it enabled?


Regards,
Pascal

Comments

Dmitry Torokhov May 19, 2017, 7:08 p.m. UTC | #1
On May 19, 2017 11:46:16 AM PDT, Pascal Wichmann <pascal.wichmann@pa-w.de> wrote:
>Hello,
>
>using the latest 4.12-rc1 kernel, the trackpoint and touchpad of my
>Thinkpad X250 are not recognized.
>
>This is caused by commit
>e839ffa  Input: synaptics - add support for Intertouch devices
>
>
>The specific problem seems to be the detection of whether to use
>synaptics_intertouch for the psmouse module or not. That parameter
>is set to -1 by default, in which case synaptics_intertouch is
>enabled on my device.
>
>When I explicitly set that parameter to 0, the trackpoint and touchpad
>are recognized and work as expected.
>
>Removing my device from smbus_pnp_ids in 4.12 rc1 fixes the issue
>without need to manually disable synaptics_intertouch in the psmouse
>module:
>
>diff -ruN a/drivers/input/mouse/synaptics.c
>b/drivers/input/mouse/synaptics.c
>--- a/drivers/input/mouse/synaptics.c	2017-05-19 19:31:48.930734395
>+0200
>+++ b/drivers/input/mouse/synaptics.c	2017-05-19 19:32:00.490782484
>+0200
>@@ -170,7 +170,6 @@
> static const char * const smbus_pnp_ids[] = {
>	/* all of the topbuttonpad_pnp_ids are valid, we just add some extras
>*/
> 	"LEN0048", /* X1 Carbon 3 */
>-	"LEN0046", /* X250 */
> 	"LEN004a", /* W541 */
> 	"LEN200f", /* T450s */
> 	NULL
>
>
>Is the ThinkPad X250 not supporting intertouch or is there another
>problem causing the input devices not to work with it enabled?
>

Do you have i801_smbus driver enabled and loaded?


Thanks.
Pascal Wichmann May 19, 2017, 7:37 p.m. UTC | #2
> Do you have i801_smbus driver enabled and loaded?

I have the following line in my kernel configuration:

> CONFIG_I2C_I801=m

Following i2c/smbus-related modules are loaded:

> lsmod | grep i2c
                                                                :(
> i2c_smbus              16384  0
> i2c_i801               24576  0
> i2c_algo_bit           16384  1 i915

lshw has the following output specifying i801_smbus as driver:

> *-serial
>      description: SMBus
>      product: Wildcat Point-LP SMBus Controller
>      vendor: Intel Corporation
>      physical id: 1f.3
>      bus info: pci@0000:00:1f.3
>      version: 03
>      width: 64 bits
>      clock: 33MHz
>      configuration: driver=i801_smbus latency=0
>      resources: irq:18 memory:f1238000-f12380ff ioport:efa0(size=32)


Thanks,
Pascal
Dmitry Torokhov May 19, 2017, 8:23 p.m. UTC | #3
On Fri, May 19, 2017 at 09:37:32PM +0200, Pascal Wichmann wrote:
> > Do you have i801_smbus driver enabled and loaded?
> 
> I have the following line in my kernel configuration:
> 
> > CONFIG_I2C_I801=m
> 
> Following i2c/smbus-related modules are loaded:
> 
> > lsmod | grep i2c
>                                                                 :(
> > i2c_smbus              16384  0
> > i2c_i801               24576  0
> > i2c_algo_bit           16384  1 i915
> 
> lshw has the following output specifying i801_smbus as driver:
> 
> > *-serial
> >      description: SMBus
> >      product: Wildcat Point-LP SMBus Controller
> >      vendor: Intel Corporation
> >      physical id: 1f.3
> >      bus info: pci@0000:00:1f.3
> >      version: 03
> >      width: 64 bits
> >      clock: 33MHz
> >      configuration: driver=i801_smbus latency=0
> >      resources: irq:18 memory:f1238000-f12380ff ioport:efa0(size=32)

Hmm, what about rmi_core and rmi_smbus? It might be quicker if you send
your dmesg, .config and lsmod...

Thanks.
Dmitry Torokhov May 19, 2017, 8:49 p.m. UTC | #4
On Fri, May 19, 2017 at 10:35:59PM +0200, Pascal Wichmann wrote:
> > Hmm, what about rmi_core and rmi_smbus? It might be quicker if you send
> > your dmesg, .config and lsmod...
> 
> dmesg:
> 

...
> > [   12.944519] psmouse serio1: synaptics: queried max coordinates: x [..5712], y [..4780]
> > [   12.975692] psmouse serio1: synaptics: queried min coordinates: x [1232..], y [1074..]
> > [   13.036464] psmouse serio1: synaptics: Touchpad model: 1, fw: 8.1, id: 0x1e2b1, caps: 0xf002a3/0x943300/0x12e800/0x10000, board id: 3075, fw id: 2560
> > [   13.036480] psmouse serio1: synaptics: serio: Synaptics pass-through port at isa0060/serio1/input0
> > [   13.075182] input: SynPS/2 Synaptics TouchPad as /devices/platform/i8042/serio1/input/input13
> > [   13.078710] mousedev: PS/2 mouse device common for all mice

Looks like you running your patched kernel?

...

> > CONFIG_RMI4_CORE=m
> > CONFIG_RMI4_I2C=m
> > CONFIG_RMI4_SPI=m
> > # CONFIG_RMI4_SMB is not set

This is your issue I believe.

> > CONFIG_RMI4_F03=y
> > CONFIG_RMI4_F03_SERIO=m
> > CONFIG_RMI4_2D_SENSOR=y
> > CONFIG_RMI4_F11=y
> > CONFIG_RMI4_F12=y
> > CONFIG_RMI4_F30=y
> > # CONFIG_RMI4_F34 is not set
> > CONFIG_RMI4_F54=y
> > CONFIG_RMI4_F55=y

Thanks.
Pascal Wichmann May 20, 2017, 5:47 a.m. UTC | #5
> Looks like you running your patched kernel?
That's right.


>>> CONFIG_RMI4_CORE=m
>>> CONFIG_RMI4_I2C=m
>>> CONFIG_RMI4_SPI=m
>>> # CONFIG_RMI4_SMB is not set
>
> This is your issue I believe.

Indeed, enabling that configuration solves that issue.

However, I think it is quite unintuitive that a module (psmouse) chooses
a default mode which requires another driver which is not necessarily
included; though it would probably be not a very clean solution to
explicitly check that as well.

Is this behaviour, that one module requires another without
communicating that clearly, wanted?

Thanks,
Pascal
Benjamin Tissoires May 20, 2017, 9:59 a.m. UTC | #6
Hi,

On May 20 2017 or thereabouts, Pascal Wichmann wrote:
> > Looks like you running your patched kernel?
> That's right.
> 
> 
> >>> CONFIG_RMI4_CORE=m
> >>> CONFIG_RMI4_I2C=m
> >>> CONFIG_RMI4_SPI=m
> >>> # CONFIG_RMI4_SMB is not set
> >
> > This is your issue I believe.
> 
> Indeed, enabling that configuration solves that issue.
> 
> However, I think it is quite unintuitive that a module (psmouse) chooses
> a default mode which requires another driver which is not necessarily
> included; though it would probably be not a very clean solution to
> explicitly check that as well.
> 
> Is this behaviour, that one module requires another without
> communicating that clearly, wanted?
> 

I can see 3 solutions:
1. Have PS2_SMBUS depending on RMI_SMBUS (and ELAN_I2C, and others when
   required)
2. Have PS2_SMBUS selecting RMI_SMBUS (and the others when time comes)
3. Changing the default value of synaptics_intertouch to
   SYNAPTICS_INTERTOUCH_OFF when RMI_SMBUS is not set

Solution 3. might be interesting because it doesn't prevent users to
compile the module on the side and is Synaptics only.

Dmitry, any comments?

Cheers,
Benjamin

> Thanks,
> Pascal
> 
> 



--
To unsubscribe from this list: send the line "unsubscribe linux-input" in
the body of a message to majordomo@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Dmitry Torokhov May 20, 2017, 5:35 p.m. UTC | #7
On Sat, May 20, 2017 at 11:59:50AM +0200, Benjamin Tissoires wrote:
> Hi,
> 
> On May 20 2017 or thereabouts, Pascal Wichmann wrote:
> > > Looks like you running your patched kernel?
> > That's right.
> > 
> > 
> > >>> CONFIG_RMI4_CORE=m
> > >>> CONFIG_RMI4_I2C=m
> > >>> CONFIG_RMI4_SPI=m
> > >>> # CONFIG_RMI4_SMB is not set
> > >
> > > This is your issue I believe.
> > 
> > Indeed, enabling that configuration solves that issue.
> > 
> > However, I think it is quite unintuitive that a module (psmouse) chooses
> > a default mode which requires another driver which is not necessarily
> > included; though it would probably be not a very clean solution to
> > explicitly check that as well.
> > 
> > Is this behaviour, that one module requires another without
> > communicating that clearly, wanted?
> > 
> 
> I can see 3 solutions:
> 1. Have PS2_SMBUS depending on RMI_SMBUS (and ELAN_I2C, and others when
>    required)
> 2. Have PS2_SMBUS selecting RMI_SMBUS (and the others when time comes)
> 3. Changing the default value of synaptics_intertouch to
>    SYNAPTICS_INTERTOUCH_OFF when RMI_SMBUS is not set
> 
> Solution 3. might be interesting because it doesn't prevent users to
> compile the module on the side and is Synaptics only.
> 
> Dmitry, any comments?

I like #3. We might also want to stick a warning into synaptics.c when
we see a device that has intertouch, but RMI_SMBUS is disabled, so we
could nudge users to switch over to RMI.

Thanks.
Benjamin Tissoires May 23, 2017, 8:33 a.m. UTC | #8
On May 20 2017 or thereabouts, Dmitry Torokhov wrote:
> On Sat, May 20, 2017 at 11:59:50AM +0200, Benjamin Tissoires wrote:
> > Hi,
> > 
> > On May 20 2017 or thereabouts, Pascal Wichmann wrote:
> > > > Looks like you running your patched kernel?
> > > That's right.
> > > 
> > > 
> > > >>> CONFIG_RMI4_CORE=m
> > > >>> CONFIG_RMI4_I2C=m
> > > >>> CONFIG_RMI4_SPI=m
> > > >>> # CONFIG_RMI4_SMB is not set
> > > >
> > > > This is your issue I believe.
> > > 
> > > Indeed, enabling that configuration solves that issue.
> > > 
> > > However, I think it is quite unintuitive that a module (psmouse) chooses
> > > a default mode which requires another driver which is not necessarily
> > > included; though it would probably be not a very clean solution to
> > > explicitly check that as well.
> > > 
> > > Is this behaviour, that one module requires another without
> > > communicating that clearly, wanted?
> > > 
> > 
> > I can see 3 solutions:
> > 1. Have PS2_SMBUS depending on RMI_SMBUS (and ELAN_I2C, and others when
> >    required)
> > 2. Have PS2_SMBUS selecting RMI_SMBUS (and the others when time comes)
> > 3. Changing the default value of synaptics_intertouch to
> >    SYNAPTICS_INTERTOUCH_OFF when RMI_SMBUS is not set
> > 
> > Solution 3. might be interesting because it doesn't prevent users to
> > compile the module on the side and is Synaptics only.
> > 
> > Dmitry, any comments?
> 
> I like #3. We might also want to stick a warning into synaptics.c when
> we see a device that has intertouch, but RMI_SMBUS is disabled, so we
> could nudge users to switch over to RMI.
> 

OK, thanks. See the following series that should have all of this.

Cheers,
Benjamin
--
To unsubscribe from this list: send the line "unsubscribe linux-input" in
the body of a message to majordomo@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html
diff mbox

Patch

diff -ruN a/drivers/input/mouse/synaptics.c
b/drivers/input/mouse/synaptics.c
--- a/drivers/input/mouse/synaptics.c	2017-05-19 19:31:48.930734395 +0200
+++ b/drivers/input/mouse/synaptics.c	2017-05-19 19:32:00.490782484 +0200
@@ -170,7 +170,6 @@ 
 static const char * const smbus_pnp_ids[] = {
 	/* all of the topbuttonpad_pnp_ids are valid, we just add some extras */
 	"LEN0048", /* X1 Carbon 3 */
-	"LEN0046", /* X250 */
 	"LEN004a", /* W541 */
 	"LEN200f", /* T450s */
 	NULL