Linux kernel mirror (for testing) git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
kernel os linux

libata: Add the AHCI_HFLAG_YES_ALPM flag

Some hardware is capable of supporting Aggresive Link Power Management
even though it is not indicated by the Host Capability register.

This commit adds the AHCI_HFLAG_YES_ALPM flag to the AHCI library to
allow indication of this quirk when the Host Capability register is
Read Only and therefore cannot be changed.

Signed-off-by: Doug Berger <opendmb@gmail.com>
Signed-off-by: Tejun Heo <tj@kernel.org>

authored by

Doug Berger and committed by
Tejun Heo
ef0da1bf d0318fb3

+6
+1
drivers/ata/ahci.h
··· 248 248 AHCI_HFLAG_MULTI_MSI = 0, 249 249 #endif 250 250 AHCI_HFLAG_WAKE_BEFORE_STOP = (1 << 22), /* wake before DMA stop */ 251 + AHCI_HFLAG_YES_ALPM = (1 << 23), /* force ALPM cap on */ 251 252 252 253 /* ap->flags bits */ 253 254
+5
drivers/ata/libahci.c
··· 504 504 cap &= ~HOST_CAP_FBS; 505 505 } 506 506 507 + if (!(cap & HOST_CAP_ALPM) && (hpriv->flags & AHCI_HFLAG_YES_ALPM)) { 508 + dev_info(dev, "controller can do ALPM, turning on CAP_ALPM\n"); 509 + cap |= HOST_CAP_ALPM; 510 + } 511 + 507 512 if (hpriv->force_port_map && port_map != hpriv->force_port_map) { 508 513 dev_info(dev, "forcing port_map 0x%x -> 0x%x\n", 509 514 port_map, hpriv->force_port_map);