X-Git-Url: https://git.librecmc.org/?a=blobdiff_plain;f=cmd%2Fremoteproc.c;h=e8b9178e74079e90522850b6348f2756e42db56c;hb=358b6f72c28c80699536f7137063095116e1675e;hp=794a406b7828d5c4641be07eb4881e51e7ab4cb9;hpb=82d72a1b9967cff4908f22c57536c3660f794401;p=oweals%2Fu-boot.git diff --git a/cmd/remoteproc.c b/cmd/remoteproc.c index 794a406b78..e8b9178e74 100644 --- a/cmd/remoteproc.c +++ b/cmd/remoteproc.c @@ -1,7 +1,7 @@ +// SPDX-License-Identifier: GPL-2.0+ /* * (C) Copyright 2015 * Texas Instruments Incorporated - http://www.ti.com/ - * SPDX-License-Identifier: GPL-2.0+ */ #include #include @@ -34,6 +34,10 @@ static int print_remoteproc_list(void) uc_pdata = dev_get_uclass_platdata(dev); + /* Do not print if rproc is not probed */ + if (!(dev->flags & DM_FLAG_ACTIVATED)) + continue; + switch (uc_pdata->mem_type) { case RPROC_INTERNAL_MEMORY_MAPPED: type = "internal memory mapped"; @@ -65,15 +69,25 @@ static int print_remoteproc_list(void) * * Return: 0 if no error, else returns appropriate error value. */ -static int do_rproc_init(cmd_tbl_t *cmdtp, int flag, int argc, +static int do_rproc_init(struct cmd_tbl *cmdtp, int flag, int argc, char *const argv[]) { + int id; + if (rproc_is_initialized()) { printf("\tRemote Processors are already initialized\n"); - } else { + return CMD_RET_FAILURE; + } + + if (argc == 1) { if (!rproc_init()) return 0; - printf("Few Remote Processors failed to be initalized\n"); + printf("Few Remote Processors failed to be initialized\n"); + } else if (argc == 2) { + id = (int)simple_strtoul(argv[1], NULL, 10); + if (!rproc_dev_init(id)) + return 0; + printf("Remote Processor %d failed to be initialized\n", id); } return CMD_RET_FAILURE; @@ -88,14 +102,9 @@ static int do_rproc_init(cmd_tbl_t *cmdtp, int flag, int argc, * * Return: 0 if no error, else returns appropriate error value. */ -static int do_remoteproc_list(cmd_tbl_t *cmdtp, int flag, int argc, +static int do_remoteproc_list(struct cmd_tbl *cmdtp, int flag, int argc, char *const argv[]) { - if (!rproc_is_initialized()) { - printf("\t Remote Processors is not initialized\n"); - return CMD_RET_USAGE; - } - if (print_remoteproc_list()) return CMD_RET_FAILURE; @@ -111,7 +120,7 @@ static int do_remoteproc_list(cmd_tbl_t *cmdtp, int flag, int argc, * * Return: 0 if no error, else returns appropriate error value. */ -static int do_remoteproc_load(cmd_tbl_t *cmdtp, int flag, int argc, +static int do_remoteproc_load(struct cmd_tbl *cmdtp, int flag, int argc, char *const argv[]) { ulong addr, size; @@ -120,7 +129,7 @@ static int do_remoteproc_load(cmd_tbl_t *cmdtp, int flag, int argc, if (argc != 4) return CMD_RET_USAGE; - id = (int)simple_strtoul(argv[1], NULL, 3); + id = (int)simple_strtoul(argv[1], NULL, 10); addr = simple_strtoul(argv[2], NULL, 16); size = simple_strtoul(argv[3], NULL, 16); @@ -130,11 +139,6 @@ static int do_remoteproc_load(cmd_tbl_t *cmdtp, int flag, int argc, return CMD_RET_USAGE; } - if (!rproc_is_initialized()) { - printf("\tRemote Processors are not initialized\n"); - return CMD_RET_USAGE; - } - ret = rproc_load(id, addr, size); printf("Load Remote Processor %d with data@addr=0x%08lx %lu bytes:%s\n", id, addr, size, ret ? " Failed!" : " Success!"); @@ -155,7 +159,7 @@ static int do_remoteproc_load(cmd_tbl_t *cmdtp, int flag, int argc, * * Return: 0 if no error, else returns appropriate error value. */ -static int do_remoteproc_wrapper(cmd_tbl_t *cmdtp, int flag, int argc, +static int do_remoteproc_wrapper(struct cmd_tbl *cmdtp, int flag, int argc, char *const argv[]) { int id, ret = CMD_RET_USAGE; @@ -163,12 +167,7 @@ static int do_remoteproc_wrapper(cmd_tbl_t *cmdtp, int flag, int argc, if (argc != 2) return CMD_RET_USAGE; - id = (int)simple_strtoul(argv[1], NULL, 3); - - if (!rproc_is_initialized()) { - printf("\tRemote Processors are not initialized\n"); - return CMD_RET_USAGE; - } + id = (int)simple_strtoul(argv[1], NULL, 10); if (!strcmp(argv[0], "start")) { ret = rproc_start(id); @@ -202,9 +201,11 @@ static int do_remoteproc_wrapper(cmd_tbl_t *cmdtp, int flag, int argc, return ret ? CMD_RET_FAILURE : 0; } -static cmd_tbl_t cmd_remoteproc_sub[] = { - U_BOOT_CMD_MKENT(init, 0, 1, do_rproc_init, - "Enumerate and initialize all processors", ""), +static struct cmd_tbl cmd_remoteproc_sub[] = { + U_BOOT_CMD_MKENT(init, 1, 1, do_rproc_init, + "Enumerate and initialize the remote processor(s)", + "id - ID of the remote processor\n" + "If id is not passed, initialize all the remote processors"), U_BOOT_CMD_MKENT(list, 0, 1, do_remoteproc_list, "list remote processors", ""), U_BOOT_CMD_MKENT(load, 5, 1, do_remoteproc_load, @@ -241,10 +242,10 @@ static cmd_tbl_t cmd_remoteproc_sub[] = { * * Return: 0 if no error, else returns appropriate error value. */ -static int do_remoteproc(cmd_tbl_t *cmdtp, int flag, int argc, +static int do_remoteproc(struct cmd_tbl *cmdtp, int flag, int argc, char *const argv[]) { - cmd_tbl_t *c = NULL; + struct cmd_tbl *c = NULL; /* Strip off leading 'rproc' command argument */ argc--; @@ -270,7 +271,8 @@ U_BOOT_CMD(rproc, 5, 1, do_remoteproc, "\t\tNote: Services are dependent on the driver capability\n" "\t\t 'list' command shows the capability of each device\n" "\n\tSubcommands:\n" - "\tinit - Enumerate and initalize the remote processors\n" + "\tinit - Enumerate and initalize the remote processor.\n" + "\t if id is not passed, initialize all the remote prcessors\n" "\tlist - list available remote processors\n" "\tload [addr] [size]- Load the remote processor with binary\n" "\t image stored at address [addr] in memory\n"