Add power hooks for "ep* at pcmcia?".
ok christos@
This commit is contained in:
parent
09f0de7ce4
commit
58224a41e7
@ -1,4 +1,4 @@
|
|||||||
/* $NetBSD: elink3.c,v 1.116 2006/06/07 15:34:47 nakayama Exp $ */
|
/* $NetBSD: elink3.c,v 1.117 2006/07/11 22:49:47 peter Exp $ */
|
||||||
|
|
||||||
/*-
|
/*-
|
||||||
* Copyright (c) 1998, 2001 The NetBSD Foundation, Inc.
|
* Copyright (c) 1998, 2001 The NetBSD Foundation, Inc.
|
||||||
@ -69,7 +69,7 @@
|
|||||||
*/
|
*/
|
||||||
|
|
||||||
#include <sys/cdefs.h>
|
#include <sys/cdefs.h>
|
||||||
__KERNEL_RCSID(0, "$NetBSD: elink3.c,v 1.116 2006/06/07 15:34:47 nakayama Exp $");
|
__KERNEL_RCSID(0, "$NetBSD: elink3.c,v 1.117 2006/07/11 22:49:47 peter Exp $");
|
||||||
|
|
||||||
#include "opt_inet.h"
|
#include "opt_inet.h"
|
||||||
#include "opt_ns.h"
|
#include "opt_ns.h"
|
||||||
@ -2189,3 +2189,29 @@ ep_statchg(self)
|
|||||||
bus_space_write_2(iot, ioh, ELINK_W3_MAC_CONTROL, mctl);
|
bus_space_write_2(iot, ioh, ELINK_W3_MAC_CONTROL, mctl);
|
||||||
GO_WINDOW(1); /* back to operating window */
|
GO_WINDOW(1); /* back to operating window */
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void
|
||||||
|
ep_power(int why, void *arg)
|
||||||
|
{
|
||||||
|
struct ep_softc *sc = arg;
|
||||||
|
struct ifnet *ifp = &sc->sc_ethercom.ec_if;
|
||||||
|
int s;
|
||||||
|
|
||||||
|
s = splnet();
|
||||||
|
switch (why) {
|
||||||
|
case PWR_SUSPEND:
|
||||||
|
case PWR_STANDBY:
|
||||||
|
epstop(ifp, 1);
|
||||||
|
break;
|
||||||
|
case PWR_RESUME:
|
||||||
|
if (ifp->if_flags & IFF_UP) {
|
||||||
|
(void)epinit(ifp);
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
case PWR_SOFTSUSPEND:
|
||||||
|
case PWR_SOFTSTANDBY:
|
||||||
|
case PWR_SOFTRESUME:
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
splx(s);
|
||||||
|
}
|
||||||
|
@ -1,4 +1,4 @@
|
|||||||
/* $NetBSD: elink3var.h,v 1.33 2005/12/11 12:21:26 christos Exp $ */
|
/* $NetBSD: elink3var.h,v 1.34 2006/07/11 22:49:47 peter Exp $ */
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Copyright (c) 1994 Herb Peyerl <hpeyerl@beer.org>
|
* Copyright (c) 1994 Herb Peyerl <hpeyerl@beer.org>
|
||||||
@ -124,3 +124,5 @@ void epdisable(struct ep_softc *);
|
|||||||
|
|
||||||
int ep_activate(struct device *, enum devact);
|
int ep_activate(struct device *, enum devact);
|
||||||
int ep_detach(struct device *, int);
|
int ep_detach(struct device *, int);
|
||||||
|
|
||||||
|
void ep_power(int, void *);
|
||||||
|
@ -1,4 +1,4 @@
|
|||||||
/* $NetBSD: if_ep_pcmcia.c,v 1.54 2005/12/11 12:23:23 christos Exp $ */
|
/* $NetBSD: if_ep_pcmcia.c,v 1.55 2006/07/11 22:49:47 peter Exp $ */
|
||||||
|
|
||||||
/*-
|
/*-
|
||||||
* Copyright (c) 1998, 2000, 2004 The NetBSD Foundation, Inc.
|
* Copyright (c) 1998, 2000, 2004 The NetBSD Foundation, Inc.
|
||||||
@ -67,7 +67,7 @@
|
|||||||
*/
|
*/
|
||||||
|
|
||||||
#include <sys/cdefs.h>
|
#include <sys/cdefs.h>
|
||||||
__KERNEL_RCSID(0, "$NetBSD: if_ep_pcmcia.c,v 1.54 2005/12/11 12:23:23 christos Exp $");
|
__KERNEL_RCSID(0, "$NetBSD: if_ep_pcmcia.c,v 1.55 2006/07/11 22:49:47 peter Exp $");
|
||||||
|
|
||||||
#include <sys/param.h>
|
#include <sys/param.h>
|
||||||
#include <sys/systm.h>
|
#include <sys/systm.h>
|
||||||
@ -114,6 +114,8 @@ struct ep_pcmcia_softc {
|
|||||||
struct pcmcia_io_handle sc_pcioh; /* PCMCIA i/o space info */
|
struct pcmcia_io_handle sc_pcioh; /* PCMCIA i/o space info */
|
||||||
int sc_io_window; /* our i/o window */
|
int sc_io_window; /* our i/o window */
|
||||||
struct pcmcia_function *sc_pf; /* our PCMCIA function */
|
struct pcmcia_function *sc_pf; /* our PCMCIA function */
|
||||||
|
|
||||||
|
void *sc_powerhook; /* power management hook */
|
||||||
};
|
};
|
||||||
|
|
||||||
CFATTACH_DECL(ep_pcmcia, sizeof(struct ep_pcmcia_softc),
|
CFATTACH_DECL(ep_pcmcia, sizeof(struct ep_pcmcia_softc),
|
||||||
@ -337,6 +339,11 @@ ep_pcmcia_attach(parent, self, aux)
|
|||||||
aprint_error("%s: couldn't configure controller\n",
|
aprint_error("%s: couldn't configure controller\n",
|
||||||
self->dv_xname);
|
self->dv_xname);
|
||||||
|
|
||||||
|
psc->sc_powerhook = powerhook_establish(ep_power, sc);
|
||||||
|
if (psc->sc_powerhook == NULL)
|
||||||
|
aprint_error("%s: WARNING: unable to establish power hook\n",
|
||||||
|
self->dv_xname);
|
||||||
|
|
||||||
sc->enabled = 0;
|
sc->enabled = 0;
|
||||||
ep_pcmcia_disable(sc);
|
ep_pcmcia_disable(sc);
|
||||||
return;
|
return;
|
||||||
@ -361,6 +368,9 @@ ep_pcmcia_detach(self, flags)
|
|||||||
/* Nothing to detach. */
|
/* Nothing to detach. */
|
||||||
return (0);
|
return (0);
|
||||||
|
|
||||||
|
if (psc->sc_powerhook != NULL)
|
||||||
|
powerhook_disestablish(psc->sc_powerhook);
|
||||||
|
|
||||||
rv = ep_detach(self, flags);
|
rv = ep_detach(self, flags);
|
||||||
if (rv != 0)
|
if (rv != 0)
|
||||||
return (rv);
|
return (rv);
|
||||||
|
Loading…
Reference in New Issue
Block a user