mpc5200.txt 7.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180
  1. MPC5200 Device Tree Bindings
  2. ----------------------------
  3. (c) 2006-2009 Secret Lab Technologies Ltd
  4. Grant Likely <grant.likely@secretlab.ca>
  5. Naming conventions
  6. ------------------
  7. For mpc5200 on-chip devices, the format for each compatible value is
  8. <chip>-<device>[-<mode>]. The OS should be able to match a device driver
  9. to the device based solely on the compatible value. If two drivers
  10. match on the compatible list; the 'most compatible' driver should be
  11. selected.
  12. The split between the MPC5200 and the MPC5200B leaves a bit of a
  13. conundrum. How should the compatible property be set up to provide
  14. maximum compatibility information; but still accurately describe the
  15. chip? For the MPC5200; the answer is easy. Most of the SoC devices
  16. originally appeared on the MPC5200. Since they didn't exist anywhere
  17. else; the 5200 compatible properties will contain only one item;
  18. "fsl,mpc5200-<device>".
  19. The 5200B is almost the same as the 5200, but not quite. It fixes
  20. silicon bugs and it adds a small number of enhancements. Most of the
  21. devices either provide exactly the same interface as on the 5200. A few
  22. devices have extra functions but still have a backwards compatible mode.
  23. To express this information as completely as possible, 5200B device trees
  24. should have two items in the compatible list:
  25. compatible = "fsl,mpc5200b-<device>","fsl,mpc5200-<device>";
  26. It is *strongly* recommended that 5200B device trees follow this convention
  27. (instead of only listing the base mpc5200 item).
  28. ie. ethernet on mpc5200: compatible = "fsl,mpc5200-fec";
  29. ethernet on mpc5200b: compatible = "fsl,mpc5200b-fec", "fsl,mpc5200-fec";
  30. Modal devices, like PSCs, also append the configured function to the
  31. end of the compatible field. ie. A PSC in i2s mode would specify
  32. "fsl,mpc5200-psc-i2s", not "fsl,mpc5200-i2s". This convention is chosen to
  33. avoid naming conflicts with non-psc devices providing the same
  34. function. For example, "fsl,mpc5200-spi" and "fsl,mpc5200-psc-spi" describe
  35. the mpc5200 simple spi device and a PSC spi mode respectively.
  36. At the time of writing, exact chip may be either 'fsl,mpc5200' or
  37. 'fsl,mpc5200b'.
  38. The soc node
  39. ------------
  40. This node describes the on chip SOC peripherals. Every mpc5200 based
  41. board will have this node, and as such there is a common naming
  42. convention for SOC devices.
  43. Required properties:
  44. name description
  45. ---- -----------
  46. ranges Memory range of the internal memory mapped registers.
  47. Should be <0 [baseaddr] 0xc000>
  48. reg Should be <[baseaddr] 0x100>
  49. compatible mpc5200: "fsl,mpc5200-immr"
  50. mpc5200b: "fsl,mpc5200b-immr"
  51. system-frequency 'fsystem' frequency in Hz; XLB, IPB, USB and PCI
  52. clocks are derived from the fsystem clock.
  53. bus-frequency IPB bus frequency in Hz. Clock rate
  54. used by most of the soc devices.
  55. soc child nodes
  56. ---------------
  57. Any on chip SOC devices available to Linux must appear as soc5200 child nodes.
  58. Note: The tables below show the value for the mpc5200. A mpc5200b device
  59. tree should use the "fsl,mpc5200b-<device>","fsl,mpc5200-<device>" form.
  60. Required soc5200 child nodes:
  61. name compatible Description
  62. ---- ---------- -----------
  63. cdm@<addr> fsl,mpc5200-cdm Clock Distribution
  64. interrupt-controller@<addr> fsl,mpc5200-pic need an interrupt
  65. controller to boot
  66. bestcomm@<addr> fsl,mpc5200-bestcomm Bestcomm DMA controller
  67. Recommended soc5200 child nodes; populate as needed for your board
  68. name compatible Description
  69. ---- ---------- -----------
  70. timer@<addr> fsl,mpc5200-gpt General purpose timers
  71. gpio@<addr> fsl,mpc5200-gpio MPC5200 simple gpio controller
  72. gpio@<addr> fsl,mpc5200-gpio-wkup MPC5200 wakeup gpio controller
  73. rtc@<addr> fsl,mpc5200-rtc Real time clock
  74. mscan@<addr> fsl,mpc5200-mscan CAN bus controller
  75. pci@<addr> fsl,mpc5200-pci PCI bridge
  76. serial@<addr> fsl,mpc5200-psc-uart PSC in serial mode
  77. i2s@<addr> fsl,mpc5200-psc-i2s PSC in i2s mode
  78. ac97@<addr> fsl,mpc5200-psc-ac97 PSC in ac97 mode
  79. spi@<addr> fsl,mpc5200-psc-spi PSC in spi mode
  80. irda@<addr> fsl,mpc5200-psc-irda PSC in IrDA mode
  81. spi@<addr> fsl,mpc5200-spi MPC5200 spi device
  82. ethernet@<addr> fsl,mpc5200-fec MPC5200 ethernet device
  83. ata@<addr> fsl,mpc5200-ata IDE ATA interface
  84. i2c@<addr> fsl,mpc5200-i2c I2C controller
  85. usb@<addr> fsl,mpc5200-ohci,ohci-be USB controller
  86. xlb@<addr> fsl,mpc5200-xlb XLB arbitrator
  87. fsl,mpc5200-gpt nodes
  88. ---------------------
  89. On the mpc5200 and 5200b, GPT0 has a watchdog timer function. If the board
  90. design supports the internal wdt, then the device node for GPT0 should
  91. include the empty property 'fsl,has-wdt'.
  92. An mpc5200-gpt can be used as a single line GPIO controller. To do so,
  93. add the following properties to the gpt node:
  94. gpio-controller;
  95. #gpio-cells = <2>;
  96. When referencing the GPIO line from another node, the first cell must always
  97. be zero and the second cell represents the gpio flags and described in the
  98. gpio device tree binding.
  99. An mpc5200-gpt can be used as a single line edge sensitive interrupt
  100. controller. To do so, add the following properties to the gpt node:
  101. interrupt-controller;
  102. #interrupt-cells = <1>;
  103. When referencing the IRQ line from another node, the cell represents the
  104. sense mode; 1 for edge rising, 2 for edge falling.
  105. fsl,mpc5200-psc nodes
  106. ---------------------
  107. The PSCs should include a cell-index which is the index of the PSC in
  108. hardware. cell-index is used to determine which shared SoC registers to
  109. use when setting up PSC clocking. cell-index number starts at '0'. ie:
  110. PSC1 has 'cell-index = <0>'
  111. PSC4 has 'cell-index = <3>'
  112. PSC in i2s mode: The mpc5200 and mpc5200b PSCs are not compatible when in
  113. i2s mode. An 'mpc5200b-psc-i2s' node cannot include 'mpc5200-psc-i2s' in the
  114. compatible field.
  115. fsl,mpc5200-gpio and fsl,mpc5200-gpio-wkup nodes
  116. ------------------------------------------------
  117. Each GPIO controller node should have the empty property gpio-controller and
  118. #gpio-cells set to 2. First cell is the GPIO number which is interpreted
  119. according to the bit numbers in the GPIO control registers. The second cell
  120. is for flags which is currently unused.
  121. fsl,mpc5200-fec nodes
  122. ---------------------
  123. The FEC node can specify one of the following properties to configure
  124. the MII link:
  125. - fsl,7-wire-mode - An empty property that specifies the link uses 7-wire
  126. mode instead of MII
  127. - current-speed - Specifies that the MII should be configured for a fixed
  128. speed. This property should contain two cells. The
  129. first cell specifies the speed in Mbps and the second
  130. should be '0' for half duplex and '1' for full duplex
  131. - phy-handle - Contains a phandle to an Ethernet PHY.
  132. Interrupt controller (fsl,mpc5200-pic) node
  133. -------------------------------------------
  134. The mpc5200 pic binding splits hardware IRQ numbers into two levels. The
  135. split reflects the layout of the PIC hardware itself, which groups
  136. interrupts into one of three groups; CRIT, MAIN or PERP. Also, the
  137. Bestcomm dma engine has it's own set of interrupt sources which are
  138. cascaded off of peripheral interrupt 0, which the driver interprets as a
  139. fourth group, SDMA.
  140. The interrupts property for device nodes using the mpc5200 pic consists
  141. of three cells; <L1 L2 level>
  142. L1 := [CRIT=0, MAIN=1, PERP=2, SDMA=3]
  143. L2 := interrupt number; directly mapped from the value in the
  144. "ICTL PerStat, MainStat, CritStat Encoded Register"
  145. level := [LEVEL_HIGH=0, EDGE_RISING=1, EDGE_FALLING=2, LEVEL_LOW=3]
  146. For external IRQs, use the following interrupt property values (how to
  147. specify external interrupts is a frequently asked question):
  148. External interrupts:
  149. external irq0: interrupts = <0 0 n>;
  150. external irq1: interrupts = <1 1 n>;
  151. external irq2: interrupts = <1 2 n>;
  152. external irq3: interrupts = <1 3 n>;
  153. 'n' is sense (0: level high, 1: edge rising, 2: edge falling 3: level low)