drivers: clock_control: lpc: syscon: add MCAN clock support

Add support for the LPC MCAN clock to the LPC SYSCON clock controller
driver.

Signed-off-by: Henrik Brix Andersen <henrik@brixandersen.dk>
This commit is contained in:
Henrik Brix Andersen 2021-05-31 22:13:49 +02:00 committed by Carles Cufí
commit abaf7cc70d
2 changed files with 20 additions and 1 deletions

View file

@ -18,6 +18,14 @@ LOG_MODULE_REGISTER(clock_control);
static int mcux_lpc_syscon_clock_control_on(const struct device *dev, static int mcux_lpc_syscon_clock_control_on(const struct device *dev,
clock_control_subsys_t sub_system) clock_control_subsys_t sub_system)
{ {
#if defined(CONFIG_CAN_MCUX_MCAN)
uint32_t clock_name = (uint32_t)sub_system;
if (clock_name == MCUX_MCAN_CLK) {
CLOCK_EnableClock(kCLOCK_Mcan);
}
#endif /* defined(CONFIG_CAN_MCUX_MCAN) */
return 0; return 0;
} }
@ -35,11 +43,15 @@ static int mcux_lpc_syscon_clock_control_get_subsys_rate(
#if defined(CONFIG_I2C_MCUX_FLEXCOMM) || \ #if defined(CONFIG_I2C_MCUX_FLEXCOMM) || \
defined(CONFIG_SPI_MCUX_FLEXCOMM) || \ defined(CONFIG_SPI_MCUX_FLEXCOMM) || \
defined(CONFIG_UART_MCUX_FLEXCOMM) || \ defined(CONFIG_UART_MCUX_FLEXCOMM) || \
defined(CONFIG_COUNTER_MCUX_CTIMER) defined(CONFIG_COUNTER_MCUX_CTIMER) || \
defined(CONFIG_CAN_MCUX_MCAN)
uint32_t clock_name = (uint32_t) sub_system; uint32_t clock_name = (uint32_t) sub_system;
switch (clock_name) { switch (clock_name) {
#if defined(CONFIG_I2C_MCUX_FLEXCOMM) || \
defined(CONFIG_SPI_MCUX_FLEXCOMM) || \
defined(CONFIG_UART_MCUX_FLEXCOMM)
case MCUX_FLEXCOMM0_CLK: case MCUX_FLEXCOMM0_CLK:
*rate = CLOCK_GetFlexCommClkFreq(0); *rate = CLOCK_GetFlexCommClkFreq(0);
break; break;
@ -84,6 +96,11 @@ static int mcux_lpc_syscon_clock_control_get_subsys_rate(
*rate = CLOCK_GetSdioClkFreq(1); *rate = CLOCK_GetSdioClkFreq(1);
break; break;
#endif #endif
#if defined(CONFIG_CAN_MCUX_MCAN)
case MCUX_MCAN_CLK:
*rate = CLOCK_GetMCanClkFreq();
break;
#endif /* defined(CONFIG_CAN_MCUX_MCAN) */
#if defined(CONFIG_COUNTER_MCUX_CTIMER) #if defined(CONFIG_COUNTER_MCUX_CTIMER)
case (MCUX_CTIMER0_CLK + MCUX_CTIMER_CLK_OFFSET): case (MCUX_CTIMER0_CLK + MCUX_CTIMER_CLK_OFFSET):
*rate = CLOCK_GetCTimerClkFreq(0); *rate = CLOCK_GetCTimerClkFreq(0);
@ -102,6 +119,7 @@ static int mcux_lpc_syscon_clock_control_get_subsys_rate(
break; break;
#endif #endif
} }
#endif
#endif #endif
return 0; return 0;

View file

@ -17,6 +17,7 @@
#define MCUX_FLEXCOMM7_CLK 7 #define MCUX_FLEXCOMM7_CLK 7
#define MCUX_PMIC_I2C_CLK 16 #define MCUX_PMIC_I2C_CLK 16
#define MCUX_HS_SPI_CLK 8 #define MCUX_HS_SPI_CLK 8
#define MCUX_MCAN_CLK 9
#define MCUX_USDHC1_CLK 9 #define MCUX_USDHC1_CLK 9
#define MCUX_USDHC2_CLK 10 #define MCUX_USDHC2_CLK 10