coreboot
coreboot is an Open Source project aimed at replacing the proprietary BIOS found in most computers.
devapc.h
Go to the documentation of this file.
1 /* SPDX-License-Identifier: GPL-2.0-only */
2 
3 #ifndef SOC_MEDIATEK_MT8195_DEVAPC_H
4 #define SOC_MEDIATEK_MT8195_DEVAPC_H
5 
6 #include <device/mmio.h>
7 #include <soc/addressmap.h>
8 
9 void dapc_init(void);
10 
13  SYS1_D0_APC_0 = 0x1000,
14  SYS2_D0_APC_0 = 0x2000,
15  DOM_REMAP_0_0 = 0x800,
16  DOM_REMAP_1_0 = 0x810,
17  DOM_REMAP_1_1 = 0x814,
18  DOM_REMAP_2_0 = 0x820,
19  MAS_DOM_0 = 0x0900,
20  MAS_DOM_4 = 0x0910,
21  MAS_SEC_0 = 0x0A00,
22  AO_APC_CON = 0x0F00,
23 };
24 
25 enum scp_offset {
26  SCP_DOM = 0xA5080,
27  ADSP_DOM = 0xA5088,
28  ONETIME_LOCK = 0xA5104,
29 };
30 
31 /******************************************************************************
32  * STRUCTURE DEFINITION
33  ******************************************************************************/
34 /* Common */
35 enum trans_type {
38 };
39 
46 };
47 
48 enum domain_id {
49  DOMAIN_0 = 0,
65 };
66 
67 struct apc_infra_peri_dom_16 {
68  unsigned char d_permission[16];
69 };
70 
71 struct apc_infra_peri_dom_8 {
72  unsigned char d_permission[8];
73 };
74 
75 struct apc_infra_peri_dom_4 {
76  unsigned char d_permission[4];
77 };
78 
87 };
88 
91 };
92 
93 /* PERM_ATTR MACRO */
94 #define DAPC_INFRA_AO_SYS0_ATTR(...) { { DAPC_PERM_ATTR_16(__VA_ARGS__) } }
95 #define DAPC_INFRA_AO_SYS1_ATTR(...) { { DAPC_PERM_ATTR_4(__VA_ARGS__) } }
96 #define DAPC_INFRA_AO_SYS2_ATTR(...) { { DAPC_PERM_ATTR_4(__VA_ARGS__) } }
97 #define DAPC_PERI_AO_SYS0_ATTR(...) { { DAPC_PERM_ATTR_16(__VA_ARGS__) } }
98 #define DAPC_PERI_AO_SYS1_ATTR(...) { { DAPC_PERM_ATTR_8(__VA_ARGS__) } }
99 #define DAPC_PERI2_AO_SYS0_ATTR(...) { { DAPC_PERM_ATTR_16(__VA_ARGS__) } }
100 #define DAPC_PERI_PAR_AO_SYS0_ATTR(...) { { DAPC_PERM_ATTR_16(__VA_ARGS__) } }
101 
102 /******************************************************************************
103  * Variable DEFINITION
104  ******************************************************************************/
105 #define MOD_NO_IN_1_DEVAPC 16
106 
107 /******************************************************************************
108  * Bit Field DEFINITION
109  ******************************************************************************/
110 /* INFRA */
111 DEFINE_BIT(CPU_EB_SEC, 1)
112 
113 DEFINE_BITFIELD(CPU_EB_DOM, 11, 8) /* 1 */
114 DEFINE_BITFIELD(SCP_SSPM_DOM, 19, 16) /* 2 */
115 
116 /* PERI */
117 DEFINE_BITFIELD(SPM_DOM, 11, 8) /* 1 */
118 
119 /* PERI_PAR */
120 DEFINE_BIT(SSUSB_SEC, 21)
121 DEFINE_BIT(SSUSB2_SEC, 0)
122 DEFINE_BIT(SSUSB_P1_0_SEC, 1)
123 DEFINE_BIT(SSUSB_P1_1_SEC, 2)
124 DEFINE_BIT(SSUSB_P2_SEC, 3)
125 DEFINE_BIT(SSUSB_P3_SEC, 4)
126 
127 DEFINE_BITFIELD(PCIE0_DOM, 11, 8) /* 17 */
128 DEFINE_BITFIELD(PCIE1_DOM, 19, 16) /* 18 */
129 
130 /* Domain Remap */
131 DEFINE_BITFIELD(FOUR_BIT_DOM_REMAP_0, 3, 0)
132 DEFINE_BITFIELD(FOUR_BIT_DOM_REMAP_1, 7, 4)
133 DEFINE_BITFIELD(FOUR_BIT_DOM_REMAP_2, 11, 8)
134 DEFINE_BITFIELD(FOUR_BIT_DOM_REMAP_3, 15, 12)
135 DEFINE_BITFIELD(FOUR_BIT_DOM_REMAP_4, 19, 16)
136 DEFINE_BITFIELD(FOUR_BIT_DOM_REMAP_5, 23, 20)
137 DEFINE_BITFIELD(FOUR_BIT_DOM_REMAP_6, 27, 24)
138 DEFINE_BITFIELD(FOUR_BIT_DOM_REMAP_7, 31, 28)
139 
140 DEFINE_BITFIELD(THREE_BIT_DOM_REMAP_0, 2, 0)
141 DEFINE_BITFIELD(THREE_BIT_DOM_REMAP_1, 5, 3)
142 DEFINE_BITFIELD(THREE_BIT_DOM_REMAP_2, 8, 6)
143 DEFINE_BITFIELD(THREE_BIT_DOM_REMAP_3, 11, 9)
144 DEFINE_BITFIELD(THREE_BIT_DOM_REMAP_4, 14, 12)
145 DEFINE_BITFIELD(THREE_BIT_DOM_REMAP_5, 17, 15)
146 
147 DEFINE_BITFIELD(TWO_BIT_DOM_REMAP_0, 1, 0)
148 DEFINE_BITFIELD(TWO_BIT_DOM_REMAP_1, 3, 2)
149 DEFINE_BITFIELD(TWO_BIT_DOM_REMAP_2, 5, 4)
150 DEFINE_BITFIELD(TWO_BIT_DOM_REMAP_3, 7, 6)
151 DEFINE_BITFIELD(TWO_BIT_DOM_REMAP_4, 9, 8)
152 DEFINE_BITFIELD(TWO_BIT_DOM_REMAP_5, 11, 10)
153 
154 #endif /* SOC_MEDIATEK_MT8195_DEVAPC_H */
#define DEFINE_BIT(name, bit)
Definition: mmio.h:131
devapc_cfg_index
Definition: devapc.h:75
@ DEVAPC_DEBUGSYS_INDEX
Definition: devapc.h:76
trans_type
Definition: devapc.h:26
@ NON_SECURE_TRANS
Definition: devapc.h:27
@ SECURE_TRANS
Definition: devapc.h:28
devapc_perm_type
Definition: devapc.h:31
@ SEC_RW_NS_R
Definition: devapc.h:34
@ SEC_RW_ONLY
Definition: devapc.h:33
@ FORBIDDEN
Definition: devapc.h:35
@ NO_PROTECTION
Definition: devapc.h:32
@ PERM_NUM
Definition: devapc.h:36
devapc_sys_dom_num
Definition: devapc.h:70
@ DOM_NUM_INFRA_AO_SYS0
Definition: devapc.h:71
void dapc_init(void)
Definition: devapc.c:1306
devapc_ao_offset
Definition: devapc.h:13
@ SYS0_D0_APC_0
Definition: devapc.h:14
@ DOM_REMAP_1_0
Definition: devapc.h:16
@ AO_APC_CON
Definition: devapc.h:19
@ MAS_DOM_0
Definition: devapc.h:17
@ DOM_REMAP_0_0
Definition: devapc.h:15
@ MAS_SEC_0
Definition: devapc.h:18
domain_id
Definition: devapc.h:39
@ DOMAIN_0
Definition: devapc.h:40
@ DOMAIN_3
Definition: devapc.h:43
@ DOMAIN_1
Definition: devapc.h:41
@ DOMAIN_5
Definition: devapc.h:45
@ DOMAIN_7
Definition: devapc.h:47
@ DOMAIN_15
Definition: devapc.h:55
@ DOMAIN_2
Definition: devapc.h:42
@ DOMAIN_6
Definition: devapc.h:46
@ DOMAIN_14
Definition: devapc.h:54
@ DOMAIN_11
Definition: devapc.h:51
@ DOMAIN_12
Definition: devapc.h:52
@ DOMAIN_9
Definition: devapc.h:49
@ DOMAIN_8
Definition: devapc.h:48
@ DOMAIN_10
Definition: devapc.h:50
@ DOMAIN_13
Definition: devapc.h:53
@ DOMAIN_4
Definition: devapc.h:44
scp_offset
Definition: devapc.h:24
@ ADSP_DOM
Definition: devapc.h:26
@ SCP_DOM
Definition: devapc.h:25
@ ONETIME_LOCK
Definition: devapc.h:27
@ DOM_REMAP_1_1
Definition: devapc.h:16
@ DOM_REMAP_2_0
Definition: devapc.h:17
DEFINE_BITFIELD(PCIE_DOM, 19, 16) DEFINE_BITFIELD(SCP_SSPM_DOM
@ DOM_NUM_PERI2_AO_SYS0
Definition: devapc.h:85
@ DOM_NUM_INFRA_AO_SYS1
Definition: devapc.h:81
@ DOM_NUM_INFRA_AO_SYS2
Definition: devapc.h:82
@ DOM_NUM_PERI_AO_SYS1
Definition: devapc.h:84
@ DOM_NUM_PERI_AO_SYS0
Definition: devapc.h:83
@ DOM_NUM_PERI_PAR_AO_SYS0
Definition: devapc.h:86
@ SYS1_D0_APC_0
Definition: devapc.h:13
@ MAS_DOM_4
Definition: devapc.h:20
@ SYS2_D0_APC_0
Definition: devapc.h:14
unsigned char d_permission[16]
Definition: devapc.h:59
unsigned char d_permission[4]
Definition: devapc.h:67
unsigned char d_permission[8]
Definition: devapc.h:63