diff options
Diffstat (limited to 'firmware/target/arm')
-rw-r--r-- | firmware/target/arm/ata-target.h | 50 |
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 @@ | |||
17 | * | 17 | * |
18 | ****************************************************************************/ | 18 | ****************************************************************************/ |
19 | 19 | ||
20 | #if (CONFIG_CPU == PP5002) || (CONFIG_CPU == PP5020) | ||
21 | |||
22 | /* Plain C read & write loops */ | ||
23 | #define PREFER_C_READING | ||
24 | #define PREFER_C_WRITING | ||
25 | |||
26 | #if (CONFIG_CPU == PP5002) | ||
27 | #define ATA_IOBASE 0xc00031e0 | ||
28 | #define ATA_CONTROL (*((volatile unsigned char*)(0xc00033f8))) | ||
29 | #elif (CONFIG_CPU == PP5020) | ||
30 | #define ATA_IOBASE 0xc30001e0 | ||
31 | #define ATA_CONTROL (*((volatile unsigned char*)(0xc30003f8))) | ||
32 | #endif | ||
33 | |||
34 | #define ATA_DATA (*((volatile unsigned short*)(ATA_IOBASE))) | ||
35 | #define ATA_ERROR (*((volatile unsigned char*)(ATA_IOBASE + 0x04))) | ||
36 | #define ATA_NSECTOR (*((volatile unsigned char*)(ATA_IOBASE + 0x08))) | ||
37 | #define ATA_SECTOR (*((volatile unsigned char*)(ATA_IOBASE + 0x0c))) | ||
38 | #define ATA_LCYL (*((volatile unsigned char*)(ATA_IOBASE + 0x10))) | ||
39 | #define ATA_HCYL (*((volatile unsigned char*)(ATA_IOBASE + 0x14))) | ||
40 | #define ATA_SELECT (*((volatile unsigned char*)(ATA_IOBASE + 0x18))) | ||
41 | #define ATA_COMMAND (*((volatile unsigned char*)(ATA_IOBASE + 0x1c))) | ||
42 | |||
43 | #define STATUS_BSY 0x80 | ||
44 | #define STATUS_RDY 0x40 | ||
45 | #define STATUS_DF 0x20 | ||
46 | #define STATUS_DRQ 0x08 | ||
47 | #define STATUS_ERR 0x01 | ||
48 | #define ERROR_ABRT 0x04 | ||
49 | |||
50 | #define WRITE_PATTERN1 0xa5 | ||
51 | #define WRITE_PATTERN2 0x5a | ||
52 | #define WRITE_PATTERN3 0xaa | ||
53 | #define WRITE_PATTERN4 0x55 | ||
54 | |||
55 | #define READ_PATTERN1 0xa5 | ||
56 | #define READ_PATTERN2 0x5a | ||
57 | #define READ_PATTERN3 0xaa | ||
58 | #define READ_PATTERN4 0x55 | ||
59 | |||
60 | #define READ_PATTERN1_MASK 0xff | ||
61 | #define READ_PATTERN2_MASK 0xff | ||
62 | #define READ_PATTERN3_MASK 0xff | ||
63 | #define READ_PATTERN4_MASK 0xff | ||
64 | |||
65 | #define SET_REG(reg,val) reg = (val) | ||
66 | #define SET_16BITREG(reg,val) reg = (val) | ||
67 | |||
68 | #endif | ||
69 | |||
20 | void ata_reset(void); | 70 | void ata_reset(void); |
21 | void ata_enable(bool on); | 71 | void ata_enable(bool on); |
22 | bool ata_is_coldstart(void); | 72 | bool ata_is_coldstart(void); |