Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 052345ae authored by Marek Vasut's avatar Marek Vasut Committed by Eric Miao
Browse files

[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: default avatarMarek Vasut <marek.vasut@gmail.com>
Signed-off-by: default avatarEric Miao <eric.y.miao@gmail.com>
parent 83a4a102
Loading
Loading
Loading
Loading
+1 −0
Original line number Diff line number Diff line
@@ -252,6 +252,7 @@ config MACH_COLIBRI320
config MACH_VPAC270
	bool "Voipac PXA270"
	select PXA27x
	select HAVE_PATA_PLATFORM
	help
	  PXA270 based Single Board Computer.

+2 −0
Original line number Diff line number Diff line
@@ -35,4 +35,6 @@

#define	GPIO114_VPAC270_ETH_IRQ		114

#define	GPIO36_VPAC270_IDE_IRQ		36

#endif
+50 −0
Original line number Diff line number Diff line
@@ -23,6 +23,7 @@
#include <linux/mtd/physmap.h>
#include <linux/dm9000.h>
#include <linux/ucb1400.h>
#include <linux/ata_platform.h>

#include <asm/mach-types.h>
#include <asm/mach/arch.h>
@@ -138,6 +139,10 @@ static unsigned long vpac270_pin_config[] __initdata = {
	/* I2C */
	GPIO117_I2C_SCL,
	GPIO118_I2C_SDA,

	/* IDE */
	GPIO36_GPIO,	/* IDE IRQ */
	GPIO80_DREQ_1,
};

/******************************************************************************
@@ -486,6 +491,50 @@ static void __init vpac270_lcd_init(void)
static inline void vpac270_lcd_init(void) {}
#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
 ******************************************************************************/
@@ -507,6 +556,7 @@ static void __init vpac270_init(void)
	vpac270_eth_init();
	vpac270_ts_init();
	vpac270_rtc_init();
	vpac270_ide_init();
}

MACHINE_START(VPAC270, "Voipac PXA270")