123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211 |
- /*
- * Copyright (c) 2020, ARM Limited and Contributors. All rights reserved.
- *
- * SPDX-License-Identifier: BSD-3-Clause
- */
- #ifndef DEVAPC_H
- #define DEVAPC_H
- #include <stdint.h>
- #include <platform_def.h>
- /******************************************************************************
- * FUNCTION DEFINITION
- ******************************************************************************/
- void devapc_init(void);
- /******************************************************************************
- * STRUCTURE DEFINITION
- ******************************************************************************/
- enum DEVAPC_PERM_TYPE {
- NO_PROTECTION = 0,
- SEC_RW_ONLY,
- SEC_RW_NS_R,
- FORBIDDEN,
- PERM_NUM,
- };
- enum DOMAIN_ID {
- DOMAIN_0 = 0,
- DOMAIN_1,
- DOMAIN_2,
- DOMAIN_3,
- DOMAIN_4,
- DOMAIN_5,
- DOMAIN_6,
- DOMAIN_7,
- DOMAIN_8,
- DOMAIN_9,
- DOMAIN_10,
- DOMAIN_11,
- DOMAIN_12,
- DOMAIN_13,
- DOMAIN_14,
- DOMAIN_15,
- };
- /* Slave Type */
- enum DEVAPC_SLAVE_TYPE_SIMPLE {
- SLAVE_TYPE_INFRA = 0,
- SLAVE_TYPE_PERI,
- SLAVE_TYPE_PERI2,
- SLAVE_TYPE_PERI_PAR,
- };
- enum DEVAPC_SYS_INDEX {
- DEVAPC_SYS0 = 0,
- DEVAPC_SYS1,
- DEVAPC_SYS2,
- };
- enum DEVAPC_SLAVE_TYPE {
- SLAVE_TYPE_INFRA_AO_SYS0 = 0,
- SLAVE_TYPE_INFRA_AO_SYS1,
- SLAVE_TYPE_INFRA_AO_SYS2,
- SLAVE_TYPE_PERI_AO_SYS0,
- SLAVE_TYPE_PERI_AO_SYS1,
- SLAVE_TYPE_PERI_AO_SYS2,
- SLAVE_TYPE_PERI_AO2_SYS0,
- SLAVE_TYPE_PERI_PAR_AO_SYS0,
- };
- /* Slave Num */
- enum DEVAPC_SLAVE_NUM {
- SLAVE_NUM_INFRA_AO_SYS0 = 23,
- SLAVE_NUM_INFRA_AO_SYS1 = 256,
- SLAVE_NUM_INFRA_AO_SYS2 = 70,
- SLAVE_NUM_PERI_AO_SYS0 = 105,
- SLAVE_NUM_PERI_AO_SYS1 = 66,
- SLAVE_NUM_PERI_AO_SYS2 = 1,
- SLAVE_NUM_PERI_AO2_SYS0 = 115,
- SLAVE_NUM_PERI_PAR_AO_SYS0 = 27,
- };
- enum DEVAPC_SYS_DOM_NUM {
- DOM_NUM_INFRA_AO_SYS0 = 16,
- DOM_NUM_INFRA_AO_SYS1 = 4,
- DOM_NUM_INFRA_AO_SYS2 = 4,
- DOM_NUM_PERI_AO_SYS0 = 16,
- DOM_NUM_PERI_AO_SYS1 = 8,
- DOM_NUM_PERI_AO_SYS2 = 4,
- DOM_NUM_PERI_AO2_SYS0 = 16,
- DOM_NUM_PERI_PAR_AO_SYS0 = 16,
- };
- enum DEVAPC_CFG_INDEX {
- DEVAPC_DEBUGSYS_INDEX = 57,
- };
- struct APC_INFRA_PERI_DOM_16 {
- unsigned char d0_permission;
- unsigned char d1_permission;
- unsigned char d2_permission;
- unsigned char d3_permission;
- unsigned char d4_permission;
- unsigned char d5_permission;
- unsigned char d6_permission;
- unsigned char d7_permission;
- unsigned char d8_permission;
- unsigned char d9_permission;
- unsigned char d10_permission;
- unsigned char d11_permission;
- unsigned char d12_permission;
- unsigned char d13_permission;
- unsigned char d14_permission;
- unsigned char d15_permission;
- };
- struct APC_INFRA_PERI_DOM_8 {
- unsigned char d0_permission;
- unsigned char d1_permission;
- unsigned char d2_permission;
- unsigned char d3_permission;
- unsigned char d4_permission;
- unsigned char d5_permission;
- unsigned char d6_permission;
- unsigned char d7_permission;
- };
- struct APC_INFRA_PERI_DOM_4 {
- unsigned char d0_permission;
- unsigned char d1_permission;
- unsigned char d2_permission;
- unsigned char d3_permission;
- };
- #define DAPC_INFRA_AO_SYS0_ATTR(DEV_NAME, PERM_ATTR0, PERM_ATTR1, \
- PERM_ATTR2, PERM_ATTR3, PERM_ATTR4, PERM_ATTR5, \
- PERM_ATTR6, PERM_ATTR7, PERM_ATTR8, PERM_ATTR9, \
- PERM_ATTR10, PERM_ATTR11, PERM_ATTR12, PERM_ATTR13, \
- PERM_ATTR14, PERM_ATTR15) \
- {(unsigned char)PERM_ATTR0, (unsigned char)PERM_ATTR1, \
- (unsigned char)PERM_ATTR2, (unsigned char)PERM_ATTR3, \
- (unsigned char)PERM_ATTR4, (unsigned char)PERM_ATTR5, \
- (unsigned char)PERM_ATTR6, (unsigned char)PERM_ATTR7, \
- (unsigned char)PERM_ATTR8, (unsigned char)PERM_ATTR9, \
- (unsigned char)PERM_ATTR10, (unsigned char)PERM_ATTR11, \
- (unsigned char)PERM_ATTR12, (unsigned char)PERM_ATTR13, \
- (unsigned char)PERM_ATTR14, (unsigned char)PERM_ATTR15}
- #define DAPC_INFRA_AO_SYS1_ATTR(DEV_NAME, PERM_ATTR0, PERM_ATTR1, \
- PERM_ATTR2, PERM_ATTR3) \
- {(unsigned char)PERM_ATTR0, (unsigned char)PERM_ATTR1, \
- (unsigned char)PERM_ATTR2, (unsigned char)PERM_ATTR3}
- #define DAPC_PERI_AO_SYS1_ATTR(DEV_NAME, PERM_ATTR0, PERM_ATTR1, \
- PERM_ATTR2, PERM_ATTR3, PERM_ATTR4, PERM_ATTR5, \
- PERM_ATTR6, PERM_ATTR7) \
- {(unsigned char)PERM_ATTR0, (unsigned char)PERM_ATTR1, \
- (unsigned char)PERM_ATTR2, (unsigned char)PERM_ATTR3, \
- (unsigned char)PERM_ATTR4, (unsigned char)PERM_ATTR5, \
- (unsigned char)PERM_ATTR6, (unsigned char)PERM_ATTR7}
- #define DAPC_INFRA_AO_SYS2_ATTR(...) DAPC_INFRA_AO_SYS1_ATTR(__VA_ARGS__)
- #define DAPC_PERI_AO_SYS0_ATTR(...) DAPC_INFRA_AO_SYS0_ATTR(__VA_ARGS__)
- #define DAPC_PERI_AO_SYS2_ATTR(...) DAPC_INFRA_AO_SYS1_ATTR(__VA_ARGS__)
- #define DAPC_PERI_AO2_SYS0_ATTR(...) DAPC_INFRA_AO_SYS0_ATTR(__VA_ARGS__)
- #define DAPC_PERI_PAR_AO_SYS0_ATTR(...) DAPC_INFRA_AO_SYS0_ATTR(__VA_ARGS__)
- /******************************************************************************
- * UTILITY DEFINITION
- ******************************************************************************/
- #define devapc_writel(VAL, REG) mmio_write_32((uintptr_t)REG, VAL)
- #define devapc_readl(REG) mmio_read_32((uintptr_t)REG)
- /******************************************************************************/
- /* Device APC AO for INFRA AO */
- #define DEVAPC_INFRA_AO_SYS0_D0_APC_0 (DEVAPC_INFRA_AO_BASE + 0x0000)
- #define DEVAPC_INFRA_AO_SYS1_D0_APC_0 (DEVAPC_INFRA_AO_BASE + 0x1000)
- #define DEVAPC_INFRA_AO_SYS2_D0_APC_0 (DEVAPC_INFRA_AO_BASE + 0x2000)
- #define DEVAPC_INFRA_AO_MAS_SEC_0 (DEVAPC_INFRA_AO_BASE + 0x0A00)
- /******************************************************************************/
- /* Device APC AO for PERI AO */
- #define DEVAPC_PERI_AO_SYS0_D0_APC_0 (DEVAPC_PERI_AO_BASE + 0x0000)
- #define DEVAPC_PERI_AO_SYS1_D0_APC_0 (DEVAPC_PERI_AO_BASE + 0x1000)
- #define DEVAPC_PERI_AO_SYS2_D0_APC_0 (DEVAPC_PERI_AO_BASE + 0x2000)
- #define DEVAPC_PERI_AO_MAS_SEC_0 (DEVAPC_PERI_AO_BASE + 0x0A00)
- /******************************************************************************/
- /* Device APC AO for PERI AO2 */
- #define DEVAPC_PERI_AO2_SYS0_D0_APC_0 (DEVAPC_PERI_AO2_BASE + 0x0000)
- /******************************************************************************/
- /* Device APC AO for PERI PAR AO */
- #define DEVAPC_PERI_PAR_AO_SYS0_D0_APC_0 (DEVAPC_PERI_PAR_AO_BASE + 0x0000)
- #define DEVAPC_PERI_PAR_AO_MAS_SEC_0 (DEVAPC_PERI_PAR_AO_BASE + 0x0A00)
- /******************************************************************************/
- /******************************************************************************
- * Variable DEFINITION
- ******************************************************************************/
- #define MOD_NO_IN_1_DEVAPC 16
- #endif /* DEVAPC_H */
|