linux-kernel.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
* [PATCH] hwmon: da9052 Increase sample rate when using TSI
@ 2017-10-19 15:51 Martyn Welch
  2017-10-20 14:30 ` Steve Twiss
  2017-10-21 16:02 ` Guenter Roeck
  0 siblings, 2 replies; 4+ messages in thread
From: Martyn Welch @ 2017-10-19 15:51 UTC (permalink / raw)
  To: Support Opensource, Jean Delvare, Guenter Roeck
  Cc: linux-hwmon, linux-kernel, Martyn Welch, stable

The TSI channel, which is usually used for touchscreen support, but can
be used as 4 general purpose ADCs. When used as a touchscreen interface
the touchscreen driver switches the device into 1ms sampling mode (rather
than the default 10ms economy mode) as recommended by the manufacturer.
When using the TSI channels as a general purpose ADC we are currently not
doing this and testing suggests that this can result in ADC timeouts:

[ 5827.198289] da9052 spi2.0: timeout waiting for ADC conversion interrupt
[ 5827.728293] da9052 spi2.0: timeout waiting for ADC conversion interrupt
[ 5993.808335] da9052 spi2.0: timeout waiting for ADC conversion interrupt
[ 5994.328441] da9052 spi2.0: timeout waiting for ADC conversion interrupt
[ 5994.848291] da9052 spi2.0: timeout waiting for ADC conversion interrupt

Switching to the 1ms timing resolves this issue.

Cc: stable@vger.kernel.org
Signed-off-by: Martyn Welch <martyn.welch@collabora.co.uk>
---
 drivers/hwmon/da9052-hwmon.c | 5 +++++
 1 file changed, 5 insertions(+)

diff --git a/drivers/hwmon/da9052-hwmon.c b/drivers/hwmon/da9052-hwmon.c
index 97a62f5..a973eb6 100644
--- a/drivers/hwmon/da9052-hwmon.c
+++ b/drivers/hwmon/da9052-hwmon.c
@@ -477,6 +477,11 @@ static int da9052_hwmon_probe(struct platform_device *pdev)
 		/* disable touchscreen features */
 		da9052_reg_write(hwmon->da9052, DA9052_TSI_CONT_A_REG, 0x00);
 
+		/* Sample every 1ms */
+		da9052_reg_update(hwmon->da9052, DA9052_ADC_CONT_REG,
+					  DA9052_ADCCONT_ADCMODE,
+					  DA9052_ADCCONT_ADCMODE);
+
 		err = da9052_request_irq(hwmon->da9052, DA9052_IRQ_TSIREADY,
 					 "tsiready-irq", da9052_tsi_datardy_irq,
 					 hwmon);
-- 
1.8.3.1

^ permalink raw reply related	[flat|nested] 4+ messages in thread

* RE: [PATCH] hwmon: da9052 Increase sample rate when using TSI
  2017-10-19 15:51 [PATCH] hwmon: da9052 Increase sample rate when using TSI Martyn Welch
