Module Name:    src
Committed By:   cegger
Date:           Sun Nov 29 21:32:50 UTC 2009

Modified Files:
        src/sys/dev/acpi: acpi.c acpi_lid.c acpivar.h thinkpad_acpi.c
            wmi_acpi.c

Log Message:
Introduce acpi_eval_set_integer().
Use it in various acpi drivers to simplify code.
Patch presented on tech-kern@:
http://mail-index.netbsd.org/tech-kern/2009/11/28/msg006552.html

No comments.

XXX Is there an acpi(9) manpage?


To generate a diff of this commit:
cvs rdiff -u -r1.135 -r1.136 src/sys/dev/acpi/acpi.c
cvs rdiff -u -r1.28 -r1.29 src/sys/dev/acpi/acpi_lid.c
cvs rdiff -u -r1.37 -r1.38 src/sys/dev/acpi/acpivar.h
cvs rdiff -u -r1.20 -r1.21 src/sys/dev/acpi/thinkpad_acpi.c
cvs rdiff -u -r1.2 -r1.3 src/sys/dev/acpi/wmi_acpi.c

Please note that diffs are not public domain; they are subject to the
copyright notices on the relevant files.

Modified files:

Index: src/sys/dev/acpi/acpi.c
diff -u src/sys/dev/acpi/acpi.c:1.135 src/sys/dev/acpi/acpi.c:1.136
--- src/sys/dev/acpi/acpi.c:1.135	Sat Nov 28 17:03:17 2009
+++ src/sys/dev/acpi/acpi.c	Sun Nov 29 21:32:50 2009
@@ -1,4 +1,4 @@
-/*	$NetBSD: acpi.c,v 1.135 2009/11/28 17:03:17 cegger Exp $	*/
+/*	$NetBSD: acpi.c,v 1.136 2009/11/29 21:32:50 cegger Exp $	*/
 
 /*-
  * Copyright (c) 2003, 2007 The NetBSD Foundation, Inc.
@@ -70,7 +70,7 @@
  */
 
 #include <sys/cdefs.h>
-__KERNEL_RCSID(0, "$NetBSD: acpi.c,v 1.135 2009/11/28 17:03:17 cegger Exp $");
+__KERNEL_RCSID(0, "$NetBSD: acpi.c,v 1.136 2009/11/29 21:32:50 cegger Exp $");
 
 #include "opt_acpi.h"
 #include "opt_pcifixup.h"
@@ -1171,6 +1171,24 @@
 	return rv;
 }
 
+ACPI_STATUS
+acpi_eval_set_integer(ACPI_HANDLE handle, const char *path, ACPI_INTEGER arg)
+{
+	ACPI_OBJECT param_arg;
+	ACPI_OBJECT_LIST param_args;
+
+	if (handle == NULL)
+		handle = ACPI_ROOT_OBJECT;
+
+	param_arg.Type = ACPI_TYPE_INTEGER;
+	param_arg.Integer.Value = arg;
+
+	param_args.Count = 1;
+	param_args.Pointer = &param_arg;
+
+	return AcpiEvaluateObject(handle, path, &param_args, NULL);
+}
+
 /*
  * acpi_eval_string:
  *

Index: src/sys/dev/acpi/acpi_lid.c
diff -u src/sys/dev/acpi/acpi_lid.c:1.28 src/sys/dev/acpi/acpi_lid.c:1.29
--- src/sys/dev/acpi/acpi_lid.c:1.28	Tue Aug 25 10:34:08 2009
+++ src/sys/dev/acpi/acpi_lid.c	Sun Nov 29 21:32:50 2009
@@ -1,4 +1,4 @@
-/*	$NetBSD: acpi_lid.c,v 1.28 2009/08/25 10:34:08 jmcneill Exp $	*/
+/*	$NetBSD: acpi_lid.c,v 1.29 2009/11/29 21:32:50 cegger Exp $	*/
 
 /*
  * Copyright 2001, 2003 Wasabi Systems, Inc.
@@ -40,7 +40,7 @@
  */
 
 #include <sys/cdefs.h>
