[PATCH] libata-eh-fw: clear SError in ata_std_postreset()
authorTejun Heo <htejun@gmail.com>
Mon, 15 May 2006 11:58:00 +0000 (20:58 +0900)
committerTejun Heo <htejun@gmail.com>
Mon, 15 May 2006 11:58:00 +0000 (20:58 +0900)
Clear SError in ata_std_postreset().  This is to clear SError bits
which get set during reset.

Signed-off-by: Tejun Heo <htejun@gmail.com>
drivers/scsi/libata-core.c

index 9a97ebd5920996d5b4c4ec8f1f6535be32e4d5b1..de2cd61a264d7e5969643271b2a2e8dae213707c 100644 (file)
@@ -2528,11 +2528,17 @@ int sata_std_hardreset(struct ata_port *ap, unsigned int *class)
  */
 void ata_std_postreset(struct ata_port *ap, unsigned int *classes)
 {
+       u32 serror;
+
        DPRINTK("ENTER\n");
 
        /* print link status */
        sata_print_link_status(ap);
 
+       /* clear SError */
+       if (sata_scr_read(ap, SCR_ERROR, &serror) == 0)
+               sata_scr_write(ap, SCR_ERROR, serror);
+
        /* re-enable interrupts */
        if (ap->ioaddr.ctl_addr)        /* FIXME: hack. create a hook instead */
                ata_irq_on(ap);