@ 2017-10-20 14:30 ` Steve Twiss
  2017-10-20 19:30   ` Martyn Welch
  2017-10-21 16:02 ` Guenter Roeck
  1 sibling, 1 reply; 4+ messages in thread
From: Steve Twiss @ 2017-10-20 14:30 UTC (permalink / raw)
  To: Martyn Welch, Jean Delvare, Guenter Roeck
  Cc: linux-hwmon, linux-kernel, stable, Support Opensource

Hi Martyn,

On 19 October 2017 16:52, Martyn Welch wrote:

> To: Support Opensource; Jean Delvare; Guenter Roeck
> Subject: [PATCH] hwmon: da9052 Increase sample rate when using TSI
> 
> The TSI channel, which is usually used for touchscreen support, but can
> be used as 4 general purpose ADCs. When used as a touchscreen interface
> the touchscreen driver switches the device into 1ms sampling mode (rather
> than the default 10ms economy mode) as recommended by the
> manufacturer.
> When using the TSI channels as a general purpose ADC we are currently not
> doing this and testing suggests that this can result in ADC timeouts:
> 
> [ 5827.198289] da9052 spi2.0: timeout waiting for ADC conversion interrupt
> [ 5827.728293] da9052 spi2.0: timeout waiting for ADC conversion interrupt
> [ 5993.808335] da9052 spi2.0: timeout waiting for ADC conversion interrupt
> [ 5994.328441] da9052 spi2.0: timeout waiting for ADC conversion interrupt
> [ 5994.848291] da9052 spi2.0: timeout waiting for ADC conversion interrupt
> 
> Switching to the 1ms timing resolves this issue.
> 
> Cc: stable@vger.kernel.org
> Signed-off-by: Martyn Welch <martyn.welch@collabora.co.uk>
> ---
>  drivers/hwmon/da9052-hwmon.c | 5 +++++
>  1 file changed, 5 insertions(+)
> 
> diff --git a/drivers/hwmon/da9052-hwmon.c b/drivers/hwmon/da9052-hwmon.c
> index 97a62f5..a973eb6 100644
> --- a/drivers/hwmon/da9052-hwmon.c
> +++ b/drivers/hwmon/da9052-hwmon.c
> @@ -477,6 +477,11 @@ static int da9052_hwmon_probe(struct platform_device *pdev)
>  		/* disable touchscreen features */
>  		da9052_reg_write(hwmon->da9052, DA9052_TSI_CONT_A_REG, 0x00);
> 
> +		/* Sample every 1ms */
> +		da9052_reg_update(hwmon->da9052, DA9052_ADC_CONT_REG,
> +					  DA9052_ADCCONT_ADCMODE,
> +					  DA9052_ADCCONT_ADCMODE);
> +

Acked-by: Steve Twiss <stwiss.opensource@diasemi.com>

According to the DA9053 Datasheet, Revision 2.1, 31-Aug-2016, Section 18.3, page 143.

	[The ADC] can be used either in high speed mode with measurements
	sequences repeated every 1ms or in economy mode with sequences
	performed every 10ms.

Also, DA9053 Datasheet, Revision 2.1, 31-Aug-2016, Section 18.17,
Table 56: GP-ADC Control Registers, Register Address R82 ADC_CONT, page 150,

	Bit 6, ADC_MODE
	0: Measurement sequence interval 10 ms (economy mode)
	1: Measurement sequence interval 1 ms (recommended for TSI mode)

I can't find any reason why a global change to the sampling rate cannot be
applied during the ADC measurements in this case. After all, as you said, this
is gated by the previous change by Sebastian Reichel which enforces a
protection of ADC measurements when using the TSI as a general ADC (see commit
ebf555111bc11a5da9144e4af524260731a8b968).

Regards,
Steve

^ permalink raw reply	[flat|nested] 4+ messages in thread

* Re: [PATCH] hwmon: da9052 Increase sample rate when using TSI
  2017-10-20 14:30 ` Steve Twiss
@ 2017-10-20 19:30   ` Martyn Welch
  0 siblings, 0 replies; 4+ messages in thread
From: Martyn Welch @ 2017-10-20 19:30 UTC (permalink / raw)
  To: Steve Twiss
  Cc: Jean Delvare, Guenter Roeck, linux-hwmon, linux-kernel, stable,
	Support Opensource

On Fri, 2017-10-20 at 14:30 +0000, Steve Twiss wrote:
> Hi Martyn,
> 
> On 19 October 2017 16:52, Martyn Welch wrote:
> 
> > To: Support Opensource; Jean Delvare; Guenter Roeck
> > Subject: [PATCH] hwmon: da9052 Increase sample rate when using TSI
> > 
> > The TSI channel, which is usually used for touchscreen support, but can
> > be used as 4 general purpose ADCs. When used as a touchscreen interface
> > the touchscreen driver switches the device into 1ms sampling mode (rather
> > than the default 10ms economy mode) as recommended by the
> > manufacturer.
> > When using the TSI channels as a general purpose ADC we are currently not
> > doing this and testing suggests that this can result in ADC timeouts:
> > 
> > [ 5827.198289] da9052 spi2.0: timeout waiting for ADC conversion interrupt
> > [ 5827.728293] da9052 spi2.0: timeout waiting for ADC conversion interrupt
> > [ 5993.808335] da9052 spi2.0: timeout waiting for ADC conversion interrupt
> > [ 5994.328441] da9052 spi2.0: timeout waiting for ADC conversion interrupt
> > [ 5994.848291] da9052 spi2.0: timeout waiting for ADC conversion interrupt
> > 
> > Switching to the 1ms timing resolves this issue.
> > 
> > Cc: stable@vger.kernel.org
> > Signed-off-by: Martyn Welch <martyn.welch@collabora.co.uk>
> > ---
> >  drivers/hwmon/da9052-hwmon.c | 5 +++++
> >  1 file changed, 5 insertions(+)
> > 
> > diff --git a/drivers/hwmon/da9052-hwmon.c b/drivers/hwmon/da9052-hwmon.c
> > index 97a62f5..a973eb6 100644
> > --- a/drivers/hwmon/da9052-hwmon.c
> > +++ b/drivers/hwmon/da9052-hwmon.c
> > @@ -477,6 +477,11 @@ static int da9052_hwmon_probe(struct platform_device *pdev)
> >  		/* disable touchscreen features */
> >  		da9052_reg_write(hwmon->da9052, DA9052_TSI_CONT_A_REG, 0x00);
> > 
> > +		/* Sample every 1ms */
> > +		da9052_reg_update(hwmon->da9052, DA9052_ADC_CONT_REG,
> > +					  DA9052_ADCCONT_ADCMODE,
> > +					  DA9052_ADCCONT_ADCMODE);
> > +
> 
> Acked-by: Steve Twiss <stwiss.opensource@diasemi.com>
> 
> According to the DA9053 Datasheet, Revision 2.1, 31-Aug-2016, Section 18.3, page 143.
> 
> 	[The ADC] can be used either in high speed mode with measurements
> 	sequences repeated every 1ms or in economy mode with sequences
> 	performed every 10ms.
> 
> Also, DA9053 Datasheet, Revision 2.1, 31-Aug-2016, Section 18.17,
> Table 56: GP-ADC Control Registers, Register Address R82 ADC_CONT, page 150,
> 
> 	Bit 6, ADC_MODE
> 	0: Measurement sequence interval 10 ms (economy mode)
> 	1: Measurement sequence interval 1 ms (recommended for TSI mode)
> 
> I can't find any reason why a global change to the sampling rate cannot be
> applied during the ADC measurements in this case. After all, as you said, this
> is gated by the previous change by Sebastian Reichel which enforces a
> protection of ADC measurements when using the TSI as a general ADC (see commit
> ebf555111bc11a5da9144e4af524260731a8b968).
> 

Hi Steve,

We were running with the above mentioned patch/commit applied, but we
were getting the above timeouts during out testing.

The only way we have managed to make this reliable is to run in 1ms
mode. We suspected that there may be something in the "recommended for
TSI mode" regarding reliability.

Martyn

> Regards,
> Steve
> 

^ permalink raw reply	[flat|nested] 4+ messages in thread

* Re: hwmon: da9052 Increase sample rate when using TSI
  2017-10-19 15:51 [PATCH] hwmon: da9052 Increase sample rate when using TSI Martyn Welch
  2017-10-20 14:30 ` Steve Twiss
