diff options
Diffstat (limited to 'sys/dev/pci/autri.c')
-rw-r--r-- | sys/dev/pci/autri.c | 28 |
1 files changed, 19 insertions, 9 deletions
diff --git a/sys/dev/pci/autri.c b/sys/dev/pci/autri.c index 5389362351a..f87cd11077e 100644 --- a/sys/dev/pci/autri.c +++ b/sys/dev/pci/autri.c @@ -1,4 +1,4 @@ -/* $OpenBSD: autri.c,v 1.25 2010/07/15 03:43:11 jakemsr Exp $ */ +/* $OpenBSD: autri.c,v 1.26 2010/08/27 18:50:56 deraadt Exp $ */ /* * Copyright (c) 2001 SOMEYA Yoshihiko and KUROSAWA Takahiro. @@ -72,6 +72,7 @@ int autridebug = 0; int autri_match(struct device *, void *, void *); void autri_attach(struct device *, struct device *, void *); +int autri_activate(struct device *, int); int autri_intr(void *); #define DMAADDR(p) ((p)->map->dm_segs[0].ds_addr) @@ -117,7 +118,8 @@ struct cfdriver autri_cd = { }; struct cfattach autri_ca = { - sizeof(struct autri_softc), autri_match, autri_attach + sizeof(struct autri_softc), autri_match, autri_attach, NULL, + autri_activate }; int autri_open(void *, int); @@ -616,22 +618,30 @@ autri_attach(parent, self, aux) midi_attach_mi(&autri_midi_hw_if, sc, &sc->sc_dev); #endif - sc->sc_old_power = PWR_RESUME; powerhook_establish(autri_powerhook, sc); } -void -autri_powerhook(int why,void *addr) +int +autri_activate(struct device *self, int act) { - struct autri_softc *sc = addr; + struct autri_softc *sc = (struct autri_softc *)self; - if (why == PWR_RESUME && sc->sc_old_power == PWR_SUSPEND) { - DPRINTF(("PWR_RESUME\n")); + switch (act) { + case DVACT_SUSPEND: + break; + case DVACT_RESUME: autri_init(sc); /*autri_reset_codec(&sc->sc_codec);*/ (sc->sc_codec.codec_if->vtbl->restore_ports)(sc->sc_codec.codec_if); + break; } - sc->sc_old_power = why; + return 0; +} + +void +autri_powerhook(int why,void *addr) +{ + autri_activate(addr, why); } int |