diff mbox series

[v1,2/2] mtd: Update the way partitions are parsed

Message ID 20220321081337.28971-2-patrice.chotard@foss.st.com
State Accepted
Commit 7ab3364c6d1c17b8ee6da523d5729b0248ba63bf
Delegated to: Tom Rini
Headers show
Series mtd: Allow to parse DT partitions for raw nand | expand

Commit Message

Patrice CHOTARD March 21, 2022, 8:13 a.m. UTC
In case mtd_info's dev field is not populated (raw nand's case),
use the flash_node new field which reference the DT flash node where
can be found "partitions" node with "fixed-partitions" compatible.

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/mtdpart.c | 8 ++++++--
 1 file changed, 6 insertions(+), 2 deletions(-)

Comments

Tom Rini April 11, 2022, 8:15 p.m. UTC | #1
On Mon, Mar 21, 2022 at 09:13:37AM +0100, Patrice Chotard wrote:

> In case mtd_info's dev field is not populated (raw nand's case),
> use the flash_node new field which reference the DT flash node where
> can be found "partitions" node with "fixed-partitions" compatible.
> 
> 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 mbox series

Patch

diff --git a/drivers/mtd/mtdpart.c b/drivers/mtd/mtdpart.c
index 4119ea4ff6..d077897e4a 100644
--- a/drivers/mtd/mtdpart.c
+++ b/drivers/mtd/mtdpart.c
@@ -887,10 +887,14 @@  int add_mtd_partitions_of(struct mtd_info *master)
 	ofnode parts, child;
 	int i = 0;
 
-	if (!master->dev)
+	if (!master->dev && !ofnode_valid(master->flash_node))
 		return 0;
 
-	parts = ofnode_find_subnode(mtd_get_ofnode(master), "partitions");
+	if (master->dev)
+		parts = ofnode_find_subnode(mtd_get_ofnode(master), "partitions");
+	else
+		parts = ofnode_find_subnode(master->flash_node, "partitions");
+
 	if (!ofnode_valid(parts) || !ofnode_is_available(parts) ||
 	    !ofnode_device_is_compatible(parts, "fixed-partitions"))
 		return 0;