From: Gatien Chevallier <[email protected]>

If the CID filtering is enabled, the semaphore mode is disabled as well.
To avoid an incorrect behavior and error trace, add a check of CID
filtering state before acquiring the semaphore.

Signed-off-by: Gatien Chevallier <[email protected]>
Signed-off-by: Patrice Chotard <[email protected]>
---
 arch/arm/mach-stm32mp/stm32mp2/rifsc.c | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/arch/arm/mach-stm32mp/stm32mp2/rifsc.c 
b/arch/arm/mach-stm32mp/stm32mp2/rifsc.c
index cf8026088f3..01ffc9f2798 100644
--- a/arch/arm/mach-stm32mp/stm32mp2/rifsc.c
+++ b/arch/arm/mach-stm32mp/stm32mp2/rifsc.c
@@ -208,7 +208,7 @@ int stm32_rifsc_grant_access_by_id(ofnode device_node, u32 
id)
         * If the peripheral is in semaphore mode, take the semaphore so that
         * the CID1 has the ownership.
         */
-       if (cid_reg_value & CIDCFGR_SEMEN &&
+       if (cid_reg_value & CIDCFGR_CFEN && cid_reg_value & CIDCFGR_SEMEN &&
            (FIELD_GET(RIFSC_RISC_SEMWL_MASK, cid_reg_value) & BIT(RIF_CID1))) {
                err = stm32_rifsc_acquire_semaphore(rifsc_base, id);
                if (err) {

-- 
2.43.0

Reply via email to