Add back irq-pio patches, etc. Signed-off-by: Albert Lee <albertcc@xxxxxxxxxx> --- Changes: - add back irq-pio patches removed in patch 3/5. - ata_dev_revalidate() by Tejun - remove redundant ap->hsm_task_state = HSM_ST_IDLE in ata_qc_timeout(). --- catchup3/drivers/scsi/libata-core.c 2006-03-10 18:04:35.000000000 +0800 +++ catchup4/drivers/scsi/libata-core.c 2006-03-10 18:11:56.000000000 +0800 @@ -1159,6 +1159,12 @@ static int ata_dev_configure(struct ata_ dev->cylinders, dev->heads, dev->sectors); } + if (dev->id[59] & 0x100) { + dev->multi_count = dev->id[59] & 0xff; + DPRINTK("ata%u: dev %u multi count %u\n", + ap->id, device, dev->multi_count); + } + dev->cdb_len = 16; } @@ -1172,6 +1178,9 @@ static int ata_dev_configure(struct ata_ } dev->cdb_len = (unsigned int) rc; + if (ata_id_cdb_intr(dev->id)) + dev->flags |= ATA_DFLAG_CDB_INTR; + /* print device info to dmesg */ if (print_info) printk(KERN_INFO "ata%u: dev %u ATAPI, max %s\n", @@ -1618,6 +1627,12 @@ static void ata_dev_set_mode(struct ata_ idx = ofs + dev->xfer_shift; WARN_ON(idx >= ARRAY_SIZE(xfer_mode_str)); + if (ata_dev_revalidate(ap, dev, 0)) { + printk(KERN_ERR "ata%u: failed to revalidate after set " + "xfermode, disabled\n", ap->id); + ata_port_disable(ap); + } + DPRINTK("idx=%d xfer_shift=%u, xfer_mode=0x%x, base=0x%x, offset=%d\n", idx, dev->xfer_shift, (int)dev->xfer_mode, (int)base, ofs); @@ -3853,8 +3868,6 @@ static void ata_qc_timeout(struct ata_qu printk(KERN_ERR "ata%u: command 0x%x timeout, stat 0x%x host_stat 0x%x\n", ap->id, qc->tf.command, drv_stat, host_stat); - ap->hsm_task_state = HSM_ST_IDLE; - /* complete taskfile transaction */ qc->err_mask |= AC_ERR_TIMEOUT; break; - : send the line "unsubscribe linux-ide" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html