aboutsummaryrefslogtreecommitdiffstats
path: root/include/linux/libata.h
diff options
context:
space:
mode:
Diffstat (limited to 'include/linux/libata.h')
-rw-r--r--include/linux/libata.h13
1 files changed, 11 insertions, 2 deletions
diff --git a/include/linux/libata.h b/include/linux/libata.h
index 2d182413b1db..fc03efa64ffe 100644
--- a/include/linux/libata.h
+++ b/include/linux/libata.h
@@ -231,6 +231,7 @@ enum {
231 ATA_FLAG_SW_ACTIVITY = (1 << 22), /* driver supports sw activity 231 ATA_FLAG_SW_ACTIVITY = (1 << 22), /* driver supports sw activity
232 * led */ 232 * led */
233 ATA_FLAG_NO_DIPM = (1 << 23), /* host not happy with DIPM */ 233 ATA_FLAG_NO_DIPM = (1 << 23), /* host not happy with DIPM */
234 ATA_FLAG_LOWTAG = (1 << 24), /* host wants lowest available tag */
234 235
235 /* bits 24:31 of ap->flags are reserved for LLD specific flags */ 236 /* bits 24:31 of ap->flags are reserved for LLD specific flags */
236 237
@@ -422,6 +423,7 @@ enum {
422 ATA_HORKAGE_NO_NCQ_TRIM = (1 << 19), /* don't use queued TRIM */ 423 ATA_HORKAGE_NO_NCQ_TRIM = (1 << 19), /* don't use queued TRIM */
423 ATA_HORKAGE_NOLPM = (1 << 20), /* don't use LPM */ 424 ATA_HORKAGE_NOLPM = (1 << 20), /* don't use LPM */
424 ATA_HORKAGE_WD_BROKEN_LPM = (1 << 21), /* some WDs have broken LPM */ 425 ATA_HORKAGE_WD_BROKEN_LPM = (1 << 21), /* some WDs have broken LPM */
426 ATA_HORKAGE_ZERO_AFTER_TRIM = (1 << 22),/* guarantees zero after trim */
425 427
426 /* DMA mask for user DMA control: User visible values; DO NOT 428 /* DMA mask for user DMA control: User visible values; DO NOT
427 renumber */ 429 renumber */
@@ -821,10 +823,10 @@ struct ata_port {
821 unsigned int cbl; /* cable type; ATA_CBL_xxx */ 823 unsigned int cbl; /* cable type; ATA_CBL_xxx */
822 824
823 struct ata_queued_cmd qcmd[ATA_MAX_QUEUE]; 825 struct ata_queued_cmd qcmd[ATA_MAX_QUEUE];
824 unsigned long qc_allocated; 826 unsigned long sas_tag_allocated; /* for sas tag allocation only */
825 unsigned int qc_active; 827 unsigned int qc_active;
826 int nr_active_links; /* #links with active qcs */ 828 int nr_active_links; /* #links with active qcs */
827 unsigned int last_tag; /* track next tag hw expects */ 829 unsigned int sas_last_tag; /* track next tag hw expects */
828 830
829 struct ata_link link; /* host default link */ 831 struct ata_link link; /* host default link */
830 struct ata_link *slave_link; /* see ata_slave_link_init() */ 832 struct ata_link *slave_link; /* see ata_slave_link_init() */
@@ -1338,12 +1340,19 @@ extern const struct ata_port_operations ata_base_port_ops;
1338extern const struct ata_port_operations sata_port_ops; 1340extern const struct ata_port_operations sata_port_ops;
1339extern struct device_attribute *ata_common_sdev_attrs[]; 1341extern struct device_attribute *ata_common_sdev_attrs[];
1340 1342
1343/*
1344 * All sht initializers (BASE, PIO, BMDMA, NCQ) must be instantiated
1345 * by the edge drivers. Because the 'module' field of sht must be the
1346 * edge driver's module reference, otherwise the driver can be unloaded
1347 * even if the scsi_device is being accessed.
1348 */
1341#define ATA_BASE_SHT(drv_name) \ 1349#define ATA_BASE_SHT(drv_name) \
1342 .module = THIS_MODULE, \ 1350 .module = THIS_MODULE, \
1343 .name = drv_name, \ 1351 .name = drv_name, \
1344 .ioctl = ata_scsi_ioctl, \ 1352 .ioctl = ata_scsi_ioctl, \
1345 .queuecommand = ata_scsi_queuecmd, \ 1353 .queuecommand = ata_scsi_queuecmd, \
1346 .can_queue = ATA_DEF_QUEUE, \ 1354 .can_queue = ATA_DEF_QUEUE, \
1355 .tag_alloc_policy = BLK_TAG_ALLOC_RR, \
1347 .this_id = ATA_SHT_THIS_ID, \ 1356 .this_id = ATA_SHT_THIS_ID, \
1348 .cmd_per_lun = ATA_SHT_CMD_PER_LUN, \ 1357 .cmd_per_lun = ATA_SHT_CMD_PER_LUN, \
1349 .emulated = ATA_SHT_EMULATED, \ 1358 .emulated = ATA_SHT_EMULATED, \