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>
This commit is contained in:
Xi Chen 2023-02-21 14:31:58 +08:00 committed by Yu-Ping Wu
parent acb58d7f88
commit a637873162
3 changed files with 11 additions and 0 deletions

View File

@ -30,6 +30,13 @@ config MEDIATEK_DRAM_BLOB_FAST_INIT
This option allows performing fast calibration through different This option allows performing fast calibration through different
open-source policy. 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 config MEMORY_TEST
bool bool
default y default y

View File

@ -31,6 +31,8 @@ enum DRAMC_PARAM_CONFIG {
DRAMC_CONFIG_EMCP = 0x0001, DRAMC_CONFIG_EMCP = 0x0001,
DRAMC_CONFIG_DVFS = 0x0002, DRAMC_CONFIG_DVFS = 0x0002,
DRAMC_CONFIG_FAST_K = 0x0004, DRAMC_CONFIG_FAST_K = 0x0004,
/* Security configs */
DRAMC_CONFIG_SCRAMBLE = 0x0100,
}; };
struct dramc_param_header { struct dramc_param_header {

View File

@ -244,6 +244,8 @@ static void mem_init_set_default_config(struct dramc_param *dparam,
if (CONFIG(MEDIATEK_DRAM_DVFS)) if (CONFIG(MEDIATEK_DRAM_DVFS))
dparam->dramc_datas.ddr_info.config_dvfs = DRAMC_ENABLE_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; dparam->dramc_datas.ddr_info.sdram.ddr_geometry = geometry;