mirror of
https://github.com/u-boot/u-boot.git
synced 2025-04-16 01:44:34 +00:00
cpu: add release_core callback
Add a new callback release_core to the cpu_ops, which is used to release a CPU core to run baremetal or RTOS application on a SoC with multiple CPU cores. Signed-off-by: Hou Zhiqiang <Zhiqiang.Hou@nxp.com> Reviewed-by: Simon Glass <sjg@chromium.org>
This commit is contained in:
parent
3cdcdcecac
commit
f2c306cd99
2 changed files with 25 additions and 0 deletions
|
@ -104,6 +104,16 @@ int cpu_get_vendor(const struct udevice *dev, char *buf, int size)
|
|||
return ops->get_vendor(dev, buf, size);
|
||||
}
|
||||
|
||||
int cpu_release_core(const struct udevice *dev, phys_addr_t addr)
|
||||
{
|
||||
struct cpu_ops *ops = cpu_get_ops(dev);
|
||||
|
||||
if (!ops->release_core)
|
||||
return -ENOSYS;
|
||||
|
||||
return ops->release_core(dev, addr);
|
||||
}
|
||||
|
||||
U_BOOT_DRIVER(cpu_bus) = {
|
||||
.name = "cpu_bus",
|
||||
.id = UCLASS_SIMPLE_BUS,
|
||||
|
|
|
@ -102,6 +102,15 @@ struct cpu_ops {
|
|||
* if not.
|
||||
*/
|
||||
int (*is_current)(struct udevice *dev);
|
||||
|
||||
/**
|
||||
* release_core() - Relase a CPU core to the given address to run application
|
||||
*
|
||||
* @dev: Device to check (UCLASS_CPU)
|
||||
* @addr: Address to relese the CPU core
|
||||
* @return 0 if OK, -ve on error
|
||||
*/
|
||||
int (*release_core)(const struct udevice *dev, phys_addr_t addr);
|
||||
};
|
||||
|
||||
#define cpu_get_ops(dev) ((struct cpu_ops *)(dev)->driver->ops)
|
||||
|
@ -164,4 +173,10 @@ int cpu_is_current(struct udevice *cpu);
|
|||
*/
|
||||
struct udevice *cpu_get_current_dev(void);
|
||||
|
||||
/**
|
||||
* cpu_release_core() - Relase a CPU core to the given address to run application
|
||||
*
|
||||
* @return 0 if OK, -ve on error
|
||||
*/
|
||||
int cpu_release_core(const struct udevice *dev, phys_addr_t addr);
|
||||
#endif
|
||||
|
|
Loading…
Add table
Reference in a new issue