Messages in this thread Patch in this message | | | Date | Mon, 13 Nov 2006 15:22:19 +0100 | From | Pavel Machek <> | Subject | AHCI power saving (was Re: Ten hours on X60s) |
| |
Hi!
> There are a couple of bits for turning on the hardware's > power-saving. It makes me think it might save me about a watt, but the > effect could be entirely psychological.
No, I did not mean _those_ bits. This made little or difference for me... (100mW or so, definitely not watt).
doing ahci_pci_device_{suspend,resume} should definitely do the trick, and ahci_{start,stop}_engine might be enough.
> Here is the patch. It is not correct and ready for general use, > because you are supposed to check whether the AHCI chipset supports > the feature.
> So there is no example code for sending the AHCI chipset to S3 and > bringing it back? I thought you said there was before, but I can't > find it!
ahci_pci_device_{suspend,resume} seems to be the code...
Here's the port of your patch to recent -git. Pavel
diff --git a/drivers/ata/ahci.c b/drivers/ata/ahci.c index cef2e70..82a8a44 100644 --- a/drivers/ata/ahci.c +++ b/drivers/ata/ahci.c @@ -148,6 +148,8 @@ enum { PORT_IRQ_PIOS_FIS | PORT_IRQ_D2H_REG_FIS, /* PORT_CMD bits */ + PORT_CMD_ALPE = (1 << 27), /* Aggressive Link Power Management Enable */ + PORT_CMD_ASP = (1 << 26), /* Aggressive entrance to Slumber or Partial power management states */ PORT_CMD_ATAPI = (1 << 24), /* Device is ATAPI */ PORT_CMD_LIST_ON = (1 << 15), /* cmd list DMA engine running */ PORT_CMD_FIS_ON = (1 << 14), /* FIS DMA engine running */ @@ -486,7 +488,7 @@ static void ahci_power_up(void __iomem * } /* wake up link */ - writel(cmd | PORT_CMD_ICC_ACTIVE, port_mmio + PORT_CMD); + writel(cmd | PORT_CMD_ICC_ACTIVE | PORT_CMD_ALPE | PORT_CMD_ASP, port_mmio + PORT_CMD); } static void ahci_power_down(void __iomem *port_mmio, u32 cap) -- (english) http://www.livejournal.com/~pavelmachek (cesky, pictures) http://atrey.karlin.mff.cuni.cz/~pavel/picture/horses/blog.html - To unsubscribe from this list: send the line "unsubscribe linux-kernel" in the body of a message to majordomo@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html Please read the FAQ at http://www.tux.org/lkml/
| |