diff options
Diffstat (limited to 'include')
-rw-r--r-- | include/linux/ata.h | 3 | ||||
-rw-r--r-- | include/linux/libata.h | 29 |
2 files changed, 19 insertions, 13 deletions
diff --git a/include/linux/ata.h b/include/linux/ata.h index ecb7346d0c16..65cd7e5b2f18 100644 --- a/include/linux/ata.h +++ b/include/linux/ata.h | |||
@@ -183,6 +183,7 @@ enum { | |||
183 | ATA_TFLAG_DEVICE = (1 << 2), /* enable r/w to device reg */ | 183 | ATA_TFLAG_DEVICE = (1 << 2), /* enable r/w to device reg */ |
184 | ATA_TFLAG_WRITE = (1 << 3), /* data dir: host->dev==1 (write) */ | 184 | ATA_TFLAG_WRITE = (1 << 3), /* data dir: host->dev==1 (write) */ |
185 | ATA_TFLAG_LBA = (1 << 4), /* enable LBA */ | 185 | ATA_TFLAG_LBA = (1 << 4), /* enable LBA */ |
186 | ATA_TFLAG_POLLING = (1 << 5), /* set nIEN to 1 and use polling */ | ||
186 | }; | 187 | }; |
187 | 188 | ||
188 | enum ata_tf_protocols { | 189 | enum ata_tf_protocols { |
@@ -252,6 +253,8 @@ struct ata_taskfile { | |||
252 | ((u64) (id)[(n) + 1] << 16) | \ | 253 | ((u64) (id)[(n) + 1] << 16) | \ |
253 | ((u64) (id)[(n) + 0]) ) | 254 | ((u64) (id)[(n) + 0]) ) |
254 | 255 | ||
256 | #define ata_id_cdb_intr(id) (((id)[0] & 0x60) == 0x20) | ||
257 | |||
255 | static inline int ata_id_current_chs_valid(u16 *id) | 258 | static inline int ata_id_current_chs_valid(u16 *id) |
256 | { | 259 | { |
257 | /* For ATA-1 devices, if the INITIALIZE DEVICE PARAMETERS command | 260 | /* For ATA-1 devices, if the INITIALIZE DEVICE PARAMETERS command |
diff --git a/include/linux/libata.h b/include/linux/libata.h index 4739a75b983d..dbf5f08fb3ed 100644 --- a/include/linux/libata.h +++ b/include/linux/libata.h | |||
@@ -98,6 +98,7 @@ enum { | |||
98 | ATA_DFLAG_PIO = (1 << 1), /* device currently in PIO mode */ | 98 | ATA_DFLAG_PIO = (1 << 1), /* device currently in PIO mode */ |
99 | ATA_DFLAG_LOCK_SECTORS = (1 << 2), /* don't adjust max_sectors */ | 99 | ATA_DFLAG_LOCK_SECTORS = (1 << 2), /* don't adjust max_sectors */ |
100 | ATA_DFLAG_LBA = (1 << 3), /* device supports LBA */ | 100 | ATA_DFLAG_LBA = (1 << 3), /* device supports LBA */ |
101 | ATA_DFLAG_CDB_INTR = (1 << 4), /* device asserts INTRQ when ready for CDB */ | ||
101 | 102 | ||
102 | ATA_DEV_UNKNOWN = 0, /* unknown device */ | 103 | ATA_DEV_UNKNOWN = 0, /* unknown device */ |
103 | ATA_DEV_ATA = 1, /* ATA device */ | 104 | ATA_DEV_ATA = 1, /* ATA device */ |
@@ -116,8 +117,8 @@ enum { | |||
116 | ATA_FLAG_MMIO = (1 << 6), /* use MMIO, not PIO */ | 117 | ATA_FLAG_MMIO = (1 << 6), /* use MMIO, not PIO */ |
117 | ATA_FLAG_SATA_RESET = (1 << 7), /* use COMRESET */ | 118 | ATA_FLAG_SATA_RESET = (1 << 7), /* use COMRESET */ |
118 | ATA_FLAG_PIO_DMA = (1 << 8), /* PIO cmds via DMA */ | 119 | ATA_FLAG_PIO_DMA = (1 << 8), /* PIO cmds via DMA */ |
119 | ATA_FLAG_NOINTR = (1 << 9), /* FIXME: Remove this once | 120 | ATA_FLAG_PIO_POLLING = (1 << 9), /* use polling PIO if LLD |
120 | * proper HSM is in place. */ | 121 | * doesn't handle PIO interrupts */ |
121 | 122 | ||
122 | ATA_QCFLAG_ACTIVE = (1 << 1), /* cmd not yet ack'd to scsi lyer */ | 123 | ATA_QCFLAG_ACTIVE = (1 << 1), /* cmd not yet ack'd to scsi lyer */ |
123 | ATA_QCFLAG_SG = (1 << 3), /* have s/g table? */ | 124 | ATA_QCFLAG_SG = (1 << 3), /* have s/g table? */ |
@@ -129,8 +130,8 @@ enum { | |||
129 | ATA_TMOUT_PIO = 30 * HZ, | 130 | ATA_TMOUT_PIO = 30 * HZ, |
130 | ATA_TMOUT_BOOT = 30 * HZ, /* hueristic */ | 131 | ATA_TMOUT_BOOT = 30 * HZ, /* hueristic */ |
131 | ATA_TMOUT_BOOT_QUICK = 7 * HZ, /* hueristic */ | 132 | ATA_TMOUT_BOOT_QUICK = 7 * HZ, /* hueristic */ |
132 | ATA_TMOUT_CDB = 30 * HZ, | 133 | ATA_TMOUT_DATAOUT = 30 * HZ, |
133 | ATA_TMOUT_CDB_QUICK = 5 * HZ, | 134 | ATA_TMOUT_DATAOUT_QUICK = 5 * HZ, |
134 | 135 | ||
135 | /* ATA bus states */ | 136 | /* ATA bus states */ |
136 | BUS_UNKNOWN = 0, | 137 | BUS_UNKNOWN = 0, |
@@ -158,14 +159,16 @@ enum { | |||
158 | }; | 159 | }; |
159 | 160 | ||
160 | enum hsm_task_states { | 161 | enum hsm_task_states { |
161 | HSM_ST_UNKNOWN, | 162 | HSM_ST_UNKNOWN, /* state unknown */ |
162 | HSM_ST_IDLE, | 163 | HSM_ST_IDLE, /* no command on going */ |
163 | HSM_ST_POLL, | 164 | HSM_ST_POLL, /* same as HSM_ST, waits longer */ |
164 | HSM_ST_TMOUT, | 165 | HSM_ST_TMOUT, /* timeout */ |
165 | HSM_ST, | 166 | HSM_ST, /* (waiting the device to) transfer data */ |
166 | HSM_ST_LAST, | 167 | HSM_ST_LAST, /* (waiting the device to) complete command */ |
167 | HSM_ST_LAST_POLL, | 168 | HSM_ST_LAST_POLL, /* same as HSM_ST_LAST, waits longer */ |
168 | HSM_ST_ERR, | 169 | HSM_ST_ERR, /* error */ |
170 | HSM_ST_FIRST, /* (waiting the device to) | ||
171 | write CDB or first data block */ | ||
169 | }; | 172 | }; |
170 | 173 | ||
171 | /* forward declarations */ | 174 | /* forward declarations */ |
@@ -322,7 +325,7 @@ struct ata_port { | |||
322 | struct ata_host_stats stats; | 325 | struct ata_host_stats stats; |
323 | struct ata_host_set *host_set; | 326 | struct ata_host_set *host_set; |
324 | 327 | ||
325 | struct work_struct packet_task; | 328 | struct work_struct dataout_task; |
326 | 329 | ||
327 | struct work_struct pio_task; | 330 | struct work_struct pio_task; |
328 | unsigned int hsm_task_state; | 331 | unsigned int hsm_task_state; |