diff options
Diffstat (limited to 'drivers/scsi/sata_qstor.c')
-rw-r--r-- | drivers/scsi/sata_qstor.c | 11 |
1 files changed, 5 insertions, 6 deletions
diff --git a/drivers/scsi/sata_qstor.c b/drivers/scsi/sata_qstor.c index 65502c157a54..3184178e4950 100644 --- a/drivers/scsi/sata_qstor.c +++ b/drivers/scsi/sata_qstor.c | |||
@@ -178,7 +178,7 @@ static struct ata_port_info qs_port_info[] = { | |||
178 | .host_flags = ATA_FLAG_SATA | ATA_FLAG_NO_LEGACY | | 178 | .host_flags = ATA_FLAG_SATA | ATA_FLAG_NO_LEGACY | |
179 | ATA_FLAG_SATA_RESET | | 179 | ATA_FLAG_SATA_RESET | |
180 | //FIXME ATA_FLAG_SRST | | 180 | //FIXME ATA_FLAG_SRST | |
181 | ATA_FLAG_MMIO, | 181 | ATA_FLAG_MMIO | ATA_FLAG_PIO_POLLING, |
182 | .pio_mask = 0x10, /* pio4 */ | 182 | .pio_mask = 0x10, /* pio4 */ |
183 | .udma_mask = 0x7f, /* udma0-6 */ | 183 | .udma_mask = 0x7f, /* udma0-6 */ |
184 | .port_ops = &qs_ata_ops, | 184 | .port_ops = &qs_ata_ops, |
@@ -394,14 +394,13 @@ static inline unsigned int qs_intr_pkt(struct ata_host_set *host_set) | |||
394 | DPRINTK("SFF=%08x%08x: sCHAN=%u sHST=%d sDST=%02x\n", | 394 | DPRINTK("SFF=%08x%08x: sCHAN=%u sHST=%d sDST=%02x\n", |
395 | sff1, sff0, port_no, sHST, sDST); | 395 | sff1, sff0, port_no, sHST, sDST); |
396 | handled = 1; | 396 | handled = 1; |
397 | if (ap && !(ap->flags & | 397 | if (ap && !(ap->flags & ATA_FLAG_PORT_DISABLED)) { |
398 | (ATA_FLAG_PORT_DISABLED|ATA_FLAG_NOINTR))) { | ||
399 | struct ata_queued_cmd *qc; | 398 | struct ata_queued_cmd *qc; |
400 | struct qs_port_priv *pp = ap->private_data; | 399 | struct qs_port_priv *pp = ap->private_data; |
401 | if (!pp || pp->state != qs_state_pkt) | 400 | if (!pp || pp->state != qs_state_pkt) |
402 | continue; | 401 | continue; |
403 | qc = ata_qc_from_tag(ap, ap->active_tag); | 402 | qc = ata_qc_from_tag(ap, ap->active_tag); |
404 | if (qc && (!(qc->tf.ctl & ATA_NIEN))) { | 403 | if (qc && (!(qc->tf.flags & ATA_TFLAG_POLLING))) { |
405 | switch (sHST) { | 404 | switch (sHST) { |
406 | case 0: /* successful CPB */ | 405 | case 0: /* successful CPB */ |
407 | case 3: /* device error */ | 406 | case 3: /* device error */ |
@@ -428,13 +427,13 @@ static inline unsigned int qs_intr_mmio(struct ata_host_set *host_set) | |||
428 | struct ata_port *ap; | 427 | struct ata_port *ap; |
429 | ap = host_set->ports[port_no]; | 428 | ap = host_set->ports[port_no]; |
430 | if (ap && | 429 | if (ap && |
431 | !(ap->flags & (ATA_FLAG_PORT_DISABLED | ATA_FLAG_NOINTR))) { | 430 | !(ap->flags & ATA_FLAG_PORT_DISABLED)) { |
432 | struct ata_queued_cmd *qc; | 431 | struct ata_queued_cmd *qc; |
433 | struct qs_port_priv *pp = ap->private_data; | 432 | struct qs_port_priv *pp = ap->private_data; |
434 | if (!pp || pp->state != qs_state_mmio) | 433 | if (!pp || pp->state != qs_state_mmio) |
435 | continue; | 434 | continue; |
436 | qc = ata_qc_from_tag(ap, ap->active_tag); | 435 | qc = ata_qc_from_tag(ap, ap->active_tag); |
437 | if (qc && (!(qc->tf.ctl & ATA_NIEN))) { | 436 | if (qc && (!(qc->tf.flags & ATA_TFLAG_POLLING))) { |
438 | 437 | ||
439 | /* check main status, clearing INTRQ */ | 438 | /* check main status, clearing INTRQ */ |
440 | u8 status = ata_check_status(ap); | 439 | u8 status = ata_check_status(ap); |