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;

Reply via email to