diff options
author | Björn Stenberg <bjorn@haxx.se> | 2002-12-03 11:26:39 +0000 |
---|---|---|
committer | Björn Stenberg <bjorn@haxx.se> | 2002-12-03 11:26:39 +0000 |
commit | 1ea00d1a0323745093442b889e33e5e82924726a (patch) | |
tree | e54436a9f3248b22824572db7a912e56e259cc32 | |
parent | cd89646e5821e4c752e2d1726477b8122a66bc3b (diff) | |
download | rockbox-1ea00d1a0323745093442b889e33e5e82924726a.tar.gz rockbox-1ea00d1a0323745093442b889e33e5e82924726a.zip |
Added a >2ms delay in ata_hard_reset() before reading status, as per ATA specificatione (pedantic mode entered)
git-svn-id: svn://svn.rockbox.org/rockbox/trunk@2902 a1c6a512-1295-4272-9138-f99709370657
-rw-r--r-- | firmware/drivers/ata.c | 12 |
1 files changed, 8 insertions, 4 deletions
diff --git a/firmware/drivers/ata.c b/firmware/drivers/ata.c index 0fbc418c2f..5cff8af19e 100644 --- a/firmware/drivers/ata.c +++ b/firmware/drivers/ata.c | |||
@@ -523,16 +523,20 @@ static void ata_thread(void) | |||
523 | } | 523 | } |
524 | } | 524 | } |
525 | 525 | ||
526 | /* Hardware reset protocol as specified in chapter 9.1, ATA spec draft v5 */ | ||
526 | int ata_hard_reset(void) | 527 | int ata_hard_reset(void) |
527 | { | 528 | { |
528 | int ret; | 529 | int ret; |
529 | 530 | ||
530 | PADR &= ~0x0200; | 531 | /* state HRR0 */ |
532 | PADR &= ~0x0200; /* assert _RESET */ | ||
533 | sleep(1); /* > 25us */ | ||
531 | 534 | ||
532 | sleep(2); | 535 | /* state HRR1 */ |
533 | 536 | PADR |= 0x0200; /* negate _RESET */ | |
534 | PADR |= 0x0200; | 537 | sleep(1); /* > 2ms */ |
535 | 538 | ||
539 | /* state HRR2 */ | ||
536 | ret = wait_for_bsy(); | 540 | ret = wait_for_bsy(); |
537 | 541 | ||
538 | /* Massage the return code so it is 0 on success and -1 on failure */ | 542 | /* Massage the return code so it is 0 on success and -1 on failure */ |