12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576 |
- --- 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];
- @@ -313,6 +315,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 *label;
- + int err;
- +
- + label = kasprintf(GFP_KERNEL, "external LNA%u", chain);
- + if (!label)
- + return -ENOMEM;
- +
- + 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);
-
|