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
