---- a/arch/arm/mach-orion5x/wrt350n-v2-setup.c
-+++ b/arch/arm/mach-orion5x/wrt350n-v2-setup.c
-@@ -15,6 +15,9 @@
- #include <linux/mtd/physmap.h>
- #include <linux/mv643xx_eth.h>
- #include <linux/ethtool.h>
-+#include <linux/leds.h>
-+#include <linux/gpio_keys.h>
-+#include <linux/input.h>
- #include <net/dsa.h>
- #include <asm/mach-types.h>
- #include <asm/gpio.h>
-@@ -24,6 +27,80 @@
- #include "common.h"
- #include "mpp.h"
-
-+/*
-+ * LEDs attached to GPIO
-+ */
-+static struct gpio_led wrt350n_v2_led_pins[] = {
-+ {
-+ .name = "wrt350nv2:green:power",
-+ .gpio = 0,
-+ .active_low = 1,
-+ }, {
-+ .name = "wrt350nv2:green:security",
-+ .gpio = 1,
-+ .active_low = 1,
-+ }, {
-+ .name = "wrt350nv2:orange:power",
-+ .gpio = 5,
-+ .active_low = 1,
-+ }, {
-+ .name = "wrt350nv2:green:usb",
-+ .gpio = 6,
-+ .active_low = 1,
-+ }, {
-+ .name = "wrt350nv2:green:wireless",
-+ .gpio = 7,
-+ .active_low = 1,
-+ },
-+};
-+
-+static struct gpio_led_platform_data wrt350n_v2_led_data = {
-+ .leds = wrt350n_v2_led_pins,
-+ .num_leds = ARRAY_SIZE(wrt350n_v2_led_pins),
-+};
-+
-+static struct platform_device wrt350n_v2_leds = {
-+ .name = "leds-gpio",
-+ .id = -1,
-+ .dev = {
-+ .platform_data = &wrt350n_v2_led_data,
-+ },
-+};
-+
-+/*
-+ * Buttons attached to GPIO
-+ */
-+static struct gpio_keys_button wrt350n_v2_buttons[] = {
-+ {
-+ .code = KEY_RESTART,
-+ .gpio = 3,
-+ .desc = "Reset Button",
-+ .active_low = 1,
-+ }, {
-+ .code = KEY_WLAN,
-+ .gpio = 2,
-+ .desc = "WPS Button",
-+ .active_low = 1,
-+ },
-+};
-+
-+static struct gpio_keys_platform_data wrt350n_v2_button_data = {
-+ .buttons = wrt350n_v2_buttons,
-+ .nbuttons = ARRAY_SIZE(wrt350n_v2_buttons),
-+};
-+
-+static struct platform_device wrt350n_v2_button_device = {
-+ .name = "gpio-keys",
-+ .id = -1,
-+ .num_resources = 0,
-+ .dev = {
-+ .platform_data = &wrt350n_v2_button_data,
-+ },
-+};
-+
-+/*
-+ * General setup
-+ */
- static struct orion5x_mpp_mode wrt350n_v2_mpp_modes[] __initdata = {
- { 0, MPP_GPIO }, /* Power LED green (0=on) */
- { 1, MPP_GPIO }, /* Security LED (0=on) */
-@@ -140,6 +217,8 @@ static void __init wrt350n_v2_init(void)
- orion5x_setup_dev_boot_win(WRT350N_V2_NOR_BOOT_BASE,
- WRT350N_V2_NOR_BOOT_SIZE);
- platform_device_register(&wrt350n_v2_nor_flash);
-+ platform_device_register(&wrt350n_v2_button_device);
-+ platform_device_register(&wrt350n_v2_leds);
- }
-
- static int __init wrt350n_v2_pci_map_irq(struct pci_dev *dev, u8 slot, u8 pin)