aboutsummaryrefslogtreecommitdiffstats
path: root/include
diff options
context:
space:
mode:
Diffstat (limited to 'include')
-rw-r--r--include/linux/ata.h3
-rw-r--r--include/linux/libata.h29
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
188enum ata_tf_protocols { 189enum 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
255static inline int ata_id_current_chs_valid(u16 *id) 258static 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
160enum hsm_task_states { 161enum 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;