coreboot
coreboot is an Open Source project aimed at replacing the proprietary BIOS found in most computers.
finalize.c
Go to the documentation of this file.
1 /* SPDX-License-Identifier: GPL-2.0-only */
2 
3 #include <bootstate.h>
5 #include <console/console.h>
6 #include <cpu/x86/smm.h>
7 #include <device/mmio.h>
8 #include <device/pci.h>
9 #include <intelblocks/cpulib.h>
10 #include <intelblocks/cse.h>
11 #include <intelblocks/lpc_lib.h>
12 #include <intelblocks/pcr.h>
13 #include <intelblocks/pmclib.h>
15 #include <intelblocks/tco.h>
16 #include <intelblocks/thermal.h>
17 #include <soc/p2sb.h>
18 #include <soc/pci_devs.h>
19 #include <soc/pcr_ids.h>
20 #include <soc/pm.h>
21 #include <soc/smbus.h>
22 #include <soc/systemagent.h>
23 #include <spi-generic.h>
24 
25 #include "chip.h"
26 
27 #define CAMERA1_CLK 0x8000 /* Camera 1 Clock */
28 #define CAMERA2_CLK 0x8080 /* Camera 2 Clock */
29 #define CAM_CLK_EN (1 << 1)
30 #define MIPI_CLK (1 << 0)
31 #define HDPLL_CLK (0 << 0)
32 
33 static void pch_enable_isclk(void)
34 {
37 }
38 
40 {
41  if (config->pch_isclk)
43 }
44 
45 static void pch_finalize(void)
46 {
47  uint32_t reg32;
48  uint8_t *pmcbase;
50 
51  tco_lockdown();
52 
53  /*
54  * Set low maximum temp threshold value used for dynamic thermal sensor
55  * shutdown consideration.
56  *
57  * If Dynamic Thermal Shutdown is enabled then PMC logic shuts down the
58  * thermal sensor when CPU is in a C-state and DTS Temp <= LTT.
59  */
61 
63  pmcbase = pmc_mmio_regs();
64 
65  if (config->s0ix_enable && config->cppmvric2_adsposcdis) {
66  /* Enable Audio DSP OSC qualification for S0ix */
67  reg32 = read32(pmcbase + CPPMVRIC2);
68  reg32 &= ~ADSPOSCDIS;
69  write32(pmcbase + CPPMVRIC2, reg32);
70  }
71 
73 
75 
76  /*
77  * Lock chipset memory registers to protect SMM.
78  * When SkipMpInit=0, this is done by FSP.
79  */
80  if (!CONFIG(USE_INTEL_FSP_MP_INIT))
82 
83 }
84 
85 static void soc_finalize(void *unused)
86 {
87  printk(BIOS_DEBUG, "Finalizing chipset.\n");
88 
89  pch_finalize();
91  if (CONFIG(DISABLE_HECI1_AT_PRE_BOOT) &&
92  CONFIG(SOC_INTEL_COMMON_BLOCK_HECI1_DISABLE_USING_PMC_IPC))
93  heci1_disable();
94 
95  /* Indicate finalize step with post code */
97 }
98 
#define PID_ISCLK
Definition: pcr_ids.h:26
uint8_t * pmc_mmio_regs(void)
Definition: pmutil.c:142
static void write32(void *addr, uint32_t val)
Definition: mmio.h:40
static uint32_t read32(const void *addr)
Definition: mmio.h:22
@ BS_PAYLOAD_LOAD
Definition: bootstate.h:88
@ BS_OS_RESUME
Definition: bootstate.h:86
@ BS_ON_ENTRY
Definition: bootstate.h:95
@ BS_ON_EXIT
Definition: bootstate.h:96
void pcr_or32(uint8_t pid, uint16_t offset, uint32_t ordata)
Definition: pcr.c:184
#define printk(level,...)
Definition: stdlib.h:16
void cpu_lt_lock_memory(void)
Definition: cpulib.c:392
void heci1_disable(void)
Definition: disable_heci.c:84
@ CONFIG
Definition: dsi_common.h:201
#define APM_CNT_FINALIZE
Definition: smm.h:24
#define config_of_soc()
Definition: device.h:394
#define CPPMVRIC2
Definition: pmc.h:152
#define ADSPOSCDIS
Definition: pmc.h:153
#define BIOS_DEBUG
BIOS_DEBUG - Verbose output.
Definition: loglevel.h:128
enum board_config config
Definition: memory.c:448
#define post_code(value)
Definition: post_code.h:12
#define POST_OS_BOOT
Final code before OS boots.
Definition: post_codes.h:414
int apm_control(u8 cmd)
Definition: smi_trigger.c:31
BOOT_STATE_INIT_ENTRY(BS_OS_RESUME, BS_ON_ENTRY, soc_finalize, NULL)
#define CAMERA2_CLK
Definition: finalize.c:28
static void pch_handle_sideband(config_t *config)
Definition: finalize.c:39
static void soc_finalize(void *unused)
Definition: finalize.c:85
#define CAM_CLK_EN
Definition: finalize.c:29
static void pch_finalize(void)
Definition: finalize.c:45
#define MIPI_CLK
Definition: finalize.c:30
#define CAMERA1_CLK
Definition: finalize.c:27
static void pch_enable_isclk(void)
Definition: finalize.c:33
void pmc_clear_pmcon_sts(void)
void tco_lockdown(void)
Definition: tco.c:50
void pch_thermal_configuration(void)
Definition: thermal_pci.c:13
#define NULL
Definition: stddef.h:19
unsigned int uint32_t
Definition: stdint.h:14
unsigned char uint8_t
Definition: stdint.h:8