hc
2023-12-08 01573e231f18eb2d99162747186f59511f56b64d
kernel/Documentation/devicetree/bindings/xilinx.txt
....@@ -86,149 +86,6 @@
8686 xlnx,use-parity = <0>;
8787 };
8888
89
- Some IP cores actually implement 2 or more logical devices. In
90
- this case, the device should still describe the whole IP core with
91
- a single node and add a child node for each logical device. The
92
- ranges property can be used to translate from parent IP-core to the
93
- registers of each device. In addition, the parent node should be
94
- compatible with the bus type 'xlnx,compound', and should contain
95
- #address-cells and #size-cells, as with any other bus. (Note: this
96
- makes the assumption that both logical devices have the same bus
97
- binding. If this is not true, then separate nodes should be used
98
- for each logical device). The 'cell-index' property can be used to
99
- enumerate logical devices within an IP core. For example, the
100
- following is the system.mhs entry for the dual ps2 controller found
101
- on the ml403 reference design.
102
-
103
- BEGIN opb_ps2_dual_ref
104
- PARAMETER INSTANCE = opb_ps2_dual_ref_0
105
- PARAMETER HW_VER = 1.00.a
106
- PARAMETER C_BASEADDR = 0xA9000000
107
- PARAMETER C_HIGHADDR = 0xA9001FFF
108
- BUS_INTERFACE SOPB = opb_v20_0
109
- PORT Sys_Intr1 = ps2_1_intr
110
- PORT Sys_Intr2 = ps2_2_intr
111
- PORT Clkin1 = ps2_clk_rx_1
112
- PORT Clkin2 = ps2_clk_rx_2
113
- PORT Clkpd1 = ps2_clk_tx_1
114
- PORT Clkpd2 = ps2_clk_tx_2
115
- PORT Rx1 = ps2_d_rx_1
116
- PORT Rx2 = ps2_d_rx_2
117
- PORT Txpd1 = ps2_d_tx_1
118
- PORT Txpd2 = ps2_d_tx_2
119
- END
120
-
121
- It would result in the following device tree nodes:
122
-
123
- opb_ps2_dual_ref_0: opb-ps2-dual-ref@a9000000 {
124
- #address-cells = <1>;
125
- #size-cells = <1>;
126
- compatible = "xlnx,compound";
127
- ranges = <0 a9000000 2000>;
128
- // If this device had extra parameters, then they would
129
- // go here.
130
- ps2@0 {
131
- compatible = "xlnx,opb-ps2-dual-ref-1.00.a";
132
- reg = <0 40>;
133
- interrupt-parent = <&opb_intc_0>;
134
- interrupts = <3 0>;
135
- cell-index = <0>;
136
- };
137
- ps2@1000 {
138
- compatible = "xlnx,opb-ps2-dual-ref-1.00.a";
139
- reg = <1000 40>;
140
- interrupt-parent = <&opb_intc_0>;
141
- interrupts = <3 0>;
142
- cell-index = <0>;
143
- };
144
- };
145
-
146
- Also, the system.mhs file defines bus attachments from the processor
147
- to the devices. The device tree structure should reflect the bus
148
- attachments. Again an example; this system.mhs fragment:
149
-
150
- BEGIN ppc405_virtex4
151
- PARAMETER INSTANCE = ppc405_0
152
- PARAMETER HW_VER = 1.01.a
153
- BUS_INTERFACE DPLB = plb_v34_0
154
- BUS_INTERFACE IPLB = plb_v34_0
155
- END
156
-
157
- BEGIN opb_intc
158
- PARAMETER INSTANCE = opb_intc_0
159
- PARAMETER HW_VER = 1.00.c
160
- PARAMETER C_BASEADDR = 0xD1000FC0
161
- PARAMETER C_HIGHADDR = 0xD1000FDF
162
- BUS_INTERFACE SOPB = opb_v20_0
163
- END
164
-
165
- BEGIN opb_uart16550
166
- PARAMETER INSTANCE = opb_uart16550_0
167
- PARAMETER HW_VER = 1.00.d
168
- PARAMETER C_BASEADDR = 0xa0000000
169
- PARAMETER C_HIGHADDR = 0xa0001FFF
170
- BUS_INTERFACE SOPB = opb_v20_0
171
- END
172
-
173
- BEGIN plb_v34
174
- PARAMETER INSTANCE = plb_v34_0
175
- PARAMETER HW_VER = 1.02.a
176
- END
177
-
178
- BEGIN plb_bram_if_cntlr
179
- PARAMETER INSTANCE = plb_bram_if_cntlr_0
180
- PARAMETER HW_VER = 1.00.b
181
- PARAMETER C_BASEADDR = 0xFFFF0000
182
- PARAMETER C_HIGHADDR = 0xFFFFFFFF
183
- BUS_INTERFACE SPLB = plb_v34_0
184
- END
185
-
186
- BEGIN plb2opb_bridge
187
- PARAMETER INSTANCE = plb2opb_bridge_0
188
- PARAMETER HW_VER = 1.01.a
189
- PARAMETER C_RNG0_BASEADDR = 0x20000000
190
- PARAMETER C_RNG0_HIGHADDR = 0x3FFFFFFF
191
- PARAMETER C_RNG1_BASEADDR = 0x60000000
192
- PARAMETER C_RNG1_HIGHADDR = 0x7FFFFFFF
193
- PARAMETER C_RNG2_BASEADDR = 0x80000000
194
- PARAMETER C_RNG2_HIGHADDR = 0xBFFFFFFF
195
- PARAMETER C_RNG3_BASEADDR = 0xC0000000
196
- PARAMETER C_RNG3_HIGHADDR = 0xDFFFFFFF
197
- BUS_INTERFACE SPLB = plb_v34_0
198
- BUS_INTERFACE MOPB = opb_v20_0
199
- END
200
-
201
- Gives this device tree (some properties removed for clarity):
202
-
203
- plb@0 {
204
- #address-cells = <1>;
205
- #size-cells = <1>;
206
- compatible = "xlnx,plb-v34-1.02.a";
207
- device_type = "ibm,plb";
208
- ranges; // 1:1 translation
209
-
210
- plb_bram_if_cntrl_0: bram@ffff0000 {
211
- reg = <ffff0000 10000>;
212
- }
213
-
214
- opb@20000000 {
215
- #address-cells = <1>;
216
- #size-cells = <1>;
217
- ranges = <20000000 20000000 20000000
218
- 60000000 60000000 20000000
219
- 80000000 80000000 40000000
220
- c0000000 c0000000 20000000>;
221
-
222
- opb_uart16550_0: serial@a0000000 {
223
- reg = <a00000000 2000>;
224
- };
225
-
226
- opb_intc_0: interrupt-controller@d1000fc0 {
227
- reg = <d1000fc0 20>;
228
- };
229
- };
230
- };
231
-
23289 That covers the general approach to binding xilinx IP cores into the
23390 device tree. The following are bindings for specific devices:
23491