Module Name:    src
Committed By:   jruoho
Date:           Sun Feb 28 17:22:41 UTC 2010

Modified Files:
        src/sys/dev/acpi: acpi_acad.c acpi_bat.c acpi_button.c acpi_lid.c
            thinkpad_acpi.c

Log Message:
Introduce support for ACPI kernel modules.

Tested on couple of laptops.


To generate a diff of this commit:
cvs rdiff -u -r1.40 -r1.41 src/sys/dev/acpi/acpi_acad.c
cvs rdiff -u -r1.82 -r1.83 src/sys/dev/acpi/acpi_bat.c
cvs rdiff -u -r1.30 -r1.31 src/sys/dev/acpi/acpi_button.c
cvs rdiff -u -r1.34 -r1.35 src/sys/dev/acpi/acpi_lid.c
cvs rdiff -u -r1.26 -r1.27 src/sys/dev/acpi/thinkpad_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_acad.c
diff -u src/sys/dev/acpi/acpi_acad.c:1.40 src/sys/dev/acpi/acpi_acad.c:1.41
--- src/sys/dev/acpi/acpi_acad.c:1.40	Wed Feb 24 22:37:56 2010
+++ src/sys/dev/acpi/acpi_acad.c	Sun Feb 28 17:22:41 2010
@@ -1,4 +1,4 @@
-/*	$NetBSD: acpi_acad.c,v 1.40 2010/02/24 22:37:56 dyoung Exp $	*/
+/*	$NetBSD: acpi_acad.c,v 1.41 2010/02/28 17:22:41 jruoho Exp $	*/
 
 /*
  * Copyright 2001 Wasabi Systems, Inc.
@@ -40,11 +40,12 @@
  */
 
 #include <sys/cdefs.h>
-__KERNEL_RCSID(0, "$NetBSD: acpi_acad.c,v 1.40 2010/02/24 22:37:56 dyoung Exp $");
+__KERNEL_RCSID(0, "$NetBSD: acpi_acad.c,v 1.41 2010/02/28 17:22:41 jruoho Exp $");
 
 #include <sys/param.h>
 #include <sys/systm.h>
 #include <sys/device.h>
+#include <sys/module.h>
 #include <sys/mutex.h>
 
 #include <dev/acpi/acpica.h>
@@ -301,3 +302,79 @@
 	sysmon_envsys_destroy(sc->sc_sme);
 	sc->sc_sme = NULL;
 }
+
+#ifdef _MODULE
+
+MODULE(MODULE_CLASS_DRIVER, acpiacad, NULL);
+CFDRIVER_DECL(acpiacad, DV_DULL, NULL);
+
+static int acpiacadloc[] = { -1 };
+extern struct cfattach acpiacad_ca;
+
+static struct cfparent acpiparent = {
+	"acpinodebus", NULL, DVUNIT_ANY
+};
+
+static struct cfdata acpiacad_cfdata[] = {
+	{
+		.cf_name = "acpiacad",
+		.cf_atname = "acpiacad",
+		.cf_unit = 0,
+		.cf_fstate = FSTATE_STAR,
+		.cf_loc = acpiacadloc,
+		.cf_flags = 0,
+		.cf_pspec = &acpiparent,
+	},
+
+	{ NULL }
+};
+
+static int
+acpiacad_modcmd(modcmd_t cmd, void *context)
+{
+	int err;
+
+	switch (cmd) {
+
+	case MODULE_CMD_INIT:
+
+		err = config_cfdriver_attach(&acpiacad_cd);
+
+		if (err != 0)
+			return err;
+
+		err = config_cfattach_attach("acpiacad", &acpiacad_ca);
+
+		if (err != 0) {
+			config_cfdriver_detach(&acpiacad_cd);
+			return err;
+		}
+
+		err = config_cfdata_attach(acpiacad_cfdata, 1);
+
+		if (err != 0) {
+			config_cfattach_detach("acpiacad", &acpiacad_ca);
+			config_cfdriver_detach(&acpiacad_cd);
+			return err;
+		}
+
+		return 0;
+
+	case MODULE_CMD_FINI:
+
+		err = config_cfdata_detach(acpiacad_cfdata);
+
+		if (err != 0)
+			return err;
+
+		config_cfattach_detach("acpiacad", &acpiacad_ca);
+		config_cfdriver_detach(&acpiacad_cd);
+
+		return 0;
+
+	default:
+		return ENOTTY;
+	}
+}
+
+#endif	/* _MODULE */