-__KERNEL_RCSID(0, "$NetBSD: acpi_lid.c,v 1.28 2009/08/25 10:34:08 jmcneill Exp $");
+__KERNEL_RCSID(0, "$NetBSD: acpi_lid.c,v 1.29 2009/11/29 21:32:50 cegger Exp $");
 
 #include <sys/param.h>
 #include <sys/systm.h>
@@ -155,17 +155,9 @@
 	struct acpilid_softc *sc = device_private(dv);
 
 	ACPI_STATUS rv;
-        ACPI_OBJECT_LIST ArgList;
-        ACPI_OBJECT Arg;
 
-        ArgList.Count = 1;
-	ArgList.Pointer = &Arg;
-
-	Arg.Type = ACPI_TYPE_INTEGER;
-	Arg.Integer.Value = enable ? 1 : 0;
-
-	rv = AcpiEvaluateObject(sc->sc_node->ad_handle, "_PSW",
-	    &ArgList, NULL);
+	rv = acpi_eval_set_integer(sc->sc_node->ad_handle, "_PSW",
+	    enable ? 1 : 0);
 	if (ACPI_FAILURE(rv) && rv != AE_NOT_FOUND)
 		aprint_error_dev(dv,
 		    "unable to evaluate _PSW handler: %s\n",

Index: src/sys/dev/acpi/acpivar.h
diff -u src/sys/dev/acpi/acpivar.h:1.37 src/sys/dev/acpi/acpivar.h:1.38
--- src/sys/dev/acpi/acpivar.h:1.37	Sat Nov 28 17:02:14 2009
+++ src/sys/dev/acpi/acpivar.h	Sun Nov 29 21:32:50 2009
@@ -1,4 +1,4 @@
-/*	$NetBSD: acpivar.h,v 1.37 2009/11/28 17:02:14 cegger Exp $	*/
+/*	$NetBSD: acpivar.h,v 1.38 2009/11/29 21:32:50 cegger Exp $	*/
 
 /*
  * Copyright 2001 Wasabi Systems, Inc.
@@ -267,6 +267,8 @@
 void		acpi_clear_wake_gpe(ACPI_HANDLE);
 
 ACPI_STATUS	acpi_eval_integer(ACPI_HANDLE, const char *, ACPI_INTEGER *);
+ACPI_STATUS	acpi_eval_set_integer(ACPI_HANDLE handle, const char *path,
+		    ACPI_INTEGER arg);
 ACPI_STATUS	acpi_eval_string(ACPI_HANDLE, const char *, char **);
 ACPI_STATUS	acpi_eval_struct(ACPI_HANDLE, const char *, ACPI_BUFFER *);
 

Index: src/sys/dev/acpi/thinkpad_acpi.c
diff -u src/sys/dev/acpi/thinkpad_acpi.c:1.20 src/sys/dev/acpi/thinkpad_acpi.c:1.21
--- src/sys/dev/acpi/thinkpad_acpi.c:1.20	Fri Sep 25 20:26:26 2009
+++ src/sys/dev/acpi/thinkpad_acpi.c	Sun Nov 29 21:32:50 2009
@@ -1,4 +1,4 @@
-/* $NetBSD: thinkpad_acpi.c,v 1.20 2009/09/25 20:26:26 dyoung Exp $ */
+/* $NetBSD: thinkpad_acpi.c,v 1.21 2009/11/29 21:32:50 cegger Exp $ */
 
 /*-
  * Copyright (c) 2007 Jared D. McNeill <jmcne...@invisible.ca>
@@ -27,7 +27,7 @@
  */
 
 #include <sys/cdefs.h>
-__KERNEL_RCSID(0, "$NetBSD: thinkpad_acpi.c,v 1.20 2009/09/25 20:26:26 dyoung Exp $");
+__KERNEL_RCSID(0, "$NetBSD: thinkpad_acpi.c,v 1.21 2009/11/29 21:32:50 cegger Exp $");
 
 #include <sys/types.h>
 #include <sys/param.h>
@@ -419,9 +419,7 @@
 	}
 
 	/* Enable hotkey events */
