From 0c041daff462839f842d44872e2ee1060f5cac9d Mon Sep 17 00:00:00 2001 From: juhosg Date: Sat, 8 Jan 2011 10:17:49 +0000 Subject: [PATCH] backfire: ar71xx: add helper function to setup ath9k LED/GPIO on the AP94 based boards (backport of r24649, r24651) git-svn-id: svn://svn.openwrt.org/openwrt/branches/backfire@24924 3c298f89-4303-0410-b956-a3cf2f4a3e73 --- .../files/arch/mips/ar71xx/dev-ap94-pci.c | 33 ++++++++++++------- .../files/arch/mips/ar71xx/dev-ap94-pci.h | 7 ++-- .../files/arch/mips/ar71xx/mach-wndr3700.c | 10 +++++- 3 files changed, 36 insertions(+), 14 deletions(-) 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 e6be00a4d..4c2e1b2ca 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 @@ -129,19 +129,30 @@ static void ap94_pci_fixup(struct pci_dev *dev) } DECLARE_PCI_FIXUP_EARLY(PCI_VENDOR_ID_ATHEROS, PCI_ANY_ID, ap94_pci_fixup); -void __init ap94_pci_enable_quirk_wndr3700(void) +__init void ap94_pci_setup_wmac_led_pin(unsigned wmac, int pin) { - /* 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); + switch (wmac) { + case 0: + ap94_wmac0_data.led_pin = pin; + break; + case 1: + ap94_wmac1_data.led_pin = pin; + break; + } +} - 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); +__init void ap94_pci_setup_wmac_gpio(unsigned wmac, u32 mask, u32 val) +{ + switch (wmac) { + case 0: + ap94_wmac0_data.gpio_mask = mask; + ap94_wmac0_data.gpio_val = val; + break; + case 1: + ap94_wmac1_data.gpio_mask = mask; + ap94_wmac1_data.gpio_val = val; + break; + } } void __init ap94_pci_init(u8 *cal_data0, u8 *mac_addr0, diff --git a/target/linux/ar71xx/files/arch/mips/ar71xx/dev-ap94-pci.h b/target/linux/ar71xx/files/arch/mips/ar71xx/dev-ap94-pci.h index e69ba55e5..458452898 100644 --- a/target/linux/ar71xx/files/arch/mips/ar71xx/dev-ap94-pci.h +++ b/target/linux/ar71xx/files/arch/mips/ar71xx/dev-ap94-pci.h @@ -15,13 +15,16 @@ void ap94_pci_init(u8 *cal_data0, u8 *mac_addr0, u8 *cal_data1, u8 *mac_addr1) __init; -void ap94_pci_enable_quirk_wndr3700(void) __init; +void ap94_pci_setup_wmac_led_pin(unsigned wmac, int pin) __init; +void ap94_pci_setup_wmac_gpio(unsigned wmac, u32 mask, u32 val) __init; #else static inline void ap94_pci_init(u8 *cal_data0, u8 *mac_addr0, u8 *cal_data1, u8 *mac_addr1) {} -static inline void ap94_pci_enable_quirk_wndr3700(void) {} +static inline void ap94_pci_setup_wmac_led_pin(unsigned wmac, int pin) {} +static inline void ap94_pci_setup_wmac_gpio(unsigned wmac, + u32 mask, u32 val) {} #endif #endif /* _AR71XX_DEV_AP94_PCI_H */ diff --git a/target/linux/ar71xx/files/arch/mips/ar71xx/mach-wndr3700.c b/target/linux/ar71xx/files/arch/mips/ar71xx/mach-wndr3700.c index 62931e6a1..d2e322887 100644 --- a/target/linux/ar71xx/files/arch/mips/ar71xx/mach-wndr3700.c +++ b/target/linux/ar71xx/files/arch/mips/ar71xx/mach-wndr3700.c @@ -198,7 +198,15 @@ static void __init wndr3700_setup(void) platform_device_register(&wndr3700_rtl8366s_device); platform_device_register_simple("wndr3700-led-usb", -1, NULL, 0); - ap94_pci_enable_quirk_wndr3700(); + ap94_pci_setup_wmac_led_pin(0, 5); + ap94_pci_setup_wmac_led_pin(1, 5); + + /* 2.4 GHz uses the first fixed antenna group (1, 0, 1, 0) */ + ap94_pci_setup_wmac_gpio(0, (0xf << 6), (0xa << 6)); + + /* 5 GHz uses the second fixed antenna group (0, 1, 1, 0) */ + ap94_pci_setup_wmac_gpio(1, (0xf << 6), (0x6 << 6)); + ap94_pci_init(art + WNDR3700_CALDATA0_OFFSET, art + WNDR3700_WMAC0_MAC_OFFSET, art + WNDR3700_CALDATA1_OFFSET, -- 2.35.1