~ubuntu-branches/ubuntu/trusty/seabios/trusty

« back to all changes in this revision

Viewing changes to src/ata.h

  • Committer: Bazaar Package Importer
  • Author(s): Aurelien Jarno
  • Date: 2010-08-01 21:06:30 UTC
  • mfrom: (1.1.1 upstream)
  • Revision ID: james.westby@ubuntu.com-20100801210630-1ln34npnfyl3p40q
Tags: 0.6.0+git20100710-1
* New upstream snapshot, compatible with qemu 0.13.x.
* Add conflicts with qemu-system (<< 0.13.0).
* Bump Standards-Version to 3.9.1 (no changes).
* Update from QEMU 0.13:
  - 00_optionrom_buildsystem.patch
  - 02_optionrom_linuxboot.patch
* Update from QEMU-KVM 0.13:
  - 01_optionrom_extboot.patch

Show diffs side-by-side

added added

removed removed

Lines of Context:
3
3
 
4
4
#include "types.h" // u8
5
5
#include "config.h" // CONFIG_MAX_ATA_INTERFACES
 
6
#include "disk.h" // struct drive_s
6
7
 
7
8
struct ata_channel_s {
8
9
    u16 iobase1;
9
10
    u16 iobase2;
10
11
    u16 iomaster;
11
12
    u8  irq;
 
13
    u8  chanid;
12
14
    int pci_bdf;
13
15
};
14
16
 
 
17
struct atadrive_s {
 
18
    struct drive_s drive;
 
19
    struct ata_channel_s *chan_gf;
 
20
    u8 slave;
 
21
};
 
22
 
15
23
// ata.c
16
 
extern struct ata_channel_s ATA_channels[CONFIG_MAX_ATA_INTERFACES];
17
24
int cdrom_read(struct disk_op_s *op);
18
 
int ata_cmd_packet(struct drive_s *drive_g, u8 *cmdbuf, u8 cmdlen
19
 
                   , u32 length, void *buf_fl);
 
25
int atapi_cmd_data(struct disk_op_s *op, void *cdbcmd, u16 blocksize);
20
26
void ata_setup(void);
21
27
int process_ata_op(struct disk_op_s *op);
22
28
int process_atapi_op(struct disk_op_s *op);
23
 
void describe_ata(struct drive_s *drive_g);
24
 
void describe_atapi(struct drive_s *drive_g);
25
29
 
26
30
// Global defines -- ATA register and register bits.
27
31
// command block & control block regs
86
90
#define ATA_CB_DC_NIEN   0x02  // disable interrupts
87
91
 
88
92
// Most mandtory and optional ATA commands (from ATA-3),
89
 
#define ATA_CMD_CFA_ERASE_SECTORS            0xC0
 
93
#define ATA_CMD_NOP                          0x00
90
94
#define ATA_CMD_CFA_REQUEST_EXT_ERR_CODE     0x03
91
 
#define ATA_CMD_CFA_TRANSLATE_SECTOR         0x87
92
 
#define ATA_CMD_CFA_WRITE_MULTIPLE_WO_ERASE  0xCD
93
 
#define ATA_CMD_CFA_WRITE_SECTORS_WO_ERASE   0x38
94
 
#define ATA_CMD_CHECK_POWER_MODE1            0xE5
95
 
#define ATA_CMD_CHECK_POWER_MODE2            0x98
96
95
#define ATA_CMD_DEVICE_RESET                 0x08
97
 
#define ATA_CMD_EXECUTE_DEVICE_DIAGNOSTIC    0x90
98
 
#define ATA_CMD_FLUSH_CACHE                  0xE7
99
 
#define ATA_CMD_FORMAT_TRACK                 0x50
100
 
#define ATA_CMD_IDENTIFY_DEVICE              0xEC
101
 
#define ATA_CMD_IDENTIFY_PACKET_DEVICE       0xA1
102
 
#define ATA_CMD_IDLE1                        0xE3
103
 
#define ATA_CMD_IDLE2                        0x97
104
 
#define ATA_CMD_IDLE_IMMEDIATE1              0xE1
105
 
#define ATA_CMD_IDLE_IMMEDIATE2              0x95
106
 
#define ATA_CMD_INITIALIZE_DRIVE_PARAMETERS  0x91
107
 
#define ATA_CMD_INITIALIZE_DEVICE_PARAMETERS 0x91
108
 
#define ATA_CMD_NOP                          0x00
109
 
#define ATA_CMD_PACKET                       0xA0
110
 
#define ATA_CMD_READ_BUFFER                  0xE4
111
 
#define ATA_CMD_READ_DMA                     0xC8
 
96
#define ATA_CMD_RECALIBRATE                  0x10
 
97
#define ATA_CMD_READ_SECTORS                 0x20
 
98
#define ATA_CMD_READ_SECTORS_EXT             0x24
112
99
#define ATA_CMD_READ_DMA_EXT                 0x25
113
 
#define ATA_CMD_READ_DMA_QUEUED              0xC7
114
100
#define ATA_CMD_READ_DMA_QUEUED_EXT          0x26
 
101
#define ATA_CMD_READ_NATIVE_MAX_ADDRESS_EXT  0x27
 
102
#define ATA_CMD_READ_MULTIPLE_EXT            0x29
115
103
#define ATA_CMD_READ_LOG_EXT                 0x2F
116
 
#define ATA_CMD_READ_MULTIPLE                0xC4
117
 
#define ATA_CMD_READ_MULTIPLE_EXT            0x29
118
 
#define ATA_CMD_READ_NATIVE_MAX_ADDRESS      0xF8
119
 
