aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--drivers/net/wireless/rt2x00/rt2400pci.c6
-rw-r--r--drivers/net/wireless/rt2x00/rt2500pci.c6
-rw-r--r--drivers/net/wireless/rt2x00/rt2x00.h2
-rw-r--r--drivers/net/wireless/rt2x00/rt2x00dev.c3
-rw-r--r--drivers/net/wireless/rt2x00/rt2x00lib.h10
-rw-r--r--drivers/net/wireless/rt2x00/rt2x00rfkill.c4
-rw-r--r--drivers/net/wireless/rt2x00/rt61pci.c6
7 files changed, 18 insertions, 19 deletions
diff --git a/drivers/net/wireless/rt2x00/rt2400pci.c b/drivers/net/wireless/rt2x00/rt2400pci.c
index e3cac0f26d7b..28999ffaba2e 100644
--- a/drivers/net/wireless/rt2x00/rt2400pci.c
+++ b/drivers/net/wireless/rt2x00/rt2400pci.c
@@ -244,6 +244,8 @@ static int rt2400pci_rfkill_poll(struct rt2x00_dev *rt2x00dev)
244 rt2x00pci_register_read(rt2x00dev, GPIOCSR, &reg); 244 rt2x00pci_register_read(rt2x00dev, GPIOCSR, &reg);
245 return rt2x00_get_field32(reg, GPIOCSR_BIT0); 245 return rt2x00_get_field32(reg, GPIOCSR_BIT0);
246} 246}
247#else
248#define rt2400pci_rfkill_poll NULL
247#endif /* CONFIG_RT2400PCI_RFKILL */ 249#endif /* CONFIG_RT2400PCI_RFKILL */
248 250
249/* 251/*
@@ -1359,8 +1361,10 @@ static int rt2400pci_init_eeprom(struct rt2x00_dev *rt2x00dev)
1359 /* 1361 /*
1360 * Detect if this device has an hardware controlled radio. 1362 * Detect if this device has an hardware controlled radio.
1361 */ 1363 */
1364#ifdef CONFIG_RT2400PCI_RFKILL
1362 if (rt2x00_get_field16(eeprom, EEPROM_ANTENNA_HARDWARE_RADIO)) 1365 if (rt2x00_get_field16(eeprom, EEPROM_ANTENNA_HARDWARE_RADIO))
1363 __set_bit(CONFIG_SUPPORT_HW_BUTTON, &rt2x00dev->flags); 1366 __set_bit(CONFIG_SUPPORT_HW_BUTTON, &rt2x00dev->flags);
1367#endif /* CONFIG_RT2400PCI_RFKILL */
1364 1368
1365 /* 1369 /*
1366 * Check if the BBP tuning should be enabled. 1370 * Check if the BBP tuning should be enabled.
@@ -1625,9 +1629,7 @@ static const struct rt2x00lib_ops rt2400pci_rt2x00_ops = {
1625 .initialize = rt2x00pci_initialize, 1629 .initialize = rt2x00pci_initialize,
1626 .uninitialize = rt2x00pci_uninitialize, 1630 .uninitialize = rt2x00pci_uninitialize,
1627 .set_device_state = rt2400pci_set_device_state, 1631 .set_device_state = rt2400pci_set_device_state,
1628#ifdef CONFIG_RT2400PCI_RFKILL
1629 .rfkill_poll = rt2400pci_rfkill_poll, 1632 .rfkill_poll = rt2400pci_rfkill_poll,
1630#endif /* CONFIG_RT2400PCI_RFKILL */
1631 .link_stats = rt2400pci_link_stats, 1633 .link_stats = rt2400pci_link_stats,
1632 .reset_tuner = rt2400pci_reset_tuner, 1634 .reset_tuner = rt2400pci_reset_tuner,
1633 .link_tuner = rt2400pci_link_tuner, 1635 .link_tuner = rt2400pci_link_tuner,
diff --git a/drivers/net/wireless/rt2x00/rt2500pci.c b/drivers/net/wireless/rt2x00/rt2500pci.c
index 5d982316b854..9d9b4377a6f2 100644
--- a/drivers/net/wireless/rt2x00/rt2500pci.c
+++ b/drivers/net/wireless/rt2x00/rt2500pci.c
@@ -244,6 +244,8 @@ static int rt2500pci_rfkill_poll(struct rt2x00_dev *rt2x00dev)
244 rt2x00pci_register_read(rt2x00dev, GPIOCSR, &reg); 244 rt2x00pci_register_read(rt2x00dev, GPIOCSR, &reg);
245 return rt2x00_get_field32(reg, GPIOCSR_BIT0); 245 return rt2x00_get_field32(reg, GPIOCSR_BIT0);
246} 246}
247#else
248#define rt2500pci_rfkill_poll NULL
247#endif /* CONFIG_RT2500PCI_RFKILL */ 249#endif /* CONFIG_RT2500PCI_RFKILL */
248 250
249/* 251/*
@@ -1530,8 +1532,10 @@ static int rt2500pci_init_eeprom(struct rt2x00_dev *rt2x00dev)
1530 /* 1532 /*
1531 * Detect if this device has an hardware controlled radio. 1533 * Detect if this device has an hardware controlled radio.
1532 */ 1534 */
1535#ifdef CONFIG_RT2500PCI_RFKILL
1533 if (rt2x00_get_field16(eeprom, EEPROM_ANTENNA_HARDWARE_RADIO)) 1536 if (rt2x00_get_field16(eeprom, EEPROM_ANTENNA_HARDWARE_RADIO))
1534 __set_bit(CONFIG_SUPPORT_HW_BUTTON, &rt2x00dev->flags); 1537 __set_bit(CONFIG_SUPPORT_HW_BUTTON, &rt2x00dev->flags);
1538#endif /* CONFIG_RT2500PCI_RFKILL */
1535 1539
1536 /* 1540 /*
1537 * Check if the BBP tuning should be enabled. 1541 * Check if the BBP tuning should be enabled.
@@ -1937,9 +1941,7 @@ static const struct rt2x00lib_ops rt2500pci_rt2x00_ops = {
1937 .initialize = rt2x00pci_initialize, 1941 .initialize = rt2x00pci_initialize,
1938 .uninitialize = rt2x00pci_uninitialize, 1942 .uninitialize = rt2x00pci_uninitialize,
1939 .set_device_state = rt2500pci_set_device_state, 1943 .set_device_state = rt2500pci_set_device_state,
1940#ifdef CONFIG_RT2500PCI_RFKILL
1941 .rfkill_poll = rt2500pci_rfkill_poll, 1944 .rfkill_poll = rt2500pci_rfkill_poll,
1942#endif /* CONFIG_RT2500PCI_RFKILL */
1943 .link_stats = rt2500pci_link_stats, 1945 .link_stats = rt2500pci_link_stats,
1944 .reset_tuner = rt2500pci_reset_tuner, 1946 .reset_tuner = rt2500pci_reset_tuner,
1945 .link_tuner = rt2500pci_link_tuner, 1947 .link_tuner = rt2500pci_link_tuner,
diff --git a/drivers/net/wireless/rt2x00/rt2x00.h b/drivers/net/wireless/rt2x00/rt2x00.h
index 9bb5fb964a21..235e5ad21908 100644
--- a/drivers/net/wireless/rt2x00/rt2x00.h
+++ b/drivers/net/wireless/rt2x00/rt2x00.h
@@ -451,7 +451,7 @@ enum rt2x00_flags {
451 DEVICE_STARTED, 451 DEVICE_STARTED,
452 DEVICE_STARTED_SUSPEND, 452 DEVICE_STARTED_SUSPEND,
453 DEVICE_ENABLED_RADIO, 453 DEVICE_ENABLED_RADIO,
454 DEVICE_ENABLED_RADIO_HW, 454 DEVICE_DISABLED_RADIO_HW,
455 455
456 /* 456 /*
457 * Driver features 457 * Driver features
diff --git a/drivers/net/wireless/rt2x00/rt2x00dev.c b/drivers/net/wireless/rt2x00/rt2x00dev.c
index 1e07c3938cb3..6dc4f63aef0a 100644
--- a/drivers/net/wireless/rt2x00/rt2x00dev.c
+++ b/drivers/net/wireless/rt2x00/rt2x00dev.c
@@ -104,8 +104,7 @@ int rt2x00lib_enable_radio(struct rt2x00_dev *rt2x00dev)
104 * And check if the hardware button has been disabled. 104 * And check if the hardware button has been disabled.
105 */ 105 */
106 if (test_bit(DEVICE_ENABLED_RADIO, &rt2x00dev->flags) || 106 if (test_bit(DEVICE_ENABLED_RADIO, &rt2x00dev->flags) ||
107 (test_bit(CONFIG_SUPPORT_HW_BUTTON, &rt2x00dev->flags) && 107 test_bit(DEVICE_DISABLED_RADIO_HW, &rt2x00dev->flags))
108 !test_bit(DEVICE_ENABLED_RADIO_HW, &rt2x00dev->flags)))
109 return 0; 108 return 0;
110 109
111 /* 110 /*
diff --git a/drivers/net/wireless/rt2x00/rt2x00lib.h b/drivers/net/wireless/rt2x00/rt2x00lib.h
index 6dd92eb2b223..0ab39cad3cc8 100644
--- a/drivers/net/wireless/rt2x00/rt2x00lib.h
+++ b/drivers/net/wireless/rt2x00/rt2x00lib.h
@@ -28,9 +28,10 @@
28 28
29/* 29/*
30 * Interval defines 30 * Interval defines
31 * Both the link tuner as the rfkill will be called once per second.
31 */ 32 */
32#define LINK_TUNE_INTERVAL ( round_jiffies(HZ) ) 33#define LINK_TUNE_INTERVAL ( round_jiffies(HZ) )
33#define RFKILL_POLL_INTERVAL ( HZ / 4 ) 34#define RFKILL_POLL_INTERVAL ( 1000 )
34 35
35/* 36/*
36 * Radio control handlers. 37 * Radio control handlers.
@@ -98,13 +99,6 @@ void rt2x00rfkill_free(struct rt2x00_dev *rt2x00dev);
98#else 99#else
99static inline int rt2x00rfkill_register(struct rt2x00_dev *rt2x00dev) 100static inline int rt2x00rfkill_register(struct rt2x00_dev *rt2x00dev)
100{ 101{
101 /*
102 * Force enable this flag, this will assure that
103 * devices with a hardware button but without rfkill support
104 * can still use their hardware.
105 */
106 __set_bit(DEVICE_ENABLED_RADIO_HW, &rt2x00dev->flags);
107
108 return 0; 102 return 0;
109} 103}
110 104
diff --git a/drivers/net/wireless/rt2x00/rt2x00rfkill.c b/drivers/net/wireless/rt2x00/rt2x00rfkill.c
index 06af01451cde..a0f8b8e0a24b 100644
--- a/drivers/net/wireless/rt2x00/rt2x00rfkill.c
+++ b/drivers/net/wireless/rt2x00/rt2x00rfkill.c
@@ -52,11 +52,11 @@ static int rt2x00rfkill_toggle_radio(void *data, enum rfkill_state state)
52 52
53 if (state == RFKILL_STATE_ON) { 53 if (state == RFKILL_STATE_ON) {
54 INFO(rt2x00dev, "Hardware button pressed, enabling radio.\n"); 54 INFO(rt2x00dev, "Hardware button pressed, enabling radio.\n");
55 __set_bit(DEVICE_ENABLED_RADIO_HW, &rt2x00dev->flags); 55 __clear_bit(DEVICE_DISABLED_RADIO_HW, &rt2x00dev->flags);
56 retval = rt2x00lib_enable_radio(rt2x00dev); 56 retval = rt2x00lib_enable_radio(rt2x00dev);
57 } else if (state == RFKILL_STATE_OFF) { 57 } else if (state == RFKILL_STATE_OFF) {
58 INFO(rt2x00dev, "Hardware button pressed, disabling radio.\n"); 58 INFO(rt2x00dev, "Hardware button pressed, disabling radio.\n");
59 __clear_bit(DEVICE_ENABLED_RADIO_HW, &rt2x00dev->flags); 59 __set_bit(DEVICE_DISABLED_RADIO_HW, &rt2x00dev->flags);
60 rt2x00lib_disable_radio(rt2x00dev); 60 rt2x00lib_disable_radio(rt2x00dev);
61 } 61 }
62 62
diff --git a/drivers/net/wireless/rt2x00/rt61pci.c b/drivers/net/wireless/rt2x00/rt61pci.c
index 588b22b16419..1c3937a3f9dc 100644
--- a/drivers/net/wireless/rt2x00/rt61pci.c
+++ b/drivers/net/wireless/rt2x00/rt61pci.c
@@ -269,6 +269,8 @@ static int rt61pci_rfkill_poll(struct rt2x00_dev *rt2x00dev)
269 rt2x00pci_register_read(rt2x00dev, MAC_CSR13, &reg); 269 rt2x00pci_register_read(rt2x00dev, MAC_CSR13, &reg);
270 return rt2x00_get_field32(reg, MAC_CSR13_BIT5);; 270 return rt2x00_get_field32(reg, MAC_CSR13_BIT5);;
271} 271}
272#else
273#define rt61pci_rfkill_poll NULL
272#endif /* CONFIG_RT61PCI_RFKILL */ 274#endif /* CONFIG_RT61PCI_RFKILL */
273 275
274/* 276/*
@@ -2090,8 +2092,10 @@ static int rt61pci_init_eeprom(struct rt2x00_dev *rt2x00dev)
2090 /* 2092 /*
2091 * Detect if this device has an hardware controlled radio. 2093 * Detect if this device has an hardware controlled radio.
2092 */ 2094 */
2095#ifdef CONFIG_RT61PCI_RFKILL
2093 if (rt2x00_get_field16(eeprom, EEPROM_ANTENNA_HARDWARE_RADIO)) 2096 if (rt2x00_get_field16(eeprom, EEPROM_ANTENNA_HARDWARE_RADIO))
2094 __set_bit(CONFIG_SUPPORT_HW_BUTTON, &rt2x00dev->flags); 2097 __set_bit(CONFIG_SUPPORT_HW_BUTTON, &rt2x00dev->flags);
2098#endif /* CONFIG_RT61PCI_RFKILL */
2095 2099
2096 /* 2100 /*
2097 * Read frequency offset and RF programming sequence. 2101 * Read frequency offset and RF programming sequence.
@@ -2531,9 +2535,7 @@ static const struct rt2x00lib_ops rt61pci_rt2x00_ops = {
2531 .initialize = rt2x00pci_initialize, 2535 .initialize = rt2x00pci_initialize,
2532 .uninitialize = rt2x00pci_uninitialize, 2536 .uninitialize = rt2x00pci_uninitialize,
2533 .set_device_state = rt61pci_set_device_state, 2537 .set_device_state = rt61pci_set_device_state,
2534#ifdef CONFIG_RT61PCI_RFKILL
2535 .rfkill_poll = rt61pci_rfkill_poll, 2538 .rfkill_poll = rt61pci_rfkill_poll,
2536#endif /* CONFIG_RT61PCI_RFKILL */
2537 .link_stats = rt61pci_link_stats, 2539 .link_stats = rt61pci_link_stats,
2538 .reset_tuner = rt61pci_reset_tuner, 2540 .reset_tuner = rt61pci_reset_tuner,
2539 .link_tuner = rt61pci_link_tuner, 2541 .link_tuner = rt61pci_link_tuner,