1# SPDX-License-Identifier: GPL-2.0
2%YAML 1.2
3---
4$id: http://devicetree.org/schemas/arm/sunxi/allwinner,sun4i-a10-mbus.yaml#
5$schema: http://devicetree.org/meta-schemas/core.yaml#
6
7title: Allwinner Memory Bus (MBUS) controller
8
9maintainers:
10  - Chen-Yu Tsai <wens@csie.org>
11  - Maxime Ripard <mripard@kernel.org>
12
13description: |
14  The MBUS controller drives the MBUS that other devices in the SoC
15  will use to perform DMA. It also has a register interface that
16  allows to monitor and control the bandwidth and priorities for
17  masters on that bus.
18
19  Each device having to perform their DMA through the MBUS must have
20  the interconnects and interconnect-names properties set to the MBUS
21  controller and with "dma-mem" as the interconnect name.
22
23properties:
24  "#interconnect-cells":
25    const: 1
26    description:
27      The content of the cell is the MBUS ID.
28
29  compatible:
30    enum:
31      - allwinner,sun5i-a13-mbus
32      - allwinner,sun8i-h3-mbus
33      - allwinner,sun8i-r40-mbus
34      - allwinner,sun50i-a64-mbus
35      - allwinner,sun50i-h5-mbus
36
37  reg:
38    minItems: 1
39    items:
40      - description: MBUS interconnect/bandwidth limit/PMU registers
41      - description: DRAM controller/PHY registers
42
43  reg-names:
44    minItems: 1
45    items:
46      - const: mbus
47      - const: dram
48
49  clocks:
50    minItems: 1
51    items:
52      - description: MBUS interconnect module clock
53      - description: DRAM controller/PHY module clock
54      - description: Register bus clock, shared by MBUS and DRAM
55
56  clock-names:
57    minItems: 1
58    items:
59      - const: mbus
60      - const: dram
61      - const: bus
62
63  interrupts:
64    maxItems: 1
65    description:
66      MBUS PMU activity interrupt.
67
68  dma-ranges:
69    description:
70      See section 2.3.9 of the DeviceTree Specification.
71
72  '#address-cells': true
73
74  '#size-cells': true
75
76required:
77  - "#interconnect-cells"
78  - compatible
79  - reg
80  - clocks
81  - dma-ranges
82
83if:
84  properties:
85    compatible:
86      contains:
87        enum:
88          - allwinner,sun8i-h3-mbus
89          - allwinner,sun50i-a64-mbus
90          - allwinner,sun50i-h5-mbus
91
92then:
93  properties:
94    reg:
95      minItems: 2
96
97    reg-names:
98      minItems: 2
99
100    clocks:
101      minItems: 3
102
103    clock-names:
104      minItems: 3
105
106  required:
107    - reg-names
108    - clock-names
109
110else:
111  properties:
112    reg:
113      maxItems: 1
114
115    reg-names:
116      maxItems: 1
117
118    clocks:
119      maxItems: 1
120
121    clock-names:
122      maxItems: 1
123
124additionalProperties: false
125
126examples:
127  - |
128    #include <dt-bindings/clock/sun50i-a64-ccu.h>
129    #include <dt-bindings/interrupt-controller/arm-gic.h>
130
131    dram-controller@1c01000 {
132        compatible = "allwinner,sun5i-a13-mbus";
133        reg = <0x01c01000 0x1000>;
134        clocks = <&ccu CLK_MBUS>;
135        #address-cells = <1>;
136        #size-cells = <1>;
137        dma-ranges = <0x00000000 0x40000000 0x20000000>;
138        #interconnect-cells = <1>;
139    };
140
141  - |
142    dram-controller@1c62000 {
143        compatible = "allwinner,sun50i-a64-mbus";
144        reg = <0x01c62000 0x1000>,
145              <0x01c63000 0x1000>;
146        reg-names = "mbus", "dram";
147        clocks = <&ccu CLK_MBUS>,
148                 <&ccu CLK_DRAM>,
149                 <&ccu CLK_BUS_DRAM>;
150        clock-names = "mbus", "dram", "bus";
151        interrupts = <GIC_SPI 69 IRQ_TYPE_LEVEL_HIGH>;
152        #address-cells = <1>;
153        #size-cells = <1>;
154        dma-ranges = <0x00000000 0x40000000 0xc0000000>;
155        #interconnect-cells = <1>;
156    };
157
158...
159