Index: src/sys/dev/acpi/acpi_bat.c
diff -u src/sys/dev/acpi/acpi_bat.c:1.82 src/sys/dev/acpi/acpi_bat.c:1.83
--- src/sys/dev/acpi/acpi_bat.c:1.82	Wed Feb 24 22:37:56 2010
+++ src/sys/dev/acpi/acpi_bat.c	Sun Feb 28 17:22:41 2010
@@ -1,4 +1,4 @@
-/*	$NetBSD: acpi_bat.c,v 1.82 2010/02/24 22:37:56 dyoung Exp $	*/
+/*	$NetBSD: acpi_bat.c,v 1.83 2010/02/28 17:22:41 jruoho Exp $	*/
 
 /*-
  * Copyright (c) 2003 The NetBSD Foundation, Inc.
@@ -75,13 +75,14 @@
  */
 
 #include <sys/cdefs.h>
-__KERNEL_RCSID(0, "$NetBSD: acpi_bat.c,v 1.82 2010/02/24 22:37:56 dyoung Exp $");
+__KERNEL_RCSID(0, "$NetBSD: acpi_bat.c,v 1.83 2010/02/28 17:22:41 jruoho Exp $");
 
 #include <sys/param.h>
 #include <sys/systm.h>
 #include <sys/kernel.h>		/* for hz */
 #include <sys/kmem.h>
 #include <sys/device.h>
+#include <sys/module.h>
 #include <sys/mutex.h>
 
 #include <dev/sysmon/sysmonvar.h>
@@ -782,3 +783,79 @@
 
 	return true;
 }
+
+#ifdef _MODULE
+
+MODULE(MODULE_CLASS_DRIVER, acpibat, NULL);
+CFDRIVER_DECL(acpibat, DV_DULL, NULL);
+
+static int acpibatloc[] = { -1 };
+extern struct cfattach acpibat_ca;
+
+static struct cfparent acpiparent = {
+	"acpinodebus", NULL, DVUNIT_ANY
+};
+
+static struct cfdata acpibat_cfdata[] = {
+	{
+		.cf_name = "acpibat",
+		.cf_atname = "acpibat",
+		.cf_unit = 0,
+		.cf_fstate = FSTATE_STAR,
+		.cf_loc = acpibatloc,
+		.cf_flags = 0,
+		.cf_pspec = &acpiparent,
+	},
+
+	{ NULL }
+};
+
+static int
+acpibat_modcmd(modcmd_t cmd, void *context)
+{
+	int err;
+
+	switch (cmd) {
+
+	case MODULE_CMD_INIT:
+
+		err = config_cfdriver_attach(&acpibat_cd);
+
+		if (err != 0)
+			return err;
+
+		err = config_cfattach_attach("acpibat", &acpibat_ca);
+
+		if (err != 0) {
+			config_cfdriver_detach(&acpibat_cd);
+			return err;
+		}
+
+		err = config_cfdata_attach(acpibat_cfdata, 1);
+
+		if (err != 0) {
+			config_cfattach_detach("acpibat", &acpibat_ca);
+			config_cfdriver_detach(&acpibat_cd);
+			return err;
+		}
+
+		return 0;
+
+	case MODULE_CMD_FINI:
+
+		err = config_cfdata_detach(acpibat_cfdata);
+
+		if (err != 0)
+			return err;
+
+		config_cfattach_detach("acpibat", &acpibat_ca);
+		config_cfdriver_detach(&acpibat_cd);
+
+		return 0;
+
+	default:
+		return ENOTTY;
+	}
+}
+
+#endif	/* _MODULE */

Index: src/sys/dev/acpi/acpi_button.c
diff -u src/sys/dev/acpi/acpi_button.c:1.30 src/sys/dev/acpi/acpi_button.c:1.31
--- src/sys/dev/acpi/acpi_button.c:1.30	Sun Jan 31 06:10:53 2010
+++ src/sys/dev/acpi/acpi_button.c	Sun Feb 28 17:22:41 2010
@@ -1,4 +1,4 @@
-/*	$NetBSD: acpi_button.c,v 1.30 2010/01/31 06:10:53 jruoho Exp $	*/
+/*	$NetBSD: acpi_button.c,v 1.31 2010/02/28 17:22:41 jruoho Exp $	*/
 
 /*
  * Copyright 2001, 2003 Wasabi Systems, Inc.
@@ -40,11 +40,12 @@
  */
 
 #include <sys/cdefs.h>
-__KERNEL_RCSID(0, "$NetBSD: acpi_button.c,v 1.30 2010/01/31 06:10:53 jruoho Exp $");
+__KERNEL_RCSID(0, "$NetBSD: acpi_button.c,v 1.31 2010/02/28 17:22:41 jruoho Exp $");
 
 #include <sys/param.h>
 #include <sys/systm.h>
 #include <sys/device.h>
