diff options
Diffstat (limited to 'target/linux/ixp4xx/patches-2.6.33/302-avila_gpio_device.patch')
-rw-r--r-- | target/linux/ixp4xx/patches-2.6.33/302-avila_gpio_device.patch | 48 |
1 files changed, 48 insertions, 0 deletions
diff --git a/target/linux/ixp4xx/patches-2.6.33/302-avila_gpio_device.patch b/target/linux/ixp4xx/patches-2.6.33/302-avila_gpio_device.patch new file mode 100644 index 0000000000..7e3daaa89e --- /dev/null +++ b/target/linux/ixp4xx/patches-2.6.33/302-avila_gpio_device.patch @@ -0,0 +1,48 @@ +--- a/arch/arm/mach-ixp4xx/avila-setup.c ++++ b/arch/arm/mach-ixp4xx/avila-setup.c +@@ -237,10 +237,28 @@ static struct platform_device avila_latc + .dev.platform_data = &avila_latch_leds_data, + }; + ++static struct resource avila_gpio_resources[] = { ++ { ++ .name = "gpio", ++ /* FIXME: gpio mask should be model specific */ ++ .start = AVILA_GPIO_MASK, ++ .end = AVILA_GPIO_MASK, ++ .flags = 0, ++ }, ++}; ++ ++static struct platform_device avila_gpio = { ++ .name = "GPIODEV", ++ .id = -1, ++ .num_resources = ARRAY_SIZE(avila_gpio_resources), ++ .resource = avila_gpio_resources, ++}; ++ + static struct platform_device *avila_devices[] __initdata = { + &avila_i2c_gpio, + &avila_flash, +- &avila_uart ++ &avila_uart, ++ &avila_gpio, + }; + + static void __init avila_gw23xx_setup(void) +--- a/arch/arm/mach-ixp4xx/avila-setup.c ++++ b/arch/arm/mach-ixp4xx/avila-setup.c +@@ -38,6 +38,13 @@ + #define AVILA_SDA_PIN 7 + #define AVILA_SCL_PIN 6 + ++/* User LEDs */ ++#define AVILA_GW23XX_LED_USER_GPIO 3 ++#define AVILA_GW23X7_LED_USER_GPIO 4 ++ ++/* gpio mask used by platform device */ ++#define AVILA_GPIO_MASK (1 << 1) | (1 << 3) | (1 << 5) | (1 << 7) | (1 << 9) ++ + struct avila_board_info { + unsigned char *model; + void (*setup)(void); |