rpi_pico2: rp2350: Add DMA support
Add initial support for the RP2350's DMA peripheral, allow tests under drivers/dma/loop_transfer to run on on the Raspberry Pi Pico 2, and update the board's documentation. Signed-off-by: Manuel Aebischer <manuel.aebischer@belden.com> Signed-off-by: Andrew Featherstone <andrew.featherstone@gmail.com>
This commit is contained in:
parent
6e9635679f
commit
2d768fd3a5
5 changed files with 92 additions and 0 deletions
|
|
@ -51,6 +51,9 @@ hardware features:
|
|||
* - Counter
|
||||
- :kconfig:option:`CONFIG_COUNTER`
|
||||
- :dtcompatible:`raspberrypi,pico-timer`
|
||||
* - DMA
|
||||
- :kconfig:option:`CONFIG_DMA`
|
||||
- :dtcompatible:`raspberrypi,pico-dma`
|
||||
* - GPIO
|
||||
- :kconfig:option:`CONFIG_GPIO`
|
||||
- :dtcompatible:`raspberrypi,pico-gpio`
|
||||
|
|
|
|||
|
|
@ -12,6 +12,7 @@ supported:
|
|||
- adc
|
||||
- clock
|
||||
- counter
|
||||
- dma
|
||||
- gpio
|
||||
- hwinfo
|
||||
- i2c
|
||||
|
|
|
|||
|
|
@ -375,6 +375,21 @@
|
|||
status = "disabled";
|
||||
};
|
||||
|
||||
dma: dma@50000000 {
|
||||
compatible = "raspberrypi,pico-dma";
|
||||
reg = <0x50000000 DT_SIZE_K(64)>;
|
||||
resets = <&reset RPI_PICO_RESETS_RESET_DMA>;
|
||||
clocks = <&clocks RPI_PICO_CLKID_CLK_SYS>;
|
||||
interrupts = <10 RPI_PICO_DEFAULT_IRQ_PRIORITY>,
|
||||
<11 RPI_PICO_DEFAULT_IRQ_PRIORITY>,
|
||||
<12 RPI_PICO_DEFAULT_IRQ_PRIORITY>,
|
||||
<13 RPI_PICO_DEFAULT_IRQ_PRIORITY>;
|
||||
interrupt-names = "dma0", "dma1", "dma2", "dma3";
|
||||
dma-channels = <16>;
|
||||
status = "disabled";
|
||||
#dma-cells = <3>;
|
||||
};
|
||||
|
||||
usbd: usbd@50100000 {
|
||||
compatible = "raspberrypi,pico-usbd";
|
||||
reg = <0x50100000 0x10000>;
|
||||
|
|
|
|||
|
|
@ -15,6 +15,7 @@
|
|||
#define RPI_PICO_DMA_SLOT_TO_DREQ(s) (~(s)&0x3F)
|
||||
#define RPI_PICO_DMA_DREQ_TO_SLOT RPI_PICO_DMA_SLOT_TO_DREQ
|
||||
|
||||
#if defined(CONFIG_SOC_SERIES_RP2040)
|
||||
#define RPI_PICO_DMA_SLOT_PIO0_TX0 RPI_PICO_DMA_DREQ_TO_SLOT(0x00)
|
||||
#define RPI_PICO_DMA_SLOT_PIO0_TX1 RPI_PICO_DMA_DREQ_TO_SLOT(0x01)
|
||||
#define RPI_PICO_DMA_SLOT_PIO0_TX2 RPI_PICO_DMA_DREQ_TO_SLOT(0x02)
|
||||
|
|
@ -60,5 +61,69 @@
|
|||
#define RPI_PICO_DMA_SLOT_DMA_TIMER2 RPI_PICO_DMA_DREQ_TO_SLOT(0x3D)
|
||||
#define RPI_PICO_DMA_SLOT_DMA_TIMER3 RPI_PICO_DMA_DREQ_TO_SLOT(0x3E)
|
||||
#define RPI_PICO_DMA_SLOT_FORCE RPI_PICO_DMA_DREQ_TO_SLOT(0x3F)
|
||||
#endif /* defined(CONFIG_SOC_SERIES_RP2040) */
|
||||
|
||||
#if defined(CONFIG_SOC_SERIES_RP2350)
|
||||
#define RPI_PICO2_DMA_SLOT_PIO0_TX0 RPI_PICO_DMA_DREQ_TO_SLOT(0x00)
|
||||
#define RPI_PICO2_DMA_SLOT_PIO0_TX1 RPI_PICO_DMA_DREQ_TO_SLOT(0x01)
|
||||
#define RPI_PICO2_DMA_SLOT_PIO0_TX2 RPI_PICO_DMA_DREQ_TO_SLOT(0x02)
|
||||
#define RPI_PICO2_DMA_SLOT_PIO0_TX3 RPI_PICO_DMA_DREQ_TO_SLOT(0x03)
|
||||
#define RPI_PICO2_DMA_SLOT_PIO0_RX0 RPI_PICO_DMA_DREQ_TO_SLOT(0x04)
|
||||
#define RPI_PICO2_DMA_SLOT_PIO0_RX1 RPI_PICO_DMA_DREQ_TO_SLOT(0x05)
|
||||
#define RPI_PICO2_DMA_SLOT_PIO0_RX2 RPI_PICO_DMA_DREQ_TO_SLOT(0x06)
|
||||
#define RPI_PICO2_DMA_SLOT_PIO0_RX3 RPI_PICO_DMA_DREQ_TO_SLOT(0x07)
|
||||
#define RPI_PICO2_DMA_SLOT_PIO1_TX0 RPI_PICO_DMA_DREQ_TO_SLOT(0x08)
|
||||
#define RPI_PICO2_DMA_SLOT_PIO1_TX1 RPI_PICO_DMA_DREQ_TO_SLOT(0x09)
|
||||
#define RPI_PICO2_DMA_SLOT_PIO1_TX2 RPI_PICO_DMA_DREQ_TO_SLOT(0x0A)
|
||||
#define RPI_PICO2_DMA_SLOT_PIO1_TX3 RPI_PICO_DMA_DREQ_TO_SLOT(0x0B)
|
||||
#define RPI_PICO2_DMA_SLOT_PIO1_RX0 RPI_PICO_DMA_DREQ_TO_SLOT(0x0C)
|
||||
#define RPI_PICO2_DMA_SLOT_PIO1_RX1 RPI_PICO_DMA_DREQ_TO_SLOT(0x0D)
|
||||
#define RPI_PICO2_DMA_SLOT_PIO1_RX2 RPI_PICO_DMA_DREQ_TO_SLOT(0x0E)
|
||||
#define RPI_PICO2_DMA_SLOT_PIO1_RX3 RPI_PICO_DMA_DREQ_TO_SLOT(0x0F)
|
||||
#define RPI_PICO2_DMA_SLOT_PIO2_TX0 RPI_PICO_DMA_DREQ_TO_SLOT(0x10)
|
||||
#define RPI_PICO2_DMA_SLOT_PIO2_TX1 RPI_PICO_DMA_DREQ_TO_SLOT(0x11)
|
||||
#define RPI_PICO2_DMA_SLOT_PIO2_TX2 RPI_PICO_DMA_DREQ_TO_SLOT(0x12)
|
||||
#define RPI_PICO2_DMA_SLOT_PIO2_TX3 RPI_PICO_DMA_DREQ_TO_SLOT(0x13)
|
||||
#define RPI_PICO2_DMA_SLOT_PIO2_RX0 RPI_PICO_DMA_DREQ_TO_SLOT(0x14)
|
||||
#define RPI_PICO2_DMA_SLOT_PIO2_RX1 RPI_PICO_DMA_DREQ_TO_SLOT(0x15)
|
||||
#define RPI_PICO2_DMA_SLOT_PIO2_RX2 RPI_PICO_DMA_DREQ_TO_SLOT(0x16)
|
||||
#define RPI_PICO2_DMA_SLOT_PIO2_RX3 RPI_PICO_DMA_DREQ_TO_SLOT(0x17)
|
||||
#define RPI_PICO2_DMA_SLOT_SPI0_TX RPI_PICO_DMA_DREQ_TO_SLOT(0x18)
|
||||
#define RPI_PICO2_DMA_SLOT_SPI0_RX RPI_PICO_DMA_DREQ_TO_SLOT(0x19)
|
||||
#define RPI_PICO2_DMA_SLOT_SPI1_TX RPI_PICO_DMA_DREQ_TO_SLOT(0x1A)
|
||||
#define RPI_PICO2_DMA_SLOT_SPI1_RX RPI_PICO_DMA_DREQ_TO_SLOT(0x1B)
|
||||
#define RPI_PICO2_DMA_SLOT_UART0_TX RPI_PICO_DMA_DREQ_TO_SLOT(0x1C)
|
||||
#define RPI_PICO2_DMA_SLOT_UART0_RX RPI_PICO_DMA_DREQ_TO_SLOT(0x1D)
|
||||
#define RPI_PICO2_DMA_SLOT_UART1_TX RPI_PICO_DMA_DREQ_TO_SLOT(0x1E)
|
||||
#define RPI_PICO2_DMA_SLOT_UART1_RX RPI_PICO_DMA_DREQ_TO_SLOT(0x1F)
|
||||
#define RPI_PICO2_DMA_SLOT_PWM_WRAP0 RPI_PICO_DMA_DREQ_TO_SLOT(0x20)
|
||||
#define RPI_PICO2_DMA_SLOT_PWM_WRAP1 RPI_PICO_DMA_DREQ_TO_SLOT(0x21)
|
||||
#define RPI_PICO2_DMA_SLOT_PWM_WRAP2 RPI_PICO_DMA_DREQ_TO_SLOT(0x22)
|
||||
#define RPI_PICO2_DMA_SLOT_PWM_WRAP3 RPI_PICO_DMA_DREQ_TO_SLOT(0x23)
|
||||
#define RPI_PICO2_DMA_SLOT_PWM_WRAP4 RPI_PICO_DMA_DREQ_TO_SLOT(0x24)
|
||||
#define RPI_PICO2_DMA_SLOT_PWM_WRAP5 RPI_PICO_DMA_DREQ_TO_SLOT(0x25)
|
||||
#define RPI_PICO2_DMA_SLOT_PWM_WRAP6 RPI_PICO_DMA_DREQ_TO_SLOT(0x26)
|
||||
#define RPI_PICO2_DMA_SLOT_PWM_WRAP7 RPI_PICO_DMA_DREQ_TO_SLOT(0x27)
|
||||
#define RPI_PICO2_DMA_SLOT_PWM_WRAP8 RPI_PICO_DMA_DREQ_TO_SLOT(0x28)
|
||||
#define RPI_PICO2_DMA_SLOT_PWM_WRAP9 RPI_PICO_DMA_DREQ_TO_SLOT(0x29)
|
||||
#define RPI_PICO2_DMA_SLOT_PWM_WRAP10 RPI_PICO_DMA_DREQ_TO_SLOT(0x2A)
|
||||
#define RPI_PICO2_DMA_SLOT_PWM_WRAP11 RPI_PICO_DMA_DREQ_TO_SLOT(0x2B)
|
||||
#define RPI_PICO2_DMA_SLOT_I2C0_TX RPI_PICO_DMA_DREQ_TO_SLOT(0x2C)
|
||||
#define RPI_PICO2_DMA_SLOT_I2C0_RX RPI_PICO_DMA_DREQ_TO_SLOT(0x2D)
|
||||
#define RPI_PICO2_DMA_SLOT_I2C1_TX RPI_PICO_DMA_DREQ_TO_SLOT(0x2E)
|
||||
#define RPI_PICO2_DMA_SLOT_I2C1_RX RPI_PICO_DMA_DREQ_TO_SLOT(0x2F)
|
||||
#define RPI_PICO2_DMA_SLOT_ADC RPI_PICO_DMA_DREQ_TO_SLOT(0x30)
|
||||
#define RPI_PICO2_DMA_SLOT_XIP_STREAM RPI_PICO_DMA_DREQ_TO_SLOT(0x31)
|
||||
#define RPI_PICO2_DMA_SLOT_XIP_QMITX RPI_PICO_DMA_DREQ_TO_SLOT(0x32)
|
||||
#define RPI_PICO2_DMA_SLOT_XIP_QMIRX RPI_PICO_DMA_DREQ_TO_SLOT(0x33)
|
||||
#define RPI_PICO2_DMA_SLOT_HSTX RPI_PICO_DMA_DREQ_TO_SLOT(0x34)
|
||||
#define RPI_PICO2_DMA_SLOT_CORESIGHT RPI_PICO_DMA_DREQ_TO_SLOT(0x35)
|
||||
#define RPI_PICO2_DMA_SLOT_SHA256 RPI_PICO_DMA_DREQ_TO_SLOT(0x36)
|
||||
#define RPI_PICO2_DMA_SLOT_DMA_TIMER0 RPI_PICO_DMA_DREQ_TO_SLOT(0x3B)
|
||||
#define RPI_PICO2_DMA_SLOT_DMA_TIMER1 RPI_PICO_DMA_DREQ_TO_SLOT(0x3C)
|
||||
#define RPI_PICO2_DMA_SLOT_DMA_TIMER2 RPI_PICO_DMA_DREQ_TO_SLOT(0x3D)
|
||||
#define RPI_PICO2_DMA_SLOT_DMA_TIMER3 RPI_PICO_DMA_DREQ_TO_SLOT(0x3E)
|
||||
#define RPI_PICO2_DMA_SLOT_FORCE RPI_PICO_DMA_DREQ_TO_SLOT(0x3F)
|
||||
#endif /* defined(CONFIG_SOC_SERIES_RP2350) */
|
||||
|
||||
#endif /* ZEPHYR_INCLUDE_DT_BINDINGS_RPI_PICO_DMA_H_ */
|
||||
|
|
|
|||
|
|
@ -0,0 +1,8 @@
|
|||
/*
|
||||
* SPDX-License-Identifier: Apache-2.0
|
||||
*
|
||||
* Copyright (c) 2024 Andrew Featherstone <andrew.featherstone@gmail.com>
|
||||
*/
|
||||
|
||||
/* Pico 2 is compatible with the Pico 1, so reuse. */
|
||||
#include "rpi_pico.overlay"
|
||||
Loading…
Reference in a new issue