Commit c6c4d7bb authored by Bryan Wu's avatar Bryan Wu

Blackfin arch: update platform driver resource information to all board files

Signed-off-by: default avatarBryan Wu <bryan.wu@analog.com>
parent bbf25010
...@@ -34,7 +34,9 @@ ...@@ -34,7 +34,9 @@
#include <linux/spi/spi.h> #include <linux/spi/spi.h>
#include <linux/spi/flash.h> #include <linux/spi/flash.h>
#include <linux/usb_isp1362.h> #include <linux/usb_isp1362.h>
#include <linux/pata_platform.h>
#include <linux/irq.h> #include <linux/irq.h>
#include <asm/dma.h>
#include <asm/bfin5xx_spi.h> #include <asm/bfin5xx_spi.h>
/* /*
...@@ -93,7 +95,7 @@ static struct spi_board_info bfin_spi_board_info[] __initdata = { ...@@ -93,7 +95,7 @@ static struct spi_board_info bfin_spi_board_info[] __initdata = {
/* the modalias must be the same as spi device driver name */ /* the modalias must be the same as spi device driver name */
.modalias = "m25p80", /* Name of spi_driver for this device */ .modalias = "m25p80", /* Name of spi_driver for this device */
.max_speed_hz = 25000000, /* max spi clock (SCK) speed in HZ */ .max_speed_hz = 25000000, /* max spi clock (SCK) speed in HZ */
.bus_num = 1, /* Framework bus number */ .bus_num = 0, /* Framework bus number */
.chip_select = 1, /* Framework chip select. On STAMP537 it is SPISSEL1*/ .chip_select = 1, /* Framework chip select. On STAMP537 it is SPISSEL1*/
.platform_data = &bfin_spi_flash_data, .platform_data = &bfin_spi_flash_data,
.controller_data = &spi_flash_chip_info, .controller_data = &spi_flash_chip_info,
...@@ -101,7 +103,7 @@ static struct spi_board_info bfin_spi_board_info[] __initdata = { ...@@ -101,7 +103,7 @@ static struct spi_board_info bfin_spi_board_info[] __initdata = {
}, { }, {
.modalias = "bfin_spi_adc", /* Name of spi_driver for this device */ .modalias = "bfin_spi_adc", /* Name of spi_driver for this device */
.max_speed_hz = 6250000, /* max spi clock (SCK) speed in HZ */ .max_speed_hz = 6250000, /* max spi clock (SCK) speed in HZ */
.bus_num = 1, /* Framework bus number */ .bus_num = 0, /* Framework bus number */
.chip_select = 2, /* Framework chip select. */ .chip_select = 2, /* Framework chip select. */
.platform_data = NULL, /* No spi_driver specific config */ .platform_data = NULL, /* No spi_driver specific config */
.controller_data = &spi_adc_chip_info, .controller_data = &spi_adc_chip_info,
...@@ -110,24 +112,40 @@ static struct spi_board_info bfin_spi_board_info[] __initdata = { ...@@ -110,24 +112,40 @@ static struct spi_board_info bfin_spi_board_info[] __initdata = {
{ {
.modalias = "ad1836-spi", .modalias = "ad1836-spi",
.max_speed_hz = 3125000, /* max spi clock (SCK) speed in HZ */ .max_speed_hz = 3125000, /* max spi clock (SCK) speed in HZ */
.bus_num = 1, .bus_num = 0,
.chip_select = CONFIG_SND_BLACKFIN_SPI_PFBIT, .chip_select = CONFIG_SND_BLACKFIN_SPI_PFBIT,
.controller_data = &ad1836_spi_chip_info, .controller_data = &ad1836_spi_chip_info,
}, },
#endif #endif
}; };
/* SPI (0) */
static struct resource bfin_spi0_resource[] = {
[0] = {
.start = SPI0_REGBASE,
.end = SPI0_REGBASE + 0xFF,
.flags = IORESOURCE_MEM,
},
[1] = {
.start = CH_SPI,
.end = CH_SPI,
.flags = IORESOURCE_IRQ,
}
};
/* SPI controller data */ /* SPI controller data */
static struct bfin5xx_spi_master spi_bfin_master_info = { static struct bfin5xx_spi_master bfin_spi0_info = {
.num_chipselect = 8, .num_chipselect = 8,
.enable_dma = 1, /* master has the ability to do dma transfer */ .enable_dma = 1, /* master has the ability to do dma transfer */
}; };
static struct platform_device spi_bfin_master_device = { static struct platform_device bfin_spi0_device = {
.name = "bfin-spi-master", .name = "bfin-spi",
.id = 1, /* Bus number */ .id = 0, /* Bus number */
.num_resources = ARRAY_SIZE(bfin_spi0_resource),
.resource = bfin_spi0_resource,
.dev = { .dev = {
.platform_data = &spi_bfin_master_info, /* Passed to driver */ .platform_data = &bfin_spi0_info, /* Passed to driver */
}, },
}; };
#endif /* spi master and devices */ #endif /* spi master and devices */
...@@ -227,6 +245,43 @@ static struct platform_device isp1362_hcd_device = { ...@@ -227,6 +245,43 @@ static struct platform_device isp1362_hcd_device = {
}; };
#endif #endif
#if defined(CONFIG_PATA_PLATFORM) || defined(CONFIG_PATA_PLATFORM_MODULE)
#define PATA_INT 38
static struct pata_platform_info bfin_pata_platform_data = {
.ioport_shift = 2,
.irq_type = IRQF_TRIGGER_HIGH | IRQF_DISABLED,
};
static struct resource bfin_pata_resources[] = {
{
.start = 0x2030C000,
.end = 0x2030C01F,
.flags = IORESOURCE_MEM,
},
{
.start = 0x2030D018,
.end = 0x2030D01B,
.flags = IORESOURCE_MEM,
},
{
.start = PATA_INT,
.end = PATA_INT,
.flags = IORESOURCE_IRQ,
},
};
static struct platform_device bfin_pata_device = {
.name = "pata_platform",
.id = -1,
.num_resources = ARRAY_SIZE(bfin_pata_resources),
.resource = bfin_pata_resources,
.dev = {
.platform_data = &bfin_pata_platform_data,
}
};
#endif
static struct platform_device *cm_bf533_devices[] __initdata = { static struct platform_device *cm_bf533_devices[] __initdata = {
#if defined(CONFIG_SERIAL_BFIN) || defined(CONFIG_SERIAL_BFIN_MODULE) #if defined(CONFIG_SERIAL_BFIN) || defined(CONFIG_SERIAL_BFIN_MODULE)
&bfin_uart_device, &bfin_uart_device,
...@@ -250,7 +305,11 @@ static struct platform_device *cm_bf533_devices[] __initdata = { ...@@ -250,7 +305,11 @@ static struct platform_device *cm_bf533_devices[] __initdata = {
#endif #endif
#if defined(CONFIG_SPI_BFIN) || defined(CONFIG_SPI_BFIN_MODULE) #if defined(CONFIG_SPI_BFIN) || defined(CONFIG_SPI_BFIN_MODULE)
&spi_bfin_master_device, &bfin_spi0_device,
#endif
#if defined(CONFIG_PATA_PLATFORM) || defined(CONFIG_PATA_PLATFORM_MODULE)
&bfin_pata_device,
#endif #endif
}; };
...@@ -261,6 +320,10 @@ static int __init cm_bf533_init(void) ...@@ -261,6 +320,10 @@ static int __init cm_bf533_init(void)
#if defined(CONFIG_SPI_BFIN) || defined(CONFIG_SPI_BFIN_MODULE) #if defined(CONFIG_SPI_BFIN) || defined(CONFIG_SPI_BFIN_MODULE)
spi_register_board_info(bfin_spi_board_info, ARRAY_SIZE(bfin_spi_board_info)); spi_register_board_info(bfin_spi_board_info, ARRAY_SIZE(bfin_spi_board_info));
#endif #endif
#if defined(CONFIG_PATA_PLATFORM) || defined(CONFIG_PATA_PLATFORM_MODULE)
irq_desc[PATA_INT].status |= IRQ_NOAUTOEN;
#endif
return 0; return 0;
} }
......
...@@ -35,7 +35,9 @@ ...@@ -35,7 +35,9 @@
#include <linux/spi/spi.h> #include <linux/spi/spi.h>
#include <linux/spi/flash.h> #include <linux/spi/flash.h>
#include <linux/usb_isp1362.h> #include <linux/usb_isp1362.h>
#include <linux/pata_platform.h>
#include <linux/irq.h> #include <linux/irq.h>
#include <asm/dma.h>
#include <asm/bfin5xx_spi.h> #include <asm/bfin5xx_spi.h>
/* /*
...@@ -50,6 +52,12 @@ static struct platform_device rtc_device = { ...@@ -50,6 +52,12 @@ static struct platform_device rtc_device = {
}; };
#endif #endif
#if defined(CONFIG_FB_BFIN_7393) || defined(CONFIG_FB_BFIN_7393_MODULE)
static struct platform_device bfin_fb_adv7393_device = {
.name = "bfin-adv7393",
};
#endif
/* /*
* USB-LAN EzExtender board * USB-LAN EzExtender board
* Driver needs to know address, irq and flag pin. * Driver needs to know address, irq and flag pin.
...@@ -131,7 +139,7 @@ static struct spi_board_info bfin_spi_board_info[] __initdata = { ...@@ -131,7 +139,7 @@ static struct spi_board_info bfin_spi_board_info[] __initdata = {
/* the modalias must be the same as spi device driver name */ /* the modalias must be the same as spi device driver name */
.modalias = "m25p80", /* Name of spi_driver for this device */ .modalias = "m25p80", /* Name of spi_driver for this device */
.max_speed_hz = 25000000, /* max spi clock (SCK) speed in HZ */ .max_speed_hz = 25000000, /* max spi clock (SCK) speed in HZ */
.bus_num = 1, /* Framework bus number */ .bus_num = 0, /* Framework bus number */
.chip_select = 2, /* Framework chip select. On STAMP537 it is SPISSEL2*/ .chip_select = 2, /* Framework chip select. On STAMP537 it is SPISSEL2*/
.platform_data = &bfin_spi_flash_data, .platform_data = &bfin_spi_flash_data,
.controller_data = &spi_flash_chip_info, .controller_data = &spi_flash_chip_info,
...@@ -143,7 +151,7 @@ static struct spi_board_info bfin_spi_board_info[] __initdata = { ...@@ -143,7 +151,7 @@ static struct spi_board_info bfin_spi_board_info[] __initdata = {
{ {
.modalias = "bfin_spi_adc", /* Name of spi_driver for this device */ .modalias = "bfin_spi_adc", /* Name of spi_driver for this device */
.max_speed_hz = 6250000, /* max spi clock (SCK) speed in HZ */ .max_speed_hz = 6250000, /* max spi clock (SCK) speed in HZ */
.bus_num = 1, /* Framework bus number */ .bus_num = 0, /* Framework bus number */
.chip_select = 1, /* Framework chip select. */ .chip_select = 1, /* Framework chip select. */
.platform_data = NULL, /* No spi_driver specific config */ .platform_data = NULL, /* No spi_driver specific config */
.controller_data = &spi_adc_chip_info, .controller_data = &spi_adc_chip_info,
...@@ -154,24 +162,40 @@ static struct spi_board_info bfin_spi_board_info[] __initdata = { ...@@ -154,24 +162,40 @@ static struct spi_board_info bfin_spi_board_info[] __initdata = {
{ {
.modalias = "ad1836-spi", .modalias = "ad1836-spi",
.max_speed_hz = 3125000, /* max spi clock (SCK) speed in HZ */ .max_speed_hz = 3125000, /* max spi clock (SCK) speed in HZ */
.bus_num = 1, .bus_num = 0,
.chip_select = CONFIG_SND_BLACKFIN_SPI_PFBIT, .chip_select = CONFIG_SND_BLACKFIN_SPI_PFBIT,
.controller_data = &ad1836_spi_chip_info, .controller_data = &ad1836_spi_chip_info,
}, },
#endif #endif
}; };
/* SPI (0) */
static struct resource bfin_spi0_resource[] = {
[0] = {
.start = SPI0_REGBASE,
.end = SPI0_REGBASE + 0xFF,
.flags = IORESOURCE_MEM,
},
[1] = {
.start = CH_SPI,
.end = CH_SPI,
.flags = IORESOURCE_IRQ,
}
};
/* SPI controller data */ /* SPI controller data */
static struct bfin5xx_spi_master spi_bfin_master_info = { static struct bfin5xx_spi_master bfin_spi0_info = {
.num_chipselect = 8, .num_chipselect = 8,
.enable_dma = 1, /* master has the ability to do dma transfer */ .enable_dma = 1, /* master has the ability to do dma transfer */
}; };
static struct platform_device spi_bfin_master_device = { static struct platform_device bfin_spi0_device = {
.name = "bfin-spi-master", .name = "bfin-spi",
.id = 1, /* Bus number */ .id = 0, /* Bus number */
.num_resources = ARRAY_SIZE(bfin_spi0_resource),
.resource = bfin_spi0_resource,
.dev = { .dev = {
.platform_data = &spi_bfin_master_info, /* Passed to driver */ .platform_data = &bfin_spi0_info, /* Passed to driver */
}, },
}; };
#endif /* spi master and devices */ #endif /* spi master and devices */
...@@ -193,13 +217,54 @@ static struct platform_device bfin_uart_device = { ...@@ -193,13 +217,54 @@ static struct platform_device bfin_uart_device = {
}; };
#endif #endif
#if defined(CONFIG_PATA_PLATFORM) || defined(CONFIG_PATA_PLATFORM_MODULE)
#define PATA_INT 55
static struct pata_platform_info bfin_pata_platform_data = {
.ioport_shift = 1,
.irq_type = IRQF_TRIGGER_HIGH | IRQF_DISABLED,
};
static struct resource bfin_pata_resources[] = {
{
.start = 0x20314020,
.end = 0x2031403F,
.flags = IORESOURCE_MEM,
},
{
.start = 0x2031401C,
.end = 0x2031401F,
.flags = IORESOURCE_MEM,
},
{
.start = PATA_INT,
.end = PATA_INT,
.flags = IORESOURCE_IRQ,
},
};
static struct platform_device bfin_pata_device = {
.name = "pata_platform",
.id = -1,
.num_resources = ARRAY_SIZE(bfin_pata_resources),
.resource = bfin_pata_resources,
.dev = {
.platform_data = &bfin_pata_platform_data,
}
};
#endif
static struct platform_device *ezkit_devices[] __initdata = { static struct platform_device *ezkit_devices[] __initdata = {
#if defined(CONFIG_SMC91X) || defined(CONFIG_SMC91X_MODULE) #if defined(CONFIG_SMC91X) || defined(CONFIG_SMC91X_MODULE)
&smc91x_device, &smc91x_device,
#endif #endif
#if defined(CONFIG_SPI_BFIN) || defined(CONFIG_SPI_BFIN_MODULE) #if defined(CONFIG_SPI_BFIN) || defined(CONFIG_SPI_BFIN_MODULE)
&spi_bfin_master_device, &bfin_spi0_device,
#endif
#if defined(CONFIG_FB_BFIN_7393) || defined(CONFIG_FB_BFIN_7393_MODULE)
&bfin_fb_adv7393_device,
#endif #endif
#if defined(CONFIG_RTC_DRV_BFIN) || defined(CONFIG_RTC_DRV_BFIN_MODULE) #if defined(CONFIG_RTC_DRV_BFIN) || defined(CONFIG_RTC_DRV_BFIN_MODULE)
...@@ -209,6 +274,10 @@ static struct platform_device *ezkit_devices[] __initdata = { ...@@ -209,6 +274,10 @@ static struct platform_device *ezkit_devices[] __initdata = {
#if defined(CONFIG_SERIAL_BFIN) || defined(CONFIG_SERIAL_BFIN_MODULE) #if defined(CONFIG_SERIAL_BFIN) || defined(CONFIG_SERIAL_BFIN_MODULE)
&bfin_uart_device, &bfin_uart_device,
#endif #endif
#if defined(CONFIG_PATA_PLATFORM) || defined(CONFIG_PATA_PLATFORM_MODULE)
&bfin_pata_device,
#endif
}; };
static int __init ezkit_init(void) static int __init ezkit_init(void)
...@@ -218,6 +287,10 @@ static int __init ezkit_init(void) ...@@ -218,6 +287,10 @@ static int __init ezkit_init(void)
#if defined(CONFIG_SPI_BFIN) || defined(CONFIG_SPI_BFIN_MODULE) #if defined(CONFIG_SPI_BFIN) || defined(CONFIG_SPI_BFIN_MODULE)
spi_register_board_info(bfin_spi_board_info, ARRAY_SIZE(bfin_spi_board_info)); spi_register_board_info(bfin_spi_board_info, ARRAY_SIZE(bfin_spi_board_info));
#endif #endif
#if defined(CONFIG_PATA_PLATFORM) || defined(CONFIG_PATA_PLATFORM_MODULE)
irq_desc[PATA_INT].status |= IRQ_NOAUTOEN;
#endif
return 0; return 0;
} }
......
...@@ -37,8 +37,11 @@ ...@@ -37,8 +37,11 @@
#if defined(CONFIG_USB_ISP1362_HCD) || defined(CONFIG_USB_ISP1362_HCD_MODULE) #if defined(CONFIG_USB_ISP1362_HCD) || defined(CONFIG_USB_ISP1362_HCD_MODULE)
#include <linux/usb_isp1362.h> #include <linux/usb_isp1362.h>
#endif #endif
#include <linux/pata_platform.h>
#include <linux/irq.h> #include <linux/irq.h>
#include <asm/dma.h>
#include <asm/bfin5xx_spi.h> #include <asm/bfin5xx_spi.h>
#include <asm/reboot.h>
/* /*
* Name the Board for the /proc/cpuinfo * Name the Board for the /proc/cpuinfo
...@@ -77,6 +80,12 @@ static struct platform_device smc91x_device = { ...@@ -77,6 +80,12 @@ static struct platform_device smc91x_device = {
}; };
#endif #endif
#if defined(CONFIG_FB_BFIN_7393) || defined(CONFIG_FB_BFIN_7393_MODULE)
static struct platform_device bfin_fb_adv7393_device = {
.name = "bfin-adv7393",
};
#endif
#if defined(CONFIG_USB_NET2272) || defined(CONFIG_USB_NET2272_MODULE) #if defined(CONFIG_USB_NET2272) || defined(CONFIG_USB_NET2272_MODULE)
static struct resource net2272_bfin_resources[] = { static struct resource net2272_bfin_resources[] = {
{ {
...@@ -177,7 +186,7 @@ static struct spi_board_info bfin_spi_board_info[] __initdata = { ...@@ -177,7 +186,7 @@ static struct spi_board_info bfin_spi_board_info[] __initdata = {
/* the modalias must be the same as spi device driver name */ /* the modalias must be the same as spi device driver name */
.modalias = "m25p80", /* Name of spi_driver for this device */ .modalias = "m25p80", /* Name of spi_driver for this device */
.max_speed_hz = 25000000, /* max spi clock (SCK) speed in HZ */ .max_speed_hz = 25000000, /* max spi clock (SCK) speed in HZ */
.bus_num = 1, /* Framework bus number */ .bus_num = 0, /* Framework bus number */
.chip_select = 2, /* Framework chip select. On STAMP537 it is SPISSEL2*/ .chip_select = 2, /* Framework chip select. On STAMP537 it is SPISSEL2*/
.platform_data = &bfin_spi_flash_data, .platform_data = &bfin_spi_flash_data,
.controller_data = &spi_flash_chip_info, .controller_data = &spi_flash_chip_info,
...@@ -189,7 +198,7 @@ static struct spi_board_info bfin_spi_board_info[] __initdata = { ...@@ -189,7 +198,7 @@ static struct spi_board_info bfin_spi_board_info[] __initdata = {
{ {
.modalias = "bfin_spi_adc", /* Name of spi_driver for this device */ .modalias = "bfin_spi_adc", /* Name of spi_driver for this device */
.max_speed_hz = 6250000, /* max spi clock (SCK) speed in HZ */ .max_speed_hz = 6250000, /* max spi clock (SCK) speed in HZ */
.bus_num = 1, /* Framework bus number */ .bus_num = 0, /* Framework bus number */
.chip_select = 1, /* Framework chip select. */ .chip_select = 1, /* Framework chip select. */
.platform_data = NULL, /* No spi_driver specific config */ .platform_data = NULL, /* No spi_driver specific config */
.controller_data = &spi_adc_chip_info, .controller_data = &spi_adc_chip_info,
...@@ -200,7 +209,7 @@ static struct spi_board_info bfin_spi_board_info[] __initdata = { ...@@ -200,7 +209,7 @@ static struct spi_board_info bfin_spi_board_info[] __initdata = {
{ {
.modalias = "ad1836-spi", .modalias = "ad1836-spi",
.max_speed_hz = 31250000, /* max spi clock (SCK) speed in HZ */ .max_speed_hz = 31250000, /* max spi clock (SCK) speed in HZ */
.bus_num = 1, .bus_num = 0,
.chip_select = CONFIG_SND_BLACKFIN_SPI_PFBIT, .chip_select = CONFIG_SND_BLACKFIN_SPI_PFBIT,
.controller_data = &ad1836_spi_chip_info, .controller_data = &ad1836_spi_chip_info,
}, },
...@@ -210,7 +219,7 @@ static struct spi_board_info bfin_spi_board_info[] __initdata = { ...@@ -210,7 +219,7 @@ static struct spi_board_info bfin_spi_board_info[] __initdata = {
{ {
.modalias = "spi_mmc_dummy", .modalias = "spi_mmc_dummy",
.max_speed_hz = 25000000, /* max spi clock (SCK) speed in HZ */ .max_speed_hz = 25000000, /* max spi clock (SCK) speed in HZ */
.bus_num = 1, .bus_num = 0,
.chip_select = 0, .chip_select = 0,
.platform_data = NULL, .platform_data = NULL,
.controller_data = &spi_mmc_chip_info, .controller_data = &spi_mmc_chip_info,
...@@ -219,7 +228,7 @@ static struct spi_board_info bfin_spi_board_info[] __initdata = { ...@@ -219,7 +228,7 @@ static struct spi_board_info bfin_spi_board_info[] __initdata = {
{ {
.modalias = "spi_mmc", .modalias = "spi_mmc",
.max_speed_hz = 25000000, /* max spi clock (SCK) speed in HZ */ .max_speed_hz = 25000000, /* max spi clock (SCK) speed in HZ */
.bus_num = 1, .bus_num = 0,
.chip_select = CONFIG_SPI_MMC_CS_CHAN, .chip_select = CONFIG_SPI_MMC_CS_CHAN,
.platform_data = NULL, .platform_data = NULL,
.controller_data = &spi_mmc_chip_info, .controller_data = &spi_mmc_chip_info,
...@@ -231,16 +240,16 @@ static struct spi_board_info bfin_spi_board_info[] __initdata = { ...@@ -231,16 +240,16 @@ static struct spi_board_info bfin_spi_board_info[] __initdata = {
{ {
.modalias = "fxs-spi", .modalias = "fxs-spi",
.max_speed_hz = 12500000, /* max spi clock (SCK) speed in HZ */ .max_speed_hz = 12500000, /* max spi clock (SCK) speed in HZ */
.bus_num = 1, .bus_num = 0,
.chip_select = 3, .chip_select = 8 - CONFIG_J11_JUMPER,
.controller_data = &spi_si3xxx_chip_info, .controller_data = &spi_si3xxx_chip_info,
.mode = SPI_MODE_3, .mode = SPI_MODE_3,
}, },
{ {
.modalias = "fxo-spi", .modalias = "fxo-spi",
.max_speed_hz = 12500000, /* max spi clock (SCK) speed in HZ */ .max_speed_hz = 12500000, /* max spi clock (SCK) speed in HZ */
.bus_num = 1, .bus_num = 0,
.chip_select = 2, .chip_select = 8 - CONFIG_J19_JUMPER,
.controller_data = &spi_si3xxx_chip_info, .controller_data = &spi_si3xxx_chip_info,
.mode = SPI_MODE_3, .mode = SPI_MODE_3,
}, },
...@@ -250,7 +259,7 @@ static struct spi_board_info bfin_spi_board_info[] __initdata = { ...@@ -250,7 +259,7 @@ static struct spi_board_info bfin_spi_board_info[] __initdata = {
{ {
.modalias = "ad5304_spi", .modalias = "ad5304_spi",
.max_speed_hz = 1000000, /* max spi clock (SCK) speed in HZ */ .max_speed_hz = 1000000, /* max spi clock (SCK) speed in HZ */
.bus_num = 1, .bus_num = 0,
.chip_select = 2, .chip_select = 2,
.platform_data = NULL, .platform_data = NULL,
.controller_data = &ad5304_chip_info, .controller_data = &ad5304_chip_info,
...@@ -259,17 +268,33 @@ static struct spi_board_info bfin_spi_board_info[] __initdata = { ...@@ -259,17 +268,33 @@ static struct spi_board_info bfin_spi_board_info[] __initdata = {
#endif #endif
}; };
/* SPI (0) */
static struct resource bfin_spi0_resource[] = {
[0] = {
.start = SPI0_REGBASE,
.end = SPI0_REGBASE + 0xFF,
.flags = IORESOURCE_MEM,
},
[1] = {
.start = CH_SPI,
.end = CH_SPI,
.flags = IORESOURCE_IRQ,
}
};
/* SPI controller data */ /* SPI controller data */
static struct bfin5xx_spi_master spi_bfin_master_info = { static struct bfin5xx_spi_master bfin_spi0_info = {
.num_chipselect = 8, .num_chipselect = 8,
.enable_dma = 1, /* master has the ability to do dma transfer */ .enable_dma = 1, /* master has the ability to do dma transfer */
}; };
static struct platform_device spi_bfin_master_device = { static struct platform_device bfin_spi0_device = {
.name = "bfin-spi-master", .name = "bfin-spi",
.id = 1, /* Bus number */ .id = 0, /* Bus number */
.num_resources = ARRAY_SIZE(bfin_spi0_resource),
.resource = bfin_spi0_resource,
.dev = { .dev = {
.platform_data = &spi_bfin_master_info, /* Passed to driver */ .platform_data = &bfin_spi0_info, /* Passed to driver */
}, },
}; };
#endif /* spi master and devices */ #endif /* spi master and devices */
...@@ -309,6 +334,43 @@ static struct platform_device bfin_sport1_uart_device = { ...@@ -309,6 +334,43 @@ static struct platform_device bfin_sport1_uart_device = {
}; };
#endif #endif
#if defined(CONFIG_PATA_PLATFORM) || defined(CONFIG_PATA_PLATFORM_MODULE)
#define PATA_INT 55
static struct pata_platform_info bfin_pata_platform_data = {
.ioport_shift = 1,
.irq_type = IRQF_TRIGGER_HIGH | IRQF_DISABLED,
};
static struct resource bfin_pata_resources[] = {
{
.start = 0x20314020,
.end = 0x2031403F,
.flags = IORESOURCE_MEM,
},
{
.start = 0x2031401C,
.end = 0x2031401F,
.flags = IORESOURCE_MEM,
},
{
.start = PATA_INT,
.end = PATA_INT,
.flags = IORESOURCE_IRQ,
},
};
static struct platform_device bfin_pata_device = {
.name = "pata_platform",
.id = -1,
.num_resources = ARRAY_SIZE(bfin_pata_resources),
.resource = bfin_pata_resources,
.dev = {
.platform_data = &bfin_pata_platform_data,
}
};
#endif
static struct platform_device *stamp_devices[] __initdata = { static struct platform_device *stamp_devices[] __initdata = {
#if defined(CONFIG_RTC_DRV_BFIN) || defined(CONFIG_RTC_DRV_BFIN_MODULE) #if defined(CONFIG_RTC_DRV_BFIN) || defined(CONFIG_RTC_DRV_BFIN_MODULE)
&rtc_device, &rtc_device,
...@@ -318,12 +380,16 @@ static struct platform_device *stamp_devices[] __initdata = { ...@@ -318,12 +380,16 @@ static struct platform_device *stamp_devices[] __initdata = {
&smc91x_device, &smc91x_device,
#endif #endif
#if defined(CONFIG_FB_BFIN_7393) || defined(CONFIG_FB_BFIN_7393_MODULE)
&bfin_fb_adv7393_device,
#endif
#if defined(CONFIG_USB_NET2272) || defined(CONFIG_USB_NET2272_MODULE) #if defined(CONFIG_USB_NET2272) || defined(CONFIG_USB_NET2272_MODULE)
&net2272_bfin_device, &net2272_bfin_device,
#endif #endif
#if defined(CONFIG_SPI_BFIN) || defined(CONFIG_SPI_BFIN_MODULE) #if defined(CONFIG_SPI_BFIN) || defined(CONFIG_SPI_BFIN_MODULE)
&spi_bfin_master_device, &bfin_spi0_device,
#endif #endif
#if defined(CONFIG_SERIAL_BFIN) || defined(CONFIG_SERIAL_BFIN_MODULE) #if defined(CONFIG_SERIAL_BFIN) || defined(CONFIG_SERIAL_BFIN_MODULE)
...@@ -334,6 +400,10 @@ static struct platform_device *stamp_devices[] __initdata = { ...@@ -334,6 +400,10 @@ static struct platform_device *stamp_devices[] __initdata = {
&bfin_sport0_uart_device, &bfin_sport0_uart_device,
&bfin_sport1_uart_device, &bfin_sport1_uart_device,
#endif #endif
#if defined(CONFIG_PATA_PLATFORM) || defined(CONFIG_PATA_PLATFORM_MODULE)
&bfin_pata_device,
#endif
}; };
static int __init stamp_init(void) static int __init stamp_init(void)
...@@ -355,8 +425,23 @@ static int __init stamp_init(void) ...@@ -355,8 +425,23 @@ static int __init stamp_init(void)
#endif #endif
#if defined(CONFIG_SPI_BFIN) || defined(CONFIG_SPI_BFIN_MODULE) #if defined(CONFIG_SPI_BFIN) || defined(CONFIG_SPI_BFIN_MODULE)
return spi_register_board_info(bfin_spi_board_info, ARRAY_SIZE(bfin_spi_board_info)); spi_register_board_info(bfin_spi_board_info,
ARRAY_SIZE(bfin_spi_board_info));
#endif
#if defined(CONFIG_PATA_PLATFORM) || defined(CONFIG_PATA_PLATFORM_MODULE)
irq_desc[PATA_INT].status |= IRQ_NOAUTOEN;
#endif #endif
return 0;
} }
arch_initcall(stamp_init); arch_initcall(stamp_init);
void native_machine_restart(char *cmd)
{
#if defined(CONFIG_BFIN_SHARED_FLASH_ENET)
# define BIT_TO_SET (1 << CONFIG_ENET_FLASH_PIN)
bfin_write_FIO_INEN(~BIT_TO_SET);
bfin_write_FIO_DIR(BIT_TO_SET);
bfin_write_FIO_FLAG_C(BIT_TO_SET);
#endif
}
...@@ -35,7 +35,9 @@ ...@@ -35,7 +35,9 @@
#include <linux/spi/spi.h> #include <linux/spi/spi.h>
#include <linux/spi/flash.h> #include <linux/spi/flash.h>
#include <linux/usb_isp1362.h> #include <linux/usb_isp1362.h>
#include <linux/pata_platform.h>
#include <linux/irq.h> #include <linux/irq.h>
#include <asm/dma.h>
#include <asm/bfin5xx_spi.h> #include <asm/bfin5xx_spi.h>
/* /*
...@@ -113,7 +115,7 @@ static struct spi_board_info bfin_spi_board_info[] __initdata = { ...@@ -113,7 +115,7 @@ static struct spi_board_info bfin_spi_board_info[] __initdata = {
/* the modalias must be the same as spi device driver name */ /* the modalias must be the same as spi device driver name */
.modalias = "m25p80", /* Name of spi_driver for this device */ .modalias = "m25p80", /* Name of spi_driver for this device */
.max_speed_hz = 25000000, /* max spi clock (SCK) speed in HZ */ .max_speed_hz = 25000000, /* max spi clock (SCK) speed in HZ */
.bus_num = 1, /* Framework bus number */ .bus_num = 0, /* Framework bus number */
.chip_select = 1, /* Framework chip select. On STAMP537 it is SPISSEL1*/ .chip_select = 1, /* Framework chip select. On STAMP537 it is SPISSEL1*/
.platform_data = &bfin_spi_flash_data, .platform_data = &bfin_spi_flash_data,
.controller_data = &spi_flash_chip_info, .controller_data = &spi_flash_chip_info,
...@@ -125,7 +127,7 @@ static struct spi_board_info bfin_spi_board_info[] __initdata = { ...@@ -125,7 +127,7 @@ static struct spi_board_info bfin_spi_board_info[] __initdata = {
{ {
.modalias = "bfin_spi_adc", /* Name of spi_driver for this device */ .modalias = "bfin_spi_adc", /* Name of spi_driver for this device */
.max_speed_hz = 6250000, /* max spi clock (SCK) speed in HZ */ .max_speed_hz = 6250000, /* max spi clock (SCK) speed in HZ */
.bus_num = 1, /* Framework bus number */ .bus_num = 0, /* Framework bus number */
.chip_select = 1, /* Framework chip select. */ .chip_select = 1, /* Framework chip select. */
.platform_data = NULL, /* No spi_driver specific config */ .platform_data = NULL, /* No spi_driver specific config */
.controller_data = &spi_adc_chip_info, .controller_data = &spi_adc_chip_info,
...@@ -136,7 +138,7 @@ static struct spi_board_info bfin_spi_board_info[] __initdata = { ...@@ -136,7 +138,7 @@ static struct spi_board_info bfin_spi_board_info[] __initdata = {
{ {
.modalias = "ad1836-spi", .modalias = "ad1836-spi",
.max_speed_hz = 3125000, /* max spi clock (SCK) speed in HZ */ .max_speed_hz = 3125000, /* max spi clock (SCK) speed in HZ */
.bus_num = 1, .bus_num = 0,
.chip_select = CONFIG_SND_BLACKFIN_SPI_PFBIT, .chip_select = CONFIG_SND_BLACKFIN_SPI_PFBIT,
.controller_data = &ad1836_spi_chip_info, .controller_data = &ad1836_spi_chip_info,
}, },
...@@ -146,7 +148,7 @@ static struct spi_board_info bfin_spi_board_info[] __initdata = { ...@@ -146,7 +148,7 @@ static struct spi_board_info bfin_spi_board_info[] __initdata = {
{ {
.modalias = "ad9960-spi", .modalias = "ad9960-spi",
.max_speed_hz = 10000000, /* max spi clock (SCK) speed in HZ */ .max_speed_hz = 10000000, /* max spi clock (SCK) speed in HZ */
.bus_num = 1, .bus_num = 0,
.chip_select = 1, .chip_select = 1,
.controller_data = &ad9960_spi_chip_info, .controller_data = &ad9960_spi_chip_info,
}, },
...@@ -156,7 +158,7 @@ static struct spi_board_info bfin_spi_board_info[] __initdata = { ...@@ -156,7 +158,7 @@ static struct spi_board_info bfin_spi_board_info[] __initdata = {
{ {
.modalias = "spi_mmc_dummy", .modalias = "spi_mmc_dummy",
.max_speed_hz = 25000000, /* max spi clock (SCK) speed in HZ */ .max_speed_hz = 25000000, /* max spi clock (SCK) speed in HZ */
.bus_num = 1, .bus_num = 0,
.chip_select = 7, .chip_select = 7,
.platform_data = NULL, .platform_data = NULL,
.controller_data = &spi_mmc_chip_info, .controller_data = &spi_mmc_chip_info,
...@@ -165,7 +167,7 @@ static struct spi_board_info bfin_spi_board_info[] __initdata = { ...@@ -165,7 +167,7 @@ static struct spi_board_info bfin_spi_board_info[] __initdata = {
{ {
.modalias = "spi_mmc", .modalias = "spi_mmc",
.max_speed_hz = 25000000, /* max spi clock (SCK) speed in HZ */ .max_speed_hz = 25000000, /* max spi clock (SCK) speed in HZ */
.bus_num = 1, .bus_num = 0,
.chip_select = CONFIG_SPI_MMC_CS_CHAN, .chip_select = CONFIG_SPI_MMC_CS_CHAN,
.platform_data = NULL, .platform_data = NULL,
.controller_data = &spi_mmc_chip_info, .controller_data = &spi_mmc_chip_info,
...@@ -174,17 +176,33 @@ static struct spi_board_info bfin_spi_board_info[] __initdata = { ...@@ -174,17 +176,33 @@ static struct spi_board_info bfin_spi_board_info[] __initdata = {
#endif #endif
}; };
/* SPI (0) */
static struct resource bfin_spi0_resource[] = {
[0] = {
.start = SPI0_REGBASE,
.end = SPI0_REGBASE + 0xFF,
.flags = IORESOURCE_MEM,
},
[1] = {
.start = CH_SPI,
.end = CH_SPI,
.flags = IORESOURCE_IRQ,
}
};
/* SPI controller data */ /* SPI controller data */
static struct bfin5xx_spi_master spi_bfin_master_info = { static struct bfin5xx_spi_master bfin_spi0_info = {
.num_chipselect = 8, .num_chipselect = 8,
.enable_dma = 1, /* master has the ability to do dma transfer */ .enable_dma = 1, /* master has the ability to do dma transfer */
}; };
static struct platform_device spi_bfin_master_device = { static struct platform_device bfin_spi0_device = {
.name = "bfin-spi-master", .name = "bfin-spi",
.id = 1, /* Bus number */ .id = 0, /* Bus number */
.num_resources = ARRAY_SIZE(bfin_spi0_resource),
.resource = bfin_spi0_resource,
.dev = { .dev = {
.platform_data = &spi_bfin_master_info, /* Passed to driver */ .platform_data = &bfin_spi0_info, /* Passed to driver */
}, },
}; };
#endif /* spi master and devices */ #endif /* spi master and devices */
...@@ -316,6 +334,43 @@ static struct platform_device bfin_mac_device = { ...@@ -316,6 +334,43 @@ static struct platform_device bfin_mac_device = {
}; };
#endif #endif
#if defined(CONFIG_PATA_PLATFORM) || defined(CONFIG_PATA_PLATFORM_MODULE)
#define PATA_INT 64
static struct pata_platform_info bfin_pata_platform_data = {
.ioport_shift = 2,
.irq_type = IRQF_TRIGGER_HIGH | IRQF_DISABLED,
};
static struct resource bfin_pata_resources[] = {
{
.start = 0x2030C000,
.end = 0x2030C01F,
.flags = IORESOURCE_MEM,
},
{
.start = 0x2030D018,
.end = 0x2030D01B,
.flags = IORESOURCE_MEM,
},
{
.start = PATA_INT,
.end = PATA_INT,
.flags = IORESOURCE_IRQ,
},
};
static struct platform_device bfin_pata_device = {
.name = "pata_platform",
.id = -1,
.num_resources = ARRAY_SIZE(bfin_pata_resources),
.resource = bfin_pata_resources,
.dev = {
.platform_data = &bfin_pata_platform_data,
}
};
#endif
static struct platform_device *cm_bf537_devices[] __initdata = { static struct platform_device *cm_bf537_devices[] __initdata = {
#if defined(CONFIG_RTC_DRV_BFIN) || defined(CONFIG_RTC_DRV_BFIN_MODULE) #if defined(CONFIG_RTC_DRV_BFIN) || defined(CONFIG_RTC_DRV_BFIN_MODULE)
&rtc_device, &rtc_device,
...@@ -347,7 +402,11 @@ static struct platform_device *cm_bf537_devices[] __initdata = { ...@@ -347,7 +402,11 @@ static struct platform_device *cm_bf537_devices[] __initdata = {
#endif #endif
#if defined(CONFIG_SPI_BFIN) || defined(CONFIG_SPI_BFIN_MODULE) #if defined(CONFIG_SPI_BFIN) || defined(CONFIG_SPI_BFIN_MODULE)
&spi_bfin_master_device, &bfin_spi0_device,
#endif
#if defined(CONFIG_PATA_PLATFORM) || defined(CONFIG_PATA_PLATFORM_MODULE)
&bfin_pata_device,
#endif #endif
}; };
...@@ -358,6 +417,10 @@ static int __init cm_bf537_init(void) ...@@ -358,6 +417,10 @@ static int __init cm_bf537_init(void)
#if defined(CONFIG_SPI_BFIN) || defined(CONFIG_SPI_BFIN_MODULE) #if defined(CONFIG_SPI_BFIN) || defined(CONFIG_SPI_BFIN_MODULE)
spi_register_board_info(bfin_spi_board_info, ARRAY_SIZE(bfin_spi_board_info)); spi_register_board_info(bfin_spi_board_info, ARRAY_SIZE(bfin_spi_board_info));
#endif #endif
#if defined(CONFIG_PATA_PLATFORM) || defined(CONFIG_PATA_PLATFORM_MODULE)
irq_desc[PATA_INT].status |= IRQ_NOAUTOEN;
#endif
return 0; return 0;
} }
......
...@@ -38,6 +38,7 @@ ...@@ -38,6 +38,7 @@
#include <linux/usb_isp1362.h> #include <linux/usb_isp1362.h>
#endif #endif
#include <linux/irq.h> #include <linux/irq.h>
#include <asm/dma.h>
#include <asm/bfin5xx_spi.h> #include <asm/bfin5xx_spi.h>
#include <linux/usb_sl811.h> #include <linux/usb_sl811.h>
...@@ -130,15 +131,13 @@ static struct resource sl811_hcd_resources[] = { ...@@ -130,15 +131,13 @@ static struct resource sl811_hcd_resources[] = {
#if defined(CONFIG_USB_SL811_BFIN_USE_VBUS) #if defined(CONFIG_USB_SL811_BFIN_USE_VBUS)
void sl811_port_power(struct device *dev, int is_on) void sl811_port_power(struct device *dev, int is_on)
{ {
unsigned short mask = (1 << CONFIG_USB_SL811_BFIN_GPIO_VBUS); gpio_request(CONFIG_USB_SL811_BFIN_GPIO_VBUS, "usb:SL811_VBUS");
gpio_direction_output(CONFIG_USB_SL811_BFIN_GPIO_VBUS);
bfin_write_PORT_FER(bfin_read_PORT_FER() & ~mask);
bfin_write_FIO_DIR(bfin_read_FIO_DIR() | mask);
if (is_on) if (is_on)
bfin_write_FIO_FLAG_S(mask); gpio_set_value(CONFIG_USB_SL811_BFIN_GPIO_VBUS, 1);
else else
bfin_write_FIO_FLAG_C(mask); gpio_set_value(CONFIG_USB_SL811_BFIN_GPIO_VBUS, 0);
} }
#endif #endif
...@@ -323,7 +322,7 @@ static struct spi_board_info bfin_spi_board_info[] __initdata = { ...@@ -323,7 +322,7 @@ static struct spi_board_info bfin_spi_board_info[] __initdata = {
/* the modalias must be the same as spi device driver name */ /* the modalias must be the same as spi device driver name */
.modalias = "m25p80", /* Name of spi_driver for this device */ .modalias = "m25p80", /* Name of spi_driver for this device */
.max_speed_hz = 25000000, /* max spi clock (SCK) speed in HZ */ .max_speed_hz = 25000000, /* max spi clock (SCK) speed in HZ */
.bus_num = 1, /* Framework bus number */ .bus_num = 0, /* Framework bus number */
.chip_select = 1, /* Framework chip select. On STAMP537 it is SPISSEL1*/ .chip_select = 1, /* Framework chip select. On STAMP537 it is SPISSEL1*/
.platform_data = &bfin_spi_flash_data, .platform_data = &bfin_spi_flash_data,
.controller_data = &spi_flash_chip_info, .controller_data = &spi_flash_chip_info,
...@@ -336,7 +335,7 @@ static struct spi_board_info bfin_spi_board_info[] __initdata = { ...@@ -336,7 +335,7 @@ static struct spi_board_info bfin_spi_board_info[] __initdata = {
{ {
.modalias = "bfin_spi_adc", /* Name of spi_driver for this device */ .modalias = "bfin_spi_adc", /* Name of spi_driver for this device */
.max_speed_hz = 6250000, /* max spi clock (SCK) speed in HZ */ .max_speed_hz = 6250000, /* max spi clock (SCK) speed in HZ */
.bus_num = 1, /* Framework bus number */ .bus_num = 0, /* Framework bus number */
.chip_select = 1, /* Framework chip select. */ .chip_select = 1, /* Framework chip select. */
.platform_data = NULL, /* No spi_driver specific config */ .platform_data = NULL, /* No spi_driver specific config */
.controller_data = &spi_adc_chip_info, .controller_data = &spi_adc_chip_info,
...@@ -348,7 +347,7 @@ static struct spi_board_info bfin_spi_board_info[] __initdata = { ...@@ -348,7 +347,7 @@ static struct spi_board_info bfin_spi_board_info[] __initdata = {
{ {
.modalias = "ad1836-spi", .modalias = "ad1836-spi",
.max_speed_hz = 3125000, /* max spi clock (SCK) speed in HZ */ .max_speed_hz = 3125000, /* max spi clock (SCK) speed in HZ */
.bus_num = 1, .bus_num = 0,
.chip_select = CONFIG_SND_BLACKFIN_SPI_PFBIT, .chip_select = CONFIG_SND_BLACKFIN_SPI_PFBIT,
.controller_data = &ad1836_spi_chip_info, .controller_data = &ad1836_spi_chip_info,
}, },
...@@ -357,7 +356,7 @@ static struct spi_board_info bfin_spi_board_info[] __initdata = { ...@@ -357,7 +356,7 @@ static struct spi_board_info bfin_spi_board_info[] __initdata = {
{ {
.modalias = "ad9960-spi", .modalias = "ad9960-spi",
.max_speed_hz = 10000000, /* max spi clock (SCK) speed in HZ */ .max_speed_hz = 10000000, /* max spi clock (SCK) speed in HZ */
.bus_num = 1, .bus_num = 0,
.chip_select = 1, .chip_select = 1,
.controller_data = &ad9960_spi_chip_info, .controller_data = &ad9960_spi_chip_info,
}, },
...@@ -366,7 +365,7 @@ static struct spi_board_info bfin_spi_board_info[] __initdata = { ...@@ -366,7 +365,7 @@ static struct spi_board_info bfin_spi_board_info[] __initdata = {
{ {
.modalias = "spi_mmc_dummy", .modalias = "spi_mmc_dummy",
.max_speed_hz = 25000000, /* max spi clock (SCK) speed in HZ */ .max_speed_hz = 25000000, /* max spi clock (SCK) speed in HZ */
.bus_num = 1, .bus_num = 0,
.chip_select = 7, .chip_select = 7,
.platform_data = NULL, .platform_data = NULL,
.controller_data = &spi_mmc_chip_info, .controller_data = &spi_mmc_chip_info,
...@@ -375,7 +374,7 @@ static struct spi_board_info bfin_spi_board_info[] __initdata = { ...@@ -375,7 +374,7 @@ static struct spi_board_info bfin_spi_board_info[] __initdata = {
{ {
.modalias = "spi_mmc", .modalias = "spi_mmc",
.max_speed_hz = 25000000, /* max spi clock (SCK) speed in HZ */ .max_speed_hz = 25000000, /* max spi clock (SCK) speed in HZ */
.bus_num = 1, .bus_num = 0,
.chip_select = CONFIG_SPI_MMC_CS_CHAN, .chip_select = CONFIG_SPI_MMC_CS_CHAN,
.platform_data = NULL, .platform_data = NULL,
.controller_data = &spi_mmc_chip_info, .controller_data = &spi_mmc_chip_info,
...@@ -396,24 +395,40 @@ static struct spi_board_info bfin_spi_board_info[] __initdata = { ...@@ -396,24 +395,40 @@ static struct spi_board_info bfin_spi_board_info[] __initdata = {
}; };
/* SPI (0) */
static struct resource bfin_spi0_resource[] = {
[0] = {
.start = SPI0_REGBASE,
.end = SPI0_REGBASE + 0xFF,
.flags = IORESOURCE_MEM,
},
[1] = {
.start = CH_SPI,
.end = CH_SPI,
.flags = IORESOURCE_IRQ,
}
};
/* SPI controller data */ /* SPI controller data */
static struct bfin5xx_spi_master spi_bfin_master_info = { static struct bfin5xx_spi_master bfin_spi0_info = {
.num_chipselect = 8, .num_chipselect = 8,
.enable_dma = 1, /* master has the ability to do dma transfer */ .enable_dma = 1, /* master has the ability to do dma transfer */
}; };
static struct platform_device spi_bfin_master_device = { static struct platform_device bfin_spi0_device = {
.name = "bfin-spi-master", .name = "bfin-spi",
.id = 1, /* Bus number */ .id = 0, /* Bus number */
.num_resources = ARRAY_SIZE(bfin_spi0_resource),
.resource = bfin_spi0_resource,
.dev = { .dev = {
.platform_data = &spi_bfin_master_info, /* Passed to driver */ .platform_data = &bfin_spi0_info, /* Passed to driver */
}, },
}; };
#endif /* spi master and devices */ #endif /* spi master and devices */
#if defined(CONFIG_FB_BF537_LQ035) || defined(CONFIG_FB_BF537_LQ035_MODULE) #if defined(CONFIG_FB_BF537_LQ035) || defined(CONFIG_FB_BF537_LQ035_MODULE)
static struct platform_device bfin_fb_device = { static struct platform_device bfin_fb_device = {
.name = "bf537-fb", .name = "bf537-lq035",
}; };
#endif #endif
...@@ -469,7 +484,7 @@ static struct platform_device *stamp_devices[] __initdata = { ...@@ -469,7 +484,7 @@ static struct platform_device *stamp_devices[] __initdata = {
#endif #endif
#if defined(CONFIG_SPI_BFIN) || defined(CONFIG_SPI_BFIN_MODULE) #if defined(CONFIG_SPI_BFIN) || defined(CONFIG_SPI_BFIN_MODULE)
&spi_bfin_master_device, &bfin_spi0_device,
#endif #endif
#if defined(CONFIG_FB_BF537_LQ035) || defined(CONFIG_FB_BF537_LQ035_MODULE) #if defined(CONFIG_FB_BF537_LQ035) || defined(CONFIG_FB_BF537_LQ035_MODULE)
......
...@@ -37,10 +37,13 @@ ...@@ -37,10 +37,13 @@
#if defined(CONFIG_USB_ISP1362_HCD) || defined(CONFIG_USB_ISP1362_HCD_MODULE) #if defined(CONFIG_USB_ISP1362_HCD) || defined(CONFIG_USB_ISP1362_HCD_MODULE)
#include <linux/usb_isp1362.h> #include <linux/usb_isp1362.h>
#endif #endif
#include <linux/pata_platform.h>
#include <linux/irq.h> #include <linux/irq.h>
#include <linux/interrupt.h> #include <linux/interrupt.h>
#include <linux/usb_sl811.h> #include <linux/usb_sl811.h>
#include <asm/dma.h>
#include <asm/bfin5xx_spi.h> #include <asm/bfin5xx_spi.h>
#include <asm/reboot.h>
#include <linux/spi/ad7877.h> #include <linux/spi/ad7877.h>
/* /*
...@@ -199,15 +202,13 @@ static struct resource sl811_hcd_resources[] = { ...@@ -199,15 +202,13 @@ static struct resource sl811_hcd_resources[] = {
#if defined(CONFIG_USB_SL811_BFIN_USE_VBUS) #if defined(CONFIG_USB_SL811_BFIN_USE_VBUS)
void sl811_port_power(struct device *dev, int is_on) void sl811_port_power(struct device *dev, int is_on)
{ {
unsigned short mask = (1 << CONFIG_USB_SL811_BFIN_GPIO_VBUS); gpio_request(CONFIG_USB_SL811_BFIN_GPIO_VBUS, "usb:SL811_VBUS");
gpio_direction_output(CONFIG_USB_SL811_BFIN_GPIO_VBUS);
bfin_write_PORT_FER(bfin_read_PORT_FER() & ~mask);
bfin_write_FIO_DIR(bfin_read_FIO_DIR() | mask);
if (is_on) if (is_on)
bfin_write_FIO_FLAG_S(mask); gpio_set_value(CONFIG_USB_SL811_BFIN_GPIO_VBUS, 1);
else else
bfin_write_FIO_FLAG_C(mask); gpio_set_value(CONFIG_USB_SL811_BFIN_GPIO_VBUS, 0);
} }
#endif #endif
...@@ -407,7 +408,7 @@ static struct spi_board_info bfin_spi_board_info[] __initdata = { ...@@ -407,7 +408,7 @@ static struct spi_board_info bfin_spi_board_info[] __initdata = {
/* the modalias must be the same as spi device driver name */ /* the modalias must be the same as spi device driver name */
.modalias = "m25p80", /* Name of spi_driver for this device */ .modalias = "m25p80", /* Name of spi_driver for this device */
.max_speed_hz = 25000000, /* max spi clock (SCK) speed in HZ */ .max_speed_hz = 25000000, /* max spi clock (SCK) speed in HZ */
.bus_num = 1, /* Framework bus number */ .bus_num = 0, /* Framework bus number */
.chip_select = 1, /* Framework chip select. On STAMP537 it is SPISSEL1*/ .chip_select = 1, /* Framework chip select. On STAMP537 it is SPISSEL1*/
.platform_data = &bfin_spi_flash_data, .platform_data = &bfin_spi_flash_data,
.controller_data = &spi_flash_chip_info, .controller_data = &spi_flash_chip_info,
...@@ -420,7 +421,7 @@ static struct spi_board_info bfin_spi_board_info[] __initdata = { ...@@ -420,7 +421,7 @@ static struct spi_board_info bfin_spi_board_info[] __initdata = {
{ {
.modalias = "bfin_spi_adc", /* Name of spi_driver for this device */ .modalias = "bfin_spi_adc", /* Name of spi_driver for this device */
.max_speed_hz = 6250000, /* max spi clock (SCK) speed in HZ */ .max_speed_hz = 6250000, /* max spi clock (SCK) speed in HZ */
.bus_num = 1, /* Framework bus number */ .bus_num = 0, /* Framework bus number */
.chip_select = 1, /* Framework chip select. */ .chip_select = 1, /* Framework chip select. */
.platform_data = NULL, /* No spi_driver specific config */ .platform_data = NULL, /* No spi_driver specific config */
.controller_data = &spi_adc_chip_info, .controller_data = &spi_adc_chip_info,
...@@ -432,7 +433,7 @@ static struct spi_board_info bfin_spi_board_info[] __initdata = { ...@@ -432,7 +433,7 @@ static struct spi_board_info bfin_spi_board_info[] __initdata = {
{ {
.modalias = "ad1836-spi", .modalias = "ad1836-spi",
.max_speed_hz = 3125000, /* max spi clock (SCK) speed in HZ */ .max_speed_hz = 3125000, /* max spi clock (SCK) speed in HZ */
.bus_num = 1, .bus_num = 0,
.chip_select = CONFIG_SND_BLACKFIN_SPI_PFBIT, .chip_select = CONFIG_SND_BLACKFIN_SPI_PFBIT,
.controller_data = &ad1836_spi_chip_info, .controller_data = &ad1836_spi_chip_info,
}, },
...@@ -441,7 +442,7 @@ static struct spi_board_info bfin_spi_board_info[] __initdata = { ...@@ -441,7 +442,7 @@ static struct spi_board_info bfin_spi_board_info[] __initdata = {
{ {
.modalias = "ad9960-spi", .modalias = "ad9960-spi",
.max_speed_hz = 10000000, /* max spi clock (SCK) speed in HZ */ .max_speed_hz = 10000000, /* max spi clock (SCK) speed in HZ */
.bus_num = 1, .bus_num = 0,
.chip_select = 1, .chip_select = 1,
.controller_data = &ad9960_spi_chip_info, .controller_data = &ad9960_spi_chip_info,
}, },
...@@ -450,7 +451,7 @@ static struct spi_board_info bfin_spi_board_info[] __initdata = { ...@@ -450,7 +451,7 @@ static struct spi_board_info bfin_spi_board_info[] __initdata = {
{ {
.modalias = "spi_mmc_dummy", .modalias = "spi_mmc_dummy",
.max_speed_hz = 25000000, /* max spi clock (SCK) speed in HZ */ .max_speed_hz = 25000000, /* max spi clock (SCK) speed in HZ */
.bus_num = 1, .bus_num = 0,
.chip_select = 0, .chip_select = 0,
.platform_data = NULL, .platform_data = NULL,
.controller_data = &spi_mmc_chip_info, .controller_data = &spi_mmc_chip_info,
...@@ -459,7 +460,7 @@ static struct spi_board_info bfin_spi_board_info[] __initdata = { ...@@ -459,7 +460,7 @@ static struct spi_board_info bfin_spi_board_info[] __initdata = {
{ {
.modalias = "spi_mmc", .modalias = "spi_mmc",
.max_speed_hz = 25000000, /* max spi clock (SCK) speed in HZ */ .max_speed_hz = 25000000, /* max spi clock (SCK) speed in HZ */
.bus_num = 1, .bus_num = 0,
.chip_select = CONFIG_SPI_MMC_CS_CHAN, .chip_select = CONFIG_SPI_MMC_CS_CHAN,
.platform_data = NULL, .platform_data = NULL,
.controller_data = &spi_mmc_chip_info, .controller_data = &spi_mmc_chip_info,
...@@ -470,16 +471,16 @@ static struct spi_board_info bfin_spi_board_info[] __initdata = { ...@@ -470,16 +471,16 @@ static struct spi_board_info bfin_spi_board_info[] __initdata = {
{ {
.modalias = "fxs-spi", .modalias = "fxs-spi",
.max_speed_hz = 12500000, /* max spi clock (SCK) speed in HZ */ .max_speed_hz = 12500000, /* max spi clock (SCK) speed in HZ */
.bus_num = 1, .bus_num = 0,
.chip_select = 3, .chip_select = 8 - CONFIG_J11_JUMPER,
.controller_data = &spi_si3xxx_chip_info, .controller_data = &spi_si3xxx_chip_info,
.mode = SPI_MODE_3, .mode = SPI_MODE_3,
}, },
{ {
.modalias = "fxo-spi", .modalias = "fxo-spi",
.max_speed_hz = 12500000, /* max spi clock (SCK) speed in HZ */ .max_speed_hz = 12500000, /* max spi clock (SCK) speed in HZ */
.bus_num = 1, .bus_num = 0,
.chip_select = 2, .chip_select = 8 - CONFIG_J19_JUMPER,
.controller_data = &spi_si3xxx_chip_info, .controller_data = &spi_si3xxx_chip_info,
.mode = SPI_MODE_3, .mode = SPI_MODE_3,
}, },
...@@ -488,7 +489,7 @@ static struct spi_board_info bfin_spi_board_info[] __initdata = { ...@@ -488,7 +489,7 @@ static struct spi_board_info bfin_spi_board_info[] __initdata = {
{ {
.modalias = "ad5304_spi", .modalias = "ad5304_spi",
.max_speed_hz = 1250000, /* max spi clock (SCK) speed in HZ */ .max_speed_hz = 1250000, /* max spi clock (SCK) speed in HZ */
.bus_num = 1, .bus_num = 0,
.chip_select = 2, .chip_select = 2,
.platform_data = NULL, .platform_data = NULL,
.controller_data = &ad5304_chip_info, .controller_data = &ad5304_chip_info,
...@@ -509,23 +510,45 @@ static struct spi_board_info bfin_spi_board_info[] __initdata = { ...@@ -509,23 +510,45 @@ static struct spi_board_info bfin_spi_board_info[] __initdata = {
}; };
/* SPI controller data */ /* SPI controller data */
static struct bfin5xx_spi_master spi_bfin_master_info = { static struct bfin5xx_spi_master bfin_spi0_info = {
.num_chipselect = 8, .num_chipselect = 8,
.enable_dma = 1, /* master has the ability to do dma transfer */ .enable_dma = 1, /* master has the ability to do dma transfer */
}; };
static struct platform_device spi_bfin_master_device = { /* SPI (0) */
.name = "bfin-spi-master", static struct resource bfin_spi0_resource[] = {
.id = 1, /* Bus number */ [0] = {
.start = SPI0_REGBASE,
.end = SPI0_REGBASE + 0xFF,
.flags = IORESOURCE_MEM,
},
[1] = {
.start = CH_SPI,
.end = CH_SPI,
.flags = IORESOURCE_IRQ,
},
};
static struct platform_device bfin_spi0_device = {
.name = "bfin-spi",
.id = 0, /* Bus number */
.num_resources = ARRAY_SIZE(bfin_spi0_resource),
.resource = bfin_spi0_resource,
.dev = { .dev = {
.platform_data = &spi_bfin_master_info, /* Passed to driver */ .platform_data = &bfin_spi0_info, /* Passed to driver */
}, },
}; };
#endif /* spi master and devices */ #endif /* spi master and devices */
#if defined(CONFIG_FB_BF537_LQ035) || defined(CONFIG_FB_BF537_LQ035_MODULE) #if defined(CONFIG_FB_BF537_LQ035) || defined(CONFIG_FB_BF537_LQ035_MODULE)
static struct platform_device bfin_fb_device = { static struct platform_device bfin_fb_device = {
.name = "bf537-fb", .name = "bf537-lq035",
};
#endif
#if defined(CONFIG_FB_BFIN_7393) || defined(CONFIG_FB_BFIN_7393_MODULE)
static struct platform_device bfin_fb_adv7393_device = {
.name = "bfin-adv7393",
}; };
#endif #endif
...@@ -551,9 +574,24 @@ static struct platform_device bfin_uart_device = { ...@@ -551,9 +574,24 @@ static struct platform_device bfin_uart_device = {
#endif #endif
#if defined(CONFIG_I2C_BLACKFIN_TWI) || defined(CONFIG_I2C_BLACKFIN_TWI_MODULE) #if defined(CONFIG_I2C_BLACKFIN_TWI) || defined(CONFIG_I2C_BLACKFIN_TWI_MODULE)
static struct resource bfin_twi0_resource[] = {
[0] = {
.start = TWI0_REGBASE,
.end = TWI0_REGBASE,
.flags = IORESOURCE_MEM,
},
[1] = {
.start = IRQ_TWI,
.end = IRQ_TWI,
.flags = IORESOURCE_IRQ,
},
};
static struct platform_device i2c_bfin_twi_device = { static struct platform_device i2c_bfin_twi_device = {
.name = "i2c-bfin-twi", .name = "i2c-bfin-twi",
.id = 0, .id = 0,
.num_resources = ARRAY_SIZE(bfin_twi0_resource),
.resource = bfin_twi0_resource,
}; };
#endif #endif
...@@ -569,6 +607,43 @@ static struct platform_device bfin_sport1_uart_device = { ...@@ -569,6 +607,43 @@ static struct platform_device bfin_sport1_uart_device = {
}; };
#endif #endif
#if defined(CONFIG_PATA_PLATFORM) || defined(CONFIG_PATA_PLATFORM_MODULE)
#define PATA_INT 55
static struct pata_platform_info bfin_pata_platform_data = {
.ioport_shift = 1,
.irq_type = IRQF_TRIGGER_HIGH | IRQF_DISABLED,
};
static struct resource bfin_pata_resources[] = {
{
.start = 0x20314020,
.end = 0x2031403F,
.flags = IORESOURCE_MEM,
},
{
.start = 0x2031401C,
.end = 0x2031401F,
.flags = IORESOURCE_MEM,
},
{
.start = PATA_INT,
.end = PATA_INT,
.flags = IORESOURCE_IRQ,
},
};
static struct platform_device bfin_pata_device = {
.name = "pata_platform",
.id = -1,
.num_resources = ARRAY_SIZE(bfin_pata_resources),
.resource = bfin_pata_resources,
.dev = {
.platform_data = &bfin_pata_platform_data,
}
};
#endif
static struct platform_device *stamp_devices[] __initdata = { static struct platform_device *stamp_devices[] __initdata = {
#if defined(CONFIG_BFIN_CFPCMCIA) || defined(CONFIG_BFIN_CFPCMCIA_MODULE) #if defined(CONFIG_BFIN_CFPCMCIA) || defined(CONFIG_BFIN_CFPCMCIA_MODULE)
&bfin_pcmcia_cf_device, &bfin_pcmcia_cf_device,
...@@ -603,13 +678,17 @@ static struct platform_device *stamp_devices[] __initdata = { ...@@ -603,13 +678,17 @@ static struct platform_device *stamp_devices[] __initdata = {
#endif #endif
#if defined(CONFIG_SPI_BFIN) || defined(CONFIG_SPI_BFIN_MODULE) #if defined(CONFIG_SPI_BFIN) || defined(CONFIG_SPI_BFIN_MODULE)
&spi_bfin_master_device, &bfin_spi0_device,
#endif #endif
#if defined(CONFIG_FB_BF537_LQ035) || defined(CONFIG_FB_BF537_LQ035_MODULE) #if defined(CONFIG_FB_BF537_LQ035) || defined(CONFIG_FB_BF537_LQ035_MODULE)
&bfin_fb_device, &bfin_fb_device,
#endif #endif
#if defined(CONFIG_FB_BFIN_7393) || defined(CONFIG_FB_BFIN_7393_MODULE)
&bfin_fb_adv7393_device,
#endif
#if defined(CONFIG_SERIAL_BFIN) || defined(CONFIG_SERIAL_BFIN_MODULE) #if defined(CONFIG_SERIAL_BFIN) || defined(CONFIG_SERIAL_BFIN_MODULE)
&bfin_uart_device, &bfin_uart_device,
#endif #endif
...@@ -622,6 +701,10 @@ static struct platform_device *stamp_devices[] __initdata = { ...@@ -622,6 +701,10 @@ static struct platform_device *stamp_devices[] __initdata = {
&bfin_sport0_uart_device, &bfin_sport0_uart_device,
&bfin_sport1_uart_device, &bfin_sport1_uart_device,
#endif #endif
#if defined(CONFIG_PATA_PLATFORM) || defined(CONFIG_PATA_PLATFORM_MODULE)
&bfin_pata_device,
#endif
}; };
static int __init stamp_init(void) static int __init stamp_init(void)
...@@ -632,7 +715,18 @@ static int __init stamp_init(void) ...@@ -632,7 +715,18 @@ static int __init stamp_init(void)
spi_register_board_info(bfin_spi_board_info, spi_register_board_info(bfin_spi_board_info,
ARRAY_SIZE(bfin_spi_board_info)); ARRAY_SIZE(bfin_spi_board_info));
#endif #endif
#if defined(CONFIG_PATA_PLATFORM) || defined(CONFIG_PATA_PLATFORM_MODULE)
irq_desc[PATA_INT].status |= IRQ_NOAUTOEN;
#endif
return 0; return 0;
} }
arch_initcall(stamp_init); arch_initcall(stamp_init);
void native_machine_restart(char *cmd)
{
/* workaround reboot hang when booting from SPI */
if ((bfin_read_SYSCR() & 0x7) == 0x3)
bfin_gpio_reset_spi0_ssel1();
}
This diff is collapsed.
...@@ -34,7 +34,9 @@ ...@@ -34,7 +34,9 @@
#include <linux/spi/spi.h> #include <linux/spi/spi.h>
#include <linux/spi/flash.h> #include <linux/spi/flash.h>
#include <linux/usb_isp1362.h> #include <linux/usb_isp1362.h>
#include <linux/pata_platform.h>
#include <linux/irq.h> #include <linux/irq.h>
#include <asm/dma.h>
#include <asm/bfin5xx_spi.h> #include <asm/bfin5xx_spi.h>
/* /*
...@@ -112,7 +114,7 @@ static struct spi_board_info bfin_spi_board_info[] __initdata = { ...@@ -112,7 +114,7 @@ static struct spi_board_info bfin_spi_board_info[] __initdata = {
/* the modalias must be the same as spi device driver name */ /* the modalias must be the same as spi device driver name */
.modalias = "m25p80", /* Name of spi_driver for this device */ .modalias = "m25p80", /* Name of spi_driver for this device */
.max_speed_hz = 25000000, /* max spi clock (SCK) speed in HZ */ .max_speed_hz = 25000000, /* max spi clock (SCK) speed in HZ */
.bus_num = 1, /* Framework bus number */ .bus_num = 0, /* Framework bus number */
.chip_select = 1, /* Framework chip select. On STAMP537 it is SPISSEL1*/ .chip_select = 1, /* Framework chip select. On STAMP537 it is SPISSEL1*/
.platform_data = &bfin_spi_flash_data, .platform_data = &bfin_spi_flash_data,
.controller_data = &spi_flash_chip_info, .controller_data = &spi_flash_chip_info,
...@@ -124,7 +126,7 @@ static struct spi_board_info bfin_spi_board_info[] __initdata = { ...@@ -124,7 +126,7 @@ static struct spi_board_info bfin_spi_board_info[] __initdata = {
{ {
.modalias = "bfin_spi_adc", /* Name of spi_driver for this device */ .modalias = "bfin_spi_adc", /* Name of spi_driver for this device */
.max_speed_hz = 6250000, /* max spi clock (SCK) speed in HZ */ .max_speed_hz = 6250000, /* max spi clock (SCK) speed in HZ */
.bus_num = 1, /* Framework bus number */ .bus_num = 0, /* Framework bus number */
.chip_select = 1, /* Framework chip select. */ .chip_select = 1, /* Framework chip select. */
.platform_data = NULL, /* No spi_driver specific config */ .platform_data = NULL, /* No spi_driver specific config */
.controller_data = &spi_adc_chip_info, .controller_data = &spi_adc_chip_info,
...@@ -135,7 +137,7 @@ static struct spi_board_info bfin_spi_board_info[] __initdata = { ...@@ -135,7 +137,7 @@ static struct spi_board_info bfin_spi_board_info[] __initdata = {
{ {
.modalias = "ad1836-spi", .modalias = "ad1836-spi",
.max_speed_hz = 3125000, /* max spi clock (SCK) speed in HZ */ .max_speed_hz = 3125000, /* max spi clock (SCK) speed in HZ */
.bus_num = 1, .bus_num = 0,
.chip_select = CONFIG_SND_BLACKFIN_SPI_PFBIT, .chip_select = CONFIG_SND_BLACKFIN_SPI_PFBIT,
.controller_data = &ad1836_spi_chip_info, .controller_data = &ad1836_spi_chip_info,
}, },
...@@ -144,7 +146,7 @@ static struct spi_board_info bfin_spi_board_info[] __initdata = { ...@@ -144,7 +146,7 @@ static struct spi_board_info bfin_spi_board_info[] __initdata = {
{ {
.modalias = "ad9960-spi", .modalias = "ad9960-spi",
.max_speed_hz = 10000000, /* max spi clock (SCK) speed in HZ */ .max_speed_hz = 10000000, /* max spi clock (SCK) speed in HZ */
.bus_num = 1, .bus_num = 0,
.chip_select = 1, .chip_select = 1,
.controller_data = &ad9960_spi_chip_info, .controller_data = &ad9960_spi_chip_info,
}, },
...@@ -153,7 +155,7 @@ static struct spi_board_info bfin_spi_board_info[] __initdata = { ...@@ -153,7 +155,7 @@ static struct spi_board_info bfin_spi_board_info[] __initdata = {
{ {
.modalias = "spi_mmc", .modalias = "spi_mmc",
.max_speed_hz = 25000000, /* max spi clock (SCK) speed in HZ */ .max_speed_hz = 25000000, /* max spi clock (SCK) speed in HZ */
.bus_num = 1, .bus_num = 0,
.chip_select = CONFIG_SPI_MMC_CS_CHAN, .chip_select = CONFIG_SPI_MMC_CS_CHAN,
.platform_data = NULL, .platform_data = NULL,
.controller_data = &spi_mmc_chip_info, .controller_data = &spi_mmc_chip_info,
...@@ -162,17 +164,33 @@ static struct spi_board_info bfin_spi_board_info[] __initdata = { ...@@ -162,17 +164,33 @@ static struct spi_board_info bfin_spi_board_info[] __initdata = {
#endif #endif
}; };
/* SPI (0) */
static struct resource bfin_spi0_resource[] = {
[0] = {
.start = SPI0_REGBASE,
.end = SPI0_REGBASE + 0xFF,
.flags = IORESOURCE_MEM,
},
[1] = {
.start = CH_SPI,
.end = CH_SPI,
.flags = IORESOURCE_IRQ,
}
};
/* SPI controller data */ /* SPI controller data */
static struct bfin5xx_spi_master spi_bfin_master_info = { static struct bfin5xx_spi_master bfin_spi0_info = {
.num_chipselect = 8, .num_chipselect = 8,
.enable_dma = 1, /* master has the ability to do dma transfer */ .enable_dma = 1, /* master has the ability to do dma transfer */
}; };
static struct platform_device spi_bfin_master_device = { static struct platform_device bfin_spi0_device = {
.name = "bfin-spi-master", .name = "bfin-spi",
.id = 1, /* Bus number */ .id = 0, /* Bus number */
.num_resources = ARRAY_SIZE(bfin_spi0_resource),
.resource = bfin_spi0_resource,
.dev = { .dev = {
.platform_data = &spi_bfin_master_info, /* Passed to driver */ .platform_data = &bfin_spi0_info, /* Passed to driver */
}, },
}; };
#endif /* spi master and devices */ #endif /* spi master and devices */
...@@ -256,6 +274,43 @@ static struct platform_device bfin_uart_device = { ...@@ -256,6 +274,43 @@ static struct platform_device bfin_uart_device = {
}; };
#endif #endif
#if defined(CONFIG_PATA_PLATFORM) || defined(CONFIG_PATA_PLATFORM_MODULE)
#define PATA_INT 119
static struct pata_platform_info bfin_pata_platform_data = {
.ioport_shift = 2,
.irq_type = IRQF_TRIGGER_HIGH | IRQF_DISABLED,
};
static struct resource bfin_pata_resources[] = {
{
.start = 0x2400C000,
.end = 0x2400C001F,
.flags = IORESOURCE_MEM,
},
{
.start = 0x2400D018,
.end = 0x2400D01B,
.flags = IORESOURCE_MEM,
},
{
.start = PATA_INT,
.end = PATA_INT,
.flags = IORESOURCE_IRQ,
},
};
static struct platform_device bfin_pata_device = {
.name = "pata_platform",
.id = -1,
.num_resources = ARRAY_SIZE(bfin_pata_resources),
.resource = bfin_pata_resources,
.dev = {
.platform_data = &bfin_pata_platform_data,
}
};
#endif
static struct platform_device *cm_bf561_devices[] __initdata = { static struct platform_device *cm_bf561_devices[] __initdata = {
#if defined(CONFIG_SERIAL_BFIN) || defined(CONFIG_SERIAL_BFIN_MODULE) #if defined(CONFIG_SERIAL_BFIN) || defined(CONFIG_SERIAL_BFIN_MODULE)
...@@ -271,9 +326,12 @@ static struct platform_device *cm_bf561_devices[] __initdata = { ...@@ -271,9 +326,12 @@ static struct platform_device *cm_bf561_devices[] __initdata = {
#endif #endif
#if defined(CONFIG_SPI_BFIN) || defined(CONFIG_SPI_BFIN_MODULE) #if defined(CONFIG_SPI_BFIN) || defined(CONFIG_SPI_BFIN_MODULE)
&spi_bfin_master_device, &bfin_spi0_device,
#endif #endif
#if defined(CONFIG_PATA_PLATFORM) || defined(CONFIG_PATA_PLATFORM_MODULE)
&bfin_pata_device,
#endif
}; };
static int __init cm_bf561_init(void) static int __init cm_bf561_init(void)
...@@ -283,6 +341,10 @@ static int __init cm_bf561_init(void) ...@@ -283,6 +341,10 @@ static int __init cm_bf561_init(void)
#if defined(CONFIG_SPI_BFIN) || defined(CONFIG_SPI_BFIN_MODULE) #if defined(CONFIG_SPI_BFIN) || defined(CONFIG_SPI_BFIN_MODULE)
spi_register_board_info(bfin_spi_board_info, ARRAY_SIZE(bfin_spi_board_info)); spi_register_board_info(bfin_spi_board_info, ARRAY_SIZE(bfin_spi_board_info));
#endif #endif
#if defined(CONFIG_PATA_PLATFORM) || defined(CONFIG_PATA_PLATFORM_MODULE)
irq_desc[PATA_INT].status |= IRQ_NOAUTOEN;
#endif
return 0; return 0;
} }
......
...@@ -32,6 +32,8 @@ ...@@ -32,6 +32,8 @@
#include <linux/spi/spi.h> #include <linux/spi/spi.h>
#include <linux/irq.h> #include <linux/irq.h>
#include <linux/interrupt.h> #include <linux/interrupt.h>
#include <linux/pata_platform.h>
#include <asm/dma.h>
#include <asm/bfin5xx_spi.h> #include <asm/bfin5xx_spi.h>
/* /*
...@@ -140,17 +142,33 @@ static struct bfin5xx_spi_chip ad1836_spi_chip_info = { ...@@ -140,17 +142,33 @@ static struct bfin5xx_spi_chip ad1836_spi_chip_info = {
#endif #endif
#endif #endif
/* SPI (0) */
static struct resource bfin_spi0_resource[] = {
[0] = {
.start = SPI0_REGBASE,
.end = SPI0_REGBASE + 0xFF,
.flags = IORESOURCE_MEM,
},
[1] = {
.start = CH_SPI,
.end = CH_SPI,
.flags = IORESOURCE_IRQ,
}
};
/* SPI controller data */ /* SPI controller data */
static struct bfin5xx_spi_master spi_bfin_master_info = { static struct bfin5xx_spi_master bfin_spi0_info = {
.num_chipselect = 8, .num_chipselect = 8,
.enable_dma = 1, /* master has the ability to do dma transfer */ .enable_dma = 1, /* master has the ability to do dma transfer */
}; };
static struct platform_device spi_bfin_master_device = { static struct platform_device bfin_spi0_device = {
.name = "bfin-spi-master", .name = "bfin-spi",
.id = 1, /* Bus number */ .id = 0, /* Bus number */
.num_resources = ARRAY_SIZE(bfin_spi0_resource),
.resource = bfin_spi0_resource,
.dev = { .dev = {
.platform_data = &spi_bfin_master_info, /* Passed to driver */ .platform_data = &bfin_spi0_info, /* Passed to driver */
}, },
}; };
...@@ -160,23 +178,63 @@ static struct spi_board_info bfin_spi_board_info[] __initdata = { ...@@ -160,23 +178,63 @@ static struct spi_board_info bfin_spi_board_info[] __initdata = {
{ {
.modalias = "ad1836-spi", .modalias = "ad1836-spi",
.max_speed_hz = 3125000, /* max spi clock (SCK) speed in HZ */ .max_speed_hz = 3125000, /* max spi clock (SCK) speed in HZ */
.bus_num = 1, .bus_num = 0,
.chip_select = CONFIG_SND_BLACKFIN_SPI_PFBIT, .chip_select = CONFIG_SND_BLACKFIN_SPI_PFBIT,
.controller_data = &ad1836_spi_chip_info, .controller_data = &ad1836_spi_chip_info,
}, },
#endif #endif
}; };
#if defined(CONFIG_PATA_PLATFORM) || defined(CONFIG_PATA_PLATFORM_MODULE)
#define PATA_INT 55
static struct pata_platform_info bfin_pata_platform_data = {
.ioport_shift = 1,
.irq_type = IRQF_TRIGGER_HIGH | IRQF_DISABLED,
};
static struct resource bfin_pata_resources[] = {
{
.start = 0x20314020,
.end = 0x2031403F,
.flags = IORESOURCE_MEM,
},
{
.start = 0x2031401C,
.end = 0x2031401F,
.flags = IORESOURCE_MEM,
},
{
.start = PATA_INT,
.end = PATA_INT,
.flags = IORESOURCE_IRQ,
},
};
static struct platform_device bfin_pata_device = {
.name = "pata_platform",
.id = -1,
.num_resources = ARRAY_SIZE(bfin_pata_resources),
.resource = bfin_pata_resources,
.dev = {
.platform_data = &bfin_pata_platform_data,
}
};
#endif
static struct platform_device *ezkit_devices[] __initdata = { static struct platform_device *ezkit_devices[] __initdata = {
#if defined(CONFIG_SMC91X) || defined(CONFIG_SMC91X_MODULE) #if defined(CONFIG_SMC91X) || defined(CONFIG_SMC91X_MODULE)
&smc91x_device, &smc91x_device,
#endif #endif
#if defined(CONFIG_SPI_BFIN) || defined(CONFIG_SPI_BFIN_MODULE) #if defined(CONFIG_SPI_BFIN) || defined(CONFIG_SPI_BFIN_MODULE)
&spi_bfin_master_device, &bfin_spi0_device,
#endif #endif
#if defined(CONFIG_SERIAL_BFIN) || defined(CONFIG_SERIAL_BFIN_MODULE) #if defined(CONFIG_SERIAL_BFIN) || defined(CONFIG_SERIAL_BFIN_MODULE)
&bfin_uart_device, &bfin_uart_device,
#endif #endif
#if defined(CONFIG_PATA_PLATFORM) || defined(CONFIG_PATA_PLATFORM_MODULE)
&bfin_pata_device,
#endif
}; };
static int __init ezkit_init(void) static int __init ezkit_init(void)
...@@ -194,7 +252,15 @@ static int __init ezkit_init(void) ...@@ -194,7 +252,15 @@ static int __init ezkit_init(void)
SSYNC(); SSYNC();
#endif #endif
return spi_register_board_info(bfin_spi_board_info, ARRAY_SIZE(bfin_spi_board_info)); #if defined(CONFIG_SPI_BFIN) || defined(CONFIG_SPI_BFIN_MODULE)
spi_register_board_info(bfin_spi_board_info,
ARRAY_SIZE(bfin_spi_board_info));
#endif
#if defined(CONFIG_PATA_PLATFORM) || defined(CONFIG_PATA_PLATFORM_MODULE)
irq_desc[PATA_INT].status |= IRQ_NOAUTOEN;
#endif
return 0;
} }
arch_initcall(ezkit_init); arch_initcall(ezkit_init);
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment