Module Name:    src
Committed By:   jruoho
Date:           Tue Oct 26 05:28:29 UTC 2010

Modified Files:
        src/sys/dev/acpi: asus_acpi.c hpqlb_acpi.c

Log Message:
Add support for module(9).


To generate a diff of this commit:
cvs rdiff -u -r1.20 -r1.21 src/sys/dev/acpi/asus_acpi.c
cvs rdiff -u -r1.7 -r1.8 src/sys/dev/acpi/hpqlb_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/asus_acpi.c
diff -u src/sys/dev/acpi/asus_acpi.c:1.20 src/sys/dev/acpi/asus_acpi.c:1.21
--- src/sys/dev/acpi/asus_acpi.c:1.20	Thu Apr 15 07:02:24 2010
+++ src/sys/dev/acpi/asus_acpi.c	Tue Oct 26 05:28:29 2010
@@ -1,4 +1,4 @@
-/* $NetBSD: asus_acpi.c,v 1.20 2010/04/15 07:02:24 jruoho Exp $ */
+/* $NetBSD: asus_acpi.c,v 1.21 2010/10/26 05:28:29 jruoho Exp $ */
 
 /*-
  * Copyright (c) 2007, 2008, 2009 Jared D. McNeill <jmcne...@invisible.ca>
@@ -27,10 +27,11 @@
  */
 
 #include <sys/cdefs.h>
-__KERNEL_RCSID(0, "$NetBSD: asus_acpi.c,v 1.20 2010/04/15 07:02:24 jruoho Exp $");
+__KERNEL_RCSID(0, "$NetBSD: asus_acpi.c,v 1.21 2010/10/26 05:28:29 jruoho Exp $");
 
 #include <sys/param.h>
 #include <sys/device.h>
+#include <sys/module.h>
 #include <sys/sysctl.h>
 #include <sys/systm.h>
 
@@ -320,7 +321,7 @@
 		if (err || newp == NULL)
 			return err;
 
-		if (tmp < 0 || tmp >= sc->sc_cfvnum)
+		if (tmp < 0 || (uint64_t)tmp >= sc->sc_cfvnum)
 			return EINVAL;
 
 		rv = acpi_eval_set_integer(sc->sc_node->ad_handle,
@@ -410,3 +411,30 @@
 		*speed = (rpmh << 8) | rpml;
 	return true;
 }
+
+#ifdef _MODULE
+
+MODULE(MODULE_CLASS_DRIVER, asus, NULL);
+
+#include "ioconf.c"
+
+static int
+asus_modcmd(modcmd_t cmd, void *context)
+{
+
+	switch (cmd) {
+
+	case MODULE_CMD_INIT:
+		return config_init_component(cfdriver_ioconf_asus,
+		    cfattach_ioconf_asus, cfdata_ioconf_asus);
+
+	case MODULE_CMD_FINI:
+		return config_fini_component(cfdriver_ioconf_asus,
+		    cfattach_ioconf_asus, cfdata_ioconf_asus);
+
+	default:
+		return ENOTTY;
+	}
+}
+
+#endif	/* _MODULE */

Index: src/sys/dev/acpi/hpqlb_acpi.c
diff -u src/sys/dev/acpi/hpqlb_acpi.c:1.7 src/sys/dev/acpi/hpqlb_acpi.c:1.8
--- src/sys/dev/acpi/hpqlb_acpi.c:1.7	Fri Mar  5 14:00:17 2010
+++ src/sys/dev/acpi/hpqlb_acpi.c	Tue Oct 26 05:28:29 2010
@@ -1,4 +1,4 @@
-/* $NetBSD: hpqlb_acpi.c,v 1.7 2010/03/05 14:00:17 jruoho Exp $ */
+/* $NetBSD: hpqlb_acpi.c,v 1.8 2010/10/26 05:28:29 jruoho Exp $ */
 
 /*-
  * Copyright (c) 2008  Christoph Egger <ceg...@netbsd.org>
@@ -27,10 +27,11 @@
  */
 
 #include <sys/cdefs.h>
-__KERNEL_RCSID(0, "$NetBSD: hpqlb_acpi.c,v 1.7 2010/03/05 14:00:17 jruoho Exp $");
+__KERNEL_RCSID(0, "$NetBSD: hpqlb_acpi.c,v 1.8 2010/10/26 05:28:29 jruoho Exp $");
 
 #include <sys/param.h>
 #include <sys/device.h>
+#include <sys/module.h>
 #include <sys/systm.h>
 
 #include <machine/pio.h>
@@ -46,12 +47,6 @@
 #define _COMPONENT		ACPI_RESOURCE_COMPONENT
 ACPI_MODULE_NAME		("hpqlb_acpi")
 
