Thread (3 messages) 3 messages, 3 authors, 2015-12-17

Re: [PATCH 1/3] ata: sata_dwc_460ex: use "dmas" DT property to find dma channel

From: Måns Rullgård <hidden>
Date: 2015-12-17 16:04:58
Also in: lkml

Possibly related (same subject, not in this thread)

Andy Shevchenko [off-list ref] writes:
On Thu, 2015-12-17 at 15:13 +0000, Måns Rullgård wrote:
quoted
Andy Shevchenko [off-list ref] writes:
quoted
On Tue, 2015-12-15 at 23:34 +0000, Måns Rullgård wrote:
quoted
Mans Rullgard [off-list ref] writes:
quoted
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 <redacted>
---
 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 */
You have to move the master assignments and other custom dw_dmac
properties. Maybe at some point I will fix that in dw/platform.c.
quoted
+		};
The current sata_dwc driver calls dw_dma_probe() with null pdata
which causes the dw_dma driver to auto-detect most parameters.  It
looks like simply omitting those properties here results in the same
thing, although in this case dw_dma_parse_dt() leaves a
devm-allocated pdata struct adrift.  Deferring the allocation of that
and changing the DT binding doc to make these properties optional for
auto-detect-capable hardware should just work.
Yeah, I would like to allow autoconfiguration in case of DT as well and
translate it to use unified device property API.
quoted
Something like this:
If it works for you, please, submit as a patch. Thanks.
I can't test it since I have no such hardware.

-- 
Måns Rullgård
Keyboard shortcuts
hback out one level
jnext message in thread
kprevious message in thread
ldrill in
Escclose help / fold thread tree
?toggle this help