[PATCHv4 2/4] dmaengine: dw_dmac: move to generic DMA binding

2013-02-16 Thread Arnd Bergmann
The original device tree binding for this driver, from Viresh Kumar
unfortunately conflicted with the generic DMA binding, and did not allow
to completely seperate slave device configuration from the controller.

This is an attempt to replace it with an implementation of the generic
binding, but it is currently completely untested, because I do not have
any hardware with this particular controller.

The patch applies on top of the slave-dma tree, which contains both the base
support for the generic DMA binding, as well as the earlier attempt from
Viresh. Both of these are currently not merged upstream however.

This version incorporates feedback from Viresh Kumar, Andy Shevchenko
and Russell King.

Signed-off-by: Arnd Bergmann 
Acked-by: Viresh Kumar 
Acked-by: Andy Shevchenko 
Cc: Vinod Koul 
Cc: devicetree-disc...@lists.ozlabs.org
Cc: linux-arm-ker...@lists.infradead.org
---
 Documentation/devicetree/bindings/dma/snps-dma.txt |  70 +-
 drivers/dma/dw_dmac.c  | 145 ++---
 drivers/dma/dw_dmac_regs.h |   7 +-
 include/linux/dw_dmac.h|   5 -
 4 files changed, 111 insertions(+), 116 deletions(-)

diff --git a/Documentation/devicetree/bindings/dma/snps-dma.txt 
b/Documentation/devicetree/bindings/dma/snps-dma.txt
index 5bb3dfb..d58675e 100644
--- a/Documentation/devicetree/bindings/dma/snps-dma.txt
+++ b/Documentation/devicetree/bindings/dma/snps-dma.txt
@@ -3,59 +3,61 @@
 Required properties:
 - compatible: "snps,dma-spear1340"
 - reg: Address range of the DMAC registers
-- interrupt-parent: Should be the phandle for the interrupt controller
-  that services interrupts for this device
 - interrupt: Should contain the DMAC interrupt number
-- nr_channels: Number of channels supported by hardware
-- is_private: The device channels should be marked as private and not for by 
the
-  general purpose DMA channel allocator. False if not passed.
+- dma-channels: Number of channels supported by hardware
+- dma-requests: Number of DMA request lines supported, up to 16
+- dma-masters: Number of AHB masters supported by the controller
+- #dma-cells: must be <3>
 - chan_allocation_order: order of allocation of channel, 0 (default): 
ascending,
   1: descending
 - chan_priority: priority of channels. 0 (default): increase from chan 0->n, 1:
   increase from chan n->0
 - block_size: Maximum block size supported by the controller
-- nr_masters: Number of AHB masters supported by the controller
 - data_width: Maximum data width supported by hardware per AHB master
   (0 - 8bits, 1 - 16bits, ..., 5 - 256bits)
-- slave_info:
-   - bus_id: name of this device channel, not just a device name since
- devices may have more than one channel e.g. "foo_tx". For using the
- dw_generic_filter(), slave drivers must pass exactly this string as
- param to filter function.
-   - cfg_hi: Platform-specific initializer for the CFG_HI register
-   - cfg_lo: Platform-specific initializer for the CFG_LO register
-   - src_master: src master for transfers on allocated channel.
-   - dst_master: dest master for transfers on allocated channel.
+
+
+Optional properties:
+- interrupt-parent: Should be the phandle for the interrupt controller
+  that services interrupts for this device
+- is_private: The device channels should be marked as private and not for by 
the
+  general purpose DMA channel allocator. False if not passed.
 
 Example:
 
