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;