[PATCH 2/2] mtd: nand: raw: atmel: Add error handling when rb-gpios missing
Michael Nazzareno Trimarchi
michael at amarulasolutions.com
Tue Aug 8 15:49:45 CEST 2023
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
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