On Tue, Aug 19, 2025 at 9:16 AM <dinesh.mani...@altera.com> wrote: > From: Dinesh Maniyam <dinesh.mani...@intel.com> > > The driver currently does: > mtd->dev->parent = cadence->dev; > > This works in Linux because `struct mtd_info` embeds a `struct device`, > so `mtd->dev` is always valid and its `.parent` can be set. > > In U-Boot, however, `mtd->dev` is only a pointer to a `struct udevice`. > Dereferencing it before assignment is invalid, which breaks the device > hierarchy. As a result, consumers relying on `mtd->dev` (e.g. partition > parser, reset and re-init paths) operate on a dangling pointer. This > leads to failures during warm reset when the NAND device is accessed > again. > > Fix by assigning the device pointer directly: > mtd->dev = cadence->dev; > > This matches U-Boot’s device model, preserves a valid hierarchy, and > resolves the warm reset issue on Cadence NAND. > > Fixes: ebc41cad ("drivers: mtd: nand: Add driver for Cadence Nand") > Signed-off-by: Dinesh Maniyam <dinesh.mani...@intel.com> > --- >
Reviewed-by: Michael Trimarchi <mich...@amarulasolutions.com> > drivers/mtd/nand/raw/cadence_nand.c | 2 +- > 1 file changed, 1 insertion(+), 1 deletion(-) > > diff --git a/drivers/mtd/nand/raw/cadence_nand.c > b/drivers/mtd/nand/raw/cadence_nand.c > index 27aa7f97a45..4771440d1de 100644 > --- a/drivers/mtd/nand/raw/cadence_nand.c > +++ b/drivers/mtd/nand/raw/cadence_nand.c > @@ -2196,7 +2196,7 @@ static int cadence_nand_chip_init(struct > cadence_nand_info *cadence, ofnode node > chip->controller = &cadence->controller; > nand_set_flash_node(chip, node); > mtd = nand_to_mtd(chip); > - mtd->dev->parent = cadence->dev; > + mtd->dev = cadence->dev; > > chip->options |= NAND_BUSWIDTH_AUTO; > chip->select_chip = cadence_nand_select_chip; > -- > 2.35.3 > > -- Michael Nazzareno Trimarchi Co-Founder & Chief Executive Officer M. +39 347 913 2170 mich...@amarulasolutions.com __________________________________ Amarula Solutions BV Joop Geesinkweg 125, 1114 AB, Amsterdam, NL T. +31 (0)85 111 9172 i...@amarulasolutions.com www.amarulasolutions.com