dell-laptop: Update information about wireless control

Make sure that all existing SMBIOS calls for wireless control are properly
documented. This commit also add new documentation released by Dell.

Signed-off-by: Pali Rohár <pali.rohar@gmail.com>
Signed-off-by: Darren Hart <dvhart@linux.intel.com>
This commit is contained in:
Pali Rohár 2015-06-21 10:39:26 +02:00 committed by Darren Hart
parent 5ee7041e5b
commit f992efbb03

View file

@ -423,45 +423,125 @@ static inline int dell_smi_error(int value)
} }
} }
/* Derived from information in DellWirelessCtl.cpp: /*
Class 17, select 11 is radio control. It returns an array of 32-bit values. * Derived from information in smbios-wireless-ctl:
*
Input byte 0 = 0: Wireless information * cbSelect 17, Value 11
*
result[0]: return code * Return Wireless Info
result[1]: * cbArg1, byte0 = 0x00
Bit 0: Hardware switch supported *
Bit 1: Wifi locator supported * cbRes1 Standard return codes (0, -1, -2)
Bit 2: Wifi is supported * cbRes2 Info bit flags:
Bit 3: Bluetooth is supported *
Bit 4: WWAN is supported * 0 Hardware switch supported (1)
Bit 5: Wireless keyboard supported * 1 WiFi locator supported (1)
Bits 6-7: Reserved * 2 WLAN supported (1)
Bit 8: Wifi is installed * 3 Bluetooth (BT) supported (1)
Bit 9: Bluetooth is installed * 4 WWAN supported (1)
Bit 10: WWAN is installed * 5 Wireless KBD supported (1)
Bits 11-15: Reserved * 6 Uw b supported (1)
Bit 16: Hardware switch is on * 7 WiGig supported (1)
Bit 17: Wifi is blocked * 8 WLAN installed (1)
Bit 18: Bluetooth is blocked * 9 BT installed (1)
Bit 19: WWAN is blocked * 10 WWAN installed (1)
Bits 20-31: Reserved * 11 Uw b installed (1)
result[2]: NVRAM size in bytes * 12 WiGig installed (1)
result[3]: NVRAM format version number * 13-15 Reserved (0)
* 16 Hardware (HW) switch is On (1)
Input byte 0 = 2: Wireless switch configuration * 17 WLAN disabled (1)
result[0]: return code * 18 BT disabled (1)
result[1]: * 19 WWAN disabled (1)
Bit 0: Wifi controlled by switch * 20 Uw b disabled (1)
Bit 1: Bluetooth controlled by switch * 21 WiGig disabled (1)
Bit 2: WWAN controlled by switch * 20-31 Reserved (0)
Bits 3-6: Reserved *
Bit 7: Wireless switch config locked * cbRes3 NVRAM size in bytes
Bit 8: Wifi locator enabled * cbRes4, byte 0 NVRAM format version number
Bits 9-14: Reserved *
Bit 15: Wifi locator setting locked *
Bits 16-31: Reserved * Set QuickSet Radio Disable Flag
*/ * cbArg1, byte0 = 0x01
* cbArg1, byte1
* Radio ID value:
* 0 Radio Status
* 1 WLAN ID
* 2 BT ID
* 3 WWAN ID
* 4 UWB ID
* 5 WIGIG ID
* cbArg1, byte2 Flag bits:
* 0 QuickSet disables radio (1)
* 1-7 Reserved (0)
*
* cbRes1 Standard return codes (0, -1, -2)
* cbRes2 QuickSet (QS) radio disable bit map:
* 0 QS disables WLAN
* 1 QS disables BT
* 2 QS disables WWAN
* 3 QS disables UWB
* 4 QS disables WIGIG
* 5-31 Reserved (0)
*
* Wireless Switch Configuration
* cbArg1, byte0 = 0x02
*
* cbArg1, byte1
* Subcommand:
* 0 Get config
* 1 Set config
* 2 Set WiFi locator enable/disable
* cbArg1,byte2
* Switch settings (if byte 1==1):
* 0 WLAN sw itch control (1)
* 1 BT sw itch control (1)
* 2 WWAN sw itch control (1)
* 3 UWB sw itch control (1)
* 4 WiGig sw itch control (1)
* 5-7 Reserved (0)
* cbArg1, byte2 Enable bits (if byte 1==2):
* 0 Enable WiFi locator (1)
*
* cbRes1 Standard return codes (0, -1, -2)
* cbRes2 QuickSet radio disable bit map:
* 0 WLAN controlled by sw itch (1)
* 1 BT controlled by sw itch (1)
* 2 WWAN controlled by sw itch (1)
* 3 UWB controlled by sw itch (1)
* 4 WiGig controlled by sw itch (1)
* 5-6 Reserved (0)
* 7 Wireless sw itch config locked (1)
* 8 WiFi locator enabled (1)
* 9-14 Reserved (0)
* 15 WiFi locator setting locked (1)
* 16-31 Reserved (0)
*
* Read Local Config Data (LCD)
* cbArg1, byte0 = 0x10
* cbArg1, byte1 NVRAM index low byte
* cbArg1, byte2 NVRAM index high byte
* cbRes1 Standard return codes (0, -1, -2)
* cbRes2 4 bytes read from LCD[index]
* cbRes3 4 bytes read from LCD[index+4]
* cbRes4 4 bytes read from LCD[index+8]
*
* Write Local Config Data (LCD)
* cbArg1, byte0 = 0x11
* cbArg1, byte1 NVRAM index low byte
* cbArg1, byte2 NVRAM index high byte
* cbArg2 4 bytes to w rite at LCD[index]
* cbArg3 4 bytes to w rite at LCD[index+4]
* cbArg4 4 bytes to w rite at LCD[index+8]
* cbRes1 Standard return codes (0, -1, -2)
*
* Populate Local Config Data from NVRAM
* cbArg1, byte0 = 0x12
* cbRes1 Standard return codes (0, -1, -2)
*
* Commit Local Config Data to NVRAM
* cbArg1, byte0 = 0x13
* cbRes1 Standard return codes (0, -1, -2)
*/
static int dell_rfkill_set(void *data, bool blocked) static int dell_rfkill_set(void *data, bool blocked)
{ {