mirror of https://github.com/Qortal/Brooklyn
You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
198 lines
8.6 KiB
198 lines
8.6 KiB
MPC5200 Device Tree Bindings |
|
---------------------------- |
|
|
|
(c) 2006-2009 Secret Lab Technologies Ltd |
|
Grant Likely <[email protected]> |
|
|
|
Naming conventions |
|
------------------ |
|
For mpc5200 on-chip devices, the format for each compatible value is |
|
<chip>-<device>[-<mode>]. The OS should be able to match a device driver |
|
to the device based solely on the compatible value. If two drivers |
|
match on the compatible list; the 'most compatible' driver should be |
|
selected. |
|
|
|
The split between the MPC5200 and the MPC5200B leaves a bit of a |
|
conundrum. How should the compatible property be set up to provide |
|
maximum compatibility information; but still accurately describe the |
|
chip? For the MPC5200; the answer is easy. Most of the SoC devices |
|
originally appeared on the MPC5200. Since they didn't exist anywhere |
|
else; the 5200 compatible properties will contain only one item; |
|
"fsl,mpc5200-<device>". |
|
|
|
The 5200B is almost the same as the 5200, but not quite. It fixes |
|
silicon bugs and it adds a small number of enhancements. Most of the |
|
devices either provide exactly the same interface as on the 5200. A few |
|
devices have extra functions but still have a backwards compatible mode. |
|
To express this information as completely as possible, 5200B device trees |
|
should have two items in the compatible list: |
|
compatible = "fsl,mpc5200b-<device>","fsl,mpc5200-<device>"; |
|
|
|
It is *strongly* recommended that 5200B device trees follow this convention |
|
(instead of only listing the base mpc5200 item). |
|
|
|
ie. ethernet on mpc5200: compatible = "fsl,mpc5200-fec"; |
|
ethernet on mpc5200b: compatible = "fsl,mpc5200b-fec", "fsl,mpc5200-fec"; |
|
|
|
Modal devices, like PSCs, also append the configured function to the |
|
end of the compatible field. ie. A PSC in i2s mode would specify |
|
"fsl,mpc5200-psc-i2s", not "fsl,mpc5200-i2s". This convention is chosen to |
|
avoid naming conflicts with non-psc devices providing the same |
|
function. For example, "fsl,mpc5200-spi" and "fsl,mpc5200-psc-spi" describe |
|
the mpc5200 simple spi device and a PSC spi mode respectively. |
|
|
|
At the time of writing, exact chip may be either 'fsl,mpc5200' or |
|
'fsl,mpc5200b'. |
|
|
|
The soc node |
|
------------ |
|
This node describes the on chip SOC peripherals. Every mpc5200 based |
|
board will have this node, and as such there is a common naming |
|
convention for SOC devices. |
|
|
|
Required properties: |
|
name description |
|
---- ----------- |
|
ranges Memory range of the internal memory mapped registers. |
|
Should be <0 [baseaddr] 0xc000> |
|
reg Should be <[baseaddr] 0x100> |
|
compatible mpc5200: "fsl,mpc5200-immr" |
|
mpc5200b: "fsl,mpc5200b-immr" |
|
system-frequency 'fsystem' frequency in Hz; XLB, IPB, USB and PCI |
|
clocks are derived from the fsystem clock. |
|
bus-frequency IPB bus frequency in Hz. Clock rate |
|
used by most of the soc devices. |
|
|
|
soc child nodes |
|
--------------- |
|
Any on chip SOC devices available to Linux must appear as soc5200 child nodes. |
|
|
|
Note: The tables below show the value for the mpc5200. A mpc5200b device |
|
tree should use the "fsl,mpc5200b-<device>","fsl,mpc5200-<device>" form. |
|
|
|
Required soc5200 child nodes: |
|
name compatible Description |
|
---- ---------- ----------- |
|
cdm@<addr> fsl,mpc5200-cdm Clock Distribution |
|
interrupt-controller@<addr> fsl,mpc5200-pic need an interrupt |
|
controller to boot |
|
bestcomm@<addr> fsl,mpc5200-bestcomm Bestcomm DMA controller |
|
|
|
Recommended soc5200 child nodes; populate as needed for your board |
|
name compatible Description |
|
---- ---------- ----------- |
|
timer@<addr> fsl,mpc5200-gpt General purpose timers |
|
gpio@<addr> fsl,mpc5200-gpio MPC5200 simple gpio controller |
|
gpio@<addr> fsl,mpc5200-gpio-wkup MPC5200 wakeup gpio controller |
|
rtc@<addr> fsl,mpc5200-rtc Real time clock |
|
mscan@<addr> fsl,mpc5200-mscan CAN bus controller |
|
pci@<addr> fsl,mpc5200-pci PCI bridge |
|
serial@<addr> fsl,mpc5200-psc-uart PSC in serial mode |
|
i2s@<addr> fsl,mpc5200-psc-i2s PSC in i2s mode |
|
ac97@<addr> fsl,mpc5200-psc-ac97 PSC in ac97 mode |
|
spi@<addr> fsl,mpc5200-psc-spi PSC in spi mode |
|
irda@<addr> fsl,mpc5200-psc-irda PSC in IrDA mode |
|
spi@<addr> fsl,mpc5200-spi MPC5200 spi device |
|
ethernet@<addr> fsl,mpc5200-fec MPC5200 ethernet device |
|
ata@<addr> fsl,mpc5200-ata IDE ATA interface |
|
i2c@<addr> fsl,mpc5200-i2c I2C controller |
|
usb@<addr> fsl,mpc5200-ohci,ohci-be USB controller |
|
xlb@<addr> fsl,mpc5200-xlb XLB arbitrator |
|
|
|
fsl,mpc5200-gpt nodes |
|
--------------------- |
|
On the mpc5200 and 5200b, GPT0 has a watchdog timer function. If the board |
|
design supports the internal wdt, then the device node for GPT0 should |
|
include the empty property 'fsl,has-wdt'. Note that this does not activate |
|
the watchdog. The timer will function as a GPT if the timer api is used, and |
|
it will function as watchdog if the watchdog device is used. The watchdog |
|
mode has priority over the gpt mode, i.e. if the watchdog is activated, any |
|
gpt api call to this timer will fail with -EBUSY. |
|
|
|
If you add the property |
|
fsl,wdt-on-boot = <n>; |
|
GPT0 will be marked as in-use watchdog, i.e. blocking every gpt access to it. |
|
If n>0, the watchdog is started with a timeout of n seconds. If n=0, the |
|
configuration of the watchdog is not touched. This is useful in two cases: |
|
- just mark GPT0 as watchdog, blocking gpt accesses, and configure it later; |
|
- do not touch a configuration assigned by the boot loader which supervises |
|
the boot process itself. |
|
|
|
The watchdog will respect the CONFIG_WATCHDOG_NOWAYOUT option. |
|
|
|
An mpc5200-gpt can be used as a single line GPIO controller. To do so, |
|
add the following properties to the gpt node: |
|
gpio-controller; |
|
#gpio-cells = <2>; |
|
When referencing the GPIO line from another node, the first cell must always |
|
be zero and the second cell represents the gpio flags and described in the |
|
gpio device tree binding. |
|
|
|
An mpc5200-gpt can be used as a single line edge sensitive interrupt |
|
controller. To do so, add the following properties to the gpt node: |
|
interrupt-controller; |
|
#interrupt-cells = <1>; |
|
When referencing the IRQ line from another node, the cell represents the |
|
sense mode; 1 for edge rising, 2 for edge falling. |
|
|
|
fsl,mpc5200-psc nodes |
|
--------------------- |
|
The PSCs should include a cell-index which is the index of the PSC in |
|
hardware. cell-index is used to determine which shared SoC registers to |
|
use when setting up PSC clocking. cell-index number starts at '0'. ie: |
|
PSC1 has 'cell-index = <0>' |
|
PSC4 has 'cell-index = <3>' |
|
|
|
PSC in i2s mode: The mpc5200 and mpc5200b PSCs are not compatible when in |
|
i2s mode. An 'mpc5200b-psc-i2s' node cannot include 'mpc5200-psc-i2s' in the |
|
compatible field. |
|
|
|
|
|
fsl,mpc5200-gpio and fsl,mpc5200-gpio-wkup nodes |
|
------------------------------------------------ |
|
Each GPIO controller node should have the empty property gpio-controller and |
|
#gpio-cells set to 2. First cell is the GPIO number which is interpreted |
|
according to the bit numbers in the GPIO control registers. The second cell |
|
is for flags which is currently unused. |
|
|
|
fsl,mpc5200-fec nodes |
|
--------------------- |
|
The FEC node can specify one of the following properties to configure |
|
the MII link: |
|
- fsl,7-wire-mode - An empty property that specifies the link uses 7-wire |
|
mode instead of MII |
|
- current-speed - Specifies that the MII should be configured for a fixed |
|
speed. This property should contain two cells. The |
|
first cell specifies the speed in Mbps and the second |
|
should be '0' for half duplex and '1' for full duplex |
|
- phy-handle - Contains a phandle to an Ethernet PHY. |
|
|
|
Interrupt controller (fsl,mpc5200-pic) node |
|
------------------------------------------- |
|
The mpc5200 pic binding splits hardware IRQ numbers into two levels. The |
|
split reflects the layout of the PIC hardware itself, which groups |
|
interrupts into one of three groups; CRIT, MAIN or PERP. Also, the |
|
Bestcomm dma engine has it's own set of interrupt sources which are |
|
cascaded off of peripheral interrupt 0, which the driver interprets as a |
|
fourth group, SDMA. |
|
|
|
The interrupts property for device nodes using the mpc5200 pic consists |
|
of three cells; <L1 L2 level> |
|
|
|
L1 := [CRIT=0, MAIN=1, PERP=2, SDMA=3] |
|
L2 := interrupt number; directly mapped from the value in the |
|
"ICTL PerStat, MainStat, CritStat Encoded Register" |
|
level := [LEVEL_HIGH=0, EDGE_RISING=1, EDGE_FALLING=2, LEVEL_LOW=3] |
|
|
|
For external IRQs, use the following interrupt property values (how to |
|
specify external interrupts is a frequently asked question): |
|
External interrupts: |
|
external irq0: interrupts = <0 0 n>; |
|
external irq1: interrupts = <1 1 n>; |
|
external irq2: interrupts = <1 2 n>; |
|
external irq3: interrupts = <1 3 n>; |
|
'n' is sense (0: level high, 1: edge rising, 2: edge falling 3: level low) |
|
|
|
fsl,mpc5200-mscan nodes |
|
----------------------- |
|
See file Documentation/devicetree/bindings/powerpc/fsl/mpc5200.txt
|
|
|