#define ATA_CMD_READ_NATIVE_MAX_ADDRESS_EXT  0x27
120
 
#define ATA_CMD_READ_SECTORS                 0x20
121
 
#define ATA_CMD_READ_SECTORS_EXT             0x24
 
104
#define ATA_CMD_WRITE_SECTORS                0x30
 
105
#define ATA_CMD_WRITE_SECTORS_EXT            0x34
 
106
#define ATA_CMD_WRITE_DMA_EXT                0x35
 
107
#define ATA_CMD_WRITE_DMA_QUEUED_EXT         0x36
 
108
#define ATA_CMD_SET_MAX_ADDRESS_EXT          0x37
 
109
#define ATA_CMD_CFA_WRITE_SECTORS_WO_ERASE   0x38
 
110
#define ATA_CMD_WRITE_MULTIPLE_EXT           0x39
 
111
#define ATA_CMD_WRITE_VERIFY                 0x3C
 
112
#define ATA_CMD_WRITE_LOG_EXT                0x3F
122
113
#define ATA_CMD_READ_VERIFY_SECTORS          0x40
123
114
#define ATA_CMD_READ_VERIFY_SECTORS_EXT      0x42
124
 
#define ATA_CMD_RECALIBRATE                  0x10
125
 
#define ATA_CMD_REQUEST_SENSE                0x03
 
115
#define ATA_CMD_FORMAT_TRACK                 0x50
126
116
#define ATA_CMD_SEEK                         0x70
127
 
#define ATA_CMD_SET_FEATURES                 0xEF
128
 
#define ATA_CMD_SET_MAX                      0xF9
129
 
#define ATA_CMD_SET_MAX_ADDRESS_EXT          0x37
 
117
#define ATA_CMD_CFA_TRANSLATE_SECTOR         0x87
 
118
#define ATA_CMD_EXECUTE_DEVICE_DIAGNOSTIC    0x90
 
119
#define ATA_CMD_INITIALIZE_DEVICE_PARAMETERS 0x91
 
120
#define ATA_CMD_STANDBY_IMMEDIATE2           0x94
 
121
#define ATA_CMD_IDLE_IMMEDIATE2              0x95
 
122
#define ATA_CMD_STANDBY2                     0x96
 
123
#define ATA_CMD_IDLE2                        0x97
 
124
#define ATA_CMD_CHECK_POWER_MODE2            0x98
 
125
#define ATA_CMD_SLEEP2                       0x99
 
126
#define ATA_CMD_PACKET                       0xA0
 
127
#define ATA_CMD_IDENTIFY_PACKET_DEVICE       0xA1
 
128
#define ATA_CMD_CFA_ERASE_SECTORS            0xC0
 
129
#define ATA_CMD_READ_MULTIPLE                0xC4
 
130
#define ATA_CMD_WRITE_MULTIPLE               0xC5
130
131
#define ATA_CMD_SET_MULTIPLE_MODE            0xC6
131
 
#define ATA_CMD_SLEEP1                       0xE6
132
 
#define ATA_CMD_SLEEP2                       0x99
133
 
#define ATA_CMD_STANDBY1                     0xE2
134
 
#define ATA_CMD_STANDBY2                     0x96
135
 
#define ATA_CMD_STANDBY_IMMEDIATE1           0xE0
136
 
#define ATA_CMD_STANDBY_IMMEDIATE2           0x94
137
 
#define ATA_CMD_WRITE_BUFFER                 0xE8
 
132
#define ATA_CMD_READ_DMA_QUEUED              0xC7
 
133
#define ATA_CMD_READ_DMA                     0xC8
138
134
#define ATA_CMD_WRITE_DMA                    0xCA
139
 
#define ATA_CMD_WRITE_DMA_EXT                0x35
140
135
#define ATA_CMD_WRITE_DMA_QUEUED             0xCC
141
 
#define ATA_CMD_WRITE_DMA_QUEUED_EXT         0x36
142
 
#define ATA_CMD_WRITE_LOG_EXT                0x3F
143
 
#define ATA_CMD_WRITE_MULTIPLE               0xC5
144
 
#define ATA_CMD_WRITE_MULTIPLE_EXT           0x39
145
 
#define ATA_CMD_WRITE_SECTORS                0x30
146
 
#define ATA_CMD_WRITE_SECTORS_EXT            0x34
147
 
#define ATA_CMD_WRITE_VERIFY                 0x3C
 
136
#define ATA_CMD_CFA_WRITE_MULTIPLE_WO_ERASE  0xCD
 
137
#define ATA_CMD_STANDBY_IMMEDIATE            0xE0
 
138
#define ATA_CMD_IDLE_IMMEDIATE               0xE1
 
139
#define ATA_CMD_STANDBY                      0xE2
 
140
#define ATA_CMD_IDLE                         0xE3
 
141
#define ATA_CMD_READ_BUFFER                  0xE4
 
142
#define ATA_CMD_CHECK_POWER_MODE             0xE5
 
143
#define ATA_CMD_SLEEP                        0xE6
 
144
#define ATA_CMD_FLUSH_CACHE                  0xE7
 
145
#define ATA_CMD_WRITE_BUFFER                 0xE8
 
146
#define ATA_CMD_IDENTIFY_DEVICE              0xEC
 
147
#define ATA_CMD_SET_FEATURES                 0xEF
 
148
#define ATA_CMD_READ_NATIVE_MAX_ADDRESS      0xF8
 
149
#define ATA_CMD_SET_MAX                      0xF9
148
150
 
149
151
#endif // ata.h