aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorStephen Neuendorffer <stephen.neuendorffer@xilinx.com>2008-01-08 14:35:07 -0500
committerGrant Likely <grant.likely@secretlab.ca>2008-01-09 09:56:30 -0500
commitab99eee8ac902a0e176231447f318a0ed68f45d8 (patch)
tree404df81250ce8156cd601988584f00150da090b9
parentfaa6511109026f1549619ebce972be00d1b921ce (diff)
[POWERPC] Xilinx: Update booting-without-of.
This now better describes what the UBoot device tree generator actually does. In particular: 1) Nodes have a label derived from the device name, and a node name derived from a generic version of the device type, e.g. 'ethernet', 'serial', etc. 2) Usage of compound nodes (representing more than one device in the same IP) which actually works. This requires having a valid compatible node, and all the other things that a bus normally has. I've chosen 'xlnx,compound' as the bus name to describe these compound nodes. In addition, I've clarified some of the language relating to how mhs nodes should be represent in the device tree. Signed-off-by: Stephen Neuendorffer <stephen.neuendorffer@xilinx.com> Signed-off-by: Grant Likely <grant.likely@secretlab.ca>
-rw-r--r--Documentation/powerpc/booting-without-of.txt56
1 files changed, 33 insertions, 23 deletions
diff --git a/Documentation/powerpc/booting-without-of.txt b/Documentation/powerpc/booting-without-of.txt
index ee0209a7de3e..a9e2d5ea9a06 100644
--- a/Documentation/powerpc/booting-without-of.txt
+++ b/Documentation/powerpc/booting-without-of.txt
@@ -2292,7 +2292,7 @@ platforms are moved over to use the flattened-device-tree model.
2292 properties of the device node. In general, device nodes for IP-cores 2292 properties of the device node. In general, device nodes for IP-cores
2293 will take the following form: 2293 will take the following form:
2294 2294
2295 (name)@(base-address) { 2295 (name): (generic-name)@(base-address) {
2296 compatible = "xlnx,(ip-core-name)-(HW_VER)" 2296 compatible = "xlnx,(ip-core-name)-(HW_VER)"
2297 [, (list of compatible devices), ...]; 2297 [, (list of compatible devices), ...];
2298 reg = <(baseaddr) (size)>; 2298 reg = <(baseaddr) (size)>;
@@ -2302,6 +2302,9 @@ platforms are moved over to use the flattened-device-tree model.
2302 xlnx,(parameter2) = <(int-value)>; 2302 xlnx,(parameter2) = <(int-value)>;
2303 }; 2303 };
2304 2304
2305 (generic-name): an open firmware-style name that describes the
2306 generic class of device. Preferably, this is one word, such
2307 as 'serial' or 'ethernet'.
2305 (ip-core-name): the name of the ip block (given after the BEGIN 2308 (ip-core-name): the name of the ip block (given after the BEGIN
2306 directive in system.mhs). Should be in lowercase 2309 directive in system.mhs). Should be in lowercase
2307 and all underscores '_' converted to dashes '-'. 2310 and all underscores '_' converted to dashes '-'.
@@ -2310,9 +2313,9 @@ platforms are moved over to use the flattened-device-tree model.
2310 dropped from the parameter name, the name is converted 2313 dropped from the parameter name, the name is converted
2311 to lowercase and all underscore '_' characters are 2314 to lowercase and all underscore '_' characters are
2312 converted to dashes '-'. 2315 converted to dashes '-'.
2313 (baseaddr): the C_BASEADDR parameter. 2316 (baseaddr): the baseaddr parameter value (often named C_BASEADDR).
2314 (HW_VER): from the HW_VER parameter. 2317 (HW_VER): from the HW_VER parameter.
2315 (size): equals C_HIGHADDR - C_BASEADDR + 1 2318 (size): the address range size (often C_HIGHADDR - C_BASEADDR + 1).
2316 2319
2317 Typically, the compatible list will include the exact IP core version 2320 Typically, the compatible list will include the exact IP core version
2318 followed by an older IP core version which implements the same 2321 followed by an older IP core version which implements the same
@@ -2342,11 +2345,11 @@ platforms are moved over to use the flattened-device-tree model.
2342 2345
2343 becomes the following device tree node: 2346 becomes the following device tree node:
2344 2347
2345 opb-uartlite-0@ec100000 { 2348 opb_uartlite_0: serial@ec100000 {
2346 device_type = "serial"; 2349 device_type = "serial";
2347 compatible = "xlnx,opb-uartlite-1.00.b"; 2350 compatible = "xlnx,opb-uartlite-1.00.b";
2348 reg = <ec100000 10000>; 2351 reg = <ec100000 10000>;
2349 interrupt-parent = <&opb-intc>; 2352 interrupt-parent = <&opb_intc_0>;
2350 interrupts = <1 0>; // got this from the opb_intc parameters 2353 interrupts = <1 0>; // got this from the opb_intc parameters
2351 current-speed = <d#115200>; // standard serial device prop 2354 current-speed = <d#115200>; // standard serial device prop
2352 clock-frequency = <d#50000000>; // standard serial device prop 2355 clock-frequency = <d#50000000>; // standard serial device prop
@@ -2355,16 +2358,19 @@ platforms are moved over to use the flattened-device-tree model.
2355 xlnx,use-parity = <0>; 2358 xlnx,use-parity = <0>;
2356 }; 2359 };
2357 2360
2358 Some IP cores actually implement 2 or more logical devices. In this case, 2361 Some IP cores actually implement 2 or more logical devices. In
2359 the device should still describe the whole IP core with a single node 2362 this case, the device should still describe the whole IP core with
2360 and add a child node for each logical device. The ranges property can 2363 a single node and add a child node for each logical device. The
2361 be used to translate from parent IP-core to the registers of each device. 2364 ranges property can be used to translate from parent IP-core to the
2362 (Note: this makes the assumption that both logical devices have the same 2365 registers of each device. In addition, the parent node should be
2363 bus binding. If this is not true, then separate nodes should be used for 2366 compatible with the bus type 'xlnx,compound', and should contain
2364 each logical device). The 'cell-index' property can be used to enumerate 2367 #address-cells and #size-cells, as with any other bus. (Note: this
2365 logical devices within an IP core. For example, the following is the 2368 makes the assumption that both logical devices have the same bus
2366 system.mhs entry for the dual ps2 controller found on the ml403 reference 2369 binding. If this is not true, then separate nodes should be used
2367 design. 2370 for each logical device). The 'cell-index' property can be used to
2371 enumerate logical devices within an IP core. For example, the
2372 following is the system.mhs entry for the dual ps2 controller found
2373 on the ml403 reference design.
2368 2374
2369 BEGIN opb_ps2_dual_ref 2375 BEGIN opb_ps2_dual_ref
2370 PARAMETER INSTANCE = opb_ps2_dual_ref_0 2376 PARAMETER INSTANCE = opb_ps2_dual_ref_0
@@ -2386,21 +2392,24 @@ platforms are moved over to use the flattened-device-tree model.
2386 2392
2387 It would result in the following device tree nodes: 2393 It would result in the following device tree nodes:
2388 2394
2389 opb_ps2_dual_ref_0@a9000000 { 2395 opb_ps2_dual_ref_0: opb-ps2-dual-ref@a9000000 {
2396 #address-cells = <1>;
2397 #size-cells = <1>;
2398 compatible = "xlnx,compound";
2390 ranges = <0 a9000000 2000>; 2399 ranges = <0 a9000000 2000>;
2391 // If this device had extra parameters, then they would 2400 // If this device had extra parameters, then they would
2392 // go here. 2401 // go here.
2393 ps2@0 { 2402 ps2@0 {
2394 compatible = "xlnx,opb-ps2-dual-ref-1.00.a"; 2403 compatible = "xlnx,opb-ps2-dual-ref-1.00.a";
2395 reg = <0 40>; 2404 reg = <0 40>;
2396 interrupt-parent = <&opb-intc>; 2405 interrupt-parent = <&opb_intc_0>;
2397 interrupts = <3 0>; 2406 interrupts = <3 0>;
2398 cell-index = <0>; 2407 cell-index = <0>;
2399 }; 2408 };
2400 ps2@1000 { 2409 ps2@1000 {
2401 compatible = "xlnx,opb-ps2-dual-ref-1.00.a"; 2410 compatible = "xlnx,opb-ps2-dual-ref-1.00.a";
2402 reg = <1000 40>; 2411 reg = <1000 40>;
2403 interrupt-parent = <&opb-intc>; 2412 interrupt-parent = <&opb_intc_0>;
2404 interrupts = <3 0>; 2413 interrupts = <3 0>;
2405 cell-index = <0>; 2414 cell-index = <0>;
2406 }; 2415 };
@@ -2463,17 +2472,18 @@ platforms are moved over to use the flattened-device-tree model.
2463 2472
2464 Gives this device tree (some properties removed for clarity): 2473 Gives this device tree (some properties removed for clarity):
2465 2474
2466 plb-v34-0 { 2475 plb@0 {
2467 #address-cells = <1>; 2476 #address-cells = <1>;
2468 #size-cells = <1>; 2477 #size-cells = <1>;
2478 compatible = "xlnx,plb-v34-1.02.a";
2469 device_type = "ibm,plb"; 2479 device_type = "ibm,plb";
2470 ranges; // 1:1 translation 2480 ranges; // 1:1 translation
2471 2481
2472 plb-bram-if-cntrl-0@ffff0000 { 2482 plb_bram_if_cntrl_0: bram@ffff0000 {
2473 reg = <ffff0000 10000>; 2483 reg = <ffff0000 10000>;
2474 } 2484 }
2475 2485
2476 opb-v20-0 { 2486 opb@20000000 {
2477 #address-cells = <1>; 2487 #address-cells = <1>;
2478 #size-cells = <1>; 2488 #size-cells = <1>;
2479 ranges = <20000000 20000000 20000000 2489 ranges = <20000000 20000000 20000000
@@ -2481,11 +2491,11 @@ platforms are moved over to use the flattened-device-tree model.
2481 80000000 80000000 40000000 2491 80000000 80000000 40000000
2482 c0000000 c0000000 20000000>; 2492 c0000000 c0000000 20000000>;
2483 2493
2484 opb-uart16550-0@a0000000 { 2494 opb_uart16550_0: serial@a0000000 {
2485 reg = <a00000000 2000>; 2495 reg = <a00000000 2000>;
2486 }; 2496 };
2487 2497
2488 opb-intc-0@d1000fc0 { 2498 opb_intc_0: interrupt-controller@d1000fc0 {
2489 reg = <d1000fc0 20>; 2499 reg = <d1000fc0 20>;
2490 }; 2500 };
2491 }; 2501 };