From 9d589401c1134dc81883e2a957549a24f4dd137b Mon Sep 17 00:00:00 2001 From: Linus Nielsen Feltzing Date: Thu, 1 Aug 2002 12:00:03 +0000 Subject: Now uses CMD_STANDBY again. CMD_SLEEP used more power than CMD_STANDBY for some reason git-svn-id: svn://svn.rockbox.org/rockbox/trunk@1507 a1c6a512-1295-4272-9138-f99709370657 --- firmware/drivers/ata.c | 18 +++++++++++------- 1 file changed, 11 insertions(+), 7 deletions(-) (limited to 'firmware') diff --git a/firmware/drivers/ata.c b/firmware/drivers/ata.c index 845fb79e80..10efecc342 100644 --- a/firmware/drivers/ata.c +++ b/firmware/drivers/ata.c @@ -26,6 +26,7 @@ #include "debug.h" #include "panic.h" #include "usb.h" +#include "power.h" #define SECTOR_SIZE 512 #define ATA_DATA (*((volatile unsigned short*)0x06104100)) @@ -290,16 +291,15 @@ static int ata_perform_sleep(void) return -1; } +#ifdef ATA_POWER_OFF + ide_power_enable(false); +#else ATA_SELECT = ata_device; -#ifdef DEBUG ATA_COMMAND = CMD_STANDBY; -#else - ATA_COMMAND = CMD_SLEEP; -#endif if (!wait_for_rdy()) ret = -1; - +#endif sleeping = true; sleep_timer = 0; mutex_unlock(&ata_mtx); @@ -372,14 +372,18 @@ int ata_soft_reset(void) int retry_count; mutex_lock(&ata_mtx); - + +#ifdef ATA_POWER_OFF + ide_power_enable(true); + sleep(HZ); +#else ATA_SELECT = SELECT_LBA | ata_device; ATA_CONTROL = CONTROL_nIEN|CONTROL_SRST; sleep(HZ/20000); /* >= 5us */ ATA_CONTROL = CONTROL_nIEN; sleep(HZ/400); /* >2ms */ - +#endif /* This little sucker can take up to 30 seconds */ retry_count = 8; do -- cgit v1.2.3