+#include <sys/module.h>
 
 #include <dev/acpi/acpica.h>
 #include <dev/acpi/acpireg.h>
@@ -231,3 +232,79 @@
 		    notify);
 	}
 }
+
+#ifdef _MODULE
+
+MODULE(MODULE_CLASS_DRIVER, acpibut, NULL);
+CFDRIVER_DECL(acpibut, DV_DULL, NULL);
+
+static int acpibutloc[] = { -1 };
+extern struct cfattach acpibut_ca;
+
+static struct cfparent acpiparent = {
+	"acpinodebus", NULL, DVUNIT_ANY
+};
+
+static struct cfdata acpibut_cfdata[] = {
+	{
+		.cf_name = "acpibut",
+		.cf_atname = "acpibut",
+		.cf_unit = 0,
+		.cf_fstate = FSTATE_STAR,
+		.cf_loc = acpibutloc,
+		.cf_flags = 0,
+		.cf_pspec = &acpiparent,
+	},
+
+	{ NULL }
+};
+
+static int
+acpibut_modcmd(modcmd_t cmd, void *context)
+{
+	int err;
+
+	switch (cmd) {
+
+	case MODULE_CMD_INIT:
+
+		err = config_cfdriver_attach(&acpibut_cd);
+
+		if (err != 0)
+			return err;
+
+		err = config_cfattach_attach("acpibut", &acpibut_ca);
+
+		if (err != 0) {
+			config_cfdriver_detach(&acpibut_cd);
+			return err;
+		}
+
+		err = config_cfdata_attach(acpibut_cfdata, 1);
+
+		if (err != 0) {
+			config_cfattach_detach("acpibut", &acpibut_ca);
+			config_cfdriver_detach(&acpibut_cd);
+			return err;
+		}
+
+		return 0;
+
+	case MODULE_CMD_FINI:
+
+		err = config_cfdata_detach(acpibut_cfdata);
+
+		if (err != 0)
+			return err;
+
+		config_cfattach_detach("acpibut", &acpibut_ca);
+		config_cfdriver_detach(&acpibut_cd);
+
+		return 0;
+
+	default:
+		return ENOTTY;
+	}
+}
+
+#endif	/* _MODULE */

Index: src/sys/dev/acpi/acpi_lid.c
diff -u src/sys/dev/acpi/acpi_lid.c:1.34 src/sys/dev/acpi/acpi_lid.c:1.35
--- src/sys/dev/acpi/acpi_lid.c:1.34	Sun Feb 28 09:23:30 2010
+++ src/sys/dev/acpi/acpi_lid.c	Sun Feb 28 17:22:41 2010
@@ -1,4 +1,4 @@
-/*	$NetBSD: acpi_lid.c,v 1.34 2010/02/28 09:23:30 jruoho Exp $	*/
+/*	$NetBSD: acpi_lid.c,v 1.35 2010/02/28 17:22:41 jruoho Exp $	*/
 
 /*
  * Copyright 2001, 2003 Wasabi Systems, Inc.
@@ -40,11 +40,12 @@
  */
 
 #include <sys/cdefs.h>
-__KERNEL_RCSID(0, "$NetBSD: acpi_lid.c,v 1.34 2010/02/28 09:23:30 jruoho Exp $");
+__KERNEL_RCSID(0, "$NetBSD: acpi_lid.c,v 1.35 2010/02/28 17:22:41 jruoho Exp $");
 
 #include <sys/param.h>
 #include <sys/systm.h>
 #include <sys/device.h>
+#include <sys/module.h>
 
 #include <dev/acpi/acpica.h>
 #include <dev/acpi/acpireg.h>
@@ -234,3 +235,79 @@
 
 	return true;
 }
