1/*
2 * PQ2 Device descriptions
3 *
4 * Maintainer: Kumar Gala <galak@kernel.crashing.org>
5 *
6 * This file is licensed under the terms of the GNU General Public License
7 * version 2. This program is licensed "as is" without any warranty of any
8 * kind, whether express or implied.
9 */
10
11
12#include <linux/init.h>
13#include <linux/module.h>
14#include <linux/platform_device.h>
15#include <linux/ioport.h>
16#include <asm/cpm2.h>
17#include <asm/irq.h>
18#include <asm/ppc_sys.h>
19#include <asm/machdep.h>
20
21struct platform_device ppc_sys_platform_devices[] = {
22	[MPC82xx_CPM_FCC1] = {
23		.name = "fsl-cpm-fcc",
24		.id	= 1,
25		.num_resources	 = 3,
26		.resource = (struct resource[]) {
27			{
28				.name	= "fcc_regs",
29				.start	= 0x11300,
30				.end	= 0x1131f,
31				.flags	= IORESOURCE_MEM,
32			},
33			{
34				.name	= "fcc_pram",
35				.start	= 0x8400,
36				.end	= 0x84ff,
37				.flags	= IORESOURCE_MEM,
38			},
39			{
40				.start	= SIU_INT_FCC1,
41				.end	= SIU_INT_FCC1,
42				.flags	= IORESOURCE_IRQ,
43			},
44		},
45	},
46	[MPC82xx_CPM_FCC2] = {
47		.name = "fsl-cpm-fcc",
48		.id	= 2,
49		.num_resources	 = 3,
50		.resource = (struct resource[]) {
51			{
52				.name	= "fcc_regs",
53				.start	= 0x11320,
54				.end	= 0x1133f,
55				.flags	= IORESOURCE_MEM,
56			},
57			{
58				.name	= "fcc_pram",
59				.start	= 0x8500,
60				.end	= 0x85ff,
61				.flags	= IORESOURCE_MEM,
62			},
63			{
64				.start	= SIU_INT_FCC2,
65				.end	= SIU_INT_FCC2,
66				.flags	= IORESOURCE_IRQ,
67			},
68		},
69	},
70	[MPC82xx_CPM_FCC3] = {
71		.name = "fsl-cpm-fcc",
72		.id	= 3,
73		.num_resources	 = 3,
74		.resource = (struct resource[]) {
75			{
76				.name	= "fcc_regs",
77				.start	= 0x11340,
78				.end	= 0x1135f,
79				.flags	= IORESOURCE_MEM,
80			},
81			{
82				.name	= "fcc_pram",
83				.start	= 0x8600,
84				.end	= 0x86ff,
85				.flags	= IORESOURCE_MEM,
86			},
87			{
88				.start	= SIU_INT_FCC3,
89				.end	= SIU_INT_FCC3,
90				.flags	= IORESOURCE_IRQ,
91			},
92		},
93	},
94	[MPC82xx_CPM_I2C] = {
95		.name = "fsl-cpm-i2c",
96		.id	= 1,
97		.num_resources	 = 3,
98		.resource = (struct resource[]) {
99			{
100				.name	= "i2c_mem",
101				.start	= 0x11860,
102				.end	= 0x118BF,
103				.flags	= IORESOURCE_MEM,
104			},
105			{
106				.name	= "i2c_pram",
107				.start 	= 0x8afc,
108				.end	= 0x8afd,
109				.flags	= IORESOURCE_MEM,
110			},
111			{
112				.start	= SIU_INT_I2C,
113				.end	= SIU_INT_I2C,
114				.flags	= IORESOURCE_IRQ,
115			},
116		},
117	},
118	[MPC82xx_CPM_SCC1] = {
119		.name = "fsl-cpm-scc",
120		.id	= 1,
121		.num_resources	 = 3,
122		.resource = (struct resource[]) {
123			{
124				.name	= "regs",
125				.start	= 0x11A00,
126				.end	= 0x11A1F,
127				.flags	= IORESOURCE_MEM,
128			},
129			{
130				.name	= "pram",
131				.start	= 0x8000,
132				.end	= 0x80ff,
133				.flags	= IORESOURCE_MEM,
134			},
135			{
136				.start	= SIU_INT_SCC1,
137				.end	= SIU_INT_SCC1,
138				.flags	= IORESOURCE_IRQ,
139			},
140		},
141	},
142	[MPC82xx_CPM_SCC2] = {
143		.name = "fsl-cpm-scc",
144		.id	= 2,
145		.num_resources	 = 3,
146		.resource = (struct resource[]) {
147			{
148				.name	= "regs",
149				.start	= 0x11A20,
150				.end	= 0x11A3F,
151				.flags	= IORESOURCE_MEM,
152			},
153			{
154				.name	= "pram",
155				.start	= 0x8100,
156				.end	= 0x81ff,
157				.flags	= IORESOURCE_MEM,
158			},
159			{
160				.start	= SIU_INT_SCC2,
161				.end	= SIU_INT_SCC2,
162				.flags	= IORESOURCE_IRQ,
163			},
164		},
165	},
166	[MPC82xx_CPM_SCC3] = {
167		.name = "fsl-cpm-scc",
168		.id	= 3,
169		.num_resources	 = 3,
170		.resource = (struct resource[]) {
171			{
172				.name 	= "regs",
173				.start	= 0x11A40,
174				.end	= 0x11A5F,
175				.flags	= IORESOURCE_MEM,
176			},
177			{
178				.name	= "pram",
179				.start	= 0x8200,
180				.end	= 0x82ff,
181				.flags	= IORESOURCE_MEM,
182			},
183			{
184				.start	= SIU_INT_SCC3,
185				.end	= SIU_INT_SCC3,
186				.flags	= IORESOURCE_IRQ,
187			},
188		},
189	},
190	[MPC82xx_CPM_SCC4] = {
191		.name = "fsl-cpm-scc",
192		.id	= 4,
193		.num_resources	 = 3,
194		.resource = (struct resource[]) {
195			{
196				.name	= "regs",
197				.start	= 0x11A60,
198				.end	= 0x11A7F,
199				.flags	= IORESOURCE_MEM,
200			},
201			{
202				.name	= "pram",
203				.start	= 0x8300,
204				.end	= 0x83ff,
205				.flags	= IORESOURCE_MEM,
206			},
207			{
208				.start	= SIU_INT_SCC4,
209				.end	= SIU_INT_SCC4,
210				.flags	= IORESOURCE_IRQ,
211			},
212		},
213	},
214	[MPC82xx_CPM_SPI] = {
215		.name = "fsl-cpm-spi",
216		.id	= 1,
217		.num_resources	 = 3,
218		.resource = (struct resource[]) {
219			{
220				.name	= "spi_mem",
221				.start	= 0x11AA0,
222				.end	= 0x11AFF,
223				.flags	= IORESOURCE_MEM,
224			},
225			{
226				.name	= "spi_pram",
227				.start	= 0x89fc,
228				.end	= 0x89fd,
229				.flags	= IORESOURCE_MEM,
230			},
231			{
232				.start	= SIU_INT_SPI,
233				.end	= SIU_INT_SPI,
234				.flags	= IORESOURCE_IRQ,
235			},
236		},
237	},
238	[MPC82xx_CPM_MCC1] = {
239		.name = "fsl-cpm-mcc",
240		.id	= 1,
241		.num_resources	 = 3,
242		.resource = (struct resource[]) {
243			{
244				.name	= "mcc_mem",
245				.start	= 0x11B30,
246				.end	= 0x11B3F,
247				.flags	= IORESOURCE_MEM,
248			},
249			{
250				.name	= "mcc_pram",
251				.start	= 0x8700,
252				.end	= 0x877f,
253				.flags	= IORESOURCE_MEM,
254			},
255			{
256				.start	= SIU_INT_MCC1,
257				.end	= SIU_INT_MCC1,
258				.flags	= IORESOURCE_IRQ,
259			},
260		},
261	},
262	[MPC82xx_CPM_MCC2] = {
263		.name = "fsl-cpm-mcc",
264		.id	= 2,
265		.num_resources	 = 3,
266		.resource = (struct resource[]) {
267			{
268				.name	= "mcc_mem",
269				.start	= 0x11B50,
270				.end	= 0x11B5F,
271				.flags	= IORESOURCE_MEM,
272			},
273			{
274				.name	= "mcc_pram",
275				.start	= 0x8800,
276				.end	= 0x887f,
277				.flags	= IORESOURCE_MEM,
278			},
279			{
280				.start	= SIU_INT_MCC2,
281				.end	= SIU_INT_MCC2,
282				.flags	= IORESOURCE_IRQ,
283			},
284		},
285	},
286	[MPC82xx_CPM_SMC1] = {
287		.name = "fsl-cpm-smc",
288		.id	= 1,
289		.num_resources	 = 3,
290		.resource = (struct resource[]) {
291			{
292				.name	= "smc_mem",
293				.start	= 0x11A80,
294				.end	= 0x11A8F,
295				.flags	= IORESOURCE_MEM,
296			},
297			{
298				.name	= "smc_pram",
299				.start	= 0x87fc,
300				.end	= 0x87fd,
301				.flags	= IORESOURCE_MEM,
302			},
303			{
304				.start	= SIU_INT_SMC1,
305				.end	= SIU_INT_SMC1,
306				.flags	= IORESOURCE_IRQ,
307			},
308		},
309	},
310	[MPC82xx_CPM_SMC2] = {
311		.name = "fsl-cpm-smc",
312		.id	= 2,
313		.num_resources	 = 3,
314		.resource = (struct resource[]) {
315			{
316				.name	= "smc_mem",
317				.start	= 0x11A90,
318				.end	= 0x11A9F,
319				.flags	= IORESOURCE_MEM,
320			},
321			{
322				.name	= "smc_pram",
323				.start	= 0x88fc,
324				.end	= 0x88fd,
325				.flags	= IORESOURCE_MEM,
326			},
327			{
328				.start	= SIU_INT_SMC2,
329				.end	= SIU_INT_SMC2,
330				.flags	= IORESOURCE_IRQ,
331			},
332		},
333	},
334	[MPC82xx_CPM_USB] = {
335		.name = "fsl-cpm-usb",
336		.id	= 1,
337		.num_resources	= 3,
338		.resource = (struct resource[]) {
339			{
340				.name	= "usb_mem",
341				.start	= 0x11b60,
342				.end	= 0x11b78,
343				.flags	= IORESOURCE_MEM,
344			},
345			{
346				.name	= "usb_pram",
347				.start	= 0x8b00,
348				.end	= 0x8bff,
349				.flags 	= IORESOURCE_MEM,
350			},
351			{
352				.start	= SIU_INT_USB,
353				.end	= SIU_INT_USB,
354				.flags	= IORESOURCE_IRQ,
355			},
356
357		},
358	},
359	[MPC82xx_SEC1] = {
360		.name = "fsl-sec",
361		.id = 1,
362		.num_resources = 1,
363		.resource = (struct resource[]) {
364			{
365				.name	= "sec_mem",
366				.start	= 0x40000,
367				.end	= 0x52fff,
368				.flags	= IORESOURCE_MEM,
369			},
370		},
371	},
372	[MPC82xx_MDIO_BB] = {
373		.name = "fsl-bb-mdio",
374		.id = 0,
375		.num_resources = 0,
376	},
377};
378
379static int __init mach_mpc82xx_fixup(struct platform_device *pdev)
380{
381	ppc_sys_fixup_mem_resource(pdev, CPM_MAP_ADDR);
382	return 0;
383}
384
385static int __init mach_mpc82xx_init(void)
386{
387	if (ppc_md.progress)
388		ppc_md.progress("mach_mpc82xx_init:enter", 0);
389	ppc_sys_device_fixup = mach_mpc82xx_fixup;
390	return 0;
391}
392
393postcore_initcall(mach_mpc82xx_init);
394