[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:
parent
83a4a10226
commit
052345aec0
@ -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.
|
||||||
|
|
||||||
|
@ -35,4 +35,6 @@
|
|||||||
|
|
||||||
#define GPIO114_VPAC270_ETH_IRQ 114
|
#define GPIO114_VPAC270_ETH_IRQ 114
|
||||||
|
|
||||||
|
#define GPIO36_VPAC270_IDE_IRQ 36
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
|
@ -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")
|
||||||
|
Loading…
Reference in New Issue
Block a user