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
>
4
#include <
commonlib/console/post_codes.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
>
14
#include <
intelblocks/systemagent.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
{
35
pcr_or32
(
PID_ISCLK
,
CAMERA1_CLK
,
CAM_CLK_EN
|
MIPI_CLK
);
36
pcr_or32
(
PID_ISCLK
,
CAMERA2_CLK
,
CAM_CLK_EN
|
MIPI_CLK
);
37
}
38
39
static
void
pch_handle_sideband
(
config_t
*
config
)
40
{
41
if
(
config
->pch_isclk)
42
pch_enable_isclk
();
43
}
44
45
static
void
pch_finalize
(
void
)
46
{
47
uint32_t
reg32;
48
uint8_t
*pmcbase;
49
config_t
*
config
;
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
*/
60
pch_thermal_configuration
();
61
62
config
=
config_of_soc
();
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
72
pch_handle_sideband
(
config
);
73
74
pmc_clear_pmcon_sts
();
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))
81
cpu_lt_lock_memory
();
82
83
}
84
85
static
void
soc_finalize
(
void
*unused)
86
{
87
printk
(
BIOS_DEBUG
,
"Finalizing chipset.\n"
);
88
89
pch_finalize
();
90
apm_control
(
APM_CNT_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 */
96
post_code
(
POST_OS_BOOT
);
97
}
98
99
BOOT_STATE_INIT_ENTRY
(
BS_OS_RESUME
,
BS_ON_ENTRY
,
soc_finalize
,
NULL
);
100
BOOT_STATE_INIT_ENTRY
(
BS_PAYLOAD_LOAD
,
BS_ON_EXIT
,
soc_finalize
,
NULL
);
PID_ISCLK
#define PID_ISCLK
Definition:
pcr_ids.h:26
pmc_mmio_regs
uint8_t * pmc_mmio_regs(void)
Definition:
pmutil.c:142
write32
static void write32(void *addr, uint32_t val)
Definition:
mmio.h:40
read32
static uint32_t read32(const void *addr)
Definition:
mmio.h:22
bootstate.h
BS_PAYLOAD_LOAD
@ BS_PAYLOAD_LOAD
Definition:
bootstate.h:88
BS_OS_RESUME
@ BS_OS_RESUME
Definition:
bootstate.h:86
BS_ON_ENTRY
@ BS_ON_ENTRY
Definition:
bootstate.h:95
BS_ON_EXIT
@ BS_ON_EXIT
Definition:
bootstate.h:96
pcr.h
pcr_or32
void pcr_or32(uint8_t pid, uint16_t offset, uint32_t ordata)
Definition:
pcr.c:184
systemagent.h
printk
#define printk(level,...)
Definition:
stdlib.h:16
console.h
cpu_lt_lock_memory
void cpu_lt_lock_memory(void)
Definition:
cpulib.c:392
cpulib.h
cse.h
heci1_disable
void heci1_disable(void)
Definition:
disable_heci.c:84
CONFIG
@ CONFIG
Definition:
dsi_common.h:201
smm.h
APM_CNT_FINALIZE
#define APM_CNT_FINALIZE
Definition:
smm.h:24
config_of_soc
#define config_of_soc()
Definition:
device.h:394
mmio.h
CPPMVRIC2
#define CPPMVRIC2
Definition:
pmc.h:152
ADSPOSCDIS
#define ADSPOSCDIS
Definition:
pmc.h:153
BIOS_DEBUG
#define BIOS_DEBUG
BIOS_DEBUG - Verbose output.
Definition:
loglevel.h:128
lpc_lib.h
config
enum board_config config
Definition:
memory.c:448
pci.h
post_code
#define post_code(value)
Definition:
post_code.h:12
post_codes.h
POST_OS_BOOT
#define POST_OS_BOOT
Final code before OS boots.
Definition:
post_codes.h:414
apm_control
int apm_control(u8 cmd)
Definition:
smi_trigger.c:31
BOOT_STATE_INIT_ENTRY
BOOT_STATE_INIT_ENTRY(BS_OS_RESUME, BS_ON_ENTRY, soc_finalize, NULL)
CAMERA2_CLK
#define CAMERA2_CLK
Definition:
finalize.c:28
pch_handle_sideband
static void pch_handle_sideband(config_t *config)
Definition:
finalize.c:39
soc_finalize
static void soc_finalize(void *unused)
Definition:
finalize.c:85
CAM_CLK_EN
#define CAM_CLK_EN
Definition:
finalize.c:29
pch_finalize
static void pch_finalize(void)
Definition:
finalize.c:45
MIPI_CLK
#define MIPI_CLK
Definition:
finalize.c:30
CAMERA1_CLK
#define CAMERA1_CLK
Definition:
finalize.c:27
pch_enable_isclk
static void pch_enable_isclk(void)
Definition:
finalize.c:33
pmclib.h
pmc_clear_pmcon_sts
void pmc_clear_pmcon_sts(void)
tco.h
tco_lockdown
void tco_lockdown(void)
Definition:
tco.c:50
thermal.h
pch_thermal_configuration
void pch_thermal_configuration(void)
Definition:
thermal_pci.c:13
spi-generic.h
NULL
#define NULL
Definition:
stddef.h:19
uint32_t
unsigned int uint32_t
Definition:
stdint.h:14
uint8_t
unsigned char uint8_t
Definition:
stdint.h:8
ec_kontron_it8516e_config
Definition:
chip.h:8
chip.h
src
soc
intel
cannonlake
finalize.c
Generated by
1.9.1