blob: a3d17b46c33153ac9f4299cbd247006d1350c9a4 [file] [log] [blame]
Marc Jones81ef9c22021-01-21 10:53:47 -07001/* SPDX-License-Identifier: GPL-2.0-only */
2
Shuo Liu78439112024-04-25 05:41:16 +08003#include <intelblocks/cfg.h>
Jonathan Zhangfb2ebbc2022-10-26 16:19:40 -07004#include <intelblocks/lpc_lib.h>
Marc Jones81ef9c22021-01-21 10:53:47 -07005#include <intelpch/lockdown.h>
Jonathan Zhang432779762023-01-23 10:55:09 -08006#include <soc/lockdown.h>
Marc Jones81ef9c22021-01-21 10:53:47 -07007#include <soc/pm.h>
8
Jonathan Zhangfb2ebbc2022-10-26 16:19:40 -07009static void lpc_lockdown_config(void)
10{
11 /* Set BIOS Interface Lock, BIOS Lock */
12 lpc_set_bios_interface_lock_down();
13
14 /* Only allow writes in SMM */
15 if (CONFIG(BOOTMEDIA_SMM_BWP)) {
16 lpc_set_eiss();
17 lpc_enable_wp();
18 }
19 lpc_set_lock_enable();
20}
21
Marc Jones81ef9c22021-01-21 10:53:47 -070022void soc_lockdown_config(int chipset_lockdown)
23{
Shuo Liu78439112024-04-25 05:41:16 +080024 if (chipset_lockdown == CHIPSET_LOCKDOWN_FSP)
25 return;
26
Jonathan Zhangfb2ebbc2022-10-26 16:19:40 -070027 lpc_lockdown_config();
Jonathan Zhang432779762023-01-23 10:55:09 -080028 pmc_lockdown_config();
Marc Jones4681b272021-04-06 14:29:37 -060029 sata_lockdown_config(chipset_lockdown);
Jonathan Zhang432779762023-01-23 10:55:09 -080030 spi_lockdown_config(chipset_lockdown);
Marc Jones81ef9c22021-01-21 10:53:47 -070031}