public inbox for linux-kernel@vger.kernel.org
 help / color / mirror / Atom feed
* [PATCH] iio: temperature: tsys01: fix broken PROM checksum validation
@ 2026-04-28 15:22 Salah Triki
  2026-04-28 15:49 ` Andy Shevchenko
  0 siblings, 1 reply; 4+ messages in thread
From: Salah Triki @ 2026-04-28 15:22 UTC (permalink / raw)
  To: Jonathan Cameron, David Lechner, Nuno Sá, Andy Shevchenko
  Cc: linux-iio, linux-kernel, Salah Triki

The CRC check function was incorrectly using only the first word of the
PROM (n_prom[0]) instead of iterating through all words. This caused
the driver to fail probing on most devices due to incorrect checksum
calculation.

- Fix loop to use the correct index n_prom[cnt].
- Ensure all bytes are summed as per the datasheet specification.

Fixes: 43e53407f680 ("Add tsys01 meas-spec driver support")
Signed-off-by: Salah Triki <salah.triki@gmail.com>
---
 drivers/iio/temperature/tsys01.c | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/drivers/iio/temperature/tsys01.c b/drivers/iio/temperature/tsys01.c
index 334bba6fdae6..104dd45598b0 100644
--- a/drivers/iio/temperature/tsys01.c
+++ b/drivers/iio/temperature/tsys01.c
@@ -119,7 +119,7 @@ static bool tsys01_crc_valid(u16 *n_prom)
 	u8 sum = 0;
 
 	for (cnt = 0; cnt < TSYS01_PROM_WORDS_NB; cnt++)
-		sum += ((n_prom[0] >> 8) + (n_prom[0] & 0xFF));
+		sum += ((n_prom[cnt] >> 8) + (n_prom[cnt] & 0xFF));
 
 	return (sum == 0);
 }
-- 
2.43.0


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

* Re: [PATCH] iio: temperature: tsys01: fix broken PROM checksum validation
  2026-04-28 15:22 [PATCH] iio: temperature: tsys01: fix broken PROM checksum validation Salah Triki
@ 2026-04-28 15:49 ` Andy Shevchenko
  2026-04-29  9:33   ` Jonathan Cameron
  0 siblings, 1 reply; 4+ messages in thread
From: Andy Shevchenko @ 2026-04-28 15:49 UTC (permalink / raw)
  To: Salah Triki
  Cc: Jonathan Cameron, David Lechner, Nuno Sá, Andy Shevchenko,
	linux-iio, linux-kernel

On Tue, Apr 28, 2026 at 04:22:39PM +0100, Salah Triki wrote:
> The CRC check function was incorrectly using only the first word of the
> PROM (n_prom[0]) instead of iterating through all words. This caused
> the driver to fail probing on most devices due to incorrect checksum
> calculation.
> 
> - Fix loop to use the correct index n_prom[cnt].
> - Ensure all bytes are summed as per the datasheet specification.

...

>  	u8 sum = 0;
>  
>  	for (cnt = 0; cnt < TSYS01_PROM_WORDS_NB; cnt++)
> -		sum += ((n_prom[0] >> 8) + (n_prom[0] & 0xFF));
> +		sum += ((n_prom[cnt] >> 8) + (n_prom[cnt] & 0xFF));
>  
>  	return (sum == 0);

This change makes more questions than answers. How had it been tested,
if tested at all? (This question is to before and to after, the commit
message is also unclear about what datasheet says or the real field
testing gives.)

-- 
With Best Regards,
Andy Shevchenko



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

* Re: [PATCH] iio: temperature: tsys01: fix broken PROM checksum validation
  2026-04-28 15:49 ` Andy Shevchenko
@ 2026-04-29  9:33   ` Jonathan Cameron
  2026-05-05  7:01     ` Salah Triki
  0 siblings, 1 reply; 4+ messages in thread
From: Jonathan Cameron @ 2026-04-29  9:33 UTC (permalink / raw)
  To: Andy Shevchenko
  Cc: Salah Triki, David Lechner, Nuno Sá, Andy Shevchenko,
	linux-iio, linux-kernel

On Tue, 28 Apr 2026 18:49:56 +0300
Andy Shevchenko <andriy.shevchenko@intel.com> wrote:

> On Tue, Apr 28, 2026 at 04:22:39PM +0100, Salah Triki wrote:
> > The CRC check function was incorrectly using only the first word of the
> > PROM (n_prom[0]) instead of iterating through all words. This caused
> > the driver to fail probing on most devices due to incorrect checksum
> > calculation.
> > 
> > - Fix loop to use the correct index n_prom[cnt].
> > - Ensure all bytes are summed as per the datasheet specification.  
> 
> ...
> 
> >  	u8 sum = 0;
> >  
> >  	for (cnt = 0; cnt < TSYS01_PROM_WORDS_NB; cnt++)
> > -		sum += ((n_prom[0] >> 8) + (n_prom[0] & 0xFF));
> > +		sum += ((n_prom[cnt] >> 8) + (n_prom[cnt] & 0xFF));
> >  
> >  	return (sum == 0);  
> 
> This change makes more questions than answers. How had it been tested,
> if tested at all? (This question is to before and to after, the commit
> message is also unclear about what datasheet says or the real field
> testing gives.)
> 
I'll guess first word of the PROM is typically 0?

The datasheet indicates that it exists but then says absolutely nothing
about what is in that word - unlike all the others that are documented.

To me the fix looks right (based on the datasheet) but absolutely this
patch description should make that clear if this isn't tested on hardware.




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

* Re: [PATCH] iio: temperature: tsys01: fix broken PROM checksum validation
  2026-04-29  9:33   ` Jonathan Cameron
@ 2026-05-05  7:01     ` Salah Triki
  0 siblings, 0 replies; 4+ messages in thread
From: Salah Triki @ 2026-05-05  7:01 UTC (permalink / raw)
  To: Jonathan Cameron
  Cc: Andy Shevchenko, David Lechner, Nuno Sá, Andy Shevchenko,
	linux-iio, linux-kernel

On Wed, Apr 29, 2026 at 10:33:04AM +0100, Jonathan Cameron wrote:
> On Tue, 28 Apr 2026 18:49:56 +0300
> Andy Shevchenko <andriy.shevchenko@intel.com> wrote:
> 
> > On Tue, Apr 28, 2026 at 04:22:39PM +0100, Salah Triki wrote:
> > > The CRC check function was incorrectly using only the first word of the
> > > PROM (n_prom[0]) instead of iterating through all words. This caused
> > > the driver to fail probing on most devices due to incorrect checksum
> > > calculation.
> > > 
> > > - Fix loop to use the correct index n_prom[cnt].
> > > - Ensure all bytes are summed as per the datasheet specification.  
> > 
> > ...
> > 
> > >  	u8 sum = 0;
> > >  
> > >  	for (cnt = 0; cnt < TSYS01_PROM_WORDS_NB; cnt++)
> > > -		sum += ((n_prom[0] >> 8) + (n_prom[0] & 0xFF));
> > > +		sum += ((n_prom[cnt] >> 8) + (n_prom[cnt] & 0xFF));
> > >  
> > >  	return (sum == 0);  
> > 
> > This change makes more questions than answers. How had it been tested,
> > if tested at all? (This question is to before and to after, the commit
> > message is also unclear about what datasheet says or the real field
> > testing gives.)
> > 
> I'll guess first word of the PROM is typically 0?
> 
> The datasheet indicates that it exists but then says absolutely nothing
> about what is in that word - unlike all the others that are documented.
> 
> To me the fix looks right (based on the datasheet) but absolutely this
> patch description should make that clear if this isn't tested on hardware.
> 
> 
> 

Thank you for looking into this and for your clarification.

Indeed, the code audit reveals that the loop index is ignored, causing the
driver to process only the first word repeatedly.

I will send a v2 with a more detailed commit message explaining that this
fix relies on the datasheet analysis rather than physical hardware testing.

Best regards,
--
Salah Triki

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

end of thread, other threads:[~2026-05-05  7:02 UTC | newest]

Thread overview: 4+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2026-04-28 15:22 [PATCH] iio: temperature: tsys01: fix broken PROM checksum validation Salah Triki
2026-04-28 15:49 ` Andy Shevchenko
2026-04-29  9:33   ` Jonathan Cameron
2026-05-05  7:01     ` Salah Triki

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox