diff mbox series

[v1,1/1] iio: pressure: dps310: Adjust Timeout Settings

Message ID 20230829180222.3431926-2-lakshmiy@us.ibm.com (mailing list archive)
State Accepted
Headers show
Series iio: pressure: dps310: Adjust Timeout Settings | expand

Commit Message

Lakshmi Yadlapati Aug. 29, 2023, 6:02 p.m. UTC
The DPS310 sensor chip has been encountering intermittent errors while
reading the sensor device across various system designs. This issue causes
the chip to become "stuck," preventing the indication of "ready" status
for pressure and temperature measurements in the MEAS_CFG register.

To address this issue, this commit fixes the timeout settings to improve
sensor stability:
- After sending a reset command to the chip, the timeout has been extended
  from 2.5 ms to 15 ms, aligning with the DPS310 specification.
- The read timeout value of the MEAS_CFG register has been adjusted from
  20ms to 30ms to match the specification.

Signed-off-by: Lakshmi Yadlapati <lakshmiy@us.ibm.com>
---
 drivers/iio/pressure/dps310.c | 8 ++++----
 1 file changed, 4 insertions(+), 4 deletions(-)

Comments

Jonathan Cameron Sept. 3, 2023, 11:53 a.m. UTC | #1
On Tue, 29 Aug 2023 13:02:22 -0500
Lakshmi Yadlapati <lakshmiy@us.ibm.com> wrote:

> The DPS310 sensor chip has been encountering intermittent errors while
> reading the sensor device across various system designs. This issue causes
> the chip to become "stuck," preventing the indication of "ready" status
> for pressure and temperature measurements in the MEAS_CFG register.
> 
> To address this issue, this commit fixes the timeout settings to improve
> sensor stability:
> - After sending a reset command to the chip, the timeout has been extended
>   from 2.5 ms to 15 ms, aligning with the DPS310 specification.
> - The read timeout value of the MEAS_CFG register has been adjusted from
>   20ms to 30ms to match the specification.
> 
> Signed-off-by: Lakshmi Yadlapati <lakshmiy@us.ibm.com>
Hi Lakshmi,

This seems reasonable to me, but as we probably want to backport it to
stable kernels, please could you figure out an appropriate Fixes tag.

Fine to just reply to this email with the tag rather than resend.

Thanks

Jonathan
 
> ---
>  drivers/iio/pressure/dps310.c | 8 ++++----
>  1 file changed, 4 insertions(+), 4 deletions(-)
> 
> diff --git a/drivers/iio/pressure/dps310.c b/drivers/iio/pressure/dps310.c
> index b10dbf5cf494..1ff091b2f764 100644
> --- a/drivers/iio/pressure/dps310.c
> +++ b/drivers/iio/pressure/dps310.c
> @@ -57,8 +57,8 @@
>  #define  DPS310_RESET_MAGIC	0x09
>  #define DPS310_COEF_BASE	0x10
>  
> -/* Make sure sleep time is <= 20ms for usleep_range */
> -#define DPS310_POLL_SLEEP_US(t)		min(20000, (t) / 8)
> +/* Make sure sleep time is <= 30ms for usleep_range */
> +#define DPS310_POLL_SLEEP_US(t)		min(30000, (t) / 8)
>  /* Silently handle error in rate value here */
>  #define DPS310_POLL_TIMEOUT_US(rc)	((rc) <= 0 ? 1000000 : 1000000 / (rc))
>  
> @@ -402,8 +402,8 @@ static int dps310_reset_wait(struct dps310_data *data)
>  	if (rc)
>  		return rc;
>  
> -	/* Wait for device chip access: 2.5ms in specification */
> -	usleep_range(2500, 12000);
> +	/* Wait for device chip access: 15ms in specification */
> +	usleep_range(15000, 55000);
>  	return 0;
>  }
>
Lakshmi Yadlapati Sept. 6, 2023, 2:55 p.m. UTC | #2
Fixes: 7b4ab4abcea4 ("iio: pressure: dps310: Reset chip after timeout")

