mirror of
https://github.com/torvalds/linux.git
synced 2024-12-25 04:11:49 +00:00
ce1d3fde87
Pull dmaengine updates from Vinod Koul: "This update brings: - the big cleanup up by Maxime for device control and slave capabilities. This makes the API much cleaner. - new IMG MDC driver by Andrew - new Renesas R-Car Gen2 DMA Controller driver by Laurent along with bunch of fixes on rcar drivers - odd fixes and updates spread over driver" * 'for-linus' of git://git.infradead.org/users/vkoul/slave-dma: (130 commits) dmaengine: pl330: add DMA_PAUSE feature dmaengine: pl330: improve pl330_tx_status() function dmaengine: rcar-dmac: Disable channel 0 when using IOMMU dmaengine: rcar-dmac: Work around descriptor mode IOMMU errata dmaengine: rcar-dmac: Allocate hardware descriptors with DMAC device dmaengine: rcar-dmac: Fix oops due to unintialized list in error ISR dmaengine: rcar-dmac: Fix spinlock issues in interrupt dmaenegine: edma: fix sparse warnings dmaengine: rcar-dmac: Fix uninitialized variable usage dmaengine: shdmac: extend PM methods dmaengine: shdmac: use SET_RUNTIME_PM_OPS() dmaengine: pl330: fix bug that cause start the same descs in cyclic dmaengine: at_xdmac: allow muliple dwidths when doing slave transfers dmaengine: at_xdmac: simplify channel configuration stuff dmaengine: at_xdmac: introduce save_cc field dmaengine: at_xdmac: wait for in-progress transaction to complete after pausing a channel ioat: fail self-test if wait_for_completion times out dmaengine: dw: define DW_DMA_MAX_NR_MASTERS dmaengine: dw: amend description of dma_dev field dmatest: move src_off, dst_off, len inside loop ...
96 lines
3.3 KiB
Plaintext
96 lines
3.3 KiB
Plaintext
* Renesas R-Car DMA Controller Device Tree bindings
|
|
|
|
Renesas R-Car Generation 2 SoCs have multiple multi-channel DMA
|
|
controller instances named DMAC capable of serving multiple clients. Channels
|
|
can be dedicated to specific clients or shared between a large number of
|
|
clients.
|
|
|
|
Each DMA client is connected to one dedicated port of the DMAC, identified by
|
|
an 8-bit port number called the MID/RID. A DMA controller can thus serve up to
|
|
256 clients in total. When the number of hardware channels is lower than the
|
|
number of clients to be served, channels must be shared between multiple DMA
|
|
clients. The association of DMA clients to DMAC channels is fully dynamic and
|
|
not described in these device tree bindings.
|
|
|
|
Required Properties:
|
|
|
|
- compatible: must contain "renesas,rcar-dmac"
|
|
|
|
- reg: base address and length of the registers block for the DMAC
|
|
|
|
- interrupts: interrupt specifiers for the DMAC, one for each entry in
|
|
interrupt-names.
|
|
- interrupt-names: one entry per channel, named "ch%u", where %u is the
|
|
channel number ranging from zero to the number of channels minus one.
|
|
|
|
- clock-names: "fck" for the functional clock
|
|
- clocks: a list of phandle + clock-specifier pairs, one for each entry
|
|
in clock-names.
|
|
- clock-names: must contain "fck" for the functional clock.
|
|
|
|
- #dma-cells: must be <1>, the cell specifies the MID/RID of the DMAC port
|
|
connected to the DMA client
|
|
- dma-channels: number of DMA channels
|
|
|
|
Example: R8A7790 (R-Car H2) SYS-DMACs
|
|
|
|
dmac0: dma-controller@e6700000 {
|
|
compatible = "renesas,rcar-dmac";
|
|
reg = <0 0xe6700000 0 0x20000>;
|
|
interrupts = <0 197 IRQ_TYPE_LEVEL_HIGH
|
|
0 200 IRQ_TYPE_LEVEL_HIGH
|
|
0 201 IRQ_TYPE_LEVEL_HIGH
|
|
0 202 IRQ_TYPE_LEVEL_HIGH
|
|
0 203 IRQ_TYPE_LEVEL_HIGH
|
|
0 204 IRQ_TYPE_LEVEL_HIGH
|
|
0 205 IRQ_TYPE_LEVEL_HIGH
|
|
0 206 IRQ_TYPE_LEVEL_HIGH
|
|
0 207 IRQ_TYPE_LEVEL_HIGH
|
|
0 208 IRQ_TYPE_LEVEL_HIGH
|
|
0 209 IRQ_TYPE_LEVEL_HIGH
|
|
0 210 IRQ_TYPE_LEVEL_HIGH
|
|
0 211 IRQ_TYPE_LEVEL_HIGH
|
|
0 212 IRQ_TYPE_LEVEL_HIGH
|
|
0 213 IRQ_TYPE_LEVEL_HIGH
|
|
0 214 IRQ_TYPE_LEVEL_HIGH>;
|
|
interrupt-names = "error",
|
|
"ch0", "ch1", "ch2", "ch3",
|
|
"ch4", "ch5", "ch6", "ch7",
|
|
"ch8", "ch9", "ch10", "ch11",
|
|
"ch12", "ch13", "ch14";
|
|
clocks = <&mstp2_clks R8A7790_CLK_SYS_DMAC0>;
|
|
clock-names = "fck";
|
|
#dma-cells = <1>;
|
|
dma-channels = <15>;
|
|
};
|
|
|
|
dmac1: dma-controller@e6720000 {
|
|
compatible = "renesas,rcar-dmac";
|
|
reg = <0 0xe6720000 0 0x20000>;
|
|
interrupts = <0 220 IRQ_TYPE_LEVEL_HIGH
|
|
0 216 IRQ_TYPE_LEVEL_HIGH
|
|
0 217 IRQ_TYPE_LEVEL_HIGH
|
|
0 218 IRQ_TYPE_LEVEL_HIGH
|
|
0 219 IRQ_TYPE_LEVEL_HIGH
|
|
0 308 IRQ_TYPE_LEVEL_HIGH
|
|
0 309 IRQ_TYPE_LEVEL_HIGH
|
|
0 310 IRQ_TYPE_LEVEL_HIGH
|
|
0 311 IRQ_TYPE_LEVEL_HIGH
|
|
0 312 IRQ_TYPE_LEVEL_HIGH
|
|
0 313 IRQ_TYPE_LEVEL_HIGH
|
|
0 314 IRQ_TYPE_LEVEL_HIGH
|
|
0 315 IRQ_TYPE_LEVEL_HIGH
|
|
0 316 IRQ_TYPE_LEVEL_HIGH
|
|
0 317 IRQ_TYPE_LEVEL_HIGH
|
|
0 318 IRQ_TYPE_LEVEL_HIGH>;
|
|
interrupt-names = "error",
|
|
"ch0", "ch1", "ch2", "ch3",
|
|
"ch4", "ch5", "ch6", "ch7",
|
|
"ch8", "ch9", "ch10", "ch11",
|
|
"ch12", "ch13", "ch14";
|
|
clocks = <&mstp2_clks R8A7790_CLK_SYS_DMAC1>;
|
|
clock-names = "fck";
|
|
#dma-cells = <1>;
|
|
dma-channels = <15>;
|
|
};
|