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 */