xref: /dflybsd-src/sys/dev/acpica/acpi_wmi_if.m (revision 0ce067b7bf2e672018b88c64a070820d1069fa3e)
15db2f26eSSascha Wildner#-
25db2f26eSSascha Wildner# Copyright (c) 2009 Michael Gmelin
35db2f26eSSascha Wildner# All rights reserved.
45db2f26eSSascha Wildner#
55db2f26eSSascha Wildner# Redistribution and use in source and binary forms, with or without
65db2f26eSSascha Wildner# modification, are permitted provided that the following conditions
75db2f26eSSascha Wildner# are met:
85db2f26eSSascha Wildner# 1. Redistributions of source code must retain the above copyright
95db2f26eSSascha Wildner#    notice, this list of conditions and the following disclaimer.
105db2f26eSSascha Wildner# 2. Redistributions in binary form must reproduce the above copyright
115db2f26eSSascha Wildner#    notice, this list of conditions and the following disclaimer in the
125db2f26eSSascha Wildner#    documentation and/or other materials provided with the distribution.
135db2f26eSSascha Wildner#
145db2f26eSSascha Wildner# THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND
155db2f26eSSascha Wildner# ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
165db2f26eSSascha Wildner# IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
175db2f26eSSascha Wildner# ARE DISCLAIMED.  IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE
185db2f26eSSascha Wildner# FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
195db2f26eSSascha Wildner# DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
205db2f26eSSascha Wildner# OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
215db2f26eSSascha Wildner# HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
225db2f26eSSascha Wildner# LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
235db2f26eSSascha Wildner# OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
245db2f26eSSascha Wildner# SUCH DAMAGE.
255db2f26eSSascha Wildner#
26*0ce067b7SSascha Wildner# $FreeBSD: head/sys/dev/acpi_support/acpi_wmi_if.m 195185 2009-06-30 09:51:41Z rpaulo $
275db2f26eSSascha Wildner#
285db2f26eSSascha Wildner
295db2f26eSSascha Wildner#include <sys/bus.h>
305db2f26eSSascha Wildner#include <sys/types.h>
315db2f26eSSascha Wildner#include "acpi.h"
325db2f26eSSascha Wildner
335db2f26eSSascha WildnerINTERFACE acpi_wmi;
345db2f26eSSascha Wildner
355db2f26eSSascha Wildner#
365db2f26eSSascha Wildner# Default implementation for acpi_wmi_generic_provides_guid_string().
375db2f26eSSascha Wildner#
385db2f26eSSascha WildnerCODE {
395db2f26eSSascha Wildner	static int
405db2f26eSSascha Wildner	acpi_wmi_generic_provides_guid_string(device_t dev, const char* guid_string)
415db2f26eSSascha Wildner	{
425db2f26eSSascha Wildner		return 0;
435db2f26eSSascha Wildner	}
445db2f26eSSascha Wildner};
455db2f26eSSascha Wildner
465db2f26eSSascha Wildner
475db2f26eSSascha Wildner#
485db2f26eSSascha Wildner# Check if given GUID exists in WMI
495db2f26eSSascha Wildner# Returns number of instances (max_instace+1) or 0 if guid doesn't exist
505db2f26eSSascha Wildner#
515db2f26eSSascha Wildner# device_t dev:	Device to probe
525db2f26eSSascha Wildner# const char* guid_string: String form of the GUID
535db2f26eSSascha Wildner#
545db2f26eSSascha WildnerMETHOD int provides_guid_string {
555db2f26eSSascha Wildner	device_t	dev;
565db2f26eSSascha Wildner	const char*	guid_string;
575db2f26eSSascha Wildner} DEFAULT acpi_wmi_generic_provides_guid_string;
585db2f26eSSascha Wildner
595db2f26eSSascha Wildner#
605db2f26eSSascha Wildner# Evaluate a WMI method call
615db2f26eSSascha Wildner#
625db2f26eSSascha Wildner# device_t dev:  Device to use
635db2f26eSSascha Wildner# const char* guid_string:  String form of the GUID
645db2f26eSSascha Wildner# UINT8 instance: instance id
655db2f26eSSascha Wildner# UINT32 method_id: method to call
665db2f26eSSascha Wildner# const ACPI_BUFFER* in: input data
675db2f26eSSascha Wildner# ACPI_BUFFER* out: output buffer
685db2f26eSSascha Wildner#
695db2f26eSSascha WildnerMETHOD ACPI_STATUS evaluate_call {
705db2f26eSSascha Wildner	device_t	dev;
715db2f26eSSascha Wildner	const char	*guid_string;
725db2f26eSSascha Wildner	UINT8		instance;
735db2f26eSSascha Wildner	UINT32		method_id;
745db2f26eSSascha Wildner	const ACPI_BUFFER *in;
755db2f26eSSascha Wildner	ACPI_BUFFER	*out;
765db2f26eSSascha Wildner};
775db2f26eSSascha Wildner
785db2f26eSSascha Wildner#
795db2f26eSSascha Wildner# Get content of a WMI block
805db2f26eSSascha Wildner#
815db2f26eSSascha Wildner# device_t dev:  Device to use
825db2f26eSSascha Wildner# const char* guid_string:  String form of the GUID
835db2f26eSSascha Wildner# UINT8 instance: instance id
845db2f26eSSascha Wildner# ACPI_BUFFER* out: output buffer
855db2f26eSSascha Wildner#
865db2f26eSSascha WildnerMETHOD ACPI_STATUS get_block {
875db2f26eSSascha Wildner	device_t	dev;
885db2f26eSSascha Wildner	const char	*guid_string;
895db2f26eSSascha Wildner	UINT8		instance;
905db2f26eSSascha Wildner	ACPI_BUFFER	*out;
915db2f26eSSascha Wildner};
925db2f26eSSascha Wildner#
935db2f26eSSascha Wildner# Write to a WMI data block
945db2f26eSSascha Wildner#
955db2f26eSSascha Wildner# device_t dev:  Device to use
965db2f26eSSascha Wildner# const char* guid_string:  String form of the GUID
975db2f26eSSascha Wildner# UINT8 instance: instance id
985db2f26eSSascha Wildner# const ACPI_BUFFER* in: input data
995db2f26eSSascha Wildner#
1005db2f26eSSascha WildnerMETHOD ACPI_STATUS set_block {
1015db2f26eSSascha Wildner	device_t	dev;
1025db2f26eSSascha Wildner	const char	*guid_string;
1035db2f26eSSascha Wildner	UINT8		instance;
1045db2f26eSSascha Wildner	const ACPI_BUFFER *in;
1055db2f26eSSascha Wildner};
1065db2f26eSSascha Wildner
1075db2f26eSSascha Wildner#
1085db2f26eSSascha Wildner# Install wmi event handler
1095db2f26eSSascha Wildner#
1105db2f26eSSascha Wildner# device_t dev:  Device to use
1115db2f26eSSascha Wildner# const char* guid_string:  String form of the GUID
1125db2f26eSSascha Wildner# ACPI_NOTIFY_HANDLER handler: Handler
1135db2f26eSSascha Wildner# void* data: Payload
1145db2f26eSSascha Wildner#
1155db2f26eSSascha WildnerMETHOD ACPI_STATUS install_event_handler {
1165db2f26eSSascha Wildner	device_t	dev;
1175db2f26eSSascha Wildner	const char	*guid_string;
1185db2f26eSSascha Wildner	ACPI_NOTIFY_HANDLER handler;
1195db2f26eSSascha Wildner	void		*data;
1205db2f26eSSascha Wildner};
1215db2f26eSSascha Wildner
1225db2f26eSSascha Wildner#
1235db2f26eSSascha Wildner# Remove wmi event handler
1245db2f26eSSascha Wildner#
1255db2f26eSSascha Wildner# device_t dev:  Device to use
1265db2f26eSSascha Wildner# const char* guid_string:  String form of the GUID
1275db2f26eSSascha Wildner#
1285db2f26eSSascha WildnerMETHOD ACPI_STATUS remove_event_handler {
1295db2f26eSSascha Wildner	device_t	dev;
1305db2f26eSSascha Wildner	const char	*guid_string;
1315db2f26eSSascha Wildner};
1325db2f26eSSascha Wildner
1335db2f26eSSascha Wildner
1345db2f26eSSascha Wildner#
1355db2f26eSSascha Wildner# Get event data associated to an event
1365db2f26eSSascha Wildner#
1375db2f26eSSascha Wildner# device_t dev:  Device to use
1385db2f26eSSascha Wildner# UINT32 event_id: event id
1395db2f26eSSascha Wildner# ACPI_BUFFER* out: output buffer
1405db2f26eSSascha Wildner#
1415db2f26eSSascha WildnerMETHOD ACPI_STATUS get_event_data {
1425db2f26eSSascha Wildner	device_t	dev;
1435db2f26eSSascha Wildner	UINT32		event_id;
1445db2f26eSSascha Wildner	ACPI_BUFFER	*out;
1455db2f26eSSascha Wildner};
146