aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/scsi/sata_mv.c
diff options
context:
space:
mode:
authorJeff Garzik <jeff@garzik.org>2006-03-24 09:24:04 -0500
committerJeff Garzik <jeff@garzik.org>2006-03-24 09:24:04 -0500
commit11ed56fb7899f9eb9eaef8e5919db1bf08f1b07e (patch)
treeb01421cb139b11065d776ed361a7a12b3a1aecc9 /drivers/scsi/sata_mv.c
parent54da9a3968448681d0ddf193ec90f2480c5cba1c (diff)
parent2cc432eed0491df66e14b578139bba2c75fb3f9a (diff)
Merge branch 'upstream'
Conflicts: drivers/scsi/sata_vsc.c
Diffstat (limited to 'drivers/scsi/sata_mv.c')
-rw-r--r--drivers/scsi/sata_mv.c8
1 files changed, 5 insertions, 3 deletions
diff --git a/drivers/scsi/sata_mv.c b/drivers/scsi/sata_mv.c
index 692c63bdcff8..2819a75c4a84 100644
--- a/drivers/scsi/sata_mv.c
+++ b/drivers/scsi/sata_mv.c
@@ -378,7 +378,6 @@ static struct scsi_host_template mv_sht = {
378 .name = DRV_NAME, 378 .name = DRV_NAME,
379 .ioctl = ata_scsi_ioctl, 379 .ioctl = ata_scsi_ioctl,
380 .queuecommand = ata_scsi_queuecmd, 380 .queuecommand = ata_scsi_queuecmd,
381 .eh_timed_out = ata_scsi_timed_out,
382 .eh_strategy_handler = ata_scsi_error, 381 .eh_strategy_handler = ata_scsi_error,
383 .can_queue = MV_USE_Q_DEPTH, 382 .can_queue = MV_USE_Q_DEPTH,
384 .this_id = ATA_SHT_THIS_ID, 383 .this_id = ATA_SHT_THIS_ID,
@@ -1263,6 +1262,7 @@ static u8 mv_get_crpb_status(struct ata_port *ap)
1263 void __iomem *port_mmio = mv_ap_base(ap); 1262 void __iomem *port_mmio = mv_ap_base(ap);
1264 struct mv_port_priv *pp = ap->private_data; 1263 struct mv_port_priv *pp = ap->private_data;
1265 u32 out_ptr; 1264 u32 out_ptr;
1265 u8 ata_status;
1266 1266
1267 out_ptr = readl(port_mmio + EDMA_RSP_Q_OUT_PTR_OFS); 1267 out_ptr = readl(port_mmio + EDMA_RSP_Q_OUT_PTR_OFS);
1268 1268
@@ -1270,6 +1270,8 @@ static u8 mv_get_crpb_status(struct ata_port *ap)
1270 WARN_ON(((out_ptr >> EDMA_RSP_Q_PTR_SHIFT) & MV_MAX_Q_DEPTH_MASK) != 1270 WARN_ON(((out_ptr >> EDMA_RSP_Q_PTR_SHIFT) & MV_MAX_Q_DEPTH_MASK) !=
1271 pp->rsp_consumer); 1271 pp->rsp_consumer);
1272 1272
1273 ata_status = pp->crpb[pp->rsp_consumer].flags >> CRPB_FLAG_STATUS_SHIFT;
1274
1273 /* increment our consumer index... */ 1275 /* increment our consumer index... */
1274 pp->rsp_consumer = mv_inc_q_index(&pp->rsp_consumer); 1276 pp->rsp_consumer = mv_inc_q_index(&pp->rsp_consumer);
1275 1277
@@ -1284,7 +1286,7 @@ static u8 mv_get_crpb_status(struct ata_port *ap)
1284 writelfl(out_ptr, port_mmio + EDMA_RSP_Q_OUT_PTR_OFS); 1286 writelfl(out_ptr, port_mmio + EDMA_RSP_Q_OUT_PTR_OFS);
1285 1287
1286 /* Return ATA status register for completed CRPB */ 1288 /* Return ATA status register for completed CRPB */
1287 return (pp->crpb[pp->rsp_consumer].flags >> CRPB_FLAG_STATUS_SHIFT); 1289 return ata_status;
1288} 1290}
1289 1291
1290/** 1292/**
@@ -1353,7 +1355,6 @@ static void mv_host_intr(struct ata_host_set *host_set, u32 relevant,
1353 u32 hc_irq_cause; 1355 u32 hc_irq_cause;
1354 int shift, port, port0, hard_port, handled; 1356 int shift, port, port0, hard_port, handled;
1355 unsigned int err_mask; 1357 unsigned int err_mask;
1356 u8 ata_status = 0;
1357 1358
1358 if (hc == 0) { 1359 if (hc == 0) {
1359 port0 = 0; 1360 port0 = 0;
@@ -1371,6 +1372,7 @@ static void mv_host_intr(struct ata_host_set *host_set, u32 relevant,
1371 hc,relevant,hc_irq_cause); 1372 hc,relevant,hc_irq_cause);
1372 1373
1373 for (port = port0; port < port0 + MV_PORTS_PER_HC; port++) { 1374 for (port = port0; port < port0 + MV_PORTS_PER_HC; port++) {
1375 u8 ata_status = 0;
1374 ap = host_set->ports[port]; 1376 ap = host_set->ports[port];
1375 hard_port = port & MV_PORT_MASK; /* range 0-3 */ 1377 hard_port = port & MV_PORT_MASK; /* range 0-3 */
1376 handled = 0; /* ensure ata_status is set if handled++ */ 1378 handled = 0; /* ensure ata_status is set if handled++ */