Thanks,
Lakshmi

On 9/3/23, 6:52 AM, "Jonathan Cameron" <jic23@kernel.org <mailto:jic23@kernel.org>> wrote:


On Tue, 29 Aug 2023 13:02:22 -0500
Lakshmi Yadlapati <lakshmiy@us.ibm.com <mailto:lakshmiy@us.ibm.com>> wrote:


> The DPS310 sensor chip has been encountering intermittent errors while
> reading the sensor device across various system designs. This issue causes
> the chip to become "stuck," preventing the indication of "ready" status
> for pressure and temperature measurements in the MEAS_CFG register.
> 
> To address this issue, this commit fixes the timeout settings to improve
> sensor stability:
> - After sending a reset command to the chip, the timeout has been extended
> from 2.5 ms to 15 ms, aligning with the DPS310 specification.
> - The read timeout value of the MEAS_CFG register has been adjusted from
> 20ms to 30ms to match the specification.
> 
> Signed-off-by: Lakshmi Yadlapati <lakshmiy@us.ibm.com <mailto:lakshmiy@us.ibm.com>>
Hi Lakshmi,


This seems reasonable to me, but as we probably want to backport it to
stable kernels, please could you figure out an appropriate Fixes tag.


Fine to just reply to this email with the tag rather than resend.


Thanks


Jonathan


> ---
> drivers/iio/pressure/dps310.c | 8 ++++----
> 1 file changed, 4 insertions(+), 4 deletions(-)
> 
> diff --git a/drivers/iio/pressure/dps310.c b/drivers/iio/pressure/dps310.c
> index b10dbf5cf494..1ff091b2f764 100644
> --- a/drivers/iio/pressure/dps310.c
> +++ b/drivers/iio/pressure/dps310.c
> @@ -57,8 +57,8 @@
> #define DPS310_RESET_MAGIC 0x09
> #define DPS310_COEF_BASE 0x10
> 
> -/* Make sure sleep time is <= 20ms for usleep_range */
> -#define DPS310_POLL_SLEEP_US(t) min(20000, (t) / 8)
> +/* Make sure sleep time is <= 30ms for usleep_range */
> +#define DPS310_POLL_SLEEP_US(t) min(30000, (t) / 8)
> /* Silently handle error in rate value here */
> #define DPS310_POLL_TIMEOUT_US(rc) ((rc) <= 0 ? 1000000 : 1000000 / (rc))
> 
> @@ -402,8 +402,8 @@ static int dps310_reset_wait(struct dps310_data *data)
> if (rc)
> return rc;
> 
> - /* Wait for device chip access: 2.5ms in specification */
> - usleep_range(2500, 12000);
> + /* Wait for device chip access: 15ms in specification */
> + usleep_range(15000, 55000);
> return 0;
> }
>
Jonathan Cameron Sept. 10, 2023, 1:50 p.m. UTC | #3
On Wed, 6 Sep 2023 14:55:25 +0000
Lakshmi Yadlapati <lakshmiy@us.ibm.com> wrote:

> Fixes: 7b4ab4abcea4 ("iio: pressure: dps310: Reset chip after timeout")
> 
> Thanks,
> Lakshmi
> 
Applied to the fixes-togreg branch of iio.git
Note I'll probably rebase on rc1 before sending a pull request.

Thanks,

Jonathan

> On 9/3/23, 6:52 AM, "Jonathan Cameron" <jic23@kernel.org <mailto:jic23@kernel.org>> wrote:
> 
> 
> On Tue, 29 Aug 2023 13:02:22 -0500
> Lakshmi Yadlapati <lakshmiy@us.ibm.com <mailto:lakshmiy@us.ibm.com>> wrote:
> 
> 
> > The DPS310 sensor chip has been encountering intermittent errors while
> > reading the sensor device across various system designs. This issue causes
> > the chip to become "stuck," preventing the indication of "ready" status
> > for pressure and temperature measurements in the MEAS_CFG register.
> > 
> > To address this issue, this commit fixes the timeout settings to improve
> > sensor stability:
> > - After sending a reset command to the chip, the timeout has been extended
> > from 2.5 ms to 15 ms, aligning with the DPS310 specification.
> > - The read timeout value of the MEAS_CFG register has been adjusted from
> > 20ms to 30ms to match the specification.
> > 
> > Signed-off-by: Lakshmi Yadlapati <lakshmiy@us.ibm.com <mailto:lakshmiy@us.ibm.com>>  
> Hi Lakshmi,
> 
> 
> This seems reasonable to me, but as we probably want to backport it to
> stable kernels, please could you figure out an appropriate Fixes tag.
> 
> 
> Fine to just reply to this email with the tag rather than resend.
> 
> 
> Thanks
> 
> 
> Jonathan
> 
> 
> > ---
> > drivers/iio/pressure/dps310.c | 8 ++++----
> > 1 file changed, 4 insertions(+), 4 deletions(-)
> > 
> > diff --git a/drivers/iio/pressure/dps310.c b/drivers/iio/pressure/dps310.c
> > index b10dbf5cf494..1ff091b2f764 100644
> > --- a/drivers/iio/pressure/dps310.c
> > +++ b/drivers/iio/pressure/dps310.c
> > @@ -57,8 +57,8 @@
> > #define DPS310_RESET_MAGIC 0x09
> > #define DPS310_COEF_BASE 0x10
> > 
> > -/* Make sure sleep time is <= 20ms for usleep_range */
> > -#define DPS310_POLL_SLEEP_US(t) min(20000, (t) / 8)
> > +/* Make sure sleep time is <= 30ms for usleep_range */
> > +#define DPS310_POLL_SLEEP_US(t) min(30000, (t) / 8)
> > /* Silently handle error in rate value here */
> > #define DPS310_POLL_TIMEOUT_US(rc) ((rc) <= 0 ? 1000000 : 1000000 / (rc))
> > 
> > @@ -402,8 +402,8 @@ static int dps310_reset_wait(struct dps310_data *data)
> > if (rc)
> > return rc;
> > 
> > - /* Wait for device chip access: 2.5ms in specification */
> > - usleep_range(2500, 12000);
> > + /* Wait for device chip access: 15ms in specification */
> > + usleep_range(15000, 55000);
> > return 0;
> > }
> >   
> 
> 
> 
> 
>
diff mbox series

Patch

diff --git a/drivers/iio/pressure/dps310.c b/drivers/iio/pressure/dps310.c
index b10dbf5cf494..1ff091b2f764 100644
--- a/drivers/iio/pressure/dps310.c
+++ b/drivers/iio/pressure/dps310.c
@@ -57,8 +57,8 @@ 
 #define  DPS310_RESET_MAGIC	0x09
 #define DPS310_COEF_BASE	0x10
 
-/* Make sure sleep time is <= 20ms for usleep_range */
-#define DPS310_POLL_SLEEP_US(t)		min(20000, (t) / 8)
+/* Make sure sleep time is <= 30ms for usleep_range */
+#define DPS310_POLL_SLEEP_US(t)		min(30000, (t) / 8)
 /* Silently handle error in rate value here */
 #define DPS310_POLL_TIMEOUT_US(rc)	((rc) <= 0 ? 1000000 : 1000000 / (rc))
 
@@ -402,8 +402,8 @@  static int dps310_reset_wait(struct dps310_data *data)
 	if (rc)
 		return rc;
 
-	/* Wait for device chip access: 2.5ms in specification */
-	usleep_range(2500, 12000);
+	/* Wait for device chip access: 15ms in specification */
+	usleep_range(15000, 55000);
 	return 0;
 }