backfire: ar71xx: add helper function to setup ath9k LED/GPIO on the AP94 based board...
authorGabor Juhos <juhosg@openwrt.org>
Sat, 8 Jan 2011 10:17:49 +0000 (10:17 +0000)
committerGabor Juhos <juhosg@openwrt.org>
Sat, 8 Jan 2011 10:17:49 +0000 (10:17 +0000)
SVN-Revision: 24924

target/linux/ar71xx/files/arch/mips/ar71xx/dev-ap94-pci.c
target/linux/ar71xx/files/arch/mips/ar71xx/dev-ap94-pci.h
target/linux/ar71xx/files/arch/mips/ar71xx/mach-wndr3700.c

index e6be00a4d60dd6eb2e28bc5998e5b1f99ae857a3..4c2e1b2ca2427999175538e828e612a9f3cdc7db 100644 (file)
@@ -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,
index e69ba55e538d42f22d1741db13877cb18046d197..4584528981fe0090aa89f1a2ec9bdec3fbb203c1 100644 (file)
 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 */
index 62931e6a11ff87d508e8f2a374ff8a3009e87555..d2e322887ed9b4f48994987a909c76a19573b842 100644 (file)
@@ -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,