cpuconf: Boot the radiocore from the app in soc_late_init_hook
Boot the radiocore from the app in soc_late_init_hook. Signed-off-by: Sebastian Bøe <sebastian.boe@nordicsemi.no>
This commit is contained in:
parent
14a47cbe05
commit
d949932234
2 changed files with 38 additions and 0 deletions
|
@ -8,6 +8,7 @@ config SOC_SERIES_NRF54HX
|
||||||
select HAS_NRFX
|
select HAS_NRFX
|
||||||
select HAS_NORDIC_DRIVERS
|
select HAS_NORDIC_DRIVERS
|
||||||
select SOC_EARLY_INIT_HOOK if ARM
|
select SOC_EARLY_INIT_HOOK if ARM
|
||||||
|
select SOC_LATE_INIT_HOOK if SOC_NRF54H20_CPURAD_ENABLE
|
||||||
select NRF_PLATFORM_HALTIUM
|
select NRF_PLATFORM_HALTIUM
|
||||||
|
|
||||||
config SOC_NRF54H20_CPUAPP_COMMON
|
config SOC_NRF54H20_CPUAPP_COMMON
|
||||||
|
@ -66,6 +67,16 @@ config SOC_NRF54H20_CPURAD_COMMON
|
||||||
select HAS_PM
|
select HAS_PM
|
||||||
select HAS_POWEROFF
|
select HAS_POWEROFF
|
||||||
|
|
||||||
|
config SOC_NRF54H20_CPURAD_ENABLE
|
||||||
|
bool "Boot the nRF54H20 Radio core"
|
||||||
|
default y if NRF_802154_SER_HOST
|
||||||
|
depends on SOC_NRF54H20_CPUAPP
|
||||||
|
select NRF_IRONSIDE_CPUCONF_SERVICE
|
||||||
|
help
|
||||||
|
This will at application boot time enable clock to the
|
||||||
|
Radiocore, and also power will be requested to the Radiocore
|
||||||
|
subsystem. The Radiocore will then start executing instructions.
|
||||||
|
|
||||||
config SOC_NRF54H20_CPURAD
|
config SOC_NRF54H20_CPURAD
|
||||||
select SOC_NRF54H20_CPURAD_COMMON
|
select SOC_NRF54H20_CPURAD_COMMON
|
||||||
|
|
||||||
|
|
|
@ -22,6 +22,7 @@
|
||||||
#include <soc/nrfx_coredep.h>
|
#include <soc/nrfx_coredep.h>
|
||||||
#include <soc_lrcconf.h>
|
#include <soc_lrcconf.h>
|
||||||
#include <dmm.h>
|
#include <dmm.h>
|
||||||
|
#include <zephyr/drivers/firmware/nrf_ironside/cpuconf.h>
|
||||||
|
|
||||||
LOG_MODULE_REGISTER(soc, CONFIG_SOC_LOG_LEVEL);
|
LOG_MODULE_REGISTER(soc, CONFIG_SOC_LOG_LEVEL);
|
||||||
|
|
||||||
|
@ -43,6 +44,8 @@ sys_snode_t soc_node;
|
||||||
ADDRESS_DOMAIN_Msk | \
|
ADDRESS_DOMAIN_Msk | \
|
||||||
ADDRESS_BUS_Msk)))
|
ADDRESS_BUS_Msk)))
|
||||||
|
|
||||||
|
#define DT_NODELABEL_CPURAD_SLOT0_PARTITION DT_NODELABEL(cpurad_slot0_partition)
|
||||||
|
|
||||||
static void power_domain_init(void)
|
static void power_domain_init(void)
|
||||||
{
|
{
|
||||||
/*
|
/*
|
||||||
|
@ -156,6 +159,30 @@ void soc_early_init_hook(void)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#if defined(CONFIG_SOC_NRF54H20_CPURAD_ENABLE)
|
||||||
|
void soc_late_init_hook(void)
|
||||||
|
{
|
||||||
|
int err;
|
||||||
|
|
||||||
|
/* The msg will be used for communication prior to IPC
|
||||||
|
* communication being set up. But at this moment no such
|
||||||
|
* communication is required.
|
||||||
|
*/
|
||||||
|
uint8_t *msg = NULL;
|
||||||
|
size_t msg_size = 0;
|
||||||
|
|
||||||
|
void *radiocore_address =
|
||||||
|
(void *)(DT_REG_ADDR(DT_GPARENT(DT_NODELABEL_CPURAD_SLOT0_PARTITION)) +
|
||||||
|
DT_REG_ADDR(DT_NODELABEL_CPURAD_SLOT0_PARTITION));
|
||||||
|
|
||||||
|
/* Don't wait as this is not yet supported. */
|
||||||
|
bool cpu_wait = false;
|
||||||
|
|
||||||
|
err = ironside_cpuconf(NRF_PROCESSOR_RADIOCORE, radiocore_address, cpu_wait, msg, msg_size);
|
||||||
|
__ASSERT(err == 0, "err was %d", err);
|
||||||
|
}
|
||||||
|
#endif
|
||||||
|
|
||||||
void arch_busy_wait(uint32_t time_us)
|
void arch_busy_wait(uint32_t time_us)
|
||||||
{
|
{
|
||||||
nrfx_coredep_delay_us(time_us);
|
nrfx_coredep_delay_us(time_us);
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue