--- 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/include/mach/avila.h
+++ b/arch/arm/mach-ixp4xx/include/mach/avila.h
@@ -39,3 +39,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)