mirror of
https://github.com/Rockbox/rockbox.git
synced 2025-12-08 20:55:17 -05:00
Rework ATA driver to get rid of lots of target-specific constants and allow for non-memory-mapped task file registers.
git-svn-id: svn://svn.rockbox.org/rockbox/trunk@28950 a1c6a512-1295-4272-9138-f99709370657
This commit is contained in:
parent
0ce42df073
commit
9339be1279
11 changed files with 117 additions and 331 deletions
|
|
@ -33,32 +33,6 @@
|
|||
#define ATA_CONTROL (*((volatile unsigned char*)(ATA_IOBASE + 0x340)))
|
||||
#define ATA_COMMAND (*((volatile unsigned char*)(ATA_IOBASE + 0x380)))
|
||||
|
||||
#define STATUS_BSY 0x80
|
||||
#define STATUS_RDY 0x40
|
||||
#define STATUS_DF 0x20
|
||||
#define STATUS_DRQ 0x08
|
||||
#define STATUS_ERR 0x01
|
||||
#define ERROR_ABRT 0x04
|
||||
#define ERROR_IDNF 0x10
|
||||
|
||||
#define WRITE_PATTERN1 0xa5
|
||||
#define WRITE_PATTERN2 0x5a
|
||||
#define WRITE_PATTERN3 0xaa
|
||||
#define WRITE_PATTERN4 0x55
|
||||
|
||||
#define READ_PATTERN1 0xa5
|
||||
#define READ_PATTERN2 0x5a
|
||||
#define READ_PATTERN3 0xaa
|
||||
#define READ_PATTERN4 0x55
|
||||
|
||||
#define READ_PATTERN1_MASK 0xff
|
||||
#define READ_PATTERN2_MASK 0xff
|
||||
#define READ_PATTERN3_MASK 0xff
|
||||
#define READ_PATTERN4_MASK 0xff
|
||||
|
||||
#define SET_REG(reg,val) reg = (val)
|
||||
#define SET_16BITREG(reg,val) reg = (val)
|
||||
|
||||
void ata_reset(void);
|
||||
void ata_enable(bool on);
|
||||
bool ata_is_coldstart(void);
|
||||
|
|
|
|||
|
|
@ -32,43 +32,16 @@
|
|||
#define ATA_COMMAND (*((volatile unsigned char*)(IDE_BASE + 0x1fc)))
|
||||
#define ATA_CONTROL (*((volatile unsigned char*)(IDE_BASE + 0x3f8)))
|
||||
|
||||
#define STATUS_BSY 0x80
|
||||
#define STATUS_RDY 0x40
|
||||
#define STATUS_DF 0x20
|
||||
#define STATUS_DRQ 0x08
|
||||
#define STATUS_ERR 0x01
|
||||
#define ERROR_ABRT 0x04
|
||||
#define ERROR_IDNF 0x10
|
||||
|
||||
#define WRITE_PATTERN1 0xa5
|
||||
#define WRITE_PATTERN2 0x5a
|
||||
#define WRITE_PATTERN3 0xaa
|
||||
#define WRITE_PATTERN4 0x55
|
||||
|
||||
#define READ_PATTERN1 0xa5
|
||||
#define READ_PATTERN2 0x5a
|
||||
#define READ_PATTERN3 0xaa
|
||||
#define READ_PATTERN4 0x55
|
||||
|
||||
#define READ_PATTERN1_MASK 0xff
|
||||
#define READ_PATTERN2_MASK 0xff
|
||||
#define READ_PATTERN3_MASK 0xff
|
||||
#define READ_PATTERN4_MASK 0xff
|
||||
|
||||
#if (CONFIG_CPU == PP5002)
|
||||
|
||||
#define SET_REG(reg,val) do { reg = (val); \
|
||||
#define ATA_OUT8(reg,val) do { reg = (val); \
|
||||
while (!(IDE_CFG_STATUS & 0x40)); \
|
||||
} while (0)
|
||||
#define SET_16BITREG(reg,val) reg = (val)
|
||||
} while (0)
|
||||
|
||||
/* Plain C reading and writing. See comment in ata-as-arm.S */
|
||||
|
||||
#elif defined CPU_PP502x
|
||||
|
||||
#define SET_REG(reg,val) reg = (val)
|
||||
#define SET_16BITREG(reg,val) reg = (val)
|
||||
|
||||
/* asm optimized reading and writing */
|
||||
#define ATA_OPTIMIZED_READING
|
||||
#define ATA_OPTIMIZED_WRITING
|
||||
|
|
|
|||
|
|
@ -46,32 +46,6 @@
|
|||
#define ATA_COMMAND ATA_DRIVE_COMMAND
|
||||
#define ATA_CONTROL ATA_DRIVE_CONTROL
|
||||
|
||||
#define STATUS_BSY 0x80
|
||||
#define STATUS_RDY 0x40
|
||||
#define STATUS_DF 0x20
|
||||
#define STATUS_DRQ 0x08
|
||||
#define STATUS_ERR 0x01
|
||||
#define ERROR_ABRT 0x04
|
||||
#define ERROR_IDNF 0x10
|
||||
|
||||
#define WRITE_PATTERN1 0xa5
|
||||
#define WRITE_PATTERN2 0x5a
|
||||
#define WRITE_PATTERN3 0xaa
|
||||
#define WRITE_PATTERN4 0x55
|
||||
|
||||
#define READ_PATTERN1 0xa5
|
||||
#define READ_PATTERN2 0x5a
|
||||
#define READ_PATTERN3 0xaa
|
||||
#define READ_PATTERN4 0x55
|
||||
|
||||
#define READ_PATTERN1_MASK 0xff
|
||||
#define READ_PATTERN2_MASK 0xff
|
||||
#define READ_PATTERN3_MASK 0xff
|
||||
#define READ_PATTERN4_MASK 0xff
|
||||
|
||||
#define SET_REG(reg,val) reg = (val)
|
||||
#define SET_16BITREG(reg,val) reg = (val)
|
||||
|
||||
void ata_reset(void);
|
||||
void ata_device_init(void);
|
||||
bool ata_is_coldstart(void);
|
||||
|
|
|
|||
|
|
@ -44,32 +44,6 @@ void copy_read_sectors(unsigned char* buf, int wordcount);
|
|||
#define ATA_COMMAND (*((volatile unsigned char*)(ATA_IOBASE + 0x0E)))
|
||||
#define ATA_CONTROL (*((volatile unsigned char*)(0x20000000 + 0x1C)))
|
||||
|
||||
#define STATUS_BSY 0x80
|
||||
#define STATUS_RDY 0x40
|
||||
#define STATUS_DF 0x20
|
||||
#define STATUS_DRQ 0x08
|
||||
#define STATUS_ERR 0x01
|
||||
#define ERROR_ABRT 0x04
|
||||
#define ERROR_IDNF 0x10
|
||||
|
||||
#define WRITE_PATTERN1 0xa5
|
||||
#define WRITE_PATTERN2 0x5a
|
||||
#define WRITE_PATTERN3 0xaa
|
||||
#define WRITE_PATTERN4 0x55
|
||||
|
||||
#define READ_PATTERN1 0xa5
|
||||
#define READ_PATTERN2 0x5a
|
||||
#define READ_PATTERN3 0xaa
|
||||
#define READ_PATTERN4 0x55
|
||||
|
||||
#define READ_PATTERN1_MASK 0xff
|
||||
#define READ_PATTERN2_MASK 0xff
|
||||
#define READ_PATTERN3_MASK 0xff
|
||||
#define READ_PATTERN4_MASK 0xff
|
||||
|
||||
#define SET_REG(reg,val) reg = (val)
|
||||
#define SET_16BITREG(reg,val) reg = (val)
|
||||
|
||||
void ata_reset(void);
|
||||
void ata_device_init(void);
|
||||
bool ata_is_coldstart(void);
|
||||
|
|
|
|||
|
|
@ -53,32 +53,6 @@ extern int _ata_write_sectors(IF_MD2(int drive,) unsigned long start, int count,
|
|||
#define ATA_COMMAND (*((volatile unsigned char*)(ATA_IOBASE+0xE)))
|
||||
#define ATA_CONTROL (*((volatile unsigned char*)(ATA_IOBASE+0x800C)))
|
||||
|
||||
#define STATUS_BSY 0x80
|
||||
#define STATUS_RDY 0x40
|
||||
#define STATUS_DF 0x20
|
||||
#define STATUS_DRQ 0x08
|
||||
#define STATUS_ERR 0x01
|
||||
#define ERROR_ABRT 0x04
|
||||
#define ERROR_IDNF 0x10
|
||||
|
||||
#define WRITE_PATTERN1 0xa5
|
||||
#define WRITE_PATTERN2 0x5a
|
||||
#define WRITE_PATTERN3 0xaa
|
||||
#define WRITE_PATTERN4 0x55
|
||||
|
||||
#define READ_PATTERN1 0xa5
|
||||
#define READ_PATTERN2 0x5a
|
||||
#define READ_PATTERN3 0xaa
|
||||
#define READ_PATTERN4 0x55
|
||||
|
||||
#define READ_PATTERN1_MASK 0xff
|
||||
#define READ_PATTERN2_MASK 0xff
|
||||
#define READ_PATTERN3_MASK 0xff
|
||||
#define READ_PATTERN4_MASK 0xff
|
||||
|
||||
#define SET_REG(reg,val) reg = (val)
|
||||
#define SET_16BITREG(reg,val) reg = (val)
|
||||
|
||||
void ata_reset(void);
|
||||
void ata_device_init(void);
|
||||
bool ata_is_coldstart(void);
|
||||
|
|
|
|||
|
|
@ -62,7 +62,7 @@ void dma_ata_read(unsigned char* buf, int shortcount)
|
|||
while((unsigned long)buf & 0x1F)
|
||||
{
|
||||
unsigned short tmp;
|
||||
tmp = ATA_DATA;
|
||||
tmp = ATA_IN16(ATA_DATA);
|
||||
*buf++ = tmp & 0xFF;
|
||||
*buf++ = tmp >> 8;
|
||||
shortcount--;
|
||||
|
|
@ -86,7 +86,7 @@ void dma_ata_read(unsigned char* buf, int shortcount)
|
|||
if(shortcount % 2)
|
||||
{
|
||||
unsigned short tmp;
|
||||
tmp = ATA_DATA;
|
||||
tmp = ATA_IN16(ATA_DATA);
|
||||
*buf++ = tmp & 0xFF;
|
||||
*buf++ = tmp >> 8;
|
||||
}
|
||||
|
|
@ -102,7 +102,7 @@ void dma_ata_write(unsigned char* buf, int wordcount)
|
|||
unsigned short tmp;
|
||||
tmp = (unsigned short) *buf++;
|
||||
tmp |= (unsigned short) *buf++ << 8;
|
||||
SET_16BITREG(ATA_DATA, tmp);
|
||||
ATA_OUT16(ATA_DATA, tmp);
|
||||
wordcount--;
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -49,32 +49,6 @@ void copy_write_sectors(const unsigned char* buf, int wordcount);
|
|||
#define ATA_COMMAND (*((volatile unsigned char*)(REGISTER_OFFSET + (0x07 << IDE_SHIFT))))
|
||||
#define ATA_CONTROL (*((volatile unsigned char*)(CONTROL_OFFSET + (0x06 << IDE_SHIFT))))
|
||||
|
||||
#define STATUS_BSY 0x80
|
||||
#define STATUS_RDY 0x40
|
||||
#define STATUS_DF 0x20
|
||||
#define STATUS_DRQ 0x08
|
||||
#define STATUS_ERR 0x01
|
||||
#define ERROR_ABRT 0x04
|
||||
#define ERROR_IDNF 0x10
|
||||
|
||||
#define WRITE_PATTERN1 0xa5
|
||||
#define WRITE_PATTERN2 0x5a
|
||||
#define WRITE_PATTERN3 0xaa
|
||||
#define WRITE_PATTERN4 0x55
|
||||
|
||||
#define READ_PATTERN1 0xa5
|
||||
#define READ_PATTERN2 0x5a
|
||||
#define READ_PATTERN3 0xaa
|
||||
#define READ_PATTERN4 0x55
|
||||
|
||||
#define READ_PATTERN1_MASK 0xff
|
||||
#define READ_PATTERN2_MASK 0xff
|
||||
#define READ_PATTERN3_MASK 0xff
|
||||
#define READ_PATTERN4_MASK 0xff
|
||||
|
||||
#define SET_REG(reg,val) reg = (val)
|
||||
#define SET_16BITREG(reg,val) reg = (val)
|
||||
|
||||
void ata_reset(void);
|
||||
void ata_device_init(void);
|
||||
bool ata_is_coldstart(void);
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue