[PATCHv1 1/5] cpu: add release_core callback
Simon Glass
sjg at chromium.org
Wed Jul 24 16:37:13 CEST 2024
Hi Zhiqiang,
On Tue, 23 Jul 2024 at 08:43, Zhiqiang Hou <Zhiqiang.Hou at nxp.com> wrote:
>
> From: Hou Zhiqiang <Zhiqiang.Hou at nxp.com>
>
> 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 at nxp.com>
> ---
> drivers/cpu/cpu-uclass.c | 10 ++++++++++
> include/cpu.h | 15 +++++++++++++++
> 2 files changed, 25 insertions(+)
>
> diff --git a/drivers/cpu/cpu-uclass.c b/drivers/cpu/cpu-uclass.c
> index 16f8f2e521..2c8e46c05e 100644
> --- a/drivers/cpu/cpu-uclass.c
> +++ b/drivers/cpu/cpu-uclass.c
> @@ -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,
> diff --git a/include/cpu.h b/include/cpu.h
> index 2077ff3063..0018910d61 100644
> --- a/include/cpu.h
> +++ b/include/cpu.h
> @@ -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
> --
> 2.17.1
>
Please also add a test for this callback to test/dm/cpu.c
Regards,
Simon
More information about the U-Boot
mailing list