Skip to content
Snippets Groups Projects
Commit 874bf6b1 authored by Yann Gautier's avatar Yann Gautier Committed by Sebastien Pasdeloup
Browse files

stm32mp1: split IO compensation activation


To mask the time consumed waiting for CMPCR_READY bit, the function to
enable IO compensation is split in 2, a start and a finish function.
This is used at boot, and in return from STOP mode.

Change-Id: Ic2b67c0e68415eb1abd3c7ba916b0fae21737235
Signed-off-by: default avatarYann Gautier <yann.gautier@st.com>
Reviewed-on: https://gerrit.st.com/c/mpu/oe/st/tf-a/+/188608


Reviewed-by: default avatarCITOOLS <MDG-smet-aci-reviews@list.st.com>
Reviewed-by: default avatarCIBUILD <MDG-smet-aci-builds@list.st.com>
parent 7d013bf0
No related branches found
No related tags found
No related merge requests found
......@@ -503,6 +503,8 @@ skip_console_init:
update_monotonic_counter();
stm32mp1_syscfg_enable_io_compensation_finish();
if (dt_pmic_status() > 0) {
initialize_pmic();
print_pmic_info_and_debug();
......
......@@ -36,7 +36,8 @@ bool stm32_boot_is_serial(void);
enum etzpc_decprot_attributes stm32mp_etzpc_binding2decprot(uint32_t mode);
void stm32mp1_syscfg_init(void);
void stm32mp1_syscfg_enable_io_compensation(void);
void stm32mp1_syscfg_enable_io_compensation_start(void);
void stm32mp1_syscfg_enable_io_compensation_finish(void);
void stm32mp1_syscfg_disable_io_compensation(void);
#if STM32MP_USE_STM32IMAGE
......
......@@ -261,6 +261,7 @@ void stm32_exit_cstop(void)
enter_cstop_done = false;
stm32mp1_syscfg_enable_io_compensation_start();
plat_ic_set_priority_mask(gicc_pmr);
......@@ -284,11 +285,11 @@ void stm32_exit_cstop(void)
&sleep_time);
stm32mp_stgen_restore_counter(stgen_cnt, stdby_time_in_ms);
stm32mp1_syscfg_enable_io_compensation();
if (stm32mp1_clock_stopmode_resume() != 0) {
panic();
}
stm32mp1_syscfg_enable_io_compensation_finish();
}
static int get_locked(volatile int *state)
......
......@@ -129,13 +129,11 @@ void stm32mp1_syscfg_init(void)
}
}
stm32mp1_syscfg_enable_io_compensation();
stm32mp1_syscfg_enable_io_compensation_start();
}
void stm32mp1_syscfg_enable_io_compensation(void)
void stm32mp1_syscfg_enable_io_compensation_start(void)
{
uint64_t start;
/*
* Activate automatic I/O compensation.
* Warning: need to ensure CSI enabled and ready in clock driver.
......@@ -145,6 +143,11 @@ void stm32mp1_syscfg_enable_io_compensation(void)
mmio_setbits_32(SYSCFG_BASE + SYSCFG_CMPENSETR,
SYSCFG_CMPENSETR_MPU_EN);
}
void stm32mp1_syscfg_enable_io_compensation_finish(void)
{
uint64_t start;
start = timeout_init_us(SYSCFG_CMPCR_READY_TIMEOUT_US);
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment