aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/net/wireless/rt2x00/rt73usb.c
diff options
context:
space:
mode:
authorIvo van Doorn <ivdoorn@gmail.com>2008-12-20 04:55:57 -0500
committerJohn W. Linville <linville@tuxdriver.com>2009-01-29 15:58:37 -0500
commit7396faf4f3228b88c6c815c7a93081b456716d5f (patch)
tree86eeb5aa85d0300cbfea04ac6d2e14ce7528c04b /drivers/net/wireless/rt2x00/rt73usb.c
parenta07dbea210e146aedf8929cdabe082b58696260c (diff)
rt2x00: Add RFKILL support to rt2500usb and rt73usb
Some very rare Ralink USB hardware exists which features the RFKILL switch on the USB stick. This patch adds the EEPROM check function to see if RFKILL is supported and the polling function to rt2500usb and rt73usb in order to support RFKILL for that hardware. Signed-off-by: Ivo van Doorn <IvDoorn@gmail.com> Signed-off-by: John W. Linville <linville@tuxdriver.com>
Diffstat (limited to 'drivers/net/wireless/rt2x00/rt73usb.c')
-rw-r--r--drivers/net/wireless/rt2x00/rt73usb.c21
1 files changed, 21 insertions, 0 deletions
diff --git a/drivers/net/wireless/rt2x00/rt73usb.c b/drivers/net/wireless/rt2x00/rt73usb.c
index e99bcacfc191..c2658108d9c3 100644
--- a/drivers/net/wireless/rt2x00/rt73usb.c
+++ b/drivers/net/wireless/rt2x00/rt73usb.c
@@ -186,6 +186,18 @@ static const struct rt2x00debug rt73usb_rt2x00debug = {
186}; 186};
187#endif /* CONFIG_RT2X00_LIB_DEBUGFS */ 187#endif /* CONFIG_RT2X00_LIB_DEBUGFS */
188 188
189#ifdef CONFIG_RT2X00_LIB_RFKILL
190static int rt73usb_rfkill_poll(struct rt2x00_dev *rt2x00dev)
191{
192 u32 reg;
193
194 rt2x00usb_register_read(rt2x00dev, MAC_CSR13, &reg);
195 return rt2x00_get_field32(reg, MAC_CSR13_BIT7);
196}
197#else
198#define rt73usb_rfkill_poll NULL
199#endif /* CONFIG_RT2X00_LIB_RFKILL */
200
189#ifdef CONFIG_RT2X00_LIB_LEDS 201#ifdef CONFIG_RT2X00_LIB_LEDS
190static void rt73usb_brightness_set(struct led_classdev *led_cdev, 202static void rt73usb_brightness_set(struct led_classdev *led_cdev,
191 enum led_brightness brightness) 203 enum led_brightness brightness)
@@ -1853,6 +1865,14 @@ static int rt73usb_init_eeprom(struct rt2x00_dev *rt2x00dev)
1853 __set_bit(CONFIG_FRAME_TYPE, &rt2x00dev->flags); 1865 __set_bit(CONFIG_FRAME_TYPE, &rt2x00dev->flags);
1854 1866
1855 /* 1867 /*
1868 * Detect if this device has an hardware controlled radio.
1869 */
1870#ifdef CONFIG_RT2X00_LIB_RFKILL
1871 if (rt2x00_get_field16(eeprom, EEPROM_ANTENNA_HARDWARE_RADIO))
1872 __set_bit(CONFIG_SUPPORT_HW_BUTTON, &rt2x00dev->flags);
1873#endif /* CONFIG_RT2X00_LIB_RFKILL */
1874
1875 /*
1856 * Read frequency offset. 1876 * Read frequency offset.
1857 */ 1877 */
1858 rt2x00_eeprom_read(rt2x00dev, EEPROM_FREQ, &eeprom); 1878 rt2x00_eeprom_read(rt2x00dev, EEPROM_FREQ, &eeprom);
@@ -2257,6 +2277,7 @@ static const struct rt2x00lib_ops rt73usb_rt2x00_ops = {
2257 .uninitialize = rt2x00usb_uninitialize, 2277 .uninitialize = rt2x00usb_uninitialize,
2258 .clear_entry = rt2x00usb_clear_entry, 2278 .clear_entry = rt2x00usb_clear_entry,
2259 .set_device_state = rt73usb_set_device_state, 2279 .set_device_state = rt73usb_set_device_state,
2280 .rfkill_poll = rt73usb_rfkill_poll,
2260 .link_stats = rt73usb_link_stats, 2281 .link_stats = rt73usb_link_stats,
2261 .reset_tuner = rt73usb_reset_tuner, 2282 .reset_tuner = rt73usb_reset_tuner,
2262 .link_tuner = rt73usb_link_tuner, 2283 .link_tuner = rt73usb_link_tuner,