blob: 2fa53c92b33f40ec0fb2dbd0eaa0743689569899 [file] [log] [blame]
Angel Pons3bd1e3d2020-04-05 15:47:17 +02001/* SPDX-License-Identifier: GPL-2.0-only */
Subrata Banikb51f54b2017-08-14 16:15:33 +05302
Kyösti Mälkki13f66502019-03-03 08:01:05 +02003#include <device/mmio.h>
Kyösti Mälkki32d47eb2019-09-28 00:00:30 +03004#include <intelblocks/cfg.h>
Ravi Sarawadi1483d1f2017-09-28 17:06:01 -07005#include <intelblocks/lpc_lib.h>
Michael Niewöhner43d25272019-09-17 18:48:00 +02006#include <intelblocks/pmclib.h>
Subrata Banik9cd99a12018-05-28 16:12:03 +05307#include <intelpch/lockdown.h>
Subrata Banik639bf8a2017-08-25 12:08:59 +05308#include <soc/pm.h>
Subrata Banikb51f54b2017-08-14 16:15:33 +05309
Subrata Banik9cd99a12018-05-28 16:12:03 +053010static void lpc_lockdown_config(int chipset_lockdown)
Subrata Banikb51f54b2017-08-14 16:15:33 +053011{
Elyes HAOUAS6dc9d032020-02-16 16:22:52 +010012 /* Set BIOS Interface Lock, BIOS Lock */
Subrata Banik9cd99a12018-05-28 16:12:03 +053013 if (chipset_lockdown == CHIPSET_LOCKDOWN_COREBOOT) {
Ravi Sarawadi1483d1f2017-09-28 17:06:01 -070014 lpc_set_bios_interface_lock_down();
15 lpc_set_lock_enable();
16 }
Subrata Banikb51f54b2017-08-14 16:15:33 +053017}
18
Subrata Banik639bf8a2017-08-25 12:08:59 +053019static void pmc_lockdown_config(void)
20{
21 uint8_t *pmcbase;
22 u32 pmsyncreg;
23
24 /* PMSYNC */
25 pmcbase = pmc_mmio_regs();
26 pmsyncreg = read32(pmcbase + PMSYNC_TPR_CFG);
27 pmsyncreg |= PMSYNC_LOCK;
28 write32(pmcbase + PMSYNC_TPR_CFG, pmsyncreg);
Michael Niewöhner43d25272019-09-17 18:48:00 +020029
30 /* Make sure payload/OS can't trigger global reset */
31 pmc_global_reset_disable_and_lock();
Subrata Banik639bf8a2017-08-25 12:08:59 +053032}
33
Subrata Banik9cd99a12018-05-28 16:12:03 +053034void soc_lockdown_config(int chipset_lockdown)
Subrata Banik97a09452017-08-16 18:38:54 +053035{
Subrata Banikb51f54b2017-08-14 16:15:33 +053036 /* LPC lock down configuration */
Subrata Banik9cd99a12018-05-28 16:12:03 +053037 lpc_lockdown_config(chipset_lockdown);
Subrata Banik97a09452017-08-16 18:38:54 +053038
Subrata Banik639bf8a2017-08-25 12:08:59 +053039 /* PMC lock down configuration */
40 pmc_lockdown_config();
Subrata Banikb51f54b2017-08-14 16:15:33 +053041}