[PATCH 2/2] mtd: nand: raw: atmel: Add error handling when rb-gpios missing
Alexander Dahl
ada at thorsis.com
Tue Aug 8 17:03:38 CEST 2023
Hello Michael,
Am Tue, Aug 08, 2023 at 03:49:45PM +0200 schrieb Michael Nazzareno Trimarchi:
> Hi
>
> On Tue, Aug 8, 2023 at 3:03 PM Alexander Dahl <ada at thorsis.com> wrote:
> >
> > Adapt behaviour to Linux kernel driver.
> >
> > The return value of gpio_request_by_name_nodev() was not checked before,
> > and thus in case 'rb-gpios' was missing in DT, rb.type was set to
> > ATMEL_NAND_GPIO_RB nevertheless, leading to output like this for
> > example (on sam9x60-curiosity with the line removed from dts):
> >
> > NAND: Could not find valid ONFI parameter page; aborting
> > device found, Manufacturer ID: 0xc2, Chip ID: 0xdc
> > Macronix NAND 512MiB 3,3V 8-bit
> > 512 MiB, SLC, erase size: 256 KiB, page size: 4096, OOB size: 64
> > atmel-nand-controller nand-controller: NAND scan failed: -22
> > Failed to probe nand driver (err = -22)
> > Failed to initialize NAND controller. (error -22)
> > 0 MiB
> >
> > Note: not having that gpio assigned in dts is fine, the driver does not
> > override nand_chip->dev_ready() then and a generic solution is used.
> >
> > Fixes: 6a8dfd57220d ("nand: atmel: Add DM based NAND driver")
> > Signed-off-by: Alexander Dahl <ada at thorsis.com>
> > ---
> > drivers/mtd/nand/raw/atmel/nand-controller.c | 11 +++++++----
> > 1 file changed, 7 insertions(+), 4 deletions(-)
> >
> > diff --git a/drivers/mtd/nand/raw/atmel/nand-controller.c b/drivers/mtd/nand/raw/atmel/nand-controller.c
> > index 2b29c8def6..8e745a5111 100644
> > --- a/drivers/mtd/nand/raw/atmel/nand-controller.c
> > +++ b/drivers/mtd/nand/raw/atmel/nand-controller.c
> > @@ -1600,10 +1600,13 @@ static struct atmel_nand *atmel_nand_create(struct atmel_nand_controller *nc,
> > nand->cs[i].rb.type = ATMEL_NAND_NATIVE_RB;
> > nand->cs[i].rb.id = val;
> > } else {
> > - gpio_request_by_name_nodev(np, "rb-gpios", 0,
> > - &nand->cs[i].rb.gpio,
> > - GPIOD_IS_IN);
> > - nand->cs[i].rb.type = ATMEL_NAND_GPIO_RB;
> > + ret = gpio_request_by_name_nodev(np, "rb-gpios", 0,
> > + &nand->cs[i].rb.gpio,
> > + GPIOD_IS_IN);
> > + if (ret)
> > + dev_err(nc->dev, "Failed to get R/B gpio (err = %d)\n", ret);
>
> Should not then an error here
Different log level or no message at all?
Note: Linux prints the same message with error level in that case.
Greets
Alex
>
> Michael
>
> > + else
> > + nand->cs[i].rb.type = ATMEL_NAND_GPIO_RB;
> > }
> >
> > gpio_request_by_name_nodev(np, "cs-gpios", 0,
> > --
> > 2.30.2
> >
>
>
> --
> Michael Nazzareno Trimarchi
> Co-Founder & Chief Executive Officer
> M. +39 347 913 2170
> michael at amarulasolutions.com
> __________________________________
>
> Amarula Solutions BV
> Joop Geesinkweg 125, 1114 AB, Amsterdam, NL
> T. +31 (0)85 111 9172
> info at amarulasolutions.com
> www.amarulasolutions.com
More information about the U-Boot
mailing list