+
+#ifdef _MODULE
+
+MODULE(MODULE_CLASS_DRIVER, acpilid, NULL);
+CFDRIVER_DECL(acpilid, DV_DULL, NULL);
+
+static int acpilidloc[] = { -1 };
+extern struct cfattach acpilid_ca;
+
+static struct cfparent acpiparent = {
+	"acpinodebus", NULL, DVUNIT_ANY
+};
+
+static struct cfdata acpilid_cfdata[] = {
+	{
+		.cf_name = "acpilid",
+		.cf_atname = "acpilid",
+		.cf_unit = 0,
+		.cf_fstate = FSTATE_STAR,
+		.cf_loc = acpilidloc,
+		.cf_flags = 0,
+		.cf_pspec = &acpiparent,
+	},
+
+	{ NULL }
+};
+
+static int
+acpilid_modcmd(modcmd_t cmd, void *context)
+{
+	int err;
+
+	switch (cmd) {
+
+	case MODULE_CMD_INIT:
+
+		err = config_cfdriver_attach(&acpilid_cd);
+
+		if (err != 0)
+			return err;
+
+		err = config_cfattach_attach("acpilid", &acpilid_ca);
+
+		if (err != 0) {
+			config_cfdriver_detach(&acpilid_cd);
+			return err;
+		}
+
+		err = config_cfdata_attach(acpilid_cfdata, 1);
+
+		if (err != 0) {
+			config_cfattach_detach("acpilid", &acpilid_ca);
+			config_cfdriver_detach(&acpilid_cd);
+			return err;
+		}
+
+		return 0;
+
+	case MODULE_CMD_FINI:
+
+		err = config_cfdata_detach(acpilid_cfdata);
+
+		if (err != 0)
+			return err;
+
+		config_cfattach_detach("acpilid", &acpilid_ca);
+		config_cfdriver_detach(&acpilid_cd);
+
+		return 0;
+
+	default:
+		return ENOTTY;
+	}
+}
+
+#endif	/* _MODULE */

Index: src/sys/dev/acpi/thinkpad_acpi.c
diff -u src/sys/dev/acpi/thinkpad_acpi.c:1.26 src/sys/dev/acpi/thinkpad_acpi.c:1.27
--- src/sys/dev/acpi/thinkpad_acpi.c:1.26	Wed Feb 24 22:37:56 2010
+++ src/sys/dev/acpi/thinkpad_acpi.c	Sun Feb 28 17:22:41 2010
@@ -1,4 +1,4 @@
-/* $NetBSD: thinkpad_acpi.c,v 1.26 2010/02/24 22:37:56 dyoung Exp $ */
+/* $NetBSD: thinkpad_acpi.c,v 1.27 2010/02/28 17:22:41 jruoho Exp $ */
 
 /*-
  * Copyright (c) 2007 Jared D. McNeill <jmcne...@invisible.ca>
@@ -27,11 +27,12 @@
  */
 
 #include <sys/cdefs.h>
-__KERNEL_RCSID(0, "$NetBSD: thinkpad_acpi.c,v 1.26 2010/02/24 22:37:56 dyoung Exp $");
+__KERNEL_RCSID(0, "$NetBSD: thinkpad_acpi.c,v 1.27 2010/02/28 17:22:41 jruoho Exp $");
 
 #include <sys/types.h>
 #include <sys/param.h>
 #include <sys/malloc.h>
+#include <sys/module.h>
 #include <sys/buf.h>
 #include <sys/callout.h>
 #include <sys/kernel.h>
@@ -673,3 +674,79 @@
 
 	return true;
 }
+
+#ifdef _MODULE
+
+MODULE(MODULE_CLASS_DRIVER, thinkpad, NULL);
+CFDRIVER_DECL(thinkpad, DV_DULL, NULL);
+
+static int thinkpadloc[] = { -1 };
+extern struct cfattach thinkpad_ca;
+
+static struct cfparent acpiparent = {
+	"acpinodebus", NULL, DVUNIT_ANY
+};
+
+static struct cfdata thinkpad_cfdata[] = {
+	{
+		.cf_name = "thinkpad",
+		.cf_atname = "thinkpad",
+		.cf_unit = 0,
+		.cf_fstate = FSTATE_STAR,
+		.cf_loc = thinkpadloc,
+		.cf_flags = 0,
+		.cf_pspec = &acpiparent,
+	},
+
+	{ NULL }
+};
+
+static int
+thinkpad_modcmd(modcmd_t cmd, void *opaque)
+{
+	int err;
+
+	switch (cmd) {
+
+	case MODULE_CMD_INIT:
+
+		err = config_cfdriver_attach(&thinkpad_cd);
+
+		if (err != 0)
+			return err;
+
+		err = config_cfattach_attach("thinkpad", &thinkpad_ca);
+
+		if (err != 0) {
+			config_cfdriver_detach(&thinkpad_cd);
+			return err;
+		}
+
+		err = config_cfdata_attach(thinkpad_cfdata, 1);
+
+		if (err != 0) {
+			config_cfattach_detach("thinkpad", &thinkpad_ca);
+			config_cfdriver_detach(&thinkpad_cd);
+			return err;
+		}
+
+		return 0;
+
+	case MODULE_CMD_FINI:
+
+		err = config_cfdata_detach(thinkpad_cfdata);
+
+		if (err != 0)
+			return err;
+
+		config_cfattach_detach("thinkpad", &thinkpad_ca);
+		config_cfdriver_detach(&thinkpad_cd);
+
+		return 0;
+
+	default:
+		return ENOTTY;
+	}
+}
+
+#endif	/* _MODULE */

Reply via email to