Skip to content

Commit 39657dc

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 1350f62 commit 39657dc

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

@@ -379,6 +383,21 @@
379383
prescaler = <32768>;
380384
};
381385

386+
edma: dma-controller@2000 {
387+
compatible = "nxp,mcux-edma";
388+
#dma-cells = <2>;
389+
nxp,version = <3>;
390+
dma-channels = <16>;
391+
dma-requests = <64>;
392+
reg = <0x2000 0x140>;
393+
clocks = <&scg SCG_K4_EDMA_CLK 0x410>;
394+
interrupts = <2 0>, <3 0>, <4 0>, <5 0>,
395+
<6 0>, <7 0>, <8 0>, <9 0>,
396+
<10 0>, <11 0>, <12 0>, <13 0>,
397+
<14 0>, <15 0>, <16 0>, <17 0>;
398+
status = "disabled";
399+
};
400+
382401
ewm0: ewm@13000 {
383402
compatible = "nxp,ewm";
384403
reg = <0x13000 0x6>;
@@ -400,7 +419,6 @@
400419
status = "disabled";
401420
};
402421
};
403-
404422
};
405423

406424
&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)
@@ -222,6 +221,14 @@ if(CONFIG_SOC_FAMILY_MCXW OR CONFIG_SOC_MCXN947 OR CONFIG_SOC_MCXN547)
222221
set_variable_ifdef(CONFIG_SOC_FLASH_MCUX CONFIG_MCUX_COMPONENT_driver.flash_k4)
223222
endif()
224223

224+
if(CONFIG_SOC_FAMILY_MCXW OR CONFIG_SOC_MCXN547)
225+
if(CONFIG_DMA)
226+
zephyr_include_directories(${MCUX_SDK_NG_DIR}/drivers/trgmux)
227+
set_variable_ifdef(CONFIG_MBOX_NXP_IMX_MU CONFIG_MCUX_COMPONENT_driver.mu)
228+
set(CONFIG_MCUX_COMPONENT_driver.trgmux ON)
229+
endif()
230+
endif()
231+
225232
if(CONFIG_SOC_SERIES_LPC51U68 OR CONFIG_SOC_SERIES_LPC54XXX)
226233
set_variable_ifdef(CONFIG_SOC_FLASH_MCUX CONFIG_MCUX_COMPONENT_driver.iap)
227234
endif()
@@ -283,6 +290,13 @@ if(CONFIG_SOC_SERIES_IMXRT118X)
283290
set_variable_ifdef(CONFIG_WDT_MCUX_RTWDOG CONFIG_MCUX_COMPONENT_driver.src_3)
284291
endif()
285292

293+
if(${MCUX_DEVICE} MATCHES "S32K3")
294+
if(CONFIG_DMA)
295+
zephyr_include_directories(${MCUX_SDK_NG_DIR}/drivers/dmamux)
296+
set(CONFIG_MCUX_COMPONENT_driver.dmamux ON)
297+
endif()
298+
endif()
299+
286300
if(CONFIG_SOC_FAMILY_MCXA)
287301
set(CONFIG_MCUX_COMPONENT_driver.romapi ON)
288302
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)