Mans Rullgard <m...@mansr.com> writes:

> Currently this driver only works with a DesignWare DMA engine which it
> registers manually using the second "reg" address range and interrupt
> number from the DT node.
>
> This patch makes the driver instead use the "dmas" property if present,
> otherwise optionally falling back on the old way so existing device
> trees can continue to work.
>
> With this change, there is no longer any reason to depend on the 460EX
> machine type so drop that from Kconfig.
>
> Signed-off-by: Mans Rullgard <m...@mansr.com>
> ---
>  drivers/ata/Kconfig          |  10 ++-
>  drivers/ata/sata_dwc_460ex.c | 192 
> +++++++++++++++++++++++++++----------------
>  2 files changed, 131 insertions(+), 71 deletions(-)

The corresponding patch for the canyonlands devicetree looks something
like this.  I don't have any such hardware or even a manual, so I don't
know what values to use for the various required DT properties of the
DMA controller node, nor can I test it.  The SATA driver works with a
different DMA controller on a Sigma Designs chip.

diff --git a/arch/powerpc/boot/dts/canyonlands.dts 
b/arch/powerpc/boot/dts/canyonlands.dts
index 3dc75de..959f36e 100644
--- a/arch/powerpc/boot/dts/canyonlands.dts
+++ b/arch/powerpc/boot/dts/canyonlands.dts
@@ -190,12 +190,22 @@
                                         /* DMA */ 0x2 &UIC0 0xc 0x4>;
                };
 
+               DMA0: dma@bffd0800 {
+                       compatible = "snps,dma-spear1340";
+                       reg = <4 0xbffd0800 0x400>;
+                       interrupt-parent = <&UIC3>;
+                       interrupts = <0x5 0x4>;
+                       #dma-cells = <3>;
+                       /* required properties here */
+               };
+
                SATA0: sata@bffd1000 {
                        compatible = "amcc,sata-460ex";
-                       reg = <4 0xbffd1000 0x800 4 0xbffd0800 0x400>;
+                       reg = <4 0xbffd1000 0x800>;
                        interrupt-parent = <&UIC3>;
-                       interrupts = <0x0 0x4       /* SATA */
-                                     0x5 0x4>;     /* AHBDMA */
+                       interrupts = <0x0 0x4>;
+                       dmas = <&DMA0 0 0 1>;
+                       dma-names = "sata-dma";
                };
 
                POB0: opb {


-- 
Måns Rullgård
--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Please read the FAQ at  http://www.tux.org/lkml/

Reply via email to