mirror of
https://github.com/ARM-software/arm-trusted-firmware.git
synced 2025-05-09 02:51:21 +00:00
stm32mp1: update device tree files
The drivers are also updated to reflect the changes. Set RCC as non-secure. Change-Id: I568fa1f418355830ad1d4d1cdcdb910fb362231b Signed-off-by: Yann Gautier <yann.gautier@st.com>
This commit is contained in:
parent
23684d0e81
commit
c948f77136
13 changed files with 468 additions and 188 deletions
|
@ -707,7 +707,7 @@ void stm32mp1_ddr_init(struct ddr_info *priv,
|
|||
}
|
||||
|
||||
VERBOSE("name = %s\n", config->info.name);
|
||||
VERBOSE("speed = %d MHz\n", config->info.speed);
|
||||
VERBOSE("speed = %d kHz\n", config->info.speed);
|
||||
VERBOSE("size = 0x%x\n", config->info.size);
|
||||
|
||||
/* DDR INIT SEQUENCE */
|
||||
|
|
|
@ -1,5 +1,5 @@
|
|||
/*
|
||||
* Copyright (C) 2018, STMicroelectronics - All Rights Reserved
|
||||
* Copyright (C) 2018-2019, STMicroelectronics - All Rights Reserved
|
||||
*
|
||||
* SPDX-License-Identifier: GPL-2.0+ OR BSD-3-Clause
|
||||
*/
|
||||
|
@ -25,7 +25,7 @@
|
|||
|
||||
static struct ddr_info ddr_priv_data;
|
||||
|
||||
int stm32mp1_ddr_clk_enable(struct ddr_info *priv, uint16_t mem_speed)
|
||||
int stm32mp1_ddr_clk_enable(struct ddr_info *priv, uint32_t mem_speed)
|
||||
{
|
||||
unsigned long ddrphy_clk, ddr_clk, mem_speed_hz;
|
||||
|
||||
|
@ -33,10 +33,10 @@ int stm32mp1_ddr_clk_enable(struct ddr_info *priv, uint16_t mem_speed)
|
|||
|
||||
ddrphy_clk = stm32mp1_clk_get_rate(DDRPHYC);
|
||||
|
||||
VERBOSE("DDR: mem_speed (%d MHz), RCC %ld MHz\n",
|
||||
mem_speed, ddrphy_clk / 1000U / 1000U);
|
||||
VERBOSE("DDR: mem_speed (%d kHz), RCC %ld kHz\n",
|
||||
mem_speed, ddrphy_clk / 1000U);
|
||||
|
||||
mem_speed_hz = (uint32_t)mem_speed * 1000U * 1000U;
|
||||
mem_speed_hz = mem_speed * 1000U;
|
||||
|
||||
/* Max 10% frequency delta */
|
||||
if (ddrphy_clk > mem_speed_hz) {
|
||||
|
@ -44,9 +44,9 @@ int stm32mp1_ddr_clk_enable(struct ddr_info *priv, uint16_t mem_speed)
|
|||
} else {
|
||||
ddr_clk = mem_speed_hz - ddrphy_clk;
|
||||
}
|
||||
if (ddr_clk > mem_speed_hz) {
|
||||
ERROR("DDR expected freq %d MHz, current is %ld MHz\n",
|
||||
mem_speed, ddrphy_clk / 1000U / 1000U);
|
||||
if (ddr_clk > (mem_speed_hz / 10)) {
|
||||
ERROR("DDR expected freq %d kHz, current is %ld kHz\n",
|
||||
mem_speed, ddrphy_clk / 1000U);
|
||||
return -1;
|
||||
}
|
||||
return 0;
|
||||
|
@ -208,11 +208,16 @@ static int stm32mp1_ddr_setup(void)
|
|||
return -EINVAL;
|
||||
}
|
||||
|
||||
config.info.speed =
|
||||
(uint16_t)fdt_read_uint32_default(node, "st,mem-speed",
|
||||
STM32MP1_DDR_SPEED_DFLT);
|
||||
config.info.size = fdt_read_uint32_default(node, "st,mem-size",
|
||||
STM32MP1_DDR_SIZE_DFLT);
|
||||
config.info.speed = fdt_read_uint32_default(node, "st,mem-speed", 0);
|
||||
if (!config.info.speed) {
|
||||
VERBOSE("%s: no st,mem-speed\n", __func__);
|
||||
return -EINVAL;
|
||||
}
|
||||
config.info.size = fdt_read_uint32_default(node, "st,mem-size", 0);
|
||||
if (!config.info.size) {
|
||||
VERBOSE("%s: no st,mem-size\n", __func__);
|
||||
return -EINVAL;
|
||||
}
|
||||
config.info.name = fdt_getprop(fdt, node, "st,mem-name", &len);
|
||||
if (config.info.name == NULL) {
|
||||
VERBOSE("%s: no st,mem-name\n", __func__);
|
||||
|
@ -222,7 +227,7 @@ static int stm32mp1_ddr_setup(void)
|
|||
|
||||
for (idx = 0; idx < ARRAY_SIZE(param); idx++) {
|
||||
ret = fdt_read_uint32_array(node, param[idx].name,
|
||||
(void *)((uint32_t)&config +
|
||||
(void *)((uintptr_t)&config +
|
||||
param[idx].offset),
|
||||
param[idx].size);
|
||||
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue