mail archive of the barebox mailing list
 help / color / mirror / Atom feed
* [PATCH] eeprom: at24: verify that chip is accessible during probe
@ 2026-02-18 12:42 Marco Felsch
  2026-02-23  9:15 ` Sascha Hauer
  0 siblings, 1 reply; 5+ messages in thread
From: Marco Felsch @ 2026-02-18 12:42 UTC (permalink / raw)
  To: barebox

Perform a basic sanity check to verify that the EEPROM is actually
accessible by reading 1-byte. Linux does the same sanity check for all
non-ACPI platforms.

Signed-off-by: Marco Felsch <m.felsch@pengutronix.de>
---
 drivers/eeprom/at24.c | 7 +++++++
 1 file changed, 7 insertions(+)

diff --git a/drivers/eeprom/at24.c b/drivers/eeprom/at24.c
index 06a2a4b22697..a08d42fe3e14 100644
--- a/drivers/eeprom/at24.c
+++ b/drivers/eeprom/at24.c
@@ -373,6 +373,7 @@ static int at24_probe(struct device *dev)
 	unsigned i, num_addresses;
 	const char *devname;
 	const char *alias;
+	u8 test_byte;
 
 	if (dev->platform_data) {
 		chip = *(struct at24_platform_data *)dev->platform_data;
@@ -487,6 +488,12 @@ static int at24_probe(struct device *dev)
 	at24->nvmem_config.size = chip.byte_len;
 	at24->nvmem_config.id = devid;
 
+	/* Perform a one-byte test read to verify that the chip is functional */
+	if (at24_read(at24, &test_byte, 0, 1) != 1) {
+		err = -ENODEV;
+		goto err_devfs_create;
+	}
+
 	at24->nvmem = nvmem_register(&at24->nvmem_config);
 	err = PTR_ERR_OR_ZERO(at24->nvmem);
 	if (err)
-- 
2.47.3




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

* Re: [PATCH] eeprom: at24: verify that chip is accessible during probe
  2026-02-18 12:42 [PATCH] eeprom: at24: verify that chip is accessible during probe Marco Felsch
@ 2026-02-23  9:15 ` Sascha Hauer
  2026-02-23  9:56   ` Marco Felsch
  0 siblings, 1 reply; 5+ messages in thread
From: Sascha Hauer @ 2026-02-23  9:15 UTC (permalink / raw)
  To: Marco Felsch; +Cc: barebox

On Wed, Feb 18, 2026 at 01:42:48PM +0100, Marco Felsch wrote:
> Perform a basic sanity check to verify that the EEPROM is actually
> accessible by reading 1-byte. Linux does the same sanity check for all
> non-ACPI platforms.
> 
> Signed-off-by: Marco Felsch <m.felsch@pengutronix.de>
> ---
>  drivers/eeprom/at24.c | 7 +++++++
>  1 file changed, 7 insertions(+)
> 
> diff --git a/drivers/eeprom/at24.c b/drivers/eeprom/at24.c
> index 06a2a4b22697..a08d42fe3e14 100644
> --- a/drivers/eeprom/at24.c
> +++ b/drivers/eeprom/at24.c
> @@ -373,6 +373,7 @@ static int at24_probe(struct device *dev)
>  	unsigned i, num_addresses;
>  	const char *devname;
>  	const char *alias;
> +	u8 test_byte;
>  
>  	if (dev->platform_data) {
>  		chip = *(struct at24_platform_data *)dev->platform_data;
> @@ -487,6 +488,12 @@ static int at24_probe(struct device *dev)
>  	at24->nvmem_config.size = chip.byte_len;
>  	at24->nvmem_config.id = devid;
>  
> +	/* Perform a one-byte test read to verify that the chip is functional */
> +	if (at24_read(at24, &test_byte, 0, 1) != 1) {
> +		err = -ENODEV;

a return of -ENODEV from driver probe doesn't print an error. Is that
what we want here?

Sascha

> +		goto err_devfs_create;
> +	}
> +
>  	at24->nvmem = nvmem_register(&at24->nvmem_config);
>  	err = PTR_ERR_OR_ZERO(at24->nvmem);
>  	if (err)
> -- 
> 2.47.3
> 
> 
> 

-- 
Pengutronix e.K.                           |                             |
Steuerwalder Str. 21                       | http://www.pengutronix.de/  |
31137 Hildesheim, Germany                  | Phone: +49-5121-206917-0    |
Amtsgericht Hildesheim, HRA 2686           | Fax:   +49-5121-206917-5555 |



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

* Re: [PATCH] eeprom: at24: verify that chip is accessible during probe
  2026-02-23  9:15 ` Sascha Hauer
@ 2026-02-23  9:56   ` Marco Felsch
  2026-02-23 11:16     ` Sascha Hauer
  0 siblings, 1 reply; 5+ messages in thread
From: Marco Felsch @ 2026-02-23  9:56 UTC (permalink / raw)
  To: Sascha Hauer; +Cc: barebox

On 26-02-23, Sascha Hauer wrote:
> On Wed, Feb 18, 2026 at 01:42:48PM +0100, Marco Felsch wrote:
> > Perform a basic sanity check to verify that the EEPROM is actually
> > accessible by reading 1-byte. Linux does the same sanity check for all
> > non-ACPI platforms.
> > 
> > Signed-off-by: Marco Felsch <m.felsch@pengutronix.de>
> > ---
> >  drivers/eeprom/at24.c | 7 +++++++
> >  1 file changed, 7 insertions(+)
> > 
> > diff --git a/drivers/eeprom/at24.c b/drivers/eeprom/at24.c
> > index 06a2a4b22697..a08d42fe3e14 100644
> > --- a/drivers/eeprom/at24.c
> > +++ b/drivers/eeprom/at24.c
> > @@ -373,6 +373,7 @@ static int at24_probe(struct device *dev)
> >  	unsigned i, num_addresses;
> >  	const char *devname;
> >  	const char *alias;
> > +	u8 test_byte;
> >  
> >  	if (dev->platform_data) {
> >  		chip = *(struct at24_platform_data *)dev->platform_data;
> > @@ -487,6 +488,12 @@ static int at24_probe(struct device *dev)
> >  	at24->nvmem_config.size = chip.byte_len;
> >  	at24->nvmem_config.id = devid;
> >  
> > +	/* Perform a one-byte test read to verify that the chip is functional */
> > +	if (at24_read(at24, &test_byte, 0, 1) != 1) {
> > +		err = -ENODEV;
> 
> a return of -ENODEV from driver probe doesn't print an error. Is that
> what we want here?

That's a good point, quickly checked the Linux implementation which
doesn't print an error too. However, you're right and we should print a
dev_err() or so here. Is this something you may add while applying or
shall I send a new v2?

Regards,
  Marco


> 
> Sascha
> 
> > +		goto err_devfs_create;
> > +	}
> > +
> >  	at24->nvmem = nvmem_register(&at24->nvmem_config);
> >  	err = PTR_ERR_OR_ZERO(at24->nvmem);
> >  	if (err)
> > -- 
> > 2.47.3
> > 
> > 
> > 
> 
> -- 
> Pengutronix e.K.                           |                             |
> Steuerwalder Str. 21                       | http://www.pengutronix.de/  |
> 31137 Hildesheim, Germany                  | Phone: +49-5121-206917-0    |
> Amtsgericht Hildesheim, HRA 2686           | Fax:   +49-5121-206917-5555 |
> 

-- 
#gernperDu 
#CallMeByMyFirstName

Pengutronix e.K.                           |                             |
Steuerwalder Str. 21                       | https://www.pengutronix.de/ |
31137 Hildesheim, Germany                  | Phone: +49-5121-206917-0    |
Amtsgericht Hildesheim, HRA 2686           | Fax:   +49-5121-206917-9    |



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

* Re: [PATCH] eeprom: at24: verify that chip is accessible during probe
  2026-02-23  9:56   ` Marco Felsch
@ 2026-02-23 11:16     ` Sascha Hauer
  2026-02-23 11:22       ` Marco Felsch
  0 siblings, 1 reply; 5+ messages in thread
From: Sascha Hauer @ 2026-02-23 11:16 UTC (permalink / raw)
  To: Marco Felsch; +Cc: barebox

On Mon, Feb 23, 2026 at 10:56:24AM +0100, Marco Felsch wrote:
> On 26-02-23, Sascha Hauer wrote:
> > On Wed, Feb 18, 2026 at 01:42:48PM +0100, Marco Felsch wrote:
> > > Perform a basic sanity check to verify that the EEPROM is actually
> > > accessible by reading 1-byte. Linux does the same sanity check for all
> > > non-ACPI platforms.
> > > 
> > > Signed-off-by: Marco Felsch <m.felsch@pengutronix.de>
> > > ---
> > >  drivers/eeprom/at24.c | 7 +++++++
> > >  1 file changed, 7 insertions(+)
> > > 
> > > diff --git a/drivers/eeprom/at24.c b/drivers/eeprom/at24.c
> > > index 06a2a4b22697..a08d42fe3e14 100644
> > > --- a/drivers/eeprom/at24.c
> > > +++ b/drivers/eeprom/at24.c
> > > @@ -373,6 +373,7 @@ static int at24_probe(struct device *dev)
> > >  	unsigned i, num_addresses;
> > >  	const char *devname;
> > >  	const char *alias;
> > > +	u8 test_byte;
> > >  
> > >  	if (dev->platform_data) {
> > >  		chip = *(struct at24_platform_data *)dev->platform_data;
> > > @@ -487,6 +488,12 @@ static int at24_probe(struct device *dev)
> > >  	at24->nvmem_config.size = chip.byte_len;
> > >  	at24->nvmem_config.id = devid;
> > >  
> > > +	/* Perform a one-byte test read to verify that the chip is functional */
> > > +	if (at24_read(at24, &test_byte, 0, 1) != 1) {
> > > +		err = -ENODEV;
> > 
> > a return of -ENODEV from driver probe doesn't print an error. Is that
> > what we want here?
> 
> That's a good point, quickly checked the Linux implementation which
> doesn't print an error too. However, you're right and we should print a
> dev_err() or so here. Is this something you may add while applying or
> shall I send a new v2?

I can fix it up, but I wanted to push the thinking about the correct
error code to you ;)

How about returning the return value of at24_read()?

Sascha

-- 
Pengutronix e.K.                           |                             |
Steuerwalder Str. 21                       | http://www.pengutronix.de/  |
31137 Hildesheim, Germany                  | Phone: +49-5121-206917-0    |
Amtsgericht Hildesheim, HRA 2686           | Fax:   +49-5121-206917-5555 |



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

* Re: [PATCH] eeprom: at24: verify that chip is accessible during probe
  2026-02-23 11:16     ` Sascha Hauer
@ 2026-02-23 11:22       ` Marco Felsch
  0 siblings, 0 replies; 5+ messages in thread
From: Marco Felsch @ 2026-02-23 11:22 UTC (permalink / raw)
  To: Sascha Hauer; +Cc: barebox

On 26-02-23, Sascha Hauer wrote:
> On Mon, Feb 23, 2026 at 10:56:24AM +0100, Marco Felsch wrote:
> > On 26-02-23, Sascha Hauer wrote:
> > > On Wed, Feb 18, 2026 at 01:42:48PM +0100, Marco Felsch wrote:
> > > > Perform a basic sanity check to verify that the EEPROM is actually
> > > > accessible by reading 1-byte. Linux does the same sanity check for all
> > > > non-ACPI platforms.
> > > > 
> > > > Signed-off-by: Marco Felsch <m.felsch@pengutronix.de>
> > > > ---
> > > >  drivers/eeprom/at24.c | 7 +++++++
> > > >  1 file changed, 7 insertions(+)
> > > > 
> > > > diff --git a/drivers/eeprom/at24.c b/drivers/eeprom/at24.c
> > > > index 06a2a4b22697..a08d42fe3e14 100644
> > > > --- a/drivers/eeprom/at24.c
> > > > +++ b/drivers/eeprom/at24.c
> > > > @@ -373,6 +373,7 @@ static int at24_probe(struct device *dev)
> > > >  	unsigned i, num_addresses;
> > > >  	const char *devname;
> > > >  	const char *alias;
> > > > +	u8 test_byte;
> > > >  
> > > >  	if (dev->platform_data) {
> > > >  		chip = *(struct at24_platform_data *)dev->platform_data;
> > > > @@ -487,6 +488,12 @@ static int at24_probe(struct device *dev)
> > > >  	at24->nvmem_config.size = chip.byte_len;
> > > >  	at24->nvmem_config.id = devid;
> > > >  
> > > > +	/* Perform a one-byte test read to verify that the chip is functional */
> > > > +	if (at24_read(at24, &test_byte, 0, 1) != 1) {
> > > > +		err = -ENODEV;
> > > 
> > > a return of -ENODEV from driver probe doesn't print an error. Is that
> > > what we want here?
> > 
> > That's a good point, quickly checked the Linux implementation which
> > doesn't print an error too. However, you're right and we should print a
> > dev_err() or so here. Is this something you may add while applying or
> > shall I send a new v2?
> 
> I can fix it up, but I wanted to push the thinking about the correct
> error code to you ;)
> 
> How about returning the return value of at24_read()?

Ah now I got you :) Yeah we could do that to not cast the error provided
by at24_read().

I will send a new v2.

Regards,
  Marco


> 
> Sascha
> 
> -- 
> Pengutronix e.K.                           |                             |
> Steuerwalder Str. 21                       | http://www.pengutronix.de/  |
> 31137 Hildesheim, Germany                  | Phone: +49-5121-206917-0    |
> Amtsgericht Hildesheim, HRA 2686           | Fax:   +49-5121-206917-5555 |
> 

-- 
#gernperDu 
#CallMeByMyFirstName

Pengutronix e.K.                           |                             |
Steuerwalder Str. 21                       | https://www.pengutronix.de/ |
31137 Hildesheim, Germany                  | Phone: +49-5121-206917-0    |
Amtsgericht Hildesheim, HRA 2686           | Fax:   +49-5121-206917-9    |



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

end of thread, other threads:[~2026-02-23 11:22 UTC | newest]

Thread overview: 5+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2026-02-18 12:42 [PATCH] eeprom: at24: verify that chip is accessible during probe Marco Felsch
2026-02-23  9:15 ` Sascha Hauer
2026-02-23  9:56   ` Marco Felsch
2026-02-23 11:16     ` Sascha Hauer
2026-02-23 11:22       ` Marco Felsch

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