boards: silabs: siwx91x: Add support for DMAs

Report DMA configuration in the board definitions.

Note the addresses of the DMA buffers are hardcoded in the HAL. So,
these areas have to be declared in the linker file.

Co-authored-by: Sai Santhosh Malae <santhosh.malae@silabs.com>
Signed-off-by: Sai Santhosh Malae <santhosh.malae@silabs.com>
Signed-off-by: Jérôme Pouiller <jerome.pouiller@silabs.com>
This commit is contained in:
Jérôme Pouiller 2025-02-04 10:05:07 +01:00 committed by Benjamin Cabé
commit 3fad258adc
3 changed files with 48 additions and 0 deletions

View file

@ -9,6 +9,7 @@ toolchain:
- gnuarmemb
- xtools
supported:
- dma
- entropy
- gpio
- i2c

View file

@ -216,6 +216,34 @@
clocks = <&clock0 SIWX91X_CLK_I2C1>;
status = "disabled";
};
dma0: dma@44030000 {
compatible = "silabs,siwx91x-dma";
#address-cells = <1>;
#size-cells = <0>;
reg = <0x44030000 0x82C>;
interrupts = <33 0>;
interrupt-names = "dma0";
clocks = <&clock0 SIWX91X_CLK_DMA0>;
silabs,sram-desc-addr = <0x2fc00>;
#dma-cells = < 1>;
dma-channels = <32>;
status = "disabled";
};
ulpdma: dma@24078000 {
compatible = "silabs,siwx91x-dma";
#address-cells = <1>;
#size-cells = <0>;
reg = <0x24078000 0x82C>;
interrupts = <10 0>;
interrupt-names = "ulpdma";
clocks = <&clock0 SIWX91X_CLK_ULP_DMA>;
silabs,sram-desc-addr = <0x24061c00>;
#dma-cells = < 1>;
dma-channels = <12>;
status = "disabled";
};
};
};

View file

@ -5,10 +5,29 @@
*/
#include <zephyr/arch/arm/cortex_m/scripts/linker.ld>
MEMORY
{
udma0 (rwx) : ORIGIN = 0x0002fc00, LENGTH = 0x00000400
udma1 (rwx) : ORIGIN = 0x24061c00, LENGTH = 0x00000400
}
SECTIONS
{
.common_tcm_code :
{
*(.common_tcm_code*)
} > FLASH
/* These regions of SRAM is where the UDMA descriptors are stored. The corresponding
section must be properly declared in the linker script to ensure correct data transfer
and proper functioning of the UDMA module */
.udma_addr0 :
{
*(.udma_addr0*)
} > udma0 AT> FLASH
.udma_addr1 :
{
*(.udma_addr1*)
} > udma1 AT> FLASH
}