From: Jeff Garzik Date: Mon, 29 Oct 2007 14:43:55 +0000 (-0400) Subject: [libata] AHCI: fix newly introduced host-reset bug X-Git-Url: http://drtracing.org/?a=commitdiff_plain;h=ab6fc95f609b372a19e18ea689986846ab1ba29c;p=deliverable%2Flinux.git [libata] AHCI: fix newly introduced host-reset bug The recent fix to host reset introduced a problem, whereby AHCI-enable bit would be cleared upon reset, if it was not asserted prior to reset. Unconditionally enable AHCI-enable bit. Signed-off-by: Jeff Garzik --- diff --git a/drivers/ata/ahci.c b/drivers/ata/ahci.c index 93bcb2cb3d35..c8ab947cf359 100644 --- a/drivers/ata/ahci.c +++ b/drivers/ata/ahci.c @@ -898,8 +898,10 @@ static int ahci_reset_controller(struct ata_host *host) * AHCI-specific, such as HOST_RESET. */ tmp = readl(mmio + HOST_CTL); - if (!(tmp & HOST_AHCI_EN)) - writel(tmp | HOST_AHCI_EN, mmio + HOST_CTL); + if (!(tmp & HOST_AHCI_EN)) { + tmp |= HOST_AHCI_EN; + writel(tmp, mmio + HOST_CTL); + } /* global controller reset */ if ((tmp & HOST_RESET) == 0) {