diff options
| author | Hans de Goede <hdegoede@redhat.com> | 2013-11-17 08:00:22 -0500 |
|---|---|---|
| committer | Matthew Garrett <matthew.garrett@nebula.com> | 2013-11-20 18:50:48 -0500 |
| commit | 4d39d88ceb83e88953a76df8b1fa10f43f328038 (patch) | |
| tree | 8359dc4e871003c692889d305b53b53b24f8a2a3 /drivers/platform/x86 | |
| parent | 3f56588a79a06a0499db0077cad6675762ddc40e (diff) | |
dell-laptop: Allow changing the sw_state while the radio is blocked by hw
This makes dell-laptop's rfkill code consistent with other drivers which
allow sw_state changes while hw blocked.
Signed-off-by: Hans de Goede <hdegoede@redhat.com>
Signed-off-by: Matthew Garrett <matthew.garrett@nebula.com>
Diffstat (limited to 'drivers/platform/x86')
| -rw-r--r-- | drivers/platform/x86/dell-laptop.c | 7 |
1 files changed, 2 insertions, 5 deletions
diff --git a/drivers/platform/x86/dell-laptop.c b/drivers/platform/x86/dell-laptop.c index 80de0cca1dfa..834f499a6aec 100644 --- a/drivers/platform/x86/dell-laptop.c +++ b/drivers/platform/x86/dell-laptop.c | |||
| @@ -404,7 +404,6 @@ static int dell_rfkill_set(void *data, bool blocked) | |||
| 404 | int disable = blocked ? 1 : 0; | 404 | int disable = blocked ? 1 : 0; |
| 405 | unsigned long radio = (unsigned long)data; | 405 | unsigned long radio = (unsigned long)data; |
| 406 | int hwswitch_bit = (unsigned long)data - 1; | 406 | int hwswitch_bit = (unsigned long)data - 1; |
| 407 | int ret = 0; | ||
| 408 | 407 | ||
| 409 | get_buffer(); | 408 | get_buffer(); |
| 410 | dell_send_request(buffer, 17, 11); | 409 | dell_send_request(buffer, 17, 11); |
| @@ -412,17 +411,15 @@ static int dell_rfkill_set(void *data, bool blocked) | |||
| 412 | /* If the hardware switch controls this radio, and the hardware | 411 | /* If the hardware switch controls this radio, and the hardware |
| 413 | switch is disabled, don't allow changing the software state */ | 412 | switch is disabled, don't allow changing the software state */ |
| 414 | if ((hwswitch_state & BIT(hwswitch_bit)) && | 413 | if ((hwswitch_state & BIT(hwswitch_bit)) && |
| 415 | !(buffer->output[1] & BIT(16))) { | 414 | !(buffer->output[1] & BIT(16))) |
| 416 | ret = -EINVAL; | ||
| 417 | goto out; | 415 | goto out; |
| 418 | } | ||
| 419 | 416 | ||
| 420 | buffer->input[0] = (1 | (radio<<8) | (disable << 16)); | 417 | buffer->input[0] = (1 | (radio<<8) | (disable << 16)); |
| 421 | dell_send_request(buffer, 17, 11); | 418 | dell_send_request(buffer, 17, 11); |
| 422 | 419 | ||
| 423 | out: | 420 | out: |
| 424 | release_buffer(); | 421 | release_buffer(); |
| 425 | return ret; | 422 | return 0; |
| 426 | } | 423 | } |
| 427 | 424 | ||
| 428 | static void dell_rfkill_update_sw_state(struct rfkill *rfkill, int radio, | 425 | static void dell_rfkill_update_sw_state(struct rfkill *rfkill, int radio, |
