summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorSøren Schmidt <sos@FreeBSD.org>2003-05-04 09:34:14 +0000
committerSøren Schmidt <sos@FreeBSD.org>2003-05-04 09:34:14 +0000
commit9c51ecf436e170469b2985d9dbe99b689042cdea (patch)
treeac4daa951f65c242e0cb23730580c8fb422bd2a5
parent7ed6898c2f519f5b93edf34712c96dbe46118a43 (diff)
Notes
-rw-r--r--sys/dev/ata/ata-all.c13
-rw-r--r--sys/dev/ata/ata-all.h1
-rw-r--r--sys/dev/ata/ata-pci.c1
3 files changed, 15 insertions, 0 deletions
diff --git a/sys/dev/ata/ata-all.c b/sys/dev/ata/ata-all.c
index c3dbe6edec81..9a5daf701aea 100644
--- a/sys/dev/ata/ata-all.c
+++ b/sys/dev/ata/ata-all.c
@@ -241,6 +241,19 @@ ata_detach(device_t dev)
}
int
+ata_suspend(device_t dev)
+{
+ struct ata_channel *ch;
+
+ if (!dev || !(ch = device_get_softc(dev)))
+ return ENXIO;
+
+ ch->locking(ch, ATA_LF_LOCK);
+ ATA_SLEEPLOCK_CH(ch, ATA_CONTROL);
+ return 0;
+}
+
+int
ata_resume(device_t dev)
{
struct ata_channel *ch;
diff --git a/sys/dev/ata/ata-all.h b/sys/dev/ata/ata-all.h
index 8f261cb34604..44cb042e2b82 100644
--- a/sys/dev/ata/ata-all.h
+++ b/sys/dev/ata/ata-all.h
@@ -282,6 +282,7 @@ extern struct intr_config_hook *ata_delayed_attach;
int ata_probe(device_t);
int ata_attach(device_t);
int ata_detach(device_t);
+int ata_suspend(device_t);
int ata_resume(device_t);
void ata_start(struct ata_channel *);
void ata_reset(struct ata_channel *);
diff --git a/sys/dev/ata/ata-pci.c b/sys/dev/ata/ata-pci.c
index 217e35f16c73..0636194d735d 100644
--- a/sys/dev/ata/ata-pci.c
+++ b/sys/dev/ata/ata-pci.c
@@ -522,6 +522,7 @@ static device_method_t ata_pcisub_methods[] = {
DEVMETHOD(device_probe, ata_pcisub_probe),
DEVMETHOD(device_attach, ata_attach),
DEVMETHOD(device_detach, ata_detach),
+ DEVMETHOD(device_suspend, ata_suspend),
DEVMETHOD(device_resume, ata_resume),
{ 0, 0 }
};