Make sure the controller has no pending commands and ready for command before issuing SRST. Signed-off-by: Tejun Heo <htejun@xxxxxxxxx> --- drivers/scsi/sata_sil24.c | 9 +++++++++ 1 files changed, 9 insertions(+), 0 deletions(-) 522c4966f33a80e263e018bbeb1a8a84bd1087e8 diff --git a/drivers/scsi/sata_sil24.c b/drivers/scsi/sata_sil24.c index f50a728..e9058f0 100644 --- a/drivers/scsi/sata_sil24.c +++ b/drivers/scsi/sata_sil24.c @@ -470,6 +470,15 @@ static int sil24_softreset(struct ata_po irq_enable = readl(port + PORT_IRQ_ENABLE_SET); writel(irq_enable, port + PORT_IRQ_ENABLE_CLR); + /* put the port into known state */ + writel(PORT_CS_INIT, port + PORT_CTRL_STAT); + if (sil24_poll_register(port + PORT_CTRL_STAT, + PORT_CS_INIT | PORT_CS_RDY, PORT_CS_RDY, + 10, 100)) { + DPRINTK("port not ready\n"); + return -EIO; + } + /* * XXX: Not sure whether the following sleep is needed or not. * The original driver had it. So.... -- 1.2.4 - : 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