diff options
Diffstat (limited to 'drivers/ata/sata_sil24.c')
-rw-r--r-- | drivers/ata/sata_sil24.c | 11 |
1 files changed, 11 insertions, 0 deletions
diff --git a/drivers/ata/sata_sil24.c b/drivers/ata/sata_sil24.c index 77aa8d7ecec4..e6946fc527d0 100644 --- a/drivers/ata/sata_sil24.c +++ b/drivers/ata/sata_sil24.c | |||
@@ -846,6 +846,17 @@ static void sil24_qc_prep(struct ata_queued_cmd *qc) | |||
846 | if (!ata_is_atapi(qc->tf.protocol)) { | 846 | if (!ata_is_atapi(qc->tf.protocol)) { |
847 | prb = &cb->ata.prb; | 847 | prb = &cb->ata.prb; |
848 | sge = cb->ata.sge; | 848 | sge = cb->ata.sge; |
849 | if (ata_is_data(qc->tf.protocol)) { | ||
850 | u16 prot = 0; | ||
851 | ctrl = PRB_CTRL_PROTOCOL; | ||
852 | if (ata_is_ncq(qc->tf.protocol)) | ||
853 | prot |= PRB_PROT_NCQ; | ||
854 | if (qc->tf.flags & ATA_TFLAG_WRITE) | ||
855 | prot |= PRB_PROT_WRITE; | ||
856 | else | ||
857 | prot |= PRB_PROT_READ; | ||
858 | prb->prot = cpu_to_le16(prot); | ||
859 | } | ||
849 | } else { | 860 | } else { |
850 | prb = &cb->atapi.prb; | 861 | prb = &cb->atapi.prb; |
851 | sge = cb->atapi.sge; | 862 | sge = cb->atapi.sge; |