ar71xx: Fix WD My Net N600 weak signal issue
authorGabor Juhos <juhosg@openwrt.org>
Fri, 10 Jan 2014 09:07:12 +0000 (09:07 +0000)
committerGabor Juhos <juhosg@openwrt.org>
Fri, 10 Jan 2014 09:07:12 +0000 (09:07 +0000)
The LNAs need to be enabled by setting their respective GPIO to high even
though the original firmware's setting sets them to low on initialization.

Obviously the LNAs are then later initialized by the driver on the OEM
firmware. Without this fix the device is mostly "deaf".

Signed-off-by: Felix Kaechele <heffer@fedoraproject.org>
Tested-by: Steven Haigh <netwiz@crc.id.au>
Patchwork: http://patchwork.openwrt.org/patch/4689/
[juhosg:
  - remove the GPIO LED changes, the My Net N600 has no yellow LEDs at all,
  - change subject and update the commit message]
Signed-off-by: Gabor Juhos <juhosg@openwrt.org>
SVN-Revision: 39214

target/linux/ar71xx/files/arch/mips/ath79/mach-mynet-n600.c

index 476cff8d2e5d104fc34c32de86f790eb014d8159..9e785ca163a11d3cbef2f8c24d687fbf9c3efc6f 100644 (file)
@@ -42,6 +42,9 @@
 #define MYNET_N600_GPIO_BTN_RESET      16
 #define MYNET_N600_GPIO_BTN_WPS                17
 
+#define MYNET_N600_GPIO_EXTERNAL_LNA0  14
+#define MYNET_N600_GPIO_EXTERNAL_LNA1  15
+
 #define MYNET_N600_KEYS_POLL_INTERVAL  20      /* msecs */
 #define MYNET_N600_KEYS_DEBOUNCE_INTERVAL (3 * MYNET_N600_KEYS_POLL_INTERVAL)
 
@@ -152,6 +155,18 @@ static void __init mynet_n600_setup(void)
                                        ARRAY_SIZE(mynet_n600_gpio_keys),
                                        mynet_n600_gpio_keys);
 
+       /*
+        * Control signal for external LNAs 0 and 1
+        * Taken from GPL bootloader source:
+        *   board/ar7240/db12x/alpha_gpio.c
+        */
+       gpio_request_one(MYNET_N600_GPIO_EXTERNAL_LNA0,
+                        GPIOF_OUT_INIT_HIGH | GPIOF_EXPORT_DIR_FIXED,
+                        "External LNA0");
+       gpio_request_one(MYNET_N600_GPIO_EXTERNAL_LNA1,
+                        GPIOF_OUT_INIT_HIGH | GPIOF_EXPORT_DIR_FIXED,
+                        "External LNA1");
+
        mynet_n600_get_mac("wlan24mac=", tmpmac);
        ath79_register_wmac(art + MYNET_N600_WMAC_CALDATA_OFFSET, tmpmac);