diff options
author | Tejun Heo <htejun@gmail.com> | 2006-05-15 07:58:00 -0400 |
---|---|---|
committer | Tejun Heo <htejun@gmail.com> | 2006-05-15 07:58:00 -0400 |
commit | dc2b3515868a254b3d653d77844bff93c5d4c095 (patch) | |
tree | 9593b32b85cce3cc03802ed00d928f3b7ea65aa9 /drivers/scsi/libata-core.c | |
parent | 9ec957f2002bd2994be659bbc0ec28397fa251ee (diff) |
[PATCH] libata-eh-fw: clear SError in ata_std_postreset()
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>
Diffstat (limited to 'drivers/scsi/libata-core.c')
-rw-r--r-- | drivers/scsi/libata-core.c | 6 |
1 files changed, 6 insertions, 0 deletions
diff --git a/drivers/scsi/libata-core.c b/drivers/scsi/libata-core.c index 9a97ebd59209..de2cd61a264d 100644 --- a/drivers/scsi/libata-core.c +++ b/drivers/scsi/libata-core.c | |||
@@ -2528,11 +2528,17 @@ int sata_std_hardreset(struct ata_port *ap, unsigned int *class) | |||
2528 | */ | 2528 | */ |
2529 | void ata_std_postreset(struct ata_port *ap, unsigned int *classes) | 2529 | void ata_std_postreset(struct ata_port *ap, unsigned int *classes) |
2530 | { | 2530 | { |
2531 | u32 serror; | ||
2532 | |||
2531 | DPRINTK("ENTER\n"); | 2533 | DPRINTK("ENTER\n"); |
2532 | 2534 | ||
2533 | /* print link status */ | 2535 | /* print link status */ |
2534 | sata_print_link_status(ap); | 2536 | sata_print_link_status(ap); |
2535 | 2537 | ||
2538 | /* clear SError */ | ||
2539 | if (sata_scr_read(ap, SCR_ERROR, &serror) == 0) | ||
2540 | sata_scr_write(ap, SCR_ERROR, serror); | ||
2541 | |||
2536 | /* re-enable interrupts */ | 2542 | /* re-enable interrupts */ |
2537 | if (ap->ioaddr.ctl_addr) /* FIXME: hack. create a hook instead */ | 2543 | if (ap->ioaddr.ctl_addr) /* FIXME: hack. create a hook instead */ |
2538 | ata_irq_on(ap); | 2544 | ata_irq_on(ap); |