MPC5200 Device Tree Bindings 
 | 
---------------------------- 
 | 
  
 | 
(c) 2006-2009 Secret Lab Technologies Ltd 
 | 
Grant Likely <grant.likely@secretlab.ca> 
 | 
  
 | 
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 
 |