From 0f948fdb1c8376529a4d196dd664eb583028832f Mon Sep 17 00:00:00 2001 From: Yishai Jaffe Date: Wed, 25 Dec 2024 12:52:56 +0200 Subject: [PATCH] soc: silabs: efr32xg23: add DMA support Added DMA support to efr32xg23 socs and boards containing them. Signed-off-by: Yishai Jaffe --- .../radio_boards/xg23_rb4210a/doc/index.rst | 2 ++ .../radio_boards/xg23_rb4210a/xg23_rb4210a.yaml | 1 + dts/arm/silabs/efr32xg23.dtsi | 9 +++++++++ .../boards/xg23_rb4210a.overlay | 11 +++++++++++ .../dma/loop_transfer/boards/xg23_rb4210a.conf | 5 +++++ .../dma/loop_transfer/boards/xg23_rb4210a.overlay | 11 +++++++++++ .../dma/scatter_gather/boards/xg23_rb4210a.conf | 4 ++++ .../scatter_gather/boards/xg23_rb4210a.overlay | 15 +++++++++++++++ 8 files changed, 58 insertions(+) create mode 100644 tests/drivers/dma/chan_blen_transfer/boards/xg23_rb4210a.overlay create mode 100644 tests/drivers/dma/loop_transfer/boards/xg23_rb4210a.conf create mode 100644 tests/drivers/dma/loop_transfer/boards/xg23_rb4210a.overlay create mode 100644 tests/drivers/dma/scatter_gather/boards/xg23_rb4210a.conf create mode 100644 tests/drivers/dma/scatter_gather/boards/xg23_rb4210a.overlay diff --git a/boards/silabs/radio_boards/xg23_rb4210a/doc/index.rst b/boards/silabs/radio_boards/xg23_rb4210a/doc/index.rst index 7dff434fbb5..153ef502a7c 100644 --- a/boards/silabs/radio_boards/xg23_rb4210a/doc/index.rst +++ b/boards/silabs/radio_boards/xg23_rb4210a/doc/index.rst @@ -53,6 +53,8 @@ The board configuration supports the following hardware features: +-----------+------------+-------------------------------------+ | UART | on-chip | serial | +-----------+------------+-------------------------------------+ +| DMA | on-chip | ldma | ++-----------+------------+-------------------------------------+ | I2C | on-chip | i2c | +-----------+------------+-------------------------------------+ | SPI | on-chip | spi | diff --git a/boards/silabs/radio_boards/xg23_rb4210a/xg23_rb4210a.yaml b/boards/silabs/radio_boards/xg23_rb4210a/xg23_rb4210a.yaml index 0b0039a1349..a9229ef60b1 100644 --- a/boards/silabs/radio_boards/xg23_rb4210a/xg23_rb4210a.yaml +++ b/boards/silabs/radio_boards/xg23_rb4210a/xg23_rb4210a.yaml @@ -19,6 +19,7 @@ supported: - pinctrl - spi - uart + - dma - watchdog testing: ignore_tags: diff --git a/dts/arm/silabs/efr32xg23.dtsi b/dts/arm/silabs/efr32xg23.dtsi index f60c13ae70e..9a76b47b867 100644 --- a/dts/arm/silabs/efr32xg23.dtsi +++ b/dts/arm/silabs/efr32xg23.dtsi @@ -424,6 +424,15 @@ reg = <0x5003c440 0xbc0>; }; + dma0: dma@50040000{ + compatible = "silabs,ldma"; + reg = <0x50040000 0x4000>; + interrupts = <22 0>; + #dma-cells = <3>; + dma_channels = <8>; + status = "disabled"; + }; + wdog0: wdog@5b004000 { compatible = "silabs,gecko-wdog"; reg = <0x5b004000 0x4000>; diff --git a/tests/drivers/dma/chan_blen_transfer/boards/xg23_rb4210a.overlay b/tests/drivers/dma/chan_blen_transfer/boards/xg23_rb4210a.overlay new file mode 100644 index 00000000000..a0e0ed08366 --- /dev/null +++ b/tests/drivers/dma/chan_blen_transfer/boards/xg23_rb4210a.overlay @@ -0,0 +1,11 @@ +/* + * Copyright (c) 2024 Silicon Laboratories, Inc. + * + * SPDX-License-Identifier: Apache-2.0 + */ + +&dma0 { + status = "okay"; +}; + +tst_dma0: &dma0 { }; diff --git a/tests/drivers/dma/loop_transfer/boards/xg23_rb4210a.conf b/tests/drivers/dma/loop_transfer/boards/xg23_rb4210a.conf new file mode 100644 index 00000000000..e5e2a14a816 --- /dev/null +++ b/tests/drivers/dma/loop_transfer/boards/xg23_rb4210a.conf @@ -0,0 +1,5 @@ +# Copyright (c) 2024 Silicon Laboratories, Inc. +# SPDX-License-Identifier: Apache-2.0 + +CONFIG_DMA_LOOP_TRANSFER_CHANNEL_NR=0 +CONFIG_DMA_LOOP_TRANSFER_SIZE=2048 diff --git a/tests/drivers/dma/loop_transfer/boards/xg23_rb4210a.overlay b/tests/drivers/dma/loop_transfer/boards/xg23_rb4210a.overlay new file mode 100644 index 00000000000..a0e0ed08366 --- /dev/null +++ b/tests/drivers/dma/loop_transfer/boards/xg23_rb4210a.overlay @@ -0,0 +1,11 @@ +/* + * Copyright (c) 2024 Silicon Laboratories, Inc. + * + * SPDX-License-Identifier: Apache-2.0 + */ + +&dma0 { + status = "okay"; +}; + +tst_dma0: &dma0 { }; diff --git a/tests/drivers/dma/scatter_gather/boards/xg23_rb4210a.conf b/tests/drivers/dma/scatter_gather/boards/xg23_rb4210a.conf new file mode 100644 index 00000000000..10730aca2f7 --- /dev/null +++ b/tests/drivers/dma/scatter_gather/boards/xg23_rb4210a.conf @@ -0,0 +1,4 @@ +# Copyright (c) 2024 Silicon Laboratories, Inc. +# SPDX-License-Identifier: Apache-2.0 + +CONFIG_DMA_SG_CHANNEL_NR=0 diff --git a/tests/drivers/dma/scatter_gather/boards/xg23_rb4210a.overlay b/tests/drivers/dma/scatter_gather/boards/xg23_rb4210a.overlay new file mode 100644 index 00000000000..430bbbbd3dd --- /dev/null +++ b/tests/drivers/dma/scatter_gather/boards/xg23_rb4210a.overlay @@ -0,0 +1,15 @@ +/* + * Copyright (c) 2024 Silicon Laboratories, Inc. + * + * SPDX-License-Identifier: Apache-2.0 + */ + +/ { + aliases { + dma0 = &dma0; + }; +}; + +&dma0 { + status = "okay"; +};