aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/ata
diff options
context:
space:
mode:
authorMarc Carino <marc.ceeeee@gmail.com>2013-08-25 02:22:50 -0400
committerTejun Heo <tj@kernel.org>2013-08-25 09:39:12 -0400
commited36911c747c18525691c0aa0fbe6b918c8eac19 (patch)
treefd8c376b691932deed756040bca9fbeda9054bef /drivers/ata
parent40fb59e75ad197a1c4ca2fbccef85432d8d103f8 (diff)
libata: Add support for SEND/RECEIVE FPDMA QUEUED
Add support for the following ATA opcodes, which are present in SATA 3.1 and T13 ATA ACS-3: SEND FPDMA QUEUED RECEIVE FPDMA QUEUED Signed-off-by: Marc Carino <marc.ceeeee@gmail.com> Signed-off-by: Tejun Heo <tj@kernel.org>
Diffstat (limited to 'drivers/ata')
-rw-r--r--drivers/ata/libata-core.c16
1 files changed, 16 insertions, 0 deletions
diff --git a/drivers/ata/libata-core.c b/drivers/ata/libata-core.c
index 2b4e92568850..a044be99841a 100644
--- a/drivers/ata/libata-core.c
+++ b/drivers/ata/libata-core.c
@@ -2141,6 +2141,22 @@ static int ata_dev_config_ncq(struct ata_device *dev,
2141 else 2141 else
2142 snprintf(desc, desc_sz, "NCQ (depth %d/%d)%s", hdepth, 2142 snprintf(desc, desc_sz, "NCQ (depth %d/%d)%s", hdepth,
2143 ddepth, aa_desc); 2143 ddepth, aa_desc);
2144
2145 if ((ap->flags & ATA_FLAG_FPDMA_AUX) &&
2146 ata_id_has_ncq_send_and_recv(dev->id)) {
2147 err_mask = ata_read_log_page(dev, ATA_LOG_NCQ_SEND_RECV,
2148 0, ap->sector_buf, 1);
2149 if (err_mask) {
2150 ata_dev_dbg(dev,
2151 "failed to get NCQ Send/Recv Log Emask 0x%x\n",
2152 err_mask);
2153 } else {
2154 dev->flags |= ATA_DFLAG_NCQ_SEND_RECV;
2155 memcpy(dev->ncq_send_recv_cmds, ap->sector_buf,
2156 ATA_LOG_NCQ_SEND_RECV_SIZE);
2157 }
2158 }
2159
2144 return 0; 2160 return 0;
2145} 2161}
2146 2162