diff options
author | 2010-08-05 20:21:36 +0000 | |
---|---|---|
committer | 2010-08-05 20:21:36 +0000 | |
commit | eea4c4024677a715c027e0ca94ceb35a915077c6 (patch) | |
tree | 5f7af76e9074187d8755990e8840988faff7fa38 /sys/dev/pci/sili_pci.c | |
parent | lid suspend logic was backwards (diff) | |
download | wireguard-openbsd-eea4c4024677a715c027e0ca94ceb35a915077c6.tar.xz wireguard-openbsd-eea4c4024677a715c027e0ca94ceb35a915077c6.zip |
Suspend/resume support for sili(4). Not perfect yet, but prevents us from
getting stuck. Based on an initial diff from deraadt@.
Diffstat (limited to 'sys/dev/pci/sili_pci.c')
-rw-r--r-- | sys/dev/pci/sili_pci.c | 25 |
1 files changed, 23 insertions, 2 deletions
diff --git a/sys/dev/pci/sili_pci.c b/sys/dev/pci/sili_pci.c index 05817ab7de0..199fb6c21be 100644 --- a/sys/dev/pci/sili_pci.c +++ b/sys/dev/pci/sili_pci.c @@ -1,4 +1,4 @@ -/* $OpenBSD: sili_pci.c,v 1.10 2009/05/13 08:35:29 jsg Exp $ */ +/* $OpenBSD: sili_pci.c,v 1.11 2010/08/05 20:21:36 kettenis Exp $ */ /* * Copyright (c) 2007 David Gwynne <dlg@openbsd.org> @@ -37,6 +37,7 @@ int sili_pci_match(struct device *, void *, void *); void sili_pci_attach(struct device *, struct device *, void *); int sili_pci_detach(struct device *, int); +int sili_pci_activate(struct device *, int); struct sili_pci_softc { struct sili_softc psc_sili; @@ -51,7 +52,8 @@ struct cfattach sili_pci_ca = { sizeof(struct sili_pci_softc), sili_pci_match, sili_pci_attach, - sili_pci_detach + sili_pci_detach, + sili_pci_activate }; struct sili_device { @@ -196,3 +198,22 @@ sili_pci_detach(struct device *self, int flags) return (0); } + +int +sili_pci_activate(struct device *self, int act) +{ + struct sili_softc *sc = (struct sili_softc *)self; + int rv = 0; + + switch (act) { + case DVACT_SUSPEND: + rv = config_activate_children(self, act); + break; + case DVACT_RESUME: + sili_resume(sc); + rv = config_activate_children(self, act); + break; + } + + return (rv); +} |