mirror of https://gitee.com/openkylin/linux.git
320 lines
6.0 KiB
C
320 lines
6.0 KiB
C
/*
|
|
* 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);
|