1e1767b3bSGatien Chevallier /* SPDX-License-Identifier: (GPL-2.0 OR BSD-2-Clause) */ 2e1767b3bSGatien Chevallier /* 3e1767b3bSGatien Chevallier * Copyright (C) 2020-2024, STMicroelectronics - All Rights Reserved 4e1767b3bSGatien Chevallier */ 5e1767b3bSGatien Chevallier 6e1767b3bSGatien Chevallier #ifndef _DT_BINDINGS_FIREWALL_STM32MP25_RIF_H 7e1767b3bSGatien Chevallier #define _DT_BINDINGS_FIREWALL_STM32MP25_RIF_H 8e1767b3bSGatien Chevallier 9e1767b3bSGatien Chevallier /* RIF CIDs */ 10e1767b3bSGatien Chevallier #define RIF_CID0 0x0 11e1767b3bSGatien Chevallier #define RIF_CID1 0x1 12e1767b3bSGatien Chevallier #define RIF_CID2 0x2 13e1767b3bSGatien Chevallier #define RIF_CID3 0x3 14e1767b3bSGatien Chevallier #define RIF_CID4 0x4 15e1767b3bSGatien Chevallier #define RIF_CID5 0x5 16e1767b3bSGatien Chevallier #define RIF_CID6 0x6 17e1767b3bSGatien Chevallier #define RIF_CID7 0x7 18e1767b3bSGatien Chevallier 19e1767b3bSGatien Chevallier /* RIF semaphore list */ 20e1767b3bSGatien Chevallier #define EMPTY_SEMWL 0x0 21e1767b3bSGatien Chevallier #ifdef __ASSEMBLER__ 22e1767b3bSGatien Chevallier #define RIF_CID0_BF (1 << RIF_CID0) 23e1767b3bSGatien Chevallier #define RIF_CID1_BF (1 << RIF_CID1) 24e1767b3bSGatien Chevallier #define RIF_CID2_BF (1 << RIF_CID2) 25e1767b3bSGatien Chevallier #define RIF_CID3_BF (1 << RIF_CID3) 26e1767b3bSGatien Chevallier #define RIF_CID4_BF (1 << RIF_CID4) 27e1767b3bSGatien Chevallier #define RIF_CID5_BF (1 << RIF_CID5) 28e1767b3bSGatien Chevallier #define RIF_CID6_BF (1 << RIF_CID6) 29e1767b3bSGatien Chevallier #define RIF_CID7_BF (1 << RIF_CID7) 30e1767b3bSGatien Chevallier #else /* __ASSEMBLER__ */ 31e1767b3bSGatien Chevallier #define RIF_CID0_BF BIT(RIF_CID0) 32e1767b3bSGatien Chevallier #define RIF_CID1_BF BIT(RIF_CID1) 33e1767b3bSGatien Chevallier #define RIF_CID2_BF BIT(RIF_CID2) 34e1767b3bSGatien Chevallier #define RIF_CID3_BF BIT(RIF_CID3) 35e1767b3bSGatien Chevallier #define RIF_CID4_BF BIT(RIF_CID4) 36e1767b3bSGatien Chevallier #define RIF_CID5_BF BIT(RIF_CID5) 37e1767b3bSGatien Chevallier #define RIF_CID6_BF BIT(RIF_CID6) 38e1767b3bSGatien Chevallier #define RIF_CID7_BF BIT(RIF_CID7) 39e1767b3bSGatien Chevallier #endif /* __ASSEMBLER__ */ 40e1767b3bSGatien Chevallier 41e1767b3bSGatien Chevallier /* RIF secure levels */ 42e1767b3bSGatien Chevallier #define RIF_NSEC 0x0 43e1767b3bSGatien Chevallier #define RIF_SEC 0x1 44e1767b3bSGatien Chevallier 45e1767b3bSGatien Chevallier /* RIF privilege levels */ 46e1767b3bSGatien Chevallier #define RIF_NPRIV 0x0 47e1767b3bSGatien Chevallier #define RIF_PRIV 0x1 48e1767b3bSGatien Chevallier 49e1767b3bSGatien Chevallier /* RIF semaphore modes */ 50e1767b3bSGatien Chevallier #define RIF_SEM_DIS 0x0 51e1767b3bSGatien Chevallier #define RIF_SEM_EN 0x1 52e1767b3bSGatien Chevallier 53e1767b3bSGatien Chevallier /* RIF CID filtering modes */ 54e1767b3bSGatien Chevallier #define RIF_CFDIS 0x0 55e1767b3bSGatien Chevallier #define RIF_CFEN 0x1 56e1767b3bSGatien Chevallier 57e1767b3bSGatien Chevallier /* RIF lock states */ 58e1767b3bSGatien Chevallier #define RIF_UNLOCK 0x0 59e1767b3bSGatien Chevallier #define RIF_LOCK 0x1 60e1767b3bSGatien Chevallier 61e1767b3bSGatien Chevallier /* Used when a field in a macro has no impact */ 62e1767b3bSGatien Chevallier #define RIF_UNUSED 0x0 63e1767b3bSGatien Chevallier 64e1767b3bSGatien Chevallier /* Most below macros aim to ease DTS files readability */ 65e1767b3bSGatien Chevallier #define RIF_EXTI1_RESOURCE(x) (x) 66e1767b3bSGatien Chevallier 67e1767b3bSGatien Chevallier #define RIF_EXTI2_RESOURCE(x) (x) 68e1767b3bSGatien Chevallier 69e1767b3bSGatien Chevallier #define RIF_FMC_CTRL(x) (x) 70e1767b3bSGatien Chevallier 71e1767b3bSGatien Chevallier #define RIF_IOPORT_PIN(x) (x) 72e1767b3bSGatien Chevallier 73e1767b3bSGatien Chevallier #define RIF_HPDMA_CHANNEL(x) (x) 74e1767b3bSGatien Chevallier 75e1767b3bSGatien Chevallier #define RIF_IPCC_CPU1_CHANNEL(x) ((x) - 1) 76e1767b3bSGatien Chevallier 77e1767b3bSGatien Chevallier #define RIF_IPCC_CPU2_CHANNEL(x) (((x) - 1) + 16) 78e1767b3bSGatien Chevallier 79e1767b3bSGatien Chevallier #define RIF_PWR_RESOURCE(x) (x) 80e1767b3bSGatien Chevallier 81e1767b3bSGatien Chevallier #define RIF_HSEM_RESOURCE(x) (x) 82e1767b3bSGatien Chevallier 83e1767b3bSGatien Chevallier /* Shareable PWR resources, RIF_PWR_RESOURCE_WIO(0) doesn't exist */ 84e1767b3bSGatien Chevallier #define RIF_PWR_RESOURCE_WIO(x) ((x) + 6) 85e1767b3bSGatien Chevallier 86e1767b3bSGatien Chevallier #define RIF_RCC_RESOURCE(x) (x) 87e1767b3bSGatien Chevallier 88e1767b3bSGatien Chevallier #define RIF_RTC_RESOURCE(x) (x) 89e1767b3bSGatien Chevallier 90e1767b3bSGatien Chevallier #define RIF_TAMP_RESOURCE(x) (x) 91e1767b3bSGatien Chevallier 92*471cec14SGatien Chevallier #define RIF_PER_ID_SHIFT 0 93*471cec14SGatien Chevallier #define RIF_CFEN_SHIFT 8 94*471cec14SGatien Chevallier #define RIF_SEM_EN_SHIFT 9 95*471cec14SGatien Chevallier #define RIF_SCID_SHIFT 12 96*471cec14SGatien Chevallier #define RIF_SEC_SHIFT 16 97*471cec14SGatien Chevallier #define RIF_PRIV_SHIFT 17 98*471cec14SGatien Chevallier #define RIF_LOCK_SHIFT 18 99*471cec14SGatien Chevallier #define RIF_SEML_SHIFT 24 100*471cec14SGatien Chevallier #define RIF_PERx_CID_SHIFT 8 101*471cec14SGatien Chevallier #ifndef __ASSEMBLER__ 102*471cec14SGatien Chevallier #define RIF_PER_ID_MASK GENMASK_32(7, 0) 103*471cec14SGatien Chevallier #define RIF_SCID_MASK GENMASK_32(15, 12) 104*471cec14SGatien Chevallier #define RIF_SEC_MASK BIT(16) 105*471cec14SGatien Chevallier #define RIF_PRIV_MASK BIT(17) 106*471cec14SGatien Chevallier #define RIF_LOCK_MASK BIT(18) 107*471cec14SGatien Chevallier #define RIF_SEML_MASK GENMASK_32(31, 24) 108*471cec14SGatien Chevallier #endif 109*471cec14SGatien Chevallier 110*471cec14SGatien Chevallier #define RIF_PERx_CID_MASK (BIT(RIF_CFEN_SHIFT) | \ 111*471cec14SGatien Chevallier BIT(RIF_SEM_EN_SHIFT) | \ 112*471cec14SGatien Chevallier RIF_SCID_MASK | RIF_SEML_MASK) 1137071b53bSGatien Chevallier 1147071b53bSGatien Chevallier #define RIFPROT(rifid, sem_list, lock, sec, priv, scid, sem_en, cfen) \ 115*471cec14SGatien Chevallier (((sem_list) << RIF_SEML_SHIFT) | \ 116*471cec14SGatien Chevallier ((lock) << RIF_LOCK_SHIFT) | \ 117*471cec14SGatien Chevallier ((priv) << RIF_PRIV_SHIFT) | \ 118*471cec14SGatien Chevallier ((sec) << RIF_SEC_SHIFT) | \ 119*471cec14SGatien Chevallier ((scid) << RIF_SCID_SHIFT) | \ 120*471cec14SGatien Chevallier ((sem_en) << RIF_SEM_EN_SHIFT) | \ 121*471cec14SGatien Chevallier ((cfen) << RIF_CFEN_SHIFT) | \ 122*471cec14SGatien Chevallier ((rifid) << RIF_PER_ID_SHIFT)) 1237071b53bSGatien Chevallier 124e1767b3bSGatien Chevallier #endif /* _DT_BINDINGS_FIREWALL_STM32MP25_RIF_H */ 125