diff options
Diffstat (limited to 'drivers/net/wireless/b43legacy/main.c')
-rw-r--r-- | drivers/net/wireless/b43legacy/main.c | 20 |
1 files changed, 10 insertions, 10 deletions
diff --git a/drivers/net/wireless/b43legacy/main.c b/drivers/net/wireless/b43legacy/main.c index aa723effcf22..14087fc20f3a 100644 --- a/drivers/net/wireless/b43legacy/main.c +++ b/drivers/net/wireless/b43legacy/main.c | |||
@@ -1995,7 +1995,6 @@ static void b43legacy_mgmtframe_txantenna(struct b43legacy_wldev *dev, | |||
1995 | static void b43legacy_chip_exit(struct b43legacy_wldev *dev) | 1995 | static void b43legacy_chip_exit(struct b43legacy_wldev *dev) |
1996 | { | 1996 | { |
1997 | b43legacy_radio_turn_off(dev, 1); | 1997 | b43legacy_radio_turn_off(dev, 1); |
1998 | b43legacy_leds_exit(dev); | ||
1999 | b43legacy_gpio_cleanup(dev); | 1998 | b43legacy_gpio_cleanup(dev); |
2000 | /* firmware is released later */ | 1999 | /* firmware is released later */ |
2001 | } | 2000 | } |
@@ -2025,11 +2024,10 @@ static int b43legacy_chip_init(struct b43legacy_wldev *dev) | |||
2025 | err = b43legacy_gpio_init(dev); | 2024 | err = b43legacy_gpio_init(dev); |
2026 | if (err) | 2025 | if (err) |
2027 | goto out; /* firmware is released later */ | 2026 | goto out; /* firmware is released later */ |
2028 | b43legacy_leds_init(dev); | ||
2029 | 2027 | ||
2030 | err = b43legacy_upload_initvals(dev); | 2028 | err = b43legacy_upload_initvals(dev); |
2031 | if (err) | 2029 | if (err) |
2032 | goto err_leds_exit; | 2030 | goto err_gpio_clean; |
2033 | b43legacy_radio_turn_on(dev); | 2031 | b43legacy_radio_turn_on(dev); |
2034 | 2032 | ||
2035 | b43legacy_write16(dev, 0x03E6, 0x0000); | 2033 | b43legacy_write16(dev, 0x03E6, 0x0000); |
@@ -2111,8 +2109,7 @@ out: | |||
2111 | 2109 | ||
2112 | err_radio_off: | 2110 | err_radio_off: |
2113 | b43legacy_radio_turn_off(dev, 1); | 2111 | b43legacy_radio_turn_off(dev, 1); |
2114 | err_leds_exit: | 2112 | err_gpio_clean: |
2115 | b43legacy_leds_exit(dev); | ||
2116 | b43legacy_gpio_cleanup(dev); | 2113 | b43legacy_gpio_cleanup(dev); |
2117 | goto out; | 2114 | goto out; |
2118 | } | 2115 | } |
@@ -2969,10 +2966,7 @@ static void b43legacy_wireless_core_exit(struct b43legacy_wldev *dev) | |||
2969 | cancel_work_sync(&dev->restart_work); | 2966 | cancel_work_sync(&dev->restart_work); |
2970 | mutex_lock(&wl->mutex); | 2967 | mutex_lock(&wl->mutex); |
2971 | 2968 | ||
2972 | mutex_unlock(&dev->wl->mutex); | 2969 | b43legacy_leds_exit(dev); |
2973 | b43legacy_rfkill_exit(dev); | ||
2974 | mutex_lock(&dev->wl->mutex); | ||
2975 | |||
2976 | b43legacy_rng_exit(dev->wl); | 2970 | b43legacy_rng_exit(dev->wl); |
2977 | b43legacy_pio_free(dev); | 2971 | b43legacy_pio_free(dev); |
2978 | b43legacy_dma_free(dev); | 2972 | b43legacy_dma_free(dev); |
@@ -3138,11 +3132,11 @@ static int b43legacy_wireless_core_init(struct b43legacy_wldev *dev) | |||
3138 | memset(wl->mac_addr, 0, ETH_ALEN); | 3132 | memset(wl->mac_addr, 0, ETH_ALEN); |
3139 | b43legacy_upload_card_macaddress(dev); | 3133 | b43legacy_upload_card_macaddress(dev); |
3140 | b43legacy_security_init(dev); | 3134 | b43legacy_security_init(dev); |
3141 | b43legacy_rfkill_init(dev); | ||
3142 | b43legacy_rng_init(wl); | 3135 | b43legacy_rng_init(wl); |
3143 | 3136 | ||
3144 | b43legacy_set_status(dev, B43legacy_STAT_INITIALIZED); | 3137 | b43legacy_set_status(dev, B43legacy_STAT_INITIALIZED); |
3145 | 3138 | ||
3139 | b43legacy_leds_init(dev); | ||
3146 | out: | 3140 | out: |
3147 | return err; | 3141 | return err; |
3148 | 3142 | ||
@@ -3231,6 +3225,10 @@ static int b43legacy_op_start(struct ieee80211_hw *hw) | |||
3231 | int did_init = 0; | 3225 | int did_init = 0; |
3232 | int err = 0; | 3226 | int err = 0; |
3233 | 3227 | ||
3228 | /* First register RFkill. | ||
3229 | * LEDs that are registered later depend on it. */ | ||
3230 | b43legacy_rfkill_init(dev); | ||
3231 | |||
3234 | mutex_lock(&wl->mutex); | 3232 | mutex_lock(&wl->mutex); |
3235 | 3233 | ||
3236 | if (b43legacy_status(dev) < B43legacy_STAT_INITIALIZED) { | 3234 | if (b43legacy_status(dev) < B43legacy_STAT_INITIALIZED) { |
@@ -3260,6 +3258,8 @@ static void b43legacy_op_stop(struct ieee80211_hw *hw) | |||
3260 | struct b43legacy_wl *wl = hw_to_b43legacy_wl(hw); | 3258 | struct b43legacy_wl *wl = hw_to_b43legacy_wl(hw); |
3261 | struct b43legacy_wldev *dev = wl->current_dev; | 3259 | struct b43legacy_wldev *dev = wl->current_dev; |
3262 | 3260 | ||
3261 | b43legacy_rfkill_exit(dev); | ||
3262 | |||
3263 | mutex_lock(&wl->mutex); | 3263 | mutex_lock(&wl->mutex); |
3264 | if (b43legacy_status(dev) >= B43legacy_STAT_STARTED) | 3264 | if (b43legacy_status(dev) >= B43legacy_STAT_STARTED) |
3265 | b43legacy_wireless_core_stop(dev); | 3265 | b43legacy_wireless_core_stop(dev); |