Maxim Polyakov has uploaded this change for review. ( https://review.coreboot.org/c/coreboot/+/35167 )
Change subject: soc/skylake/vr_config: Add VR config for Skylake S ......................................................................
soc/skylake/vr_config: Add VR config for Skylake S
These changes are in accordance with the documentation: [*] page 112-119, 6th Generation Intel(R) Processor Families for S-Platforms, Volume 1 of 2, Datasheet, August 2018. Document Number: 332687-008EN
Tested on Asrock H110M DVS with i5-6600 (4 cores) CPU
Change-Id: I8e517d8230c251e0cd4b1d4f1b9292c3df80cb19 Signed-off-by: Maxim Polyakov max.senia.poliak@gmail.com --- M src/soc/intel/skylake/vr_config.c 1 file changed, 42 insertions(+), 24 deletions(-)
git pull ssh://review.coreboot.org:29418/coreboot refs/changes/67/35167/1
diff --git a/src/soc/intel/skylake/vr_config.c b/src/soc/intel/skylake/vr_config.c index fc48558..82f3fdc 100644 --- a/src/soc/intel/skylake/vr_config.c +++ b/src/soc/intel/skylake/vr_config.c @@ -113,28 +113,37 @@ * Iccmax table from Doc #559100 Section 7.2 DC Specifications, the * Iccmax is the same among KBL-Y but KBL-U/R. * Addendum for AML-Y #594883, IccMax for IA core is 28A. - * KBL-S #335195, KBL-H #335190 - * +----------------+-------------+---------------+------+-----+ - * | Domain/Setting | SA | IA | GTUS | GTS | - * +----------------+-------------+---------------+------+-----+ - * | IccMax(KBL-S) | 11.1A | 100A | 48A | 48A | - * | | | ... | 45A | 45A | - * | | | 40A | 35A | 35A | - * +----------------+-------------+---------------+------+-----+ - * | IccMax(KBL-H) | 11.1A (45W) | 68A | 55A | 55A | - * | | 6.6A (18W) | 60A | | | - * +----------------+-------------+---------------+------+-----+ - * | IccMax(KBL-U/R)| 6A(U42) | 64A(U42) | 31A | 31A | - * | | 4.5A(Others)| 29A(P/C) | | | - * | | | 32A(i3/i5) | | | - * +----------------+-------------+---------------+------+-----+ - * | IccMax(KBL-Y) | 4.1A | 24A | 24A | 24A | - * +----------------+-------------+---------------+------+-----+ - * | IccMax(AML-Y) | 4.1A | 28A | 24A | 24A | - * +----------------+-------------+---------------+------+-----+ + * KBL-S #335195, KBL-H #335190, SKL-S #332687 + * +---------------------+-------------+-------+------+------+-----+ + * | Domain/Setting | Cores/TDP | SA | IA | GTUS | GTS | + * +---------------------+-------------+-------+------+------+-----+ + * | IccMax(KBL-S/SKL-S) | 4C/91W | 11.1A | 100A | 45A | 45A | + * | | 4C/80W * | | 82A | | | + * | | 4C/65W | | 79A | | | + * | | 4C/45W * | | 70A | 35A | 35A | + * | | 4C/35W | | 66A | | | + * | | 4C/25W * | | 55A | | | + * | | 2C/54W | | 58A | 48A | 48A | + * | | 2C/51W | | 45A | | | + * | | 2C/35W | | 40A | | | + * +---------------------+-------------+-------+------+------+-----+ + * | IccMax(KBL-H) | 4C/45W | 11.1A | 68A | 55A | 55A | + * | | 4C/18W | 6.6A | 60A | | | + * +---------------------+-------------+-------+------+------+-----+ + * | IccMax(KBL-U/R) | 4C/15W (U42)| 6A | 64A | 31A | 31A | + * | | 2C/15W (P/C)| 4.5A | 29A | | | + * | | 2C/28W (OPC)| | 32A | | | + * +---------------------+-------------+-------+------+------+-----+ + * | IccMax(KBL-Y) | 2C/4.5W | 4.1A | 24A | 24A | 24A | + * | | 2C/6W | | | | | + * +---------------------+-------------+-------+------+------+-----+ + * | IccMax(AML-Y) | 2C/5W | 4.1A | 28A | 24A | 24A | + * +---------------------+-------------+-------+------+------+-----+ + * [*] - for Skylake only */
switch (mch_id) { + case PCI_DEVICE_ID_INTEL_SKL_ID_S_2: case PCI_DEVICE_ID_INTEL_KBL_ID_S: { uint16_t icc_max[NUM_VR_DOMAINS] = { VR_CFG_AMP(11.1), @@ -148,21 +157,28 @@ icc_max[VR_IA_CORE] = VR_CFG_AMP(45);
return icc_max[domain]; - } + case PCI_DEVICE_ID_INTEL_SKL_ID_S_4: case PCI_DEVICE_ID_INTEL_KBL_ID_DT_2: /* fallthrough */ case PCI_DEVICE_ID_INTEL_KBL_ID_DT: { uint16_t icc_max[NUM_VR_DOMAINS] = { VR_CFG_AMP(11.1), - VR_CFG_AMP(66), + VR_CFG_AMP(55), VR_CFG_AMP(45), VR_CFG_AMP(45), }; if (tdp >= 91) icc_max[VR_IA_CORE] = VR_CFG_AMP(100); + else if (tdp >= 80) + icc_max[VR_IA_CORE] = VR_CFG_AMP(82); else if (tdp >= 65) icc_max[VR_IA_CORE] = VR_CFG_AMP(79); - else if (tdp >= 35) { + else if (tdp >= 45) + icc_max[VR_IA_CORE] = VR_CFG_AMP(70); + else if (tdp >= 25) { + if (tdp >= 35) + icc_max[VR_IA_CORE] = VR_CFG_AMP(66); + icc_max[VR_GT_UNSLICED] = VR_CFG_AMP(35); icc_max[VR_GT_SLICED] = VR_CFG_AMP(35); } @@ -241,8 +257,10 @@ }
switch (mch_id) { - case PCI_DEVICE_ID_INTEL_KBL_ID_S: /* fallthrough */ - case PCI_DEVICE_ID_INTEL_KBL_ID_DT: /* fallthrough */ + case PCI_DEVICE_ID_INTEL_SKL_ID_S_2: + case PCI_DEVICE_ID_INTEL_SKL_ID_S_4: + case PCI_DEVICE_ID_INTEL_KBL_ID_S: /* fallthrough */ + case PCI_DEVICE_ID_INTEL_KBL_ID_DT: /* fallthrough */ case PCI_DEVICE_ID_INTEL_KBL_ID_DT_2: { static const uint16_t loadline[NUM_VR_DOMAINS] = { VR_CFG_MOHMS(0), /* Not specified */