From 9339be1279eb2b64a268e3a7a039ef8031dae4b3 Mon Sep 17 00:00:00 2001 From: Michael Sparmann Date: Sun, 2 Jan 2011 22:51:47 +0000 Subject: 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 --- firmware/target/arm/archos/av300/ata-target.h | 26 ------------------ firmware/target/arm/ata-target.h | 31 ++-------------------- firmware/target/arm/imx31/ata-target.h | 26 ------------------ .../target/arm/s3c2440/gigabeat-fx/ata-target.h | 26 ------------------ .../arm/tms320dm320/creative-zvm/ata-target.h | 26 ------------------ .../arm/tms320dm320/creative-zvm/dma-creativezvm.c | 6 ++--- .../target/arm/tms320dm320/mrobe-500/ata-target.h | 26 ------------------ 7 files changed, 5 insertions(+), 162 deletions(-) (limited to 'firmware/target/arm') diff --git a/firmware/target/arm/archos/av300/ata-target.h b/firmware/target/arm/archos/av300/ata-target.h index 9c59acc460..bc3a19a6b4 100644 --- a/firmware/target/arm/archos/av300/ata-target.h +++ b/firmware/target/arm/archos/av300/ata-target.h @@ -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); diff --git a/firmware/target/arm/ata-target.h b/firmware/target/arm/ata-target.h index c9d789d092..12415c33e8 100644 --- a/firmware/target/arm/ata-target.h +++ b/firmware/target/arm/ata-target.h @@ -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 diff --git a/firmware/target/arm/imx31/ata-target.h b/firmware/target/arm/imx31/ata-target.h index f7f84f82e9..da1902acea 100644 --- a/firmware/target/arm/imx31/ata-target.h +++ b/firmware/target/arm/imx31/ata-target.h @@ -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); diff --git a/firmware/target/arm/s3c2440/gigabeat-fx/ata-target.h b/firmware/target/arm/s3c2440/gigabeat-fx/ata-target.h index 01cdbb9ddb..95cbaa11cf 100644 --- a/firmware/target/arm/s3c2440/gigabeat-fx/ata-target.h +++ b/firmware/target/arm/s3c2440/gigabeat-fx/ata-target.h @@ -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); diff --git a/firmware/target/arm/tms320dm320/creative-zvm/ata-target.h b/firmware/target/arm/tms320dm320/creative-zvm/ata-target.h index 46713e70c5..1a1648983d 100644 --- a/firmware/target/arm/tms320dm320/creative-zvm/ata-target.h +++ b/firmware/target/arm/tms320dm320/creative-zvm/ata-target.h @@ -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); diff --git a/firmware/target/arm/tms320dm320/creative-zvm/dma-creativezvm.c b/firmware/target/arm/tms320dm320/creative-zvm/dma-creativezvm.c index c229b9957a..514fdd5bd9 100644 --- a/firmware/target/arm/tms320dm320/creative-zvm/dma-creativezvm.c +++ b/firmware/target/arm/tms320dm320/creative-zvm/dma-creativezvm.c @@ -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--; } diff --git a/firmware/target/arm/tms320dm320/mrobe-500/ata-target.h b/firmware/target/arm/tms320dm320/mrobe-500/ata-target.h index 0abeb2e9e7..ca75876259 100644 --- a/firmware/target/arm/tms320dm320/mrobe-500/ata-target.h +++ b/firmware/target/arm/tms320dm320/mrobe-500/ata-target.h @@ -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); -- cgit v1.2.3