renesas,rcar-dmac.txt 3.3 KB

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