Skip to content

Commit e243beb

Browse files
EmilioCBendecsny
andcommitted
soc: nxp: mcxw: Enable EDMA
Add DMA nodes for MCXW7X SOC DTS. This SOC used TRIGMUX instead of DMAMUX. Enable EDMAv3 for the frdm_mcxw71 and frdm_mcxw72 platforms. Signed-off-by: Emilio Benavente <[email protected]> Co-authored-by: Declan Snyder <[email protected]>
1 parent 8dded44 commit e243beb

File tree

11 files changed

+65
-1
lines changed

11 files changed

+65
-1
lines changed

boards/nxp/frdm_mcxw71/frdm_mcxw71.dts

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -198,6 +198,10 @@
198198
status = "okay";
199199
};
200200

201+
&edma {
202+
status = "okay";
203+
};
204+
201205
&tpm0 {
202206
status = "okay";
203207
pinctrl-0 = <&pinmux_tpm0>;

boards/nxp/frdm_mcxw71/frdm_mcxw71.yaml

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -11,6 +11,7 @@ supported:
1111
- adc
1212
- can
1313
- counter
14+
- dma
1415
- flash
1516
- flexio
1617
- gpio

boards/nxp/frdm_mcxw72/frdm_mcxw72_mcxw727c_cpu0.dts

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -191,3 +191,7 @@
191191
reg = <0x19>;
192192
};
193193
};
194+
195+
&edma {
196+
status = "okay";
197+
};

boards/nxp/frdm_mcxw72/frdm_mcxw72_mcxw727c_cpu0.yaml

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -11,6 +11,7 @@ supported:
1111
- adc
1212
- can
1313
- counter
14+
- dma
1415
- gpio
1516
- flexio
1617
- i2c

dts/arm/nxp/nxp_mcxw7x_common.dtsi

Lines changed: 19 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -180,6 +180,8 @@
180180
reg = <0x38000 0x34>;
181181
interrupts = <44 0>;
182182
clocks = <&scg SCG_K4_FIRC_CLK 0xe0>;
183+
dmas = <&edma 0 32>, <&edma 1 31>;
184+
dma-names = "tx", "rx";
183185
status = "disabled";
184186
};
185187

@@ -188,6 +190,8 @@
188190
reg = <0x39000 0x34>;
189191
interrupts = <45 0>;
190192
clocks = <&scg SCG_K4_FIRC_CLK 0xe4>;
193+
dmas = <&edma 2 34>, <&edma 3 33>;
194+
dma-names = "tx", "rx";
191195
status = "disabled";
192196
};
193197

@@ -388,6 +392,21 @@
388392
};
389393
};
390394

