diff options
-rw-r--r-- | drivers/platform/x86/dell-laptop.c | 13 |
1 files changed, 10 insertions, 3 deletions
diff --git a/drivers/platform/x86/dell-laptop.c b/drivers/platform/x86/dell-laptop.c index bd67c893ba07..c608b1d33f4a 100644 --- a/drivers/platform/x86/dell-laptop.c +++ b/drivers/platform/x86/dell-laptop.c | |||
@@ -580,11 +580,18 @@ static int __init dell_setup_rfkill(void) | |||
580 | buffer->input[0] = 0x2; | 580 | buffer->input[0] = 0x2; |
581 | dell_send_request(buffer, 17, 11); | 581 | dell_send_request(buffer, 17, 11); |
582 | hwswitch_state = buffer->output[1]; | 582 | hwswitch_state = buffer->output[1]; |
583 | /* If there is no hwswitch, then clear all hw-controlled bits */ | ||
584 | if (!(status & BIT(0))) | ||
585 | hwswitch_state &= ~7; | ||
586 | release_buffer(); | 583 | release_buffer(); |
587 | 584 | ||
585 | if (!(status & BIT(0))) { | ||
586 | if (force_rfkill) { | ||
587 | /* No hwsitch, clear all hw-controlled bits */ | ||
588 | hwswitch_state &= ~7; | ||
589 | } else { | ||
590 | /* rfkill is only tested on laptops with a hwswitch */ | ||
591 | return 0; | ||
592 | } | ||
593 | } | ||
594 | |||
588 | if ((status & (1<<2|1<<8)) == (1<<2|1<<8)) { | 595 | if ((status & (1<<2|1<<8)) == (1<<2|1<<8)) { |
589 | wifi_rfkill = rfkill_alloc("dell-wifi", &platform_device->dev, | 596 | wifi_rfkill = rfkill_alloc("dell-wifi", &platform_device->dev, |
590 | RFKILL_TYPE_WLAN, | 597 | RFKILL_TYPE_WLAN, |