|
@@ -800,6 +800,8 @@ static int ahci_set_lpm(struct ata_link *link, enum ata_lpm_policy policy,
|
|
|
cmd |= PORT_CMD_ALPE;
|
|
|
if (policy == ATA_LPM_MIN_POWER)
|
|
|
cmd |= PORT_CMD_ASP;
|
|
|
+ else if (policy == ATA_LPM_MIN_POWER_WITH_PARTIAL)
|
|
|
+ cmd &= ~PORT_CMD_ASP;
|
|
|
|
|
|
/* write out new cmd value */
|
|
|
writel(cmd, port_mmio + PORT_CMD);
|
|
@@ -810,7 +812,8 @@ static int ahci_set_lpm(struct ata_link *link, enum ata_lpm_policy policy,
|
|
|
if ((hpriv->cap2 & HOST_CAP2_SDS) &&
|
|
|
(hpriv->cap2 & HOST_CAP2_SADM) &&
|
|
|
(link->device->flags & ATA_DFLAG_DEVSLP)) {
|
|
|
- if (policy == ATA_LPM_MIN_POWER)
|
|
|
+ if (policy == ATA_LPM_MIN_POWER ||
|
|
|
+ policy == ATA_LPM_MIN_POWER_WITH_PARTIAL)
|
|
|
ahci_set_aggressive_devslp(ap, true);
|
|
|
else
|
|
|
ahci_set_aggressive_devslp(ap, false);
|