diff options
-rw-r--r-- | drivers/net/wireless/rt2x00/rt2400pci.c | 6 | ||||
-rw-r--r-- | drivers/net/wireless/rt2x00/rt2500pci.c | 6 | ||||
-rw-r--r-- | drivers/net/wireless/rt2x00/rt2x00.h | 2 | ||||
-rw-r--r-- | drivers/net/wireless/rt2x00/rt2x00dev.c | 3 | ||||
-rw-r--r-- | drivers/net/wireless/rt2x00/rt2x00lib.h | 10 | ||||
-rw-r--r-- | drivers/net/wireless/rt2x00/rt2x00rfkill.c | 4 | ||||
-rw-r--r-- | drivers/net/wireless/rt2x00/rt61pci.c | 6 |
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, ®); | 244 | rt2x00pci_register_read(rt2x00dev, GPIOCSR, ®); |
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, ®); | 244 | rt2x00pci_register_read(rt2x00dev, GPIOCSR, ®); |
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 |
99 | static inline int rt2x00rfkill_register(struct rt2x00_dev *rt2x00dev) | 100 | static 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, ®); | 269 | rt2x00pci_register_read(rt2x00dev, MAC_CSR13, ®); |
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, |