summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorXi Chen <xixi.chen@mediatek.corp-partner.google.com>2023-02-21 14:31:58 +0800
committerYu-Ping Wu <yupingso@google.com>2023-03-02 09:24:11 +0000
commita637873162a94c7f8ff176e50e3953b2c160d199 (patch)
treef644cb0df0eff03b3e199d18661531130d3aecb3 /src
parentacb58d7f88230d7ae67e805f32090810b623c34c (diff)
soc/mediatek: Add config to control DRAM scramble
The DRAM scramble feature enhances DRAM data protection. When it's enabled, the written DRAM data will be scrambled and hence can prevent the data from being hacked. This feature would make debugging more difficult (for example ramoops would be lost after reset). Therefore, add a new config to allow enabling or disabling the feature from coreboot, without having to maintain two versions of the DRAM calibration blob. BUG=b:269049451 TEST=build pass and check scramble enable or disable successfully Signed-off-by: Xi Chen <xixi.chen@mediatek.corp-partner.google.com> Change-Id: Ib4279bc1cc960fae9c9f5da39f4448a5627288d4 Reviewed-on: https://review.coreboot.org/c/coreboot/+/73176 Tested-by: build bot (Jenkins) <no-reply@coreboot.org> Reviewed-by: Yidi Lin <yidilin@google.com> Reviewed-by: Yu-Ping Wu <yupingso@google.com>
Diffstat (limited to 'src')
-rw-r--r--src/soc/mediatek/common/Kconfig7
-rw-r--r--src/soc/mediatek/common/include/soc/dramc_param_common.h2
-rw-r--r--src/soc/mediatek/common/memory.c2
3 files changed, 11 insertions, 0 deletions
diff --git a/src/soc/mediatek/common/Kconfig b/src/soc/mediatek/common/Kconfig
index 2fdeda9abc..1ca0b9867c 100644
--- a/src/soc/mediatek/common/Kconfig
+++ b/src/soc/mediatek/common/Kconfig
@@ -30,6 +30,13 @@ config MEDIATEK_DRAM_BLOB_FAST_INIT
This option allows performing fast calibration through different
open-source policy.
+config MEDIATEK_DRAM_SCRAMBLE
+ bool
+ default y
+ help
+ This option enables DRAM data scramble, which can prevent DRAM data from
+ being hacked.
+
config MEMORY_TEST
bool
default y
diff --git a/src/soc/mediatek/common/include/soc/dramc_param_common.h b/src/soc/mediatek/common/include/soc/dramc_param_common.h
index 09b89cbe62..429f3c64a9 100644
--- a/src/soc/mediatek/common/include/soc/dramc_param_common.h
+++ b/src/soc/mediatek/common/include/soc/dramc_param_common.h
@@ -31,6 +31,8 @@ enum DRAMC_PARAM_CONFIG {
DRAMC_CONFIG_EMCP = 0x0001,
DRAMC_CONFIG_DVFS = 0x0002,
DRAMC_CONFIG_FAST_K = 0x0004,
+ /* Security configs */
+ DRAMC_CONFIG_SCRAMBLE = 0x0100,
};
struct dramc_param_header {
diff --git a/src/soc/mediatek/common/memory.c b/src/soc/mediatek/common/memory.c
index fc559e2c17..b6f7dde02b 100644
--- a/src/soc/mediatek/common/memory.c
+++ b/src/soc/mediatek/common/memory.c
@@ -244,6 +244,8 @@ static void mem_init_set_default_config(struct dramc_param *dparam,
if (CONFIG(MEDIATEK_DRAM_DVFS))
dparam->dramc_datas.ddr_info.config_dvfs = DRAMC_ENABLE_DVFS;
+ if (CONFIG(MEDIATEK_DRAM_SCRAMBLE))
+ dparam->header.config |= DRAMC_CONFIG_SCRAMBLE;
dparam->dramc_datas.ddr_info.sdram.ddr_geometry = geometry;