--- 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);