* [PATCH 0/3] ads7846: fix support for ADS7845
@ 2022-07-14 8:43 Luca Ellero
2022-07-14 8:43 ` [PATCH 1/3] ads7846: don't report pressure for ads7845 Luca Ellero
` (2 more replies)
0 siblings, 3 replies; 11+ messages in thread
From: Luca Ellero @ 2022-07-14 8:43 UTC (permalink / raw)
To: dmitry.torokhov, daniel, m.felsch, andriy.shevchenko,
u.kleine-koenig, mkl, miquel.raynal, imre.deak
Cc: linux-input, linux-kernel, Luca Ellero
ADS7845 support is buggy in this driver.
These patches fix various issues to get it work properly.
Luca Ellero (3):
ads7846: don't report pressure for ads7845
ads7846: always set last command to PWRDOWN
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] 11+ messages in thread
* [PATCH 1/3] ads7846: don't report pressure for ads7845
2022-07-14 8:43 [PATCH 0/3] ads7846: fix support for ADS7845 Luca Ellero
@ 2022-07-14 8:43 ` Luca Ellero
2022-07-14 11:32 ` Andy Shevchenko
2022-07-14 8:43 ` [PATCH 2/3] ads7846: always set last command to PWRDOWN Luca Ellero
2022-07-14 8:43 ` [PATCH 3/3] ads7846: don't check penirq immediately for 7845 Luca Ellero
2 siblings, 1 reply; 11+ messages in thread
From: Luca Ellero @ 2022-07-14 8:43 UTC (permalink / raw)
To: dmitry.torokhov, daniel, m.felsch, andriy.shevchenko,
u.kleine-koenig, mkl, miquel.raynal, imre.deak
Cc: linux-input, linux-kernel, Luca Ellero
From: Luca Ellero <l.ellero@asem.it>
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 bed68a68f330..24605c40d039 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] 11+ messages in thread
* [PATCH 2/3] ads7846: always set last command to PWRDOWN
2022-07-14 8:43 [PATCH 0/3] ads7846: fix support for ADS7845 Luca Ellero
2022-07-14 8:43 ` [PATCH 1/3] ads7846: don't report pressure for ads7845 Luca Ellero
@ 2022-07-14 8:43 ` Luca Ellero
2022-07-14 11:34 ` Andy Shevchenko
2022-07-14 8:43 ` [PATCH 3/3] ads7846: don't check penirq immediately for 7845 Luca Ellero
2 siblings, 1 reply; 11+ messages in thread
From: Luca Ellero @ 2022-07-14 8:43 UTC (permalink / raw)
To: dmitry.torokhov, daniel, m.felsch, andriy.shevchenko,
u.kleine-koenig, mkl, miquel.raynal, imre.deak
Cc: linux-input, linux-kernel, Luca Ellero
From: Luca Ellero <l.ellero@asem.it>
This was broken on controllers with 3 commands as ads7845.
READ_Z1 was sent instead.
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 24605c40d039..9e15cdf6faa0 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] 11+ messages in thread
* [PATCH 3/3] ads7846: don't check penirq immediately for 7845
2022-07-14 8:43 [PATCH 0/3] ads7846: fix support for ADS7845 Luca Ellero
2022-07-14 8:43 ` [PATCH 1/3] ads7846: don't report pressure for ads7845 Luca Ellero
2022-07-14 8:43 ` [PATCH 2/3] ads7846: always set last command to PWRDOWN Luca Ellero
@ 2022-07-14 8:43 ` Luca Ellero
2022-07-14 11:35 ` Andy Shevchenko
2 siblings, 1 reply; 11+ messages in thread
From: Luca Ellero @ 2022-07-14 8:43 UTC (permalink / raw)
To: dmitry.torokhov, daniel, m.felsch, andriy.shevchenko,
u.kleine-koenig, mkl, miquel.raynal, imre.deak
Cc: linux-input, linux-kernel, Luca Ellero
From: Luca Ellero <l.ellero@asem.it>
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 9e15cdf6faa0..122d3a13b7c5 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] 11+ messages in thread
* Re: [PATCH 1/3] ads7846: don't report pressure for ads7845
2022-07-14 8:43 ` [PATCH 1/3] ads7846: don't report pressure for ads7845 Luca Ellero
@ 2022-07-14 11:32 ` Andy Shevchenko
2022-07-15 14:36 ` Luca Ellero
0 siblings, 1 reply; 11+ messages in thread
From: Andy Shevchenko @ 2022-07-14 11:32 UTC (permalink / raw)
To: Luca Ellero
Cc: dmitry.torokhov, daniel, m.felsch, u.kleine-koenig, mkl,
miquel.raynal, imre.deak, linux-input, linux-kernel, Luca Ellero
On Thu, Jul 14, 2022 at 10:43:17AM +0200, Luca Ellero wrote:
> From: Luca Ellero <l.ellero@asem.it>
>
> 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"
Missed period, otherwise looks good.
Reviewed-by: Andy Shevchenko <andriy.shevchenko@linux.intel.com>
> 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 bed68a68f330..24605c40d039 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
>
--
With Best Regards,
Andy Shevchenko
^ permalink raw reply [flat|nested] 11+ messages in thread
* Re: [PATCH 2/3] ads7846: always set last command to PWRDOWN
2022-07-14 8:43 ` [PATCH 2/3] ads7846: always set last command to PWRDOWN Luca Ellero
@ 2022-07-14 11:34 ` Andy Shevchenko
0 siblings, 0 replies; 11+ messages in thread
From: Andy Shevchenko @ 2022-07-14 11:34 UTC (permalink / raw)
To: Luca Ellero
Cc: dmitry.torokhov, daniel, m.felsch, u.kleine-koenig, mkl,
miquel.raynal, imre.deak, linux-input, linux-kernel, Luca Ellero
On Thu, Jul 14, 2022 at 10:43:18AM +0200, Luca Ellero wrote:
> From: Luca Ellero <l.ellero@asem.it>
>
> This was broken on controllers with 3 commands as ads7845.
> READ_Z1 was sent instead.
What is "This"? Please, make commit message more understandable by its own.
With that fixed,
Reviewed-by: Andy Shevchenko <andriy.shevchenko@linux.intel.com>
> 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 24605c40d039..9e15cdf6faa0 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
>
--
With Best Regards,
Andy Shevchenko
^ permalink raw reply [flat|nested] 11+ messages in thread
* Re: [PATCH 3/3] ads7846: don't check penirq immediately for 7845
2022-07-14 8:43 ` [PATCH 3/3] ads7846: don't check penirq immediately for 7845 Luca Ellero
@ 2022-07-14 11:35 ` Andy Shevchenko
0 siblings, 0 replies; 11+ messages in thread
From: Andy Shevchenko @ 2022-07-14 11:35 UTC (permalink / raw)
To: Luca Ellero
Cc: dmitry.torokhov, daniel, m.felsch, u.kleine-koenig, mkl,
miquel.raynal, imre.deak, linux-input, linux-kernel, Luca Ellero
On Thu, Jul 14, 2022 at 10:43:19AM +0200, Luca Ellero wrote:
> From: Luca Ellero <l.ellero@asem.it>
>
> 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.
Reviewed-by: Andy Shevchenko <andriy.shevchenko@linux.intel.com>
> 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 9e15cdf6faa0..122d3a13b7c5 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
>
--
With Best Regards,
Andy Shevchenko
^ permalink raw reply [flat|nested] 11+ messages in thread
* Re: [PATCH 1/3] ads7846: don't report pressure for ads7845
2022-07-14 11:32 ` Andy Shevchenko
@ 2022-07-15 14:36 ` Luca Ellero
0 siblings, 0 replies; 11+ messages in thread
From: Luca Ellero @ 2022-07-15 14:36 UTC (permalink / raw)
To: Andy Shevchenko
Cc: dmitry.torokhov, daniel, m.felsch, u.kleine-koenig, mkl,
miquel.raynal, imre.deak, linux-input, linux-kernel, Luca Ellero
On 14/07/2022 13:32, Andy Shevchenko wrote:
> On Thu, Jul 14, 2022 at 10:43:17AM +0200, Luca Ellero wrote:
>> From: Luca Ellero <l.ellero@asem.it>
>>
>> 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"
>
> Missed period, otherwise looks good.
>
> Reviewed-by: Andy Shevchenko <andriy.shevchenko@linux.intel.com>
>
>> 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 bed68a68f330..24605c40d039 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
>>
>
Hi Andy,
thank you for your comments.
I will resend v2 of the patches.
Regards
Luca
--
Luca Ellero
E-mail: luca.ellero@brickedbrain.com
Internet: www.brickedbrain.com
^ permalink raw reply [flat|nested] 11+ messages in thread
* Re: [PATCH 1/3] ads7846: don't report pressure for ads7845
2022-11-29 16:23 ` Andy Shevchenko
@ 2022-11-30 8:25 ` Luca Ellero
0 siblings, 0 replies; 11+ messages in thread
From: Luca Ellero @ 2022-11-30 8:25 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 29/11/2022 17:23, Andy Shevchenko wrote:
> On Tue, Nov 29, 2022 at 04:19:57PM +0100, Luca Ellero wrote:
>> 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".
>
> Fixes tag?
>
> If you run
>
> git log --no-merges -- drivers/input/touchscreen/ads7846.c
>
> you can get what prefix should be for these patches.
>
Hi Andy,
thank you for your comments.
I will fix the patches and resend.
Regards
--
Luca Ellero
^ permalink raw reply [flat|nested] 11+ messages in thread
* Re: [PATCH 1/3] ads7846: don't report pressure for ads7845
2022-11-29 15:19 ` [PATCH 1/3] ads7846: don't report pressure for ads7845 Luca Ellero
@ 2022-11-29 16:23 ` Andy Shevchenko
2022-11-30 8:25 ` Luca Ellero
0 siblings, 1 reply; 11+ messages in thread
From: Andy Shevchenko @ 2022-11-29 16:23 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 Tue, Nov 29, 2022 at 04:19:57PM +0100, Luca Ellero wrote:
> 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".
Fixes tag?
If you run
git log --no-merges -- drivers/input/touchscreen/ads7846.c
you can get what prefix should be for these patches.
--
With Best Regards,
Andy Shevchenko
^ permalink raw reply [flat|nested] 11+ messages in thread
* [PATCH 1/3] ads7846: don't report pressure for ads7845
2022-11-29 15:19 [PATCH 0/3 RESEND] ads7846: fix support for ADS7845 Luca Ellero
@ 2022-11-29 15:19 ` Luca Ellero
2022-11-29 16:23 ` Andy Shevchenko
0 siblings, 1 reply; 11+ messages in thread
From: Luca Ellero @ 2022-11-29 15:19 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 bed68a68f330..24605c40d039 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] 11+ messages in thread
end of thread, other threads:[~2022-11-30 8:31 UTC | newest]
Thread overview: 11+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2022-07-14 8:43 [PATCH 0/3] ads7846: fix support for ADS7845 Luca Ellero
2022-07-14 8:43 ` [PATCH 1/3] ads7846: don't report pressure for ads7845 Luca Ellero
2022-07-14 11:32 ` Andy Shevchenko
2022-07-15 14:36 ` Luca Ellero
2022-07-14 8:43 ` [PATCH 2/3] ads7846: always set last command to PWRDOWN Luca Ellero
2022-07-14 11:34 ` Andy Shevchenko
2022-07-14 8:43 ` [PATCH 3/3] ads7846: don't check penirq immediately for 7845 Luca Ellero
2022-07-14 11:35 ` Andy Shevchenko
2022-11-29 15:19 [PATCH 0/3 RESEND] ads7846: fix support for ADS7845 Luca Ellero
2022-11-29 15:19 ` [PATCH 1/3] ads7846: don't report pressure for ads7845 Luca Ellero
2022-11-29 16:23 ` Andy Shevchenko
2022-11-30 8:25 ` 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.