mtd: rawnand: fsl_elbc: Fix DM support in DTS code path
authorPali Rohár <pali@kernel.org>
Mon, 2 May 2022 16:28:08 +0000 (18:28 +0200)
committerPeng Fan <peng.fan@nxp.com>
Mon, 20 Jun 2022 01:18:26 +0000 (09:18 +0800)
For proper DM support it is required to fill also mtd->dev member.
Otherwise DM would not see nand device at all.

Signed-off-by: Pali Rohár <pali@kernel.org>
drivers/mtd/nand/raw/fsl_elbc_nand.c

index e734139..b0e3eb6 100644 (file)
@@ -668,7 +668,7 @@ static void fsl_elbc_ctrl_init(void)
        elbc_ctrl->addr = NULL;
 }
 
-static int fsl_elbc_chip_init(int devnum, u8 *addr, ofnode flash_node)
+static int fsl_elbc_chip_init(int devnum, u8 *addr, struct udevice *dev)
 {
        struct mtd_info *mtd;
        struct nand_chip *nand;
@@ -716,7 +716,8 @@ static int fsl_elbc_chip_init(int devnum, u8 *addr, ofnode flash_node)
        elbc_ctrl->chips[priv->bank] = priv;
 
        /* fill in nand_chip structure */
-       nand->flash_node = flash_node;
+       mtd->dev = dev;
+       nand->flash_node = dev ? dev_ofnode(dev) : ofnode_null();
 
        /* set up function call table */
        nand->read_byte = fsl_elbc_read_byte;
@@ -827,14 +828,14 @@ void board_nand_init(void)
        int i;
 
        for (i = 0; i < CONFIG_SYS_MAX_NAND_DEVICE; i++)
-               fsl_elbc_chip_init(i, (u8 *)base_address[i], ofnode_null());
+               fsl_elbc_chip_init(i, (u8 *)base_address[i], NULL);
 }
 
 #else
 
 static int fsl_elbc_nand_probe(struct udevice *dev)
 {
-       return fsl_elbc_chip_init(0, (void *)dev_read_addr(dev), dev_ofnode(dev));
+       return fsl_elbc_chip_init(0, (void *)dev_read_addr(dev), dev);
 }
 
 static const struct udevice_id fsl_elbc_nand_dt_ids[] = {