ARM: 6633/1: vexpress: register platform PATA device.
authorNick Bowler <nbowler@elliptictech.com>
Fri, 21 Jan 2011 14:51:06 +0000 (15:51 +0100)
committerRussell King <rmk+kernel@arm.linux.org.uk>
Tue, 25 Jan 2011 16:19:12 +0000 (16:19 +0000)
The compactflash device on this platform is not usable simply because it
is never registered with the kernel.  Fix that up.

Signed-off-by: Nick Bowler <nbowler@elliptictech.com>
Signed-off-by: Russell King <rmk+kernel@arm.linux.org.uk>
arch/arm/Kconfig
arch/arm/mach-vexpress/v2m.c

index 5cff165b7eb04ef092e09957cf05cf6b8eddfcee..70a017042ef0b2c93b32160c53fb27ed743b72eb 100644 (file)
@@ -269,6 +269,7 @@ config ARCH_VEXPRESS
        select GENERIC_CLOCKEVENTS
        select HAVE_CLK
        select HAVE_SCHED_CLOCK
+       select HAVE_PATA_PLATFORM
        select ICST
        select PLAT_VERSATILE
        help
index 1edae65a0e72c4cec6edea8810b8f841a4c1b46a..f35d646a1bf160f257aa65d20a4eae1fac5b3351 100644 (file)
@@ -7,6 +7,7 @@
 #include <linux/io.h>
 #include <linux/init.h>
 #include <linux/platform_device.h>
+#include <linux/ata_platform.h>
 #include <linux/smsc911x.h>
 #include <linux/spinlock.h>
 #include <linux/sysdev.h>
@@ -249,6 +250,29 @@ static struct platform_device v2m_flash_device = {
        .dev.platform_data = &v2m_flash_data,
 };
 
+static struct pata_platform_info v2m_pata_data = {
+       .ioport_shift   = 2,
+};
+
+static struct resource v2m_pata_resources[] = {
+       {
+               .start  = V2M_CF,
+               .end    = V2M_CF + 0xff,
+               .flags  = IORESOURCE_MEM,
+       }, {
+               .start  = V2M_CF + 0x100,
+               .end    = V2M_CF + SZ_4K - 1,
+               .flags  = IORESOURCE_MEM,
+       },
+};
+
+static struct platform_device v2m_cf_device = {
+       .name           = "pata_platform",
+       .id             = -1,
+       .resource       = v2m_pata_resources,
+       .num_resources  = ARRAY_SIZE(v2m_pata_resources),
+       .dev.platform_data = &v2m_pata_data,
+};
 
 static unsigned int v2m_mmci_status(struct device *dev)
 {
@@ -363,6 +387,7 @@ static int __init v2m_init(void)
        platform_device_register(&v2m_pcie_i2c_device);
        platform_device_register(&v2m_ddc_i2c_device);
        platform_device_register(&v2m_flash_device);
+       platform_device_register(&v2m_cf_device);
        platform_device_register(&v2m_eth_device);
        platform_device_register(&v2m_usb_device);