From mboxrd@z Thu Jan 1 00:00:00 1970 From: marek.vasut@gmail.com (Marek Vasut) Date: Mon, 26 Apr 2010 23:15:37 +0200 Subject: [PATCH] pxa/vpac270: add ide support In-Reply-To: <20100426210524.GY30801@buzzloop.caiaq.de> References: <1272311167-576-1-git-send-email-marek.vasut@gmail.com> <20100426210524.GY30801@buzzloop.caiaq.de> Message-ID: <201004262315.37375.marek.vasut@gmail.com> To: linux-arm-kernel@lists.infradead.org List-Id: linux-arm-kernel.lists.infradead.org Dne Po 26. dubna 2010 23:05:24 Daniel Mack napsal(a): > On Mon, Apr 26, 2010 at 09:46:07PM +0200, Marek Vasut wrote: > > 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 > > --- > > > > arch/arm/mach-pxa/Kconfig | 1 + > > arch/arm/mach-pxa/include/mach/vpac270.h | 2 + > > arch/arm/mach-pxa/vpac270.c | 50 > > ++++++++++++++++++++++++++++++ 3 files changed, 53 insertions(+), 0 > > deletions(-) > > > > diff --git a/arch/arm/mach-pxa/Kconfig b/arch/arm/mach-pxa/Kconfig > > index 12e16b9..5db128c 100644 > > --- a/arch/arm/mach-pxa/Kconfig > > +++ b/arch/arm/mach-pxa/Kconfig > > @@ -258,6 +258,7 @@ config MACH_COLIBRI320 > > > > config MACH_VPAC270 > > > > bool "Voipac PXA270" > > select PXA27x > > > > + select HAVE_PATA_PLATFORM > > > > help > > > > PXA270 based Single Board Computer. > > > > diff --git a/arch/arm/mach-pxa/include/mach/vpac270.h > > b/arch/arm/mach-pxa/include/mach/vpac270.h index b90b380..0d82c47 100644 > > --- a/arch/arm/mach-pxa/include/mach/vpac270.h > > +++ b/arch/arm/mach-pxa/include/mach/vpac270.h > > @@ -35,4 +35,6 @@ > > > > #define GPIO114_VPAC270_ETH_IRQ 114 > > > > +#define GPIO36_VPAC270_IDE_IRQ 36 > > + > > > > #endif > > > > diff --git a/arch/arm/mach-pxa/vpac270.c b/arch/arm/mach-pxa/vpac270.c > > index 0a9647b..6575b8f 100644 > > --- a/arch/arm/mach-pxa/vpac270.c > > +++ b/arch/arm/mach-pxa/vpac270.c > > @@ -23,6 +23,7 @@ > > > > #include > > #include > > #include > > > > +#include > > > > #include > > #include > > > > @@ -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, > > > > }; > > > > /*********************************************************************** > > ******* > > > > @@ -487,6 +492,50 @@ 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 > > + } > > I think you can rely on the compiler's ability to count the array > members for you :) Sure, but it never hurts to be explicit to some extent. > > Daniel > > > +}; > > + > > +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 > > *********************************************************************** > > *******/ > > > > static void __init vpac270_init(void) > > > > @@ -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")