|
|
@@ -33,6 +33,9 @@
|
|
|
#define TL_MR11U_GPIO_USB_POWER 8
|
|
|
#define TL_MR3040_GPIO_USB_POWER 18
|
|
|
|
|
|
+#define TL_MR3040_V2_GPIO_BTN_SW1 19
|
|
|
+#define TL_MR3040_V2_GPIO_BTN_SW2 20
|
|
|
+
|
|
|
#define TL_MR11U_KEYS_POLL_INTERVAL 20 /* msecs */
|
|
|
#define TL_MR11U_KEYS_DEBOUNCE_INTERVAL (3 * TL_MR11U_KEYS_POLL_INTERVAL)
|
|
|
|
|
|
@@ -82,6 +85,33 @@ static struct gpio_keys_button tl_mr11u_gpio_keys[] __initdata = {
|
|
|
},
|
|
|
};
|
|
|
|
|
|
+static struct gpio_keys_button tl_mr3040_v2_gpio_keys[] __initdata = {
|
|
|
+ {
|
|
|
+ .desc = "reset",
|
|
|
+ .type = EV_KEY,
|
|
|
+ .code = KEY_RESTART,
|
|
|
+ .debounce_interval = TL_MR11U_KEYS_DEBOUNCE_INTERVAL,
|
|
|
+ .gpio = TL_MR11U_GPIO_BTN_RESET,
|
|
|
+ .active_low = 0,
|
|
|
+ },
|
|
|
+ {
|
|
|
+ .desc = "sw1",
|
|
|
+ .type = EV_SW,
|
|
|
+ .code = BTN_0,
|
|
|
+ .debounce_interval = TL_MR11U_KEYS_DEBOUNCE_INTERVAL,
|
|
|
+ .gpio = TL_MR3040_V2_GPIO_BTN_SW1,
|
|
|
+ .active_low = 0,
|
|
|
+ },
|
|
|
+ {
|
|
|
+ .desc = "sw2",
|
|
|
+ .type = EV_SW,
|
|
|
+ .code = BTN_1,
|
|
|
+ .debounce_interval = TL_MR11U_KEYS_DEBOUNCE_INTERVAL,
|
|
|
+ .gpio = TL_MR3040_V2_GPIO_BTN_SW2,
|
|
|
+ .active_low = 0,
|
|
|
+ }
|
|
|
+};
|
|
|
+
|
|
|
static void __init common_setup(void)
|
|
|
{
|
|
|
u8 *mac = (u8 *) KSEG1ADDR(0x1f01fc00);
|
|
|
@@ -136,3 +166,18 @@ static void __init tl_mr3040_setup(void)
|
|
|
|
|
|
MIPS_MACHINE(ATH79_MACH_TL_MR3040, "TL-MR3040", "TP-LINK TL-MR3040",
|
|
|
tl_mr3040_setup);
|
|
|
+
|
|
|
+static void __init tl_mr3040_v2_setup(void)
|
|
|
+{
|
|
|
+ common_setup();
|
|
|
+
|
|
|
+ ath79_register_gpio_keys_polled(-1, TL_MR11U_KEYS_POLL_INTERVAL,
|
|
|
+ ARRAY_SIZE(tl_mr3040_v2_gpio_keys),
|
|
|
+ tl_mr3040_v2_gpio_keys);
|
|
|
+ gpio_request_one(TL_MR3040_GPIO_USB_POWER,
|
|
|
+ GPIOF_OUT_INIT_HIGH | GPIOF_EXPORT_DIR_FIXED,
|
|
|
+ "USB power");
|
|
|
+}
|
|
|
+
|
|
|
+MIPS_MACHINE(ATH79_MACH_TL_MR3040_V2, "TL-MR3040-v2", "TP-LINK TL-MR3040 v2",
|
|
|
+ tl_mr3040_v2_setup);
|