summaryrefslogtreecommitdiff
path: root/firmware/target
diff options
context:
space:
mode:
authorMarcoen Hirschberg <marcoen@gmail.com>2006-10-27 11:56:17 +0000
committerMarcoen Hirschberg <marcoen@gmail.com>2006-10-27 11:56:17 +0000
commit6c3c5fb188436d0b3b2cb58049c6764a0bb2da98 (patch)
tree682b1bbcc7d5de6682c30c774774b2d13ff69370 /firmware/target
parent4f8f252a528f4f4697609b73a15aa666e3b747ec (diff)
cleanup ata.c a bit by moving portalplayer defines to target_tree and removing unused portalplayer and gigabeat code
git-svn-id: svn://svn.rockbox.org/rockbox/trunk@11365 a1c6a512-1295-4272-9138-f99709370657
Diffstat (limited to 'firmware/target')
-rw-r--r--firmware/target/arm/ata-target.h50
1 files changed, 50 insertions, 0 deletions
diff --git a/firmware/target/arm/ata-target.h b/firmware/target/arm/ata-target.h
index 417485fb8a..0e4c187e27 100644
--- a/firmware/target/arm/ata-target.h
+++ b/firmware/target/arm/ata-target.h
@@ -17,6 +17,56 @@
*
****************************************************************************/
+#if (CONFIG_CPU == PP5002) || (CONFIG_CPU == PP5020)
+
+/* Plain C read & write loops */
+#define PREFER_C_READING
+#define PREFER_C_WRITING
+
+#if (CONFIG_CPU == PP5002)
+#define ATA_IOBASE 0xc00031e0
+#define ATA_CONTROL (*((volatile unsigned char*)(0xc00033f8)))
+#elif (CONFIG_CPU == PP5020)
+#define ATA_IOBASE 0xc30001e0
+#define ATA_CONTROL (*((volatile unsigned char*)(0xc30003f8)))
+#endif
+
+#define ATA_DATA (*((volatile unsigned short*)(ATA_IOBASE)))
+#define ATA_ERROR (*((volatile unsigned char*)(ATA_IOBASE + 0x04)))
+#define ATA_NSECTOR (*((volatile unsigned char*)(ATA_IOBASE + 0x08)))
+#define ATA_SECTOR (*((volatile unsigned char*)(ATA_IOBASE + 0x0c)))
+#define ATA_LCYL (*((volatile unsigned char*)(ATA_IOBASE + 0x10)))
+#define ATA_HCYL (*((volatile unsigned char*)(ATA_IOBASE + 0x14)))
+#define ATA_SELECT (*((volatile unsigned char*)(ATA_IOBASE + 0x18)))
+#define ATA_COMMAND (*((volatile unsigned char*)(ATA_IOBASE + 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 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)
+
+#endif
+
void ata_reset(void);
void ata_enable(bool on);
bool ata_is_coldstart(void);