ar71xx: add helper function to setup ath9k LED/GPIO on the AP94 based boards

SVN-Revision: 24649
This commit is contained in:
Gabor Juhos 2010-12-17 17:10:19 +00:00
parent e7ea6387a3
commit c1d3a23d19
3 changed files with 36 additions and 14 deletions

View file

@ -54,19 +54,30 @@ static int ap94_pci_plat_dev_init(struct pci_dev *dev)
return 0; return 0;
} }
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 */ switch (wmac) {
case 0:
ap94_wmac0_data.led_pin = pin;
break;
case 1:
ap94_wmac1_data.led_pin = pin;
break;
}
}
ap94_wmac0_data.led_pin = 5; __init void ap94_pci_setup_wmac_gpio(unsigned wmac, u32 mask, u32 val)
ap94_wmac0_data.gpio_mask = (0xf << 6); {
/* 2.4 GHz uses the first fixed antenna group (0, 1, 0, 1) */ switch (wmac) {
ap94_wmac0_data.gpio_val = (10 << 6); case 0:
ap94_wmac0_data.gpio_mask = mask;
ap94_wmac1_data.led_pin = 5; ap94_wmac0_data.gpio_val = val;
ap94_wmac1_data.gpio_mask = (0xf << 6); break;
/* 5 GHz uses the second fixed antenna group (0, 1, 1, 0) */ case 1:
ap94_wmac1_data.gpio_val = (6 << 6); ap94_wmac1_data.gpio_mask = mask;
ap94_wmac1_data.gpio_val = val;
break;
}
} }
void __init ap94_pci_init(u8 *cal_data0, u8 *mac_addr0, void __init ap94_pci_init(u8 *cal_data0, u8 *mac_addr0,

View file

@ -15,13 +15,16 @@
void ap94_pci_init(u8 *cal_data0, u8 *mac_addr0, void ap94_pci_init(u8 *cal_data0, u8 *mac_addr0,
u8 *cal_data1, u8 *mac_addr1) __init; 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 #else
static inline void ap94_pci_init(u8 *cal_data0, u8 *mac_addr0, static inline void ap94_pci_init(u8 *cal_data0, u8 *mac_addr0,
u8 *cal_data1, u8 *mac_addr1) {} 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
#endif /* _AR71XX_DEV_AP94_PCI_H */ #endif /* _AR71XX_DEV_AP94_PCI_H */

View file

@ -203,7 +203,15 @@ static void __init wndr3700_setup(void)
platform_device_register(&wndr3700_rtl8366s_device); platform_device_register(&wndr3700_rtl8366s_device);
platform_device_register_simple("wndr3700-led-usb", -1, NULL, 0); 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, ap94_pci_init(art + WNDR3700_CALDATA0_OFFSET,
art + WNDR3700_WMAC0_MAC_OFFSET, art + WNDR3700_WMAC0_MAC_OFFSET,
art + WNDR3700_CALDATA1_OFFSET, art + WNDR3700_CALDATA1_OFFSET,