Module Name: src Committed By: uwe Date: Sun Apr 5 03:37:07 UTC 2009
Modified Files: src/sys/dev/ic: ne2000.c ne2000var.h src/sys/dev/pcmcia: if_ne_pcmcia.c Log Message: Provide pmf(9) hooks that do what dopowerhooks(9) hook does. XXX: Do NOT call pmf_class_network_register() yet, b/c db8320.c doesn't provide if_stop method! To generate a diff of this commit: cvs rdiff -u -r1.60 -r1.61 src/sys/dev/ic/ne2000.c cvs rdiff -u -r1.19 -r1.20 src/sys/dev/ic/ne2000var.h cvs rdiff -u -r1.155 -r1.156 src/sys/dev/pcmcia/if_ne_pcmcia.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/ne2000.c diff -u src/sys/dev/ic/ne2000.c:1.60 src/sys/dev/ic/ne2000.c:1.61 --- src/sys/dev/ic/ne2000.c:1.60 Sat Mar 14 15:36:17 2009 +++ src/sys/dev/ic/ne2000.c Sun Apr 5 03:37:07 2009 @@ -1,4 +1,4 @@ -/* $NetBSD: ne2000.c,v 1.60 2009/03/14 15:36:17 dsl Exp $ */ +/* $NetBSD: ne2000.c,v 1.61 2009/04/05 03:37:07 uwe Exp $ */ /*- * Copyright (c) 1997, 1998 The NetBSD Foundation, Inc. @@ -48,7 +48,7 @@ */ #include <sys/cdefs.h> -__KERNEL_RCSID(0, "$NetBSD: ne2000.c,v 1.60 2009/03/14 15:36:17 dsl Exp $"); +__KERNEL_RCSID(0, "$NetBSD: ne2000.c,v 1.61 2009/04/05 03:37:07 uwe Exp $"); #include "opt_ipkdb.h" @@ -923,3 +923,38 @@ } splx(s); } + +bool +ne2000_suspend(device_t self PMF_FN_ARGS) +{ + struct ne2000_softc *sc = device_private(self); + struct dp8390_softc *dsc = &sc->sc_dp8390; + int s; + + s = splnet(); + + dp8390_stop(dsc); + dp8390_disable(dsc); + + splx(s); + return true; +} + +bool +ne2000_resume(device_t self PMF_FN_ARGS) +{ + struct ne2000_softc *sc = device_private(self); + struct dp8390_softc *dsc = &sc->sc_dp8390; + struct ifnet *ifp = &dsc->sc_ec.ec_if; + int s; + + s = splnet(); + + if (ifp->if_flags & IFF_UP) { + if (dp8390_enable(dsc) == 0) + dp8390_init(dsc); + } + + splx(s); + return true; +} Index: src/sys/dev/ic/ne2000var.h diff -u src/sys/dev/ic/ne2000var.h:1.19 src/sys/dev/ic/ne2000var.h:1.20 --- src/sys/dev/ic/ne2000var.h:1.19 Mon Apr 28 20:23:50 2008 +++ src/sys/dev/ic/ne2000var.h Sun Apr 5 03:37:07 2009 @@ -1,4 +1,4 @@ -/* $NetBSD: ne2000var.h,v 1.19 2008/04/28 20:23:50 martin Exp $ */ +/* $NetBSD: ne2000var.h,v 1.20 2009/04/05 03:37:07 uwe Exp $ */ /*- * Copyright (c) 1997, 1998 The NetBSD Foundation, Inc. @@ -60,6 +60,11 @@ int ne2000_ipkdb_attach(struct ipkdb_if *); #endif +/* dopowerhooks(9) - deprecated */ void ne2000_power(int, void *); +/* pmf(9) */ +bool ne2000_suspend(device_t PMF_FN_PROTO); +bool ne2000_resume(device_t PMF_FN_PROTO); + #endif /* _DEV_IC_NE2000VAR_H_ */ Index: src/sys/dev/pcmcia/if_ne_pcmcia.c diff -u src/sys/dev/pcmcia/if_ne_pcmcia.c:1.155 src/sys/dev/pcmcia/if_ne_pcmcia.c:1.156 --- src/sys/dev/pcmcia/if_ne_pcmcia.c:1.155 Fri May 16 20:27:20 2008 +++ src/sys/dev/pcmcia/if_ne_pcmcia.c Sun Apr 5 03:37:07 2009 @@ -1,4 +1,4 @@ -/* $NetBSD: if_ne_pcmcia.c,v 1.155 2008/05/16 20:27:20 jnemeth Exp $ */ +/* $NetBSD: if_ne_pcmcia.c,v 1.156 2009/04/05 03:37:07 uwe Exp $ */ /* * Copyright (c) 1997 Marc Horowitz. All rights reserved. @@ -30,7 +30,7 @@ */ #include <sys/cdefs.h> -__KERNEL_RCSID(0, "$NetBSD: if_ne_pcmcia.c,v 1.155 2008/05/16 20:27:20 jnemeth Exp $"); +__KERNEL_RCSID(0, "$NetBSD: if_ne_pcmcia.c,v 1.156 2009/04/05 03:37:07 uwe Exp $"); #include <sys/param.h> #include <sys/systm.h> @@ -733,12 +733,22 @@ if (ne2000_attach(nsc, enaddr)) goto fail2; + /* dopowerhooks(9) - deprecated, only called by hpcs* apmdev(4) */ psc->sc_powerhook = powerhook_establish(device_xname(self), ne2000_power, nsc); if (psc->sc_powerhook == NULL) aprint_error_dev(self, "WARNING: unable to establish power hook\n"); + /* pmf(9) power hooks */ + if (!pmf_device_register(self, ne2000_suspend, ne2000_resume)) + aprint_error_dev(self, "unable to establish power handler\n"); + else { +#if 0 /* XXX: notyet: if_stop is NULL! */ + pmf_class_network_register(self, &dsc->sc_ec.ec_if); +#endif + } + psc->sc_state = NE_PCMCIA_ATTACHED; ne_pcmcia_disable(dsc); return;