-	params.Count = 1;
-	param[0].Integer.Value = 1;
-	rv = AcpiEvaluateObject(sc->sc_node->ad_handle, "MHKC", &params, NULL);
+	rv = acpi_eval_set_integer(sc->sc_node->ad_handle, "MHKC", 1);
 	if (ACPI_FAILURE(rv)) {
 		aprint_error_dev(sc->sc_dev, "couldn't enable hotkeys: %s\n",
 		    AcpiFormatException(rv));
@@ -429,8 +427,7 @@
 	}
 
 	/* Claim ownership of brightness control */
-	param[0].Integer.Value = 0;
-	(void)AcpiEvaluateObject(sc->sc_node->ad_handle, "PWMS", &params, NULL);
+	(void)acpi_eval_set_integer(sc->sc_node->ad_handle, "PWMS", 0);
 
 	return AE_OK;
 }
@@ -601,18 +598,12 @@
 static void
 thinkpad_cmos(thinkpad_softc_t *sc, uint8_t cmd)
 {
-	ACPI_OBJECT param;
-	ACPI_OBJECT_LIST params;
 	ACPI_STATUS rv;
 
 	if (sc->sc_cmoshdl_valid == false)
 		return;
 	
-	params.Count = 1;
-	params.Pointer = &param;
-	param.Type = ACPI_TYPE_INTEGER;
-	param.Integer.Value = cmd;
-	rv = AcpiEvaluateObject(sc->sc_cmoshdl, NULL, &params, NULL);
+	rv = acpi_eval_set_integer(sc->sc_cmoshdl, NULL, cmd);
 	if (ACPI_FAILURE(rv))
 		aprint_error_dev(sc->sc_dev, "couldn't evalute CMOS: %s\n",
 		    AcpiFormatException(rv));

Index: src/sys/dev/acpi/wmi_acpi.c
diff -u src/sys/dev/acpi/wmi_acpi.c:1.2 src/sys/dev/acpi/wmi_acpi.c:1.3
--- src/sys/dev/acpi/wmi_acpi.c:1.2	Sat Oct  3 15:49:21 2009
+++ src/sys/dev/acpi/wmi_acpi.c	Sun Nov 29 21:32:50 2009
@@ -1,4 +1,4 @@
-/*	$NetBSD: wmi_acpi.c,v 1.2 2009/10/03 15:49:21 jmcneill Exp $	*/
+/*	$NetBSD: wmi_acpi.c,v 1.3 2009/11/29 21:32:50 cegger Exp $	*/
 
 /*-
  * Copyright (c) 2009 Jukka Ruohonen <jruoho...@iki.fi>
@@ -27,7 +27,7 @@
  * SUCH DAMAGE.
  */
 #include <sys/cdefs.h>
-__KERNEL_RCSID(0, "$NetBSD: wmi_acpi.c,v 1.2 2009/10/03 15:49:21 jmcneill Exp $");
+__KERNEL_RCSID(0, "$NetBSD: wmi_acpi.c,v 1.3 2009/11/29 21:32:50 cegger Exp $");
 
 #include <sys/param.h>
 #include <sys/device.h>
@@ -541,8 +541,6 @@
 acpi_wmi_enable(const ACPI_HANDLE hdl, const char * const oid,
     const bool data, const bool flag)
 {
-	ACPI_OBJECT_LIST arg;
-	ACPI_OBJECT obj;
 	char path[5];
 	const char *str;
 
@@ -551,13 +549,7 @@
 	(void)strlcpy(path, str, sizeof(path));
 	(void)strlcat(path, oid, sizeof(path));
 
-	obj.Type = ACPI_TYPE_INTEGER;
-	obj.Integer.Value = (flag != false) ? 0x01 : 0x00;
-
-	arg.Count = 0x01;
-	arg.Pointer = &obj;
-
-	return AcpiEvaluateObject(hdl, path, &arg, NULL);
+	return acpi_eval_set_integer(hdl, path, (flag != false) ? 0x01 : 0x00);
 }
 /*
  * Makes a WMI data block query (WQxx). The corresponding control

Reply via email to