net: Add init_dummy_netdev() and fix EMAC driver using it
[deliverable/linux.git] / Documentation / powerpc / mpc52xx-device-tree-bindings.txt
CommitLineData
05cbbc69 1MPC5200 Device Tree Bindings
b1e253c4
GL
2----------------------------
3
05cbbc69 4(c) 2006-2007 Secret Lab Technologies Ltd
b1e253c4
GL
5Grant Likely <grant.likely at secretlab.ca>
6
121361f7
GL
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
b1e253c4
GL
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
01dd2fbf 20by Open Firmware (IEEE 1275) compatible firmware using an OF compatible
b1e253c4
GL
21client interface API.
22
05cbbc69 23This document specifies the requirements on the device-tree for mpc5200
b1e253c4 24based boards. These requirements are above and beyond the details
01dd2fbf 25specified in either the Open Firmware spec or booting-without-of.txt
b1e253c4 26
05cbbc69 27All new mpc5200-based boards are expected to match this document. In
b1e253c4
GL
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
05cbbc69
GL
35special cases required to support a 5200 board. If all 5200 boards
36follow the same convention, then generic 5200 support code will work
b1e253c4
GL
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
05cbbc69
GL
421. names
43---------
b1e253c4
GL
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.
05cbbc69 48
b1e253c4 49Following convention already established with other system-on-chip
05cbbc69
GL
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.
b1e253c4 52
05cbbc69
GL
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'.
b1e253c4
GL
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
05cbbc69
GL
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
01dd2fbf
ML
76conundrum. How should the compatible property be set up to provide
77maximum compatibility information; but still accurately describe the
05cbbc69
GL
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.
01dd2fbf 87To express this information as completely as possible, 5200B device trees
05cbbc69
GL
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"
b1e253c4
GL
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
05cbbc69 101"mpc5200-psc-i2s", not "mpc5200-i2s". This convention is chosen to
b1e253c4 102avoid naming conflicts with non-psc devices providing the same
05cbbc69 103function. For example, "mpc5200-spi" and "mpc5200-psc-spi" describe
b1e253c4
GL
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
05cbbc69 109ie. mscan: compatible = "mpc5200-mscan\0fsl,mscan";
b1e253c4
GL
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===============
05cbbc69 118The device tree for an mpc5200 board follows the structure defined in
b1e253c4
GL
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-------------------
05cbbc69 137This node describes the on chip SOC peripherals. Every mpc5200 based
b1e253c4
GL
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>
05cbbc69
GL
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>.
b1e253c4
GL
154
155Recommended properties:
156name type description
157---- ---- -----------
05cbbc69
GL
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.
b1e253c4
GL
168
1694) soc5200 child nodes
170----------------------
171Any on chip SOC devices available to Linux must appear as soc5200 child nodes.
172
05cbbc69
GL
173Note: The tables below show the value for the mpc5200. A mpc5200b device
174tree should use the "mpc5200b-<device>\0mpc5200-<device> form.
b1e253c4
GL
175
176Required soc5200 child nodes:
177name device_type compatible Description
178---- ----------- ---------- -----------
05cbbc69
GL
179cdm@<addr> cdm mpc5200-cmd Clock Distribution
180pic@<addr> interrupt-controller mpc5200-pic need an interrupt
b1e253c4 181 controller to boot
05cbbc69
GL
182bestcomm@<addr> dma-controller mpc5200-bestcomm 5200 pic also requires
183 the bestcomm device
b1e253c4
GL
184
185Recommended soc5200 child nodes; populate as needed for your board
05cbbc69
GL
186name device_type compatible Description
187---- ----------- ---------- -----------
d24bc314 188gpt@<addr> gpt fsl,mpc5200-gpt General purpose timers
3cd2550c 189gpt@<addr> gpt fsl,mpc5200-gpt-gpio General purpose
190 timers in GPIO mode
191gpio@<addr> fsl,mpc5200-gpio MPC5200 simple gpio
192 controller
193gpio@<addr> fsl,mpc5200-gpio-wkup MPC5200 wakeup gpio
194 controller
05cbbc69
GL
195rtc@<addr> rtc mpc5200-rtc Real time clock
196mscan@<addr> mscan mpc5200-mscan CAN bus controller
197pci@<addr> pci mpc5200-pci PCI bridge
198serial@<addr> serial mpc5200-psc-uart PSC in serial mode
199i2s@<addr> sound mpc5200-psc-i2s PSC in i2s mode
200ac97@<addr> sound mpc5200-psc-ac97 PSC in ac97 mode
201spi@<addr> spi mpc5200-psc-spi PSC in spi mode
202irda@<addr> irda mpc5200-psc-irda PSC in IrDA mode
203spi@<addr> spi mpc5200-spi MPC5200 spi device
204ethernet@<addr> network mpc5200-fec MPC5200 ethernet device
205ata@<addr> ata mpc5200-ata IDE ATA interface
206i2c@<addr> i2c mpc5200-i2c I2C controller
207usb@<addr> usb-ohci-be mpc5200-ohci,ohci-be USB controller
01dd2fbf 208xlb@<addr> xlb mpc5200-xlb XLB arbitrator
05cbbc69
GL
209
210Important child node properties
211name type description
212---- ---- -----------
213cell-index int When multiple devices are present, is the
214 index of the device in the hardware (ie. There
215 are 6 PSC on the 5200 numbered PSC1 to PSC6)
216 PSC1 has 'cell-index = <0>'
217 PSC4 has 'cell-index = <3>'
218
2195) General Purpose Timer nodes (child of soc5200 node)
220On the mpc5200 and 5200b, GPT0 has a watchdog timer function. If the board
221design supports the internal wdt, then the device node for GPT0 should
d24bc314 222include the empty property 'fsl,has-wdt'.
05cbbc69
GL
223
2246) PSC nodes (child of soc5200 node)
225PSC nodes can define the optional 'port-number' property to force assignment
226order of serial ports. For example, PSC5 might be physically connected to
227the port labeled 'COM1' and PSC1 wired to 'COM1'. In this case, PSC5 would
228have a "port-number = <0>" property, and PSC1 would have "port-number = <1>".
229
230PSC in i2s mode: The mpc5200 and mpc5200b PSCs are not compatible when in
231i2s mode. An 'mpc5200b-psc-i2s' node cannot include 'mpc5200-psc-i2s' in the
232compatible field.
b1e253c4 233
3cd2550c 2347) GPIO controller nodes
235Each GPIO controller node should have the empty property gpio-controller and
236#gpio-cells set to 2. First cell is the GPIO number which is interpreted
237according to the bit numbers in the GPIO control registers. The second cell
238is for flags which is currently unsused.
239
80791be1
GL
2408) FEC nodes
241The FEC node can specify one of the following properties to configure
242the MII link:
243"fsl,7-wire-mode" - An empty property that specifies the link uses 7-wire
244 mode instead of MII
245"current-speed" - Specifies that the MII should be configured for a fixed
246 speed. This property should contain two cells. The
247 first cell specifies the speed in Mbps and the second
248 should be '0' for half duplex and '1' for full duplex
249"phy-handle" - Contains a phandle to an Ethernet PHY.
250
b1e253c4
GL
251IV - Extra Notes
252================
253
2541. Interrupt mapping
255--------------------
05cbbc69 256The mpc5200 pic driver splits hardware IRQ numbers into two levels. The
b1e253c4
GL
257split reflects the layout of the PIC hardware itself, which groups
258interrupts into one of three groups; CRIT, MAIN or PERP. Also, the
259Bestcomm dma engine has it's own set of interrupt sources which are
260cascaded off of peripheral interrupt 0, which the driver interprets as a
261fourth group, SDMA.
262
05cbbc69 263The interrupts property for device nodes using the mpc5200 pic consists
b1e253c4
GL
264of three cells; <L1 L2 level>
265
266 L1 := [CRIT=0, MAIN=1, PERP=2, SDMA=3]
267 L2 := interrupt number; directly mapped from the value in the
268 "ICTL PerStat, MainStat, CritStat Encoded Register"
269 level := [LEVEL_HIGH=0, EDGE_RISING=1, EDGE_FALLING=2, LEVEL_LOW=3]
05cbbc69
GL
270
2712. Shared registers
272-------------------
273Some SoC devices share registers between them. ie. the i2c devices use
274a single clock control register, and almost all device are affected by
275the port_config register. Devices which need to manipulate shared regs
276should look to the parent SoC node. The soc node is responsible
277for arbitrating all shared register access.
This page took 0.235899 seconds and 5 git commands to generate.