Message ID | 20220321091329.v1.1.I6c2140112986b016356da7d05e846bcaefdd3fcf@changeid |
---|---|
State | Accepted |
Commit | c86a4de8df611b58ec41ae6c42c6fec58e5ab54f |
Delegated to: | Tom Rini |
Headers | show |
Series | mtd: Allow to parse DT partitions for raw nand | expand |
On Mon, Mar 21, 2022 at 09:13:36AM +0100, Patrice Chotard wrote: > Currently, add_mtd_partitions_of() can be used only if dev field of > mtd_info struct is populated. It's the case, for example, for a spi nor > flash, which has a DT compatible "jedec,spi-nor" and an associated > device. mtd->dev is populated in spi_nor_scan(). > > But in case of a raw nand node, mtd_info's dev field can't be populated > as flash node has no compatible, so no associated device. > add_mtd_partitions_of() can't be used to parse "partitions" subnode. > > To remove this constraint, add an ofnode field in mtd_info struct > which reference the DT flash node. This new field is populated by > nand_scan_tail(). This new field will be used by add_mtd_partitions_of() > to parse the flash node for "partitions" defined in DT. > > Signed-off-by: Patrice Chotard <patrice.chotard@foss.st.com> > Cc: Farhan Ali <farhan.ali@broadcom.com> > Cc: Heinrich Schuchardt <xypron.glpk@gmx.de> > Cc: Jagan Teki <jagan@amarulasolutions.com> > Cc: Marek Behun <marek.behun@nic.cz> > Cc: Miquel Raynal <miquel.raynal@bootlin.com> > Cc: Simon Glass <sjg@chromium.org> > Cc: Wolfgang Denk <wd@denx.de> Applied to u-boot/master, thanks!
diff --git a/drivers/mtd/nand/raw/nand_base.c b/drivers/mtd/nand/raw/nand_base.c index f7616985d9..a007603df1 100644 --- a/drivers/mtd/nand/raw/nand_base.c +++ b/drivers/mtd/nand/raw/nand_base.c @@ -5257,6 +5257,7 @@ int nand_scan_tail(struct mtd_info *mtd) break; } + mtd->flash_node = chip->flash_node; /* Fill in remaining MTD driver data */ mtd->type = nand_is_slc(chip) ? MTD_NANDFLASH : MTD_MLCNANDFLASH; mtd->flags = (chip->options & NAND_ROM) ? MTD_CAP_ROM : diff --git a/include/linux/mtd/mtd.h b/include/linux/mtd/mtd.h index 7455400981..af45e63bf9 100644 --- a/include/linux/mtd/mtd.h +++ b/include/linux/mtd/mtd.h @@ -305,6 +305,7 @@ struct mtd_info { struct device dev; #else struct udevice *dev; + ofnode flash_node; #endif int usecount;
Currently, add_mtd_partitions_of() can be used only if dev field of mtd_info struct is populated. It's the case, for example, for a spi nor flash, which has a DT compatible "jedec,spi-nor" and an associated device. mtd->dev is populated in spi_nor_scan(). But in case of a raw nand node, mtd_info's dev field can't be populated as flash node has no compatible, so no associated device. add_mtd_partitions_of() can't be used to parse "partitions" subnode. To remove this constraint, add an ofnode field in mtd_info struct which reference the DT flash node. This new field is populated by nand_scan_tail(). This new field will be used by add_mtd_partitions_of() to parse the flash node for "partitions" defined in DT. Signed-off-by: Patrice Chotard <patrice.chotard@foss.st.com> Cc: Farhan Ali <farhan.ali@broadcom.com> Cc: Heinrich Schuchardt <xypron.glpk@gmx.de> Cc: Jagan Teki <jagan@amarulasolutions.com> Cc: Marek Behun <marek.behun@nic.cz> Cc: Miquel Raynal <miquel.raynal@bootlin.com> Cc: Simon Glass <sjg@chromium.org> Cc: Wolfgang Denk <wd@denx.de> --- drivers/mtd/nand/raw/nand_base.c | 1 + include/linux/mtd/mtd.h | 1 + 2 files changed, 2 insertions(+)