|
@@ -1,277 +0,0 @@
|
|
|
-MPC5200 Device Tree Bindings
|
|
|
-----------------------------
|
|
|
-
|
|
|
-(c) 2006-2007 Secret Lab Technologies Ltd
|
|
|
-Grant Likely <grant.likely at secretlab.ca>
|
|
|
-
|
|
|
-********** DRAFT ***********
|
|
|
-* WARNING: Do not depend on the stability of these bindings just yet.
|
|
|
-* The MPC5200 device tree conventions are still in flux
|
|
|
-* Keep an eye on the linuxppc-dev mailing list for more details
|
|
|
-********** DRAFT ***********
|
|
|
-
|
|
|
-I - Introduction
|
|
|
-================
|
|
|
-Boards supported by the arch/powerpc architecture require device tree be
|
|
|
-passed by the boot loader to the kernel at boot time. The device tree
|
|
|
-describes what devices are present on the board and how they are
|
|
|
-connected. The device tree can either be passed as a binary blob (as
|
|
|
-described in Documentation/powerpc/booting-without-of.txt), or passed
|
|
|
-by Open Firmware (IEEE 1275) compatible firmware using an OF compatible
|
|
|
-client interface API.
|
|
|
-
|
|
|
-This document specifies the requirements on the device-tree for mpc5200
|
|
|
-based boards. These requirements are above and beyond the details
|
|
|
-specified in either the Open Firmware spec or booting-without-of.txt
|
|
|
-
|
|
|
-All new mpc5200-based boards are expected to match this document. In
|
|
|
-cases where this document is not sufficient to support a new board port,
|
|
|
-this document should be updated as part of adding the new board support.
|
|
|
-
|
|
|
-II - Philosophy
|
|
|
-===============
|
|
|
-The core of this document is naming convention. The whole point of
|
|
|
-defining this convention is to reduce or eliminate the number of
|
|
|
-special cases required to support a 5200 board. If all 5200 boards
|
|
|
-follow the same convention, then generic 5200 support code will work
|
|
|
-rather than coding special cases for each new board.
|
|
|
-
|
|
|
-This section tries to capture the thought process behind why the naming
|
|
|
-convention is what it is.
|
|
|
-
|
|
|
-1. names
|
|
|
----------
|
|
|
-There is strong convention/requirements already established for children
|
|
|
-of the root node. 'cpus' describes the processor cores, 'memory'
|
|
|
-describes memory, and 'chosen' provides boot configuration. Other nodes
|
|
|
-are added to describe devices attached to the processor local bus.
|
|
|
-
|
|
|
-Following convention already established with other system-on-chip
|
|
|
-processors, 5200 device trees should use the name 'soc5200' for the
|
|
|
-parent node of on chip devices, and the root node should be its parent.
|
|
|
-
|
|
|
-Child nodes are typically named after the configured function. ie.
|
|
|
-the FEC node is named 'ethernet', and a PSC in uart mode is named 'serial'.
|
|
|
-
|
|
|
-2. device_type property
|
|
|
------------------------
|
|
|
-similar to the node name convention above; the device_type reflects the
|
|
|
-configured function of a device. ie. 'serial' for a uart and 'spi' for
|
|
|
-an spi controller. However, while node names *should* reflect the
|
|
|
-configured function, device_type *must* match the configured function
|
|
|
-exactly.
|
|
|
-
|
|
|
-3. compatible property
|
|
|
-----------------------
|
|
|
-Since device_type isn't enough to match devices to drivers, there also
|
|
|
-needs to be a naming convention for the compatible property. Compatible
|
|
|
-is an list of device descriptions sorted from specific to generic. For
|
|
|
-the mpc5200, the required 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;
|
|
|
-"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;
|
|
|
-"mpc5200b-<device>\0mpc5200-<device>". It is *strongly* recommended
|
|
|
-that 5200B device trees follow this convention (instead of only listing
|
|
|
-the base mpc5200 item).
|
|
|
-
|
|
|
-If another chip appear on the market with one of the mpc5200 SoC
|
|
|
-devices, then the compatible list should include mpc5200-<device>.
|
|
|
-
|
|
|
-ie. ethernet on mpc5200: compatible = "mpc5200-ethernet"
|
|
|
- ethernet on mpc5200b: compatible = "mpc5200b-ethernet\0mpc5200-ethernet"
|
|
|
-
|
|
|
-Modal devices, like PSCs, also append the configured function to the
|
|
|
-end of the compatible field. ie. A PSC in i2s mode would specify
|
|
|
-"mpc5200-psc-i2s", not "mpc5200-i2s". This convention is chosen to
|
|
|
-avoid naming conflicts with non-psc devices providing the same
|
|
|
-function. For example, "mpc5200-spi" and "mpc5200-psc-spi" describe
|
|
|
-the mpc5200 simple spi device and a PSC spi mode respectively.
|
|
|
-
|
|
|
-If the soc device is more generic and present on other SOCs, the
|
|
|
-compatible property can specify the more generic device type also.
|
|
|
-
|
|
|
-ie. mscan: compatible = "mpc5200-mscan\0fsl,mscan";
|
|
|
-
|
|
|
-At the time of writing, exact chip may be either 'mpc5200' or
|
|
|
-'mpc5200b'.
|
|
|
-
|
|
|
-Device drivers should always try to match as generically as possible.
|
|
|
-
|
|
|
-III - Structure
|
|
|
-===============
|
|
|
-The device tree for an mpc5200 board follows the structure defined in
|
|
|
-booting-without-of.txt with the following additional notes:
|
|
|
-
|
|
|
-0) the root node
|
|
|
-----------------
|
|
|
-Typical root description node; see booting-without-of
|
|
|
-
|
|
|
-1) The cpus node
|
|
|
-----------------
|
|
|
-The cpus node follows the basic layout described in booting-without-of.
|
|
|
-The bus-frequency property holds the XLB bus frequency
|
|
|
-The clock-frequency property holds the core frequency
|
|
|
-
|
|
|
-2) The memory node
|
|
|
-------------------
|
|
|
-Typical memory description node; see booting-without-of.
|
|
|
-
|
|
|
-3) The soc5200 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 type description
|
|
|
----- ---- -----------
|
|
|
-device_type string must be "soc"
|
|
|
-ranges int should be <0 baseaddr baseaddr+10000>
|
|
|
-reg int must be <baseaddr 10000>
|
|
|
-compatible string mpc5200: "mpc5200-soc"
|
|
|
- mpc5200b: "mpc5200b-soc\0mpc5200-soc"
|
|
|
-system-frequency int Fsystem frequency; source of all
|
|
|
- other clocks.
|
|
|
-bus-frequency int IPB bus frequency in HZ. Clock rate
|
|
|
- used by most of the soc devices.
|
|
|
-#interrupt-cells int must be <3>.
|
|
|
-
|
|
|
-Recommended properties:
|
|
|
-name type description
|
|
|
----- ---- -----------
|
|
|
-model string Exact model of the chip;
|
|
|
- ie: model="fsl,mpc5200"
|
|
|
-revision string Silicon revision of chip
|
|
|
- ie: revision="M08A"
|
|
|
-
|
|
|
-The 'model' and 'revision' properties are *strongly* recommended. Having
|
|
|
-them presence acts as a bit of a safety net for working around as yet
|
|
|
-undiscovered bugs on one version of silicon. For example, device drivers
|
|
|
-can use the model and revision properties to decide if a bug fix should
|
|
|
-be turned on.
|
|
|
-
|
|
|
-4) soc5200 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 "mpc5200b-<device>\0mpc5200-<device> form.
|
|
|
-
|
|
|
-Required soc5200 child nodes:
|
|
|
-name device_type compatible Description
|
|
|
----- ----------- ---------- -----------
|
|
|
-cdm@<addr> cdm mpc5200-cmd Clock Distribution
|
|
|
-pic@<addr> interrupt-controller mpc5200-pic need an interrupt
|
|
|
- controller to boot
|
|
|
-bestcomm@<addr> dma-controller mpc5200-bestcomm 5200 pic also requires
|
|
|
- the bestcomm device
|
|
|
-
|
|
|
-Recommended soc5200 child nodes; populate as needed for your board
|
|
|
-name device_type compatible Description
|
|
|
----- ----------- ---------- -----------
|
|
|
-gpt@<addr> gpt fsl,mpc5200-gpt General purpose timers
|
|
|
-gpt@<addr> gpt fsl,mpc5200-gpt-gpio General purpose
|
|
|
- timers in GPIO mode
|
|
|
-gpio@<addr> fsl,mpc5200-gpio MPC5200 simple gpio
|
|
|
- controller
|
|
|
-gpio@<addr> fsl,mpc5200-gpio-wkup MPC5200 wakeup gpio
|
|
|
- controller
|
|
|
-rtc@<addr> rtc mpc5200-rtc Real time clock
|
|
|
-mscan@<addr> mscan mpc5200-mscan CAN bus controller
|
|
|
-pci@<addr> pci mpc5200-pci PCI bridge
|
|
|
-serial@<addr> serial mpc5200-psc-uart PSC in serial mode
|
|
|
-i2s@<addr> sound mpc5200-psc-i2s PSC in i2s mode
|
|
|
-ac97@<addr> sound mpc5200-psc-ac97 PSC in ac97 mode
|
|
|
-spi@<addr> spi mpc5200-psc-spi PSC in spi mode
|
|
|
-irda@<addr> irda mpc5200-psc-irda PSC in IrDA mode
|
|
|
-spi@<addr> spi mpc5200-spi MPC5200 spi device
|
|
|
-ethernet@<addr> network mpc5200-fec MPC5200 ethernet device
|
|
|
-ata@<addr> ata mpc5200-ata IDE ATA interface
|
|
|
-i2c@<addr> i2c mpc5200-i2c I2C controller
|
|
|
-usb@<addr> usb-ohci-be mpc5200-ohci,ohci-be USB controller
|
|
|
-xlb@<addr> xlb mpc5200-xlb XLB arbitrator
|
|
|
-
|
|
|
-Important child node properties
|
|
|
-name type description
|
|
|
----- ---- -----------
|
|
|
-cell-index int When multiple devices are present, is the
|
|
|
- index of the device in the hardware (ie. There
|
|
|
- are 6 PSC on the 5200 numbered PSC1 to PSC6)
|
|
|
- PSC1 has 'cell-index = <0>'
|
|
|
- PSC4 has 'cell-index = <3>'
|
|
|
-
|
|
|
-5) General Purpose Timer nodes (child of soc5200 node)
|
|
|
-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'.
|
|
|
-
|
|
|
-6) PSC nodes (child of soc5200 node)
|
|
|
-PSC nodes can define the optional 'port-number' property to force assignment
|
|
|
-order of serial ports. For example, PSC5 might be physically connected to
|
|
|
-the port labeled 'COM1' and PSC1 wired to 'COM1'. In this case, PSC5 would
|
|
|
-have a "port-number = <0>" property, and PSC1 would have "port-number = <1>".
|
|
|
-
|
|
|
-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.
|
|
|
-
|
|
|
-7) GPIO controller 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 unsused.
|
|
|
-
|
|
|
-8) 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.
|
|
|
-
|
|
|
-IV - Extra Notes
|
|
|
-================
|
|
|
-
|
|
|
-1. Interrupt mapping
|
|
|
---------------------
|
|
|
-The mpc5200 pic driver 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]
|
|
|
-
|
|
|
-2. Shared registers
|
|
|
--------------------
|
|
|
-Some SoC devices share registers between them. ie. the i2c devices use
|
|
|
-a single clock control register, and almost all device are affected by
|
|
|
-the port_config register. Devices which need to manipulate shared regs
|
|
|
-should look to the parent SoC node. The soc node is responsible
|
|
|
-for arbitrating all shared register access.
|