diff options
| author | Linus Nielsen Feltzing <linus@haxx.se> | 2002-06-18 12:53:02 +0000 |
|---|---|---|
| committer | Linus Nielsen Feltzing <linus@haxx.se> | 2002-06-18 12:53:02 +0000 |
| commit | a422b8381bb511717cc01197cce3ff4933133049 (patch) | |
| tree | a8d9dd957c38cb797d8f6f46dd6e02808d00685f /firmware/drivers | |
| parent | 1a17d356f2c5d32fa0735f0dcad739b9745116b4 (diff) | |
| download | rockbox-a422b8381bb511717cc01197cce3ff4933133049.zip rockbox-a422b8381bb511717cc01197cce3ff4933133049.tar.gz rockbox-a422b8381bb511717cc01197cce3ff4933133049.tar.bz2 rockbox-a422b8381bb511717cc01197cce3ff4933133049.tar.xz | |
Better ATA I/O detection
git-svn-id: svn://svn.rockbox.org/rockbox/trunk@1065 a1c6a512-1295-4272-9138-f99709370657
Diffstat (limited to 'firmware/drivers')
| -rw-r--r-- | firmware/drivers/ata.c | 7 |
1 files changed, 5 insertions, 2 deletions
diff --git a/firmware/drivers/ata.c b/firmware/drivers/ata.c index 477369b..41d74d3 100644 --- a/firmware/drivers/ata.c +++ b/firmware/drivers/ata.c @@ -23,6 +23,7 @@ #include "sh7034.h" #include "system.h" #include "debug.h" +#include "panic.h" #define SECTOR_SIZE 512 #define ATA_DATA (*((volatile unsigned short*)0x06104100)) @@ -328,7 +329,8 @@ static int master_slave_detect(void) static int io_address_detect(void) { - unsigned char tmp = ATA_STATUS; + unsigned char tmp = ATA_STATUS & 0xf9; /* Mask the IDX and CORR bits */ + unsigned char tmp2; unsigned char dummy; /* We compare the STATUS register with the ALT_STATUS register, which @@ -340,8 +342,9 @@ static int io_address_detect(void) to the ATA controller. We read a register that we know exists to make sure that the data on the bus isn't identical to the STATUS register contents. */ + ATA_SECTOR = 0; dummy = ATA_SECTOR; - if(tmp == *ATA_CONTROL2) + if(tmp == (*ATA_CONTROL2) & 0xf9) { DEBUGF("CONTROL is at 0x306\n"); ata_control = ATA_CONTROL2; |