]> err.no Git - linux-2.6/blobdiff - arch/arm/mach-ixp4xx/avila-setup.c
Merge branch 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/dtor/input
[linux-2.6] / arch / arm / mach-ixp4xx / avila-setup.c
index 9f09f94593a66148007bd47c921114f669569517..e38f45fa58ae6889f5f6a54fbd79189ba19d019c 100644 (file)
@@ -18,6 +18,7 @@
 #include <linux/tty.h>
 #include <linux/serial_8250.h>
 #include <linux/slab.h>
+#include <linux/i2c-gpio.h>
 
 #include <asm/types.h>
 #include <asm/setup.h>
@@ -47,18 +48,17 @@ static struct platform_device avila_flash = {
        .resource       = &avila_flash_resource,
 };
 
-static struct ixp4xx_i2c_pins avila_i2c_gpio_pins = {
+static struct i2c_gpio_platform_data avila_i2c_gpio_data = {
        .sda_pin        = AVILA_SDA_PIN,
        .scl_pin        = AVILA_SCL_PIN,
 };
 
-static struct platform_device avila_i2c_controller = {
-       .name           = "IXP4XX-I2C",
+static struct platform_device avila_i2c_gpio = {
+       .name           = "i2c-gpio",
        .id             = 0,
-       .dev            = {
-               .platform_data = &avila_i2c_gpio_pins,
+       .dev     = {
+               .platform_data  = &avila_i2c_gpio_data,
        },
-       .num_resources  = 0
 };
 
 static struct resource avila_uart_resources[] = {
@@ -104,8 +104,36 @@ static struct platform_device avila_uart = {
        .resource               = avila_uart_resources
 };
 
+static struct resource avila_pata_resources[] = {
+       {
+               .flags  = IORESOURCE_MEM
+       },
+       {
+               .flags  = IORESOURCE_MEM,
+       },
+       {
+               .name   = "intrq",
+               .start  = IRQ_IXP4XX_GPIO12,
+               .end    = IRQ_IXP4XX_GPIO12,
+               .flags  = IORESOURCE_IRQ,
+       },
+};
+
+static struct ixp4xx_pata_data avila_pata_data = {
+       .cs0_bits       = 0xbfff0043,
+       .cs1_bits       = 0xbfff0043,
+};
+
+static struct platform_device avila_pata = {
+       .name                   = "pata_ixp4xx_cf",
+       .id                     = 0,
+       .dev.platform_data      = &avila_pata_data,
+       .num_resources          = ARRAY_SIZE(avila_pata_resources),
+       .resource               = avila_pata_resources,
+};
+
 static struct platform_device *avila_devices[] __initdata = {
-       &avila_i2c_controller,
+       &avila_i2c_gpio,
        &avila_flash,
        &avila_uart
 };
@@ -119,6 +147,18 @@ static void __init avila_init(void)
                IXP4XX_EXP_BUS_BASE(0) + ixp4xx_exp_bus_size - 1;
 
        platform_add_devices(avila_devices, ARRAY_SIZE(avila_devices));
+
+       avila_pata_resources[0].start = IXP4XX_EXP_BUS_BASE(1);
+       avila_pata_resources[0].end = IXP4XX_EXP_BUS_END(1);
+
+       avila_pata_resources[1].start = IXP4XX_EXP_BUS_BASE(2);
+       avila_pata_resources[1].end = IXP4XX_EXP_BUS_END(2);
+
+       avila_pata_data.cs0_cfg = IXP4XX_EXP_CS1;
+       avila_pata_data.cs1_cfg = IXP4XX_EXP_CS2;
+
+       platform_device_register(&avila_pata);
+
 }
 
 MACHINE_START(AVILA, "Gateworks Avila Network Platform")