At present if a device to map has a block size other than 512,
the blkmap map process just fails. There is no reason why we
can't just use the block size of the mapped device.

Signed-off-by: Bin Meng <bm...@tinylab.org>
---

 drivers/block/blkmap.c | 10 +++++-----
 1 file changed, 5 insertions(+), 5 deletions(-)

diff --git a/drivers/block/blkmap.c b/drivers/block/blkmap.c
index f6acfa8927..149a4cac3e 100644
--- a/drivers/block/blkmap.c
+++ b/drivers/block/blkmap.c
@@ -171,11 +171,11 @@ int blkmap_map_linear(struct udevice *dev, lbaint_t 
blknr, lbaint_t blkcnt,
 
        bd = dev_get_uclass_plat(bm->blk);
        lbd = dev_get_uclass_plat(lblk);
-       if (lbd->blksz != bd->blksz)
-               /* We could support block size translation, but we
-                * don't yet.
-                */
-               return -EINVAL;
+       if (lbd->blksz != bd->blksz) {
+               /* update to match the mapped device */
+               bd->blksz = lbd->blksz;
+               bd->log2blksz = LOG2(bd->blksz);
+       }
 
        linear = malloc(sizeof(*linear));
        if (!linear)
-- 
2.25.1

Reply via email to