From: juhosg Date: Sat, 8 Jan 2011 10:17:35 +0000 (+0000) Subject: backfire: ar71xx: improve the wndr3700 quirks (backport of r23822, r23875) X-Git-Url: http://git.archive.openwrt.org/?a=commitdiff_plain;h=e21f26857bd6564e1395ae4ba09a40767f6ec535;p=10.03%2Fopenwrt.git backfire: ar71xx: improve the wndr3700 quirks (backport of r23822, r23875) - move most of the code out of ath9k and instead allow the platform device to specify gpio overrides - fixes 5ghz signal strength issues git-svn-id: svn://svn.openwrt.org/openwrt/branches/backfire@24921 3c298f89-4303-0410-b956-a3cf2f4a3e73 --- diff --git a/target/linux/ar71xx/files/arch/mips/ar71xx/dev-ap91-pci.c b/target/linux/ar71xx/files/arch/mips/ar71xx/dev-ap91-pci.c index e81a01aba..4bee3bfe1 100644 --- a/target/linux/ar71xx/files/arch/mips/ar71xx/dev-ap91-pci.c +++ b/target/linux/ar71xx/files/arch/mips/ar71xx/dev-ap91-pci.c @@ -17,7 +17,9 @@ #include "dev-ap91-pci.h" -static struct ath9k_platform_data ap91_wmac_data; +static struct ath9k_platform_data ap91_wmac_data = { + .led_pin = -1, +}; static char ap91_wmac_mac[6]; static int ap91_pci_fixup_enabled; diff --git a/target/linux/ar71xx/files/arch/mips/ar71xx/dev-ap94-pci.c b/target/linux/ar71xx/files/arch/mips/ar71xx/dev-ap94-pci.c index bfa668f74..e6be00a4d 100644 --- a/target/linux/ar71xx/files/arch/mips/ar71xx/dev-ap94-pci.c +++ b/target/linux/ar71xx/files/arch/mips/ar71xx/dev-ap94-pci.c @@ -17,8 +17,12 @@ #include "dev-ap94-pci.h" -static struct ath9k_platform_data ap94_wmac0_data; -static struct ath9k_platform_data ap94_wmac1_data; +static struct ath9k_platform_data ap94_wmac0_data = { + .led_pin = -1, +}; +static struct ath9k_platform_data ap94_wmac1_data = { + .led_pin = -1, +}; static char ap94_wmac0_mac[6]; static char ap94_wmac1_mac[6]; static int ap94_pci_fixup_enabled; @@ -127,8 +131,17 @@ DECLARE_PCI_FIXUP_EARLY(PCI_VENDOR_ID_ATHEROS, PCI_ANY_ID, ap94_pci_fixup); void __init ap94_pci_enable_quirk_wndr3700(void) { - ap94_wmac0_data.quirk_wndr3700 = 1; - ap94_wmac1_data.quirk_wndr3700 = 1; + /* WNDR3700 uses GPIO 6-9 for antenna configuration */ + + ap94_wmac0_data.led_pin = 5; + ap94_wmac0_data.gpio_mask = (0xf << 6); + /* 2.4 GHz uses the first fixed antenna group (0, 1, 0, 1) */ + ap94_wmac0_data.gpio_val = (10 << 6); + + ap94_wmac1_data.led_pin = 5; + ap94_wmac1_data.gpio_mask = (0xf << 6); + /* 5 GHz uses the second fixed antenna group (0, 1, 1, 0) */ + ap94_wmac1_data.gpio_val = (6 << 6); } void __init ap94_pci_init(u8 *cal_data0, u8 *mac_addr0, diff --git a/target/linux/ar71xx/files/arch/mips/ar71xx/dev-ar913x-wmac.c b/target/linux/ar71xx/files/arch/mips/ar71xx/dev-ar913x-wmac.c index 024d29044..7840ff9c5 100644 --- a/target/linux/ar71xx/files/arch/mips/ar71xx/dev-ar913x-wmac.c +++ b/target/linux/ar71xx/files/arch/mips/ar71xx/dev-ar913x-wmac.c @@ -22,7 +22,9 @@ #include "dev-ar913x-wmac.h" -static struct ath9k_platform_data ar913x_wmac_data; +static struct ath9k_platform_data ar913x_wmac_data = { + .led_pin = -1, +}; static char ar913x_wmac_mac[6]; static struct resource ar913x_wmac_resources[] = { diff --git a/target/linux/ar71xx/files/include/linux/ath9k_platform.h b/target/linux/ar71xx/files/include/linux/ath9k_platform.h index 3c2201202..020387a11 100644 --- a/target/linux/ar71xx/files/include/linux/ath9k_platform.h +++ b/target/linux/ar71xx/files/include/linux/ath9k_platform.h @@ -1,11 +1,19 @@ /* - * ath9k platform data defines + * Copyright (c) 2008 Atheros Communications Inc. + * Copyright (c) 2009 Gabor Juhos + * Copyright (c) 2009 Imre Kaloz * - * Copyright (C) 2008 Gabor Juhos + * Permission to use, copy, modify, and/or distribute this software for any + * purpose with or without fee is hereby granted, provided that the above + * copyright notice and this permission notice appear in all copies. * - * This program is free software; you can redistribute it and/or modify it - * under the terms of the GNU General Public License version 2 as published - * by the Free Software Foundation. + * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES + * WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF + * MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR + * ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES + * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN + * ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF + * OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. */ #ifndef _LINUX_ATH9K_PLATFORM_H @@ -17,7 +25,9 @@ struct ath9k_platform_data { u16 eeprom_data[ATH9K_PLAT_EEP_MAX_WORDS]; u8 *macaddr; - unsigned long quirk_wndr3700:1; + int led_pin; + u32 gpio_mask; + u32 gpio_val; }; #endif /* _LINUX_ATH9K_PLATFORM_H */