1* Generic DMA Controller and DMA request bindings 2 3Generic binding to provide a way for a driver using DMA Engine to retrieve the 4DMA request or channel information that goes from a hardware device to a DMA 5controller. 6 7 8* DMA controller 9 10Required property: 11- #dma-cells: Must be at least 1. Used to provide DMA controller 12 specific information. See DMA client binding below for 13 more details. 14 15Optional properties: 16- dma-channels: Number of DMA channels supported by the controller. 17- dma-requests: Number of DMA request signals supported by the 18 controller. 19- dma-channel-mask: Bitmask of available DMA channels in ascending order 20 that are not reserved by firmware and are available to 21 the kernel. i.e. first channel corresponds to LSB. 22 23Example: 24 25 dma: dma@48000000 { 26 compatible = "ti,omap-sdma"; 27 reg = <0x48000000 0x1000>; 28 interrupts = <0 12 0x4 29 0 13 0x4 30 0 14 0x4 31 0 15 0x4>; 32 #dma-cells = <1>; 33 dma-channels = <32>; 34 dma-requests = <127>; 35 dma-channel-mask = <0xfffe> 36 }; 37 38* DMA router 39 40DMA routers are transparent IP blocks used to route DMA request lines from 41devices to the DMA controller. Some SoCs (like TI DRA7x) have more peripherals 42integrated with DMA requests than what the DMA controller can handle directly. 43 44Required property: 45- dma-masters: phandle of the DMA controller or list of phandles for 46 the DMA controllers the router can direct the signal to. 47- #dma-cells: Must be at least 1. Used to provide DMA router specific 48 information. See DMA client binding below for more 49 details. 50 51Optional properties: 52- dma-requests: Number of incoming request lines the router can handle. 53- In the node pointed by the dma-masters: 54 - dma-requests: The router driver might need to look for this in order 55 to configure the routing. 56 57Example: 58 sdma_xbar: dma-router@4a002b78 { 59 compatible = "ti,dra7-dma-crossbar"; 60 reg = <0x4a002b78 0xfc>; 61 #dma-cells = <1>; 62 dma-requests = <205>; 63 ti,dma-safe-map = <0>; 64 dma-masters = <&sdma>; 65 }; 66 67* DMA client 68 69Client drivers should specify the DMA property using a phandle to the controller 70followed by DMA controller specific data. 71 72Required property: 73- dmas: List of one or more DMA specifiers, each consisting of 74 - A phandle pointing to DMA controller node 75 - A number of integer cells, as determined by the 76 #dma-cells property in the node referenced by phandle 77 containing DMA controller specific information. This 78 typically contains a DMA request line number or a 79 channel number, but can contain any data that is 80 required for configuring a channel. 81- dma-names: Contains one identifier string for each DMA specifier in 82 the dmas property. The specific strings that can be used 83 are defined in the binding of the DMA client device. 84 Multiple DMA specifiers can be used to represent 85 alternatives and in this case the dma-names for those 86 DMA specifiers must be identical (see examples). 87 88Examples: 89 901. A device with one DMA read channel, one DMA write channel: 91 92 i2c1: i2c@1 { 93 ... 94 dmas = <&dma 2 /* read channel */ 95 &dma 3>; /* write channel */ 96 dma-names = "rx", "tx"; 97 ... 98 }; 99 1002. A single read-write channel with three alternative DMA controllers: 101 102 dmas = <&dma1 5 103 &dma2 7 104 &dma3 2>; 105 dma-names = "rx-tx", "rx-tx", "rx-tx"; 106 1073. A device with three channels, one of which has two alternatives: 108 109 dmas = <&dma1 2 /* read channel */ 110 &dma1 3 /* write channel */ 111 &dma2 0 /* error read */ 112 &dma3 0>; /* alternative error read */ 113 dma-names = "rx", "tx", "error", "error"; 114