From 4a40a7c3d7700cfd94fdaffb5898c4bb05a74dc3 Mon Sep 17 00:00:00 2001 From: Peter van der Perk Date: Tue, 30 Jun 2020 12:17:29 +0200 Subject: [PATCH] S32K148EVB netdev lateinit to support Enet & CAN at the same time --- arch/arm/src/s32k1xx/s32k1xx_enet.h | 27 ++++++++++++++++++- arch/arm/src/s32k1xx/s32k1xx_start.c | 4 +++ .../s32k1xx/s32k148evb/src/s32k1xx_bringup.c | 24 +++++++++++++++++ 3 files changed, 54 insertions(+), 1 deletion(-) diff --git a/arch/arm/src/s32k1xx/s32k1xx_enet.h b/arch/arm/src/s32k1xx/s32k1xx_enet.h index ef89913af2f..fe7cbeae542 100644 --- a/arch/arm/src/s32k1xx/s32k1xx_enet.h +++ b/arch/arm/src/s32k1xx/s32k1xx_enet.h @@ -55,7 +55,7 @@ #define EMAC_INTF 0 /************************************************************************************ - * Public Functions + * Public Function Prototypes ************************************************************************************/ #ifndef __ASSEMBLY__ @@ -69,6 +69,8 @@ extern "C" #define EXTERN extern #endif +#if !defined(CONFIG_NETDEV_LATEINIT) + /************************************************************************************ * Function: arm_netinitialize * @@ -91,6 +93,29 @@ extern "C" void arm_netinitialize(void); +#else + +/************************************************************************************ + * Function: s32k1xx_netinitialize + * + * Description: + * Initialize the Ethernet controller and driver + * + * Input Parameters: + * intf - In the case where there are multiple EMACs, this value + * identifies which EMAC is to be initialized. + * + * Returned Value: + * OK on success; Negated errno on failure. + * + * Assumptions: + * + ************************************************************************************/ + +int s32k1xx_netinitialize(int intf); + +#endif + /************************************************************************************ * Function: s32k1xx_phy_boardinitialize * diff --git a/arch/arm/src/s32k1xx/s32k1xx_start.c b/arch/arm/src/s32k1xx/s32k1xx_start.c index 3ad3620279d..85c352d664f 100644 --- a/arch/arm/src/s32k1xx/s32k1xx_start.c +++ b/arch/arm/src/s32k1xx/s32k1xx_start.c @@ -69,6 +69,10 @@ #include "s32k1xx_progmem.h" #endif +#ifdef CONFIG_S32K1XX_EEEPROM +#include "s32k1xx_eeeprom.h" +#endif + /**************************************************************************** * Pre-processor Definitions ****************************************************************************/ diff --git a/boards/arm/s32k1xx/s32k148evb/src/s32k1xx_bringup.c b/boards/arm/s32k1xx/s32k148evb/src/s32k1xx_bringup.c index 178c9926d31..62a977e14ae 100644 --- a/boards/arm/s32k1xx/s32k148evb/src/s32k1xx_bringup.c +++ b/boards/arm/s32k1xx/s32k148evb/src/s32k1xx_bringup.c @@ -55,6 +55,10 @@ # include "s32k1xx_eeeprom.h" #endif +#ifdef CONFIG_S32K1XX_FLEXCAN +# include "s32k1xx_flexcan.h" +#endif + #include "s32k148evb.h" /**************************************************************************** @@ -113,6 +117,26 @@ int s32k1xx_bringup(void) /* Register EEEPROM block device */ s32k1xx_eeeprom_register(0, 4096); +#endif + +#ifdef CONFIG_NETDEV_LATEINIT + +# ifdef CONFIG_S32K1XX_ENET + s32k1xx_netinitialize(0); +# endif + +# ifdef CONFIG_S32K1XX_FLEXCAN0 + s32k1xx_caninitialize(0); +# endif + +# ifdef CONFIG_S32K1XX_FLEXCAN1 + s32k1xx_caninitialize(1); +# endif + +# ifdef CONFIG_S32K1XX_FLEXCAN2 + s32k1xx_caninitialize(2); +# endif + #endif return ret;