soc/intel/broadwell/lpc.c: Drop reg-script usage for PCH PM init

Change-Id: I570fedc538a36f49912262d95b7f57ad779dc8a5
Signed-off-by: Angel Pons <th3fanbus@gmail.com>
Reviewed-on: https://review.coreboot.org/c/coreboot/+/46350
Tested-by: build bot (Jenkins) <no-reply@coreboot.org>
Reviewed-by: Arthur Heymans <arthur@aheymans.xyz>
This commit is contained in:
Angel Pons 2020-10-13 20:03:49 +02:00
parent 6f44874598
commit 2436ac037b
1 changed files with 65 additions and 53 deletions

View File

@ -201,59 +201,71 @@ static const struct reg_script pch_misc_init_script[] = {
};
/* Magic register settings for power management */
static const struct reg_script pch_pm_init_script[] = {
REG_PCI_WRITE8(0xa9, 0x46),
REG_MMIO_RMW32(RCBA_BASE_ADDRESS + 0x232c, ~1, 0),
REG_MMIO_OR32(RCBA_BASE_ADDRESS + 0x1100, 0x0000c13f),
REG_MMIO_RMW32(RCBA_BASE_ADDRESS + 0x2320, ~0x60, 0x10),
REG_MMIO_WRITE32(RCBA_BASE_ADDRESS + 0x3314, 0x00012fff),
REG_MMIO_RMW32(RCBA_BASE_ADDRESS + 0x3318, ~0x000f0330, 0x0dcf0400),
REG_MMIO_WRITE32(RCBA_BASE_ADDRESS + 0x3324, 0x04000000),
REG_MMIO_WRITE32(RCBA_BASE_ADDRESS + 0x3368, 0x00041400),
REG_MMIO_WRITE32(RCBA_BASE_ADDRESS + 0x3388, 0x3f8ddbff),
REG_MMIO_WRITE32(RCBA_BASE_ADDRESS + 0x33ac, 0x00007001),
REG_MMIO_WRITE32(RCBA_BASE_ADDRESS + 0x33b0, 0x00181900),
REG_MMIO_WRITE32(RCBA_BASE_ADDRESS + 0x33c0, 0x00060A00),
REG_MMIO_WRITE32(RCBA_BASE_ADDRESS + 0x33d0, 0x06200840),
REG_MMIO_WRITE32(RCBA_BASE_ADDRESS + 0x3a28, 0x01010101),
REG_MMIO_WRITE32(RCBA_BASE_ADDRESS + 0x3a2c, 0x040c0404),
REG_MMIO_WRITE32(RCBA_BASE_ADDRESS + 0x3a9c, 0x9000000a),
REG_MMIO_WRITE32(RCBA_BASE_ADDRESS + 0x2b1c, 0x03808033),
REG_MMIO_WRITE32(RCBA_BASE_ADDRESS + 0x2b34, 0x80000009),
REG_MMIO_WRITE32(RCBA_BASE_ADDRESS + 0x3348, 0x022ddfff),
REG_MMIO_WRITE32(RCBA_BASE_ADDRESS + 0x334c, 0x00000001),
REG_MMIO_WRITE32(RCBA_BASE_ADDRESS + 0x3358, 0x0001c000),
REG_MMIO_WRITE32(RCBA_BASE_ADDRESS + 0x3380, 0x3f8ddbff),
REG_MMIO_WRITE32(RCBA_BASE_ADDRESS + 0x3384, 0x0001c7e1),
REG_MMIO_WRITE32(RCBA_BASE_ADDRESS + 0x338c, 0x0001c7e1),
REG_MMIO_WRITE32(RCBA_BASE_ADDRESS + 0x3398, 0x0001c000),
REG_MMIO_WRITE32(RCBA_BASE_ADDRESS + 0x33a8, 0x00181900),
REG_MMIO_WRITE32(RCBA_BASE_ADDRESS + 0x33dc, 0x00080000),
REG_MMIO_WRITE32(RCBA_BASE_ADDRESS + 0x33e0, 0x00000001),
REG_MMIO_WRITE32(RCBA_BASE_ADDRESS + 0x3a20, 0x0000040c),
REG_MMIO_WRITE32(RCBA_BASE_ADDRESS + 0x3a24, 0x01010101),
REG_MMIO_WRITE32(RCBA_BASE_ADDRESS + 0x3a30, 0x01010101),
REG_PCI_RMW32(0xac, ~0x00200000, 0),
REG_MMIO_OR32(RCBA_BASE_ADDRESS + 0x0410, 0x00000003),
REG_MMIO_OR32(RCBA_BASE_ADDRESS + 0x2618, 0x08000000),
REG_MMIO_OR32(RCBA_BASE_ADDRESS + 0x2300, 0x00000002),
REG_MMIO_OR32(RCBA_BASE_ADDRESS + 0x2600, 0x00000008),
REG_MMIO_WRITE32(RCBA_BASE_ADDRESS + 0x33b4, 0x00007001),
REG_MMIO_WRITE32(RCBA_BASE_ADDRESS + 0x3350, 0x022ddfff),
REG_MMIO_WRITE32(RCBA_BASE_ADDRESS + 0x3354, 0x00000001),
static void pch_pm_init_magic(struct device *dev)
{
pci_write_config8(dev, 0xa9, 0x46);
RCBA32_AND_OR(0x232c, ~1, 0);
RCBA32_OR(0x1100, 0x0000c13f);
RCBA32_AND_OR(0x2320, ~0x60, 0x10);
RCBA32(0x3314) = 0x00012fff;
RCBA32_AND_OR(0x3318, ~0x000f0330, 0x0dcf0400);
RCBA32(0x3324) = 0x04000000;
RCBA32(0x3368) = 0x00041400;
RCBA32(0x3388) = 0x3f8ddbff;
RCBA32(0x33ac) = 0x00007001;
RCBA32(0x33b0) = 0x00181900;
RCBA32(0x33c0) = 0x00060A00;
RCBA32(0x33d0) = 0x06200840;
RCBA32(0x3a28) = 0x01010101;
RCBA32(0x3a2c) = 0x040c0404;
RCBA32(0x3a9c) = 0x9000000a;
RCBA32(0x2b1c) = 0x03808033;
RCBA32(0x2b34) = 0x80000009;
RCBA32(0x3348) = 0x022ddfff;
RCBA32(0x334c) = 0x00000001;
RCBA32(0x3358) = 0x0001c000;
RCBA32(0x3380) = 0x3f8ddbff;
RCBA32(0x3384) = 0x0001c7e1;
RCBA32(0x338c) = 0x0001c7e1;
RCBA32(0x3398) = 0x0001c000;
RCBA32(0x33a8) = 0x00181900;
RCBA32(0x33dc) = 0x00080000;
RCBA32(0x33e0) = 0x00000001;
RCBA32(0x3a20) = 0x0000040c;
RCBA32(0x3a24) = 0x01010101;
RCBA32(0x3a30) = 0x01010101;
pci_update_config32(dev, 0xac, ~0x00200000, 0);
RCBA32_OR(0x0410, 0x00000003);
RCBA32_OR(0x2618, 0x08000000);
RCBA32_OR(0x2300, 0x00000002);
RCBA32_OR(0x2600, 0x00000008);
RCBA32(0x33b4) = 0x00007001;
RCBA32(0x3350) = 0x022ddfff;
RCBA32(0x3354) = 0x00000001;
/* Power Optimizer */
REG_MMIO_OR32(RCBA_BASE_ADDRESS + 0x33d4, 0x08000000),
REG_MMIO_OR32(RCBA_BASE_ADDRESS + 0x33c8, 0x00000080),
REG_MMIO_WRITE32(RCBA_BASE_ADDRESS + 0x2b10, 0x0000883c),
REG_MMIO_WRITE32(RCBA_BASE_ADDRESS + 0x2b14, 0x1e0a4616),
REG_MMIO_WRITE32(RCBA_BASE_ADDRESS + 0x2b24, 0x40000005),
REG_MMIO_WRITE32(RCBA_BASE_ADDRESS + 0x2b20, 0x0005db01),
REG_MMIO_WRITE32(RCBA_BASE_ADDRESS + 0x3a80, 0x05145005),
REG_MMIO_WRITE32(RCBA_BASE_ADDRESS + 0x3a84, 0x00001005),
REG_MMIO_OR32(RCBA_BASE_ADDRESS + 0x33d4, 0x2fff2fb1),
REG_MMIO_OR32(RCBA_BASE_ADDRESS + 0x33c8, 0x00008000),
REG_SCRIPT_END
};
RCBA32_OR(0x33d4, 0x08000000);
RCBA32_OR(0x33c8, 0x00000080);
RCBA32(0x2b10) = 0x0000883c;
RCBA32(0x2b14) = 0x1e0a4616;
RCBA32(0x2b24) = 0x40000005;
RCBA32(0x2b20) = 0x0005db01;
RCBA32(0x3a80) = 0x05145005;
RCBA32(0x3a84) = 0x00001005;
RCBA32_OR(0x33d4, 0x2fff2fb1);
RCBA32_OR(0x33c8, 0x00008000);
}
static void pch_enable_mphy(void)
{
@ -320,7 +332,7 @@ static void pch_pm_init(struct device *dev)
pch_enable_mphy();
reg_script_run_on_dev(dev, pch_pm_init_script);
pch_pm_init_magic(dev);
if (pch_is_wpt()) {
RCBA32_OR(0x33e0, (1 << 4) | (1 << 1));