Jon Hunter | aa3da64 | 2012-09-14 17:41:56 -0500 | [diff] [blame] | 1 | * Generic DMA Controller and DMA request bindings |
| 2 | |
| 3 | Generic binding to provide a way for a driver using DMA Engine to retrieve the |
| 4 | DMA request or channel information that goes from a hardware device to a DMA |
| 5 | controller. |
| 6 | |
| 7 | |
| 8 | * DMA controller |
| 9 | |
| 10 | Required 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 | |
| 15 | Optional properties: |
Matt Porter | deef124 | 2012-09-19 10:49:48 -0400 | [diff] [blame] | 16 | - dma-channels: Number of DMA channels supported by the controller. |
| 17 | - dma-requests: Number of DMA requests signals supported by the |
Jon Hunter | aa3da64 | 2012-09-14 17:41:56 -0500 | [diff] [blame] | 18 | controller. |
| 19 | |
| 20 | Example: |
| 21 | |
| 22 | dma: dma@48000000 { |
Matt Porter | deef124 | 2012-09-19 10:49:48 -0400 | [diff] [blame] | 23 | compatible = "ti,omap-sdma"; |
Jon Hunter | aa3da64 | 2012-09-14 17:41:56 -0500 | [diff] [blame] | 24 | reg = <0x48000000 0x1000>; |
| 25 | interrupts = <0 12 0x4 |
| 26 | 0 13 0x4 |
| 27 | 0 14 0x4 |
| 28 | 0 15 0x4>; |
| 29 | #dma-cells = <1>; |
Matt Porter | deef124 | 2012-09-19 10:49:48 -0400 | [diff] [blame] | 30 | dma-channels = <32>; |
| 31 | dma-requests = <127>; |
Jon Hunter | aa3da64 | 2012-09-14 17:41:56 -0500 | [diff] [blame] | 32 | }; |
| 33 | |
| 34 | |
| 35 | * DMA client |
| 36 | |
| 37 | Client drivers should specify the DMA property using a phandle to the controller |
| 38 | followed by DMA controller specific data. |
| 39 | |
| 40 | Required property: |
| 41 | - dmas: List of one or more DMA specifiers, each consisting of |
| 42 | - A phandle pointing to DMA controller node |
| 43 | - A number of integer cells, as determined by the |
| 44 | #dma-cells property in the node referenced by phandle |
| 45 | containing DMA controller specific information. This |
| 46 | typically contains a DMA request line number or a |
| 47 | channel number, but can contain any data that is used |
| 48 | required for configuring a channel. |
| 49 | - dma-names: Contains one identifier string for each DMA specifier in |
| 50 | the dmas property. The specific strings that can be used |
| 51 | are defined in the binding of the DMA client device. |
| 52 | Multiple DMA specifiers can be used to represent |
| 53 | alternatives and in this case the dma-names for those |
| 54 | DMA specifiers must be identical (see examples). |
| 55 | |
| 56 | Examples: |
| 57 | |
| 58 | 1. A device with one DMA read channel, one DMA write channel: |
| 59 | |
| 60 | i2c1: i2c@1 { |
| 61 | ... |
| 62 | dmas = <&dma 2 /* read channel */ |
| 63 | &dma 3>; /* write channel */ |
Matt Porter | deef124 | 2012-09-19 10:49:48 -0400 | [diff] [blame] | 64 | dma-names = "rx", "tx"; |
Jon Hunter | aa3da64 | 2012-09-14 17:41:56 -0500 | [diff] [blame] | 65 | ... |
| 66 | }; |
| 67 | |
| 68 | 2. A single read-write channel with three alternative DMA controllers: |
| 69 | |
| 70 | dmas = <&dma1 5 |
| 71 | &dma2 7 |
| 72 | &dma3 2>; |
Matt Porter | deef124 | 2012-09-19 10:49:48 -0400 | [diff] [blame] | 73 | dma-names = "rx-tx", "rx-tx", "rx-tx"; |
Jon Hunter | aa3da64 | 2012-09-14 17:41:56 -0500 | [diff] [blame] | 74 | |
| 75 | 3. A device with three channels, one of which has two alternatives: |
| 76 | |
| 77 | dmas = <&dma1 2 /* read channel */ |
| 78 | &dma1 3 /* write channel */ |
| 79 | &dma2 0 /* error read */ |
| 80 | &dma3 0>; /* alternative error read */ |
| 81 | dma-names = "rx", "tx", "error", "error"; |