blob: 1dd4e564d094c530c2d996d3f080f5e49419c358 [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>
Michael Niewöhner43d25272019-09-17 18:48:00 +02005#include <intelblocks/pmclib.h>
Subrata Banik9cd99a12018-05-28 16:12:03 +05306#include <intelpch/lockdown.h>
Subrata Banik639bf8a2017-08-25 12:08:59 +05307#include <soc/pm.h>
Subrata Banikb51f54b2017-08-14 16:15:33 +05308
Subrata Banik639bf8a2017-08-25 12:08:59 +05309static void pmc_lockdown_config(void)
10{
11 uint8_t *pmcbase;
12 u32 pmsyncreg;
13
14 /* PMSYNC */
15 pmcbase = pmc_mmio_regs();
16 pmsyncreg = read32(pmcbase + PMSYNC_TPR_CFG);
17 pmsyncreg |= PMSYNC_LOCK;
18 write32(pmcbase + PMSYNC_TPR_CFG, pmsyncreg);
Michael Niewöhner43d25272019-09-17 18:48:00 +020019
20 /* Make sure payload/OS can't trigger global reset */
21 pmc_global_reset_disable_and_lock();
Subrata Banik639bf8a2017-08-25 12:08:59 +053022}
23
Subrata Banik9cd99a12018-05-28 16:12:03 +053024void soc_lockdown_config(int chipset_lockdown)
Subrata Banik97a09452017-08-16 18:38:54 +053025{
Subrata Banik639bf8a2017-08-25 12:08:59 +053026 /* PMC lock down configuration */
27 pmc_lockdown_config();
Subrata Banikb51f54b2017-08-14 16:15:33 +053028}