From 30fd340e744338cbcd73404f0cde84d44491184b Mon Sep 17 00:00:00 2001 From: Masayuki Ishikawa Date: Fri, 2 Jul 2021 23:01:23 +0900 Subject: [PATCH] boards: spresense: Add CONFIG_BOARD_LATE_INITIALIZE=y for SMP Summary: - I noticed that spresense:rndis_smp and spresense:wifi_smp do not boot due to the recent change in nx_start.c - As the result of the discussion, I understand that we have to add CONFIG_BOARD_LATE_INITIALIZE=y for SMP Impact: - spresense only Testing: - Tested with spresense:rndis_smp and spresense:wifi_smp Signed-off-by: Masayuki Ishikawa --- .../spresense/configs/rndis_smp/defconfig | 1 + .../cxd56xx/spresense/configs/smp/defconfig | 1 + .../spresense/configs/wifi_smp/defconfig | 1 + .../arm/cxd56xx/spresense/src/cxd56_appinit.c | 25 +++++++++++++++++++ 4 files changed, 28 insertions(+) diff --git a/boards/arm/cxd56xx/spresense/configs/rndis_smp/defconfig b/boards/arm/cxd56xx/spresense/configs/rndis_smp/defconfig index bbf70f9cf28..596e70909a1 100644 --- a/boards/arm/cxd56xx/spresense/configs/rndis_smp/defconfig +++ b/boards/arm/cxd56xx/spresense/configs/rndis_smp/defconfig @@ -22,6 +22,7 @@ CONFIG_AUDIO=y CONFIG_AUDIO_CXD56=y CONFIG_BOARDCTL_RESET=y CONFIG_BOARDCTL_USBDEVCTRL=y +CONFIG_BOARD_LATE_INITIALIZE=y CONFIG_BOARD_LOOPSPERMSEC=5434 CONFIG_BOOT_RUNFROMISRAM=y CONFIG_BUILTIN=y diff --git a/boards/arm/cxd56xx/spresense/configs/smp/defconfig b/boards/arm/cxd56xx/spresense/configs/smp/defconfig index 4c599b47cab..a956e1dd3ef 100644 --- a/boards/arm/cxd56xx/spresense/configs/smp/defconfig +++ b/boards/arm/cxd56xx/spresense/configs/smp/defconfig @@ -14,6 +14,7 @@ CONFIG_ARCH_CHIP="cxd56xx" CONFIG_ARCH_CHIP_CXD56XX=y CONFIG_ARCH_STACKDUMP=y CONFIG_ARMV7M_USEBASEPRI=y +CONFIG_BOARD_LATE_INITIALIZE=y CONFIG_BOARD_LOOPSPERMSEC=5434 CONFIG_BOOT_RUNFROMISRAM=y CONFIG_BUILTIN=y diff --git a/boards/arm/cxd56xx/spresense/configs/wifi_smp/defconfig b/boards/arm/cxd56xx/spresense/configs/wifi_smp/defconfig index e35bbc9f3f8..5b04caf5497 100644 --- a/boards/arm/cxd56xx/spresense/configs/wifi_smp/defconfig +++ b/boards/arm/cxd56xx/spresense/configs/wifi_smp/defconfig @@ -22,6 +22,7 @@ CONFIG_ARMV7M_USEBASEPRI=y CONFIG_AUDIO=y CONFIG_AUDIO_CXD56=y CONFIG_BOARDCTL_RESET=y +CONFIG_BOARD_LATE_INITIALIZE=y CONFIG_BOARD_LOOPSPERMSEC=5434 CONFIG_BOOT_RUNFROMISRAM=y CONFIG_BUILTIN=y diff --git a/boards/arm/cxd56xx/spresense/src/cxd56_appinit.c b/boards/arm/cxd56xx/spresense/src/cxd56_appinit.c index 1dd02758e58..eb0f656bdff 100644 --- a/boards/arm/cxd56xx/spresense/src/cxd56_appinit.c +++ b/boards/arm/cxd56xx/spresense/src/cxd56_appinit.c @@ -77,3 +77,28 @@ int board_app_initialize(uintptr_t arg) return cxd56_bringup(); #endif } + +/**************************************************************************** + * Name: board_late_initialize + * + * Description: + * If CONFIG_BOARD_LATE_INITIALIZE is selected, then an additional + * initialization call will be performed in the boot-up sequence to a + * function called board_late_initialize(). board_late_initialize() + * will be called immediately after up_initialize() is called and just + * before the initial application is started. This additional + * initialization phase may be used, for example, to initialize board- + * specific device drivers. + * + ****************************************************************************/ + +#ifdef CONFIG_BOARD_LATE_INITIALIZE +void board_late_initialize(void) +{ + /* Perform board bring-up here instead of from the + * board_app_initialize(). + */ + + cxd56_bringup(); +} +#endif