Skip to content

Commit f992efb

Browse files
palidvhart
authored andcommitted
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 <[email protected]> Signed-off-by: Darren Hart <[email protected]>
1 parent 5ee7041 commit f992efb

File tree

1 file changed

+119
-39
lines changed

1 file changed

+119
-39
lines changed

drivers/platform/x86/dell-laptop.c

Lines changed: 119 additions & 39 deletions
Original file line numberDiff line numberDiff line change
@@ -423,45 +423,125 @@ static inline int dell_smi_error(int value)
423423
}
424424
}
425425

426-
/* Derived from information in DellWirelessCtl.cpp:
427-
Class 17, select 11 is radio control. It returns an array of 32-bit values.
428-
429-
Input byte 0 = 0: Wireless information
430-
431-
result[0]: return code
432-
result[1]:
433-
Bit 0: Hardware switch supported
434-
Bit 1: Wifi locator supported
435-
Bit 2: Wifi is supported
436-
Bit 3: Bluetooth is supported
437-
Bit 4: WWAN is supported
438-
Bit 5: Wireless keyboard supported
439-
Bits 6-7: Reserved
440-
Bit 8: Wifi is installed
441-
Bit 9: Bluetooth is installed
442-
Bit 10: WWAN is installed
443-
Bits 11-15: Reserved
444-
Bit 16: Hardware switch is on
445-
Bit 17: Wifi is blocked
446-
Bit 18: Bluetooth is blocked
447-
Bit 19: WWAN is blocked
448-
Bits 20-31: Reserved
449-
result[2]: NVRAM size in bytes
450-
result[3]: NVRAM format version number
451-
452-
Input byte 0 = 2: Wireless switch configuration
453-
result[0]: return code
454-
result[1]:
455-
Bit 0: Wifi controlled by switch
456-
Bit 1: Bluetooth controlled by switch
457-
Bit 2: WWAN controlled by switch
458-
Bits 3-6: Reserved
459-
Bit 7: Wireless switch config locked
460-
Bit 8: Wifi locator enabled
461-
Bits 9-14: Reserved
462-
Bit 15: Wifi locator setting locked
463-
Bits 16-31: Reserved
464-
*/
426+
/*
427+
* Derived from information in smbios-wireless-ctl:
428+
*
429+
* cbSelect 17, Value 11
430+
*
431+
* Return Wireless Info
432+
* cbArg1, byte0 = 0x00
433+
*
434+
* cbRes1 Standard return codes (0, -1, -2)
435+
* cbRes2 Info bit flags:
436+
*
437+
* 0 Hardware switch supported (1)
438+
* 1 WiFi locator supported (1)
439+
* 2 WLAN supported (1)
440+
* 3 Bluetooth (BT) supported (1)
441+
* 4 WWAN supported (1)
442+
* 5 Wireless KBD supported (1)
443+
* 6 Uw b supported (1)
444+
* 7 WiGig supported (1)
445+
* 8 WLAN installed (1)
446+
* 9 BT installed (1)
447+
* 10 WWAN installed (1)
448+
* 11 Uw b installed (1)
449+
* 12 WiGig installed (1)
450+
* 13-15 Reserved (0)
451+
* 16 Hardware (HW) switch is On (1)
452+
* 17 WLAN disabled (1)
453+
* 18 BT disabled (1)
454+
* 19 WWAN disabled (1)
455+
* 20 Uw b disabled (1)
456+
* 21 WiGig disabled (1)
457+
* 20-31 Reserved (0)
458+
*
459+
* cbRes3 NVRAM size in bytes
460+
* cbRes4, byte 0 NVRAM format version number
461+
*
462+
*
463+
* Set QuickSet Radio Disable Flag
464+
* cbArg1, byte0 = 0x01
465+
* cbArg1, byte1
466+
* Radio ID value:
467+
* 0 Radio Status
468+
* 1 WLAN ID
469+
* 2 BT ID
470+
* 3 WWAN ID
471+
* 4 UWB ID
472+
* 5 WIGIG ID
473+
* cbArg1, byte2 Flag bits:
474+
* 0 QuickSet disables radio (1)
475+
* 1-7 Reserved (0)
476+
*
477+
* cbRes1 Standard return codes (0, -1, -2)
478+
* cbRes2 QuickSet (QS) radio disable bit map:
479+
* 0 QS disables WLAN
480+
* 1 QS disables BT
481+
* 2 QS disables WWAN
482+
* 3 QS disables UWB
483+
* 4 QS disables WIGIG
484+
* 5-31 Reserved (0)
485+
*
486+
* Wireless Switch Configuration
487+
* cbArg1, byte0 = 0x02
488+
*
489+
* cbArg1, byte1
490+
* Subcommand:
491+
* 0 Get config
492+
* 1 Set config
493+
* 2 Set WiFi locator enable/disable
494+
* cbArg1,byte2
495+
* Switch settings (if byte 1==1):
496+
* 0 WLAN sw itch control (1)
497+
* 1 BT sw itch control (1)
498+
* 2 WWAN sw itch control (1)
499+
* 3 UWB sw itch control (1)
500+
* 4 WiGig sw itch control (1)
501+
* 5-7 Reserved (0)
502+
* cbArg1, byte2 Enable bits (if byte 1==2):
503+
* 0 Enable WiFi locator (1)
504+
*
505+
* cbRes1 Standard return codes (0, -1, -2)
506+
* cbRes2 QuickSet radio disable bit map:
507+
* 0 WLAN controlled by sw itch (1)
508+
* 1 BT controlled by sw itch (1)
509+
* 2 WWAN controlled by sw itch (1)
510+
* 3 UWB controlled by sw itch (1)
511+
* 4 WiGig controlled by sw itch (1)
512+
* 5-6 Reserved (0)
513+
* 7 Wireless sw itch config locked (1)
514+
* 8 WiFi locator enabled (1)
515+
* 9-14 Reserved (0)
516+
* 15 WiFi locator setting locked (1)
517+
* 16-31 Reserved (0)
518+
*
519+
* Read Local Config Data (LCD)
520+
* cbArg1, byte0 = 0x10
521+
* cbArg1, byte1 NVRAM index low byte
522+
* cbArg1, byte2 NVRAM index high byte
523+
* cbRes1 Standard return codes (0, -1, -2)
524+
* cbRes2 4 bytes read from LCD[index]
525+
* cbRes3 4 bytes read from LCD[index+4]
526+
* cbRes4 4 bytes read from LCD[index+8]
527+
*
528+
* Write Local Config Data (LCD)
529+
* cbArg1, byte0 = 0x11
530+
* cbArg1, byte1 NVRAM index low byte
531+
* cbArg1, byte2 NVRAM index high byte
532+
* cbArg2 4 bytes to w rite at LCD[index]
533+
* cbArg3 4 bytes to w rite at LCD[index+4]
534+
* cbArg4 4 bytes to w rite at LCD[index+8]
535+
* cbRes1 Standard return codes (0, -1, -2)
536+
*
537+
* Populate Local Config Data from NVRAM
538+
* cbArg1, byte0 = 0x12
539+
* cbRes1 Standard return codes (0, -1, -2)
540+
*
541+
* Commit Local Config Data to NVRAM
542+
* cbArg1, byte0 = 0x13
543+
* cbRes1 Standard return codes (0, -1, -2)
544+
*/
465545

466546
static int dell_rfkill_set(void *data, bool blocked)
467547
{

0 commit comments

Comments
 (0)