For uclass_id == UCLASS_MTD, resolve
blk_get_devnum_by_uclass_idname() via
blk_get_devnum_by_uclass_id(UCLASS_MTD, devnum), matching on the
block descriptor's own uclass_id rather than its parent device's
uclass. SPI-NOR backed mtdblock/ubiblock devices are parented by a
UCLASS_SPI_FLASH device, so the generic parent-uclass matching loop
never finds them; SPI-NAND and parallel NOR are unaffected since
their MTD block devices are parented directly by a UCLASS_MTD
device.

Signed-off-by: Vandhiadevan Karunamoorthy 
<[email protected]>
---
 drivers/block/blk-uclass.c | 3 +++
 1 file changed, 3 insertions(+)

diff --git a/drivers/block/blk-uclass.c b/drivers/block/blk-uclass.c
index 73c24fd9176..37f39817bc3 100644
--- a/drivers/block/blk-uclass.c
+++ b/drivers/block/blk-uclass.c
@@ -128,6 +128,9 @@ struct blk_desc *blk_get_devnum_by_uclass_idname(const char 
*uclass_idname, int
                return NULL;
        }
 
+       if (uclass_id == UCLASS_MTD)
+               return blk_get_devnum_by_uclass_id(UCLASS_MTD, devnum);
+
        ret = uclass_get(UCLASS_BLK, &uc);
        if (ret)
                return NULL;

-- 
2.34.1

Reply via email to