mirror of
https://github.com/Fishwaldo/linux-bl808.git
synced 2025-06-06 14:45:14 +00:00
platform/x86: wmi: Add function to get _UID of WMI device
Add a new function to acpi.h / wmi.c that returns _UID of the ACPI WMI
device. For example, it returns "ATK" for the following declaration in
DSDT:
Device (ATKD)
{
Name (_HID, "PNP0C14" /* Windows Management Instrumentation Device */)
// _HID: Hardware ID
Name (_UID, "ATK") // _UID: Unique ID
..
Generally, it is possible that multiple PNP0C14 ACPI devices are present in
the system as mentioned in the commit message of commit bff431e49f
("ACPI: WMI: Add ACPI-WMI mapping driver").
Therefore the _UID is returned for a specific ACPI device that declares the
given GUID, to which it is also mapped by other methods of wmi module.
Signed-off-by: Yurii Pavlovskyi <yurii.pavlovskyi@gmail.com>
Signed-off-by: Andy Shevchenko <andriy.shevchenko@linux.intel.com>
This commit is contained in:
parent
98e865a522
commit
e7488e58c7
2 changed files with 20 additions and 0 deletions
|
@ -635,6 +635,25 @@ bool wmi_has_guid(const char *guid_string)
|
||||||
}
|
}
|
||||||
EXPORT_SYMBOL_GPL(wmi_has_guid);
|
EXPORT_SYMBOL_GPL(wmi_has_guid);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* wmi_get_acpi_device_uid() - Get _UID name of ACPI device that defines GUID
|
||||||
|
* @guid_string: 36 char string of the form fa50ff2b-f2e8-45de-83fa-65417f2f49ba
|
||||||
|
*
|
||||||
|
* Find the _UID of ACPI device associated with this WMI GUID.
|
||||||
|
*
|
||||||
|
* Return: The ACPI _UID field value or NULL if the WMI GUID was not found
|
||||||
|
*/
|
||||||
|
char *wmi_get_acpi_device_uid(const char *guid_string)
|
||||||
|
{
|
||||||
|
struct wmi_block *wblock = NULL;
|
||||||
|
|
||||||
|
if (!find_guid(guid_string, &wblock))
|
||||||
|
return NULL;
|
||||||
|
|
||||||
|
return acpi_device_uid(wblock->acpi_device);
|
||||||
|
}
|
||||||
|
EXPORT_SYMBOL_GPL(wmi_get_acpi_device_uid);
|
||||||
|
|
||||||
static struct wmi_block *dev_to_wblock(struct device *dev)
|
static struct wmi_block *dev_to_wblock(struct device *dev)
|
||||||
{
|
{
|
||||||
return container_of(dev, struct wmi_block, dev.dev);
|
return container_of(dev, struct wmi_block, dev.dev);
|
||||||
|
|
|
@ -380,6 +380,7 @@ extern acpi_status wmi_install_notify_handler(const char *guid,
|
||||||
extern acpi_status wmi_remove_notify_handler(const char *guid);
|
extern acpi_status wmi_remove_notify_handler(const char *guid);
|
||||||
extern acpi_status wmi_get_event_data(u32 event, struct acpi_buffer *out);
|
extern acpi_status wmi_get_event_data(u32 event, struct acpi_buffer *out);
|
||||||
extern bool wmi_has_guid(const char *guid);
|
extern bool wmi_has_guid(const char *guid);
|
||||||
|
extern char *wmi_get_acpi_device_uid(const char *guid);
|
||||||
|
|
||||||
#endif /* CONFIG_ACPI_WMI */
|
#endif /* CONFIG_ACPI_WMI */
|
||||||
|
|
||||||
|
|
Loading…
Add table
Reference in a new issue