[U-Boot] [PATCH v2 1/3] cmd: fpga: Reorder the arguments parsing code
Michal Simek
michal.simek at xilinx.com
Fri Jun 1 13:24:35 UTC 2018
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 at 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)
> + 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 <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
More information about the U-Boot
mailing list