Linux 2.6.25-rc4
[linux-2.6/next.git] / arch / ppc / syslib / mpc52xx_devices.c
blob7487539a4e9295d6f8f78eeeb256de67a00e56a5
1 /*
2 * Freescale MPC52xx device descriptions
5 * Maintainer : Sylvain Munaut <tnt@246tNt.com>
7 * Copyright (C) 2005 Sylvain Munaut <tnt@246tNt.com>
9 * This file is licensed under the terms of the GNU General Public License
10 * version 2. This program is licensed "as is" without any warranty of any
11 * kind, whether express or implied.
14 #include <linux/fsl_devices.h>
15 #include <linux/resource.h>
16 #include <linux/platform_device.h>
17 #include <asm/mpc52xx.h>
18 #include <asm/ppc_sys.h>
21 static u64 mpc52xx_dma_mask = 0xffffffffULL;
23 static struct fsl_i2c_platform_data mpc52xx_fsl_i2c_pdata = {
24 .device_flags = FSL_I2C_DEV_CLOCK_5200,
28 /* We use relative offsets for IORESOURCE_MEM to be independent from the
29 * MBAR location at compile time
32 /* TODO Add the BestComm initiator channel to the device definitions,
33 possibly using IORESOURCE_DMA. But that's when BestComm is ready ... */
35 struct platform_device ppc_sys_platform_devices[] = {
36 [MPC52xx_MSCAN1] = {
37 .name = "mpc52xx-mscan",
38 .id = 0,
39 .num_resources = 2,
40 .resource = (struct resource[]) {
42 .start = 0x0900,
43 .end = 0x097f,
44 .flags = IORESOURCE_MEM,
47 .start = MPC52xx_MSCAN1_IRQ,
48 .end = MPC52xx_MSCAN1_IRQ,
49 .flags = IORESOURCE_IRQ,
53 [MPC52xx_MSCAN2] = {
54 .name = "mpc52xx-mscan",
55 .id = 1,
56 .num_resources = 2,
57 .resource = (struct resource[]) {
59 .start = 0x0980,
60 .end = 0x09ff,
61 .flags = IORESOURCE_MEM,
64 .start = MPC52xx_MSCAN2_IRQ,
65 .end = MPC52xx_MSCAN2_IRQ,
66 .flags = IORESOURCE_IRQ,
70 [MPC52xx_SPI] = {
71 .name = "mpc52xx-spi",
72 .id = -1,
73 .num_resources = 3,
74 .resource = (struct resource[]) {
76 .start = 0x0f00,
77 .end = 0x0f1f,
78 .flags = IORESOURCE_MEM,
81 .name = "modf",
82 .start = MPC52xx_SPI_MODF_IRQ,
83 .end = MPC52xx_SPI_MODF_IRQ,
84 .flags = IORESOURCE_IRQ,
87 .name = "spif",
88 .start = MPC52xx_SPI_SPIF_IRQ,
89 .end = MPC52xx_SPI_SPIF_IRQ,
90 .flags = IORESOURCE_IRQ,
94 [MPC52xx_USB] = {
95 .name = "ppc-soc-ohci",
96 .id = -1,
97 .num_resources = 2,
98 .dev.dma_mask = &mpc52xx_dma_mask,
99 .dev.coherent_dma_mask = 0xffffffffULL,
100 .resource = (struct resource[]) {
102 .start = 0x1000,
103 .end = 0x10ff,
104 .flags = IORESOURCE_MEM,
107 .start = MPC52xx_USB_IRQ,
108 .end = MPC52xx_USB_IRQ,
109 .flags = IORESOURCE_IRQ,
113 [MPC52xx_BDLC] = {
114 .name = "mpc52xx-bdlc",
115 .id = -1,
116 .num_resources = 2,
117 .resource = (struct resource[]) {
119 .start = 0x1300,
120 .end = 0x130f,
121 .flags = IORESOURCE_MEM,
124 .start = MPC52xx_BDLC_IRQ,
125 .end = MPC52xx_BDLC_IRQ,
126 .flags = IORESOURCE_IRQ,
130 [MPC52xx_PSC1] = {
131 .name = "mpc52xx-psc",
132 .id = 0,
133 .num_resources = 2,
134 .resource = (struct resource[]) {
136 .start = 0x2000,
137 .end = 0x209f,
138 .flags = IORESOURCE_MEM,
141 .start = MPC52xx_PSC1_IRQ,
142 .end = MPC52xx_PSC1_IRQ,
143 .flags = IORESOURCE_IRQ,
147 [MPC52xx_PSC2] = {
148 .name = "mpc52xx-psc",
149 .id = 1,
150 .num_resources = 2,
151 .resource = (struct resource[]) {
153 .start = 0x2200,
154 .end = 0x229f,
155 .flags = IORESOURCE_MEM,
158 .start = MPC52xx_PSC2_IRQ,
159 .end = MPC52xx_PSC2_IRQ,
160 .flags = IORESOURCE_IRQ,
164 [MPC52xx_PSC3] = {
165 .name = "mpc52xx-psc",
166 .id = 2,
167 .num_resources = 2,
168 .resource = (struct resource[]) {
170 .start = 0x2400,
171 .end = 0x249f,
172 .flags = IORESOURCE_MEM,
175 .start = MPC52xx_PSC3_IRQ,
176 .end = MPC52xx_PSC3_IRQ,
177 .flags = IORESOURCE_IRQ,
181 [MPC52xx_PSC4] = {
182 .name = "mpc52xx-psc",
183 .id = 3,
184 .num_resources = 2,
185 .resource = (struct resource[]) {
187 .start = 0x2600,
188 .end = 0x269f,
189 .flags = IORESOURCE_MEM,
192 .start = MPC52xx_PSC4_IRQ,
193 .end = MPC52xx_PSC4_IRQ,
194 .flags = IORESOURCE_IRQ,
198 [MPC52xx_PSC5] = {
199 .name = "mpc52xx-psc",
200 .id = 4,
201 .num_resources = 2,
202 .resource = (struct resource[]) {
204 .start = 0x2800,
205 .end = 0x289f,
206 .flags = IORESOURCE_MEM,
209 .start = MPC52xx_PSC5_IRQ,
210 .end = MPC52xx_PSC5_IRQ,
211 .flags = IORESOURCE_IRQ,
215 [MPC52xx_PSC6] = {
216 .name = "mpc52xx-psc",
217 .id = 5,
218 .num_resources = 2,
219 .resource = (struct resource[]) {
221 .start = 0x2c00,
222 .end = 0x2c9f,
223 .flags = IORESOURCE_MEM,
226 .start = MPC52xx_PSC6_IRQ,
227 .end = MPC52xx_PSC6_IRQ,
228 .flags = IORESOURCE_IRQ,
232 [MPC52xx_FEC] = {
233 .name = "mpc52xx-fec",
234 .id = -1,
235 .num_resources = 2,
236 .resource = (struct resource[]) {
238 .start = 0x3000,
239 .end = 0x33ff,
240 .flags = IORESOURCE_MEM,
243 .start = MPC52xx_FEC_IRQ,
244 .end = MPC52xx_FEC_IRQ,
245 .flags = IORESOURCE_IRQ,
249 [MPC52xx_ATA] = {
250 .name = "mpc52xx-ata",
251 .id = -1,
252 .num_resources = 2,
253 .resource = (struct resource[]) {
255 .start = 0x3a00,
256 .end = 0x3aff,
257 .flags = IORESOURCE_MEM,
260 .start = MPC52xx_ATA_IRQ,
261 .end = MPC52xx_ATA_IRQ,
262 .flags = IORESOURCE_IRQ,
266 [MPC52xx_I2C1] = {
267 .name = "fsl-i2c",
268 .id = 0,
269 .dev.platform_data = &mpc52xx_fsl_i2c_pdata,
270 .num_resources = 2,
271 .resource = (struct resource[]) {
273 .start = 0x3d00,
274 .end = 0x3d1f,
275 .flags = IORESOURCE_MEM,
278 .start = MPC52xx_I2C1_IRQ,
279 .end = MPC52xx_I2C1_IRQ,
280 .flags = IORESOURCE_IRQ,
284 [MPC52xx_I2C2] = {
285 .name = "fsl-i2c",
286 .id = 1,
287 .dev.platform_data = &mpc52xx_fsl_i2c_pdata,
288 .num_resources = 2,
289 .resource = (struct resource[]) {
291 .start = 0x3d40,
292 .end = 0x3d5f,
293 .flags = IORESOURCE_MEM,
296 .start = MPC52xx_I2C2_IRQ,
297 .end = MPC52xx_I2C2_IRQ,
298 .flags = IORESOURCE_IRQ,
305 static int __init mach_mpc52xx_fixup(struct platform_device *pdev)
307 ppc_sys_fixup_mem_resource(pdev, MPC52xx_MBAR);
308 return 0;
311 static int __init mach_mpc52xx_init(void)
313 ppc_sys_device_fixup = mach_mpc52xx_fixup;
314 return 0;
317 postcore_initcall(mach_mpc52xx_init);