remoteproc: Allow for individual remoteproc initialization

Existing rproc_init() api tries to initialize all available
remoteproc devices. This will fail when there is dependency
among available remoteprocs. So introduce a separate api
that allows to initialize remoteprocs individually based
on id.

Reviewed-by: Tom Rini <trini@konsulko.com>
Signed-off-by: Lokesh Vutla <lokeshvutla@ti.com>
lime2-spi
Lokesh Vutla 6 years ago committed by Tom Rini
parent 880274192c
commit 81ae6e6d00
  1. 19
      drivers/remoteproc/rproc-uclass.c
  2. 9
      include/remoteproc.h

@ -272,6 +272,25 @@ int rproc_init(void)
return ret;
}
int rproc_dev_init(int id)
{
struct udevice *dev = NULL;
int ret;
ret = uclass_get_device_by_seq(UCLASS_REMOTEPROC, id, &dev);
if (ret) {
debug("Unknown remote processor id '%d' requested(%d)\n",
id, ret);
return ret;
}
ret = device_probe(dev);
if (ret)
debug("%s: Failed to initialize - %d\n", dev->name, ret);
return ret;
}
int rproc_load(int id, ulong addr, ulong size)
{
struct udevice *dev = NULL;

@ -86,6 +86,14 @@ struct dm_rproc_ops {
int rproc_init(void);
/**
* rproc_dev_init() - Initialize a remote proc device based on id
* @id: id of the remote processor
*
* Return: 0 if all ok, else appropriate error value.
*/
int rproc_dev_init(int id);
/**
* rproc_is_initialized() - check to see if remoteproc devices are initialized
*
* Return: 0 if all devices are initialized, else appropriate error value.
@ -150,6 +158,7 @@ int rproc_ping(int id);
int rproc_is_running(int id);
#else
static inline int rproc_init(void) { return -ENOSYS; }
static inline int rproc_dev_init(int id) { return -ENOSYS; }
static inline bool rproc_is_initialized(void) { return false; }
static inline int rproc_load(int id, ulong addr, ulong size) { return -ENOSYS; }
static inline int rproc_start(int id) { return -ENOSYS; }

Loading…
Cancel
Save