renesas,rcar-dmac.txt 3.4 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495969798
  1. * Renesas R-Car DMA Controller Device Tree bindings
  2. Renesas R-Car Generation 2 SoCs have have multiple multi-channel DMA
  3. controller instances named DMAC capable of serving multiple clients. Channels
  4. can be dedicated to specific clients or shared between a large number of
  5. clients.
  6. DMA clients are connected to the DMAC ports referenced by an 8-bit identifier
  7. called MID/RID.
  8. Each DMA client is connected to one dedicated port of the DMAC, identified by
  9. an 8-bit port number called the MID/RID. A DMA controller can thus serve up to
  10. 256 clients in total. When the number of hardware channels is lower than the
  11. number of clients to be served, channels must be shared between multiple DMA
  12. clients. The association of DMA clients to DMAC channels is fully dynamic and
  13. not described in these device tree bindings.
  14. Required Properties:
  15. - compatible: must contain "renesas,rcar-dmac"
  16. - reg: base address and length of the registers block for the DMAC
  17. - interrupts: interrupt specifiers for the DMAC, one for each entry in
  18. interrupt-names.
  19. - interrupt-names: one entry per channel, named "ch%u", where %u is the
  20. channel number ranging from zero to the number of channels minus one.
  21. - clock-names: "fck" for the functional clock
  22. - clocks: a list of phandle + clock-specifier pairs, one for each entry
  23. in clock-names.
  24. - clock-names: must contain "fck" for the functional clock.
  25. - #dma-cells: must be <1>, the cell specifies the MID/RID of the DMAC port
  26. connected to the DMA client
  27. - dma-channels: number of DMA channels
  28. Example: R8A7790 (R-Car H2) SYS-DMACs
  29. dmac0: dma-controller@e6700000 {
  30. compatible = "renesas,rcar-dmac";
  31. reg = <0 0xe6700000 0 0x20000>;
  32. interrupts = <0 197 IRQ_TYPE_LEVEL_HIGH
  33. 0 200 IRQ_TYPE_LEVEL_HIGH
  34. 0 201 IRQ_TYPE_LEVEL_HIGH
  35. 0 202 IRQ_TYPE_LEVEL_HIGH
  36. 0 203 IRQ_TYPE_LEVEL_HIGH
  37. 0 204 IRQ_TYPE_LEVEL_HIGH
  38. 0 205 IRQ_TYPE_LEVEL_HIGH
  39. 0 206 IRQ_TYPE_LEVEL_HIGH
  40. 0 207 IRQ_TYPE_LEVEL_HIGH
  41. 0 208 IRQ_TYPE_LEVEL_HIGH
  42. 0 209 IRQ_TYPE_LEVEL_HIGH
  43. 0 210 IRQ_TYPE_LEVEL_HIGH
  44. 0 211 IRQ_TYPE_LEVEL_HIGH
  45. 0 212 IRQ_TYPE_LEVEL_HIGH
  46. 0 213 IRQ_TYPE_LEVEL_HIGH
  47. 0 214 IRQ_TYPE_LEVEL_HIGH>;
  48. interrupt-names = "error",
  49. "ch0", "ch1", "ch2", "ch3",
  50. "ch4", "ch5", "ch6", "ch7",
  51. "ch8", "ch9", "ch10", "ch11",
  52. "ch12", "ch13", "ch14";
  53. clocks = <&mstp2_clks R8A7790_CLK_SYS_DMAC0>;
  54. clock-names = "fck";
  55. #dma-cells = <1>;
  56. dma-channels = <15>;
  57. };
  58. dmac1: dma-controller@e6720000 {
  59. compatible = "renesas,rcar-dmac";
  60. reg = <0 0xe6720000 0 0x20000>;
  61. interrupts = <0 220 IRQ_TYPE_LEVEL_HIGH
  62. 0 216 IRQ_TYPE_LEVEL_HIGH
  63. 0 217 IRQ_TYPE_LEVEL_HIGH
  64. 0 218 IRQ_TYPE_LEVEL_HIGH
  65. 0 219 IRQ_TYPE_LEVEL_HIGH
  66. 0 308 IRQ_TYPE_LEVEL_HIGH
  67. 0 309 IRQ_TYPE_LEVEL_HIGH
  68. 0 310 IRQ_TYPE_LEVEL_HIGH
  69. 0 311 IRQ_TYPE_LEVEL_HIGH
  70. 0 312 IRQ_TYPE_LEVEL_HIGH
  71. 0 313 IRQ_TYPE_LEVEL_HIGH
  72. 0 314 IRQ_TYPE_LEVEL_HIGH
  73. 0 315 IRQ_TYPE_LEVEL_HIGH
  74. 0 316 IRQ_TYPE_LEVEL_HIGH
  75. 0 317 IRQ_TYPE_LEVEL_HIGH
  76. 0 318 IRQ_TYPE_LEVEL_HIGH>;
  77. interrupt-names = "error",
  78. "ch0", "ch1", "ch2", "ch3",
  79. "ch4", "ch5", "ch6", "ch7",
  80. "ch8", "ch9", "ch10", "ch11",
  81. "ch12", "ch13", "ch14";
  82. clocks = <&mstp2_clks R8A7790_CLK_SYS_DMAC1>;
  83. clock-names = "fck";
  84. #dma-cells = <1>;
  85. dma-channels = <15>;
  86. };