diff --git a/dts/arm/nxp/nxp_imx7d_m4.dtsi b/dts/arm/nxp/nxp_imx7d_m4.dtsi index e4249649c37..4669e775cd8 100644 --- a/dts/arm/nxp/nxp_imx7d_m4.dtsi +++ b/dts/arm/nxp/nxp_imx7d_m4.dtsi @@ -260,6 +260,16 @@ status = "disabled"; }; + mub:mu@30ab0000 { + compatible = "nxp,imx-mu"; + reg = <0x30ab0000 0x4000>; + interrupts = <97 0>; + rdc = ; + label = "MU_B"; + status = "disabled"; + }; + i2c1: i2c@30a20000 { compatible = "fsl,imx7d-i2c"; clock-frequency = ; diff --git a/soc/arm/nxp_imx/mcimx7_m4/Kconfig.defconfig.mcimx7_m4 b/soc/arm/nxp_imx/mcimx7_m4/Kconfig.defconfig.mcimx7_m4 index f13a5e109f2..8d8b2427c68 100644 --- a/soc/arm/nxp_imx/mcimx7_m4/Kconfig.defconfig.mcimx7_m4 +++ b/soc/arm/nxp_imx/mcimx7_m4/Kconfig.defconfig.mcimx7_m4 @@ -57,4 +57,11 @@ config PWM_IMX endif # PWM +if IPM + +config IPM_IMX + default y + +endif # IPM + endif # SOC_MCIMX7_M4 diff --git a/soc/arm/nxp_imx/mcimx7_m4/dts_fixup.h b/soc/arm/nxp_imx/mcimx7_m4/dts_fixup.h index 0154f65150d..c54bda0509f 100644 --- a/soc/arm/nxp_imx/mcimx7_m4/dts_fixup.h +++ b/soc/arm/nxp_imx/mcimx7_m4/dts_fixup.h @@ -6,105 +6,110 @@ /* SoC level DTS fixup file */ -#define DT_NUM_IRQ_PRIO_BITS DT_ARM_V7M_NVIC_E000E100_ARM_NUM_IRQ_PRIORITY_BITS +#define DT_NUM_IRQ_PRIO_BITS DT_ARM_V7M_NVIC_E000E100_ARM_NUM_IRQ_PRIORITY_BITS -#define DT_GPIO_IMX_PORT_1_NAME DT_NXP_IMX_GPIO_30200000_LABEL +#define DT_GPIO_IMX_PORT_1_NAME DT_NXP_IMX_GPIO_30200000_LABEL #define DT_GPIO_IMX_PORT_1_BASE_ADDRESS DT_NXP_IMX_GPIO_30200000_BASE_ADDRESS -#define DT_GPIO_IMX_PORT_1_IRQ_0 DT_NXP_IMX_GPIO_30200000_IRQ_0 -#define DT_GPIO_IMX_PORT_1_IRQ_0_PRI DT_NXP_IMX_GPIO_30200000_IRQ_0_PRIORITY -#define DT_GPIO_IMX_PORT_1_IRQ_1 DT_NXP_IMX_GPIO_30200000_IRQ_1 -#define DT_GPIO_IMX_PORT_1_IRQ_1_PRI DT_NXP_IMX_GPIO_30200000_IRQ_1_PRIORITY +#define DT_GPIO_IMX_PORT_1_IRQ_0 DT_NXP_IMX_GPIO_30200000_IRQ_0 +#define DT_GPIO_IMX_PORT_1_IRQ_0_PRI DT_NXP_IMX_GPIO_30200000_IRQ_0_PRIORITY +#define DT_GPIO_IMX_PORT_1_IRQ_1 DT_NXP_IMX_GPIO_30200000_IRQ_1 +#define DT_GPIO_IMX_PORT_1_IRQ_1_PRI DT_NXP_IMX_GPIO_30200000_IRQ_1_PRIORITY -#define DT_GPIO_IMX_PORT_2_NAME DT_NXP_IMX_GPIO_30210000_LABEL +#define DT_GPIO_IMX_PORT_2_NAME DT_NXP_IMX_GPIO_30210000_LABEL #define DT_GPIO_IMX_PORT_2_BASE_ADDRESS DT_NXP_IMX_GPIO_30210000_BASE_ADDRESS -#define DT_GPIO_IMX_PORT_2_IRQ_0 DT_NXP_IMX_GPIO_30210000_IRQ_0 -#define DT_GPIO_IMX_PORT_2_IRQ_0_PRI DT_NXP_IMX_GPIO_30210000_IRQ_0_PRIORITY -#define DT_GPIO_IMX_PORT_2_IRQ_1 DT_NXP_IMX_GPIO_30210000_IRQ_1 -#define DT_GPIO_IMX_PORT_2_IRQ_1_PRI DT_NXP_IMX_GPIO_30210000_IRQ_1_PRIORITY +#define DT_GPIO_IMX_PORT_2_IRQ_0 DT_NXP_IMX_GPIO_30210000_IRQ_0 +#define DT_GPIO_IMX_PORT_2_IRQ_0_PRI DT_NXP_IMX_GPIO_30210000_IRQ_0_PRIORITY +#define DT_GPIO_IMX_PORT_2_IRQ_1 DT_NXP_IMX_GPIO_30210000_IRQ_1 +#define DT_GPIO_IMX_PORT_2_IRQ_1_PRI DT_NXP_IMX_GPIO_30210000_IRQ_1_PRIORITY -#define DT_GPIO_IMX_PORT_3_NAME DT_NXP_IMX_GPIO_30220000_LABEL +#define DT_GPIO_IMX_PORT_3_NAME DT_NXP_IMX_GPIO_30220000_LABEL #define DT_GPIO_IMX_PORT_3_BASE_ADDRESS DT_NXP_IMX_GPIO_30220000_BASE_ADDRESS -#define DT_GPIO_IMX_PORT_3_IRQ_0 DT_NXP_IMX_GPIO_30220000_IRQ_0 -#define DT_GPIO_IMX_PORT_3_IRQ_0_PRI DT_NXP_IMX_GPIO_30220000_IRQ_0_PRIORITY -#define DT_GPIO_IMX_PORT_3_IRQ_1 DT_NXP_IMX_GPIO_30220000_IRQ_1 -#define DT_GPIO_IMX_PORT_3_IRQ_1_PRI DT_NXP_IMX_GPIO_30220000_IRQ_1_PRIORITY +#define DT_GPIO_IMX_PORT_3_IRQ_0 DT_NXP_IMX_GPIO_30220000_IRQ_0 +#define DT_GPIO_IMX_PORT_3_IRQ_0_PRI DT_NXP_IMX_GPIO_30220000_IRQ_0_PRIORITY +#define DT_GPIO_IMX_PORT_3_IRQ_1 DT_NXP_IMX_GPIO_30220000_IRQ_1 +#define DT_GPIO_IMX_PORT_3_IRQ_1_PRI DT_NXP_IMX_GPIO_30220000_IRQ_1_PRIORITY -#define DT_GPIO_IMX_PORT_4_NAME DT_NXP_IMX_GPIO_30230000_LABEL +#define DT_GPIO_IMX_PORT_4_NAME DT_NXP_IMX_GPIO_30230000_LABEL #define DT_GPIO_IMX_PORT_4_BASE_ADDRESS DT_NXP_IMX_GPIO_30230000_BASE_ADDRESS -#define DT_GPIO_IMX_PORT_4_IRQ_0 DT_NXP_IMX_GPIO_30230000_IRQ_0 -#define DT_GPIO_IMX_PORT_4_IRQ_0_PRI DT_NXP_IMX_GPIO_30230000_IRQ_0_PRIORITY -#define DT_GPIO_IMX_PORT_4_IRQ_1 DT_NXP_IMX_GPIO_30230000_IRQ_1 -#define DT_GPIO_IMX_PORT_4_IRQ_1_PRI DT_NXP_IMX_GPIO_30230000_IRQ_1_PRIORITY +#define DT_GPIO_IMX_PORT_4_IRQ_0 DT_NXP_IMX_GPIO_30230000_IRQ_0 +#define DT_GPIO_IMX_PORT_4_IRQ_0_PRI DT_NXP_IMX_GPIO_30230000_IRQ_0_PRIORITY +#define DT_GPIO_IMX_PORT_4_IRQ_1 DT_NXP_IMX_GPIO_30230000_IRQ_1 +#define DT_GPIO_IMX_PORT_4_IRQ_1_PRI DT_NXP_IMX_GPIO_30230000_IRQ_1_PRIORITY -#define DT_GPIO_IMX_PORT_5_NAME DT_NXP_IMX_GPIO_30240000_LABEL +#define DT_GPIO_IMX_PORT_5_NAME DT_NXP_IMX_GPIO_30240000_LABEL #define DT_GPIO_IMX_PORT_5_BASE_ADDRESS DT_NXP_IMX_GPIO_30240000_BASE_ADDRESS -#define DT_GPIO_IMX_PORT_5_IRQ_0 DT_NXP_IMX_GPIO_30240000_IRQ_0 -#define DT_GPIO_IMX_PORT_5_IRQ_0_PRI DT_NXP_IMX_GPIO_30240000_IRQ_0_PRIORITY -#define DT_GPIO_IMX_PORT_5_IRQ_1 DT_NXP_IMX_GPIO_30240000_IRQ_1 -#define DT_GPIO_IMX_PORT_5_IRQ_1_PRI DT_NXP_IMX_GPIO_30240000_IRQ_1_PRIORITY +#define DT_GPIO_IMX_PORT_5_IRQ_0 DT_NXP_IMX_GPIO_30240000_IRQ_0 +#define DT_GPIO_IMX_PORT_5_IRQ_0_PRI DT_NXP_IMX_GPIO_30240000_IRQ_0_PRIORITY +#define DT_GPIO_IMX_PORT_5_IRQ_1 DT_NXP_IMX_GPIO_30240000_IRQ_1 +#define DT_GPIO_IMX_PORT_5_IRQ_1_PRI DT_NXP_IMX_GPIO_30240000_IRQ_1_PRIORITY -#define DT_GPIO_IMX_PORT_6_NAME DT_NXP_IMX_GPIO_30250000_LABEL +#define DT_GPIO_IMX_PORT_6_NAME DT_NXP_IMX_GPIO_30250000_LABEL #define DT_GPIO_IMX_PORT_6_BASE_ADDRESS DT_NXP_IMX_GPIO_30250000_BASE_ADDRESS -#define DT_GPIO_IMX_PORT_6_IRQ_0 DT_NXP_IMX_GPIO_30250000_IRQ_0 -#define DT_GPIO_IMX_PORT_6_IRQ_0_PRI DT_NXP_IMX_GPIO_30250000_IRQ_0_PRIORITY -#define DT_GPIO_IMX_PORT_6_IRQ_1 DT_NXP_IMX_GPIO_30250000_IRQ_1 -#define DT_GPIO_IMX_PORT_6_IRQ_1_PRI DT_NXP_IMX_GPIO_30250000_IRQ_1_PRIORITY +#define DT_GPIO_IMX_PORT_6_IRQ_0 DT_NXP_IMX_GPIO_30250000_IRQ_0 +#define DT_GPIO_IMX_PORT_6_IRQ_0_PRI DT_NXP_IMX_GPIO_30250000_IRQ_0_PRIORITY +#define DT_GPIO_IMX_PORT_6_IRQ_1 DT_NXP_IMX_GPIO_30250000_IRQ_1 +#define DT_GPIO_IMX_PORT_6_IRQ_1_PRI DT_NXP_IMX_GPIO_30250000_IRQ_1_PRIORITY -#define DT_GPIO_IMX_PORT_7_NAME DT_NXP_IMX_GPIO_30260000_LABEL +#define DT_GPIO_IMX_PORT_7_NAME DT_NXP_IMX_GPIO_30260000_LABEL #define DT_GPIO_IMX_PORT_7_BASE_ADDRESS DT_NXP_IMX_GPIO_30260000_BASE_ADDRESS -#define DT_GPIO_IMX_PORT_7_IRQ_0 DT_NXP_IMX_GPIO_30260000_IRQ_0 -#define DT_GPIO_IMX_PORT_7_IRQ_0_PRI DT_NXP_IMX_GPIO_30260000_IRQ_0_PRIORITY -#define DT_GPIO_IMX_PORT_7_IRQ_1 DT_NXP_IMX_GPIO_30260000_IRQ_1 -#define DT_GPIO_IMX_PORT_7_IRQ_1_PRI DT_NXP_IMX_GPIO_30260000_IRQ_1_PRIORITY +#define DT_GPIO_IMX_PORT_7_IRQ_0 DT_NXP_IMX_GPIO_30260000_IRQ_0 +#define DT_GPIO_IMX_PORT_7_IRQ_0_PRI DT_NXP_IMX_GPIO_30260000_IRQ_0_PRIORITY +#define DT_GPIO_IMX_PORT_7_IRQ_1 DT_NXP_IMX_GPIO_30260000_IRQ_1 +#define DT_GPIO_IMX_PORT_7_IRQ_1_PRI DT_NXP_IMX_GPIO_30260000_IRQ_1_PRIORITY -#define DT_UART_IMX_UART_1_NAME DT_NXP_IMX_UART_30860000_LABEL +#define DT_UART_IMX_UART_1_NAME DT_NXP_IMX_UART_30860000_LABEL #define DT_UART_IMX_UART_1_BASE_ADDRESS DT_NXP_IMX_UART_30860000_BASE_ADDRESS -#define DT_UART_IMX_UART_1_BAUD_RATE DT_NXP_IMX_UART_30860000_CURRENT_SPEED -#define DT_UART_IMX_UART_1_IRQ_NUM DT_NXP_IMX_UART_30860000_IRQ_0 -#define DT_UART_IMX_UART_1_IRQ_PRI DT_NXP_IMX_UART_30860000_IRQ_0_PRIORITY -#define DT_UART_IMX_UART_1_MODEM_MODE DT_NXP_IMX_UART_30860000_MODEM_MODE +#define DT_UART_IMX_UART_1_BAUD_RATE DT_NXP_IMX_UART_30860000_CURRENT_SPEED +#define DT_UART_IMX_UART_1_IRQ_NUM DT_NXP_IMX_UART_30860000_IRQ_0 +#define DT_UART_IMX_UART_1_IRQ_PRI DT_NXP_IMX_UART_30860000_IRQ_0_PRIORITY +#define DT_UART_IMX_UART_1_MODEM_MODE DT_NXP_IMX_UART_30860000_MODEM_MODE -#define DT_UART_IMX_UART_2_NAME DT_NXP_IMX_UART_30890000_LABEL +#define DT_UART_IMX_UART_2_NAME DT_NXP_IMX_UART_30890000_LABEL #define DT_UART_IMX_UART_2_BASE_ADDRESS DT_NXP_IMX_UART_30890000_BASE_ADDRESS -#define DT_UART_IMX_UART_2_BAUD_RATE DT_NXP_IMX_UART_30890000_CURRENT_SPEED -#define DT_UART_IMX_UART_2_IRQ_NUM DT_NXP_IMX_UART_30890000_IRQ_0 -#define DT_UART_IMX_UART_2_IRQ_PRI DT_NXP_IMX_UART_30890000_IRQ_0_PRIORITY -#define DT_UART_IMX_UART_2_MODEM_MODE DT_NXP_IMX_UART_30890000_MODEM_MODE +#define DT_UART_IMX_UART_2_BAUD_RATE DT_NXP_IMX_UART_30890000_CURRENT_SPEED +#define DT_UART_IMX_UART_2_IRQ_NUM DT_NXP_IMX_UART_30890000_IRQ_0 +#define DT_UART_IMX_UART_2_IRQ_PRI DT_NXP_IMX_UART_30890000_IRQ_0_PRIORITY +#define DT_UART_IMX_UART_2_MODEM_MODE DT_NXP_IMX_UART_30890000_MODEM_MODE -#define DT_UART_IMX_UART_3_NAME DT_NXP_IMX_UART_30880000_LABEL +#define DT_UART_IMX_UART_3_NAME DT_NXP_IMX_UART_30880000_LABEL #define DT_UART_IMX_UART_3_BASE_ADDRESS DT_NXP_IMX_UART_30880000_BASE_ADDRESS -#define DT_UART_IMX_UART_3_BAUD_RATE DT_NXP_IMX_UART_30880000_CURRENT_SPEED -#define DT_UART_IMX_UART_3_IRQ_NUM DT_NXP_IMX_UART_30880000_IRQ_0 -#define DT_UART_IMX_UART_3_IRQ_PRI DT_NXP_IMX_UART_30880000_IRQ_0_PRIORITY -#define DT_UART_IMX_UART_3_MODEM_MODE DT_NXP_IMX_UART_30880000_MODEM_MODE +#define DT_UART_IMX_UART_3_BAUD_RATE DT_NXP_IMX_UART_30880000_CURRENT_SPEED +#define DT_UART_IMX_UART_3_IRQ_NUM DT_NXP_IMX_UART_30880000_IRQ_0 +#define DT_UART_IMX_UART_3_IRQ_PRI DT_NXP_IMX_UART_30880000_IRQ_0_PRIORITY +#define DT_UART_IMX_UART_3_MODEM_MODE DT_NXP_IMX_UART_30880000_MODEM_MODE -#define DT_UART_IMX_UART_4_NAME DT_NXP_IMX_UART_30A60000_LABEL +#define DT_UART_IMX_UART_4_NAME DT_NXP_IMX_UART_30A60000_LABEL #define DT_UART_IMX_UART_4_BASE_ADDRESS DT_NXP_IMX_UART_30A60000_BASE_ADDRESS -#define DT_UART_IMX_UART_4_BAUD_RATE DT_NXP_IMX_UART_30A60000_CURRENT_SPEED -#define DT_UART_IMX_UART_4_IRQ_NUM DT_NXP_IMX_UART_30A60000_IRQ_0 -#define DT_UART_IMX_UART_4_IRQ_PRI DT_NXP_IMX_UART_30A60000_IRQ_0_PRIORITY -#define DT_UART_IMX_UART_4_MODEM_MODE DT_NXP_IMX_UART_30A60000_MODEM_MODE +#define DT_UART_IMX_UART_4_BAUD_RATE DT_NXP_IMX_UART_30A60000_CURRENT_SPEED +#define DT_UART_IMX_UART_4_IRQ_NUM DT_NXP_IMX_UART_30A60000_IRQ_0 +#define DT_UART_IMX_UART_4_IRQ_PRI DT_NXP_IMX_UART_30A60000_IRQ_0_PRIORITY +#define DT_UART_IMX_UART_4_MODEM_MODE DT_NXP_IMX_UART_30A60000_MODEM_MODE -#define DT_UART_IMX_UART_5_NAME DT_NXP_IMX_UART_30A70000_LABEL +#define DT_UART_IMX_UART_5_NAME DT_NXP_IMX_UART_30A70000_LABEL #define DT_UART_IMX_UART_5_BASE_ADDRESS DT_NXP_IMX_UART_30A70000_BASE_ADDRESS -#define DT_UART_IMX_UART_5_BAUD_RATE DT_NXP_IMX_UART_30A70000_CURRENT_SPEED -#define DT_UART_IMX_UART_5_IRQ_NUM DT_NXP_IMX_UART_30A70000_IRQ_0 -#define DT_UART_IMX_UART_5_IRQ_PRI DT_NXP_IMX_UART_30A70000_IRQ_0_PRIORITY -#define DT_UART_IMX_UART_5_MODEM_MODE DT_NXP_IMX_UART_30A70000_MODEM_MODE +#define DT_UART_IMX_UART_5_BAUD_RATE DT_NXP_IMX_UART_30A70000_CURRENT_SPEED +#define DT_UART_IMX_UART_5_IRQ_NUM DT_NXP_IMX_UART_30A70000_IRQ_0 +#define DT_UART_IMX_UART_5_IRQ_PRI DT_NXP_IMX_UART_30A70000_IRQ_0_PRIORITY +#define DT_UART_IMX_UART_5_MODEM_MODE DT_NXP_IMX_UART_30A70000_MODEM_MODE -#define DT_UART_IMX_UART_6_NAME DT_NXP_IMX_UART_30A80000_LABEL +#define DT_UART_IMX_UART_6_NAME DT_NXP_IMX_UART_30A80000_LABEL #define DT_UART_IMX_UART_6_BASE_ADDRESS DT_NXP_IMX_UART_30A80000_BASE_ADDRESS -#define DT_UART_IMX_UART_6_BAUD_RATE DT_NXP_IMX_UART_30A80000_CURRENT_SPEED -#define DT_UART_IMX_UART_6_IRQ_NUM DT_NXP_IMX_UART_30A80000_IRQ_0 -#define DT_UART_IMX_UART_6_IRQ_PRI DT_NXP_IMX_UART_30A80000_IRQ_0_PRIORITY -#define DT_UART_IMX_UART_6_MODEM_MODE DT_NXP_IMX_UART_30A80000_MODEM_MODE +#define DT_UART_IMX_UART_6_BAUD_RATE DT_NXP_IMX_UART_30A80000_CURRENT_SPEED +#define DT_UART_IMX_UART_6_IRQ_NUM DT_NXP_IMX_UART_30A80000_IRQ_0 +#define DT_UART_IMX_UART_6_IRQ_PRI DT_NXP_IMX_UART_30A80000_IRQ_0_PRIORITY +#define DT_UART_IMX_UART_6_MODEM_MODE DT_NXP_IMX_UART_30A80000_MODEM_MODE -#define DT_UART_IMX_UART_7_NAME DT_NXP_IMX_UART_30A90000_LABEL +#define DT_UART_IMX_UART_7_NAME DT_NXP_IMX_UART_30A90000_LABEL #define DT_UART_IMX_UART_7_BASE_ADDRESS DT_NXP_IMX_UART_30A90000_BASE_ADDRESS -#define DT_UART_IMX_UART_7_BAUD_RATE DT_NXP_IMX_UART_30A90000_CURRENT_SPEED -#define DT_UART_IMX_UART_7_IRQ_NUM DT_NXP_IMX_UART_30A90000_IRQ_0 -#define DT_UART_IMX_UART_7_IRQ_PRI DT_NXP_IMX_UART_30A90000_IRQ_0_PRIORITY -#define DT_UART_IMX_UART_7_MODEM_MODE DT_NXP_IMX_UART_30A90000_MODEM_MODE +#define DT_UART_IMX_UART_7_BAUD_RATE DT_NXP_IMX_UART_30A90000_CURRENT_SPEED +#define DT_UART_IMX_UART_7_IRQ_NUM DT_NXP_IMX_UART_30A90000_IRQ_0 +#define DT_UART_IMX_UART_7_IRQ_PRI DT_NXP_IMX_UART_30A90000_IRQ_0_PRIORITY +#define DT_UART_IMX_UART_7_MODEM_MODE DT_NXP_IMX_UART_30A90000_MODEM_MODE + +#define DT_IPM_IMX_MU_B_BASE_ADDRESS DT_NXP_IMX_MU_30AB0000_BASE_ADDRESS +#define DT_IPM_IMX_MU_B_IRQ DT_NXP_IMX_MU_30AB0000_IRQ_0 +#define DT_IPM_IMX_MU_B_IRQ_PRI DT_NXP_IMX_MU_30AB0000_IRQ_0_PRIORITY +#define DT_IPM_IMX_MU_B_NAME DT_NXP_IMX_MU_30AB0000_LABEL /* End of SoC Level DTS fixup file */ diff --git a/soc/arm/nxp_imx/mcimx7_m4/soc.c b/soc/arm/nxp_imx/mcimx7_m4/soc.c index 7ca693eefe9..bd8c22751eb 100644 --- a/soc/arm/nxp_imx/mcimx7_m4/soc.c +++ b/soc/arm/nxp_imx/mcimx7_m4/soc.c @@ -210,6 +210,17 @@ static void nxp_mcimx7_pwm_config(void) } #endif /* CONFIG_PWM_IMX */ +#ifdef CONFIG_IPM_IMX +static void nxp_mcimx7_mu_config(void) +{ + /* Set access to MU B for M4 core */ + RDC_SetPdapAccess(RDC, rdcPdapMuB, MU_B_RDC, false, false); + + /* Enable clock gate for MU*/ + CCM_ControlGate(CCM, ccmCcgrGateMu, ccmClockNeededRun); +} +#endif /* CONFIG_IPM_IMX */ + static int nxp_mcimx7_init(struct device *arg) { ARG_UNUSED(arg); @@ -236,6 +247,10 @@ static int nxp_mcimx7_init(struct device *arg) nxp_mcimx7_pwm_config(); #endif /* CONFIG_PWM_IMX */ +#ifdef CONFIG_IPM_IMX + nxp_mcimx7_mu_config(); +#endif /* CONFIG_IPM_IMX */ + return 0; }