395+
edma: dma-controller@2000 {
396+
compatible = "nxp,mcux-edma";
397+
#dma-cells = <2>;
398+
nxp,version = <3>;
399+
dma-channels = <16>;
400+
dma-requests = <64>;
401+
reg = <0x2000 0x140>;
402+
clocks = <&scg SCG_K4_EDMA_CLK 0x410>;
403+
interrupts = <2 0>, <3 0>, <4 0>, <5 0>,
404+
<6 0>, <7 0>, <8 0>, <9 0>,
405+
<10 0>, <11 0>, <12 0>, <13 0>,
406+
<14 0>, <15 0>, <16 0>, <17 0>;
407+
status = "disabled";
408+
};
409+
391410
ewm0: ewm@13000 {
392411
compatible = "nxp,ewm";
393412
reg = <0x13000 0x6>;

include/zephyr/dt-bindings/clock/scg_k4.h

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -15,5 +15,6 @@
1515
#define SCG_K4_FIRC_CLK 7U
1616
#define SCG_K4_RTCOSC_CLK 8U
1717
#define SCG_K4_FLEXIO_CLK 9U
18+
#define SCG_K4_EDMA_CLK 10U
1819

1920
#endif /* ZEPHYR_INCLUDE_DT_BINDINGS_CLOCK_SCG_K4_H_ */

modules/hal_nxp/mcux/mcux-sdk-ng/drivers/drivers.cmake

Lines changed: 15 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -57,7 +57,6 @@ set_variable_ifdef(CONFIG_DAC_MCUX_DAC CONFIG_MCUX_COMPONENT_driver.dac
5757
set_variable_ifdef(CONFIG_DAC_MCUX_DAC12 CONFIG_MCUX_COMPONENT_driver.dac12)
5858
set_variable_ifdef(CONFIG_DAC_MCUX_DAC32 CONFIG_MCUX_COMPONENT_driver.dac32)
5959
set_variable_ifdef(CONFIG_DMA_MCUX_EDMA CONFIG_MCUX_COMPONENT_driver.dmamux)
60-
set_variable_ifdef(CONFIG_DMA_MCUX_EDMA_V3 CONFIG_MCUX_COMPONENT_driver.dmamux)
6160
set_variable_ifdef(CONFIG_DMA_MCUX_EDMA CONFIG_MCUX_COMPONENT_driver.edma)
6261
set_variable_ifdef(CONFIG_DMA_MCUX_EDMA_V3 CONFIG_MCUX_COMPONENT_driver.dma3)
6362
set_variable_ifdef(CONFIG_DMA_MCUX_EDMA_V4 CONFIG_MCUX_COMPONENT_driver.edma4)
@@ -229,6 +228,14 @@ if(CONFIG_SOC_MCXW716C OR CONFIG_SOC_MCXW727C OR CONFIG_SOC_MCXN947 OR CONFIG_SO
229228
set_variable_ifdef(CONFIG_SOC_FLASH_MCUX CONFIG_MCUX_COMPONENT_driver.flash_k4)
230229
endif()
231230

231+
if(CONFIG_SOC_FAMILY_MCXW OR CONFIG_SOC_MCXN547)
232+
if(CONFIG_DMA)
233+
zephyr_include_directories(${MCUX_SDK_NG_DIR}/drivers/trgmux)
234+
set_variable_ifdef(CONFIG_MBOX_NXP_IMX_MU CONFIG_MCUX_COMPONENT_driver.mu)
235+
set(CONFIG_MCUX_COMPONENT_driver.trgmux ON)
236+
endif()
237+
endif()
238+
232239
if(CONFIG_SOC_SERIES_LPC51U68 OR CONFIG_SOC_SERIES_LPC54XXX)
233240
set_variable_ifdef(CONFIG_SOC_FLASH_MCUX CONFIG_MCUX_COMPONENT_driver.iap)
234241
endif()
@@ -289,6 +296,13 @@ if(CONFIG_SOC_SERIES_IMXRT118X)
289296
set_variable_ifdef(CONFIG_WDT_MCUX_RTWDOG CONFIG_MCUX_COMPONENT_driver.src_3)
290297
endif()
291298

299+
if(${MCUX_DEVICE} MATCHES "S32K3")
300+
if(CONFIG_DMA)
301+
zephyr_include_directories(${MCUX_SDK_NG_DIR}/drivers/dmamux)
302+
set(CONFIG_MCUX_COMPONENT_driver.dmamux ON)
303+
endif()
304+
endif()
305+
292306
if(CONFIG_SOC_FAMILY_MCXA)
293307
set(CONFIG_MCUX_COMPONENT_driver.romapi ON)
294308
endif()

soc/nxp/mcx/mcxw/mcxw7xx/soc.c

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -197,6 +197,10 @@ __weak void clock_init(void)
197197
CLOCK_EnableClock(kCLOCK_Lpadc0);
198198
}
199199

200+
if (DT_NODE_HAS_COMPAT_STATUS(DT_NODELABEL(edma), nxp_mcux_edma, okay)) {
201+
CLOCK_EnableClock(kCLOCK_Dma0);
202+
}
203+
200204
if (DT_NODE_HAS_COMPAT_STATUS(DT_NODELABEL(ewm0), nxp_ewm, okay)) {
201205
CLOCK_EnableClock(kCLOCK_Ewm0);
202206
}
Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,7 @@
1+
/*
2+
* Copyright 2025 NXP
3+
*
4+
* SPDX-License-Identifier: Apache-2.0
5+
*/
6+
7+
tst_dma0: &edma { };
Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,7 @@
1+
/*
2+
* Copyright 2025 NXP
3+
*
4+
* SPDX-License-Identifier: Apache-2.0
5+
*/
6+
7+
tst_dma0: &edma { };

0 commit comments

Comments
 (0)