command: Remove the cmd_tbl_t typedef
[oweals/u-boot.git] / cmd / remoteproc.c
index 794a406b7828d5c4641be07eb4881e51e7ab4cb9..e8b9178e74079e90522850b6348f2756e42db56c 100644 (file)
@@ -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 <common.h>
 #include <command.h>
@@ -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 <id> - 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 <id> [addr] [size]- Load the remote processor with binary\n"
           "\t            image stored at address [addr] in memory\n"