* [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
-- strict thread matches above, loose matches on Subject: below --
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 an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.