| /* |
| * arch/ppc/syslib/mpc52xx_devices.c |
| * |
| * Freescale MPC52xx device descriptions |
| * |
| * |
| * Maintainer : Sylvain Munaut <tnt@246tNt.com> |
| * |
| * Copyright (C) 2005 Sylvain Munaut <tnt@246tNt.com> |
| * |
| * This file is licensed under the terms of the GNU General Public License |
| * version 2. This program is licensed "as is" without any warranty of any |
| * kind, whether express or implied. |
| */ |
| |
| #include <linux/fsl_devices.h> |
| #include <linux/resource.h> |
| #include <linux/platform_device.h> |
| #include <asm/mpc52xx.h> |
| #include <asm/ppc_sys.h> |
| |
| |
| static u64 mpc52xx_dma_mask = 0xffffffffULL; |
| |
| static struct fsl_i2c_platform_data mpc52xx_fsl_i2c_pdata = { |
| .device_flags = FSL_I2C_DEV_CLOCK_5200, |
| }; |
| |
| |
| /* We use relative offsets for IORESOURCE_MEM to be independent from the |
| * MBAR location at compile time |
| */ |
| |
| /* TODO Add the BestComm initiator channel to the device definitions, |
| possibly using IORESOURCE_DMA. But that's when BestComm is ready ... */ |
| |
| struct platform_device ppc_sys_platform_devices[] = { |
| [MPC52xx_MSCAN1] = { |
| .name = "mpc52xx-mscan", |
| .id = 0, |
| .num_resources = 2, |
| .resource = (struct resource[]) { |
| { |
| .start = 0x0900, |
| .end = 0x097f, |
| .flags = IORESOURCE_MEM, |
| }, |
| { |
| .start = MPC52xx_MSCAN1_IRQ, |
| .end = MPC52xx_MSCAN1_IRQ, |
| .flags = IORESOURCE_IRQ, |
| }, |
| }, |
| }, |
| [MPC52xx_MSCAN2] = { |
| .name = "mpc52xx-mscan", |
| .id = 1, |
| .num_resources = 2, |
| .resource = (struct resource[]) { |
| { |
| .start = 0x0980, |
| .end = 0x09ff, |
| .flags = IORESOURCE_MEM, |
| }, |
| { |
| .start = MPC52xx_MSCAN2_IRQ, |
| .end = MPC52xx_MSCAN2_IRQ, |
| .flags = IORESOURCE_IRQ, |
| }, |
| }, |
| }, |
| [MPC52xx_SPI] = { |
| .name = "mpc52xx-spi", |
| .id = -1, |
| .num_resources = 3, |
| .resource = (struct resource[]) { |
| { |
| .start = 0x0f00, |
| .end = 0x0f1f, |
| .flags = IORESOURCE_MEM, |
| }, |
| { |
| .name = "modf", |
| .start = MPC52xx_SPI_MODF_IRQ, |
| .end = MPC52xx_SPI_MODF_IRQ, |
| .flags = IORESOURCE_IRQ, |
| }, |
| { |
| .name = "spif", |
| .start = MPC52xx_SPI_SPIF_IRQ, |
| .end = MPC52xx_SPI_SPIF_IRQ, |
| .flags = IORESOURCE_IRQ, |
| }, |
| }, |
| }, |
| [MPC52xx_USB] = { |
| .name = "ppc-soc-ohci", |
| .id = -1, |
| .num_resources = 2, |
| .dev.dma_mask = &mpc52xx_dma_mask, |
| .dev.coherent_dma_mask = 0xffffffffULL, |
| .resource = (struct resource[]) { |
| { |
| .start = 0x1000, |
| .end = 0x10ff, |
| .flags = IORESOURCE_MEM, |
| }, |
| { |
| .start = MPC52xx_USB_IRQ, |
| .end = MPC52xx_USB_IRQ, |
| .flags = IORESOURCE_IRQ, |
| }, |
| }, |
| }, |
| [MPC52xx_BDLC] = { |
| .name = "mpc52xx-bdlc", |
| .id = -1, |
| .num_resources = 2, |
| .resource = (struct resource[]) { |
| { |
| .start = 0x1300, |
| .end = 0x130f, |
| .flags = IORESOURCE_MEM, |
| }, |
| { |
| .start = MPC52xx_BDLC_IRQ, |
| .end = MPC52xx_BDLC_IRQ, |
| .flags = IORESOURCE_IRQ, |
| }, |
| }, |
| }, |
| [MPC52xx_PSC1] = { |
| .name = "mpc52xx-psc", |
| .id = 0, |
| .num_resources = 2, |
| .resource = (struct resource[]) { |
| { |
| .start = 0x2000, |
| .end = 0x209f, |
| .flags = IORESOURCE_MEM, |
| }, |
| { |
| .start = MPC52xx_PSC1_IRQ, |
| .end = MPC52xx_PSC1_IRQ, |
| .flags = IORESOURCE_IRQ, |
| }, |
| }, |
| }, |
| [MPC52xx_PSC2] = { |
| .name = "mpc52xx-psc", |
| .id = 1, |
| .num_resources = 2, |
| .resource = (struct resource[]) { |
| { |
| .start = 0x2200, |
| .end = 0x229f, |
| .flags = IORESOURCE_MEM, |
| }, |
| { |
| .start = MPC52xx_PSC2_IRQ, |
| .end = MPC52xx_PSC2_IRQ, |
| .flags = IORESOURCE_IRQ, |
| }, |
| }, |
| }, |
| [MPC52xx_PSC3] = { |
| .name = "mpc52xx-psc", |
| .id = 2, |
| .num_resources = 2, |
| .resource = (struct resource[]) { |
| { |
| .start = 0x2400, |
| .end = 0x249f, |
| .flags = IORESOURCE_MEM, |
| }, |
| { |
| .start = MPC52xx_PSC3_IRQ, |
| .end = MPC52xx_PSC3_IRQ, |
| .flags = IORESOURCE_IRQ, |
| }, |
| }, |
| }, |
| [MPC52xx_PSC4] = { |
| .name = "mpc52xx-psc", |
| .id = 3, |
| .num_resources = 2, |
| .resource = (struct resource[]) { |
| { |
| .start = 0x2600, |
| .end = 0x269f, |
| .flags = IORESOURCE_MEM, |
| }, |
| { |
| .start = MPC52xx_PSC4_IRQ, |
| .end = MPC52xx_PSC4_IRQ, |
| .flags = IORESOURCE_IRQ, |
| }, |
| }, |
| }, |
| [MPC52xx_PSC5] = { |
| .name = "mpc52xx-psc", |
| .id = 4, |
| .num_resources = 2, |
| .resource = (struct resource[]) { |
| { |
| .start = 0x2800, |
| .end = 0x289f, |
| .flags = IORESOURCE_MEM, |
| }, |
| { |
| .start = MPC52xx_PSC5_IRQ, |
| .end = MPC52xx_PSC5_IRQ, |
| .flags = IORESOURCE_IRQ, |
| }, |
| }, |
| }, |
| [MPC52xx_PSC6] = { |
| .name = "mpc52xx-psc", |
| .id = 5, |
| .num_resources = 2, |
| .resource = (struct resource[]) { |
| { |
| .start = 0x2c00, |
| .end = 0x2c9f, |
| .flags = IORESOURCE_MEM, |
| }, |
| { |
| .start = MPC52xx_PSC6_IRQ, |
| .end = MPC52xx_PSC6_IRQ, |
| .flags = IORESOURCE_IRQ, |
| }, |
| }, |
| }, |
| [MPC52xx_FEC] = { |
| .name = "mpc52xx-fec", |
| .id = -1, |
| .num_resources = 2, |
| .resource = (struct resource[]) { |
| { |
| .start = 0x3000, |
| .end = 0x33ff, |
| .flags = IORESOURCE_MEM, |
| }, |
| { |
| .start = MPC52xx_FEC_IRQ, |
| .end = MPC52xx_FEC_IRQ, |
| .flags = IORESOURCE_IRQ, |
| }, |
| }, |
| }, |
| [MPC52xx_ATA] = { |
| .name = "mpc52xx-ata", |
| .id = -1, |
| .num_resources = 2, |
| .resource = (struct resource[]) { |
| { |
| .start = 0x3a00, |
| .end = 0x3aff, |
| .flags = IORESOURCE_MEM, |
| }, |
| { |
| .start = MPC52xx_ATA_IRQ, |
| .end = MPC52xx_ATA_IRQ, |
| .flags = IORESOURCE_IRQ, |
| }, |
| }, |
| }, |
| [MPC52xx_I2C1] = { |
| .name = "fsl-i2c", |
| .id = 0, |
| .dev.platform_data = &mpc52xx_fsl_i2c_pdata, |
| .num_resources = 2, |
| .resource = (struct resource[]) { |
| { |
| .start = 0x3d00, |
| .end = 0x3d1f, |
| .flags = IORESOURCE_MEM, |
| }, |
| { |
| .start = MPC52xx_I2C1_IRQ, |
| .end = MPC52xx_I2C1_IRQ, |
| .flags = IORESOURCE_IRQ, |
| }, |
| }, |
| }, |
| [MPC52xx_I2C2] = { |
| .name = "fsl-i2c", |
| .id = 1, |
| .dev.platform_data = &mpc52xx_fsl_i2c_pdata, |
| .num_resources = 2, |
| .resource = (struct resource[]) { |
| { |
| .start = 0x3d40, |
| .end = 0x3d5f, |
| .flags = IORESOURCE_MEM, |
| }, |
| { |
| .start = MPC52xx_I2C2_IRQ, |
| .end = MPC52xx_I2C2_IRQ, |
| .flags = IORESOURCE_IRQ, |
| }, |
| }, |
| }, |
| }; |
| |
| |
| static int __init mach_mpc52xx_fixup(struct platform_device *pdev) |
| { |
| ppc_sys_fixup_mem_resource(pdev, MPC52xx_MBAR); |
| return 0; |
| } |
| |
| static int __init mach_mpc52xx_init(void) |
| { |
| ppc_sys_device_fixup = mach_mpc52xx_fixup; |
| return 0; |
| } |
| |
| postcore_initcall(mach_mpc52xx_init); |