Re: [PATCH v3 1/5] cmd: read: use part_get_info_by_dev_and_name_or_num() instead of open-coded dev_part parsing

2023-03-20 Thread Tom Rini
On Thu, Mar 02, 2023 at 09:12:21AM +0100, Rasmus Villemoes wrote:

> Use the helper part_get_info_by_dev_and_name_or_num() for parsing a
> dev[:part] string and obtaining the partition info in one go, instead
> of open-coding all that.
> 
> As a bonus, this will automatically allow using the dev#partname
> syntax as well, for accessing raw partitions by name.
> 
> Reviewed-by: Simon Glass 
> Signed-off-by: Rasmus Villemoes 

For the series, applied to u-boot/next, thanks!

-- 
Tom


signature.asc
Description: PGP signature


[PATCH v3 1/5] cmd: read: use part_get_info_by_dev_and_name_or_num() instead of open-coded dev_part parsing

2023-03-02 Thread Rasmus Villemoes
Use the helper part_get_info_by_dev_and_name_or_num() for parsing a
dev[:part] string and obtaining the partition info in one go, instead
of open-coding all that.

As a bonus, this will automatically allow using the dev#partname
syntax as well, for accessing raw partitions by name.

Reviewed-by: Simon Glass 
Signed-off-by: Rasmus Villemoes 
---
 cmd/read.c | 32 
 1 file changed, 8 insertions(+), 24 deletions(-)

diff --git a/cmd/read.c b/cmd/read.c
index fecfadaa1f..8645db49bb 100644
--- a/cmd/read.c
+++ b/cmd/read.c
@@ -15,50 +15,34 @@
 
 int do_read(struct cmd_tbl *cmdtp, int flag, int argc, char *const argv[])
 {
-   char *ep;
struct blk_desc *dev_desc = NULL;
-   int dev;
-   int part = 0;
struct disk_partition part_info;
-   ulong offset = 0u;
-   ulong limit = 0u;
+   ulong offset, limit;
void *addr;
uint blk;
uint cnt;
+   int part;
 
if (argc != 6) {
cmd_usage(cmdtp);
return 1;
}
 
-   dev = (int)hextoul(argv[2], );
-   if (*ep) {
-   if (*ep != ':') {
-   printf("Invalid block device %s\n", argv[2]);
-   return 1;
-   }
-   part = (int)hextoul(++ep, NULL);
-   }
-
-   dev_desc = blk_get_dev(argv[1], dev);
-   if (dev_desc == NULL) {
-   printf("Block device %s %d not supported\n", argv[1], dev);
+   part = part_get_info_by_dev_and_name_or_num(argv[1], argv[2],
+   _desc, _info, 1);
+   if (part < 0)
return 1;
-   }
 
addr = map_sysmem(hextoul(argv[3], NULL), 0);
blk = hextoul(argv[4], NULL);
cnt = hextoul(argv[5], NULL);
 
-   if (part != 0) {
-   if (part_get_info(dev_desc, part, _info)) {
-   printf("Cannot find partition %d\n", part);
-   return 1;
-   }
+   if (part > 0) {
offset = part_info.start;
limit = part_info.size;
} else {
/* Largest address not available in struct blk_desc. */
+   offset = 0;
limit = ~0;
}
 
@@ -78,5 +62,5 @@ int do_read(struct cmd_tbl *cmdtp, int flag, int argc, char 
*const argv[])
 U_BOOT_CMD(
read,   6,  0,  do_read,
"Load binary data from a partition",
-   "  addr blk# cnt"
+   "  addr blk# cnt"
 );
-- 
2.37.2