[ARM] pxa/vpac270: add ide support

This patch adds support for the on-board IDE channel. I tested this with a CDROM
connected over 2.5-3.5 IDE reduction with external power supplied to the CDROM.
This was not tested with the Voipac 270-HDD-000 (official Voipac HDD module),
but I expect no problems.

Signed-off-by: Marek Vasut <marek.vasut@gmail.com>
Signed-off-by: Eric Miao <eric.y.miao@gmail.com>
This commit is contained in:
Marek Vasut 2010-04-26 21:46:07 +02:00 committed by Eric Miao
parent 83a4a10226
commit 052345aec0
3 changed files with 53 additions and 0 deletions

View File

@ -252,6 +252,7 @@ config MACH_COLIBRI320
config MACH_VPAC270 config MACH_VPAC270
bool "Voipac PXA270" bool "Voipac PXA270"
select PXA27x select PXA27x
select HAVE_PATA_PLATFORM
help help
PXA270 based Single Board Computer. PXA270 based Single Board Computer.

View File

@ -35,4 +35,6 @@
#define GPIO114_VPAC270_ETH_IRQ 114 #define GPIO114_VPAC270_ETH_IRQ 114
#define GPIO36_VPAC270_IDE_IRQ 36
#endif #endif

View File

@ -23,6 +23,7 @@
#include <linux/mtd/physmap.h> #include <linux/mtd/physmap.h>
#include <linux/dm9000.h> #include <linux/dm9000.h>
#include <linux/ucb1400.h> #include <linux/ucb1400.h>
#include <linux/ata_platform.h>
#include <asm/mach-types.h> #include <asm/mach-types.h>
#include <asm/mach/arch.h> #include <asm/mach/arch.h>
@ -138,6 +139,10 @@ static unsigned long vpac270_pin_config[] __initdata = {
/* I2C */ /* I2C */
GPIO117_I2C_SCL, GPIO117_I2C_SCL,
GPIO118_I2C_SDA, GPIO118_I2C_SDA,
/* IDE */
GPIO36_GPIO, /* IDE IRQ */
GPIO80_DREQ_1,
}; };
/****************************************************************************** /******************************************************************************
@ -486,6 +491,50 @@ err:
static inline void vpac270_lcd_init(void) {} static inline void vpac270_lcd_init(void) {}
#endif #endif
/******************************************************************************
* PATA IDE
******************************************************************************/
#if defined(CONFIG_PATA_PLATFORM) || defined(CONFIG_PATA_PLATFORM_MODULE)
static struct pata_platform_info vpac270_pata_pdata = {
.ioport_shift = 1,
.irq_flags = IRQF_TRIGGER_RISING,
};
static struct resource vpac270_ide_resources[] = {
[0] = { /* I/O Base address */
.start = PXA_CS3_PHYS + 0x120,
.end = PXA_CS3_PHYS + 0x13f,
.flags = IORESOURCE_MEM
},
[1] = { /* CTL Base address */
.start = PXA_CS3_PHYS + 0x15c,
.end = PXA_CS3_PHYS + 0x15f,
.flags = IORESOURCE_MEM
},
[2] = { /* IDE IRQ pin */
.start = gpio_to_irq(GPIO36_VPAC270_IDE_IRQ),
.end = gpio_to_irq(GPIO36_VPAC270_IDE_IRQ),
.flags = IORESOURCE_IRQ
}
};
static struct platform_device vpac270_ide_device = {
.name = "pata_platform",
.num_resources = ARRAY_SIZE(vpac270_ide_resources),
.resource = vpac270_ide_resources,
.dev = {
.platform_data = &vpac270_pata_pdata,
}
};
static void __init vpac270_ide_init(void)
{
platform_device_register(&vpac270_ide_device);
}
#else
static inline void vpac270_ide_init(void) {}
#endif
/****************************************************************************** /******************************************************************************
* Machine init * Machine init
******************************************************************************/ ******************************************************************************/
@ -507,6 +556,7 @@ static void __init vpac270_init(void)
vpac270_eth_init(); vpac270_eth_init();
vpac270_ts_init(); vpac270_ts_init();
vpac270_rtc_init(); vpac270_rtc_init();
vpac270_ide_init();
} }
MACHINE_START(VPAC270, "Voipac PXA270") MACHINE_START(VPAC270, "Voipac PXA270")