aboutsummaryrefslogtreecommitdiff
path: root/src/drivers/generic/bayhub/bh720.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/drivers/generic/bayhub/bh720.c')
-rw-r--r--src/drivers/generic/bayhub/bh720.c26
1 files changed, 20 insertions, 6 deletions
diff --git a/src/drivers/generic/bayhub/bh720.c b/src/drivers/generic/bayhub/bh720.c
index 3a0a9721ad..3e78b4f049 100644
--- a/src/drivers/generic/bayhub/bh720.c
+++ b/src/drivers/generic/bayhub/bh720.c
@@ -24,16 +24,24 @@
enum {
BH720_PROTECT = 0xd0,
+ BH720_PROTECT_LOCK_OFF = 0,
+ BH720_PROTECT_LOCK_ON = BIT(0),
BH720_PROTECT_OFF = 0,
- BH720_PROTECT_ON = 1,
-
- BH720_RTD3_L1 = 0x3e0,
- BH720_RTD3_L1_DISABLE_L1 = BIT(28),
+ BH720_PROTECT_ON = BIT(31),
BH720_LINK_CTRL = 0x90,
BH720_LINK_CTRL_L0_ENABLE = BIT(0),
BH720_LINK_CTRL_L1_ENABLE = BIT(1),
BH720_LINK_CTRL_CLKREQ = BIT(8),
+
+ BH720_MISC2 = 0xf0,
+ BH720_MISC2_ASPM_DISABLE = BIT(0),
+ BH720_MISC2_APSM_CLKREQ_L1 = BIT(7),
+ BH720_MISC2_APSM_PHY_L1 = BIT(10),
+ BH720_MISC2_APSM_MORE = BIT(12),
+
+ BH720_RTD3_L1 = 0x3e0,
+ BH720_RTD3_L1_DISABLE_L1 = BIT(28),
};
static void bh720_init(struct device *dev)
@@ -47,13 +55,19 @@ static void bh720_init(struct device *dev)
* This procedure for enabling power-saving mode is from the
* BayHub BIOS Implementation Guideline document.
*/
- pci_write_config32(dev, BH720_PROTECT, BH720_PROTECT_OFF);
+ pci_write_config32(dev, BH720_PROTECT,
+ BH720_PROTECT_OFF | BH720_PROTECT_LOCK_OFF);
pci_or_config32(dev, BH720_RTD3_L1, BH720_RTD3_L1_DISABLE_L1);
pci_or_config32(dev, BH720_LINK_CTRL,
BH720_LINK_CTRL_L0_ENABLE |
BH720_LINK_CTRL_L1_ENABLE);
pci_or_config32(dev, BH720_LINK_CTRL, BH720_LINK_CTRL_CLKREQ);
- pci_write_config32(dev, BH720_PROTECT, BH720_PROTECT_ON);
+ pci_update_config32(dev, BH720_MISC2, ~BH720_MISC2_ASPM_DISABLE,
+ BH720_MISC2_APSM_CLKREQ_L1 |
+ BH720_MISC2_APSM_PHY_L1);
+ pci_write_config32(dev, BH720_PROTECT,
+ BH720_PROTECT_ON | BH720_PROTECT_LOCK_ON);
+
printk(BIOS_INFO, "BayHub BH720: Power-saving enabled (link_ctrl=%#x)\n",
pci_read_config32(dev, BH720_LINK_CTRL));
}