Message ID | 20170519140642.31800-1-hdegoede@redhat.com (mailing list archive) |
---|---|
State | Accepted |
Headers | show |
Hi Hans, On Fri, May 19, 2017 at 04:06:42PM +0200, Hans de Goede wrote: > When we put the touchscreen controller in low-power mode the irq > pin may trigger (float) and if we then try to read a data packet we > get the following error in dmesg: > > [ 478.801017] silead_ts i2c-MSSL1680:00: Data read error -121 > > This commit disables the irq during suspend/resume fixing this error. Out of curiosity, what interrupt type does silead device use on your platform? > > Signed-off-by: Hans de Goede <hdegoede@redhat.com> > --- > drivers/input/touchscreen/silead.c | 3 +++ > 1 file changed, 3 insertions(+) > > diff --git a/drivers/input/touchscreen/silead.c b/drivers/input/touchscreen/silead.c > index 9b36f2750b9f..52c878a20a92 100644 > --- a/drivers/input/touchscreen/silead.c > +++ b/drivers/input/touchscreen/silead.c > @@ -536,6 +536,7 @@ static int __maybe_unused silead_ts_suspend(struct device *dev) > { > struct i2c_client *client = to_i2c_client(dev); > > + disable_irq(client->irq); > silead_ts_set_power(client, SILEAD_POWER_OFF); > return 0; > } > @@ -561,6 +562,8 @@ static int __maybe_unused silead_ts_resume(struct device *dev) > return -ENODEV; > } > > + enable_irq(client->irq); > + > return 0; > } > > -- > 2.12.2 > Thanks.
Hi, On 23-05-17 02:21, Dmitry Torokhov wrote: > Hi Hans, > > On Fri, May 19, 2017 at 04:06:42PM +0200, Hans de Goede wrote: >> When we put the touchscreen controller in low-power mode the irq >> pin may trigger (float) and if we then try to read a data packet we >> get the following error in dmesg: >> >> [ 478.801017] silead_ts i2c-MSSL1680:00: Data read error -121 >> >> This commit disables the irq during suspend/resume fixing this error. > > Out of curiosity, what interrupt type does silead device use on your > platform? On the tablet where I was seeing this problem the irq is declared as: GpioInt (Edge, ActiveHigh, Shared, PullDefault, 0x0000, In the DSDT. Regards, Hans > >> >> Signed-off-by: Hans de Goede <hdegoede@redhat.com> >> --- >> drivers/input/touchscreen/silead.c | 3 +++ >> 1 file changed, 3 insertions(+) >> >> diff --git a/drivers/input/touchscreen/silead.c b/drivers/input/touchscreen/silead.c >> index 9b36f2750b9f..52c878a20a92 100644 >> --- a/drivers/input/touchscreen/silead.c >> +++ b/drivers/input/touchscreen/silead.c >> @@ -536,6 +536,7 @@ static int __maybe_unused silead_ts_suspend(struct device *dev) >> { >> struct i2c_client *client = to_i2c_client(dev); >> >> + disable_irq(client->irq); >> silead_ts_set_power(client, SILEAD_POWER_OFF); >> return 0; >> } >> @@ -561,6 +562,8 @@ static int __maybe_unused silead_ts_resume(struct device *dev) >> return -ENODEV; >> } >> >> + enable_irq(client->irq); >> + >> return 0; >> } >> >> -- >> 2.12.2 >> > > Thanks. > -- 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
On Fri, May 19, 2017 at 04:06:42PM +0200, Hans de Goede wrote: > When we put the touchscreen controller in low-power mode the irq > pin may trigger (float) and if we then try to read a data packet we > get the following error in dmesg: > > [ 478.801017] silead_ts i2c-MSSL1680:00: Data read error -121 > > This commit disables the irq during suspend/resume fixing this error. > > Signed-off-by: Hans de Goede <hdegoede@redhat.com> Applied, thank you. > --- > drivers/input/touchscreen/silead.c | 3 +++ > 1 file changed, 3 insertions(+) > > diff --git a/drivers/input/touchscreen/silead.c b/drivers/input/touchscreen/silead.c > index 9b36f2750b9f..52c878a20a92 100644 > --- a/drivers/input/touchscreen/silead.c > +++ b/drivers/input/touchscreen/silead.c > @@ -536,6 +536,7 @@ static int __maybe_unused silead_ts_suspend(struct device *dev) > { > struct i2c_client *client = to_i2c_client(dev); > > + disable_irq(client->irq); > silead_ts_set_power(client, SILEAD_POWER_OFF); > return 0; > } > @@ -561,6 +562,8 @@ static int __maybe_unused silead_ts_resume(struct device *dev) > return -ENODEV; > } > > + enable_irq(client->irq); > + > return 0; > } > > -- > 2.12.2 >
diff --git a/drivers/input/touchscreen/silead.c b/drivers/input/touchscreen/silead.c index 9b36f2750b9f..52c878a20a92 100644 --- a/drivers/input/touchscreen/silead.c +++ b/drivers/input/touchscreen/silead.c @@ -536,6 +536,7 @@ static int __maybe_unused silead_ts_suspend(struct device *dev) { struct i2c_client *client = to_i2c_client(dev); + disable_irq(client->irq); silead_ts_set_power(client, SILEAD_POWER_OFF); return 0; } @@ -561,6 +562,8 @@ static int __maybe_unused silead_ts_resume(struct device *dev) return -ENODEV; } + enable_irq(client->irq); + return 0; }
When we put the touchscreen controller in low-power mode the irq pin may trigger (float) and if we then try to read a data packet we get the following error in dmesg: [ 478.801017] silead_ts i2c-MSSL1680:00: Data read error -121 This commit disables the irq during suspend/resume fixing this error. Signed-off-by: Hans de Goede <hdegoede@redhat.com> --- drivers/input/touchscreen/silead.c | 3 +++ 1 file changed, 3 insertions(+)