diff options
author | Xi Chen <xixi.chen@mediatek.corp-partner.google.com> | 2023-02-21 14:31:58 +0800 |
---|---|---|
committer | Yu-Ping Wu <yupingso@google.com> | 2023-03-02 09:24:11 +0000 |
commit | a637873162a94c7f8ff176e50e3953b2c160d199 (patch) | |
tree | f644cb0df0eff03b3e199d18661531130d3aecb3 /src/soc/mediatek | |
parent | acb58d7f88230d7ae67e805f32090810b623c34c (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/soc/mediatek')
-rw-r--r-- | src/soc/mediatek/common/Kconfig | 7 | ||||
-rw-r--r-- | src/soc/mediatek/common/include/soc/dramc_param_common.h | 2 | ||||
-rw-r--r-- | src/soc/mediatek/common/memory.c | 2 |
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; |