|
@@ -455,6 +455,9 @@ static void taskfile_load_raw(struct ata_port *ap,
|
|
|
struct ata_device *atadev,
|
|
|
const struct taskfile_array *gtf)
|
|
|
{
|
|
|
+ struct ata_taskfile tf;
|
|
|
+ unsigned int err;
|
|
|
+
|
|
|
if (ata_msg_probe(ap))
|
|
|
ata_dev_printk(atadev, KERN_DEBUG, "%s: (0x1f1-1f7): hex: "
|
|
|
"%02x %02x %02x %02x %02x %02x %02x\n",
|
|
@@ -467,35 +470,25 @@ static void taskfile_load_raw(struct ata_port *ap,
|
|
|
&& (gtf->tfa[6] == 0))
|
|
|
return;
|
|
|
|
|
|
- if (ap->ops->qc_issue) {
|
|
|
- struct ata_taskfile tf;
|
|
|
- unsigned int err;
|
|
|
-
|
|
|
- ata_tf_init(atadev, &tf);
|
|
|
-
|
|
|
- /* convert gtf to tf */
|
|
|
- tf.flags |= ATA_TFLAG_ISADDR | ATA_TFLAG_DEVICE; /* TBD */
|
|
|
- tf.protocol = atadev->class == ATA_DEV_ATAPI ?
|
|
|
- ATA_PROT_ATAPI_NODATA : ATA_PROT_NODATA;
|
|
|
- tf.feature = gtf->tfa[0]; /* 0x1f1 */
|
|
|
- tf.nsect = gtf->tfa[1]; /* 0x1f2 */
|
|
|
- tf.lbal = gtf->tfa[2]; /* 0x1f3 */
|
|
|
- tf.lbam = gtf->tfa[3]; /* 0x1f4 */
|
|
|
- tf.lbah = gtf->tfa[4]; /* 0x1f5 */
|
|
|
- tf.device = gtf->tfa[5]; /* 0x1f6 */
|
|
|
- tf.command = gtf->tfa[6]; /* 0x1f7 */
|
|
|
-
|
|
|
- err = ata_exec_internal(atadev, &tf, NULL, DMA_NONE, NULL, 0);
|
|
|
- if (err && ata_msg_probe(ap))
|
|
|
- ata_dev_printk(atadev, KERN_ERR,
|
|
|
- "%s: ata_exec_internal failed: %u\n",
|
|
|
- __FUNCTION__, err);
|
|
|
- } else
|
|
|
- if (ata_msg_warn(ap))
|
|
|
- ata_dev_printk(atadev, KERN_WARNING,
|
|
|
- "%s: SATA driver is missing qc_issue function"
|
|
|
- " entry points\n",
|
|
|
- __FUNCTION__);
|
|
|
+ ata_tf_init(atadev, &tf);
|
|
|
+
|
|
|
+ /* convert gtf to tf */
|
|
|
+ tf.flags |= ATA_TFLAG_ISADDR | ATA_TFLAG_DEVICE; /* TBD */
|
|
|
+ tf.protocol = atadev->class == ATA_DEV_ATAPI ?
|
|
|
+ ATA_PROT_ATAPI_NODATA : ATA_PROT_NODATA;
|
|
|
+ tf.feature = gtf->tfa[0]; /* 0x1f1 */
|
|
|
+ tf.nsect = gtf->tfa[1]; /* 0x1f2 */
|
|
|
+ tf.lbal = gtf->tfa[2]; /* 0x1f3 */
|
|
|
+ tf.lbam = gtf->tfa[3]; /* 0x1f4 */
|
|
|
+ tf.lbah = gtf->tfa[4]; /* 0x1f5 */
|
|
|
+ tf.device = gtf->tfa[5]; /* 0x1f6 */
|
|
|
+ tf.command = gtf->tfa[6]; /* 0x1f7 */
|
|
|
+
|
|
|
+ err = ata_exec_internal(atadev, &tf, NULL, DMA_NONE, NULL, 0);
|
|
|
+ if (err && ata_msg_probe(ap))
|
|
|
+ ata_dev_printk(atadev, KERN_ERR,
|
|
|
+ "%s: ata_exec_internal failed: %u\n",
|
|
|
+ __FUNCTION__, err);
|
|
|
}
|
|
|
|
|
|
/**
|