|
@@ -0,0 +1,76 @@
|
|
|
|
|
+--- a/arch/mips/ath79/dev-wmac.c
|
|
|
|
|
++++ b/arch/mips/ath79/dev-wmac.c
|
|
|
|
|
+@@ -18,9 +18,11 @@
|
|
|
|
|
+ #include <linux/etherdevice.h>
|
|
|
|
|
+ #include <linux/platform_device.h>
|
|
|
|
|
+ #include <linux/ath9k_platform.h>
|
|
|
|
|
++#include <linux/gpio.h>
|
|
|
|
|
+
|
|
|
|
|
+ #include <asm/mach-ath79/ath79.h>
|
|
|
|
|
+ #include <asm/mach-ath79/ar71xx_regs.h>
|
|
|
|
|
++#include "common.h"
|
|
|
|
|
+ #include "dev-wmac.h"
|
|
|
|
|
+
|
|
|
|
|
+ static u8 ath79_wmac_mac[ETH_ALEN];
|
|
|
|
|
+@@ -311,6 +313,51 @@ void __init ath79_wmac_set_tx_gain_buffa
|
|
|
|
|
+ ath79_wmac_data.tx_gain_buffalo = true;
|
|
|
|
|
+ }
|
|
|
|
|
+
|
|
|
|
|
++static int ath79_request_ext_lna_gpio(unsigned chain, int gpio)
|
|
|
|
|
++{
|
|
|
|
|
++ char buf[32];
|
|
|
|
|
++ char *label;
|
|
|
|
|
++ int err;
|
|
|
|
|
++
|
|
|
|
|
++ scnprintf(buf, sizeof(buf), "external LNA%u", chain);
|
|
|
|
|
++ label = kstrdup(buf, GFP_KERNEL);
|
|
|
|
|
++
|
|
|
|
|
++ err = gpio_request_one(gpio, GPIOF_DIR_OUT | GPIOF_INIT_LOW, label);
|
|
|
|
|
++ if (err) {
|
|
|
|
|
++ pr_err("unable to request GPIO%d for external LNA%u\n",
|
|
|
|
|
++ gpio, chain);
|
|
|
|
|
++ kfree(label);
|
|
|
|
|
++ }
|
|
|
|
|
++
|
|
|
|
|
++ return err;
|
|
|
|
|
++}
|
|
|
|
|
++
|
|
|
|
|
++static void ar934x_set_ext_lna_gpio(unsigned chain, int gpio)
|
|
|
|
|
++{
|
|
|
|
|
++ unsigned int sel;
|
|
|
|
|
++ int err;
|
|
|
|
|
++
|
|
|
|
|
++ if (WARN_ON(chain > 1))
|
|
|
|
|
++ return;
|
|
|
|
|
++
|
|
|
|
|
++ err = ath79_request_ext_lna_gpio(chain, gpio);
|
|
|
|
|
++ if (err)
|
|
|
|
|
++ return;
|
|
|
|
|
++
|
|
|
|
|
++ if (chain == 0)
|
|
|
|
|
++ sel = AR934X_GPIO_OUT_EXT_LNA0;
|
|
|
|
|
++ else
|
|
|
|
|
++ sel = AR934X_GPIO_OUT_EXT_LNA1;
|
|
|
|
|
++
|
|
|
|
|
++ ath79_gpio_output_select(gpio, sel);
|
|
|
|
|
++}
|
|
|
|
|
++
|
|
|
|
|
++void __init ath79_wmac_set_ext_lna_gpio(unsigned chain, int gpio)
|
|
|
|
|
++{
|
|
|
|
|
++ if (soc_is_ar934x())
|
|
|
|
|
++ ar934x_set_ext_lna_gpio(chain, gpio);
|
|
|
|
|
++}
|
|
|
|
|
++
|
|
|
|
|
+ void __init ath79_register_wmac(u8 *cal_data, u8 *mac_addr)
|
|
|
|
|
+ {
|
|
|
|
|
+ if (soc_is_ar913x())
|
|
|
|
|
+--- a/arch/mips/ath79/dev-wmac.h
|
|
|
|
|
++++ b/arch/mips/ath79/dev-wmac.h
|
|
|
|
|
+@@ -17,6 +17,7 @@ void ath79_register_wmac_simple(void);
|
|
|
|
|
+ void ath79_wmac_disable_2ghz(void);
|
|
|
|
|
+ void ath79_wmac_disable_5ghz(void);
|
|
|
|
|
+ void ath79_wmac_set_tx_gain_buffalo(void);
|
|
|
|
|
++void ath79_wmac_set_ext_lna_gpio(unsigned chain, int gpio);
|
|
|
|
|
+
|
|
|
|
|
+ bool ar93xx_wmac_read_mac_address(u8 *dest);
|
|
|
|
|
+
|