mpc52xx_devices.c 6.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318
  1. /*
  2. * arch/ppc/syslib/mpc52xx_devices.c
  3. *
  4. * Freescale MPC52xx device descriptions
  5. *
  6. *
  7. * Maintainer : Sylvain Munaut <tnt@246tNt.com>
  8. *
  9. * Copyright (C) 2005 Sylvain Munaut <tnt@246tNt.com>
  10. *
  11. * This file is licensed under the terms of the GNU General Public License
  12. * version 2. This program is licensed "as is" without any warranty of any
  13. * kind, whether express or implied.
  14. */
  15. #include <linux/fsl_devices.h>
  16. #include <linux/resource.h>
  17. #include <asm/mpc52xx.h>
  18. #include <asm/ppc_sys.h>
  19. static u64 mpc52xx_dma_mask = 0xffffffffULL;
  20. static struct fsl_i2c_platform_data mpc52xx_fsl_i2c_pdata = {
  21. .device_flags = FSL_I2C_DEV_CLOCK_5200,
  22. };
  23. /* We use relative offsets for IORESOURCE_MEM to be independent from the
  24. * MBAR location at compile time
  25. */
  26. /* TODO Add the BestComm initiator channel to the device definitions,
  27. possibly using IORESOURCE_DMA. But that's when BestComm is ready ... */
  28. struct platform_device ppc_sys_platform_devices[] = {
  29. [MPC52xx_MSCAN1] = {
  30. .name = "mpc52xx-mscan",
  31. .id = 0,
  32. .num_resources = 2,
  33. .resource = (struct resource[]) {
  34. {
  35. .start = 0x0900,
  36. .end = 0x097f,
  37. .flags = IORESOURCE_MEM,
  38. },
  39. {
  40. .start = MPC52xx_MSCAN1_IRQ,
  41. .end = MPC52xx_MSCAN1_IRQ,
  42. .flags = IORESOURCE_IRQ,
  43. },
  44. },
  45. },
  46. [MPC52xx_MSCAN2] = {
  47. .name = "mpc52xx-mscan",
  48. .id = 1,
  49. .num_resources = 2,
  50. .resource = (struct resource[]) {
  51. {
  52. .start = 0x0980,
  53. .end = 0x09ff,
  54. .flags = IORESOURCE_MEM,
  55. },
  56. {
  57. .start = MPC52xx_MSCAN2_IRQ,
  58. .end = MPC52xx_MSCAN2_IRQ,
  59. .flags = IORESOURCE_IRQ,
  60. },
  61. },
  62. },
  63. [MPC52xx_SPI] = {
  64. .name = "mpc52xx-spi",
  65. .id = -1,
  66. .num_resources = 3,
  67. .resource = (struct resource[]) {
  68. {
  69. .start = 0x0f00,
  70. .end = 0x0f1f,
  71. .flags = IORESOURCE_MEM,
  72. },
  73. {
  74. .name = "modf",
  75. .start = MPC52xx_SPI_MODF_IRQ,
  76. .end = MPC52xx_SPI_MODF_IRQ,
  77. .flags = IORESOURCE_IRQ,
  78. },
  79. {
  80. .name = "spif",
  81. .start = MPC52xx_SPI_SPIF_IRQ,
  82. .end = MPC52xx_SPI_SPIF_IRQ,
  83. .flags = IORESOURCE_IRQ,
  84. },
  85. },
  86. },
  87. [MPC52xx_USB] = {
  88. .name = "ppc-soc-ohci",
  89. .id = -1,
  90. .num_resources = 2,
  91. .dev.dma_mask = &mpc52xx_dma_mask,
  92. .dev.coherent_dma_mask = 0xffffffffULL,
  93. .resource = (struct resource[]) {
  94. {
  95. .start = 0x1000,
  96. .end = 0x10ff,
  97. .flags = IORESOURCE_MEM,
  98. },
  99. {
  100. .start = MPC52xx_USB_IRQ,
  101. .end = MPC52xx_USB_IRQ,
  102. .flags = IORESOURCE_IRQ,
  103. },
  104. },
  105. },
  106. [MPC52xx_BDLC] = {
  107. .name = "mpc52xx-bdlc",
  108. .id = -1,
  109. .num_resources = 2,
  110. .resource = (struct resource[]) {
  111. {
  112. .start = 0x1300,
  113. .end = 0x130f,
  114. .flags = IORESOURCE_MEM,
  115. },
  116. {
  117. .start = MPC52xx_BDLC_IRQ,
  118. .end = MPC52xx_BDLC_IRQ,
  119. .flags = IORESOURCE_IRQ,
  120. },
  121. },
  122. },
  123. [MPC52xx_PSC1] = {
  124. .name = "mpc52xx-psc",
  125. .id = 0,
  126. .num_resources = 2,
  127. .resource = (struct resource[]) {
  128. {
  129. .start = 0x2000,
  130. .end = 0x209f,
  131. .flags = IORESOURCE_MEM,
  132. },
  133. {
  134. .start = MPC52xx_PSC1_IRQ,
  135. .end = MPC52xx_PSC1_IRQ,
  136. .flags = IORESOURCE_IRQ,
  137. },
  138. },
  139. },
  140. [MPC52xx_PSC2] = {
  141. .name = "mpc52xx-psc",
  142. .id = 1,
  143. .num_resources = 2,
  144. .resource = (struct resource[]) {
  145. {
  146. .start = 0x2200,
  147. .end = 0x229f,
  148. .flags = IORESOURCE_MEM,
  149. },
  150. {
  151. .start = MPC52xx_PSC2_IRQ,
  152. .end = MPC52xx_PSC2_IRQ,
  153. .flags = IORESOURCE_IRQ,
  154. },
  155. },
  156. },
  157. [MPC52xx_PSC3] = {
  158. .name = "mpc52xx-psc",
  159. .id = 2,
  160. .num_resources = 2,
  161. .resource = (struct resource[]) {
  162. {
  163. .start = 0x2400,
  164. .end = 0x249f,
  165. .flags = IORESOURCE_MEM,
  166. },
  167. {
  168. .start = MPC52xx_PSC3_IRQ,
  169. .end = MPC52xx_PSC3_IRQ,
  170. .flags = IORESOURCE_IRQ,
  171. },
  172. },
  173. },
  174. [MPC52xx_PSC4] = {
  175. .name = "mpc52xx-psc",
  176. .id = 3,
  177. .num_resources = 2,
  178. .resource = (struct resource[]) {
  179. {
  180. .start = 0x2600,
  181. .end = 0x269f,
  182. .flags = IORESOURCE_MEM,
  183. },
  184. {
  185. .start = MPC52xx_PSC4_IRQ,
  186. .end = MPC52xx_PSC4_IRQ,
  187. .flags = IORESOURCE_IRQ,
  188. },
  189. },
  190. },
  191. [MPC52xx_PSC5] = {
  192. .name = "mpc52xx-psc",
  193. .id = 4,
  194. .num_resources = 2,
  195. .resource = (struct resource[]) {
  196. {
  197. .start = 0x2800,
  198. .end = 0x289f,
  199. .flags = IORESOURCE_MEM,
  200. },
  201. {
  202. .start = MPC52xx_PSC5_IRQ,
  203. .end = MPC52xx_PSC5_IRQ,
  204. .flags = IORESOURCE_IRQ,
  205. },
  206. },
  207. },
  208. [MPC52xx_PSC6] = {
  209. .name = "mpc52xx-psc",
  210. .id = 5,
  211. .num_resources = 2,
  212. .resource = (struct resource[]) {
  213. {
  214. .start = 0x2c00,
  215. .end = 0x2c9f,
  216. .flags = IORESOURCE_MEM,
  217. },
  218. {
  219. .start = MPC52xx_PSC6_IRQ,
  220. .end = MPC52xx_PSC6_IRQ,
  221. .flags = IORESOURCE_IRQ,
  222. },
  223. },
  224. },
  225. [MPC52xx_FEC] = {
  226. .name = "mpc52xx-fec",
  227. .id = -1,
  228. .num_resources = 2,
  229. .resource = (struct resource[]) {
  230. {
  231. .start = 0x3000,
  232. .end = 0x33ff,
  233. .flags = IORESOURCE_MEM,
  234. },
  235. {
  236. .start = MPC52xx_FEC_IRQ,
  237. .end = MPC52xx_FEC_IRQ,
  238. .flags = IORESOURCE_IRQ,
  239. },
  240. },
  241. },
  242. [MPC52xx_ATA] = {
  243. .name = "mpc52xx-ata",
  244. .id = -1,
  245. .num_resources = 2,
  246. .resource = (struct resource[]) {
  247. {
  248. .start = 0x3a00,
  249. .end = 0x3aff,
  250. .flags = IORESOURCE_MEM,
  251. },
  252. {
  253. .start = MPC52xx_ATA_IRQ,
  254. .end = MPC52xx_ATA_IRQ,
  255. .flags = IORESOURCE_IRQ,
  256. },
  257. },
  258. },
  259. [MPC52xx_I2C1] = {
  260. .name = "fsl-i2c",
  261. .id = 0,
  262. .dev.platform_data = &mpc52xx_fsl_i2c_pdata,
  263. .num_resources = 2,
  264. .resource = (struct resource[]) {
  265. {
  266. .start = 0x3d00,
  267. .end = 0x3d1f,
  268. .flags = IORESOURCE_MEM,
  269. },
  270. {
  271. .start = MPC52xx_I2C1_IRQ,
  272. .end = MPC52xx_I2C1_IRQ,
  273. .flags = IORESOURCE_IRQ,
  274. },
  275. },
  276. },
  277. [MPC52xx_I2C2] = {
  278. .name = "fsl-i2c",
  279. .id = 1,
  280. .dev.platform_data = &mpc52xx_fsl_i2c_pdata,
  281. .num_resources = 2,
  282. .resource = (struct resource[]) {
  283. {
  284. .start = 0x3d40,
  285. .end = 0x3d5f,
  286. .flags = IORESOURCE_MEM,
  287. },
  288. {
  289. .start = MPC52xx_I2C2_IRQ,
  290. .end = MPC52xx_I2C2_IRQ,
  291. .flags = IORESOURCE_IRQ,
  292. },
  293. },
  294. },
  295. };
  296. static int __init mach_mpc52xx_fixup(struct platform_device *pdev)
  297. {
  298. ppc_sys_fixup_mem_resource(pdev, MPC52xx_MBAR);
  299. return 0;
  300. }
  301. static int __init mach_mpc52xx_init(void)
  302. {
  303. ppc_sys_device_fixup = mach_mpc52xx_fixup;
  304. return 0;
  305. }
  306. postcore_initcall(mach_mpc52xx_init);