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>
This commit is contained in:
parent
3f56588a79
commit
4d39d88ceb
|
@ -404,7 +404,6 @@ static int dell_rfkill_set(void *data, bool blocked)
|
||||||
int disable = blocked ? 1 : 0;
|
int disable = blocked ? 1 : 0;
|
||||||
unsigned long radio = (unsigned long)data;
|
unsigned long radio = (unsigned long)data;
|
||||||
int hwswitch_bit = (unsigned long)data - 1;
|
int hwswitch_bit = (unsigned long)data - 1;
|
||||||
int ret = 0;
|
|
||||||
|
|
||||||
get_buffer();
|
get_buffer();
|
||||||
dell_send_request(buffer, 17, 11);
|
dell_send_request(buffer, 17, 11);
|
||||||
|
@ -412,17 +411,15 @@ static int dell_rfkill_set(void *data, bool blocked)
|
||||||
/* If the hardware switch controls this radio, and the hardware
|
/* If the hardware switch controls this radio, and the hardware
|
||||||
switch is disabled, don't allow changing the software state */
|
switch is disabled, don't allow changing the software state */
|
||||||
if ((hwswitch_state & BIT(hwswitch_bit)) &&
|
if ((hwswitch_state & BIT(hwswitch_bit)) &&
|
||||||
!(buffer->output[1] & BIT(16))) {
|
!(buffer->output[1] & BIT(16)))
|
||||||
ret = -EINVAL;
|
|
||||||
goto out;
|
goto out;
|
||||||
}
|
|
||||||
|
|
||||||
buffer->input[0] = (1 | (radio<<8) | (disable << 16));
|
buffer->input[0] = (1 | (radio<<8) | (disable << 16));
|
||||||
dell_send_request(buffer, 17, 11);
|
dell_send_request(buffer, 17, 11);
|
||||||
|
|
||||||
out:
|
out:
|
||||||
release_buffer();
|
release_buffer();
|
||||||
return ret;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
static void dell_rfkill_update_sw_state(struct rfkill *rfkill, int radio,
|
static void dell_rfkill_update_sw_state(struct rfkill *rfkill, int radio,
|
||||||
|
|
Loading…
Reference in New Issue