xref: /OK3568_Linux_fs/kernel/Documentation/ABI/testing/dell-smbios-wmi (revision 4882a59341e53eb6f0b4789bf948001014eff981)
1*4882a593SmuzhiyunWhat:		/dev/wmi/dell-smbios
2*4882a593SmuzhiyunDate:		November 2017
3*4882a593SmuzhiyunKernelVersion:	4.15
4*4882a593SmuzhiyunContact:	"Mario Limonciello" <mario.limonciello@dell.com>
5*4882a593SmuzhiyunDescription:
6*4882a593Smuzhiyun		Perform SMBIOS calls on supported Dell machines.
7*4882a593Smuzhiyun		through the Dell ACPI-WMI interface.
8*4882a593Smuzhiyun
9*4882a593Smuzhiyun		IOCTL's and buffer formats are defined in:
10*4882a593Smuzhiyun		<uapi/linux/wmi.h>
11*4882a593Smuzhiyun
12*4882a593Smuzhiyun		1) To perform an SMBIOS call from userspace, you'll need to
13*4882a593Smuzhiyun		   first determine the minimum size of the calling interface
14*4882a593Smuzhiyun		   buffer for your machine.
15*4882a593Smuzhiyun		   Platforms that contain larger buffers can return larger
16*4882a593Smuzhiyun		   objects from the system firmware.
17*4882a593Smuzhiyun		   Commonly this size is either 4k or 32k.
18*4882a593Smuzhiyun
19*4882a593Smuzhiyun		   To determine the size of the buffer read() a u64 dword from
20*4882a593Smuzhiyun		   the WMI character device /dev/wmi/dell-smbios.
21*4882a593Smuzhiyun
22*4882a593Smuzhiyun		2) After you've determined the minimum size of the calling
23*4882a593Smuzhiyun		   interface buffer, you can allocate a structure that represents
24*4882a593Smuzhiyun		   the structure documented above.
25*4882a593Smuzhiyun
26*4882a593Smuzhiyun		3) In the 'length' object store the size of the buffer you
27*4882a593Smuzhiyun		   determined above and allocated.
28*4882a593Smuzhiyun
29*4882a593Smuzhiyun		4) In this buffer object, prepare as necessary for the SMBIOS
30*4882a593Smuzhiyun		   call you're interested in.  Typically SMBIOS buffers have
31*4882a593Smuzhiyun		   "class", "select", and "input" defined to values that coincide
32*4882a593Smuzhiyun		   with the data you are interested in.
33*4882a593Smuzhiyun		   Documenting class/select/input values is outside of the scope
34*4882a593Smuzhiyun		   of this documentation. Check with the libsmbios project for
35*4882a593Smuzhiyun		   further documentation on these values.
36*4882a593Smuzhiyun
37*4882a593Smuzhiyun		6) Run the call by using ioctl() as described in the header.
38*4882a593Smuzhiyun
39*4882a593Smuzhiyun		7) The output will be returned in the buffer object.
40*4882a593Smuzhiyun
41*4882a593Smuzhiyun		8) Be sure to free up your allocated object.
42