diff options
author | Stephen Neuendorffer <stephen.neuendorffer@xilinx.com> | 2008-01-08 14:35:07 -0500 |
---|---|---|
committer | Grant Likely <grant.likely@secretlab.ca> | 2008-01-09 09:56:30 -0500 |
commit | ab99eee8ac902a0e176231447f318a0ed68f45d8 (patch) | |
tree | 404df81250ce8156cd601988584f00150da090b9 /Documentation/powerpc/booting-without-of.txt | |
parent | faa6511109026f1549619ebce972be00d1b921ce (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>
Diffstat (limited to 'Documentation/powerpc/booting-without-of.txt')
-rw-r--r-- | Documentation/powerpc/booting-without-of.txt | 56 |
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 | }; |