[coreboot-gerrit] Patch set updated for coreboot: soc/intel/skylake: Perform early chipset programming
Subrata Banik (subrata.banik@intel.com)
gerrit at coreboot.org
Sun Jul 24 16:15:57 CEST 2016
Subrata Banik (subrata.banik at intel.com) just uploaded a new patch set to gerrit, which you can find at https://review.coreboot.org/15819
-gerrit
commit ff17ce8aaa91aee9d4a7c0c0ce173d00d3e6602a
Author: Subrata Banik <subrata.banik at intel.com>
Date: Fri Jul 22 21:51:42 2016 +0530
soc/intel/skylake: Perform early chipset programming
Move PCH programming from verstage to early romstage.
BUG=chrome-os-partner:55357
BRANCH=none
TEST=Built and booted kunimitsu
Change-Id: Ie763f3a73e0a76817dd682adfd9fe3c7c11207cf
Signed-off-by: Barnali Sarkar <barnali.sarkar at intel.com>
Signed-off-by: Shirish S <shirish.s at intel.com>
Signed-off-by: Subrata Banik <subrata.banik at intel.com>
---
src/drivers/intel/fsp1_1/include/fsp/romstage.h | 6 ++++
src/drivers/intel/fsp1_1/romstage.c | 9 ++++++
src/soc/intel/skylake/romstage/pch.c | 38 -------------------------
src/soc/intel/skylake/romstage/romstage.c | 2 +-
4 files changed, 16 insertions(+), 39 deletions(-)
diff --git a/src/drivers/intel/fsp1_1/include/fsp/romstage.h b/src/drivers/intel/fsp1_1/include/fsp/romstage.h
index d07dc37..d3cf818 100644
--- a/src/drivers/intel/fsp1_1/include/fsp/romstage.h
+++ b/src/drivers/intel/fsp1_1/include/fsp/romstage.h
@@ -84,6 +84,12 @@ void *setup_stack_and_mtrrs(void);
void soc_after_ram_init(struct romstage_params *params);
void soc_display_memory_init_params(const MEMORY_INIT_UPD *old,
MEMORY_INIT_UPD *new);
+/*
+ * Perform early chipset initialization before fsp memory init
+ * example: pirq->irq programming, enabling smbus, pmcbase, abase,
+ * get platform info, i2c programming
+ */
+void soc_early_pch_init(void);
void soc_memory_init_params(struct romstage_params *params,
MEMORY_INIT_UPD *upd);
void soc_pre_ram_init(struct romstage_params *params);
diff --git a/src/drivers/intel/fsp1_1/romstage.c b/src/drivers/intel/fsp1_1/romstage.c
index c1b1ca5..a98210a 100644
--- a/src/drivers/intel/fsp1_1/romstage.c
+++ b/src/drivers/intel/fsp1_1/romstage.c
@@ -38,6 +38,11 @@
#include <tpm.h>
#include <vendorcode/google/chromeos/chromeos.h>
+#if IS_ENABLED(CONFIG_C_ENVIRONMENT_BOOTBLOCK)
+/* Perform early chipset initialization before fsp memory init */
+__attribute__((weak)) void soc_early_pch_init(void) { /* no-op */ }
+#endif
+
asmlinkage void *romstage_main(FSP_INFO_HEADER *fih)
{
void *top_of_stack;
@@ -55,6 +60,10 @@ asmlinkage void *romstage_main(FSP_INFO_HEADER *fih)
if (IS_ENABLED(CONFIG_SUPPORT_CPU_UCODE_IN_CBFS))
intel_update_microcode_from_cbfs();
+ /* Early pch chipset init */
+ if (IS_ENABLED(CONFIG_C_ENVIRONMENT_BOOTBLOCK))
+ soc_early_pch_init();
+
memset(&pei_data, 0, sizeof(pei_data));
/* Display parameters */
diff --git a/src/soc/intel/skylake/romstage/pch.c b/src/soc/intel/skylake/romstage/pch.c
index 1196c5e..ea0bd85 100644
--- a/src/soc/intel/skylake/romstage/pch.c
+++ b/src/soc/intel/skylake/romstage/pch.c
@@ -44,42 +44,6 @@ static const u8 pch_interrupt_routing[] = {
11 /* PHRC: PIRQH -> IRQ11 */
};
-static void pch_enable_lpc(void)
-{
- /* Lookup device tree in romstage */
- const struct device *dev;
- const config_t *config;
- u16 lpc_en;
-
- /* IO Decode Range */
- lpc_en = COMA_RANGE | (COMB_RANGE << 4);
- pci_write_config16(PCH_DEV_LPC, LPC_IO_DEC, lpc_en);
- pcr_write16(PID_DMI, R_PCH_PCR_DMI_LPCIOD, lpc_en);
-
- /* IO Decode Enable */
- lpc_en = CNF1_LPC_EN | CNF2_LPC_EN | GAMEL_LPC_EN | GAMEH_LPC_EN |
- COMA_LPC_EN | KBC_LPC_EN | MC_LPC_EN;
- pci_write_config16(PCH_DEV_LPC, LPC_EN, lpc_en);
- pcr_write16(PID_DMI, R_PCH_PCR_DMI_LPCIOE, lpc_en);
-
- dev = dev_find_slot(0, PCI_DEVFN(PCH_DEV_SLOT_LPC, 0));
- if (!dev || !dev->chip_info)
- return;
- config = dev->chip_info;
-
- /* Set in PCI generic decode range registers */
- pci_write_config32(PCH_DEV_LPC, LPC_GEN1_DEC, config->gen1_dec);
- pci_write_config32(PCH_DEV_LPC, LPC_GEN2_DEC, config->gen2_dec);
- pci_write_config32(PCH_DEV_LPC, LPC_GEN3_DEC, config->gen3_dec);
- pci_write_config32(PCH_DEV_LPC, LPC_GEN4_DEC, config->gen4_dec);
-
- /* Mirror these same settings in DMI PCR */
- pcr_write32(PID_DMI, R_PCH_PCR_DMI_LPCLGIR1, config->gen1_dec);
- pcr_write32(PID_DMI, R_PCH_PCR_DMI_LPCLGIR2, config->gen2_dec);
- pcr_write32(PID_DMI, R_PCH_PCR_DMI_LPCLGIR3, config->gen3_dec);
- pcr_write32(PID_DMI, R_PCH_PCR_DMI_LPCLGIR4, config->gen4_dec);
-}
-
static void pch_device_init(void)
{
device_t dev;
@@ -127,7 +91,5 @@ void pch_early_init(void)
pch_interrupt_init();
- pch_enable_lpc();
-
enable_smbus();
}
diff --git a/src/soc/intel/skylake/romstage/romstage.c b/src/soc/intel/skylake/romstage/romstage.c
index 9f46fd9..ac5d0e9 100644
--- a/src/soc/intel/skylake/romstage/romstage.c
+++ b/src/soc/intel/skylake/romstage/romstage.c
@@ -49,7 +49,7 @@ void soc_pre_ram_init(struct romstage_params *params)
soc_fill_pei_data(params->pei_data);
}
-void car_soc_post_console_init(void)
+void soc_early_pch_init(void)
{
report_platform_info();
set_max_freq();
More information about the coreboot-gerrit
mailing list