]> git.dujemihanovic.xyz Git - u-boot.git/commitdiff
cmd: blk_common: Stop using hard-coded block size for Sandbox operations
authorBin Meng <bmeng@tinylab.org>
Tue, 26 Sep 2023 08:43:42 +0000 (16:43 +0800)
committerTom Rini <trini@konsulko.com>
Tue, 10 Oct 2023 20:25:48 +0000 (16:25 -0400)
commit 3d2fc7971454 ("cmd: blk: Allow generic read/write operations to work in sandbox")
used the hard-coded block size (512) for accessing the sandbox host
device. Now that we have added support for non-512 block size for both
Sandbox host device and blkmap driver, let's stop using the hard-coded
block size.

Signed-off-by: Bin Meng <bmeng@tinylab.org>
Reviewed-by: Simon Glass <sjg@chromium.org>
cmd/blk_common.c

index ad9b16dc098d3a99cce8d3e9c655ab21329e364b..02ac92837b6cf33e992d31c04acd0a9fdcd44a04 100644 (file)
@@ -67,15 +67,19 @@ int blk_common_cmd(int argc, char *const argv[], enum uclass_id uclass_id,
                        phys_addr_t paddr = hextoul(argv[2], NULL);
                        lbaint_t blk = hextoul(argv[3], NULL);
                        ulong cnt = hextoul(argv[4], NULL);
+                       struct blk_desc *desc;
                        void *vaddr;
                        ulong n;
+                       int ret;
 
                        printf("\n%s read: device %d block # "LBAFU", count %lu ... ",
                               if_name, *cur_devnump, blk, cnt);
 
-                       vaddr = map_sysmem(paddr, 512 * cnt);
-                       n = blk_read_devnum(uclass_id, *cur_devnump, blk, cnt,
-                                           vaddr);
+                       ret = blk_get_desc(uclass_id, *cur_devnump, &desc);
+                       if (ret)
+                               return CMD_RET_FAILURE;
+                       vaddr = map_sysmem(paddr, desc->blksz * cnt);
+                       n = blk_dread(desc, blk, cnt, vaddr);
                        unmap_sysmem(vaddr);
 
                        printf("%ld blocks read: %s\n", n,
@@ -85,15 +89,19 @@ int blk_common_cmd(int argc, char *const argv[], enum uclass_id uclass_id,
                        phys_addr_t paddr = hextoul(argv[2], NULL);
                        lbaint_t blk = hextoul(argv[3], NULL);
                        ulong cnt = hextoul(argv[4], NULL);
+                       struct blk_desc *desc;
                        void *vaddr;
                        ulong n;
+                       int ret;
 
                        printf("\n%s write: device %d block # "LBAFU", count %lu ... ",
                               if_name, *cur_devnump, blk, cnt);
 
-                       vaddr = map_sysmem(paddr, 512 * cnt);
-                       n = blk_write_devnum(uclass_id, *cur_devnump, blk, cnt,
-                                            vaddr);
+                       ret = blk_get_desc(uclass_id, *cur_devnump, &desc);
+                       if (ret)
+                               return CMD_RET_FAILURE;
+                       vaddr = map_sysmem(paddr, desc->blksz * cnt);
+                       n = blk_dwrite(desc, blk, cnt, vaddr);
                        unmap_sysmem(vaddr);
 
                        printf("%ld blocks written: %s\n", n,