181 lines
		
	
	
		
			7.7 KiB
		
	
	
	
		
			Plaintext
		
	
	
	
	
	
			
		
		
	
	
			181 lines
		
	
	
		
			7.7 KiB
		
	
	
	
		
			Plaintext
		
	
	
	
	
	
| 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'.
 | |
| 
 | |
| 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)
 | |
| 
 |