From f5953610bf9198a585e39c8074ef9dea1106da9c Mon Sep 17 00:00:00 2001 From: Siva Durga Prasad Paladugu Date: Thu, 31 May 2018 15:10:21 +0530 Subject: cmd: fpga: Reorder the arguments parsing code This patch modifies the arguments parsing code by parsing based on requested operation for fpga loadfs and then parses the most common/basic args for other fpga load commands. This makes it easy for new command extensions or additions especially the commands with more args. Signed-off-by: Siva Durga Prasad Paladugu Signed-off-by: Michal Simek --- cmd/fpga.c | 31 +++++++++++++++++++------------ 1 file changed, 19 insertions(+), 12 deletions(-) (limited to 'cmd/fpga.c') diff --git a/cmd/fpga.c b/cmd/fpga.c index 14ad4e5..3f09d42 100644 --- a/cmd/fpga.c +++ b/cmd/fpga.c @@ -60,15 +60,31 @@ int do_fpga(cmd_tbl_t *cmdtp, int flag, int argc, char *const argv[]) if (datastr) fpga_data = (void *)simple_strtoul(datastr, NULL, 16); - switch (argc) { + if (argc > 9 || argc < 2) { + debug("%s: Too many or too few args (%d)\n", __func__, argc); + return CMD_RET_USAGE; + } + + op = (int)fpga_get_op(argv[1]); + + switch (op) { #if defined(CONFIG_CMD_FPGA_LOADFS) - case 9: + case FPGA_LOADFS: + if (argc < 9) + return CMD_RET_USAGE; fpga_fsinfo.blocksize = (unsigned int) - simple_strtoul(argv[5], NULL, 16); + simple_strtoul(argv[5], NULL, 16); fpga_fsinfo.interface = argv[6]; fpga_fsinfo.dev_part = argv[7]; fpga_fsinfo.filename = argv[8]; + argc = 5; + break; #endif + default: + break; + } + + switch (argc) { case 5: /* fpga */ data_size = simple_strtoul(argv[4], NULL, 16); @@ -117,15 +133,6 @@ int do_fpga(cmd_tbl_t *cmdtp, int flag, int argc, char *const argv[]) __func__, (ulong)fpga_data); dev = FPGA_INVALID_DEVICE; /* reset device num */ } - - case 2: /* fpga */ - op = (int)fpga_get_op(argv[1]); - break; - - default: - debug("%s: Too many or too few args (%d)\n", __func__, argc); - op = FPGA_NONE; /* force usage display */ - break; } if (dev == FPGA_INVALID_DEVICE) { -- cgit v1.1