-   dma@fc00 {
+   dmahost: dma@fc00 {
compatible = "snps,dma-spear1340";
reg = <0xfc00 0x1000>;
interrupt-parent = <>;
interrupts = <12>;
 
-   nr_channels = <8>;
+   dma-channels = <8>;
+   dma-requests = <16>;
+   dma-masters = <2>;
+   #dma-cells = <3>;
chan_allocation_order = <1>;
chan_priority = <1>;
block_size = <0xfff>;
-   nr_masters = <2>;
data_width = <3 3 0 0>;
+   };
 
-   slave_info {
-   uart0-tx {
-   bus_id = "uart0-tx";
-   cfg_hi = <0x4000>;  /* 0x8 << 11 */
-   cfg_lo = <0>;
-   src_master = <0>;
-   dst_master = <1>;
-   };
-   spi0-tx {
-   bus_id = "spi0-tx";
-   cfg_hi = <0x2000>;  /* 0x4 << 11 */
-   cfg_lo = <0>;
-   src_master = <0>;
-   dst_master = <0>;
-   };
-   };
+DMA clients connected to the Designware DMA controller must use the format
+described in the dma.txt file, using a four-cell specifier for each channel.
+The four cells 

[PATCHv4 2/4] dmaengine: dw_dmac: move to generic DMA binding

2013-02-16 Thread Arnd Bergmann
The original device tree binding for this driver, from Viresh Kumar
unfortunately conflicted with the generic DMA binding, and did not allow
to completely seperate slave device configuration from the controller.

This is an attempt to replace it with an implementation of the generic
binding, but it is currently completely untested, because I do not have
any hardware with this particular controller.

The patch applies on top of the slave-dma tree, which contains both the base
support for the generic DMA binding, as well as the earlier attempt from
Viresh. Both of these are currently not merged upstream however.

This version incorporates feedback from Viresh Kumar, Andy Shevchenko
and Russell King.

Signed-off-by: Arnd Bergmann a...@arndb.de
Acked-by: Viresh Kumar viresh.ku...@linaro.org
Acked-by: Andy Shevchenko andriy.shevche...@linux.intel.com
Cc: Vinod Koul vinod.k...@linux.intel.com
Cc: devicetree-disc...@lists.ozlabs.org
Cc: linux-arm-ker...@lists.infradead.org
---
 Documentation/devicetree/bindings/dma/snps-dma.txt |  70 +-
 drivers/dma/dw_dmac.c  | 145 ++---
 drivers/dma/dw_dmac_regs.h |   7 +-
 include/linux/dw_dmac.h|   5 -
 4 files changed, 111 insertions(+), 116 deletions(-)

diff --git a/Documentation/devicetree/bindings/dma/snps-dma.txt 
b/Documentation/devicetree/bindings/dma/snps-dma.txt
index 5bb3dfb..d58675e 100644
--- a/Documentation/devicetree/bindings/dma/snps-dma.txt
+++ b/Documentation/devicetree/bindings/dma/snps-dma.txt
@@ -3,59 +3,61 @@
 Required properties:
 - compatible: snps,dma-spear1340
 - reg: Address range of the DMAC registers
-- interrupt-parent: Should be the phandle for the interrupt controller
-  that services interrupts for this device
 - interrupt: Should contain the DMAC interrupt number
-- nr_channels: Number of channels supported by hardware
-- is_private: The device channels should be marked as private and not for by 
the
-  general purpose DMA channel allocator. False if not passed.
+- dma-channels: Number of channels supported by hardware
+- dma-requests: Number of DMA request lines supported, up to 16
+- dma-masters: Number of AHB masters supported by the controller
+- #dma-cells: must be 3
 - chan_allocation_order: order of allocation of channel, 0 (default): 
ascending,
   1: descending
 - chan_priority: priority of channels. 0 (default): increase from chan 0-n, 1:
   increase from chan n-0
 - block_size: Maximum block size supported by the controller
-- nr_masters: Number of AHB masters supported by the controller
 - data_width: Maximum data width supported by hardware per AHB master
   (0 - 8bits, 1 - 16bits, ..., 5 - 256bits)
-- slave_info:
-   - bus_id: name of this device channel, not just a device name since
- devices may have more than one channel e.g. foo_tx. For using the
- dw_generic_filter(), slave drivers must pass exactly this string as
- param to filter function.
-   - cfg_hi: Platform-specific initializer for the CFG_HI register
-   - cfg_lo: Platform-specific initializer for the CFG_LO register
-   - src_master: src master for transfers on allocated channel.
-   - dst_master: dest master for transfers on allocated channel.
+
+
+Optional properties:
+- interrupt-parent: Should be the phandle for the interrupt controller
+  that services interrupts for this device
+- is_private: The device channels should be marked as private and not for by 
the
+  general purpose DMA channel allocator. False if not passed.
 
 Example:
 
-   dma@fc00 {
+   dmahost: dma@fc00 {
compatible = snps,dma-spear1340;
reg = 0xfc00 0x1000;
interrupt-parent = vic1;
interrupts = 12;
 
-   nr_channels = 8;
+   dma-channels = 8;
+   dma-requests = 16;
+   dma-masters = 2;
+   #dma-cells = 3;
chan_allocation_order = 1;
chan_priority = 1;
block_size = 0xfff;
-   nr_masters = 2;
data_width = 3 3 0 0;
+   };
 
-   slave_info {
-   uart0-tx {
-   bus_id = uart0-tx;
-   cfg_hi = 0x4000;  /* 0x8  11 */
-   cfg_lo = 0;
-   src_master = 0;
-   dst_master = 1;
-   };
-   spi0-tx {
-   bus_id = spi0-tx;
-   cfg_hi = 0x2000;  /* 0x4  11 */
-   cfg_lo = 0;
-   src_master = 0;
-   dst_master = 0;
-   };
-   };
+DMA clients connected to the Designware DMA controller must use the format
+described in the dma.txt file, using a four-cell