This patch adds support for the hardware slide switch on the TL-MR3040 v2. The 
patch also adds userspace support and fixes the image building code so that the 
kernel correctly distinguishes between hardware revisions.

Signed-off-by: Mads Hansen <[email protected]>

Index: trunk/target/linux/ar71xx/base-files/etc/uci-defaults/01_leds
===================================================================
--- trunk/target/linux/ar71xx/base-files/etc/uci-defaults/01_leds       
(revision 38121)
+++ trunk/target/linux/ar71xx/base-files/etc/uci-defaults/01_leds       
(working copy)
@@ -128,7 +128,8 @@
 
 tl-mr11u | \
 tl-mr3020 | \
-tl-mr3040)
+tl-mr3040 | \
+tl-mr3040-v2)
        ucidef_set_led_usbdev "usb" "USB" "tp-link:green:3g" "1-1"
        ucidef_set_led_wlan "wlan" "WLAN" "tp-link:green:wlan" "phy0tpt"
        ucidef_set_led_netdev "lan" "LAN" "tp-link:green:lan"  "eth0"
Index: trunk/target/linux/ar71xx/base-files/etc/uci-defaults/02_network
===================================================================
--- trunk/target/linux/ar71xx/base-files/etc/uci-defaults/02_network    
(revision 38121)
+++ trunk/target/linux/ar71xx/base-files/etc/uci-defaults/02_network    
(working copy)
@@ -225,6 +225,7 @@
 tl-mr13u |\
 tl-mr3020 |\
 tl-mr3040 |\
+tl-mr3040-v2 |\
 tl-wa901nd |\
 tl-wa901nd-v2 |\
 tl-wr703n |\
Index: trunk/target/linux/ar71xx/base-files/lib/ar71xx.sh
===================================================================
--- trunk/target/linux/ar71xx/base-files/lib/ar71xx.sh  (revision 38121)
+++ trunk/target/linux/ar71xx/base-files/lib/ar71xx.sh  (working copy)
@@ -423,6 +423,9 @@
        *TL-MR3040)
                name="tl-mr3040"
                ;;
+       *"TL-MR3040 v2")
+               name="tl-mr3040-v2"
+               ;;
        *TL-MR3220)
                name="tl-mr3220"
                ;;
Index: trunk/target/linux/ar71xx/base-files/lib/upgrade/platform.sh
===================================================================
--- trunk/target/linux/ar71xx/base-files/lib/upgrade/platform.sh        
(revision 38121)
+++ trunk/target/linux/ar71xx/base-files/lib/upgrade/platform.sh        
(working copy)
@@ -182,6 +182,7 @@
        tl-mr13u | \
        tl-mr3020 | \
        tl-mr3040 | \
+       tl-mr3040-v2 | \
        tl-mr3220 | \
        tl-mr3220-v2 | \
        tl-mr3420 | \
Index: trunk/target/linux/ar71xx/files/arch/mips/ath79/mach-tl-mr11u.c
===================================================================
--- trunk/target/linux/ar71xx/files/arch/mips/ath79/mach-tl-mr11u.c     
(revision 38121)
+++ trunk/target/linux/ar71xx/files/arch/mips/ath79/mach-tl-mr11u.c     
(working copy)
@@ -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_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_KEY,
+               .code           = BTN_0,
+               .debounce_interval = TL_MR11U_KEYS_DEBOUNCE_INTERVAL,
+               .gpio           = TL_MR3040_V2_GPIO_BTN_SW1,
+               .active_low     = 0,
+       },
+       {
+               .desc           = "sw2",
+               .type           = EV_KEY,
+               .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 @@
 
 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);
Index: trunk/target/linux/ar71xx/image/Makefile
===================================================================
--- trunk/target/linux/ar71xx/image/Makefile    (revision 38121)
+++ trunk/target/linux/ar71xx/image/Makefile    (working copy)
@@ -940,7 +940,7 @@
 $(eval $(call 
SingleProfile,TPLINK-LZMA,64kraw,TLMR13U,tl-mr13u-v1,TL-MR13U,ttyATH0,115200,0x00130101,1,4Mlzma))
 $(eval $(call 
SingleProfile,TPLINK-LZMA,64kraw,TLMR3020,tl-mr3020-v1,TL-MR3020,ttyATH0,115200,0x30200001,1,4Mlzma))
 $(eval $(call 
SingleProfile,TPLINK-LZMA,64kraw,TLMR3040V1,tl-mr3040-v1,TL-MR3040,ttyATH0,115200,0x30400001,1,4Mlzma))
-$(eval $(call 
SingleProfile,TPLINK-LZMA,64kraw,TLMR3040V2,tl-mr3040-v2,TL-MR3040,ttyATH0,115200,0x30400002,1,4Mlzma))
+$(eval $(call 
SingleProfile,TPLINK-LZMA,64kraw,TLMR3040V2,tl-mr3040-v2,TL-MR3040-v2,ttyATH0,115200,0x30400002,1,4Mlzma))
 $(eval $(call 
SingleProfile,TPLINK-LZMA,64kraw,TLMR3220V2,tl-mr3220-v2,TL-MR3220-v2,ttyATH0,115200,0x32200002,1,4Mlzma))
 $(eval $(call 
SingleProfile,TPLINK-LZMA,64kraw,TLMR3420V2,tl-mr3420-v2,TL-MR3420-v2,ttyS0,115200,0x34200002,1,4Mlzma))
 $(eval $(call 
SingleProfile,TPLINK-LZMA,64kraw,TLWR703,tl-wr703n-v1,TL-WR703N,ttyATH0,115200,0x07030101,1,4Mlzma))
_______________________________________________
openwrt-devel mailing list
[email protected]
https://lists.openwrt.org/cgi-bin/mailman/listinfo/openwrt-devel

Reply via email to