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) {