diff options
Diffstat (limited to 'Documentation/powerpc')
-rw-r--r-- | Documentation/powerpc/booting-without-of.txt | 80 |
1 files changed, 39 insertions, 41 deletions
diff --git a/Documentation/powerpc/booting-without-of.txt b/Documentation/powerpc/booting-without-of.txt index 88cdb592fdf9..033a3f3b3ab7 100644 --- a/Documentation/powerpc/booting-without-of.txt +++ b/Documentation/powerpc/booting-without-of.txt | |||
@@ -39,7 +39,7 @@ | |||
39 | and property data. The old style variable | 39 | and property data. The old style variable |
40 | alignment would make it impossible to do | 40 | alignment would make it impossible to do |
41 | "simple" insertion of properties using | 41 | "simple" insertion of properties using |
42 | memove (thanks Milton for | 42 | memmove (thanks Milton for |
43 | noticing). Updated kernel patch as well | 43 | noticing). Updated kernel patch as well |
44 | - Correct a few more alignment constraints | 44 | - Correct a few more alignment constraints |
45 | - Add a chapter about the device-tree | 45 | - Add a chapter about the device-tree |
@@ -55,7 +55,7 @@ | |||
55 | 55 | ||
56 | ToDo: | 56 | ToDo: |
57 | - Add some definitions of interrupt tree (simple/complex) | 57 | - Add some definitions of interrupt tree (simple/complex) |
58 | - Add some definitions for pci host bridges | 58 | - Add some definitions for PCI host bridges |
59 | - Add some common address format examples | 59 | - Add some common address format examples |
60 | - Add definitions for standard properties and "compatible" | 60 | - Add definitions for standard properties and "compatible" |
61 | names for cells that are not already defined by the existing | 61 | names for cells that are not already defined by the existing |
@@ -114,7 +114,7 @@ it with special cases. | |||
114 | forth words isn't required), you can enter the kernel with: | 114 | forth words isn't required), you can enter the kernel with: |
115 | 115 | ||
116 | r5 : OF callback pointer as defined by IEEE 1275 | 116 | r5 : OF callback pointer as defined by IEEE 1275 |
117 | bindings to powerpc. Only the 32 bit client interface | 117 | bindings to powerpc. Only the 32-bit client interface |
118 | is currently supported | 118 | is currently supported |
119 | 119 | ||
120 | r3, r4 : address & length of an initrd if any or 0 | 120 | r3, r4 : address & length of an initrd if any or 0 |
@@ -194,7 +194,7 @@ it with special cases. | |||
194 | for this is to keep kernels on embedded systems small and efficient; | 194 | for this is to keep kernels on embedded systems small and efficient; |
195 | part of this is due to the fact the code is already that way. In the | 195 | part of this is due to the fact the code is already that way. In the |
196 | future, a kernel may support multiple platforms, but only if the | 196 | future, a kernel may support multiple platforms, but only if the |
197 | platforms feature the same core architectire. A single kernel build | 197 | platforms feature the same core architecture. A single kernel build |
198 | cannot support both configurations with Book E and configurations | 198 | cannot support both configurations with Book E and configurations |
199 | with classic Powerpc architectures. | 199 | with classic Powerpc architectures. |
200 | 200 | ||
@@ -215,7 +215,7 @@ of the boot sequences.... someone speak up if this is wrong! | |||
215 | enable another config option to select the specific board | 215 | enable another config option to select the specific board |
216 | supported. | 216 | supported. |
217 | 217 | ||
218 | NOTE: If ben doesn't merge the setup files, may need to change this to | 218 | NOTE: If Ben doesn't merge the setup files, may need to change this to |
219 | point to setup_32.c | 219 | point to setup_32.c |
220 | 220 | ||
221 | 221 | ||
@@ -256,7 +256,7 @@ struct boot_param_header { | |||
256 | u32 off_dt_struct; /* offset to structure */ | 256 | u32 off_dt_struct; /* offset to structure */ |
257 | u32 off_dt_strings; /* offset to strings */ | 257 | u32 off_dt_strings; /* offset to strings */ |
258 | u32 off_mem_rsvmap; /* offset to memory reserve map | 258 | u32 off_mem_rsvmap; /* offset to memory reserve map |
259 | */ | 259 | */ |
260 | u32 version; /* format version */ | 260 | u32 version; /* format version */ |
261 | u32 last_comp_version; /* last compatible version */ | 261 | u32 last_comp_version; /* last compatible version */ |
262 | 262 | ||
@@ -276,7 +276,7 @@ struct boot_param_header { | |||
276 | #define OF_DT_HEADER 0xd00dfeed /* 4: version, | 276 | #define OF_DT_HEADER 0xd00dfeed /* 4: version, |
277 | 4: total size */ | 277 | 4: total size */ |
278 | #define OF_DT_BEGIN_NODE 0x1 /* Start node: full name | 278 | #define OF_DT_BEGIN_NODE 0x1 /* Start node: full name |
279 | */ | 279 | */ |
280 | #define OF_DT_END_NODE 0x2 /* End node */ | 280 | #define OF_DT_END_NODE 0x2 /* End node */ |
281 | #define OF_DT_PROP 0x3 /* Property: name off, | 281 | #define OF_DT_PROP 0x3 /* Property: name off, |
282 | size, content */ | 282 | size, content */ |
@@ -313,9 +313,8 @@ struct boot_param_header { | |||
313 | - off_mem_rsvmap | 313 | - off_mem_rsvmap |
314 | 314 | ||
315 | This is an offset from the beginning of the header to the start | 315 | This is an offset from the beginning of the header to the start |
316 | of the reserved memory map. This map is a list of pairs of 64 | 316 | of the reserved memory map. This map is a list of pairs of 64- |
317 | bit integers. Each pair is a physical address and a size. The | 317 | bit integers. Each pair is a physical address and a size. The |
318 | |||
319 | list is terminated by an entry of size 0. This map provides the | 318 | list is terminated by an entry of size 0. This map provides the |
320 | kernel with a list of physical memory areas that are "reserved" | 319 | kernel with a list of physical memory areas that are "reserved" |
321 | and thus not to be used for memory allocations, especially during | 320 | and thus not to be used for memory allocations, especially during |
@@ -328,7 +327,7 @@ struct boot_param_header { | |||
328 | contain _at least_ this DT block itself (header,total_size). If | 327 | contain _at least_ this DT block itself (header,total_size). If |
329 | you are passing an initrd to the kernel, you should reserve it as | 328 | you are passing an initrd to the kernel, you should reserve it as |
330 | well. You do not need to reserve the kernel image itself. The map | 329 | well. You do not need to reserve the kernel image itself. The map |
331 | should be 64 bit aligned. | 330 | should be 64-bit aligned. |
332 | 331 | ||
333 | - version | 332 | - version |
334 | 333 | ||
@@ -478,7 +477,7 @@ referencing another node via "phandle" is when laying out the | |||
478 | interrupt tree which will be described in a further version of this | 477 | interrupt tree which will be described in a further version of this |
479 | document. | 478 | document. |
480 | 479 | ||
481 | This "linux, phandle" property is a 32 bit value that uniquely | 480 | This "linux, phandle" property is a 32-bit value that uniquely |
482 | identifies a node. You are free to use whatever values or system of | 481 | identifies a node. You are free to use whatever values or system of |
483 | values, internal pointers, or whatever to generate these, the only | 482 | values, internal pointers, or whatever to generate these, the only |
484 | requirement is that every node for which you provide that property has | 483 | requirement is that every node for which you provide that property has |
@@ -488,7 +487,7 @@ Here is an example of a simple device-tree. In this example, an "o" | |||
488 | designates a node followed by the node unit name. Properties are | 487 | designates a node followed by the node unit name. Properties are |
489 | presented with their name followed by their content. "content" | 488 | presented with their name followed by their content. "content" |
490 | represents an ASCII string (zero terminated) value, while <content> | 489 | represents an ASCII string (zero terminated) value, while <content> |
491 | represents a 32 bit hexadecimal value. The various nodes in this | 490 | represents a 32-bit hexadecimal value. The various nodes in this |
492 | example will be discussed in a later chapter. At this point, it is | 491 | example will be discussed in a later chapter. At this point, it is |
493 | only meant to give you a idea of what a device-tree looks like. I have | 492 | only meant to give you a idea of what a device-tree looks like. I have |
494 | purposefully kept the "name" and "linux,phandle" properties which | 493 | purposefully kept the "name" and "linux,phandle" properties which |
@@ -560,15 +559,15 @@ Here's the basic structure of a single node: | |||
560 | * [align gap to next 4 bytes boundary] | 559 | * [align gap to next 4 bytes boundary] |
561 | * for each property: | 560 | * for each property: |
562 | * token OF_DT_PROP (that is 0x00000003) | 561 | * token OF_DT_PROP (that is 0x00000003) |
563 | * 32 bit value of property value size in bytes (or 0 of no | 562 | * 32-bit value of property value size in bytes (or 0 if no |
564 | * value) | 563 | value) |
565 | * 32 bit value of offset in string block of property name | 564 | * 32-bit value of offset in string block of property name |
566 | * property value data if any | 565 | * property value data if any |
567 | * [align gap to next 4 bytes boundary] | 566 | * [align gap to next 4 bytes boundary] |
568 | * [child nodes if any] | 567 | * [child nodes if any] |
569 | * token OF_DT_END_NODE (that is 0x00000002) | 568 | * token OF_DT_END_NODE (that is 0x00000002) |
570 | 569 | ||
571 | So the node content can be summarised as a start token, a full path, | 570 | So the node content can be summarized as a start token, a full path, |
572 | a list of properties, a list of child nodes, and an end token. Every | 571 | a list of properties, a list of child nodes, and an end token. Every |
573 | child node is a full node structure itself as defined above. | 572 | child node is a full node structure itself as defined above. |
574 | 573 | ||
@@ -600,7 +599,7 @@ provide those properties yourself. | |||
600 | ---------------------------------------------- | 599 | ---------------------------------------------- |
601 | 600 | ||
602 | The general rule is documented in the various Open Firmware | 601 | The general rule is documented in the various Open Firmware |
603 | documentations. If you chose to describe a bus with the device-tree | 602 | documentations. If you choose to describe a bus with the device-tree |
604 | and there exist an OF bus binding, then you should follow the | 603 | and there exist an OF bus binding, then you should follow the |
605 | specification. However, the kernel does not require every single | 604 | specification. However, the kernel does not require every single |
606 | device or bus to be described by the device tree. | 605 | device or bus to be described by the device tree. |
@@ -613,9 +612,9 @@ those properties defining addresses format for devices directly mapped | |||
613 | on the processor bus. | 612 | on the processor bus. |
614 | 613 | ||
615 | Those 2 properties define 'cells' for representing an address and a | 614 | Those 2 properties define 'cells' for representing an address and a |
616 | size. A "cell" is a 32 bit number. For example, if both contain 2 | 615 | size. A "cell" is a 32-bit number. For example, if both contain 2 |
617 | like the example tree given above, then an address and a size are both | 616 | like the example tree given above, then an address and a size are both |
618 | composed of 2 cells, and each is a 64 bit number (cells are | 617 | composed of 2 cells, and each is a 64-bit number (cells are |
619 | concatenated and expected to be in big endian format). Another example | 618 | concatenated and expected to be in big endian format). Another example |
620 | is the way Apple firmware defines them, with 2 cells for an address | 619 | is the way Apple firmware defines them, with 2 cells for an address |
621 | and one cell for a size. Most 32-bit implementations should define | 620 | and one cell for a size. Most 32-bit implementations should define |
@@ -649,7 +648,7 @@ prom_parse.c file of the recent kernels for your bus type. | |||
649 | 648 | ||
650 | The "reg" property only defines addresses and sizes (if #size-cells | 649 | The "reg" property only defines addresses and sizes (if #size-cells |
651 | is non-0) within a given bus. In order to translate addresses upward | 650 | is non-0) within a given bus. In order to translate addresses upward |
652 | (that is into parent bus addresses, and possibly into cpu physical | 651 | (that is into parent bus addresses, and possibly into CPU physical |
653 | addresses), all busses must contain a "ranges" property. If the | 652 | addresses), all busses must contain a "ranges" property. If the |
654 | "ranges" property is missing at a given level, it's assumed that | 653 | "ranges" property is missing at a given level, it's assumed that |
655 | translation isn't possible. The format of the "ranges" property for a | 654 | translation isn't possible. The format of the "ranges" property for a |
@@ -665,9 +664,9 @@ example, for a PCI host controller, that would be a CPU address. For a | |||
665 | PCI<->ISA bridge, that would be a PCI address. It defines the base | 664 | PCI<->ISA bridge, that would be a PCI address. It defines the base |
666 | address in the parent bus where the beginning of that range is mapped. | 665 | address in the parent bus where the beginning of that range is mapped. |
667 | 666 | ||
668 | For a new 64 bit powerpc board, I recommend either the 2/2 format or | 667 | For a new 64-bit powerpc board, I recommend either the 2/2 format or |
669 | Apple's 2/1 format which is slightly more compact since sizes usually | 668 | Apple's 2/1 format which is slightly more compact since sizes usually |
670 | fit in a single 32 bit word. New 32 bit powerpc boards should use a | 669 | fit in a single 32-bit word. New 32-bit powerpc boards should use a |
671 | 1/1 format, unless the processor supports physical addresses greater | 670 | 1/1 format, unless the processor supports physical addresses greater |
672 | than 32-bits, in which case a 2/1 format is recommended. | 671 | than 32-bits, in which case a 2/1 format is recommended. |
673 | 672 | ||
@@ -781,7 +780,7 @@ address which can extend beyond that limit. | |||
781 | Required properties: | 780 | Required properties: |
782 | 781 | ||
783 | - device_type : has to be "cpu" | 782 | - device_type : has to be "cpu" |
784 | - reg : This is the physical cpu number, it's a single 32 bit cell | 783 | - reg : This is the physical CPU number, it's a single 32-bit cell |
785 | and is also used as-is as the unit number for constructing the | 784 | and is also used as-is as the unit number for constructing the |
786 | unit name in the full path. For example, with 2 CPUs, you would | 785 | unit name in the full path. For example, with 2 CPUs, you would |
787 | have the full path: | 786 | have the full path: |
@@ -802,7 +801,7 @@ address which can extend beyond that limit. | |||
802 | the kernel timebase/decrementer calibration based on this | 801 | the kernel timebase/decrementer calibration based on this |
803 | value. | 802 | value. |
804 | - clock-frequency : a cell indicating the CPU core clock frequency | 803 | - clock-frequency : a cell indicating the CPU core clock frequency |
805 | in Hz. A new property will be defined for 64 bit values, but if | 804 | in Hz. A new property will be defined for 64-bit values, but if |
806 | your frequency is < 4Ghz, one cell is enough. Here as well as | 805 | your frequency is < 4Ghz, one cell is enough. Here as well as |
807 | for the above, the common code doesn't use that property, but | 806 | for the above, the common code doesn't use that property, but |
808 | you are welcome to re-use the pSeries or Maple one. A future | 807 | you are welcome to re-use the pSeries or Maple one. A future |
@@ -924,8 +923,7 @@ address which can extend beyond that limit. | |||
924 | The SOC node may contain child nodes for each SOC device that the | 923 | The SOC node may contain child nodes for each SOC device that the |
925 | platform uses. Nodes should not be created for devices which exist | 924 | platform uses. Nodes should not be created for devices which exist |
926 | on the SOC but are not used by a particular platform. See chapter VI | 925 | on the SOC but are not used by a particular platform. See chapter VI |
927 | for more information on how to specify devices that are part of an | 926 | for more information on how to specify devices that are part of a SOC. |
928 | SOC. | ||
929 | 927 | ||
930 | Example SOC node for the MPC8540: | 928 | Example SOC node for the MPC8540: |
931 | 929 | ||
@@ -988,7 +986,7 @@ The syntax of the dtc tool is | |||
988 | [-o output-filename] [-V output_version] input_filename | 986 | [-o output-filename] [-V output_version] input_filename |
989 | 987 | ||
990 | 988 | ||
991 | The "output_version" defines what versio of the "blob" format will be | 989 | The "output_version" defines what version of the "blob" format will be |
992 | generated. Supported versions are 1,2,3 and 16. The default is | 990 | generated. Supported versions are 1,2,3 and 16. The default is |
993 | currently version 3 but that may change in the future to version 16. | 991 | currently version 3 but that may change in the future to version 16. |
994 | 992 | ||
@@ -1010,12 +1008,12 @@ supported currently at the toplevel. | |||
1010 | */ | 1008 | */ |
1011 | 1009 | ||
1012 | property2 = <1234abcd>; /* define a property containing a | 1010 | property2 = <1234abcd>; /* define a property containing a |
1013 | * numerical 32 bits value (hexadecimal) | 1011 | * numerical 32-bit value (hexadecimal) |
1014 | */ | 1012 | */ |
1015 | 1013 | ||
1016 | property3 = <12345678 12345678 deadbeef>; | 1014 | property3 = <12345678 12345678 deadbeef>; |
1017 | /* define a property containing 3 | 1015 | /* define a property containing 3 |
1018 | * numerical 32 bits values (cells) in | 1016 | * numerical 32-bit values (cells) in |
1019 | * hexadecimal | 1017 | * hexadecimal |
1020 | */ | 1018 | */ |
1021 | property4 = [0a 0b 0c 0d de ea ad be ef]; | 1019 | property4 = [0a 0b 0c 0d de ea ad be ef]; |
@@ -1084,7 +1082,7 @@ while all this has been defined and implemented. | |||
1084 | its usage in early_init_devtree(), and the corresponding various | 1082 | its usage in early_init_devtree(), and the corresponding various |
1085 | early_init_dt_scan_*() callbacks. That code can be re-used in a | 1083 | early_init_dt_scan_*() callbacks. That code can be re-used in a |
1086 | GPL bootloader, and as the author of that code, I would be happy | 1084 | GPL bootloader, and as the author of that code, I would be happy |
1087 | to discuss possible free licencing to any vendor who wishes to | 1085 | to discuss possible free licensing to any vendor who wishes to |
1088 | integrate all or part of this code into a non-GPL bootloader. | 1086 | integrate all or part of this code into a non-GPL bootloader. |
1089 | 1087 | ||
1090 | 1088 | ||
@@ -1093,7 +1091,7 @@ VI - System-on-a-chip devices and nodes | |||
1093 | ======================================= | 1091 | ======================================= |
1094 | 1092 | ||
1095 | Many companies are now starting to develop system-on-a-chip | 1093 | Many companies are now starting to develop system-on-a-chip |
1096 | processors, where the processor core (cpu) and many peripheral devices | 1094 | processors, where the processor core (CPU) and many peripheral devices |
1097 | exist on a single piece of silicon. For these SOCs, an SOC node | 1095 | exist on a single piece of silicon. For these SOCs, an SOC node |
1098 | should be used that defines child nodes for the devices that make | 1096 | should be used that defines child nodes for the devices that make |
1099 | up the SOC. While platforms are not required to use this model in | 1097 | up the SOC. While platforms are not required to use this model in |
@@ -1300,10 +1298,10 @@ platforms are moved over to use the flattened-device-tree model. | |||
1300 | and additions : | 1298 | and additions : |
1301 | 1299 | ||
1302 | Required properties : | 1300 | Required properties : |
1303 | - compatible : Should be "fsl-usb2-mph" for multi port host usb | 1301 | - compatible : Should be "fsl-usb2-mph" for multi port host USB |
1304 | controllers, or "fsl-usb2-dr" for dual role usb controllers | 1302 | controllers, or "fsl-usb2-dr" for dual role USB controllers |
1305 | - phy_type : For multi port host usb controllers, should be one of | 1303 | - phy_type : For multi port host USB controllers, should be one of |
1306 | "ulpi", or "serial". For dual role usb controllers, should be | 1304 | "ulpi", or "serial". For dual role USB controllers, should be |
1307 | one of "ulpi", "utmi", "utmi_wide", or "serial". | 1305 | one of "ulpi", "utmi", "utmi_wide", or "serial". |
1308 | - reg : Offset and length of the register set for the device | 1306 | - reg : Offset and length of the register set for the device |
1309 | - port0 : boolean; if defined, indicates port0 is connected for | 1307 | - port0 : boolean; if defined, indicates port0 is connected for |
@@ -1327,7 +1325,7 @@ platforms are moved over to use the flattened-device-tree model. | |||
1327 | - interrupt-parent : the phandle for the interrupt controller that | 1325 | - interrupt-parent : the phandle for the interrupt controller that |
1328 | services interrupts for this device. | 1326 | services interrupts for this device. |
1329 | 1327 | ||
1330 | Example multi port host usb controller device node : | 1328 | Example multi port host USB controller device node : |
1331 | usb@22000 { | 1329 | usb@22000 { |
1332 | device_type = "usb"; | 1330 | device_type = "usb"; |
1333 | compatible = "fsl-usb2-mph"; | 1331 | compatible = "fsl-usb2-mph"; |
@@ -1341,7 +1339,7 @@ platforms are moved over to use the flattened-device-tree model. | |||
1341 | port1; | 1339 | port1; |
1342 | }; | 1340 | }; |
1343 | 1341 | ||
1344 | Example dual role usb controller device node : | 1342 | Example dual role USB controller device node : |
1345 | usb@23000 { | 1343 | usb@23000 { |
1346 | device_type = "usb"; | 1344 | device_type = "usb"; |
1347 | compatible = "fsl-usb2-dr"; | 1345 | compatible = "fsl-usb2-dr"; |
@@ -1375,7 +1373,7 @@ platforms are moved over to use the flattened-device-tree model. | |||
1375 | - channel-fifo-len : An integer representing the number of | 1373 | - channel-fifo-len : An integer representing the number of |
1376 | descriptor pointers each channel fetch fifo can hold. | 1374 | descriptor pointers each channel fetch fifo can hold. |
1377 | - exec-units-mask : The bitmask representing what execution units | 1375 | - exec-units-mask : The bitmask representing what execution units |
1378 | (EUs) are available. It's a single 32 bit cell. EU information | 1376 | (EUs) are available. It's a single 32-bit cell. EU information |
1379 | should be encoded following the SEC's Descriptor Header Dword | 1377 | should be encoded following the SEC's Descriptor Header Dword |
1380 | EU_SEL0 field documentation, i.e. as follows: | 1378 | EU_SEL0 field documentation, i.e. as follows: |
1381 | 1379 | ||
@@ -1391,7 +1389,7 @@ platforms are moved over to use the flattened-device-tree model. | |||
1391 | bits 8 through 31 are reserved for future SEC EUs. | 1389 | bits 8 through 31 are reserved for future SEC EUs. |
1392 | 1390 | ||
1393 | - descriptor-types-mask : The bitmask representing what descriptors | 1391 | - descriptor-types-mask : The bitmask representing what descriptors |
1394 | are available. It's a single 32 bit cell. Descriptor type | 1392 | are available. It's a single 32-bit cell. Descriptor type |
1395 | information should be encoded following the SEC's Descriptor | 1393 | information should be encoded following the SEC's Descriptor |
1396 | Header Dword DESC_TYPE field documentation, i.e. as follows: | 1394 | Header Dword DESC_TYPE field documentation, i.e. as follows: |
1397 | 1395 | ||
@@ -1480,7 +1478,7 @@ platforms are moved over to use the flattened-device-tree model. | |||
1480 | Required properties: | 1478 | Required properties: |
1481 | - device_type : should be "spi". | 1479 | - device_type : should be "spi". |
1482 | - compatible : should be "fsl_spi". | 1480 | - compatible : should be "fsl_spi". |
1483 | - mode : the spi operation mode, it can be "cpu" or "qe". | 1481 | - mode : the SPI operation mode, it can be "cpu" or "qe". |
1484 | - reg : Offset and length of the register set for the device | 1482 | - reg : Offset and length of the register set for the device |
1485 | - interrupts : <a b> where a is the interrupt number and b is a | 1483 | - interrupts : <a b> where a is the interrupt number and b is a |
1486 | field that represents an encoding of the sense and level | 1484 | field that represents an encoding of the sense and level |
@@ -1706,7 +1704,7 @@ platforms are moved over to use the flattened-device-tree model. | |||
1706 | - partitions : Several pairs of 32-bit values where the first value is | 1704 | - partitions : Several pairs of 32-bit values where the first value is |
1707 | partition's offset from the start of the device and the second one is | 1705 | partition's offset from the start of the device and the second one is |
1708 | partition size in bytes with LSB used to signify a read only | 1706 | partition size in bytes with LSB used to signify a read only |
1709 | partition (so, the parition size should always be an even number). | 1707 | partition (so, the partition size should always be an even number). |
1710 | - partition-names : The list of concatenated zero terminated strings | 1708 | - partition-names : The list of concatenated zero terminated strings |
1711 | representing the partition names. | 1709 | representing the partition names. |
1712 | - probe-type : The type of probe which should be done for the chip | 1710 | - probe-type : The type of probe which should be done for the chip |