mirror of
https://github.com/u-boot/u-boot.git
synced 2025-05-07 12:49:24 +00:00
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>
This commit is contained in:
parent
880274192c
commit
81ae6e6d00
2 changed files with 28 additions and 0 deletions
|
@ -272,6 +272,25 @@ int rproc_init(void)
|
||||||
return ret;
|
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)
|
int rproc_load(int id, ulong addr, ulong size)
|
||||||
{
|
{
|
||||||
struct udevice *dev = NULL;
|
struct udevice *dev = NULL;
|
||||||
|
|
|
@ -85,6 +85,14 @@ struct dm_rproc_ops {
|
||||||
*/
|
*/
|
||||||
int rproc_init(void);
|
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
|
* rproc_is_initialized() - check to see if remoteproc devices are initialized
|
||||||
*
|
*
|
||||||
|
@ -150,6 +158,7 @@ int rproc_ping(int id);
|
||||||
int rproc_is_running(int id);
|
int rproc_is_running(int id);
|
||||||
#else
|
#else
|
||||||
static inline int rproc_init(void) { return -ENOSYS; }
|
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 bool rproc_is_initialized(void) { return false; }
|
||||||
static inline int rproc_load(int id, ulong addr, ulong size) { return -ENOSYS; }
|
static inline int rproc_load(int id, ulong addr, ulong size) { return -ENOSYS; }
|
||||||
static inline int rproc_start(int id) { return -ENOSYS; }
|
static inline int rproc_start(int id) { return -ENOSYS; }
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue