
On 31.5.2018 11:40, Siva Durga Prasad Paladugu wrote:
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 siva.durga.paladugu@xilinx.com
Changes for v2:
- Correct the argc check as per comment.
cmd/fpga.c | 31 +++++++++++++++++++------------ 1 file changed, 19 insertions(+), 12 deletions(-)
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)
fpga_fsinfo.blocksize = (unsigned int)return CMD_RET_USAGE;
simple_strtoul(argv[5], NULL, 16);
fpga_fsinfo.interface = argv[6]; fpga_fsinfo.dev_part = argv[7]; fpga_fsinfo.filename = argv[8];simple_strtoul(argv[5], NULL, 16);
argc = 5;
break;
#endif
- default:
break;
- }
- switch (argc) { case 5: /* fpga <op> <dev> <data> <datasize> */ 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> */
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) {
Applied all.
Thanks, Michal