Linux kernel mirror (for testing) git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
kernel os linux
1
fork

Configure Feed

Select the types of activity you want to include in your feed.

at c9a28fa7b9ac19b676deefa0a171ce7df8755c08 254 lines 11 kB view raw
1MPC5200 Device Tree Bindings 2---------------------------- 3 4(c) 2006-2007 Secret Lab Technologies Ltd 5Grant Likely <grant.likely at secretlab.ca> 6 7********** DRAFT *********** 8* WARNING: Do not depend on the stability of these bindings just yet. 9* The MPC5200 device tree conventions are still in flux 10* Keep an eye on the linuxppc-dev mailing list for more details 11********** DRAFT *********** 12 13I - Introduction 14================ 15Boards supported by the arch/powerpc architecture require device tree be 16passed by the boot loader to the kernel at boot time. The device tree 17describes what devices are present on the board and how they are 18connected. The device tree can either be passed as a binary blob (as 19described in Documentation/powerpc/booting-without-of.txt), or passed 20by Open Firmware (IEEE 1275) compatible firmware using an OF compatible 21client interface API. 22 23This document specifies the requirements on the device-tree for mpc5200 24based boards. These requirements are above and beyond the details 25specified in either the Open Firmware spec or booting-without-of.txt 26 27All new mpc5200-based boards are expected to match this document. In 28cases where this document is not sufficient to support a new board port, 29this document should be updated as part of adding the new board support. 30 31II - Philosophy 32=============== 33The core of this document is naming convention. The whole point of 34defining this convention is to reduce or eliminate the number of 35special cases required to support a 5200 board. If all 5200 boards 36follow the same convention, then generic 5200 support code will work 37rather than coding special cases for each new board. 38 39This section tries to capture the thought process behind why the naming 40convention is what it is. 41 421. names 43--------- 44There is strong convention/requirements already established for children 45of the root node. 'cpus' describes the processor cores, 'memory' 46describes memory, and 'chosen' provides boot configuration. Other nodes 47are added to describe devices attached to the processor local bus. 48 49Following convention already established with other system-on-chip 50processors, 5200 device trees should use the name 'soc5200' for the 51parent node of on chip devices, and the root node should be its parent. 52 53Child nodes are typically named after the configured function. ie. 54the FEC node is named 'ethernet', and a PSC in uart mode is named 'serial'. 55 562. device_type property 57----------------------- 58similar to the node name convention above; the device_type reflects the 59configured function of a device. ie. 'serial' for a uart and 'spi' for 60an spi controller. However, while node names *should* reflect the 61configured function, device_type *must* match the configured function 62exactly. 63 643. compatible property 65---------------------- 66Since device_type isn't enough to match devices to drivers, there also 67needs to be a naming convention for the compatible property. Compatible 68is an list of device descriptions sorted from specific to generic. For 69the mpc5200, the required format for each compatible value is 70<chip>-<device>[-<mode>]. The OS should be able to match a device driver 71to the device based solely on the compatible value. If two drivers 72match on the compatible list; the 'most compatible' driver should be 73selected. 74 75The split between the MPC5200 and the MPC5200B leaves a bit of a 76conundrum. How should the compatible property be set up to provide 77maximum compatibility information; but still accurately describe the 78chip? For the MPC5200; the answer is easy. Most of the SoC devices 79originally appeared on the MPC5200. Since they didn't exist anywhere 80else; the 5200 compatible properties will contain only one item; 81"mpc5200-<device>". 82 83The 5200B is almost the same as the 5200, but not quite. It fixes 84silicon bugs and it adds a small number of enhancements. Most of the 85devices either provide exactly the same interface as on the 5200. A few 86devices have extra functions but still have a backwards compatible mode. 87To express this information as completely as possible, 5200B device trees 88should have two items in the compatible list; 89"mpc5200b-<device>\0mpc5200-<device>". It is *strongly* recommended 90that 5200B device trees follow this convention (instead of only listing 91the base mpc5200 item). 92 93If another chip appear on the market with one of the mpc5200 SoC 94devices, then the compatible list should include mpc5200-<device>. 95 96ie. ethernet on mpc5200: compatible = "mpc5200-ethernet" 97 ethernet on mpc5200b: compatible = "mpc5200b-ethernet\0mpc5200-ethernet" 98 99Modal devices, like PSCs, also append the configured function to the 100end of the compatible field. ie. A PSC in i2s mode would specify 101"mpc5200-psc-i2s", not "mpc5200-i2s". This convention is chosen to 102avoid naming conflicts with non-psc devices providing the same 103function. For example, "mpc5200-spi" and "mpc5200-psc-spi" describe 104the mpc5200 simple spi device and a PSC spi mode respectively. 105 106If the soc device is more generic and present on other SOCs, the 107compatible property can specify the more generic device type also. 108 109ie. mscan: compatible = "mpc5200-mscan\0fsl,mscan"; 110 111At the time of writing, exact chip may be either 'mpc5200' or 112'mpc5200b'. 113 114Device drivers should always try to match as generically as possible. 115 116III - Structure 117=============== 118The device tree for an mpc5200 board follows the structure defined in 119booting-without-of.txt with the following additional notes: 120 1210) the root node 122---------------- 123Typical root description node; see booting-without-of 124 1251) The cpus node 126---------------- 127The cpus node follows the basic layout described in booting-without-of. 128The bus-frequency property holds the XLB bus frequency 129The clock-frequency property holds the core frequency 130 1312) The memory node 132------------------ 133Typical memory description node; see booting-without-of. 134 1353) The soc5200 node 136------------------- 137This node describes the on chip SOC peripherals. Every mpc5200 based 138board will have this node, and as such there is a common naming 139convention for SOC devices. 140 141Required properties: 142name type description 143---- ---- ----------- 144device_type string must be "soc" 145ranges int should be <0 baseaddr baseaddr+10000> 146reg int must be <baseaddr 10000> 147compatible string mpc5200: "mpc5200-soc" 148 mpc5200b: "mpc5200b-soc\0mpc5200-soc" 149system-frequency int Fsystem frequency; source of all 150 other clocks. 151bus-frequency int IPB bus frequency in HZ. Clock rate 152 used by most of the soc devices. 153#interrupt-cells int must be <3>. 154 155Recommended properties: 156name type description 157---- ---- ----------- 158model string Exact model of the chip; 159 ie: model="fsl,mpc5200" 160revision string Silicon revision of chip 161 ie: revision="M08A" 162 163The 'model' and 'revision' properties are *strongly* recommended. Having 164them presence acts as a bit of a safety net for working around as yet 165undiscovered bugs on one version of silicon. For example, device drivers 166can use the model and revision properties to decide if a bug fix should 167be turned on. 168 1694) soc5200 child nodes 170---------------------- 171Any on chip SOC devices available to Linux must appear as soc5200 child nodes. 172 173Note: The tables below show the value for the mpc5200. A mpc5200b device 174tree should use the "mpc5200b-<device>\0mpc5200-<device> form. 175 176Required soc5200 child nodes: 177name device_type compatible Description 178---- ----------- ---------- ----------- 179cdm@<addr> cdm mpc5200-cmd Clock Distribution 180pic@<addr> interrupt-controller mpc5200-pic need an interrupt 181 controller to boot 182bestcomm@<addr> dma-controller mpc5200-bestcomm 5200 pic also requires 183 the bestcomm device 184 185Recommended soc5200 child nodes; populate as needed for your board 186name device_type compatible Description 187---- ----------- ---------- ----------- 188gpt@<addr> gpt fsl,mpc5200-gpt General purpose timers 189rtc@<addr> rtc mpc5200-rtc Real time clock 190mscan@<addr> mscan mpc5200-mscan CAN bus controller 191pci@<addr> pci mpc5200-pci PCI bridge 192serial@<addr> serial mpc5200-psc-uart PSC in serial mode 193i2s@<addr> sound mpc5200-psc-i2s PSC in i2s mode 194ac97@<addr> sound mpc5200-psc-ac97 PSC in ac97 mode 195spi@<addr> spi mpc5200-psc-spi PSC in spi mode 196irda@<addr> irda mpc5200-psc-irda PSC in IrDA mode 197spi@<addr> spi mpc5200-spi MPC5200 spi device 198ethernet@<addr> network mpc5200-fec MPC5200 ethernet device 199ata@<addr> ata mpc5200-ata IDE ATA interface 200i2c@<addr> i2c mpc5200-i2c I2C controller 201usb@<addr> usb-ohci-be mpc5200-ohci,ohci-be USB controller 202xlb@<addr> xlb mpc5200-xlb XLB arbitrator 203 204Important child node properties 205name type description 206---- ---- ----------- 207cell-index int When multiple devices are present, is the 208 index of the device in the hardware (ie. There 209 are 6 PSC on the 5200 numbered PSC1 to PSC6) 210 PSC1 has 'cell-index = <0>' 211 PSC4 has 'cell-index = <3>' 212 2135) General Purpose Timer nodes (child of soc5200 node) 214On the mpc5200 and 5200b, GPT0 has a watchdog timer function. If the board 215design supports the internal wdt, then the device node for GPT0 should 216include the empty property 'fsl,has-wdt'. 217 2186) PSC nodes (child of soc5200 node) 219PSC nodes can define the optional 'port-number' property to force assignment 220order of serial ports. For example, PSC5 might be physically connected to 221the port labeled 'COM1' and PSC1 wired to 'COM1'. In this case, PSC5 would 222have a "port-number = <0>" property, and PSC1 would have "port-number = <1>". 223 224PSC in i2s mode: The mpc5200 and mpc5200b PSCs are not compatible when in 225i2s mode. An 'mpc5200b-psc-i2s' node cannot include 'mpc5200-psc-i2s' in the 226compatible field. 227 228IV - Extra Notes 229================ 230 2311. Interrupt mapping 232-------------------- 233The mpc5200 pic driver splits hardware IRQ numbers into two levels. The 234split reflects the layout of the PIC hardware itself, which groups 235interrupts into one of three groups; CRIT, MAIN or PERP. Also, the 236Bestcomm dma engine has it's own set of interrupt sources which are 237cascaded off of peripheral interrupt 0, which the driver interprets as a 238fourth group, SDMA. 239 240The interrupts property for device nodes using the mpc5200 pic consists 241of three cells; <L1 L2 level> 242 243 L1 := [CRIT=0, MAIN=1, PERP=2, SDMA=3] 244 L2 := interrupt number; directly mapped from the value in the 245 "ICTL PerStat, MainStat, CritStat Encoded Register" 246 level := [LEVEL_HIGH=0, EDGE_RISING=1, EDGE_FALLING=2, LEVEL_LOW=3] 247 2482. Shared registers 249------------------- 250Some SoC devices share registers between them. ie. the i2c devices use 251a single clock control register, and almost all device are affected by 252the port_config register. Devices which need to manipulate shared regs 253should look to the parent SoC node. The soc node is responsible 254for arbitrating all shared register access.