@ 2017-10-21 16:02 ` Guenter Roeck
  1 sibling, 0 replies; 4+ messages in thread
From: Guenter Roeck @ 2017-10-21 16:02 UTC (permalink / raw)
  To: Martyn Welch
  Cc: Support Opensource, Jean Delvare, linux-hwmon, linux-kernel, stable

On Thu, Oct 19, 2017 at 04:51:44PM +0100, Martyn Welch wrote:
> The TSI channel, which is usually used for touchscreen support, but can
> be used as 4 general purpose ADCs. When used as a touchscreen interface
> the touchscreen driver switches the device into 1ms sampling mode (rather
> than the default 10ms economy mode) as recommended by the manufacturer.
> When using the TSI channels as a general purpose ADC we are currently not
> doing this and testing suggests that this can result in ADC timeouts:
> 
> [ 5827.198289] da9052 spi2.0: timeout waiting for ADC conversion interrupt
> [ 5827.728293] da9052 spi2.0: timeout waiting for ADC conversion interrupt
> [ 5993.808335] da9052 spi2.0: timeout waiting for ADC conversion interrupt
> [ 5994.328441] da9052 spi2.0: timeout waiting for ADC conversion interrupt
> [ 5994.848291] da9052 spi2.0: timeout waiting for ADC conversion interrupt
> 
> Switching to the 1ms timing resolves this issue.
> 
> Cc: stable@vger.kernel.org
> Signed-off-by: Martyn Welch <martyn.welch@collabora.co.uk>
> Acked-by: Steve Twiss <stwiss.opensource@diasemi.com>

Applied; replaced Cc: stable@ with Fixes:

> ---
>  drivers/hwmon/da9052-hwmon.c | 5 +++++
>  1 file changed, 5 insertions(+)
> 
> diff --git a/drivers/hwmon/da9052-hwmon.c b/drivers/hwmon/da9052-hwmon.c
> index 97a62f5..a973eb6 100644
> --- a/drivers/hwmon/da9052-hwmon.c
> +++ b/drivers/hwmon/da9052-hwmon.c
> @@ -477,6 +477,11 @@ static int da9052_hwmon_probe(struct platform_device *pdev)
>  		/* disable touchscreen features */
>  		da9052_reg_write(hwmon->da9052, DA9052_TSI_CONT_A_REG, 0x00);
>  
> +		/* Sample every 1ms */
> +		da9052_reg_update(hwmon->da9052, DA9052_ADC_CONT_REG,
> +					  DA9052_ADCCONT_ADCMODE,
> +					  DA9052_ADCCONT_ADCMODE);
> +
>  		err = da9052_request_irq(hwmon->da9052, DA9052_IRQ_TSIREADY,
>  					 "tsiready-irq", da9052_tsi_datardy_irq,
>  					 hwmon);

^ permalink raw reply	[flat|nested] 4+ messages in thread

end of thread, other threads:[~2017-10-21 16:03 UTC | newest]

Thread overview: 4+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2017-10-19 15:51 [PATCH] hwmon: da9052 Increase sample rate when using TSI Martyn Welch
2017-10-20 14:30 ` Steve Twiss
2017-10-20 19:30   ` Martyn Welch
2017-10-21 16:02 ` Guenter Roeck

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).