diff options
Diffstat (limited to 'drivers/net/wireless/rt2x00/rt61pci.c')
-rw-r--r-- | drivers/net/wireless/rt2x00/rt61pci.c | 64 |
1 files changed, 41 insertions, 23 deletions
diff --git a/drivers/net/wireless/rt2x00/rt61pci.c b/drivers/net/wireless/rt2x00/rt61pci.c index c5c625143335..1cb056be4489 100644 --- a/drivers/net/wireless/rt2x00/rt61pci.c +++ b/drivers/net/wireless/rt2x00/rt61pci.c | |||
@@ -277,7 +277,7 @@ static int rt61pci_rfkill_poll(struct rt2x00_dev *rt2x00dev) | |||
277 | #endif /* CONFIG_RT61PCI_RFKILL */ | 277 | #endif /* CONFIG_RT61PCI_RFKILL */ |
278 | 278 | ||
279 | #ifdef CONFIG_RT61PCI_LEDS | 279 | #ifdef CONFIG_RT61PCI_LEDS |
280 | static void rt61pci_led_brightness(struct led_classdev *led_cdev, | 280 | static void rt61pci_brightness_set(struct led_classdev *led_cdev, |
281 | enum led_brightness brightness) | 281 | enum led_brightness brightness) |
282 | { | 282 | { |
283 | struct rt2x00_led *led = | 283 | struct rt2x00_led *led = |
@@ -314,8 +314,22 @@ static void rt61pci_led_brightness(struct led_classdev *led_cdev, | |||
314 | brightness / (LED_FULL / 6), 0); | 314 | brightness / (LED_FULL / 6), 0); |
315 | } | 315 | } |
316 | } | 316 | } |
317 | #else | 317 | |
318 | #define rt61pci_led_brightness NULL | 318 | static int rt61pci_blink_set(struct led_classdev *led_cdev, |
319 | unsigned long *delay_on, | ||
320 | unsigned long *delay_off) | ||
321 | { | ||
322 | struct rt2x00_led *led = | ||
323 | container_of(led_cdev, struct rt2x00_led, led_dev); | ||
324 | u32 reg; | ||
325 | |||
326 | rt2x00pci_register_read(led->rt2x00dev, MAC_CSR14, ®); | ||
327 | rt2x00_set_field32(®, MAC_CSR14_ON_PERIOD, *delay_on); | ||
328 | rt2x00_set_field32(®, MAC_CSR14_OFF_PERIOD, *delay_off); | ||
329 | rt2x00pci_register_write(led->rt2x00dev, MAC_CSR14, reg); | ||
330 | |||
331 | return 0; | ||
332 | } | ||
319 | #endif /* CONFIG_RT61PCI_LEDS */ | 333 | #endif /* CONFIG_RT61PCI_LEDS */ |
320 | 334 | ||
321 | /* | 335 | /* |
@@ -1202,11 +1216,6 @@ static int rt61pci_init_registers(struct rt2x00_dev *rt2x00dev) | |||
1202 | 1216 | ||
1203 | rt2x00pci_register_write(rt2x00dev, MAC_CSR13, 0x0000e000); | 1217 | rt2x00pci_register_write(rt2x00dev, MAC_CSR13, 0x0000e000); |
1204 | 1218 | ||
1205 | rt2x00pci_register_read(rt2x00dev, MAC_CSR14, ®); | ||
1206 | rt2x00_set_field32(®, MAC_CSR14_ON_PERIOD, 70); | ||
1207 | rt2x00_set_field32(®, MAC_CSR14_OFF_PERIOD, 30); | ||
1208 | rt2x00pci_register_write(rt2x00dev, MAC_CSR14, reg); | ||
1209 | |||
1210 | /* | 1219 | /* |
1211 | * Invalidate all Shared Keys (SEC_CSR0), | 1220 | * Invalidate all Shared Keys (SEC_CSR0), |
1212 | * and clear the Shared key Cipher algorithms (SEC_CSR1 & SEC_CSR5) | 1221 | * and clear the Shared key Cipher algorithms (SEC_CSR1 & SEC_CSR5) |
@@ -2058,22 +2067,32 @@ static int rt61pci_init_eeprom(struct rt2x00_dev *rt2x00dev) | |||
2058 | */ | 2067 | */ |
2059 | #ifdef CONFIG_RT61PCI_LEDS | 2068 | #ifdef CONFIG_RT61PCI_LEDS |
2060 | rt2x00_eeprom_read(rt2x00dev, EEPROM_LED, &eeprom); | 2069 | rt2x00_eeprom_read(rt2x00dev, EEPROM_LED, &eeprom); |
2061 | |||
2062 | value = rt2x00_get_field16(eeprom, EEPROM_LED_LED_MODE); | 2070 | value = rt2x00_get_field16(eeprom, EEPROM_LED_LED_MODE); |
2063 | 2071 | ||
2064 | switch (value) { | 2072 | rt2x00dev->led_radio.rt2x00dev = rt2x00dev; |
2065 | case LED_MODE_TXRX_ACTIVITY: | 2073 | rt2x00dev->led_radio.type = LED_TYPE_RADIO; |
2066 | case LED_MODE_ASUS: | 2074 | rt2x00dev->led_radio.led_dev.brightness_set = |
2067 | case LED_MODE_ALPHA: | 2075 | rt61pci_brightness_set; |
2068 | case LED_MODE_DEFAULT: | 2076 | rt2x00dev->led_radio.led_dev.blink_set = |
2069 | rt2x00dev->led_flags = | 2077 | rt61pci_blink_set; |
2070 | LED_SUPPORT_RADIO | LED_SUPPORT_ASSOC; | 2078 | rt2x00dev->led_radio.flags = LED_INITIALIZED; |
2071 | break; | 2079 | |
2072 | case LED_MODE_SIGNAL_STRENGTH: | 2080 | rt2x00dev->led_assoc.rt2x00dev = rt2x00dev; |
2073 | rt2x00dev->led_flags = | 2081 | rt2x00dev->led_assoc.type = LED_TYPE_ASSOC; |
2074 | LED_SUPPORT_RADIO | LED_SUPPORT_ASSOC | | 2082 | rt2x00dev->led_assoc.led_dev.brightness_set = |
2075 | LED_SUPPORT_QUALITY; | 2083 | rt61pci_brightness_set; |
2076 | break; | 2084 | rt2x00dev->led_assoc.led_dev.blink_set = |
2085 | rt61pci_blink_set; | ||
2086 | rt2x00dev->led_assoc.flags = LED_INITIALIZED; | ||
2087 | |||
2088 | if (value == LED_MODE_SIGNAL_STRENGTH) { | ||
2089 | rt2x00dev->led_qual.rt2x00dev = rt2x00dev; | ||
2090 | rt2x00dev->led_radio.type = LED_TYPE_QUALITY; | ||
2091 | rt2x00dev->led_qual.led_dev.brightness_set = | ||
2092 | rt61pci_brightness_set; | ||
2093 | rt2x00dev->led_qual.led_dev.blink_set = | ||
2094 | rt61pci_blink_set; | ||
2095 | rt2x00dev->led_qual.flags = LED_INITIALIZED; | ||
2077 | } | 2096 | } |
2078 | 2097 | ||
2079 | rt2x00_set_field16(&rt2x00dev->led_mcu_reg, MCU_LEDCS_LED_MODE, value); | 2098 | rt2x00_set_field16(&rt2x00dev->led_mcu_reg, MCU_LEDCS_LED_MODE, value); |
@@ -2447,7 +2466,6 @@ static const struct rt2x00lib_ops rt61pci_rt2x00_ops = { | |||
2447 | .link_stats = rt61pci_link_stats, | 2466 | .link_stats = rt61pci_link_stats, |
2448 | .reset_tuner = rt61pci_reset_tuner, | 2467 | .reset_tuner = rt61pci_reset_tuner, |
2449 | .link_tuner = rt61pci_link_tuner, | 2468 | .link_tuner = rt61pci_link_tuner, |
2450 | .led_brightness = rt61pci_led_brightness, | ||
2451 | .write_tx_desc = rt61pci_write_tx_desc, | 2469 | .write_tx_desc = rt61pci_write_tx_desc, |
2452 | .write_tx_data = rt2x00pci_write_tx_data, | 2470 | .write_tx_data = rt2x00pci_write_tx_data, |
2453 | .kick_tx_queue = rt61pci_kick_tx_queue, | 2471 | .kick_tx_queue = rt61pci_kick_tx_queue, |