-#ifdef HPQLB_DEBUG
-#define DPRINTF(x)		do { printf x; } while (/* CONSTCOND */0)
-#else
-#define DPRINTF(x)
-#endif
-
 struct hpqlb_softc {
 	device_t sc_dev;
 	struct acpi_devnode *sc_node;
@@ -89,6 +84,7 @@
 
 static int hpqlb_match(device_t, cfdata_t, void *);
 static void hpqlb_attach(device_t, device_t, void *);
+static int hpqlb_detach(device_t, int);
 
 static int hpqlb_finalize(device_t);
 static int hpqlb_hotkey_handler(struct wskbd_softc *, void *, u_int, int);
@@ -97,7 +93,7 @@
 static bool hpqlb_resume(device_t, const pmf_qual_t *);
 
 CFATTACH_DECL_NEW(hpqlb, sizeof(struct hpqlb_softc),
-    hpqlb_match, hpqlb_attach, NULL, NULL);
+    hpqlb_match, hpqlb_attach, hpqlb_detach, NULL);
 
 static const char * const hpqlb_ids[] = {
 	"HPQ0006",
@@ -131,29 +127,44 @@
 	hpqlb_init(self);
 
 	if (config_finalize_register(self, hpqlb_finalize) != 0)
-		aprint_error_dev(self,
-			"WARNING: unable to register hpqlb finalizer\n");
+		aprint_error_dev(self, "unable to register hpqlb finalizer\n");
 
 	sc->sc_smpsw_displaycycle_valid = true;
+
 	sc->sc_smpsw[HP_PSW_DISPLAY_CYCLE].smpsw_name =
 	    PSWITCH_HK_DISPLAY_CYCLE;
+
 	sc->sc_smpsw[HP_PSW_DISPLAY_CYCLE].smpsw_type =
 	    PSWITCH_TYPE_HOTKEY;
-	if (sysmon_pswitch_register(&sc->sc_smpsw[HP_PSW_DISPLAY_CYCLE])) {
-		aprint_error_dev(self, "couldn't register with sysmon\n");
+
+	if (sysmon_pswitch_register(&sc->sc_smpsw[HP_PSW_DISPLAY_CYCLE]) != 0)
 		sc->sc_smpsw_displaycycle_valid = false;
-	}
 
 	sc->sc_smpsw_sleep_valid = true;
 	sc->sc_smpsw[HP_PSW_SLEEP].smpsw_name = device_xname(self);
 	sc->sc_smpsw[HP_PSW_SLEEP].smpsw_type = PSWITCH_TYPE_SLEEP;
-	if (sysmon_pswitch_register(&sc->sc_smpsw[HP_PSW_SLEEP])) {
-		aprint_error_dev(self, "couldn't register sleep with sysmon\n");
+
+	if (sysmon_pswitch_register(&sc->sc_smpsw[HP_PSW_SLEEP]) != 0)
 		sc->sc_smpsw_sleep_valid = false;
-	}
 
-	if (!pmf_device_register(self, NULL, hpqlb_resume))
-		aprint_error_dev(self, "couldn't establish power handler\n");
+	(void)pmf_device_register(self, NULL, hpqlb_resume);
+}
+
+static int
+hpqlb_detach(device_t self, int flags)
+{
+	struct hpqlb_softc *sc = device_private(self);
+
+	pmf_device_deregister(self);
+	wskbd_hotkey_deregister(sc->sc_wskbddev);
+
+	if (sc->sc_smpsw_sleep_valid != false)
+		sysmon_pswitch_unregister(&sc->sc_smpsw[HP_PSW_SLEEP]);
+
+	if (sc->sc_smpsw_displaycycle_valid != false)
+		sysmon_pswitch_unregister(&sc->sc_smpsw[HP_PSW_DISPLAY_CYCLE]);
+
+	return 0;
 }
 
 static int
@@ -193,11 +204,8 @@
 	case HP_QLB_Sleep:
 		if (type != WSCONS_EVENT_KEY_DOWN)
 			break;
-		if (sc->sc_smpsw_sleep_valid == false) {
-			DPRINTF(("%s: Sleep hotkey\n",
-			    device_xname(sc->sc_dev)));
+		if (sc->sc_smpsw_sleep_valid == false)
 			break;
-		}
 		sysmon_pswitch_event(&sc->sc_smpsw[HP_PSW_SLEEP],
 			PSWITCH_EVENT_PRESSED);
 		break;
@@ -219,8 +227,9 @@
 		pmf_event_inject(NULL, PMFE_CHASSIS_LID_OPEN);
 		break;
 	default:
-		DPRINTF(("%s: unknown hotkey 0x%02x\n",
-			device_xname(sc->sc_dev), value));
+
+		ACPI_DEBUG_PRINT((ACPI_DB_INFO, "unknown hotkey "
+			"0x%02x\n", value));
 		ret = 0; /* Assume, this is no hotkey */
 		break;
 	}
@@ -293,3 +302,30 @@
 
 	return true;
 }
+
+#ifdef _MODULE
+
+MODULE(MODULE_CLASS_DRIVER, hpqlb, NULL);
+
+#include "ioconf.c"
+
+static int
+hpqlb_modcmd(modcmd_t cmd, void *context)
+{
+
+	switch (cmd) {
+
+	case MODULE_CMD_INIT:
+		return config_init_component(cfdriver_ioconf_hpqlb,
+		    cfattach_ioconf_hpqlb, cfdata_ioconf_hpqlb);
+
+	case MODULE_CMD_FINI:
+		return config_fini_component(cfdriver_ioconf_hpqlb,
+		    cfattach_ioconf_hpqlb, cfdata_ioconf_hpqlb);
+
+	default:
+		return ENOTTY;
+	}
+}
+
+#endif	/* _MODULE */

Reply via email to