Skip to content

Commit dd15029

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 8f6bc05 commit dd15029

File tree

11 files changed

+64
-2
lines changed

11 files changed

+64
-2
lines changed

boards/nxp/frdm_mcxw71/frdm_mcxw71.dts

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -222,3 +222,7 @@
222222
&rtc {
223223
status = "okay";
224224
};
225+
226+
&edma {
227+
status = "okay";
228+
};

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
@@ -185,3 +185,7 @@
185185
reg = <0x19>;
186186
};
187187
};
188+
189+
&edma {
190+
status = "okay";
191+
};

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 & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -179,6 +179,8 @@
179179
reg = <0x38000 0x34>;
180180
interrupts = <44 0>;
181181
clocks = <&scg SCG_K4_FIRC_CLK 0xe0>;
182+
dmas = <&edma 0 32>, <&edma 1 31>;
183+
dma-names = "tx", "rx";
182184
status = "disabled";
183185
};
184186

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

@@ -381,6 +385,21 @@
381385
prescaler = <32768>;
382386
};
383387

388+
edma: dma-controller@2000 {
389+
compatible = "nxp,mcux-edma";
390+
#dma-cells = <2>;
391+
nxp,version = <3>;
392+
dma-channels = <16>;
393+
dma-requests = <64>;
394+
reg = <0x2000 0x140>;
395+
clocks = <&scg SCG_K4_EDMA_CLK 0x410>;
396+
interrupts = <2 0>, <3 0>, <4 0>, <5 0>,
397+
<6 0>, <7 0>, <8 0>, <9 0>,
398+
<10 0>, <11 0>, <12 0>, <13 0>,
399+
<14 0>, <15 0>, <16 0>, <17 0>;
400+
status = "disabled";
401+
};
402+
384403
ewm0: ewm@13000 {
385404
compatible = "nxp,ewm";
386405
reg = <0x13000 0x6>;
@@ -402,7 +421,6 @@
402421
status = "disabled";
403422
};
404423
};
405-
406424
};
407425

408426
&fast_peripheral0 {

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
@@ -56,7 +56,6 @@ set_variable_ifdef(CONFIG_DAC_MCUX_DAC CONFIG_MCUX_COMPONENT_driver.dac
5656
set_variable_ifdef(CONFIG_DAC_MCUX_DAC12 CONFIG_MCUX_COMPONENT_driver.dac12)
5757
set_variable_ifdef(CONFIG_DAC_MCUX_DAC32 CONFIG_MCUX_COMPONENT_driver.dac32)
5858
set_variable_ifdef(CONFIG_DMA_MCUX_EDMA CONFIG_MCUX_COMPONENT_driver.dmamux)
59-
set_variable_ifdef(CONFIG_DMA_MCUX_EDMA_V3 CONFIG_MCUX_COMPONENT_driver.dmamux)
6059
set_variable_ifdef(CONFIG_DMA_MCUX_EDMA CONFIG_MCUX_COMPONENT_driver.edma)
6160
set_variable_ifdef(CONFIG_DMA_MCUX_EDMA_V3 CONFIG_MCUX_COMPONENT_driver.dma3)
6261
set_variable_ifdef(CONFIG_DMA_MCUX_EDMA_V4 CONFIG_MCUX_COMPONENT_driver.edma4)
@@ -224,6 +223,14 @@ if(CONFIG_SOC_FAMILY_MCXW OR CONFIG_SOC_MCXN947 OR CONFIG_SOC_MCXN547)
224223
set_variable_ifdef(CONFIG_SOC_FLASH_MCUX CONFIG_MCUX_COMPONENT_driver.flash_k4)
225224
endif()
226225

226+
if(CONFIG_SOC_FAMILY_MCXW OR CONFIG_SOC_MCXN547)
227+
if(CONFIG_DMA)
228+
zephyr_include_directories(${MCUX_SDK_NG_DIR}/drivers/trgmux)
229+
set_variable_ifdef(CONFIG_MBOX_NXP_IMX_MU CONFIG_MCUX_COMPONENT_driver.mu)
230+
set(CONFIG_MCUX_COMPONENT_driver.trgmux ON)
231+
endif()
232+
endif()
233+
227234
if(CONFIG_SOC_SERIES_LPC51U68 OR CONFIG_SOC_SERIES_LPC54XXX)
228235
set_variable_ifdef(CONFIG_SOC_FLASH_MCUX CONFIG_MCUX_COMPONENT_driver.iap)
229236
endif()
@@ -285,6 +292,13 @@ if(CONFIG_SOC_SERIES_IMXRT118X)
285292
set_variable_ifdef(CONFIG_WDT_MCUX_RTWDOG CONFIG_MCUX_COMPONENT_driver.src_3)
286293
endif()
287294

295+
if(${MCUX_DEVICE} MATCHES "S32K3")
296+
if(CONFIG_DMA)
297+
zephyr_include_directories(${MCUX_SDK_NG_DIR}/drivers/dmamux)
298+
set(CONFIG_MCUX_COMPONENT_driver.dmamux ON)
299+
endif()
300+
endif()
301+
288302
if(CONFIG_SOC_FAMILY_MCXA)
289303
set(CONFIG_MCUX_COMPONENT_driver.romapi ON)
290304
endif()

soc/nxp/mcx/mcxw/soc.c

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

199+
if (DT_NODE_HAS_COMPAT_STATUS(DT_NODELABEL(edma), nxp_mcux_edma, okay)) {
200+
CLOCK_EnableClock(kCLOCK_Dma0);
201+
}
202+
199203
if (DT_NODE_HAS_COMPAT_STATUS(DT_NODELABEL(ewm0), nxp_ewm, okay)) {
200204
CLOCK_EnableClock(kCLOCK_Ewm0);
201205
}
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)