From 8e07ab5f705b213af28831f7c3e9878154e07df0 Mon Sep 17 00:00:00 2001 From: Yann Gautier Date: Tue, 17 Nov 2020 15:27:58 +0100 Subject: [PATCH] feat(stm32mp1): update IO compensation on STM32MP13 On STM32MP13, two new SD1 and SD2 IO compensations cells are added, for SDMMC1 and SDMMC2. They have to be managed the same way as the main compensation cell. Change-Id: Ib7aa648d65fc98e1613bfb46b0e7dd568fd21002 Signed-off-by: Yann Gautier --- plat/st/stm32mp1/stm32mp1_syscfg.c | 23 +++++++++++++++++++++++ 1 file changed, 23 insertions(+) diff --git a/plat/st/stm32mp1/stm32mp1_syscfg.c b/plat/st/stm32mp1/stm32mp1_syscfg.c index 1aabe65ba..8edf3389e 100644 --- a/plat/st/stm32mp1/stm32mp1_syscfg.c +++ b/plat/st/stm32mp1/stm32mp1_syscfg.c @@ -27,6 +27,14 @@ #define SYSCFG_CMPCR 0x20U #define SYSCFG_CMPENSETR 0x24U #define SYSCFG_CMPENCLRR 0x28U +#if STM32MP13 +#define SYSCFG_CMPSD1CR 0x30U +#define SYSCFG_CMPSD1ENSETR 0x34U +#define SYSCFG_CMPSD1ENCLRR 0x38U +#define SYSCFG_CMPSD2CR 0x40U +#define SYSCFG_CMPSD2ENSETR 0x44U +#define SYSCFG_CMPSD2ENCLRR 0x48U +#endif #define SYSCFG_IDC 0x380U #define CMPCR_CMPENSETR_OFFSET 0x4U @@ -213,11 +221,22 @@ void stm32mp1_syscfg_enable_io_compensation_start(void) mmio_setbits_32(SYSCFG_BASE + CMPCR_CMPENSETR_OFFSET + SYSCFG_CMPCR, SYSCFG_CMPENSETR_MPU_EN); +#if STM32MP13 + mmio_setbits_32(SYSCFG_BASE + CMPCR_CMPENSETR_OFFSET + SYSCFG_CMPSD1CR, + SYSCFG_CMPENSETR_MPU_EN); + mmio_setbits_32(SYSCFG_BASE + CMPCR_CMPENSETR_OFFSET + SYSCFG_CMPSD2CR, + SYSCFG_CMPENSETR_MPU_EN); + +#endif } void stm32mp1_syscfg_enable_io_compensation_finish(void) { enable_io_comp_cell_finish(SYSCFG_CMPCR); +#if STM32MP13 + enable_io_comp_cell_finish(SYSCFG_CMPSD1CR); + enable_io_comp_cell_finish(SYSCFG_CMPSD2CR); +#endif } void stm32mp1_syscfg_disable_io_compensation(void) @@ -231,6 +250,10 @@ void stm32mp1_syscfg_disable_io_compensation(void) * Disable non-secure SYSCFG clock, we assume non-secure is suspended. */ disable_io_comp_cell(SYSCFG_CMPCR); +#if STM32MP13 + disable_io_comp_cell(SYSCFG_CMPSD1CR); + disable_io_comp_cell(SYSCFG_CMPSD2CR); +#endif clk_disable(SYSCFG); }