Преглед изворни кода

dell-laptop: Block software state changes when rfkill hard blocked

The "hardware" switch is tied directly to a BIOS interface that will
connect and disconnect the hardware from the bus.

If you use the software interface to request the BIOS to make these
changes, the HW switch will be in an inconsistent state and LEDs may not
reflect the state of the HW.

Signed-off-by: Mario Limonciello <Mario_Limonciello@Dell.com>
Mario Limonciello пре 15 година
родитељ
комит
ec1722a214
1 измењених фајлова са 4 додато и 0 уклоњено
  1. 4 0
      drivers/platform/x86/dell-laptop.c

+ 4 - 0
drivers/platform/x86/dell-laptop.c

@@ -190,6 +190,10 @@ static int dell_rfkill_set(void *data, bool blocked)
 	unsigned long radio = (unsigned long)data;
 	unsigned long radio = (unsigned long)data;
 
 
 	memset(&buffer, 0, sizeof(struct calling_interface_buffer));
 	memset(&buffer, 0, sizeof(struct calling_interface_buffer));
+	dell_send_request(&buffer, 17, 11);
+	if (!(buffer.output[1] & BIT(16)))
+		return -EINVAL;
+
 	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);