]> git.baikalelectronics.ru Git - arm-tf.git/commitdiff
clk: stm32mp1: fix rcc mckprot status
authorEtienne Carriere <etienne.carriere@st.com>
Wed, 5 Feb 2020 09:03:27 +0000 (10:03 +0100)
committerYann Gautier <yann.gautier@st.com>
Thu, 24 Sep 2020 07:32:23 +0000 (09:32 +0200)
MCKPROT hardening in RCC mandates that both bits RCC[TZEN] and
RCC[MCKPROT] are enabled. This change fixes stm32mp1_rcc_is_mckprot()
to check both bits, not RCC[MCKPROT] only.

This change also updates stm32mp1_rcc_is_secure() for consistency.

Change-Id: If1f07babdcb5677906ddbf974d9dc17255d4e174
Signed-off-by: Etienne Carriere <etienne.carriere@st.com>
Signed-off-by: Yann Gautier <yann.gautier@st.com>
drivers/st/clk/stm32mp1_clk.c

index d6cd8b1ce4fbe591ae1fc873abc432e8999de127..f8bc5a217a6a91116942b72172762599171c68ee 100644 (file)
@@ -653,15 +653,17 @@ static void stm32mp1_clk_unlock(struct spinlock *lock)
 bool stm32mp1_rcc_is_secure(void)
 {
        uintptr_t rcc_base = stm32mp_rcc_base();
+       uint32_t mask = RCC_TZCR_TZEN;
 
-       return (mmio_read_32(rcc_base + RCC_TZCR) & RCC_TZCR_TZEN) != 0;
+       return (mmio_read_32(rcc_base + RCC_TZCR) & mask) == mask;
 }
 
 bool stm32mp1_rcc_is_mckprot(void)
 {
        uintptr_t rcc_base = stm32mp_rcc_base();
+       uint32_t mask = RCC_TZCR_TZEN | RCC_TZCR_MCKPROT;
 
-       return (mmio_read_32(rcc_base + RCC_TZCR) & RCC_TZCR_MCKPROT) != 0;
+       return (mmio_read_32(rcc_base + RCC_TZCR) & mask) == mask;
 }
 
 void stm32mp1_clk_rcc_regs_lock(void)