mpc85xx_sys.c 6.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235
  1. /*
  2. * arch/ppc/platforms/85xx/mpc85xx_sys.c
  3. *
  4. * MPC85xx System descriptions
  5. *
  6. * Maintainer: Kumar Gala <galak@kernel.crashing.org>
  7. *
  8. * Copyright 2005 Freescale Semiconductor Inc.
  9. *
  10. * This program is free software; you can redistribute it and/or modify it
  11. * under the terms of the GNU General Public License as published by the
  12. * Free Software Foundation; either version 2 of the License, or (at your
  13. * option) any later version.
  14. */
  15. #include <linux/init.h>
  16. #include <linux/module.h>
  17. #include <linux/device.h>
  18. #include <asm/ppc_sys.h>
  19. struct ppc_sys_spec *cur_ppc_sys_spec;
  20. struct ppc_sys_spec ppc_sys_specs[] = {
  21. {
  22. .ppc_sys_name = "8540",
  23. .mask = 0xFFFF0000,
  24. .value = 0x80300000,
  25. .num_devices = 11,
  26. .device_list = (enum ppc_sys_devices[])
  27. {
  28. MPC85xx_TSEC1, MPC85xx_TSEC2, MPC85xx_FEC, MPC85xx_IIC1,
  29. MPC85xx_DMA0, MPC85xx_DMA1, MPC85xx_DMA2, MPC85xx_DMA3,
  30. MPC85xx_PERFMON, MPC85xx_DUART, MPC85xx_MDIO,
  31. },
  32. },
  33. {
  34. .ppc_sys_name = "8560",
  35. .mask = 0xFFFF0000,
  36. .value = 0x80700000,
  37. .num_devices = 20,
  38. .device_list = (enum ppc_sys_devices[])
  39. {
  40. MPC85xx_TSEC1, MPC85xx_TSEC2, MPC85xx_IIC1,
  41. MPC85xx_DMA0, MPC85xx_DMA1, MPC85xx_DMA2, MPC85xx_DMA3,
  42. MPC85xx_PERFMON,
  43. MPC85xx_CPM_SPI, MPC85xx_CPM_I2C, MPC85xx_CPM_SCC1,
  44. MPC85xx_CPM_SCC2, MPC85xx_CPM_SCC3, MPC85xx_CPM_SCC4,
  45. MPC85xx_CPM_FCC1, MPC85xx_CPM_FCC2, MPC85xx_CPM_FCC3,
  46. MPC85xx_CPM_MCC1, MPC85xx_CPM_MCC2, MPC85xx_MDIO,
  47. },
  48. },
  49. {
  50. .ppc_sys_name = "8541",
  51. .mask = 0xFFFF0000,
  52. .value = 0x80720000,
  53. .num_devices = 14,
  54. .device_list = (enum ppc_sys_devices[])
  55. {
  56. MPC85xx_TSEC1, MPC85xx_TSEC2, MPC85xx_IIC1,
  57. MPC85xx_DMA0, MPC85xx_DMA1, MPC85xx_DMA2, MPC85xx_DMA3,
  58. MPC85xx_PERFMON, MPC85xx_DUART,
  59. MPC85xx_CPM_SPI, MPC85xx_CPM_I2C,
  60. MPC85xx_CPM_FCC1, MPC85xx_CPM_FCC2,
  61. MPC85xx_MDIO,
  62. },
  63. },
  64. {
  65. .ppc_sys_name = "8541E",
  66. .mask = 0xFFFF0000,
  67. .value = 0x807A0000,
  68. .num_devices = 15,
  69. .device_list = (enum ppc_sys_devices[])
  70. {
  71. MPC85xx_TSEC1, MPC85xx_TSEC2, MPC85xx_IIC1,
  72. MPC85xx_DMA0, MPC85xx_DMA1, MPC85xx_DMA2, MPC85xx_DMA3,
  73. MPC85xx_PERFMON, MPC85xx_DUART, MPC85xx_SEC2,
  74. MPC85xx_CPM_SPI, MPC85xx_CPM_I2C,
  75. MPC85xx_CPM_FCC1, MPC85xx_CPM_FCC2,
  76. MPC85xx_MDIO,
  77. },
  78. },
  79. {
  80. .ppc_sys_name = "8555",
  81. .mask = 0xFFFF0000,
  82. .value = 0x80710000,
  83. .num_devices = 20,
  84. .device_list = (enum ppc_sys_devices[])
  85. {
  86. MPC85xx_TSEC1, MPC85xx_TSEC2, MPC85xx_IIC1,
  87. MPC85xx_DMA0, MPC85xx_DMA1, MPC85xx_DMA2, MPC85xx_DMA3,
  88. MPC85xx_PERFMON, MPC85xx_DUART,
  89. MPC85xx_CPM_SPI, MPC85xx_CPM_I2C, MPC85xx_CPM_SCC1,
  90. MPC85xx_CPM_SCC2, MPC85xx_CPM_SCC3,
  91. MPC85xx_CPM_FCC1, MPC85xx_CPM_FCC2,
  92. MPC85xx_CPM_SMC1, MPC85xx_CPM_SMC2,
  93. MPC85xx_CPM_USB,
  94. MPC85xx_MDIO,
  95. },
  96. },
  97. {
  98. .ppc_sys_name = "8555E",
  99. .mask = 0xFFFF0000,
  100. .value = 0x80790000,
  101. .num_devices = 21,
  102. .device_list = (enum ppc_sys_devices[])
  103. {
  104. MPC85xx_TSEC1, MPC85xx_TSEC2, MPC85xx_IIC1,
  105. MPC85xx_DMA0, MPC85xx_DMA1, MPC85xx_DMA2, MPC85xx_DMA3,
  106. MPC85xx_PERFMON, MPC85xx_DUART, MPC85xx_SEC2,
  107. MPC85xx_CPM_SPI, MPC85xx_CPM_I2C, MPC85xx_CPM_SCC1,
  108. MPC85xx_CPM_SCC2, MPC85xx_CPM_SCC3,
  109. MPC85xx_CPM_FCC1, MPC85xx_CPM_FCC2,
  110. MPC85xx_CPM_SMC1, MPC85xx_CPM_SMC2,
  111. MPC85xx_CPM_USB,
  112. MPC85xx_MDIO,
  113. },
  114. },
  115. /* SVRs on 8548 rev1.0 matches for 8548/8547/8545 */
  116. {
  117. .ppc_sys_name = "8548E",
  118. .mask = 0xFFFF00F0,
  119. .value = 0x80390010,
  120. .num_devices = 14,
  121. .device_list = (enum ppc_sys_devices[])
  122. {
  123. MPC85xx_eTSEC1, MPC85xx_eTSEC2, MPC85xx_eTSEC3,
  124. MPC85xx_eTSEC4, MPC85xx_IIC1, MPC85xx_IIC2,
  125. MPC85xx_DMA0, MPC85xx_DMA1, MPC85xx_DMA2, MPC85xx_DMA3,
  126. MPC85xx_PERFMON, MPC85xx_DUART, MPC85xx_SEC2,
  127. MPC85xx_MDIO,
  128. },
  129. },
  130. {
  131. .ppc_sys_name = "8548",
  132. .mask = 0xFFFF00F0,
  133. .value = 0x80310010,
  134. .num_devices = 13,
  135. .device_list = (enum ppc_sys_devices[])
  136. {
  137. MPC85xx_eTSEC1, MPC85xx_eTSEC2, MPC85xx_eTSEC3,
  138. MPC85xx_eTSEC4, MPC85xx_IIC1, MPC85xx_IIC2,
  139. MPC85xx_DMA0, MPC85xx_DMA1, MPC85xx_DMA2, MPC85xx_DMA3,
  140. MPC85xx_PERFMON, MPC85xx_DUART,
  141. MPC85xx_MDIO,
  142. },
  143. },
  144. {
  145. .ppc_sys_name = "8547E",
  146. .mask = 0xFFFF00F0,
  147. .value = 0x80390010,
  148. .num_devices = 14,
  149. .device_list = (enum ppc_sys_devices[])
  150. {
  151. MPC85xx_eTSEC1, MPC85xx_eTSEC2, MPC85xx_eTSEC3,
  152. MPC85xx_eTSEC4, MPC85xx_IIC1, MPC85xx_IIC2,
  153. MPC85xx_DMA0, MPC85xx_DMA1, MPC85xx_DMA2, MPC85xx_DMA3,
  154. MPC85xx_PERFMON, MPC85xx_DUART, MPC85xx_SEC2,
  155. MPC85xx_MDIO,
  156. },
  157. },
  158. {
  159. .ppc_sys_name = "8547",
  160. .mask = 0xFFFF00F0,
  161. .value = 0x80310010,
  162. .num_devices = 13,
  163. .device_list = (enum ppc_sys_devices[])
  164. {
  165. MPC85xx_eTSEC1, MPC85xx_eTSEC2, MPC85xx_eTSEC3,
  166. MPC85xx_eTSEC4, MPC85xx_IIC1, MPC85xx_IIC2,
  167. MPC85xx_DMA0, MPC85xx_DMA1, MPC85xx_DMA2, MPC85xx_DMA3,
  168. MPC85xx_PERFMON, MPC85xx_DUART,
  169. MPC85xx_MDIO,
  170. },
  171. },
  172. {
  173. .ppc_sys_name = "8545E",
  174. .mask = 0xFFFF00F0,
  175. .value = 0x80390010,
  176. .num_devices = 12,
  177. .device_list = (enum ppc_sys_devices[])
  178. {
  179. MPC85xx_eTSEC1, MPC85xx_eTSEC2,
  180. MPC85xx_IIC1, MPC85xx_IIC2,
  181. MPC85xx_DMA0, MPC85xx_DMA1, MPC85xx_DMA2, MPC85xx_DMA3,
  182. MPC85xx_PERFMON, MPC85xx_DUART, MPC85xx_SEC2,
  183. MPC85xx_MDIO,
  184. },
  185. },
  186. {
  187. .ppc_sys_name = "8545",
  188. .mask = 0xFFFF00F0,
  189. .value = 0x80310010,
  190. .num_devices = 11,
  191. .device_list = (enum ppc_sys_devices[])
  192. {
  193. MPC85xx_eTSEC1, MPC85xx_eTSEC2,
  194. MPC85xx_IIC1, MPC85xx_IIC2,
  195. MPC85xx_DMA0, MPC85xx_DMA1, MPC85xx_DMA2, MPC85xx_DMA3,
  196. MPC85xx_PERFMON, MPC85xx_DUART,
  197. MPC85xx_MDIO,
  198. },
  199. },
  200. {
  201. .ppc_sys_name = "8543E",
  202. .mask = 0xFFFF00F0,
  203. .value = 0x803A0010,
  204. .num_devices = 12,
  205. .device_list = (enum ppc_sys_devices[])
  206. {
  207. MPC85xx_eTSEC1, MPC85xx_eTSEC2,
  208. MPC85xx_IIC1, MPC85xx_IIC2,
  209. MPC85xx_DMA0, MPC85xx_DMA1, MPC85xx_DMA2, MPC85xx_DMA3,
  210. MPC85xx_PERFMON, MPC85xx_DUART, MPC85xx_SEC2,
  211. MPC85xx_MDIO,
  212. },
  213. },
  214. {
  215. .ppc_sys_name = "8543",
  216. .mask = 0xFFFF00F0,
  217. .value = 0x80320010,
  218. .num_devices = 11,
  219. .device_list = (enum ppc_sys_devices[])
  220. {
  221. MPC85xx_eTSEC1, MPC85xx_eTSEC2,
  222. MPC85xx_IIC1, MPC85xx_IIC2,
  223. MPC85xx_DMA0, MPC85xx_DMA1, MPC85xx_DMA2, MPC85xx_DMA3,
  224. MPC85xx_PERFMON, MPC85xx_DUART,
  225. MPC85xx_MDIO,
  226. },
  227. },
  228. { /* default match */
  229. .ppc_sys_name = "",
  230. .mask = 0x00000000,
  231. .value = 0x00000000,
  232. },
  233. };