mirror of
https://github.com/Rockbox/rockbox.git
synced 2025-12-09 05:05:20 -05:00
Better ATA I/O detection
git-svn-id: svn://svn.rockbox.org/rockbox/trunk@1065 a1c6a512-1295-4272-9138-f99709370657
This commit is contained in:
parent
1a17d356f2
commit
a422b8381b
1 changed files with 5 additions and 2 deletions
|
|
@ -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;
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue