| /* | 
 |  * arch/ppc/syslib/mpc8xx_devices.c | 
 |  * | 
 |  * MPC8xx Device descriptions | 
 |  * | 
 |  * Maintainer: Kumar Gala <kumar.gala@freescale.com> | 
 |  * | 
 |  * Copyright 2005 MontaVista Software, Inc. by Vitaly Bordug<vbordug@ru.mvista.com> | 
 |  * | 
 |  * This program is free software; you can redistribute  it and/or modify it | 
 |  * under  the terms of  the GNU General  Public License as published by the | 
 |  * Free Software Foundation;  either version 2 of the  License, or (at your | 
 |  * option) any later version. | 
 |  */ | 
 |  | 
 | #include <linux/init.h> | 
 | #include <linux/module.h> | 
 | #include <linux/device.h> | 
 | #include <linux/serial_8250.h> | 
 | #include <linux/mii.h> | 
 | #include <asm/commproc.h> | 
 | #include <asm/mpc8xx.h> | 
 | #include <asm/irq.h> | 
 | #include <asm/ppc_sys.h> | 
 |  | 
 | /* We use offsets for IORESOURCE_MEM to do not set dependences at compile time. | 
 |  * They will get fixed up by mach_mpc8xx_fixup | 
 |  */ | 
 |  | 
 | struct platform_device ppc_sys_platform_devices[] = { | 
 | 	[MPC8xx_CPM_FEC1] =	{ | 
 | 		.name = "fsl-cpm-fec", | 
 | 		.id	= 1, | 
 | 		.num_resources = 2, | 
 | 		.resource = (struct resource[])	{ | 
 | 			{ | 
 | 				.name 	= "regs", | 
 | 				.start	= 0xe00, | 
 | 				.end	= 0xe88, | 
 | 				.flags	= IORESOURCE_MEM, | 
 | 			}, | 
 | 			{ | 
 | 				.name	= "interrupt", | 
 | 				.start	= MPC8xx_INT_FEC1, | 
 | 				.end	= MPC8xx_INT_FEC1, | 
 | 				.flags	= IORESOURCE_IRQ, | 
 | 			}, | 
 | 		}, | 
 | 	}, | 
 | 	[MPC8xx_CPM_FEC2] =	{ | 
 | 		.name = "fsl-cpm-fec", | 
 | 		.id	= 2, | 
 | 		.num_resources = 2, | 
 | 		.resource = (struct resource[])	{ | 
 | 			{ | 
 | 				.name	= "regs", | 
 | 				.start	= 0x1e00, | 
 | 				.end	= 0x1e88, | 
 | 				.flags	= IORESOURCE_MEM, | 
 | 			}, | 
 | 			{ | 
 | 				.name	= "interrupt", | 
 | 				.start	= MPC8xx_INT_FEC2, | 
 | 				.end	= MPC8xx_INT_FEC2, | 
 | 				.flags	= IORESOURCE_IRQ, | 
 | 			}, | 
 | 		}, | 
 | 	}, | 
 | 	[MPC8xx_CPM_SCC1] = { | 
 | 		.name = "fsl-cpm-scc", | 
 | 		.id	= 1, | 
 | 		.num_resources = 3, | 
 | 		.resource = (struct resource[]) { | 
 | 			{ | 
 | 				.name	= "regs", | 
 | 				.start	= 0xa00, | 
 | 				.end	= 0xa18, | 
 | 				.flags	= IORESOURCE_MEM, | 
 | 			}, | 
 | 			{ | 
 | 				.name 	= "pram", | 
 | 				.start 	= 0x3c00, | 
 | 				.end 	= 0x3c80, | 
 | 				.flags 	= IORESOURCE_MEM, | 
 | 			}, | 
 | 			{ | 
 | 				.name	= "interrupt", | 
 | 				.start	= MPC8xx_INT_SCC1, | 
 | 				.end	= MPC8xx_INT_SCC1, | 
 | 				.flags	= IORESOURCE_IRQ, | 
 | 			}, | 
 | 		}, | 
 | 	}, | 
 | 	[MPC8xx_CPM_SCC2] = { | 
 | 		.name = "fsl-cpm-scc", | 
 | 		.id	= 2, | 
 | 		.num_resources	= 3, | 
 | 		.resource = (struct resource[]) { | 
 | 			{ | 
 | 				.name	= "regs", | 
 | 				.start	= 0xa20, | 
 | 				.end	= 0xa38, | 
 | 				.flags	= IORESOURCE_MEM, | 
 | 			}, | 
 | 			{ | 
 | 				.name 	= "pram", | 
 | 				.start 	= 0x3d00, | 
 | 				.end 	= 0x3d80, | 
 | 				.flags 	= IORESOURCE_MEM, | 
 | 			}, | 
 |  | 
 | 			{ | 
 | 				.name	= "interrupt", | 
 | 				.start	= MPC8xx_INT_SCC2, | 
 | 				.end	= MPC8xx_INT_SCC2, | 
 | 				.flags	= IORESOURCE_IRQ, | 
 | 			}, | 
 | 		}, | 
 | 	}, | 
 | 	[MPC8xx_CPM_SCC3] = { | 
 | 		.name = "fsl-cpm-scc", | 
 | 		.id	= 3, | 
 | 		.num_resources	= 3, | 
 | 		.resource = (struct resource[]) { | 
 | 			{ | 
 | 				.name	= "regs", | 
 | 				.start	= 0xa40, | 
 | 				.end	= 0xa58, | 
 | 				.flags	= IORESOURCE_MEM, | 
 | 			}, | 
 | 			{ | 
 | 				.name 	= "pram", | 
 | 				.start 	= 0x3e00, | 
 | 				.end 	= 0x3e80, | 
 | 				.flags 	= IORESOURCE_MEM, | 
 | 			}, | 
 |  | 
 | 			{ | 
 | 				.name	= "interrupt", | 
 | 				.start	= MPC8xx_INT_SCC3, | 
 | 				.end	= MPC8xx_INT_SCC3, | 
 | 				.flags	= IORESOURCE_IRQ, | 
 | 			}, | 
 | 		}, | 
 | 	}, | 
 | 	[MPC8xx_CPM_SCC4] = { | 
 | 		.name = "fsl-cpm-scc", | 
 | 		.id	= 4, | 
 | 		.num_resources	= 3, | 
 | 		.resource = (struct resource[]) { | 
 | 			{ | 
 | 				.name	= "regs", | 
 | 				.start	= 0xa60, | 
 | 				.end	= 0xa78, | 
 | 				.flags	= IORESOURCE_MEM, | 
 | 			}, | 
 | 			{ | 
 | 				.name 	= "pram", | 
 | 				.start 	= 0x3f00, | 
 | 				.end 	= 0x3f80, | 
 | 				.flags 	= IORESOURCE_MEM, | 
 | 			}, | 
 |  | 
 | 			{ | 
 | 				.name	= "interrupt", | 
 | 				.start	= MPC8xx_INT_SCC4, | 
 | 				.end	= MPC8xx_INT_SCC4, | 
 | 				.flags	= IORESOURCE_IRQ, | 
 | 			}, | 
 | 		}, | 
 | 	}, | 
 | 	[MPC8xx_CPM_SMC1] = { | 
 | 		.name = "fsl-cpm-smc", | 
 | 		.id	= 1, | 
 | 		.num_resources	= 2, | 
 | 		.resource = (struct resource[]) { | 
 | 			{ | 
 | 				.name	= "regs", | 
 | 				.start	= 0xa82, | 
 | 				.end	= 0xa91, | 
 | 				.flags	= IORESOURCE_MEM, | 
 | 			}, | 
 | 			{ | 
 | 				.name	= "interrupt", | 
 | 				.start	= MPC8xx_INT_SMC1, | 
 | 				.end	= MPC8xx_INT_SMC1, | 
 | 				.flags	= IORESOURCE_IRQ, | 
 | 			}, | 
 | 		}, | 
 | 	}, | 
 | 	[MPC8xx_CPM_SMC2] = { | 
 | 		.name = "fsl-cpm-smc", | 
 | 		.id	= 2, | 
 | 		.num_resources	= 2, | 
 | 		.resource = (struct resource[]) { | 
 | 			{ | 
 | 				.name	= "regs", | 
 | 				.start	= 0xa92, | 
 | 				.end	= 0xaa1, | 
 | 				.flags	= IORESOURCE_MEM, | 
 | 			}, | 
 | 			{ | 
 | 				.name	= "interrupt", | 
 | 				.start	= MPC8xx_INT_SMC2, | 
 | 				.end	= MPC8xx_INT_SMC2, | 
 | 				.flags	= IORESOURCE_IRQ, | 
 | 			}, | 
 | 		}, | 
 | 	}, | 
 | }; | 
 |  | 
 | static int __init mach_mpc8xx_fixup(struct platform_device *pdev) | 
 | { | 
 | 	ppc_sys_fixup_mem_resource (pdev, IMAP_ADDR); | 
 | 	return 0; | 
 | } | 
 |  | 
 | static int __init mach_mpc8xx_init(void) | 
 | { | 
 | 	ppc_sys_device_fixup = mach_mpc8xx_fixup; | 
 | 	return 0; | 
 | } | 
 |  | 
 | postcore_initcall(mach_mpc8xx_init); |