Module Name:    src
Committed By:   kefren
Date:           Thu Apr 23 20:24:23 UTC 2009

Modified Files:
        src/sys/dev/ic: bwi.c bwivar.h
        src/sys/dev/pci: if_bwi_pci.c

Log Message:
Add power hooks. Proposed a couple of days ago on tech-kern@, no
objections received. Tested on Dell Inspiron 2200 with BCM4318


To generate a diff of this commit:
cvs rdiff -u -r1.8 -r1.9 src/sys/dev/ic/bwi.c
cvs rdiff -u -r1.2 -r1.3 src/sys/dev/ic/bwivar.h
cvs rdiff -u -r1.3 -r1.4 src/sys/dev/pci/if_bwi_pci.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/ic/bwi.c
diff -u src/sys/dev/ic/bwi.c:1.8 src/sys/dev/ic/bwi.c:1.9
--- src/sys/dev/ic/bwi.c:1.8	Sat Apr 18 14:58:02 2009
+++ src/sys/dev/ic/bwi.c	Thu Apr 23 20:24:23 2009
@@ -1,4 +1,4 @@
-/*	$NetBSD: bwi.c,v 1.8 2009/04/18 14:58:02 tsutsui Exp $	*/
+/*	$NetBSD: bwi.c,v 1.9 2009/04/23 20:24:23 kefren Exp $	*/
 /*	$OpenBSD: bwi.c,v 1.74 2008/02/25 21:13:30 mglocker Exp $	*/
 
 /*
@@ -49,7 +49,7 @@
 #include "bpfilter.h"
 
 #include <sys/cdefs.h>
-__KERNEL_RCSID(0, "$NetBSD: bwi.c,v 1.8 2009/04/18 14:58:02 tsutsui Exp $");
+__KERNEL_RCSID(0, "$NetBSD: bwi.c,v 1.9 2009/04/23 20:24:23 kefren Exp $");
 
 #include <sys/param.h>
 #include <sys/callout.h>
@@ -9739,3 +9739,23 @@
 
 	return (bwi_rf_calc_rssi(mac, hdr));
 }
+
+bool
+bwi_suspend(device_t dv PMF_FN_ARGS)
+{
+	struct bwi_softc *sc = device_private(dv);
+
+	bwi_power_off(sc, 0);
+
+	return true;
+}
+
+bool
+bwi_resume(device_t dv PMF_FN_ARGS)
+{
+	struct bwi_softc *sc = device_private(dv);
+
+	bwi_power_on(sc, 1);
+
+	return true;
+}

Index: src/sys/dev/ic/bwivar.h
diff -u src/sys/dev/ic/bwivar.h:1.2 src/sys/dev/ic/bwivar.h:1.3
--- src/sys/dev/ic/bwivar.h:1.2	Fri Jan  9 20:49:42 2009
+++ src/sys/dev/ic/bwivar.h	Thu Apr 23 20:24:23 2009
@@ -1,4 +1,4 @@
-/*	$NetBSD: bwivar.h,v 1.2 2009/01/09 20:49:42 macallan Exp $	*/
+/*	$NetBSD: bwivar.h,v 1.3 2009/04/23 20:24:23 kefren Exp $	*/
 /*	$OpenBSD: bwivar.h,v 1.23 2008/02/25 20:36:54 mglocker Exp $	*/
 
 /*
@@ -791,4 +791,8 @@
 int		bwi_attach(struct bwi_softc *);
 void		bwi_detach(struct bwi_softc *);
 
+/* Power Management Framework */
+bool		bwi_suspend(device_t db PMF_FN_ARGS);
+bool		bwi_resume(device_t db PMF_FN_ARGS);
+
 #endif	/* !_DEV_IC_BWIVAR_H */

Index: src/sys/dev/pci/if_bwi_pci.c
diff -u src/sys/dev/pci/if_bwi_pci.c:1.3 src/sys/dev/pci/if_bwi_pci.c:1.4
--- src/sys/dev/pci/if_bwi_pci.c:1.3	Sat Jan 10 12:55:45 2009
+++ src/sys/dev/pci/if_bwi_pci.c	Thu Apr 23 20:24:23 2009
@@ -1,4 +1,4 @@
-/*	$NetBSD: if_bwi_pci.c,v 1.3 2009/01/10 12:55:45 cegger Exp $	*/
+/*	$NetBSD: if_bwi_pci.c,v 1.4 2009/04/23 20:24:23 kefren Exp $	*/
 /*	$OpenBSD: if_bwi_pci.c,v 1.6 2008/02/14 22:10:02 brad Exp $ */
 
 /*
@@ -25,7 +25,7 @@
 #include "bpfilter.h"
 
 #include <sys/cdefs.h>
-__KERNEL_RCSID(0, "$NetBSD: if_bwi_pci.c,v 1.3 2009/01/10 12:55:45 cegger Exp $");
+__KERNEL_RCSID(0, "$NetBSD: if_bwi_pci.c,v 1.4 2009/04/23 20:24:23 kefren Exp $");
 
 #include <sys/param.h>
 #include <sys/callout.h>
@@ -161,6 +161,9 @@
 	sc->sc_pci_subvid = PCI_VENDOR(reg);
 	sc->sc_pci_subdid = PCI_PRODUCT(reg);
 
+	if (!pmf_device_register(self, bwi_suspend, bwi_resume))
+		aprint_error_dev(self, "couldn't establish power handler\n");
+
 	bwi_attach(sc);
 }
 
@@ -170,6 +173,8 @@
 	struct bwi_pci_softc *psc = (struct bwi_pci_softc *)self;
 	struct bwi_softc *sc = &psc->psc_bwi;
 
+	pmf_device_deregister(self);
+
 	bwi_detach(sc);
 
 	if (sc->sc_ih != NULL) {

Reply via email to