* [PATCH v4 0/3] Input: ads7846 - fix support for ADS7845
@ 2023-01-20 12:45 Luca Ellero
2023-01-20 12:45 ` [PATCH 1/3] Input: ads7846 - don't report pressure for ads7845 Luca Ellero
` (3 more replies)
0 siblings, 4 replies; 12+ messages in thread
From: Luca Ellero @ 2023-01-20 12:45 UTC (permalink / raw)
To: dmitry.torokhov, daniel, m.felsch, andriy.shevchenko,
u.kleine-koenig, mkl, miquel.raynal, imre.deak, luca.ellero
Cc: linux-input, linux-kernel, Luca Ellero
ADS7845 support is buggy in this driver.
These patches fix various issues to get it work properly.
Changes for v2:
- add missing period in patch 0001 message
- elaborate comment in patch 0002
Changes for v3:
- send from the same email address of "Signed-off"
Changes for v4:
- fix tag
- fix comment in patch 0002
Luca Ellero (3):
Input: ads7846 - don't report pressure for ads7845
Input: ads7846 - always set last command to PWRDOWN
Input: ads7846 - don't check penirq immediately for 7845
drivers/input/touchscreen/ads7846.c | 23 +++++++++++++----------
1 file changed, 13 insertions(+), 10 deletions(-)
--
2.25.1
^ permalink raw reply [flat|nested] 12+ messages in thread
* [PATCH 1/3] Input: ads7846 - don't report pressure for ads7845
2023-01-20 12:45 [PATCH v4 0/3] Input: ads7846 - fix support for ADS7845 Luca Ellero
@ 2023-01-20 12:45 ` Luca Ellero
2023-01-20 15:16 ` Andy Shevchenko
2023-01-20 12:45 ` [PATCH 2/3] Input: ads7846 - always set last command to PWRDOWN Luca Ellero
` (2 subsequent siblings)
3 siblings, 1 reply; 12+ messages in thread
From: Luca Ellero @ 2023-01-20 12:45 UTC (permalink / raw)
To: dmitry.torokhov, daniel, m.felsch, andriy.shevchenko,
u.kleine-koenig, mkl, miquel.raynal, imre.deak, luca.ellero
Cc: linux-input, linux-kernel, Luca Ellero
ADS7845 doesn't support pressure.
This patch avoids the following error reported by libinput-list-devices:
"ADS7845 Touchscreen: kernel bug: device has min == max on ABS_PRESSURE".
Signed-off-by: Luca Ellero <l.ellero@asem.it>
---
drivers/input/touchscreen/ads7846.c | 5 +++--
1 file changed, 3 insertions(+), 2 deletions(-)
diff --git a/drivers/input/touchscreen/ads7846.c b/drivers/input/touchscreen/ads7846.c
index 4c3dd01902d0..f11b444f2138 100644
--- a/drivers/input/touchscreen/ads7846.c
+++ b/drivers/input/touchscreen/ads7846.c
@@ -1316,8 +1316,9 @@ static int ads7846_probe(struct spi_device *spi)
pdata->y_min ? : 0,
pdata->y_max ? : MAX_12BIT,
0, 0);
- input_set_abs_params(input_dev, ABS_PRESSURE,
- pdata->pressure_min, pdata->pressure_max, 0, 0);
+ if (ts->model != 7845)
+ input_set_abs_params(input_dev, ABS_PRESSURE,
+ pdata->pressure_min, pdata->pressure_max, 0, 0);
/*
* Parse common framework properties. Must be done here to ensure the
--
2.25.1
^ permalink raw reply related [flat|nested] 12+ messages in thread
* [PATCH 2/3] Input: ads7846 - always set last command to PWRDOWN
2023-01-20 12:45 [PATCH v4 0/3] Input: ads7846 - fix support for ADS7845 Luca Ellero
2023-01-20 12:45 ` [PATCH 1/3] Input: ads7846 - don't report pressure for ads7845 Luca Ellero
@ 2023-01-20 12:45 ` Luca Ellero
2023-01-20 15:17 ` Andy Shevchenko
2023-01-20 12:45 ` [PATCH 3/3] Input: ads7846 - don't check penirq immediately for 7845 Luca Ellero
2023-01-20 15:18 ` [PATCH v4 0/3] Input: ads7846 - fix support for ADS7845 Andy Shevchenko
3 siblings, 1 reply; 12+ messages in thread
From: Luca Ellero @ 2023-01-20 12:45 UTC (permalink / raw)
To: dmitry.torokhov, daniel, m.felsch, andriy.shevchenko,
u.kleine-koenig, mkl, miquel.raynal, imre.deak, luca.ellero
Cc: linux-input, linux-kernel, Luca Ellero
Controllers that report pressure (e.g. ADS7846) use 5 commands and the
correct sequence is READ_X, READ_Y, READ_Z1, READ_Z2, PWRDOWN.
Controllers that don't report pressure (e.g. ADS7845/ADS7843) use only 3
commands and the correct sequence should be READ_X, READ_Y, PWRDOWN. But
the sequence sent was incorrect: READ_X, READ_Y, READ_Z1.
Fix this by setting the third (and last) command to PWRDOWN.
Signed-off-by: Luca Ellero <l.ellero@asem.it>
---
drivers/input/touchscreen/ads7846.c | 10 +++++++++-
1 file changed, 9 insertions(+), 1 deletion(-)
diff --git a/drivers/input/touchscreen/ads7846.c b/drivers/input/touchscreen/ads7846.c
index f11b444f2138..15da1047a577 100644
--- a/drivers/input/touchscreen/ads7846.c
+++ b/drivers/input/touchscreen/ads7846.c
@@ -1066,6 +1066,9 @@ static int ads7846_setup_spi_msg(struct ads7846 *ts,
struct ads7846_buf_layout *l = &packet->l[cmd_idx];
unsigned int max_count;
+ if (cmd_idx == packet->cmds - 1)
+ cmd_idx = ADS7846_PWDOWN;
+
if (ads7846_cmd_need_settle(cmd_idx))
max_count = packet->count + packet->count_skip;
else
@@ -1102,7 +1105,12 @@ static int ads7846_setup_spi_msg(struct ads7846 *ts,
for (cmd_idx = 0; cmd_idx < packet->cmds; cmd_idx++) {
struct ads7846_buf_layout *l = &packet->l[cmd_idx];
- u8 cmd = ads7846_get_cmd(cmd_idx, vref);
+ u8 cmd;
+
+ if (cmd_idx == packet->cmds - 1)
+ cmd_idx = ADS7846_PWDOWN;
+
+ cmd = ads7846_get_cmd(cmd_idx, vref);
for (b = 0; b < l->count; b++)
packet->tx[l->offset + b].cmd = cmd;
--
2.25.1
^ permalink raw reply related [flat|nested] 12+ messages in thread
* [PATCH 3/3] Input: ads7846 - don't check penirq immediately for 7845
2023-01-20 12:45 [PATCH v4 0/3] Input: ads7846 - fix support for ADS7845 Luca Ellero
2023-01-20 12:45 ` [PATCH 1/3] Input: ads7846 - don't report pressure for ads7845 Luca Ellero
2023-01-20 12:45 ` [PATCH 2/3] Input: ads7846 - always set last command to PWRDOWN Luca Ellero
@ 2023-01-20 12:45 ` Luca Ellero
2023-01-20 15:18 ` Andy Shevchenko
2023-01-20 15:18 ` [PATCH v4 0/3] Input: ads7846 - fix support for ADS7845 Andy Shevchenko
3 siblings, 1 reply; 12+ messages in thread
From: Luca Ellero @ 2023-01-20 12:45 UTC (permalink / raw)
To: dmitry.torokhov, daniel, m.felsch, andriy.shevchenko,
u.kleine-koenig, mkl, miquel.raynal, imre.deak, luca.ellero
Cc: linux-input, linux-kernel, Luca Ellero
To discard false readings, one should use "ti,penirq-recheck-delay-usecs".
Checking get_pendown_state() at the beginning, most of the time fails
causing malfunctioning.
Signed-off-by: Luca Ellero <l.ellero@asem.it>
---
drivers/input/touchscreen/ads7846.c | 8 +-------
1 file changed, 1 insertion(+), 7 deletions(-)
diff --git a/drivers/input/touchscreen/ads7846.c b/drivers/input/touchscreen/ads7846.c
index 15da1047a577..17f11bce8113 100644
--- a/drivers/input/touchscreen/ads7846.c
+++ b/drivers/input/touchscreen/ads7846.c
@@ -843,14 +843,8 @@ static void ads7846_report_state(struct ads7846 *ts)
if (x == MAX_12BIT)
x = 0;
- if (ts->model == 7843) {
+ if (ts->model == 7843 || ts->model == 7845) {
Rt = ts->pressure_max / 2;
- } else if (ts->model == 7845) {
- if (get_pendown_state(ts))
- Rt = ts->pressure_max / 2;
- else
- Rt = 0;
- dev_vdbg(&ts->spi->dev, "x/y: %d/%d, PD %d\n", x, y, Rt);
} else if (likely(x && z1)) {
/* compute touch pressure resistance using equation #2 */
Rt = z2;
--
2.25.1
^ permalink raw reply related [flat|nested] 12+ messages in thread
* Re: [PATCH 1/3] Input: ads7846 - don't report pressure for ads7845
2023-01-20 12:45 ` [PATCH 1/3] Input: ads7846 - don't report pressure for ads7845 Luca Ellero
@ 2023-01-20 15:16 ` Andy Shevchenko
2023-01-23 8:27 ` Luca Ellero
0 siblings, 1 reply; 12+ messages in thread
From: Andy Shevchenko @ 2023-01-20 15:16 UTC (permalink / raw)
To: Luca Ellero
Cc: dmitry.torokhov, daniel, m.felsch, u.kleine-koenig, mkl,
miquel.raynal, imre.deak, luca.ellero, linux-input, linux-kernel
On Fri, Jan 20, 2023 at 01:45:42PM +0100, Luca Ellero wrote:
> ADS7845 doesn't support pressure.
> This patch avoids the following error reported by libinput-list-devices:
s/This patch avoids/Avoid/
(This rule is written in Submitting Patches documentation.)
> "ADS7845 Touchscreen: kernel bug: device has min == max on ABS_PRESSURE".
Do you need a Fixes tag?
--
With Best Regards,
Andy Shevchenko
^ permalink raw reply [flat|nested] 12+ messages in thread
* Re: [PATCH 2/3] Input: ads7846 - always set last command to PWRDOWN
2023-01-20 12:45 ` [PATCH 2/3] Input: ads7846 - always set last command to PWRDOWN Luca Ellero
@ 2023-01-20 15:17 ` Andy Shevchenko
0 siblings, 0 replies; 12+ messages in thread
From: Andy Shevchenko @ 2023-01-20 15:17 UTC (permalink / raw)
To: Luca Ellero
Cc: dmitry.torokhov, daniel, m.felsch, u.kleine-koenig, mkl,
miquel.raynal, imre.deak, luca.ellero, linux-input, linux-kernel
On Fri, Jan 20, 2023 at 01:45:43PM +0100, Luca Ellero wrote:
> Controllers that report pressure (e.g. ADS7846) use 5 commands and the
> correct sequence is READ_X, READ_Y, READ_Z1, READ_Z2, PWRDOWN.
>
> Controllers that don't report pressure (e.g. ADS7845/ADS7843) use only 3
> commands and the correct sequence should be READ_X, READ_Y, PWRDOWN. But
> the sequence sent was incorrect: READ_X, READ_Y, READ_Z1.
>
> Fix this by setting the third (and last) command to PWRDOWN.
Provide a Fixes: tag?
> Signed-off-by: Luca Ellero <l.ellero@asem.it>
--
With Best Regards,
Andy Shevchenko
^ permalink raw reply [flat|nested] 12+ messages in thread
* Re: [PATCH 3/3] Input: ads7846 - don't check penirq immediately for 7845
2023-01-20 12:45 ` [PATCH 3/3] Input: ads7846 - don't check penirq immediately for 7845 Luca Ellero
@ 2023-01-20 15:18 ` Andy Shevchenko
0 siblings, 0 replies; 12+ messages in thread
From: Andy Shevchenko @ 2023-01-20 15:18 UTC (permalink / raw)
To: Luca Ellero
Cc: dmitry.torokhov, daniel, m.felsch, u.kleine-koenig, mkl,
miquel.raynal, imre.deak, luca.ellero, linux-input, linux-kernel
On Fri, Jan 20, 2023 at 01:45:44PM +0100, Luca Ellero wrote:
> To discard false readings, one should use "ti,penirq-recheck-delay-usecs".
> Checking get_pendown_state() at the beginning, most of the time fails
> causing malfunctioning.
Should it have a Fixes: tag?
> Signed-off-by: Luca Ellero <l.ellero@asem.it>
--
With Best Regards,
Andy Shevchenko
^ permalink raw reply [flat|nested] 12+ messages in thread
* Re: [PATCH v4 0/3] Input: ads7846 - fix support for ADS7845
2023-01-20 12:45 [PATCH v4 0/3] Input: ads7846 - fix support for ADS7845 Luca Ellero
` (2 preceding siblings ...)
2023-01-20 12:45 ` [PATCH 3/3] Input: ads7846 - don't check penirq immediately for 7845 Luca Ellero
@ 2023-01-20 15:18 ` Andy Shevchenko
3 siblings, 0 replies; 12+ messages in thread
From: Andy Shevchenko @ 2023-01-20 15:18 UTC (permalink / raw)
To: Luca Ellero
Cc: dmitry.torokhov, daniel, m.felsch, u.kleine-koenig, mkl,
miquel.raynal, imre.deak, luca.ellero, linux-input, linux-kernel
On Fri, Jan 20, 2023 at 01:45:41PM +0100, Luca Ellero wrote:
> ADS7845 support is buggy in this driver.
> These patches fix various issues to get it work properly.
Code-wise it's fine. It would be nice to amend the commit messages.
--
With Best Regards,
Andy Shevchenko
^ permalink raw reply [flat|nested] 12+ messages in thread
* Re: [PATCH 1/3] Input: ads7846 - don't report pressure for ads7845
2023-01-20 15:16 ` Andy Shevchenko
@ 2023-01-23 8:27 ` Luca Ellero
2023-01-23 12:25 ` Andy Shevchenko
0 siblings, 1 reply; 12+ messages in thread
From: Luca Ellero @ 2023-01-23 8:27 UTC (permalink / raw)
To: Andy Shevchenko, Luca Ellero
Cc: dmitry.torokhov, daniel, m.felsch, u.kleine-koenig, mkl,
miquel.raynal, imre.deak, linux-input, linux-kernel
On 20/01/2023 16:16, Andy Shevchenko wrote:
> On Fri, Jan 20, 2023 at 01:45:42PM +0100, Luca Ellero wrote:
>> ADS7845 doesn't support pressure.
>> This patch avoids the following error reported by libinput-list-devices:
>
> s/This patch avoids/Avoid/
>
> (This rule is written in Submitting Patches documentation.)
>
>> "ADS7845 Touchscreen: kernel bug: device has min == max on ABS_PRESSURE".
>
> Do you need a Fixes tag?
>
Hi Andy,
thank you for your reply.
I haven't found a specific bug report to apply to this patches.
Could you kindly provide a "Fixes:" tag that I can apply?
It's more like this driver has never been tested with ADS7845.
Maybe the patches should be considered as a new implementation instead
than a bug fix?
Thanks
Regards
Luca Ellero
--
Luca Ellero
E-mail: luca.ellero@brickedbrain.com
Internet: www.brickedbrain.com
^ permalink raw reply [flat|nested] 12+ messages in thread
* Re: [PATCH 1/3] Input: ads7846 - don't report pressure for ads7845
2023-01-23 8:27 ` Luca Ellero
@ 2023-01-23 12:25 ` Andy Shevchenko
2023-01-24 8:40 ` Luca Ellero
0 siblings, 1 reply; 12+ messages in thread
From: Andy Shevchenko @ 2023-01-23 12:25 UTC (permalink / raw)
To: Luca Ellero
Cc: Luca Ellero, dmitry.torokhov, daniel, m.felsch, u.kleine-koenig,
mkl, miquel.raynal, imre.deak, linux-input, linux-kernel
On Mon, Jan 23, 2023 at 09:27:37AM +0100, Luca Ellero wrote:
> On 20/01/2023 16:16, Andy Shevchenko wrote:
> > On Fri, Jan 20, 2023 at 01:45:42PM +0100, Luca Ellero wrote:
> > > ADS7845 doesn't support pressure.
> > > This patch avoids the following error reported by libinput-list-devices:
> >
> > s/This patch avoids/Avoid/
> >
> > (This rule is written in Submitting Patches documentation.)
> >
> > > "ADS7845 Touchscreen: kernel bug: device has min == max on ABS_PRESSURE".
> >
> > Do you need a Fixes tag?
> >
>
> Hi Andy,
> thank you for your reply.
> I haven't found a specific bug report to apply to this patches.
> Could you kindly provide a "Fixes:" tag that I can apply?
The Fixes tag in accordance with the documentation should refer to the commit
in the Git history which brought the problem (regression).
> It's more like this driver has never been tested with ADS7845.
> Maybe the patches should be considered as a new implementation instead than
> a bug fix?
If it's indeed from day 1, then the initial commit can be considered as Fixes
tag, but I leave it to maintainer to decide.
--
With Best Regards,
Andy Shevchenko
^ permalink raw reply [flat|nested] 12+ messages in thread
* Re: [PATCH 1/3] Input: ads7846 - don't report pressure for ads7845
2023-01-23 12:25 ` Andy Shevchenko
@ 2023-01-24 8:40 ` Luca Ellero
0 siblings, 0 replies; 12+ messages in thread
From: Luca Ellero @ 2023-01-24 8:40 UTC (permalink / raw)
To: Andy Shevchenko
Cc: Luca Ellero, dmitry.torokhov, daniel, m.felsch, u.kleine-koenig,
mkl, miquel.raynal, imre.deak, linux-input, linux-kernel
On 23/01/2023 13:25, Andy Shevchenko wrote:
> The Fixes tag in accordance with the documentation should refer to the commit
> in the Git history which brought the problem (regression).
>
>> It's more like this driver has never been tested with ADS7845.
>> Maybe the patches should be considered as a new implementation instead than
>> a bug fix?
> If it's indeed from day 1, then the initial commit can be considered as Fixes
> tag, but I leave it to maintainer to decide.
Hi Andy,
thank you for your reply.
OK, I will add the initial commit as Fixes: tag and resend all the series.
Regards
Luca Ellero
^ permalink raw reply [flat|nested] 12+ messages in thread
* [PATCH 1/3] Input: ads7846 - don't report pressure for ads7845
2023-01-26 10:52 [PATCH v5 " Luca Ellero
@ 2023-01-26 10:52 ` Luca Ellero
0 siblings, 0 replies; 12+ messages in thread
From: Luca Ellero @ 2023-01-26 10:52 UTC (permalink / raw)
To: dmitry.torokhov, daniel, m.felsch, andriy.shevchenko,
u.kleine-koenig, mkl, miquel.raynal, imre.deak, luca.ellero
Cc: linux-input, linux-kernel, Luca Ellero
ADS7845 doesn't support pressure.
Avoid the following error reported by libinput-list-devices:
"ADS7845 Touchscreen: kernel bug: device has min == max on ABS_PRESSURE".
Fixes: ffa458c1bd9b ("spi: ads7846 driver")
Signed-off-by: Luca Ellero <l.ellero@asem.it>
---
drivers/input/touchscreen/ads7846.c | 5 +++--
1 file changed, 3 insertions(+), 2 deletions(-)
diff --git a/drivers/input/touchscreen/ads7846.c b/drivers/input/touchscreen/ads7846.c
index 4c3dd01902d0..f11b444f2138 100644
--- a/drivers/input/touchscreen/ads7846.c
+++ b/drivers/input/touchscreen/ads7846.c
@@ -1316,8 +1316,9 @@ static int ads7846_probe(struct spi_device *spi)
pdata->y_min ? : 0,
pdata->y_max ? : MAX_12BIT,
0, 0);
- input_set_abs_params(input_dev, ABS_PRESSURE,
- pdata->pressure_min, pdata->pressure_max, 0, 0);
+ if (ts->model != 7845)
+ input_set_abs_params(input_dev, ABS_PRESSURE,
+ pdata->pressure_min, pdata->pressure_max, 0, 0);
/*
* Parse common framework properties. Must be done here to ensure the
--
2.25.1
^ permalink raw reply related [flat|nested] 12+ messages in thread
end of thread, other threads:[~2023-01-26 11:11 UTC | newest]
Thread overview: 12+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2023-01-20 12:45 [PATCH v4 0/3] Input: ads7846 - fix support for ADS7845 Luca Ellero
2023-01-20 12:45 ` [PATCH 1/3] Input: ads7846 - don't report pressure for ads7845 Luca Ellero
2023-01-20 15:16 ` Andy Shevchenko
2023-01-23 8:27 ` Luca Ellero
2023-01-23 12:25 ` Andy Shevchenko
2023-01-24 8:40 ` Luca Ellero
2023-01-20 12:45 ` [PATCH 2/3] Input: ads7846 - always set last command to PWRDOWN Luca Ellero
2023-01-20 15:17 ` Andy Shevchenko
2023-01-20 12:45 ` [PATCH 3/3] Input: ads7846 - don't check penirq immediately for 7845 Luca Ellero
2023-01-20 15:18 ` Andy Shevchenko
2023-01-20 15:18 ` [PATCH v4 0/3] Input: ads7846 - fix support for ADS7845 Andy Shevchenko
2023-01-26 10:52 [PATCH v5 " Luca Ellero
2023-01-26 10:52 ` [PATCH 1/3] Input: ads7846 - don't report pressure for ads7845 Luca Ellero
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).