From 159d04d3f9cae914d5ebdab762d78f24d15eda52 Mon Sep 17 00:00:00 2001 From: Linus Nielsen Feltzing Date: Sat, 10 May 2003 01:55:23 +0000 Subject: Experiment: enable ATA STANDBY when switching to USB mode git-svn-id: svn://svn.rockbox.org/rockbox/trunk@3668 a1c6a512-1295-4272-9138-f99709370657 --- firmware/drivers/ata.c | 27 +++++++++++++++++++++++++++ 1 file changed, 27 insertions(+) (limited to 'firmware/drivers/ata.c') diff --git a/firmware/drivers/ata.c b/firmware/drivers/ata.c index ec99bf799e..b4151d0352 100644 --- a/firmware/drivers/ata.c +++ b/firmware/drivers/ata.c @@ -503,6 +503,33 @@ static int ata_perform_sleep(void) return ret; } +int ata_standby(int time) +{ + int ret = 0; + + mutex_lock(&ata_mtx); + + ATA_SELECT = ata_device; + + if(!wait_for_rdy()) { + DEBUGF("ata_standby() - not RDY\n"); + mutex_unlock(&ata_mtx); + return -1; + } + + ATA_NSECTOR = ((time + 5) / 5) & 0xff; /* Round up to nearest 5 secs */ + ATA_COMMAND = CMD_STANDBY; + + if (!wait_for_rdy()) + { + DEBUGF("ata_standby() - CMD failed\n"); + ret = -2; + } + + mutex_unlock(&ata_mtx); + return ret; +} + int ata_sleep(void) { queue_post(&ata_queue, Q_SLEEP, NULL); -- cgit v1.2.3