For some reason without this patch, using SPI0 with DMA yields the
following message:

atmel_spi f8000000.spi: DMA TX channel not available, SPI unable to use DMA

With the patch, trying to use SPI0 yields the following:

atmel_spi f8000000.spi: Using dma0chan0 (tx) and dma0chan1 (rx) for DMA 
transfers

The QSPI driver doesn't appear to me to be using the DMA but the
datasheet seems indicate the DMA is supported.  I am not sure why patch would
fix the errors, so I'm posting it as RFC.

Signed-off-by: Adam Ford <aford...@gmail.com>

diff --git a/arch/arm/boot/dts/sama5d2.dtsi b/arch/arm/boot/dts/sama5d2.dtsi
index 61f68e5..fd55e91 100644
--- a/arch/arm/boot/dts/sama5d2.dtsi
+++ b/arch/arm/boot/dts/sama5d2.dtsi
@@ -999,6 +999,13 @@
                                reg = <0xf0020000 0x100>, <0xd0000000 
0x08000000>;
                                reg-names = "qspi_base", "qspi_mmap";
                                interrupts = <52 IRQ_TYPE_LEVEL_HIGH 7>;
+                               dmas = <&dma0
+                                       (AT91_XDMAC_DT_MEM_IF(0) | 
AT91_XDMAC_DT_PER_IF(1) |
+                                        AT91_XDMAC_DT_PERID(4))>,
+                                      <&dma0
+                                       (AT91_XDMAC_DT_MEM_IF(0) | 
AT91_XDMAC_DT_PER_IF(1) |
+                                        AT91_XDMAC_DT_PERID(5))>;
+                               dma-names = "tx", "rx";
                                clocks = <&qspi0_clk>;
                                #address-cells = <1>;
                                #size-cells = <0>;
@@ -1010,6 +1017,13 @@
                                reg = <0xf0024000 0x100>, <0xd8000000 
0x08000000>;
                                reg-names = "qspi_base", "qspi_mmap";
                                interrupts = <53 IRQ_TYPE_LEVEL_HIGH 7>;
+                               dmas = <&dma1
+                                       (AT91_XDMAC_DT_MEM_IF(0) | 
AT91_XDMAC_DT_PER_IF(1) |
+                                        AT91_XDMAC_DT_PERID(48))>,
+                                      <&dma0
+                                       (AT91_XDMAC_DT_MEM_IF(0) | 
AT91_XDMAC_DT_PER_IF(1) |
+                                        AT91_XDMAC_DT_PERID(49))>;
+                               dma-names = "tx", "rx";
                                clocks = <&qspi1_clk>;
                                #address-cells = <1>;
                                #size-cells = <0>;
-- 
2.7.4

Reply via email to