Module Name:    src
Committed By:   jruoho
Date:           Sat Apr 24 06:57:11 UTC 2010

Modified Files:
        src/sys/dev/acpi: acpi_power.c acpi_util.c acpi_util.h

Log Message:
Add utility function acpi_get_node().

This retrieves a struct acpi_devnode from a handle. Since this requires
accessing the global softc, it is better to do it in one place alone. The
same goes for possible locking of the node-queue; it is better not to
publicize such a lock for generic device drivers.


To generate a diff of this commit:
cvs rdiff -u -r1.6 -r1.7 src/sys/dev/acpi/acpi_power.c
cvs rdiff -u -r1.2 -r1.3 src/sys/dev/acpi/acpi_util.c
cvs rdiff -u -r1.1 -r1.2 src/sys/dev/acpi/acpi_util.h

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_power.c
diff -u src/sys/dev/acpi/acpi_power.c:1.6 src/sys/dev/acpi/acpi_power.c:1.7
--- src/sys/dev/acpi/acpi_power.c:1.6	Sat Apr 24 06:31:44 2010
+++ src/sys/dev/acpi/acpi_power.c	Sat Apr 24 06:57:10 2010
@@ -1,4 +1,4 @@
-/* $NetBSD: acpi_power.c,v 1.6 2010/04/24 06:31:44 jruoho Exp $ */
+/* $NetBSD: acpi_power.c,v 1.7 2010/04/24 06:57:10 jruoho Exp $ */
 
 /*-
  * Copyright (c) 2009, 2010 The NetBSD Foundation, Inc.
@@ -56,7 +56,7 @@
  */
 
 #include <sys/cdefs.h>
-__KERNEL_RCSID(0, "$NetBSD: acpi_power.c,v 1.6 2010/04/24 06:31:44 jruoho Exp $");
+__KERNEL_RCSID(0, "$NetBSD: acpi_power.c,v 1.7 2010/04/24 06:57:10 jruoho Exp $");
 
 #include <sys/param.h>
 #include <sys/kmem.h>
@@ -243,20 +243,12 @@
 void
 acpi_power_deregister_from_handle(ACPI_HANDLE hdl)
 {
-	struct acpi_softc *sc = acpi_softc; /* XXX. */
-	struct acpi_devnode *ad;
+	struct acpi_devnode *ad = acpi_get_node(hdl);
 
-	if (sc == NULL)
+	if (ad == NULL)
 		return;
 
-	SIMPLEQ_FOREACH(ad, &sc->ad_head, ad_list) {
-
-		if (ad->ad_handle == hdl)
-			return acpi_power_deregister(ad);
-	}
-
-	aprint_error_dev(sc->sc_dev, "%s: failed to "
-	    "find node %s\n", __func__, acpi_xname(hdl));
+	acpi_power_deregister(ad);
 }
 
 /*
@@ -460,22 +452,12 @@
 bool
 acpi_power_set_from_handle(ACPI_HANDLE hdl, int state)
 {
-	struct acpi_softc *sc = acpi_softc; /* XXX. */
-	struct acpi_devnode *ad;
+	struct acpi_devnode *ad = acpi_get_node(hdl);
 
-	if (sc == NULL)
+	if (ad == NULL)
 		return false;
 
-	SIMPLEQ_FOREACH(ad, &sc->ad_head, ad_list) {
-
-		if (ad->ad_handle == hdl)
-			return acpi_power_set(ad, state);
-	}
-
-	aprint_error_dev(sc->sc_dev, "%s: failed to "
-	    "find node %s\n", __func__, acpi_xname(hdl));
-
-	return false;
+	return acpi_power_set(ad, state);
 }
 
 static ACPI_STATUS

Index: src/sys/dev/acpi/acpi_util.c
diff -u src/sys/dev/acpi/acpi_util.c:1.2 src/sys/dev/acpi/acpi_util.c:1.3
--- src/sys/dev/acpi/acpi_util.c:1.2	Thu Apr 15 04:03:39 2010
+++ src/sys/dev/acpi/acpi_util.c	Sat Apr 24 06:57:10 2010
@@ -1,4 +1,4 @@
-/*	$NetBSD: acpi_util.c,v 1.2 2010/04/15 04:03:39 jruoho Exp $ */
+/*	$NetBSD: acpi_util.c,v 1.3 2010/04/24 06:57:10 jruoho Exp $ */
 
 /*-
  * Copyright (c) 2003, 2007 The NetBSD Foundation, Inc.
@@ -65,7 +65,7 @@
  */
 
 #include <sys/cdefs.h>
-__KERNEL_RCSID(0, "$NetBSD: acpi_util.c,v 1.2 2010/04/15 04:03:39 jruoho Exp $");
+__KERNEL_RCSID(0, "$NetBSD: acpi_util.c,v 1.3 2010/04/24 06:57:10 jruoho Exp $");
 
 #include <sys/param.h>
 
@@ -258,6 +258,30 @@
 }
 
 /*
+ * Get a device node from a handle.
+ */
+struct acpi_devnode *
+acpi_get_node(ACPI_HANDLE handle)
+{
+	struct acpi_softc *sc = acpi_softc; /* XXX. */
+	struct acpi_devnode *ad;
+
+	if (sc == NULL || handle == NULL)
+		return NULL;
+
+	SIMPLEQ_FOREACH(ad, &sc->ad_head, ad_list) {
+
+		if (ad->ad_handle == handle)
+			return ad;
+	}
+
+	aprint_debug_dev(sc->sc_dev, "%s: failed to "
+	    "find node %s\n", __func__, acpi_name(handle));
+
+	return NULL;
+}
+
+/*
  * Return a complete pathname from a handle.
  *
  * Note that the function uses static data storage;

Index: src/sys/dev/acpi/acpi_util.h
diff -u src/sys/dev/acpi/acpi_util.h:1.1 src/sys/dev/acpi/acpi_util.h:1.2
--- src/sys/dev/acpi/acpi_util.h:1.1	Wed Apr 14 17:12:14 2010
+++ src/sys/dev/acpi/acpi_util.h	Sat Apr 24 06:57:10 2010
@@ -1,4 +1,4 @@
-/*	$NetBSD: acpi_util.h,v 1.1 2010/04/14 17:12:14 jruoho Exp $ */
+/*	$NetBSD: acpi_util.h,v 1.2 2010/04/24 06:57:10 jruoho Exp $ */
 
 /*-
  * Copyright (c) 2003, 2007 The NetBSD Foundation, Inc.
@@ -78,6 +78,7 @@
 			ACPI_STATUS (*)(ACPI_OBJECT *, void *), void *);
 ACPI_STATUS	acpi_get(ACPI_HANDLE, ACPI_BUFFER *,
 			ACPI_STATUS (*)(ACPI_HANDLE, ACPI_BUFFER *));
+struct acpi_devnode *acpi_get_node(ACPI_HANDLE handle);
 
 const char*	acpi_name(ACPI_HANDLE);
 

Reply via email to