mpc8xx_devices.c 4.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224
  1. /*
  2. * arch/ppc/syslib/mpc8xx_devices.c
  3. *
  4. * MPC8xx Device descriptions
  5. *
  6. * Maintainer: Kumar Gala <galak@kernel.crashing.org>
  7. *
  8. * Copyright 2005 MontaVista Software, Inc. by Vitaly Bordug<vbordug@ru.mvista.com>
  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 <linux/serial_8250.h>
  19. #include <linux/mii.h>
  20. #include <asm/commproc.h>
  21. #include <asm/mpc8xx.h>
  22. #include <asm/irq.h>
  23. #include <asm/ppc_sys.h>
  24. /* We use offsets for IORESOURCE_MEM to do not set dependences at compile time.
  25. * They will get fixed up by mach_mpc8xx_fixup
  26. */
  27. struct platform_device ppc_sys_platform_devices[] = {
  28. [MPC8xx_CPM_FEC1] = {
  29. .name = "fsl-cpm-fec",
  30. .id = 1,
  31. .num_resources = 2,
  32. .resource = (struct resource[]) {
  33. {
  34. .name = "regs",
  35. .start = 0xe00,
  36. .end = 0xe88,
  37. .flags = IORESOURCE_MEM,
  38. },
  39. {
  40. .name = "interrupt",
  41. .start = MPC8xx_INT_FEC1,
  42. .end = MPC8xx_INT_FEC1,
  43. .flags = IORESOURCE_IRQ,
  44. },
  45. },
  46. },
  47. [MPC8xx_CPM_FEC2] = {
  48. .name = "fsl-cpm-fec",
  49. .id = 2,
  50. .num_resources = 2,
  51. .resource = (struct resource[]) {
  52. {
  53. .name = "regs",
  54. .start = 0x1e00,
  55. .end = 0x1e88,
  56. .flags = IORESOURCE_MEM,
  57. },
  58. {
  59. .name = "interrupt",
  60. .start = MPC8xx_INT_FEC2,
  61. .end = MPC8xx_INT_FEC2,
  62. .flags = IORESOURCE_IRQ,
  63. },
  64. },
  65. },
  66. [MPC8xx_CPM_SCC1] = {
  67. .name = "fsl-cpm-scc",
  68. .id = 1,
  69. .num_resources = 3,
  70. .resource = (struct resource[]) {
  71. {
  72. .name = "regs",
  73. .start = 0xa00,
  74. .end = 0xa18,
  75. .flags = IORESOURCE_MEM,
  76. },
  77. {
  78. .name = "pram",
  79. .start = 0x3c00,
  80. .end = 0x3c80,
  81. .flags = IORESOURCE_MEM,
  82. },
  83. {
  84. .name = "interrupt",
  85. .start = MPC8xx_INT_SCC1,
  86. .end = MPC8xx_INT_SCC1,
  87. .flags = IORESOURCE_IRQ,
  88. },
  89. },
  90. },
  91. [MPC8xx_CPM_SCC2] = {
  92. .name = "fsl-cpm-scc",
  93. .id = 2,
  94. .num_resources = 3,
  95. .resource = (struct resource[]) {
  96. {
  97. .name = "regs",
  98. .start = 0xa20,
  99. .end = 0xa38,
  100. .flags = IORESOURCE_MEM,
  101. },
  102. {
  103. .name = "pram",
  104. .start = 0x3d00,
  105. .end = 0x3d80,
  106. .flags = IORESOURCE_MEM,
  107. },
  108. {
  109. .name = "interrupt",
  110. .start = MPC8xx_INT_SCC2,
  111. .end = MPC8xx_INT_SCC2,
  112. .flags = IORESOURCE_IRQ,
  113. },
  114. },
  115. },
  116. [MPC8xx_CPM_SCC3] = {
  117. .name = "fsl-cpm-scc",
  118. .id = 3,
  119. .num_resources = 3,
  120. .resource = (struct resource[]) {
  121. {
  122. .name = "regs",
  123. .start = 0xa40,
  124. .end = 0xa58,
  125. .flags = IORESOURCE_MEM,
  126. },
  127. {
  128. .name = "pram",
  129. .start = 0x3e00,
  130. .end = 0x3e80,
  131. .flags = IORESOURCE_MEM,
  132. },
  133. {
  134. .name = "interrupt",
  135. .start = MPC8xx_INT_SCC3,
  136. .end = MPC8xx_INT_SCC3,
  137. .flags = IORESOURCE_IRQ,
  138. },
  139. },
  140. },
  141. [MPC8xx_CPM_SCC4] = {
  142. .name = "fsl-cpm-scc",
  143. .id = 4,
  144. .num_resources = 3,
  145. .resource = (struct resource[]) {
  146. {
  147. .name = "regs",
  148. .start = 0xa60,
  149. .end = 0xa78,
  150. .flags = IORESOURCE_MEM,
  151. },
  152. {
  153. .name = "pram",
  154. .start = 0x3f00,
  155. .end = 0x3f80,
  156. .flags = IORESOURCE_MEM,
  157. },
  158. {
  159. .name = "interrupt",
  160. .start = MPC8xx_INT_SCC4,
  161. .end = MPC8xx_INT_SCC4,
  162. .flags = IORESOURCE_IRQ,
  163. },
  164. },
  165. },
  166. [MPC8xx_CPM_SMC1] = {
  167. .name = "fsl-cpm-smc",
  168. .id = 1,
  169. .num_resources = 2,
  170. .resource = (struct resource[]) {
  171. {
  172. .name = "regs",
  173. .start = 0xa82,
  174. .end = 0xa91,
  175. .flags = IORESOURCE_MEM,
  176. },
  177. {
  178. .name = "interrupt",
  179. .start = MPC8xx_INT_SMC1,
  180. .end = MPC8xx_INT_SMC1,
  181. .flags = IORESOURCE_IRQ,
  182. },
  183. },
  184. },
  185. [MPC8xx_CPM_SMC2] = {
  186. .name = "fsl-cpm-smc",
  187. .id = 2,
  188. .num_resources = 2,
  189. .resource = (struct resource[]) {
  190. {
  191. .name = "regs",
  192. .start = 0xa92,
  193. .end = 0xaa1,
  194. .flags = IORESOURCE_MEM,
  195. },
  196. {
  197. .name = "interrupt",
  198. .start = MPC8xx_INT_SMC2,
  199. .end = MPC8xx_INT_SMC2,
  200. .flags = IORESOURCE_IRQ,
  201. },
  202. },
  203. },
  204. };
  205. static int __init mach_mpc8xx_fixup(struct platform_device *pdev)
  206. {
  207. ppc_sys_fixup_mem_resource (pdev, IMAP_ADDR);
  208. return 0;
  209. }
  210. static int __init mach_mpc8xx_init(void)
  211. {
  212. ppc_sys_device_fixup = mach_mpc8xx_fixup;
  213. return 0;
  214. }
  215. postcore_initcall(mach_mpc8xx_init);