Page Menu
Home
FreeBSD
Search
Configure Global Search
Log In
Files
F143507551
D21529.id61672.diff
No One
Temporary
Actions
View File
Edit File
Delete File
View Transforms
Subscribe
Mute Notifications
Flag For Later
Award Token
Size
3 KB
Referenced Files
None
Subscribers
None
D21529.id61672.diff
View Options
Index: share/man/man4/acpi_wmi.4
===================================================================
--- share/man/man4/acpi_wmi.4
+++ share/man/man4/acpi_wmi.4
@@ -24,7 +24,7 @@
.\"
.\" $FreeBSD$
.\"
-.Dd November 22, 2011
+.Dd Sep 5, 2019
.Dt ACPI_WMI 4
.Os
.Sh NAME
@@ -56,6 +56,13 @@
.It Pa /dev/wmistat%d
WMI status device.
.El
+.Sh SYSCTLS
+The following sysctl nodes are currently implemented:
+.Bl -tag -width indent
+.It Va dev.acpi_wmi.%d.bmof
+Managed Object Format (MOF) blob. You can obtain human readable output by bmf2mof in bmfdec tool. (https://github.com/pali/bmfdec)
+.El
+
.Sh EXAMPLES
.Bd -literal
# cat /dev/wmistat0
@@ -72,6 +79,20 @@
{8232DE3D-663D-4327-A8F4-E293ADB9BF05} 0 NO NO NO NO BG
{8F1F6436-9F42-42C8-BADC-0E9424F20C9A} 0 NO NO NO NO BH
{8F1F6435-9F42-42C8-BADC-0E9424F20C9A} 0 NO NO NO NO BI
+# sysctl -b dev.acpi_wmi.0.bmof |bmf2mof
+[abstract]
+class Lenovo_BIOSElement {
+};
+
+[WMI, Dynamic, Provider("WMIProv"), WmiExpense(1), Description("Bios Setting"),
+GUID("{51F5230E-9677-46cd-A1CF-C0B23EE34DB7}"), Locale("MS\\0x409")]
+class Lenovo_BiosSetting : Lenovo_BiosElement {
+ [key, read] String InstanceName;
+ [read] Boolean Active;
+ [WmiDataId(1), Description("BIOS setting")] String CurrentSetting;
+ };
+ bra. bra.
+
.Ed
.Sh SEE ALSO
.Xr acpi 4
@@ -91,6 +112,8 @@
.Pp
See http://www.microsoft.com/whdc/system/pnppwr/wmi/wmi-acpi.mspx for
the specification of ACPI-WMI.
+.Pp
+MOF part hasbeen inspired by the Linux wmi-bmof driver written by Andy Lutomirski .
.Pp
This manual page was written by
.An Michael Gmelin Aq Mt freebsd@grem.de .
Index: sys/dev/acpi_support/acpi_wmi.c
===================================================================
--- sys/dev/acpi_support/acpi_wmi.c
+++ sys/dev/acpi_support/acpi_wmi.c
@@ -62,6 +62,7 @@
#define ACPI_WMI_REGFLAG_METHOD 0x2 /* GUID flag: Method call */
#define ACPI_WMI_REGFLAG_STRING 0x4 /* GUID flag: String */
#define ACPI_WMI_REGFLAG_EVENT 0x8 /* GUID flag: Event */
+#define ACPI_WMI_BMOF_UUID "05901221-D566-11D1-B2F0-00A0C9062910"
/*
* acpi_wmi driver private structure
@@ -74,6 +75,8 @@
struct sbuf wmistat_sbuf; /* sbuf for /dev/wmistat output */
pid_t wmistat_open_pid; /* pid operating on /dev/wmistat */
int wmistat_bufptr; /* /dev/wmistat ptr to buffer position */
+ char *mofbuf;
+
TAILQ_HEAD(wmi_info_list_head, wmi_info) wmi_info_list;
};
@@ -274,6 +277,28 @@
}
ACPI_SERIAL_END(acpi_wmi);
+ if(acpi_wmi_provides_guid_string_method(dev,
+ ACPI_WMI_BMOF_UUID)){
+ ACPI_BUFFER out = { ACPI_ALLOCATE_BUFFER, NULL};
+ ACPI_OBJECT *obj;
+ device_printf(dev, "Embedded MOF found\n");
+ status = acpi_wmi_get_block_method(dev, ACPI_WMI_BMOF_UUID,
+ 0, &out);
+ if (ACPI_SUCCESS(status)){
+ obj = out.Pointer;
+ if (obj && obj->Type == ACPI_TYPE_BUFFER){
+ SYSCTL_ADD_OPAQUE
+ (device_get_sysctl_ctx(dev),
+ SYSCTL_CHILDREN(device_get_sysctl_tree(dev)),
+ OID_AUTO, "bmof",
+ CTLFLAG_RD | CTLFLAG_MPSAFE,
+ obj->Buffer.Pointer,
+ obj->Buffer.Length, "A", "MOF Blob");
+ }
+ }
+ sc->mofbuf = out.Pointer;
+ }
+
if (ret == 0) {
bus_generic_probe(dev);
ret = bus_generic_attach(dev);
@@ -299,7 +324,6 @@
ACPI_FUNCTION_TRACE((char *)(uintptr_t)__func__);
sc = device_get_softc(dev);
ACPI_SERIAL_BEGIN(acpi_wmi);
-
if (sc->wmistat_open_pid != 0) {
ret = EBUSY;
} else {
@@ -321,6 +345,9 @@
sc->wmistat_open_pid = 0;
destroy_dev(sc->wmistat_dev_t);
ret = 0;
+ if(sc->mofbuf){
+ AcpiOsFree(sc->mofbuf);
+ }
}
ACPI_SERIAL_END(acpi_wmi);
File Metadata
Details
Attached
Mime Type
text/plain
Expires
Sat, Jan 31, 7:13 PM (7 h, 49 m)
Storage Engine
blob
Storage Format
Raw Data
Storage Handle
28161946
Default Alt Text
D21529.id61672.diff (3 KB)
Attached To
Mode
D21529: Adding WMI embedded Binary MOF object interface driver.
Attached
Detach File
Event Timeline
Log In to Comment