summaryrefslogtreecommitdiff
path: root/cmd
diff options
context:
space:
mode:
authorMichal Simek <michal.simek@xilinx.com>2018-06-04 14:57:34 +0200
committerMichal Simek <michal.simek@xilinx.com>2018-09-11 10:58:42 +0200
commitf4c7a4aea261e9eab3068f91a08f3c84bd58d89f (patch)
treebe35f2539f5f85532740b485bbdf4a03c9b07e8f /cmd
parent9657d97cf5f0284dbab36915654fb5d082332281 (diff)
cmd: fpga: Extract fpga info command to separate function
Move fpga info to U_BOOT_CMD_MKENT subcommand. Also use strtol instead of simple_strtoul. The reason is that if -1 is passed (or fpga info without "fpga" variable) the list of all fpgas is shown. This functionality is in the fpga core but it couldn't be performed. Signed-off-by: Michal Simek <michal.simek@xilinx.com> Reviewed-by: Simon Glass <sjg@chromium.org>
Diffstat (limited to 'cmd')
-rw-r--r--cmd/fpga.c35
1 files changed, 27 insertions, 8 deletions
diff --git a/cmd/fpga.c b/cmd/fpga.c
index ac12af2fa0..039803870b 100644
--- a/cmd/fpga.c
+++ b/cmd/fpga.c
@@ -13,10 +13,26 @@
#include <fs.h>
#include <malloc.h>
+static long do_fpga_get_device(char *arg)
+{
+ long dev = FPGA_INVALID_DEVICE;
+ char *devstr = env_get("fpga");
+
+ if (devstr)
+ /* Should be strtol to handle -1 cases */
+ dev = simple_strtol(devstr, NULL, 16);
+
+ if (arg)
+ dev = simple_strtol(arg, NULL, 16);
+
+ debug("%s: device = %ld\n", __func__, dev);
+
+ return dev;
+}
+
/* Local defines */
enum {
FPGA_NONE = -1,
- FPGA_INFO,
FPGA_LOAD,
FPGA_LOADB,
FPGA_DUMP,
@@ -35,9 +51,7 @@ static int fpga_get_op(char *opstr)
{
int op = FPGA_NONE;
- if (!strcmp("info", opstr))
- op = FPGA_INFO;
- else if (!strcmp("loadb", opstr))
+ if (!strcmp("loadb", opstr))
op = FPGA_LOADB;
else if (!strcmp("load", opstr))
op = FPGA_LOAD;
@@ -194,10 +208,6 @@ int do_fpga(cmd_tbl_t *cmdtp, int flag, int argc, char *const argv[])
}
switch (op) {
- case FPGA_INFO:
- rc = fpga_info(dev);
- break;
-
case FPGA_LOAD:
rc = fpga_load(dev, fpga_data, data_size, BIT_FULL);
break;
@@ -331,7 +341,16 @@ int do_fpga(cmd_tbl_t *cmdtp, int flag, int argc, char *const argv[])
return rc;
}
+static int do_fpga_info(cmd_tbl_t *cmdtp, int flag, int argc,
+ char * const argv[])
+{
+ long dev = do_fpga_get_device(argv[0]);
+
+ return fpga_info(dev);
+}
+
static cmd_tbl_t fpga_commands[] = {
+ U_BOOT_CMD_MKENT(info, 1, 1, do_fpga_info, "", ""),
};
static int do_fpga_wrapper(cmd_tbl_t *cmdtp, int flag, int argc,