[U-Boot] [PATCH 8/8] cmd: remoteproc: Add support for initializing devices individually

Lokesh Vutla lokeshvutla at ti.com
Wed May 22 04:29:21 UTC 2019



On 21/05/19 11:27 PM, Lokesh Vutla wrote:
> 'rproc init' does the probe and initialization of all the available
> remoteproc devices in the system. This doesn't allow the flexibility
> to initialize the remote cores needed as per use case. In order
> to provide flexibility, update 'rproc init' command to accept one
> more parameter with rproc id which when passed initializes only
> that specific core. If no id is passed, command will initializes
> all the cores which is compatible with the existing behaviour.
> 
> Signed-off-by: Lokesh Vutla <lokeshvutla at ti.com>

Oops. This should be part of my next series. Will re send the series by dropping
the patch.

Thanks and regards,
Lokesh

> ---
>  cmd/remoteproc.c | 23 ++++++++++++++++++-----
>  1 file changed, 18 insertions(+), 5 deletions(-)
> 
> diff --git a/cmd/remoteproc.c b/cmd/remoteproc.c
> index 81463f36b6..689e1a6a1d 100644
> --- a/cmd/remoteproc.c
> +++ b/cmd/remoteproc.c
> @@ -68,12 +68,22 @@ static int print_remoteproc_list(void)
>  static int do_rproc_init(cmd_tbl_t *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;
> @@ -203,8 +213,10 @@ static int do_remoteproc_wrapper(cmd_tbl_t *cmdtp, int flag, int argc,
>  }
>  
>  static cmd_tbl_t cmd_remoteproc_sub[] = {
> -	U_BOOT_CMD_MKENT(init, 0, 1, do_rproc_init,
> -			 "Enumerate and initialize all processors", ""),
> +	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,
> @@ -270,7 +282,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"
> 


More information about the U-Boot mailing list