xref: /linux/drivers/accel/habanalabs/goya/goya_security.c (revision 8a922b7728a93d837954315c98b84f6b78de0c4f)
1 // SPDX-License-Identifier: GPL-2.0
2 
3 /*
4  * Copyright 2016-2019 HabanaLabs, Ltd.
5  * All Rights Reserved.
6  */
7 
8 #include "goyaP.h"
9 #include "../include/goya/asic_reg/goya_regs.h"
10 
11 /*
12  * goya_set_block_as_protected - set the given block as protected
13  *
14  * @hdev: pointer to hl_device structure
15  * @block: block base address
16  *
17  */
18 static void goya_pb_set_block(struct hl_device *hdev, u64 base)
19 {
20 	u32 pb_addr = base - CFG_BASE + PROT_BITS_OFFS;
21 
22 	while (pb_addr & 0xFFF) {
23 		WREG32(pb_addr, 0);
24 		pb_addr += 4;
25 	}
26 }
27 
28 static void goya_init_mme_protection_bits(struct hl_device *hdev)
29 {
30 	u32 pb_addr, mask;
31 	u8 word_offset;
32 
33 	/* TODO: change to real reg name when Soc Online is updated */
34 	u64 mmMME_SBB_POWER_ECO1 = 0xDFF60,
35 		mmMME_SBB_POWER_ECO2 = 0xDFF64;
36 
37 	goya_pb_set_block(hdev, mmACC_MS_ECC_MEM_0_BASE);
38 	goya_pb_set_block(hdev, mmACC_MS_ECC_MEM_1_BASE);
39 	goya_pb_set_block(hdev, mmACC_MS_ECC_MEM_2_BASE);
40 	goya_pb_set_block(hdev, mmACC_MS_ECC_MEM_3_BASE);
41 
42 	goya_pb_set_block(hdev, mmSBA_ECC_MEM_BASE);
43 	goya_pb_set_block(hdev, mmSBB_ECC_MEM_BASE);
44 
45 	goya_pb_set_block(hdev, mmMME1_RTR_BASE);
46 	goya_pb_set_block(hdev, mmMME1_RD_REGULATOR_BASE);
47 	goya_pb_set_block(hdev, mmMME1_WR_REGULATOR_BASE);
48 	goya_pb_set_block(hdev, mmMME2_RTR_BASE);
49 	goya_pb_set_block(hdev, mmMME2_RD_REGULATOR_BASE);
50 	goya_pb_set_block(hdev, mmMME2_WR_REGULATOR_BASE);
51 	goya_pb_set_block(hdev, mmMME3_RTR_BASE);
52 	goya_pb_set_block(hdev, mmMME3_RD_REGULATOR_BASE);
53 	goya_pb_set_block(hdev, mmMME3_WR_REGULATOR_BASE);
54 
55 	goya_pb_set_block(hdev, mmMME4_RTR_BASE);
56 	goya_pb_set_block(hdev, mmMME4_RD_REGULATOR_BASE);
57 	goya_pb_set_block(hdev, mmMME4_WR_REGULATOR_BASE);
58 
59 	goya_pb_set_block(hdev, mmMME5_RTR_BASE);
60 	goya_pb_set_block(hdev, mmMME5_RD_REGULATOR_BASE);
61 	goya_pb_set_block(hdev, mmMME5_WR_REGULATOR_BASE);
62 
63 	goya_pb_set_block(hdev, mmMME6_RTR_BASE);
64 	goya_pb_set_block(hdev, mmMME6_RD_REGULATOR_BASE);
65 	goya_pb_set_block(hdev, mmMME6_WR_REGULATOR_BASE);
66 
67 	pb_addr = (mmMME_DUMMY & ~0xFFF) + PROT_BITS_OFFS;
68 	word_offset = ((mmMME_DUMMY & PROT_BITS_OFFS) >> 7) << 2;
69 	mask = 1 << ((mmMME_DUMMY & 0x7F) >> 2);
70 	mask |= 1 << ((mmMME_RESET & 0x7F) >> 2);
71 	mask |= 1 << ((mmMME_STALL & 0x7F) >> 2);
72 	mask |= 1 << ((mmMME_SM_BASE_ADDRESS_LOW & 0x7F) >> 2);
73 	mask |= 1 << ((mmMME_SM_BASE_ADDRESS_HIGH & 0x7F) >> 2);
74 	mask |= 1 << ((mmMME_DBGMEM_ADD & 0x7F) >> 2);
75 	mask |= 1 << ((mmMME_DBGMEM_DATA_WR & 0x7F) >> 2);
76 	mask |= 1 << ((mmMME_DBGMEM_DATA_RD & 0x7F) >> 2);
77 	mask |= 1 << ((mmMME_DBGMEM_CTRL & 0x7F) >> 2);
78 	mask |= 1 << ((mmMME_DBGMEM_RC & 0x7F) >> 2);
79 	mask |= 1 << ((mmMME_LOG_SHADOW & 0x7F) >> 2);
80 
81 	WREG32(pb_addr + word_offset, ~mask);
82 
83 	pb_addr = (mmMME_STORE_MAX_CREDIT & ~0xFFF) + PROT_BITS_OFFS;
84 	word_offset = ((mmMME_STORE_MAX_CREDIT & PROT_BITS_OFFS) >> 7) << 2;
85 	mask = 1 << ((mmMME_STORE_MAX_CREDIT & 0x7F) >> 2);
86 	mask |= 1 << ((mmMME_AGU & 0x7F) >> 2);
87 	mask |= 1 << ((mmMME_SBA & 0x7F) >> 2);
88 	mask |= 1 << ((mmMME_SBB & 0x7F) >> 2);
89 	mask |= 1 << ((mmMME_SBC & 0x7F) >> 2);
90 	mask |= 1 << ((mmMME_WBC & 0x7F) >> 2);
91 	mask |= 1 << ((mmMME_SBA_CONTROL_DATA & 0x7F) >> 2);
92 	mask |= 1 << ((mmMME_SBB_CONTROL_DATA & 0x7F) >> 2);
93 	mask |= 1 << ((mmMME_SBC_CONTROL_DATA & 0x7F) >> 2);
94 	mask |= 1 << ((mmMME_WBC_CONTROL_DATA & 0x7F) >> 2);
95 	mask |= 1 << ((mmMME_TE & 0x7F) >> 2);
96 	mask |= 1 << ((mmMME_TE2DEC & 0x7F) >> 2);
97 	mask |= 1 << ((mmMME_REI_STATUS & 0x7F) >> 2);
98 	mask |= 1 << ((mmMME_REI_MASK & 0x7F) >> 2);
99 	mask |= 1 << ((mmMME_SEI_STATUS & 0x7F) >> 2);
100 	mask |= 1 << ((mmMME_SEI_MASK & 0x7F) >> 2);
101 	mask |= 1 << ((mmMME_SPI_STATUS & 0x7F) >> 2);
102 	mask |= 1 << ((mmMME_SPI_MASK & 0x7F) >> 2);
103 
104 	WREG32(pb_addr + word_offset, ~mask);
105 
106 	pb_addr = (mmMME_QM_GLBL_CFG0 & ~0xFFF) + PROT_BITS_OFFS;
107 	word_offset = ((mmMME_QM_GLBL_CFG0 & PROT_BITS_OFFS) >> 7) << 2;
108 	mask = 1 << ((mmMME_QM_GLBL_CFG0 & 0x7F) >> 2);
109 	mask |= 1 << ((mmMME_QM_GLBL_CFG1 & 0x7F) >> 2);
110 	mask |= 1 << ((mmMME_QM_GLBL_PROT & 0x7F) >> 2);
111 	mask |= 1 << ((mmMME_QM_GLBL_ERR_CFG & 0x7F) >> 2);
112 	mask |= 1 << ((mmMME_QM_GLBL_ERR_ADDR_LO & 0x7F) >> 2);
113 	mask |= 1 << ((mmMME_QM_GLBL_ERR_ADDR_HI & 0x7F) >> 2);
114 	mask |= 1 << ((mmMME_QM_GLBL_ERR_WDATA & 0x7F) >> 2);
115 	mask |= 1 << ((mmMME_QM_GLBL_SECURE_PROPS & 0x7F) >> 2);
116 	mask |= 1 << ((mmMME_QM_GLBL_NON_SECURE_PROPS & 0x7F) >> 2);
117 	mask |= 1 << ((mmMME_QM_GLBL_STS0 & 0x7F) >> 2);
118 	mask |= 1 << ((mmMME_QM_GLBL_STS1 & 0x7F) >> 2);
119 	mask |= 1 << ((mmMME_QM_PQ_BASE_LO & 0x7F) >> 2);
120 	mask |= 1 << ((mmMME_QM_PQ_BASE_HI & 0x7F) >> 2);
121 	mask |= 1 << ((mmMME_QM_PQ_SIZE & 0x7F) >> 2);
122 	mask |= 1 << ((mmMME_QM_PQ_PI & 0x7F) >> 2);
123 	mask |= 1 << ((mmMME_QM_PQ_CI & 0x7F) >> 2);
124 	mask |= 1 << ((mmMME_QM_PQ_CFG0 & 0x7F) >> 2);
125 	mask |= 1 << ((mmMME_QM_PQ_CFG1 & 0x7F) >> 2);
126 	mask |= 1 << ((mmMME_QM_PQ_ARUSER & 0x7F) >> 2);
127 
128 	WREG32(pb_addr + word_offset, ~mask);
129 
130 	pb_addr = (mmMME_QM_PQ_PUSH0 & ~0xFFF) + PROT_BITS_OFFS;
131 	word_offset = ((mmMME_QM_PQ_PUSH0 & PROT_BITS_OFFS) >> 7) << 2;
132 	mask = 1 << ((mmMME_QM_PQ_PUSH0 & 0x7F) >> 2);
133 	mask |= 1 << ((mmMME_QM_PQ_PUSH1 & 0x7F) >> 2);
134 	mask |= 1 << ((mmMME_QM_PQ_PUSH2 & 0x7F) >> 2);
135 	mask |= 1 << ((mmMME_QM_PQ_PUSH3 & 0x7F) >> 2);
136 	mask |= 1 << ((mmMME_QM_PQ_STS0 & 0x7F) >> 2);
137 	mask |= 1 << ((mmMME_QM_PQ_STS1 & 0x7F) >> 2);
138 	mask |= 1 << ((mmMME_QM_PQ_RD_RATE_LIM_EN & 0x7F) >> 2);
139 	mask |= 1 << ((mmMME_QM_PQ_RD_RATE_LIM_RST_TOKEN & 0x7F) >> 2);
140 	mask |= 1 << ((mmMME_QM_PQ_RD_RATE_LIM_SAT & 0x7F) >> 2);
141 	mask |= 1 << ((mmMME_QM_PQ_RD_RATE_LIM_TOUT & 0x7F) >> 2);
142 	mask |= 1 << ((mmMME_QM_CQ_CFG0 & 0x7F) >> 2);
143 	mask |= 1 << ((mmMME_QM_CQ_CFG1 & 0x7F) >> 2);
144 	mask |= 1 << ((mmMME_QM_CQ_ARUSER & 0x7F) >> 2);
145 	mask |= 1 << ((mmMME_QM_CQ_PTR_LO & 0x7F) >> 2);
146 	mask |= 1 << ((mmMME_QM_CQ_PTR_HI & 0x7F) >> 2);
147 	mask |= 1 << ((mmMME_QM_CQ_TSIZE & 0x7F) >> 2);
148 	mask |= 1 << ((mmMME_QM_CQ_CTL & 0x7F) >> 2);
149 	mask |= 1 << ((mmMME_QM_CQ_PTR_LO_STS & 0x7F) >> 2);
150 	mask |= 1 << ((mmMME_QM_CQ_PTR_HI_STS & 0x7F) >> 2);
151 	mask |= 1 << ((mmMME_QM_CQ_TSIZE_STS & 0x7F) >> 2);
152 	mask |= 1 << ((mmMME_QM_CQ_CTL_STS & 0x7F) >> 2);
153 	mask |= 1 << ((mmMME_QM_CQ_STS0 & 0x7F) >> 2);
154 	mask |= 1 << ((mmMME_QM_CQ_STS1 & 0x7F) >> 2);
155 	mask |= 1 << ((mmMME_QM_CQ_RD_RATE_LIM_EN & 0x7F) >> 2);
156 	mask |= 1 << ((mmMME_QM_CQ_RD_RATE_LIM_RST_TOKEN & 0x7F) >> 2);
157 	mask |= 1 << ((mmMME_QM_CQ_RD_RATE_LIM_SAT & 0x7F) >> 2);
158 	mask |= 1 << ((mmMME_QM_CQ_RD_RATE_LIM_TOUT & 0x7F) >> 2);
159 
160 	WREG32(pb_addr + word_offset, ~mask);
161 
162 	pb_addr = (mmMME_QM_CQ_IFIFO_CNT & ~0xFFF) + PROT_BITS_OFFS;
163 	word_offset = ((mmMME_QM_CQ_IFIFO_CNT & PROT_BITS_OFFS) >> 7) << 2;
164 	mask = 1 << ((mmMME_QM_CQ_IFIFO_CNT & 0x7F) >> 2);
165 	mask |= 1 << ((mmMME_QM_CP_MSG_BASE0_ADDR_LO & 0x7F) >> 2);
166 	mask |= 1 << ((mmMME_QM_CP_MSG_BASE0_ADDR_HI & 0x7F) >> 2);
167 	mask |= 1 << ((mmMME_QM_CP_MSG_BASE1_ADDR_LO & 0x7F) >> 2);
168 	mask |= 1 << ((mmMME_QM_CP_MSG_BASE1_ADDR_HI & 0x7F) >> 2);
169 	mask |= 1 << ((mmMME_QM_CP_MSG_BASE2_ADDR_LO & 0x7F) >> 2);
170 	mask |= 1 << ((mmMME_QM_CP_MSG_BASE2_ADDR_HI & 0x7F) >> 2);
171 	mask |= 1 << ((mmMME_QM_CP_MSG_BASE3_ADDR_LO & 0x7F) >> 2);
172 	mask |= 1 << ((mmMME_QM_CP_MSG_BASE3_ADDR_HI & 0x7F) >> 2);
173 	mask |= 1 << ((mmMME_QM_CP_LDMA_TSIZE_OFFSET & 0x7F) >> 2);
174 	mask |= 1 << ((mmMME_QM_CP_LDMA_SRC_BASE_LO_OFFSET & 0x7F) >> 2);
175 	mask |= 1 << ((mmMME_QM_CP_LDMA_SRC_BASE_HI_OFFSET & 0x7F) >> 2);
176 	mask |= 1 << ((mmMME_QM_CP_LDMA_DST_BASE_LO_OFFSET & 0x7F) >> 2);
177 	mask |= 1 << ((mmMME_QM_CP_LDMA_DST_BASE_HI_OFFSET & 0x7F) >> 2);
178 	mask |= 1 << ((mmMME_QM_CP_LDMA_COMMIT_OFFSET & 0x7F) >> 2);
179 
180 	WREG32(pb_addr + word_offset, ~mask);
181 
182 	pb_addr = (mmMME_QM_CP_STS & ~0xFFF) + PROT_BITS_OFFS;
183 	word_offset = ((mmMME_QM_CP_STS & PROT_BITS_OFFS) >> 7) << 2;
184 	mask = 1 << ((mmMME_QM_CP_STS & 0x7F) >> 2);
185 	mask |= 1 << ((mmMME_QM_CP_CURRENT_INST_LO & 0x7F) >> 2);
186 	mask |= 1 << ((mmMME_QM_CP_CURRENT_INST_HI & 0x7F) >> 2);
187 	mask |= 1 << ((mmMME_QM_CP_BARRIER_CFG & 0x7F) >> 2);
188 	mask |= 1 << ((mmMME_QM_CP_DBG_0 & 0x7F) >> 2);
189 	mask |= 1 << ((mmMME_QM_PQ_BUF_ADDR & 0x7F) >> 2);
190 	mask |= 1 << ((mmMME_QM_PQ_BUF_RDATA & 0x7F) >> 2);
191 	mask |= 1 << ((mmMME_QM_CQ_BUF_ADDR & 0x7F) >> 2);
192 	mask |= 1 << ((mmMME_QM_CQ_BUF_RDATA & 0x7F) >> 2);
193 
194 	WREG32(pb_addr + word_offset, ~mask);
195 
196 	pb_addr = (mmMME_CMDQ_GLBL_CFG0 & ~0xFFF) + PROT_BITS_OFFS;
197 	word_offset = ((mmMME_CMDQ_GLBL_CFG0 & PROT_BITS_OFFS) >> 7) << 2;
198 	mask = 1 << ((mmMME_CMDQ_GLBL_CFG0 & 0x7F) >> 2);
199 	mask |= 1 << ((mmMME_CMDQ_GLBL_CFG1 & 0x7F) >> 2);
200 	mask |= 1 << ((mmMME_CMDQ_GLBL_PROT & 0x7F) >> 2);
201 	mask |= 1 << ((mmMME_CMDQ_GLBL_ERR_CFG & 0x7F) >> 2);
202 	mask |= 1 << ((mmMME_CMDQ_GLBL_ERR_ADDR_LO & 0x7F) >> 2);
203 	mask |= 1 << ((mmMME_CMDQ_GLBL_ERR_ADDR_HI & 0x7F) >> 2);
204 	mask |= 1 << ((mmMME_CMDQ_GLBL_ERR_WDATA & 0x7F) >> 2);
205 	mask |= 1 << ((mmMME_CMDQ_GLBL_SECURE_PROPS & 0x7F) >> 2);
206 	mask |= 1 << ((mmMME_CMDQ_GLBL_NON_SECURE_PROPS & 0x7F) >> 2);
207 	mask |= 1 << ((mmMME_CMDQ_GLBL_STS0 & 0x7F) >> 2);
208 	mask |= 1 << ((mmMME_CMDQ_GLBL_STS1 & 0x7F) >> 2);
209 
210 	WREG32(pb_addr + word_offset, ~mask);
211 
212 	pb_addr = (mmMME_CMDQ_CQ_CFG0 & ~0xFFF) + PROT_BITS_OFFS;
213 	word_offset = ((mmMME_CMDQ_CQ_CFG0 & PROT_BITS_OFFS) >> 7) << 2;
214 	mask = 1 << ((mmMME_CMDQ_CQ_CFG0 & 0x7F) >> 2);
215 	mask |= 1 << ((mmMME_CMDQ_CQ_CFG1 & 0x7F) >> 2);
216 	mask |= 1 << ((mmMME_CMDQ_CQ_ARUSER & 0x7F) >> 2);
217 	mask |= 1 << ((mmMME_CMDQ_CQ_PTR_LO_STS & 0x7F) >> 2);
218 	mask |= 1 << ((mmMME_CMDQ_CQ_PTR_HI_STS & 0x7F) >> 2);
219 	mask |= 1 << ((mmMME_CMDQ_CQ_TSIZE_STS & 0x7F) >> 2);
220 	mask |= 1 << ((mmMME_CMDQ_CQ_CTL_STS & 0x7F) >> 2);
221 	mask |= 1 << ((mmMME_CMDQ_CQ_STS0 & 0x7F) >> 2);
222 	mask |= 1 << ((mmMME_CMDQ_CQ_STS1 & 0x7F) >> 2);
223 	mask |= 1 << ((mmMME_CMDQ_CQ_RD_RATE_LIM_EN & 0x7F) >> 2);
224 	mask |= 1 << ((mmMME_CMDQ_CQ_RD_RATE_LIM_RST_TOKEN & 0x7F) >> 2);
225 	mask |= 1 << ((mmMME_CMDQ_CQ_RD_RATE_LIM_SAT & 0x7F) >> 2);
226 	mask |= 1 << ((mmMME_CMDQ_CQ_RD_RATE_LIM_TOUT & 0x7F) >> 2);
227 
228 	WREG32(pb_addr + word_offset, ~mask);
229 
230 	pb_addr = (mmMME_CMDQ_CQ_IFIFO_CNT & ~0xFFF) + PROT_BITS_OFFS;
231 	word_offset = ((mmMME_CMDQ_CQ_IFIFO_CNT &
232 			PROT_BITS_OFFS) >> 7) << 2;
233 	mask = 1 << ((mmMME_CMDQ_CQ_IFIFO_CNT & 0x7F) >> 2);
234 	mask |= 1 << ((mmMME_CMDQ_CP_MSG_BASE0_ADDR_LO & 0x7F) >> 2);
235 	mask |= 1 << ((mmMME_CMDQ_CP_MSG_BASE0_ADDR_HI & 0x7F) >> 2);
236 	mask |= 1 << ((mmMME_CMDQ_CP_MSG_BASE1_ADDR_LO & 0x7F) >> 2);
237 	mask |= 1 << ((mmMME_CMDQ_CP_MSG_BASE1_ADDR_HI & 0x7F) >> 2);
238 	mask |= 1 << ((mmMME_CMDQ_CP_MSG_BASE2_ADDR_LO & 0x7F) >> 2);
239 	mask |= 1 << ((mmMME_CMDQ_CP_MSG_BASE2_ADDR_HI & 0x7F) >> 2);
240 	mask |= 1 << ((mmMME_CMDQ_CP_MSG_BASE3_ADDR_LO & 0x7F) >> 2);
241 	mask |= 1 << ((mmMME_CMDQ_CP_MSG_BASE3_ADDR_HI & 0x7F) >> 2);
242 	mask |= 1 << ((mmMME_CMDQ_CP_LDMA_TSIZE_OFFSET & 0x7F) >> 2);
243 	mask |= 1 << ((mmMME_CMDQ_CP_LDMA_SRC_BASE_LO_OFFSET & 0x7F) >> 2);
244 	mask |= 1 << ((mmMME_CMDQ_CP_LDMA_SRC_BASE_HI_OFFSET & 0x7F) >> 2);
245 	mask |= 1 << ((mmMME_CMDQ_CP_LDMA_DST_BASE_LO_OFFSET & 0x7F) >> 2);
246 	mask |= 1 << ((mmMME_CMDQ_CP_LDMA_DST_BASE_HI_OFFSET & 0x7F) >> 2);
247 	mask |= 1 << ((mmMME_CMDQ_CP_LDMA_COMMIT_OFFSET & 0x7F) >> 2);
248 	mask |= 1 << ((mmMME_CMDQ_CP_STS & 0x7F) >> 2);
249 	mask |= 1 << ((mmMME_CMDQ_CP_CURRENT_INST_LO & 0x7F) >> 2);
250 
251 	WREG32(pb_addr + word_offset, ~mask);
252 
253 	pb_addr = (mmMME_CMDQ_CP_CURRENT_INST_HI & ~0xFFF) + PROT_BITS_OFFS;
254 	word_offset = ((mmMME_CMDQ_CP_CURRENT_INST_HI & PROT_BITS_OFFS) >> 7)
255 			<< 2;
256 	mask = 1 << ((mmMME_CMDQ_CP_CURRENT_INST_HI & 0x7F) >> 2);
257 	mask |= 1 << ((mmMME_CMDQ_CP_BARRIER_CFG & 0x7F) >> 2);
258 	mask |= 1 << ((mmMME_CMDQ_CP_DBG_0 & 0x7F) >> 2);
259 	mask |= 1 << ((mmMME_CMDQ_CQ_BUF_ADDR & 0x7F) >> 2);
260 	mask |= 1 << ((mmMME_CMDQ_CQ_BUF_RDATA & 0x7F) >> 2);
261 
262 	WREG32(pb_addr + word_offset, ~mask);
263 
264 	pb_addr = (mmMME_SBB_POWER_ECO1 & ~0xFFF) + PROT_BITS_OFFS;
265 	word_offset = ((mmMME_SBB_POWER_ECO1 & PROT_BITS_OFFS) >> 7) << 2;
266 	mask = 1 << ((mmMME_SBB_POWER_ECO1 & 0x7F) >> 2);
267 	mask |= 1 << ((mmMME_SBB_POWER_ECO2 & 0x7F) >> 2);
268 
269 	WREG32(pb_addr + word_offset, ~mask);
270 }
271 
272 static void goya_init_dma_protection_bits(struct hl_device *hdev)
273 {
274 	u32 pb_addr, mask;
275 	u8 word_offset;
276 
277 	goya_pb_set_block(hdev, mmDMA_NRTR_BASE);
278 	goya_pb_set_block(hdev, mmDMA_RD_REGULATOR_BASE);
279 	goya_pb_set_block(hdev, mmDMA_WR_REGULATOR_BASE);
280 
281 	pb_addr = (mmDMA_QM_0_GLBL_CFG0 & ~0xFFF) + PROT_BITS_OFFS;
282 	word_offset = ((mmDMA_QM_0_GLBL_CFG0 & PROT_BITS_OFFS) >> 7) << 2;
283 	mask = 1 << ((mmDMA_QM_0_GLBL_CFG0 & 0x7F) >> 2);
284 	mask |= 1 << ((mmDMA_QM_0_GLBL_CFG1 & 0x7F) >> 2);
285 	mask |= 1 << ((mmDMA_QM_0_GLBL_PROT & 0x7F) >> 2);
286 	mask |= 1 << ((mmDMA_QM_0_GLBL_ERR_CFG & 0x7F) >> 2);
287 	mask |= 1 << ((mmDMA_QM_0_GLBL_ERR_ADDR_LO & 0x7F) >> 2);
288 	mask |= 1 << ((mmDMA_QM_0_GLBL_ERR_ADDR_HI & 0x7F) >> 2);
289 	mask |= 1 << ((mmDMA_QM_0_GLBL_ERR_WDATA & 0x7F) >> 2);
290 	mask |= 1 << ((mmDMA_QM_0_GLBL_SECURE_PROPS & 0x7F) >> 2);
291 	mask |= 1 << ((mmDMA_QM_0_GLBL_NON_SECURE_PROPS & 0x7F) >> 2);
292 	mask |= 1 << ((mmDMA_QM_0_GLBL_STS0 & 0x7F) >> 2);
293 	mask |= 1 << ((mmDMA_QM_0_GLBL_STS1 & 0x7F) >> 2);
294 	mask |= 1 << ((mmDMA_QM_0_PQ_BASE_LO & 0x7F) >> 2);
295 	mask |= 1 << ((mmDMA_QM_0_PQ_BASE_HI & 0x7F) >> 2);
296 	mask |= 1 << ((mmDMA_QM_0_PQ_SIZE & 0x7F) >> 2);
297 	mask |= 1 << ((mmDMA_QM_0_PQ_PI & 0x7F) >> 2);
298 	mask |= 1 << ((mmDMA_QM_0_PQ_CI & 0x7F) >> 2);
299 	mask |= 1 << ((mmDMA_QM_0_PQ_CFG0 & 0x7F) >> 2);
300 	mask |= 1 << ((mmDMA_QM_0_PQ_CFG1 & 0x7F) >> 2);
301 	mask |= 1 << ((mmDMA_QM_0_PQ_ARUSER & 0x7F) >> 2);
302 
303 	WREG32(pb_addr + word_offset, ~mask);
304 
305 	pb_addr = (mmDMA_QM_0_PQ_PUSH0 & ~0xFFF) + PROT_BITS_OFFS;
306 	word_offset = ((mmDMA_QM_0_PQ_PUSH0 & PROT_BITS_OFFS) >> 7) << 2;
307 	mask = 1 << ((mmDMA_QM_0_PQ_PUSH0 & 0x7F) >> 2);
308 	mask |= 1 << ((mmDMA_QM_0_PQ_PUSH1 & 0x7F) >> 2);
309 	mask |= 1 << ((mmDMA_QM_0_PQ_PUSH2 & 0x7F) >> 2);
310 	mask |= 1 << ((mmDMA_QM_0_PQ_PUSH3 & 0x7F) >> 2);
311 	mask |= 1 << ((mmDMA_QM_0_PQ_STS0 & 0x7F) >> 2);
312 	mask |= 1 << ((mmDMA_QM_0_PQ_STS1 & 0x7F) >> 2);
313 	mask |= 1 << ((mmDMA_QM_0_PQ_RD_RATE_LIM_EN & 0x7F) >> 2);
314 	mask |= 1 << ((mmDMA_QM_0_PQ_RD_RATE_LIM_RST_TOKEN & 0x7F) >> 2);
315 	mask |= 1 << ((mmDMA_QM_0_PQ_RD_RATE_LIM_SAT & 0x7F) >> 2);
316 	mask |= 1 << ((mmDMA_QM_0_PQ_RD_RATE_LIM_TOUT & 0x7F) >> 2);
317 	mask |= 1 << ((mmDMA_QM_0_CQ_CFG0 & 0x7F) >> 2);
318 	mask |= 1 << ((mmDMA_QM_0_CQ_CFG1 & 0x7F) >> 2);
319 	mask |= 1 << ((mmDMA_QM_0_CQ_ARUSER & 0x7F) >> 2);
320 	mask |= 1 << ((mmDMA_QM_0_CQ_PTR_LO & 0x7F) >> 2);
321 	mask |= 1 << ((mmDMA_QM_0_CQ_PTR_HI & 0x7F) >> 2);
322 	mask |= 1 << ((mmDMA_QM_0_CQ_TSIZE & 0x7F) >> 2);
323 	mask |= 1 << ((mmDMA_QM_0_CQ_CTL & 0x7F) >> 2);
324 	mask |= 1 << ((mmDMA_QM_0_CQ_PTR_LO_STS & 0x7F) >> 2);
325 	mask |= 1 << ((mmDMA_QM_0_CQ_PTR_HI_STS & 0x7F) >> 2);
326 	mask |= 1 << ((mmDMA_QM_0_CQ_TSIZE_STS & 0x7F) >> 2);
327 	mask |= 1 << ((mmDMA_QM_0_CQ_CTL_STS & 0x7F) >> 2);
328 	mask |= 1 << ((mmDMA_QM_0_CQ_STS0 & 0x7F) >> 2);
329 	mask |= 1 << ((mmDMA_QM_0_CQ_STS1 & 0x7F) >> 2);
330 	mask |= 1 << ((mmDMA_QM_0_CQ_RD_RATE_LIM_EN & 0x7F) >> 2);
331 	mask |= 1 << ((mmDMA_QM_0_CQ_RD_RATE_LIM_RST_TOKEN & 0x7F) >> 2);
332 	mask |= 1 << ((mmDMA_QM_0_CQ_RD_RATE_LIM_SAT & 0x7F) >> 2);
333 	mask |= 1 << ((mmDMA_QM_0_CQ_RD_RATE_LIM_TOUT & 0x7F) >> 2);
334 
335 	WREG32(pb_addr + word_offset, ~mask);
336 
337 	pb_addr = (mmDMA_QM_0_CQ_IFIFO_CNT & ~0xFFF) + PROT_BITS_OFFS;
338 	word_offset = ((mmDMA_QM_0_CQ_IFIFO_CNT & PROT_BITS_OFFS) >> 7) << 2;
339 	mask = 1 << ((mmDMA_QM_0_CQ_IFIFO_CNT & 0x7F) >> 2);
340 	mask |= 1 << ((mmDMA_QM_0_CP_MSG_BASE0_ADDR_LO & 0x7F) >> 2);
341 	mask |= 1 << ((mmDMA_QM_0_CP_MSG_BASE0_ADDR_HI & 0x7F) >> 2);
342 	mask |= 1 << ((mmDMA_QM_0_CP_MSG_BASE1_ADDR_LO & 0x7F) >> 2);
343 	mask |= 1 << ((mmDMA_QM_0_CP_MSG_BASE1_ADDR_HI & 0x7F) >> 2);
344 	mask |= 1 << ((mmDMA_QM_0_CP_MSG_BASE2_ADDR_LO & 0x7F) >> 2);
345 	mask |= 1 << ((mmDMA_QM_0_CP_MSG_BASE2_ADDR_HI & 0x7F) >> 2);
346 	mask |= 1 << ((mmDMA_QM_0_CP_MSG_BASE3_ADDR_LO & 0x7F) >> 2);
347 	mask |= 1 << ((mmDMA_QM_0_CP_MSG_BASE3_ADDR_HI & 0x7F) >> 2);
348 	mask |= 1 << ((mmDMA_QM_0_CP_LDMA_TSIZE_OFFSET & 0x7F) >> 2);
349 	mask |= 1 << ((mmDMA_QM_0_CP_LDMA_SRC_BASE_LO_OFFSET & 0x7F) >> 2);
350 	mask |= 1 << ((mmDMA_QM_0_CP_LDMA_SRC_BASE_HI_OFFSET & 0x7F) >> 2);
351 	mask |= 1 << ((mmDMA_QM_0_CP_LDMA_DST_BASE_LO_OFFSET & 0x7F) >> 2);
352 	mask |= 1 << ((mmDMA_QM_0_CP_LDMA_DST_BASE_HI_OFFSET & 0x7F) >> 2);
353 	mask |= 1 << ((mmDMA_QM_0_CP_LDMA_COMMIT_OFFSET & 0x7F) >> 2);
354 
355 	WREG32(pb_addr + word_offset, ~mask);
356 
357 	goya_pb_set_block(hdev, mmDMA_CH_0_BASE);
358 
359 	pb_addr = (mmDMA_QM_1_GLBL_CFG0 & ~0xFFF) + PROT_BITS_OFFS;
360 	word_offset = ((mmDMA_QM_1_GLBL_CFG0 & PROT_BITS_OFFS) >> 7) << 2;
361 	mask = 1 << ((mmDMA_QM_1_GLBL_CFG0 & 0x7F) >> 2);
362 	mask |= 1 << ((mmDMA_QM_1_GLBL_CFG1 & 0x7F) >> 2);
363 	mask |= 1 << ((mmDMA_QM_1_GLBL_PROT & 0x7F) >> 2);
364 	mask |= 1 << ((mmDMA_QM_1_GLBL_ERR_CFG & 0x7F) >> 2);
365 	mask |= 1 << ((mmDMA_QM_1_GLBL_ERR_ADDR_LO & 0x7F) >> 2);
366 	mask |= 1 << ((mmDMA_QM_1_GLBL_ERR_ADDR_HI & 0x7F) >> 2);
367 	mask |= 1 << ((mmDMA_QM_1_GLBL_ERR_WDATA & 0x7F) >> 2);
368 	mask |= 1 << ((mmDMA_QM_1_GLBL_SECURE_PROPS & 0x7F) >> 2);
369 	mask |= 1 << ((mmDMA_QM_1_GLBL_NON_SECURE_PROPS & 0x7F) >> 2);
370 	mask |= 1 << ((mmDMA_QM_1_GLBL_STS0 & 0x7F) >> 2);
371 	mask |= 1 << ((mmDMA_QM_1_GLBL_STS1 & 0x7F) >> 2);
372 	mask |= 1 << ((mmDMA_QM_1_PQ_BASE_LO & 0x7F) >> 2);
373 	mask |= 1 << ((mmDMA_QM_1_PQ_BASE_HI & 0x7F) >> 2);
374 	mask |= 1 << ((mmDMA_QM_1_PQ_SIZE & 0x7F) >> 2);
375 	mask |= 1 << ((mmDMA_QM_1_PQ_PI & 0x7F) >> 2);
376 	mask |= 1 << ((mmDMA_QM_1_PQ_CI & 0x7F) >> 2);
377 	mask |= 1 << ((mmDMA_QM_1_PQ_CFG0 & 0x7F) >> 2);
378 	mask |= 1 << ((mmDMA_QM_1_PQ_CFG1 & 0x7F) >> 2);
379 	mask |= 1 << ((mmDMA_QM_1_PQ_ARUSER & 0x7F) >> 2);
380 
381 	WREG32(pb_addr + word_offset, ~mask);
382 
383 	pb_addr = (mmDMA_QM_1_PQ_PUSH0 & ~0xFFF) + PROT_BITS_OFFS;
384 	word_offset = ((mmDMA_QM_1_PQ_PUSH0 & PROT_BITS_OFFS) >> 7) << 2;
385 	mask = 1 << ((mmDMA_QM_1_PQ_PUSH0 & 0x7F) >> 2);
386 	mask |= 1 << ((mmDMA_QM_1_PQ_PUSH1 & 0x7F) >> 2);
387 	mask |= 1 << ((mmDMA_QM_1_PQ_PUSH2 & 0x7F) >> 2);
388 	mask |= 1 << ((mmDMA_QM_1_PQ_PUSH3 & 0x7F) >> 2);
389 	mask |= 1 << ((mmDMA_QM_1_PQ_STS0 & 0x7F) >> 2);
390 	mask |= 1 << ((mmDMA_QM_1_PQ_STS1 & 0x7F) >> 2);
391 	mask |= 1 << ((mmDMA_QM_1_PQ_RD_RATE_LIM_EN & 0x7F) >> 2);
392 	mask |= 1 << ((mmDMA_QM_1_PQ_RD_RATE_LIM_RST_TOKEN & 0x7F) >> 2);
393 	mask |= 1 << ((mmDMA_QM_1_PQ_RD_RATE_LIM_SAT & 0x7F) >> 2);
394 	mask |= 1 << ((mmDMA_QM_1_PQ_RD_RATE_LIM_TOUT & 0x7F) >> 2);
395 	mask |= 1 << ((mmDMA_QM_1_CQ_CFG0 & 0x7F) >> 2);
396 	mask |= 1 << ((mmDMA_QM_1_CQ_CFG1 & 0x7F) >> 2);
397 	mask |= 1 << ((mmDMA_QM_1_CQ_ARUSER & 0x7F) >> 2);
398 	mask |= 1 << ((mmDMA_QM_1_CQ_PTR_LO & 0x7F) >> 2);
399 	mask |= 1 << ((mmDMA_QM_1_CQ_PTR_HI & 0x7F) >> 2);
400 	mask |= 1 << ((mmDMA_QM_1_CQ_TSIZE & 0x7F) >> 2);
401 	mask |= 1 << ((mmDMA_QM_1_CQ_CTL & 0x7F) >> 2);
402 	mask |= 1 << ((mmDMA_QM_1_CQ_PTR_LO_STS & 0x7F) >> 2);
403 	mask |= 1 << ((mmDMA_QM_1_CQ_PTR_HI_STS & 0x7F) >> 2);
404 	mask |= 1 << ((mmDMA_QM_1_CQ_TSIZE_STS & 0x7F) >> 2);
405 	mask |= 1 << ((mmDMA_QM_1_CQ_CTL_STS & 0x7F) >> 2);
406 	mask |= 1 << ((mmDMA_QM_1_CQ_STS0 & 0x7F) >> 2);
407 	mask |= 1 << ((mmDMA_QM_1_CQ_STS1 & 0x7F) >> 2);
408 	mask |= 1 << ((mmDMA_QM_1_CQ_RD_RATE_LIM_EN & 0x7F) >> 2);
409 	mask |= 1 << ((mmDMA_QM_1_CQ_RD_RATE_LIM_RST_TOKEN & 0x7F) >> 2);
410 	mask |= 1 << ((mmDMA_QM_1_CQ_RD_RATE_LIM_SAT & 0x7F) >> 2);
411 	mask |= 1 << ((mmDMA_QM_1_CQ_RD_RATE_LIM_TOUT & 0x7F) >> 2);
412 
413 	WREG32(pb_addr + word_offset, ~mask);
414 
415 	pb_addr = (mmDMA_QM_1_CQ_IFIFO_CNT & ~0xFFF) + PROT_BITS_OFFS;
416 	word_offset = ((mmDMA_QM_1_CQ_IFIFO_CNT & PROT_BITS_OFFS) >> 7) << 2;
417 	mask = 1 << ((mmDMA_QM_1_CQ_IFIFO_CNT & 0x7F) >> 2);
418 	mask |= 1 << ((mmDMA_QM_1_CP_MSG_BASE0_ADDR_LO & 0x7F) >> 2);
419 	mask |= 1 << ((mmDMA_QM_1_CP_MSG_BASE0_ADDR_HI & 0x7F) >> 2);
420 	mask |= 1 << ((mmDMA_QM_1_CP_MSG_BASE1_ADDR_LO & 0x7F) >> 2);
421 	mask |= 1 << ((mmDMA_QM_1_CP_MSG_BASE1_ADDR_HI & 0x7F) >> 2);
422 	mask |= 1 << ((mmDMA_QM_1_CP_MSG_BASE2_ADDR_LO & 0x7F) >> 2);
423 	mask |= 1 << ((mmDMA_QM_1_CP_MSG_BASE2_ADDR_HI & 0x7F) >> 2);
424 	mask |= 1 << ((mmDMA_QM_1_CP_MSG_BASE3_ADDR_LO & 0x7F) >> 2);
425 	mask |= 1 << ((mmDMA_QM_1_CP_MSG_BASE3_ADDR_HI & 0x7F) >> 2);
426 	mask |= 1 << ((mmDMA_QM_1_CP_LDMA_TSIZE_OFFSET & 0x7F) >> 2);
427 	mask |= 1 << ((mmDMA_QM_1_CP_LDMA_SRC_BASE_LO_OFFSET & 0x7F) >> 2);
428 	mask |= 1 << ((mmDMA_QM_1_CP_LDMA_SRC_BASE_HI_OFFSET & 0x7F) >> 2);
429 	mask |= 1 << ((mmDMA_QM_1_CP_LDMA_DST_BASE_LO_OFFSET & 0x7F) >> 2);
430 	mask |= 1 << ((mmDMA_QM_1_CP_LDMA_DST_BASE_HI_OFFSET & 0x7F) >> 2);
431 	mask |= 1 << ((mmDMA_QM_1_CP_LDMA_COMMIT_OFFSET & 0x7F) >> 2);
432 
433 	WREG32(pb_addr + word_offset, ~mask);
434 
435 	goya_pb_set_block(hdev, mmDMA_CH_1_BASE);
436 
437 	pb_addr = (mmDMA_QM_2_GLBL_CFG0 & ~0xFFF) + PROT_BITS_OFFS;
438 	word_offset = ((mmDMA_QM_2_GLBL_CFG0 & PROT_BITS_OFFS) >> 7) << 2;
439 	mask = 1 << ((mmDMA_QM_2_GLBL_CFG0 & 0x7F) >> 2);
440 	mask |= 1 << ((mmDMA_QM_2_GLBL_CFG1 & 0x7F) >> 2);
441 	mask |= 1 << ((mmDMA_QM_2_GLBL_PROT & 0x7F) >> 2);
442 	mask |= 1 << ((mmDMA_QM_2_GLBL_ERR_CFG & 0x7F) >> 2);
443 	mask |= 1 << ((mmDMA_QM_2_GLBL_ERR_ADDR_LO & 0x7F) >> 2);
444 	mask |= 1 << ((mmDMA_QM_2_GLBL_ERR_ADDR_HI & 0x7F) >> 2);
445 	mask |= 1 << ((mmDMA_QM_2_GLBL_ERR_WDATA & 0x7F) >> 2);
446 	mask |= 1 << ((mmDMA_QM_2_GLBL_SECURE_PROPS & 0x7F) >> 2);
447 	mask |= 1 << ((mmDMA_QM_2_GLBL_NON_SECURE_PROPS & 0x7F) >> 2);
448 	mask |= 1 << ((mmDMA_QM_2_GLBL_STS0 & 0x7F) >> 2);
449 	mask |= 1 << ((mmDMA_QM_2_GLBL_STS1 & 0x7F) >> 2);
450 	mask |= 1 << ((mmDMA_QM_2_PQ_BASE_LO & 0x7F) >> 2);
451 	mask |= 1 << ((mmDMA_QM_2_PQ_BASE_HI & 0x7F) >> 2);
452 	mask |= 1 << ((mmDMA_QM_2_PQ_SIZE & 0x7F) >> 2);
453 	mask |= 1 << ((mmDMA_QM_2_PQ_PI & 0x7F) >> 2);
454 	mask |= 1 << ((mmDMA_QM_2_PQ_CI & 0x7F) >> 2);
455 	mask |= 1 << ((mmDMA_QM_2_PQ_CFG0 & 0x7F) >> 2);
456 	mask |= 1 << ((mmDMA_QM_2_PQ_CFG1 & 0x7F) >> 2);
457 	mask |= 1 << ((mmDMA_QM_2_PQ_ARUSER & 0x7F) >> 2);
458 
459 	WREG32(pb_addr + word_offset, ~mask);
460 
461 	pb_addr = (mmDMA_QM_2_PQ_PUSH0 & ~0xFFF) + PROT_BITS_OFFS;
462 	word_offset = ((mmDMA_QM_2_PQ_PUSH0 & PROT_BITS_OFFS) >> 7) << 2;
463 	mask = 1 << ((mmDMA_QM_2_PQ_PUSH0 & 0x7F) >> 2);
464 	mask |= 1 << ((mmDMA_QM_2_PQ_PUSH1 & 0x7F) >> 2);
465 	mask |= 1 << ((mmDMA_QM_2_PQ_PUSH2 & 0x7F) >> 2);
466 	mask |= 1 << ((mmDMA_QM_2_PQ_PUSH3 & 0x7F) >> 2);
467 	mask |= 1 << ((mmDMA_QM_2_PQ_STS0 & 0x7F) >> 2);
468 	mask |= 1 << ((mmDMA_QM_2_PQ_STS1 & 0x7F) >> 2);
469 	mask |= 1 << ((mmDMA_QM_2_PQ_RD_RATE_LIM_EN & 0x7F) >> 2);
470 	mask |= 1 << ((mmDMA_QM_2_PQ_RD_RATE_LIM_RST_TOKEN & 0x7F) >> 2);
471 	mask |= 1 << ((mmDMA_QM_2_PQ_RD_RATE_LIM_SAT & 0x7F) >> 2);
472 	mask |= 1 << ((mmDMA_QM_2_PQ_RD_RATE_LIM_TOUT & 0x7F) >> 2);
473 	mask |= 1 << ((mmDMA_QM_2_CQ_CFG0 & 0x7F) >> 2);
474 	mask |= 1 << ((mmDMA_QM_2_CQ_CFG1 & 0x7F) >> 2);
475 	mask |= 1 << ((mmDMA_QM_2_CQ_ARUSER & 0x7F) >> 2);
476 	mask |= 1 << ((mmDMA_QM_2_CQ_PTR_LO & 0x7F) >> 2);
477 	mask |= 1 << ((mmDMA_QM_2_CQ_PTR_HI & 0x7F) >> 2);
478 	mask |= 1 << ((mmDMA_QM_2_CQ_TSIZE & 0x7F) >> 2);
479 	mask |= 1 << ((mmDMA_QM_2_CQ_CTL & 0x7F) >> 2);
480 	mask |= 1 << ((mmDMA_QM_2_CQ_PTR_LO_STS & 0x7F) >> 2);
481 	mask |= 1 << ((mmDMA_QM_2_CQ_PTR_HI_STS & 0x7F) >> 2);
482 	mask |= 1 << ((mmDMA_QM_2_CQ_TSIZE_STS & 0x7F) >> 2);
483 	mask |= 1 << ((mmDMA_QM_2_CQ_CTL_STS & 0x7F) >> 2);
484 	mask |= 1 << ((mmDMA_QM_2_CQ_STS0 & 0x7F) >> 2);
485 	mask |= 1 << ((mmDMA_QM_2_CQ_STS1 & 0x7F) >> 2);
486 	mask |= 1 << ((mmDMA_QM_2_CQ_RD_RATE_LIM_EN & 0x7F) >> 2);
487 	mask |= 1 << ((mmDMA_QM_2_CQ_RD_RATE_LIM_RST_TOKEN & 0x7F) >> 2);
488 	mask |= 1 << ((mmDMA_QM_2_CQ_RD_RATE_LIM_SAT & 0x7F) >> 2);
489 	mask |= 1 << ((mmDMA_QM_2_CQ_RD_RATE_LIM_TOUT & 0x7F) >> 2);
490 
491 	WREG32(pb_addr + word_offset, ~mask);
492 
493 	pb_addr = (mmDMA_QM_2_CQ_IFIFO_CNT & ~0xFFF) + PROT_BITS_OFFS;
494 	word_offset = ((mmDMA_QM_2_CQ_IFIFO_CNT & PROT_BITS_OFFS) >> 7) << 2;
495 	mask = 1 << ((mmDMA_QM_2_CQ_IFIFO_CNT & 0x7F) >> 2);
496 	mask |= 1 << ((mmDMA_QM_2_CP_MSG_BASE0_ADDR_LO & 0x7F) >> 2);
497 	mask |= 1 << ((mmDMA_QM_2_CP_MSG_BASE0_ADDR_HI & 0x7F) >> 2);
498 	mask |= 1 << ((mmDMA_QM_2_CP_MSG_BASE1_ADDR_LO & 0x7F) >> 2);
499 	mask |= 1 << ((mmDMA_QM_2_CP_MSG_BASE1_ADDR_HI & 0x7F) >> 2);
500 	mask |= 1 << ((mmDMA_QM_2_CP_MSG_BASE2_ADDR_LO & 0x7F) >> 2);
501 	mask |= 1 << ((mmDMA_QM_2_CP_MSG_BASE2_ADDR_HI & 0x7F) >> 2);
502 	mask |= 1 << ((mmDMA_QM_2_CP_MSG_BASE3_ADDR_LO & 0x7F) >> 2);
503 	mask |= 1 << ((mmDMA_QM_2_CP_MSG_BASE3_ADDR_HI & 0x7F) >> 2);
504 	mask |= 1 << ((mmDMA_QM_2_CP_LDMA_TSIZE_OFFSET & 0x7F) >> 2);
505 	mask |= 1 << ((mmDMA_QM_2_CP_LDMA_SRC_BASE_LO_OFFSET & 0x7F) >> 2);
506 	mask |= 1 << ((mmDMA_QM_2_CP_LDMA_SRC_BASE_HI_OFFSET & 0x7F) >> 2);
507 	mask |= 1 << ((mmDMA_QM_2_CP_LDMA_DST_BASE_LO_OFFSET & 0x7F) >> 2);
508 	mask |= 1 << ((mmDMA_QM_2_CP_LDMA_DST_BASE_HI_OFFSET & 0x7F) >> 2);
509 	mask |= 1 << ((mmDMA_QM_2_CP_LDMA_COMMIT_OFFSET & 0x7F) >> 2);
510 
511 	WREG32(pb_addr + word_offset, ~mask);
512 
513 	goya_pb_set_block(hdev, mmDMA_CH_2_BASE);
514 
515 	pb_addr = (mmDMA_QM_3_GLBL_CFG0 & ~0xFFF) + PROT_BITS_OFFS;
516 	word_offset = ((mmDMA_QM_3_GLBL_CFG0 & PROT_BITS_OFFS) >> 7) << 2;
517 	mask = 1 << ((mmDMA_QM_3_GLBL_CFG0 & 0x7F) >> 2);
518 	mask |= 1 << ((mmDMA_QM_3_GLBL_CFG1 & 0x7F) >> 2);
519 	mask |= 1 << ((mmDMA_QM_3_GLBL_PROT & 0x7F) >> 2);
520 	mask |= 1 << ((mmDMA_QM_3_GLBL_ERR_CFG & 0x7F) >> 2);
521 	mask |= 1 << ((mmDMA_QM_3_GLBL_ERR_ADDR_LO & 0x7F) >> 2);
522 	mask |= 1 << ((mmDMA_QM_3_GLBL_ERR_ADDR_HI & 0x7F) >> 2);
523 	mask |= 1 << ((mmDMA_QM_3_GLBL_ERR_WDATA & 0x7F) >> 2);
524 	mask |= 1 << ((mmDMA_QM_3_GLBL_SECURE_PROPS & 0x7F) >> 2);
525 	mask |= 1 << ((mmDMA_QM_3_GLBL_NON_SECURE_PROPS & 0x7F) >> 2);
526 	mask |= 1 << ((mmDMA_QM_3_GLBL_STS0 & 0x7F) >> 2);
527 	mask |= 1 << ((mmDMA_QM_3_GLBL_STS1 & 0x7F) >> 2);
528 	mask |= 1 << ((mmDMA_QM_3_PQ_BASE_LO & 0x7F) >> 2);
529 	mask |= 1 << ((mmDMA_QM_3_PQ_BASE_HI & 0x7F) >> 2);
530 	mask |= 1 << ((mmDMA_QM_3_PQ_SIZE & 0x7F) >> 2);
531 	mask |= 1 << ((mmDMA_QM_3_PQ_PI & 0x7F) >> 2);
532 	mask |= 1 << ((mmDMA_QM_3_PQ_CI & 0x7F) >> 2);
533 	mask |= 1 << ((mmDMA_QM_3_PQ_CFG0 & 0x7F) >> 2);
534 	mask |= 1 << ((mmDMA_QM_3_PQ_CFG1 & 0x7F) >> 2);
535 	mask |= 1 << ((mmDMA_QM_3_PQ_ARUSER & 0x7F) >> 2);
536 
537 	WREG32(pb_addr + word_offset, ~mask);
538 
539 	pb_addr = (mmDMA_QM_3_PQ_PUSH0 & ~0xFFF) + PROT_BITS_OFFS;
540 	word_offset = ((mmDMA_QM_3_PQ_PUSH0 & PROT_BITS_OFFS) >> 7) << 2;
541 	mask = 1 << ((mmDMA_QM_3_PQ_PUSH0 & 0x7F) >> 2);
542 	mask |= 1 << ((mmDMA_QM_3_PQ_PUSH1 & 0x7F) >> 2);
543 	mask |= 1 << ((mmDMA_QM_3_PQ_PUSH2 & 0x7F) >> 2);
544 	mask |= 1 << ((mmDMA_QM_3_PQ_PUSH3 & 0x7F) >> 2);
545 	mask |= 1 << ((mmDMA_QM_3_PQ_STS0 & 0x7F) >> 2);
546 	mask |= 1 << ((mmDMA_QM_3_PQ_STS1 & 0x7F) >> 2);
547 	mask |= 1 << ((mmDMA_QM_3_PQ_RD_RATE_LIM_EN & 0x7F) >> 2);
548 	mask |= 1 << ((mmDMA_QM_3_PQ_RD_RATE_LIM_RST_TOKEN & 0x7F) >> 2);
549 	mask |= 1 << ((mmDMA_QM_3_PQ_RD_RATE_LIM_SAT & 0x7F) >> 2);
550 	mask |= 1 << ((mmDMA_QM_3_PQ_RD_RATE_LIM_TOUT & 0x7F) >> 2);
551 	mask |= 1 << ((mmDMA_QM_3_CQ_CFG0 & 0x7F) >> 2);
552 	mask |= 1 << ((mmDMA_QM_3_CQ_CFG1 & 0x7F) >> 2);
553 	mask |= 1 << ((mmDMA_QM_3_CQ_ARUSER & 0x7F) >> 2);
554 	mask |= 1 << ((mmDMA_QM_3_CQ_PTR_LO & 0x7F) >> 2);
555 	mask |= 1 << ((mmDMA_QM_3_CQ_PTR_HI & 0x7F) >> 2);
556 	mask |= 1 << ((mmDMA_QM_3_CQ_TSIZE & 0x7F) >> 2);
557 	mask |= 1 << ((mmDMA_QM_3_CQ_CTL & 0x7F) >> 2);
558 	mask |= 1 << ((mmDMA_QM_3_CQ_PTR_LO_STS & 0x7F) >> 2);
559 	mask |= 1 << ((mmDMA_QM_3_CQ_PTR_HI_STS & 0x7F) >> 2);
560 	mask |= 1 << ((mmDMA_QM_3_CQ_TSIZE_STS & 0x7F) >> 2);
561 	mask |= 1 << ((mmDMA_QM_3_CQ_CTL_STS & 0x7F) >> 2);
562 	mask |= 1 << ((mmDMA_QM_3_CQ_STS0 & 0x7F) >> 2);
563 	mask |= 1 << ((mmDMA_QM_3_CQ_STS1 & 0x7F) >> 2);
564 	mask |= 1 << ((mmDMA_QM_3_CQ_RD_RATE_LIM_EN & 0x7F) >> 2);
565 	mask |= 1 << ((mmDMA_QM_3_CQ_RD_RATE_LIM_RST_TOKEN & 0x7F) >> 2);
566 	mask |= 1 << ((mmDMA_QM_3_CQ_RD_RATE_LIM_SAT & 0x7F) >> 2);
567 	mask |= 1 << ((mmDMA_QM_3_CQ_RD_RATE_LIM_TOUT & 0x7F) >> 2);
568 
569 	WREG32(pb_addr + word_offset, ~mask);
570 
571 	pb_addr = (mmDMA_QM_3_CQ_IFIFO_CNT & ~0xFFF) + PROT_BITS_OFFS;
572 	word_offset = ((mmDMA_QM_3_CQ_IFIFO_CNT & PROT_BITS_OFFS) >> 7) << 2;
573 	mask = 1 << ((mmDMA_QM_3_CQ_IFIFO_CNT & 0x7F) >> 2);
574 	mask |= 1 << ((mmDMA_QM_3_CP_MSG_BASE0_ADDR_LO & 0x7F) >> 2);
575 	mask |= 1 << ((mmDMA_QM_3_CP_MSG_BASE0_ADDR_HI & 0x7F) >> 2);
576 	mask |= 1 << ((mmDMA_QM_3_CP_MSG_BASE1_ADDR_LO & 0x7F) >> 2);
577 	mask |= 1 << ((mmDMA_QM_3_CP_MSG_BASE1_ADDR_HI & 0x7F) >> 2);
578 	mask |= 1 << ((mmDMA_QM_3_CP_MSG_BASE2_ADDR_LO & 0x7F) >> 2);
579 	mask |= 1 << ((mmDMA_QM_3_CP_MSG_BASE2_ADDR_HI & 0x7F) >> 2);
580 	mask |= 1 << ((mmDMA_QM_3_CP_MSG_BASE3_ADDR_LO & 0x7F) >> 2);
581 	mask |= 1 << ((mmDMA_QM_3_CP_MSG_BASE3_ADDR_HI & 0x7F) >> 2);
582 	mask |= 1 << ((mmDMA_QM_3_CP_LDMA_TSIZE_OFFSET & 0x7F) >> 2);
583 	mask |= 1 << ((mmDMA_QM_3_CP_LDMA_SRC_BASE_LO_OFFSET & 0x7F) >> 2);
584 	mask |= 1 << ((mmDMA_QM_3_CP_LDMA_SRC_BASE_HI_OFFSET & 0x7F) >> 2);
585 	mask |= 1 << ((mmDMA_QM_3_CP_LDMA_DST_BASE_LO_OFFSET & 0x7F) >> 2);
586 	mask |= 1 << ((mmDMA_QM_3_CP_LDMA_DST_BASE_HI_OFFSET & 0x7F) >> 2);
587 	mask |= 1 << ((mmDMA_QM_3_CP_LDMA_COMMIT_OFFSET & 0x7F) >> 2);
588 
589 	WREG32(pb_addr + word_offset, ~mask);
590 
591 	goya_pb_set_block(hdev, mmDMA_CH_3_BASE);
592 
593 	pb_addr = (mmDMA_QM_4_GLBL_CFG0 & ~0xFFF) + PROT_BITS_OFFS;
594 	word_offset = ((mmDMA_QM_4_GLBL_CFG0 & PROT_BITS_OFFS) >> 7) << 2;
595 	mask = 1 << ((mmDMA_QM_4_GLBL_CFG0 & 0x7F) >> 2);
596 	mask |= 1 << ((mmDMA_QM_4_GLBL_CFG1 & 0x7F) >> 2);
597 	mask |= 1 << ((mmDMA_QM_4_GLBL_PROT & 0x7F) >> 2);
598 	mask |= 1 << ((mmDMA_QM_4_GLBL_ERR_CFG & 0x7F) >> 2);
599 	mask |= 1 << ((mmDMA_QM_4_GLBL_ERR_ADDR_LO & 0x7F) >> 2);
600 	mask |= 1 << ((mmDMA_QM_4_GLBL_ERR_ADDR_HI & 0x7F) >> 2);
601 	mask |= 1 << ((mmDMA_QM_4_GLBL_ERR_WDATA & 0x7F) >> 2);
602 	mask |= 1 << ((mmDMA_QM_4_GLBL_SECURE_PROPS & 0x7F) >> 2);
603 	mask |= 1 << ((mmDMA_QM_4_GLBL_NON_SECURE_PROPS & 0x7F) >> 2);
604 	mask |= 1 << ((mmDMA_QM_4_GLBL_STS0 & 0x7F) >> 2);
605 	mask |= 1 << ((mmDMA_QM_4_GLBL_STS1 & 0x7F) >> 2);
606 	mask |= 1 << ((mmDMA_QM_4_PQ_BASE_LO & 0x7F) >> 2);
607 	mask |= 1 << ((mmDMA_QM_4_PQ_BASE_HI & 0x7F) >> 2);
608 	mask |= 1 << ((mmDMA_QM_4_PQ_SIZE & 0x7F) >> 2);
609 	mask |= 1 << ((mmDMA_QM_4_PQ_PI & 0x7F) >> 2);
610 	mask |= 1 << ((mmDMA_QM_4_PQ_CI & 0x7F) >> 2);
611 	mask |= 1 << ((mmDMA_QM_4_PQ_CFG0 & 0x7F) >> 2);
612 	mask |= 1 << ((mmDMA_QM_4_PQ_CFG1 & 0x7F) >> 2);
613 	mask |= 1 << ((mmDMA_QM_4_PQ_ARUSER & 0x7F) >> 2);
614 
615 	WREG32(pb_addr + word_offset, ~mask);
616 
617 	pb_addr = (mmDMA_QM_4_PQ_PUSH0 & ~0xFFF) + PROT_BITS_OFFS;
618 	word_offset = ((mmDMA_QM_4_PQ_PUSH0 & PROT_BITS_OFFS) >> 7) << 2;
619 	mask = 1 << ((mmDMA_QM_4_PQ_PUSH0 & 0x7F) >> 2);
620 	mask |= 1 << ((mmDMA_QM_4_PQ_PUSH1 & 0x7F) >> 2);
621 	mask |= 1 << ((mmDMA_QM_4_PQ_PUSH2 & 0x7F) >> 2);
622 	mask |= 1 << ((mmDMA_QM_4_PQ_PUSH3 & 0x7F) >> 2);
623 	mask |= 1 << ((mmDMA_QM_4_PQ_STS0 & 0x7F) >> 2);
624 	mask |= 1 << ((mmDMA_QM_4_PQ_STS1 & 0x7F) >> 2);
625 	mask |= 1 << ((mmDMA_QM_4_PQ_RD_RATE_LIM_EN & 0x7F) >> 2);
626 	mask |= 1 << ((mmDMA_QM_4_PQ_RD_RATE_LIM_RST_TOKEN & 0x7F) >> 2);
627 	mask |= 1 << ((mmDMA_QM_4_PQ_RD_RATE_LIM_SAT & 0x7F) >> 2);
628 	mask |= 1 << ((mmDMA_QM_4_PQ_RD_RATE_LIM_TOUT & 0x7F) >> 2);
629 	mask |= 1 << ((mmDMA_QM_4_CQ_CFG0 & 0x7F) >> 2);
630 	mask |= 1 << ((mmDMA_QM_4_CQ_CFG1 & 0x7F) >> 2);
631 	mask |= 1 << ((mmDMA_QM_4_CQ_ARUSER & 0x7F) >> 2);
632 	mask |= 1 << ((mmDMA_QM_4_CQ_PTR_LO & 0x7F) >> 2);
633 	mask |= 1 << ((mmDMA_QM_4_CQ_PTR_HI & 0x7F) >> 2);
634 	mask |= 1 << ((mmDMA_QM_4_CQ_TSIZE & 0x7F) >> 2);
635 	mask |= 1 << ((mmDMA_QM_4_CQ_CTL & 0x7F) >> 2);
636 	mask |= 1 << ((mmDMA_QM_4_CQ_PTR_LO_STS & 0x7F) >> 2);
637 	mask |= 1 << ((mmDMA_QM_4_CQ_PTR_HI_STS & 0x7F) >> 2);
638 	mask |= 1 << ((mmDMA_QM_4_CQ_TSIZE_STS & 0x7F) >> 2);
639 	mask |= 1 << ((mmDMA_QM_4_CQ_CTL_STS & 0x7F) >> 2);
640 	mask |= 1 << ((mmDMA_QM_4_CQ_STS0 & 0x7F) >> 2);
641 	mask |= 1 << ((mmDMA_QM_4_CQ_STS1 & 0x7F) >> 2);
642 	mask |= 1 << ((mmDMA_QM_4_CQ_RD_RATE_LIM_EN & 0x7F) >> 2);
643 	mask |= 1 << ((mmDMA_QM_4_CQ_RD_RATE_LIM_RST_TOKEN & 0x7F) >> 2);
644 	mask |= 1 << ((mmDMA_QM_4_CQ_RD_RATE_LIM_SAT & 0x7F) >> 2);
645 	mask |= 1 << ((mmDMA_QM_4_CQ_RD_RATE_LIM_TOUT & 0x7F) >> 2);
646 
647 	WREG32(pb_addr + word_offset, ~mask);
648 
649 	pb_addr = (mmDMA_QM_4_CQ_IFIFO_CNT & ~0xFFF) + PROT_BITS_OFFS;
650 	word_offset = ((mmDMA_QM_4_CQ_IFIFO_CNT & PROT_BITS_OFFS) >> 7) << 2;
651 	mask = 1 << ((mmDMA_QM_4_CQ_IFIFO_CNT & 0x7F) >> 2);
652 	mask |= 1 << ((mmDMA_QM_4_CP_MSG_BASE0_ADDR_LO & 0x7F) >> 2);
653 	mask |= 1 << ((mmDMA_QM_4_CP_MSG_BASE0_ADDR_HI & 0x7F) >> 2);
654 	mask |= 1 << ((mmDMA_QM_4_CP_MSG_BASE1_ADDR_LO & 0x7F) >> 2);
655 	mask |= 1 << ((mmDMA_QM_4_CP_MSG_BASE1_ADDR_HI & 0x7F) >> 2);
656 	mask |= 1 << ((mmDMA_QM_4_CP_MSG_BASE2_ADDR_LO & 0x7F) >> 2);
657 	mask |= 1 << ((mmDMA_QM_4_CP_MSG_BASE2_ADDR_HI & 0x7F) >> 2);
658 	mask |= 1 << ((mmDMA_QM_4_CP_MSG_BASE3_ADDR_LO & 0x7F) >> 2);
659 	mask |= 1 << ((mmDMA_QM_4_CP_MSG_BASE3_ADDR_HI & 0x7F) >> 2);
660 	mask |= 1 << ((mmDMA_QM_4_CP_LDMA_TSIZE_OFFSET & 0x7F) >> 2);
661 	mask |= 1 << ((mmDMA_QM_4_CP_LDMA_SRC_BASE_LO_OFFSET & 0x7F) >> 2);
662 	mask |= 1 << ((mmDMA_QM_4_CP_LDMA_SRC_BASE_HI_OFFSET & 0x7F) >> 2);
663 	mask |= 1 << ((mmDMA_QM_4_CP_LDMA_DST_BASE_LO_OFFSET & 0x7F) >> 2);
664 	mask |= 1 << ((mmDMA_QM_4_CP_LDMA_DST_BASE_HI_OFFSET & 0x7F) >> 2);
665 	mask |= 1 << ((mmDMA_QM_4_CP_LDMA_COMMIT_OFFSET & 0x7F) >> 2);
666 
667 	WREG32(pb_addr + word_offset, ~mask);
668 
669 	goya_pb_set_block(hdev, mmDMA_CH_4_BASE);
670 }
671 
672 static void goya_init_tpc_protection_bits(struct hl_device *hdev)
673 {
674 	u32 pb_addr, mask;
675 	u8 word_offset;
676 
677 	goya_pb_set_block(hdev, mmTPC0_RD_REGULATOR_BASE);
678 	goya_pb_set_block(hdev, mmTPC0_WR_REGULATOR_BASE);
679 
680 	pb_addr = (mmTPC0_CFG_SEMAPHORE & ~0xFFF) + PROT_BITS_OFFS;
681 	word_offset = ((mmTPC0_CFG_SEMAPHORE & PROT_BITS_OFFS) >> 7) << 2;
682 
683 	mask = 1 << ((mmTPC0_CFG_SEMAPHORE & 0x7F) >> 2);
684 	mask |= 1 << ((mmTPC0_CFG_VFLAGS & 0x7F) >> 2);
685 	mask |= 1 << ((mmTPC0_CFG_SFLAGS & 0x7F) >> 2);
686 	mask |= 1 << ((mmTPC0_CFG_STATUS & 0x7F) >> 2);
687 
688 	WREG32(pb_addr + word_offset, ~mask);
689 
690 	pb_addr = (mmTPC0_CFG_CFG_BASE_ADDRESS_HIGH & ~0xFFF) + PROT_BITS_OFFS;
691 	word_offset = ((mmTPC0_CFG_CFG_BASE_ADDRESS_HIGH &
692 			PROT_BITS_OFFS) >> 7) << 2;
693 	mask = 1 << ((mmTPC0_CFG_CFG_BASE_ADDRESS_HIGH & 0x7F) >> 2);
694 	mask |= 1 << ((mmTPC0_CFG_CFG_SUBTRACT_VALUE & 0x7F) >> 2);
695 	mask |= 1 << ((mmTPC0_CFG_SM_BASE_ADDRESS_LOW & 0x7F) >> 2);
696 	mask |= 1 << ((mmTPC0_CFG_SM_BASE_ADDRESS_HIGH & 0x7F) >> 2);
697 	mask |= 1 << ((mmTPC0_CFG_TPC_STALL & 0x7F) >> 2);
698 	mask |= 1 << ((mmTPC0_CFG_MSS_CONFIG & 0x7F) >> 2);
699 	mask |= 1 << ((mmTPC0_CFG_TPC_INTR_CAUSE & 0x7F) >> 2);
700 	mask |= 1 << ((mmTPC0_CFG_TPC_INTR_MASK & 0x7F) >> 2);
701 
702 	WREG32(pb_addr + word_offset, ~mask);
703 
704 	pb_addr = (mmTPC0_CFG_ARUSER & ~0xFFF) + PROT_BITS_OFFS;
705 	word_offset = ((mmTPC0_CFG_ARUSER & PROT_BITS_OFFS) >> 7) << 2;
706 	mask = 1 << ((mmTPC0_CFG_ARUSER & 0x7F) >> 2);
707 	mask |= 1 << ((mmTPC0_CFG_AWUSER & 0x7F) >> 2);
708 
709 	WREG32(pb_addr + word_offset, ~mask);
710 
711 	pb_addr = (mmTPC0_CFG_FUNC_MBIST_CNTRL & ~0xFFF) + PROT_BITS_OFFS;
712 	word_offset = ((mmTPC0_CFG_FUNC_MBIST_CNTRL &
713 			PROT_BITS_OFFS) >> 7) << 2;
714 	mask = 1 << ((mmTPC0_CFG_FUNC_MBIST_CNTRL & 0x7F) >> 2);
715 	mask |= 1 << ((mmTPC0_CFG_FUNC_MBIST_PAT & 0x7F) >> 2);
716 	mask |= 1 << ((mmTPC0_CFG_FUNC_MBIST_MEM_0 & 0x7F) >> 2);
717 	mask |= 1 << ((mmTPC0_CFG_FUNC_MBIST_MEM_1 & 0x7F) >> 2);
718 	mask |= 1 << ((mmTPC0_CFG_FUNC_MBIST_MEM_2 & 0x7F) >> 2);
719 	mask |= 1 << ((mmTPC0_CFG_FUNC_MBIST_MEM_3 & 0x7F) >> 2);
720 	mask |= 1 << ((mmTPC0_CFG_FUNC_MBIST_MEM_4 & 0x7F) >> 2);
721 	mask |= 1 << ((mmTPC0_CFG_FUNC_MBIST_MEM_5 & 0x7F) >> 2);
722 	mask |= 1 << ((mmTPC0_CFG_FUNC_MBIST_MEM_6 & 0x7F) >> 2);
723 	mask |= 1 << ((mmTPC0_CFG_FUNC_MBIST_MEM_7 & 0x7F) >> 2);
724 	mask |= 1 << ((mmTPC0_CFG_FUNC_MBIST_MEM_8 & 0x7F) >> 2);
725 	mask |= 1 << ((mmTPC0_CFG_FUNC_MBIST_MEM_9 & 0x7F) >> 2);
726 
727 	WREG32(pb_addr + word_offset, ~mask);
728 
729 	pb_addr = (mmTPC0_QM_GLBL_CFG0 & ~0xFFF) + PROT_BITS_OFFS;
730 	word_offset = ((mmTPC0_QM_GLBL_CFG0 & PROT_BITS_OFFS) >> 7) << 2;
731 	mask = 1 << ((mmTPC0_QM_GLBL_CFG0 & 0x7F) >> 2);
732 	mask |= 1 << ((mmTPC0_QM_GLBL_CFG1 & 0x7F) >> 2);
733 	mask |= 1 << ((mmTPC0_QM_GLBL_PROT & 0x7F) >> 2);
734 	mask |= 1 << ((mmTPC0_QM_GLBL_ERR_CFG & 0x7F) >> 2);
735 	mask |= 1 << ((mmTPC0_QM_GLBL_ERR_ADDR_LO & 0x7F) >> 2);
736 	mask |= 1 << ((mmTPC0_QM_GLBL_ERR_ADDR_HI & 0x7F) >> 2);
737 	mask |= 1 << ((mmTPC0_QM_GLBL_ERR_WDATA & 0x7F) >> 2);
738 	mask |= 1 << ((mmTPC0_QM_GLBL_SECURE_PROPS & 0x7F) >> 2);
739 	mask |= 1 << ((mmTPC0_QM_GLBL_NON_SECURE_PROPS & 0x7F) >> 2);
740 	mask |= 1 << ((mmTPC0_QM_GLBL_STS0 & 0x7F) >> 2);
741 	mask |= 1 << ((mmTPC0_QM_GLBL_STS1 & 0x7F) >> 2);
742 	mask |= 1 << ((mmTPC0_QM_PQ_BASE_LO & 0x7F) >> 2);
743 	mask |= 1 << ((mmTPC0_QM_PQ_BASE_HI & 0x7F) >> 2);
744 	mask |= 1 << ((mmTPC0_QM_PQ_SIZE & 0x7F) >> 2);
745 	mask |= 1 << ((mmTPC0_QM_PQ_PI & 0x7F) >> 2);
746 	mask |= 1 << ((mmTPC0_QM_PQ_CI & 0x7F) >> 2);
747 	mask |= 1 << ((mmTPC0_QM_PQ_CFG0 & 0x7F) >> 2);
748 	mask |= 1 << ((mmTPC0_QM_PQ_CFG1 & 0x7F) >> 2);
749 	mask |= 1 << ((mmTPC0_QM_PQ_ARUSER & 0x7F) >> 2);
750 
751 	WREG32(pb_addr + word_offset, ~mask);
752 
753 	pb_addr = (mmTPC0_QM_PQ_PUSH0 & ~0xFFF) + PROT_BITS_OFFS;
754 	word_offset = ((mmTPC0_QM_PQ_PUSH0 & PROT_BITS_OFFS) >> 7) << 2;
755 	mask = 1 << ((mmTPC0_QM_PQ_PUSH0 & 0x7F) >> 2);
756 	mask |= 1 << ((mmTPC0_QM_PQ_PUSH1 & 0x7F) >> 2);
757 	mask |= 1 << ((mmTPC0_QM_PQ_PUSH2 & 0x7F) >> 2);
758 	mask |= 1 << ((mmTPC0_QM_PQ_PUSH3 & 0x7F) >> 2);
759 	mask |= 1 << ((mmTPC0_QM_PQ_STS0 & 0x7F) >> 2);
760 	mask |= 1 << ((mmTPC0_QM_PQ_STS1 & 0x7F) >> 2);
761 	mask |= 1 << ((mmTPC0_QM_PQ_RD_RATE_LIM_EN & 0x7F) >> 2);
762 	mask |= 1 << ((mmTPC0_QM_PQ_RD_RATE_LIM_RST_TOKEN & 0x7F) >> 2);
763 	mask |= 1 << ((mmTPC0_QM_PQ_RD_RATE_LIM_SAT & 0x7F) >> 2);
764 	mask |= 1 << ((mmTPC0_QM_PQ_RD_RATE_LIM_TOUT & 0x7F) >> 2);
765 	mask |= 1 << ((mmTPC0_QM_CQ_CFG0 & 0x7F) >> 2);
766 	mask |= 1 << ((mmTPC0_QM_CQ_CFG1 & 0x7F) >> 2);
767 	mask |= 1 << ((mmTPC0_QM_CQ_ARUSER & 0x7F) >> 2);
768 	mask |= 1 << ((mmTPC0_QM_CQ_PTR_LO & 0x7F) >> 2);
769 	mask |= 1 << ((mmTPC0_QM_CQ_PTR_HI & 0x7F) >> 2);
770 	mask |= 1 << ((mmTPC0_QM_CQ_TSIZE & 0x7F) >> 2);
771 	mask |= 1 << ((mmTPC0_QM_CQ_CTL & 0x7F) >> 2);
772 	mask |= 1 << ((mmTPC0_QM_CQ_PTR_LO_STS & 0x7F) >> 2);
773 	mask |= 1 << ((mmTPC0_QM_CQ_PTR_HI_STS & 0x7F) >> 2);
774 	mask |= 1 << ((mmTPC0_QM_CQ_TSIZE_STS & 0x7F) >> 2);
775 	mask |= 1 << ((mmTPC0_QM_CQ_CTL_STS & 0x7F) >> 2);
776 	mask |= 1 << ((mmTPC0_QM_CQ_STS0 & 0x7F) >> 2);
777 	mask |= 1 << ((mmTPC0_QM_CQ_STS1 & 0x7F) >> 2);
778 	mask |= 1 << ((mmTPC0_QM_CQ_RD_RATE_LIM_EN & 0x7F) >> 2);
779 	mask |= 1 << ((mmTPC0_QM_CQ_RD_RATE_LIM_RST_TOKEN & 0x7F) >> 2);
780 	mask |= 1 << ((mmTPC0_QM_CQ_RD_RATE_LIM_SAT & 0x7F) >> 2);
781 	mask |= 1 << ((mmTPC0_QM_CQ_RD_RATE_LIM_TOUT & 0x7F) >> 2);
782 
783 	WREG32(pb_addr + word_offset, ~mask);
784 
785 	pb_addr = (mmTPC0_QM_CQ_IFIFO_CNT & ~0xFFF) + PROT_BITS_OFFS;
786 	word_offset = ((mmTPC0_QM_CQ_IFIFO_CNT & PROT_BITS_OFFS) >> 7) << 2;
787 	mask = 1 << ((mmTPC0_QM_CQ_IFIFO_CNT & 0x7F) >> 2);
788 	mask |= 1 << ((mmTPC0_QM_CP_MSG_BASE0_ADDR_LO & 0x7F) >> 2);
789 	mask |= 1 << ((mmTPC0_QM_CP_MSG_BASE0_ADDR_HI & 0x7F) >> 2);
790 	mask |= 1 << ((mmTPC0_QM_CP_MSG_BASE1_ADDR_LO & 0x7F) >> 2);
791 	mask |= 1 << ((mmTPC0_QM_CP_MSG_BASE1_ADDR_HI & 0x7F) >> 2);
792 	mask |= 1 << ((mmTPC0_QM_CP_MSG_BASE2_ADDR_LO & 0x7F) >> 2);
793 	mask |= 1 << ((mmTPC0_QM_CP_MSG_BASE2_ADDR_HI & 0x7F) >> 2);
794 	mask |= 1 << ((mmTPC0_QM_CP_MSG_BASE3_ADDR_LO & 0x7F) >> 2);
795 	mask |= 1 << ((mmTPC0_QM_CP_MSG_BASE3_ADDR_HI & 0x7F) >> 2);
796 	mask |= 1 << ((mmTPC0_QM_CP_LDMA_TSIZE_OFFSET & 0x7F) >> 2);
797 	mask |= 1 << ((mmTPC0_QM_CP_LDMA_SRC_BASE_LO_OFFSET & 0x7F) >> 2);
798 	mask |= 1 << ((mmTPC0_QM_CP_LDMA_SRC_BASE_HI_OFFSET & 0x7F) >> 2);
799 	mask |= 1 << ((mmTPC0_QM_CP_LDMA_DST_BASE_LO_OFFSET & 0x7F) >> 2);
800 	mask |= 1 << ((mmTPC0_QM_CP_LDMA_DST_BASE_HI_OFFSET & 0x7F) >> 2);
801 	mask |= 1 << ((mmTPC0_QM_CP_LDMA_COMMIT_OFFSET & 0x7F) >> 2);
802 
803 	WREG32(pb_addr + word_offset, ~mask);
804 
805 	pb_addr = (mmTPC0_CMDQ_GLBL_CFG0 & ~0xFFF) + PROT_BITS_OFFS;
806 	word_offset = ((mmTPC0_CMDQ_GLBL_CFG0 & PROT_BITS_OFFS) >> 7) << 2;
807 	mask = 1 << ((mmTPC0_CMDQ_GLBL_CFG0 & 0x7F) >> 2);
808 	mask |= 1 << ((mmTPC0_CMDQ_GLBL_CFG1 & 0x7F) >> 2);
809 	mask |= 1 << ((mmTPC0_CMDQ_GLBL_PROT & 0x7F) >> 2);
810 	mask |= 1 << ((mmTPC0_CMDQ_GLBL_ERR_CFG & 0x7F) >> 2);
811 	mask |= 1 << ((mmTPC0_CMDQ_GLBL_ERR_ADDR_LO & 0x7F) >> 2);
812 	mask |= 1 << ((mmTPC0_CMDQ_GLBL_ERR_ADDR_HI & 0x7F) >> 2);
813 	mask |= 1 << ((mmTPC0_CMDQ_GLBL_ERR_WDATA & 0x7F) >> 2);
814 	mask |= 1 << ((mmTPC0_CMDQ_GLBL_SECURE_PROPS & 0x7F) >> 2);
815 	mask |= 1 << ((mmTPC0_CMDQ_GLBL_NON_SECURE_PROPS & 0x7F) >> 2);
816 	mask |= 1 << ((mmTPC0_CMDQ_GLBL_STS0 & 0x7F) >> 2);
817 	mask |= 1 << ((mmTPC0_CMDQ_GLBL_STS1 & 0x7F) >> 2);
818 
819 	WREG32(pb_addr + word_offset, ~mask);
820 
821 	pb_addr = (mmTPC0_CMDQ_CQ_CFG0 & ~0xFFF) + PROT_BITS_OFFS;
822 	word_offset = ((mmTPC0_CMDQ_CQ_CFG0 & PROT_BITS_OFFS) >> 7) << 2;
823 	mask = 1 << ((mmTPC0_CMDQ_CQ_CFG0 & 0x7F) >> 2);
824 	mask |= 1 << ((mmTPC0_CMDQ_CQ_CFG1 & 0x7F) >> 2);
825 	mask |= 1 << ((mmTPC0_CMDQ_CQ_ARUSER & 0x7F) >> 2);
826 	mask |= 1 << ((mmTPC0_CMDQ_CQ_PTR_LO_STS & 0x7F) >> 2);
827 	mask |= 1 << ((mmTPC0_CMDQ_CQ_PTR_HI_STS & 0x7F) >> 2);
828 	mask |= 1 << ((mmTPC0_CMDQ_CQ_TSIZE_STS & 0x7F) >> 2);
829 	mask |= 1 << ((mmTPC0_CMDQ_CQ_CTL_STS & 0x7F) >> 2);
830 	mask |= 1 << ((mmTPC0_CMDQ_CQ_STS0 & 0x7F) >> 2);
831 	mask |= 1 << ((mmTPC0_CMDQ_CQ_STS1 & 0x7F) >> 2);
832 	mask |= 1 << ((mmTPC0_CMDQ_CQ_RD_RATE_LIM_EN & 0x7F) >> 2);
833 	mask |= 1 << ((mmTPC0_CMDQ_CQ_RD_RATE_LIM_RST_TOKEN & 0x7F) >> 2);
834 	mask |= 1 << ((mmTPC0_CMDQ_CQ_RD_RATE_LIM_SAT & 0x7F) >> 2);
835 	mask |= 1 << ((mmTPC0_CMDQ_CQ_RD_RATE_LIM_TOUT & 0x7F) >> 2);
836 
837 	WREG32(pb_addr + word_offset, ~mask);
838 
839 	pb_addr = (mmTPC0_CMDQ_CQ_IFIFO_CNT & ~0xFFF) + PROT_BITS_OFFS;
840 	word_offset = ((mmTPC0_CMDQ_CQ_IFIFO_CNT & PROT_BITS_OFFS) >> 7) << 2;
841 	mask = 1 << ((mmTPC0_CMDQ_CQ_IFIFO_CNT & 0x7F) >> 2);
842 	mask |= 1 << ((mmTPC0_CMDQ_CP_MSG_BASE0_ADDR_LO & 0x7F) >> 2);
843 	mask |= 1 << ((mmTPC0_CMDQ_CP_MSG_BASE0_ADDR_HI & 0x7F) >> 2);
844 	mask |= 1 << ((mmTPC0_CMDQ_CP_MSG_BASE1_ADDR_LO & 0x7F) >> 2);
845 	mask |= 1 << ((mmTPC0_CMDQ_CP_MSG_BASE1_ADDR_HI & 0x7F) >> 2);
846 	mask |= 1 << ((mmTPC0_CMDQ_CP_MSG_BASE2_ADDR_LO & 0x7F) >> 2);
847 	mask |= 1 << ((mmTPC0_CMDQ_CP_MSG_BASE2_ADDR_HI & 0x7F) >> 2);
848 	mask |= 1 << ((mmTPC0_CMDQ_CP_MSG_BASE3_ADDR_LO & 0x7F) >> 2);
849 	mask |= 1 << ((mmTPC0_CMDQ_CP_MSG_BASE3_ADDR_HI & 0x7F) >> 2);
850 	mask |= 1 << ((mmTPC0_CMDQ_CP_LDMA_TSIZE_OFFSET & 0x7F) >> 2);
851 	mask |= 1 << ((mmTPC0_CMDQ_CP_LDMA_SRC_BASE_LO_OFFSET & 0x7F) >> 2);
852 	mask |= 1 << ((mmTPC0_CMDQ_CP_LDMA_SRC_BASE_HI_OFFSET & 0x7F) >> 2);
853 	mask |= 1 << ((mmTPC0_CMDQ_CP_LDMA_DST_BASE_LO_OFFSET & 0x7F) >> 2);
854 	mask |= 1 << ((mmTPC0_CMDQ_CP_LDMA_DST_BASE_HI_OFFSET & 0x7F) >> 2);
855 	mask |= 1 << ((mmTPC0_CMDQ_CP_LDMA_COMMIT_OFFSET & 0x7F) >> 2);
856 	mask |= 1 << ((mmTPC0_CMDQ_CP_STS & 0x7F) >> 2);
857 	mask |= 1 << ((mmTPC0_CMDQ_CP_CURRENT_INST_LO & 0x7F) >> 2);
858 
859 	WREG32(pb_addr + word_offset, ~mask);
860 
861 	pb_addr = (mmTPC0_CMDQ_CP_CURRENT_INST_HI & ~0xFFF) + PROT_BITS_OFFS;
862 	word_offset = ((mmTPC0_CMDQ_CP_CURRENT_INST_HI & PROT_BITS_OFFS) >> 7)
863 			<< 2;
864 	mask = 1 << ((mmTPC0_CMDQ_CP_CURRENT_INST_HI & 0x7F) >> 2);
865 	mask |= 1 << ((mmTPC0_CMDQ_CP_BARRIER_CFG & 0x7F) >> 2);
866 	mask |= 1 << ((mmTPC0_CMDQ_CP_DBG_0 & 0x7F) >> 2);
867 	mask |= 1 << ((mmTPC0_CMDQ_CQ_BUF_ADDR & 0x7F) >> 2);
868 	mask |= 1 << ((mmTPC0_CMDQ_CQ_BUF_RDATA & 0x7F) >> 2);
869 
870 	WREG32(pb_addr + word_offset, ~mask);
871 
872 	goya_pb_set_block(hdev, mmTPC1_RTR_BASE);
873 	goya_pb_set_block(hdev, mmTPC1_RD_REGULATOR_BASE);
874 	goya_pb_set_block(hdev, mmTPC1_WR_REGULATOR_BASE);
875 
876 	pb_addr = (mmTPC1_CFG_SEMAPHORE & ~0xFFF) + PROT_BITS_OFFS;
877 	word_offset = ((mmTPC1_CFG_SEMAPHORE & PROT_BITS_OFFS) >> 7) << 2;
878 
879 	mask = 1 << ((mmTPC1_CFG_SEMAPHORE & 0x7F) >> 2);
880 	mask |= 1 << ((mmTPC1_CFG_VFLAGS & 0x7F) >> 2);
881 	mask |= 1 << ((mmTPC1_CFG_SFLAGS & 0x7F) >> 2);
882 	mask |= 1 << ((mmTPC1_CFG_STATUS & 0x7F) >> 2);
883 
884 	WREG32(pb_addr + word_offset, ~mask);
885 
886 	pb_addr = (mmTPC1_CFG_CFG_BASE_ADDRESS_HIGH & ~0xFFF) + PROT_BITS_OFFS;
887 	word_offset = ((mmTPC1_CFG_CFG_BASE_ADDRESS_HIGH &
888 			PROT_BITS_OFFS) >> 7) << 2;
889 	mask = 1 << ((mmTPC1_CFG_CFG_BASE_ADDRESS_HIGH & 0x7F) >> 2);
890 	mask |= 1 << ((mmTPC1_CFG_CFG_SUBTRACT_VALUE & 0x7F) >> 2);
891 	mask |= 1 << ((mmTPC1_CFG_SM_BASE_ADDRESS_LOW & 0x7F) >> 2);
892 	mask |= 1 << ((mmTPC1_CFG_SM_BASE_ADDRESS_HIGH & 0x7F) >> 2);
893 	mask |= 1 << ((mmTPC1_CFG_TPC_STALL & 0x7F) >> 2);
894 	mask |= 1 << ((mmTPC1_CFG_MSS_CONFIG & 0x7F) >> 2);
895 	mask |= 1 << ((mmTPC1_CFG_TPC_INTR_CAUSE & 0x7F) >> 2);
896 	mask |= 1 << ((mmTPC1_CFG_TPC_INTR_MASK & 0x7F) >> 2);
897 
898 	WREG32(pb_addr + word_offset, ~mask);
899 
900 	pb_addr = (mmTPC1_CFG_ARUSER & ~0xFFF) + PROT_BITS_OFFS;
901 	word_offset = ((mmTPC1_CFG_ARUSER & PROT_BITS_OFFS) >> 7) << 2;
902 	mask = 1 << ((mmTPC1_CFG_ARUSER & 0x7F) >> 2);
903 	mask |= 1 << ((mmTPC1_CFG_AWUSER & 0x7F) >> 2);
904 
905 	WREG32(pb_addr + word_offset, ~mask);
906 
907 	pb_addr = (mmTPC1_CFG_FUNC_MBIST_CNTRL & ~0xFFF) + PROT_BITS_OFFS;
908 	word_offset = ((mmTPC1_CFG_FUNC_MBIST_CNTRL & PROT_BITS_OFFS) >> 7)
909 			<< 2;
910 	mask = 1 << ((mmTPC1_CFG_FUNC_MBIST_CNTRL & 0x7F) >> 2);
911 	mask |= 1 << ((mmTPC1_CFG_FUNC_MBIST_PAT & 0x7F) >> 2);
912 	mask |= 1 << ((mmTPC1_CFG_FUNC_MBIST_MEM_0 & 0x7F) >> 2);
913 	mask |= 1 << ((mmTPC1_CFG_FUNC_MBIST_MEM_1 & 0x7F) >> 2);
914 	mask |= 1 << ((mmTPC1_CFG_FUNC_MBIST_MEM_2 & 0x7F) >> 2);
915 	mask |= 1 << ((mmTPC1_CFG_FUNC_MBIST_MEM_3 & 0x7F) >> 2);
916 	mask |= 1 << ((mmTPC1_CFG_FUNC_MBIST_MEM_4 & 0x7F) >> 2);
917 	mask |= 1 << ((mmTPC1_CFG_FUNC_MBIST_MEM_5 & 0x7F) >> 2);
918 	mask |= 1 << ((mmTPC1_CFG_FUNC_MBIST_MEM_6 & 0x7F) >> 2);
919 	mask |= 1 << ((mmTPC1_CFG_FUNC_MBIST_MEM_7 & 0x7F) >> 2);
920 	mask |= 1 << ((mmTPC1_CFG_FUNC_MBIST_MEM_8 & 0x7F) >> 2);
921 	mask |= 1 << ((mmTPC1_CFG_FUNC_MBIST_MEM_9 & 0x7F) >> 2);
922 
923 	WREG32(pb_addr + word_offset, ~mask);
924 
925 	pb_addr = (mmTPC1_QM_GLBL_CFG0 & ~0xFFF) + PROT_BITS_OFFS;
926 	word_offset = ((mmTPC1_QM_GLBL_CFG0 & PROT_BITS_OFFS) >> 7) << 2;
927 	mask = 1 << ((mmTPC1_QM_GLBL_CFG0 & 0x7F) >> 2);
928 	mask |= 1 << ((mmTPC1_QM_GLBL_CFG1 & 0x7F) >> 2);
929 	mask |= 1 << ((mmTPC1_QM_GLBL_PROT & 0x7F) >> 2);
930 	mask |= 1 << ((mmTPC1_QM_GLBL_ERR_CFG & 0x7F) >> 2);
931 	mask |= 1 << ((mmTPC1_QM_GLBL_ERR_ADDR_LO & 0x7F) >> 2);
932 	mask |= 1 << ((mmTPC1_QM_GLBL_ERR_ADDR_HI & 0x7F) >> 2);
933 	mask |= 1 << ((mmTPC1_QM_GLBL_ERR_WDATA & 0x7F) >> 2);
934 	mask |= 1 << ((mmTPC1_QM_GLBL_SECURE_PROPS & 0x7F) >> 2);
935 	mask |= 1 << ((mmTPC1_QM_GLBL_NON_SECURE_PROPS & 0x7F) >> 2);
936 	mask |= 1 << ((mmTPC1_QM_GLBL_STS0 & 0x7F) >> 2);
937 	mask |= 1 << ((mmTPC1_QM_GLBL_STS1 & 0x7F) >> 2);
938 	mask |= 1 << ((mmTPC1_QM_PQ_BASE_LO & 0x7F) >> 2);
939 	mask |= 1 << ((mmTPC1_QM_PQ_BASE_HI & 0x7F) >> 2);
940 	mask |= 1 << ((mmTPC1_QM_PQ_SIZE & 0x7F) >> 2);
941 	mask |= 1 << ((mmTPC1_QM_PQ_PI & 0x7F) >> 2);
942 	mask |= 1 << ((mmTPC1_QM_PQ_CI & 0x7F) >> 2);
943 	mask |= 1 << ((mmTPC1_QM_PQ_CFG0 & 0x7F) >> 2);
944 	mask |= 1 << ((mmTPC1_QM_PQ_CFG1 & 0x7F) >> 2);
945 	mask |= 1 << ((mmTPC1_QM_PQ_ARUSER & 0x7F) >> 2);
946 
947 	WREG32(pb_addr + word_offset, ~mask);
948 
949 	pb_addr = (mmTPC1_QM_PQ_PUSH0 & ~0xFFF) + PROT_BITS_OFFS;
950 	word_offset = ((mmTPC1_QM_PQ_PUSH0 & PROT_BITS_OFFS) >> 7) << 2;
951 	mask = 1 << ((mmTPC1_QM_PQ_PUSH0 & 0x7F) >> 2);
952 	mask |= 1 << ((mmTPC1_QM_PQ_PUSH1 & 0x7F) >> 2);
953 	mask |= 1 << ((mmTPC1_QM_PQ_PUSH2 & 0x7F) >> 2);
954 	mask |= 1 << ((mmTPC1_QM_PQ_PUSH3 & 0x7F) >> 2);
955 	mask |= 1 << ((mmTPC1_QM_PQ_STS0 & 0x7F) >> 2);
956 	mask |= 1 << ((mmTPC1_QM_PQ_STS1 & 0x7F) >> 2);
957 	mask |= 1 << ((mmTPC1_QM_PQ_RD_RATE_LIM_EN & 0x7F) >> 2);
958 	mask |= 1 << ((mmTPC1_QM_PQ_RD_RATE_LIM_RST_TOKEN & 0x7F) >> 2);
959 	mask |= 1 << ((mmTPC1_QM_PQ_RD_RATE_LIM_SAT & 0x7F) >> 2);
960 	mask |= 1 << ((mmTPC1_QM_PQ_RD_RATE_LIM_TOUT & 0x7F) >> 2);
961 	mask |= 1 << ((mmTPC1_QM_CQ_CFG0 & 0x7F) >> 2);
962 	mask |= 1 << ((mmTPC1_QM_CQ_CFG1 & 0x7F) >> 2);
963 	mask |= 1 << ((mmTPC1_QM_CQ_ARUSER & 0x7F) >> 2);
964 	mask |= 1 << ((mmTPC1_QM_CQ_PTR_LO & 0x7F) >> 2);
965 	mask |= 1 << ((mmTPC1_QM_CQ_PTR_HI & 0x7F) >> 2);
966 	mask |= 1 << ((mmTPC1_QM_CQ_TSIZE & 0x7F) >> 2);
967 	mask |= 1 << ((mmTPC1_QM_CQ_CTL & 0x7F) >> 2);
968 	mask |= 1 << ((mmTPC1_QM_CQ_PTR_LO_STS & 0x7F) >> 2);
969 	mask |= 1 << ((mmTPC1_QM_CQ_PTR_HI_STS & 0x7F) >> 2);
970 	mask |= 1 << ((mmTPC1_QM_CQ_TSIZE_STS & 0x7F) >> 2);
971 	mask |= 1 << ((mmTPC1_QM_CQ_CTL_STS & 0x7F) >> 2);
972 	mask |= 1 << ((mmTPC1_QM_CQ_STS0 & 0x7F) >> 2);
973 	mask |= 1 << ((mmTPC1_QM_CQ_STS1 & 0x7F) >> 2);
974 	mask |= 1 << ((mmTPC1_QM_CQ_RD_RATE_LIM_EN & 0x7F) >> 2);
975 	mask |= 1 << ((mmTPC1_QM_CQ_RD_RATE_LIM_RST_TOKEN & 0x7F) >> 2);
976 	mask |= 1 << ((mmTPC1_QM_CQ_RD_RATE_LIM_SAT & 0x7F) >> 2);
977 	mask |= 1 << ((mmTPC1_QM_CQ_RD_RATE_LIM_TOUT & 0x7F) >> 2);
978 
979 	WREG32(pb_addr + word_offset, ~mask);
980 
981 	pb_addr = (mmTPC1_QM_CQ_IFIFO_CNT & ~0xFFF) + PROT_BITS_OFFS;
982 	word_offset = ((mmTPC1_QM_CQ_IFIFO_CNT & PROT_BITS_OFFS) >> 7) << 2;
983 	mask = 1 << ((mmTPC1_QM_CQ_IFIFO_CNT & 0x7F) >> 2);
984 	mask |= 1 << ((mmTPC1_QM_CP_MSG_BASE0_ADDR_LO & 0x7F) >> 2);
985 	mask |= 1 << ((mmTPC1_QM_CP_MSG_BASE0_ADDR_HI & 0x7F) >> 2);
986 	mask |= 1 << ((mmTPC1_QM_CP_MSG_BASE1_ADDR_LO & 0x7F) >> 2);
987 	mask |= 1 << ((mmTPC1_QM_CP_MSG_BASE1_ADDR_HI & 0x7F) >> 2);
988 	mask |= 1 << ((mmTPC1_QM_CP_MSG_BASE2_ADDR_LO & 0x7F) >> 2);
989 	mask |= 1 << ((mmTPC1_QM_CP_MSG_BASE2_ADDR_HI & 0x7F) >> 2);
990 	mask |= 1 << ((mmTPC1_QM_CP_MSG_BASE3_ADDR_LO & 0x7F) >> 2);
991 	mask |= 1 << ((mmTPC1_QM_CP_MSG_BASE3_ADDR_HI & 0x7F) >> 2);
992 	mask |= 1 << ((mmTPC1_QM_CP_LDMA_TSIZE_OFFSET & 0x7F) >> 2);
993 	mask |= 1 << ((mmTPC1_QM_CP_LDMA_SRC_BASE_LO_OFFSET & 0x7F) >> 2);
994 	mask |= 1 << ((mmTPC1_QM_CP_LDMA_SRC_BASE_HI_OFFSET & 0x7F) >> 2);
995 	mask |= 1 << ((mmTPC1_QM_CP_LDMA_DST_BASE_LO_OFFSET & 0x7F) >> 2);
996 	mask |= 1 << ((mmTPC1_QM_CP_LDMA_DST_BASE_HI_OFFSET & 0x7F) >> 2);
997 	mask |= 1 << ((mmTPC1_QM_CP_LDMA_COMMIT_OFFSET & 0x7F) >> 2);
998 
999 	WREG32(pb_addr + word_offset, ~mask);
1000 
1001 	pb_addr = (mmTPC1_CMDQ_GLBL_CFG0 & ~0xFFF) + PROT_BITS_OFFS;
1002 	word_offset = ((mmTPC1_CMDQ_GLBL_CFG0 & PROT_BITS_OFFS) >> 7) << 2;
1003 	mask = 1 << ((mmTPC1_CMDQ_GLBL_CFG0 & 0x7F) >> 2);
1004 	mask |= 1 << ((mmTPC1_CMDQ_GLBL_CFG1 & 0x7F) >> 2);
1005 	mask |= 1 << ((mmTPC1_CMDQ_GLBL_PROT & 0x7F) >> 2);
1006 	mask |= 1 << ((mmTPC1_CMDQ_GLBL_ERR_CFG & 0x7F) >> 2);
1007 	mask |= 1 << ((mmTPC1_CMDQ_GLBL_ERR_ADDR_LO & 0x7F) >> 2);
1008 	mask |= 1 << ((mmTPC1_CMDQ_GLBL_ERR_ADDR_HI & 0x7F) >> 2);
1009 	mask |= 1 << ((mmTPC1_CMDQ_GLBL_ERR_WDATA & 0x7F) >> 2);
1010 	mask |= 1 << ((mmTPC1_CMDQ_GLBL_SECURE_PROPS & 0x7F) >> 2);
1011 	mask |= 1 << ((mmTPC1_CMDQ_GLBL_NON_SECURE_PROPS & 0x7F) >> 2);
1012 	mask |= 1 << ((mmTPC1_CMDQ_GLBL_STS0 & 0x7F) >> 2);
1013 	mask |= 1 << ((mmTPC1_CMDQ_GLBL_STS1 & 0x7F) >> 2);
1014 
1015 	WREG32(pb_addr + word_offset, ~mask);
1016 
1017 	pb_addr = (mmTPC1_CMDQ_CQ_CFG0 & ~0xFFF) + PROT_BITS_OFFS;
1018 	word_offset = ((mmTPC1_CMDQ_CQ_CFG0 & PROT_BITS_OFFS) >> 7) << 2;
1019 	mask = 1 << ((mmTPC1_CMDQ_CQ_CFG0 & 0x7F) >> 2);
1020 	mask |= 1 << ((mmTPC1_CMDQ_CQ_CFG1 & 0x7F) >> 2);
1021 	mask |= 1 << ((mmTPC1_CMDQ_CQ_ARUSER & 0x7F) >> 2);
1022 	mask |= 1 << ((mmTPC1_CMDQ_CQ_PTR_LO_STS & 0x7F) >> 2);
1023 	mask |= 1 << ((mmTPC1_CMDQ_CQ_PTR_HI_STS & 0x7F) >> 2);
1024 	mask |= 1 << ((mmTPC1_CMDQ_CQ_TSIZE_STS & 0x7F) >> 2);
1025 	mask |= 1 << ((mmTPC1_CMDQ_CQ_CTL_STS & 0x7F) >> 2);
1026 	mask |= 1 << ((mmTPC1_CMDQ_CQ_STS0 & 0x7F) >> 2);
1027 	mask |= 1 << ((mmTPC1_CMDQ_CQ_STS1 & 0x7F) >> 2);
1028 	mask |= 1 << ((mmTPC1_CMDQ_CQ_RD_RATE_LIM_EN & 0x7F) >> 2);
1029 	mask |= 1 << ((mmTPC1_CMDQ_CQ_RD_RATE_LIM_RST_TOKEN & 0x7F) >> 2);
1030 	mask |= 1 << ((mmTPC1_CMDQ_CQ_RD_RATE_LIM_SAT & 0x7F) >> 2);
1031 	mask |= 1 << ((mmTPC1_CMDQ_CQ_RD_RATE_LIM_TOUT & 0x7F) >> 2);
1032 
1033 	WREG32(pb_addr + word_offset, ~mask);
1034 
1035 	pb_addr = (mmTPC1_CMDQ_CQ_IFIFO_CNT & ~0xFFF) + PROT_BITS_OFFS;
1036 	word_offset = ((mmTPC1_CMDQ_CQ_IFIFO_CNT & PROT_BITS_OFFS) >> 7) << 2;
1037 	mask = 1 << ((mmTPC1_CMDQ_CQ_IFIFO_CNT & 0x7F) >> 2);
1038 	mask |= 1 << ((mmTPC1_CMDQ_CP_MSG_BASE0_ADDR_LO & 0x7F) >> 2);
1039 	mask |= 1 << ((mmTPC1_CMDQ_CP_MSG_BASE0_ADDR_HI & 0x7F) >> 2);
1040 	mask |= 1 << ((mmTPC1_CMDQ_CP_MSG_BASE1_ADDR_LO & 0x7F) >> 2);
1041 	mask |= 1 << ((mmTPC1_CMDQ_CP_MSG_BASE1_ADDR_HI & 0x7F) >> 2);
1042 	mask |= 1 << ((mmTPC1_CMDQ_CP_MSG_BASE2_ADDR_LO & 0x7F) >> 2);
1043 	mask |= 1 << ((mmTPC1_CMDQ_CP_MSG_BASE2_ADDR_HI & 0x7F) >> 2);
1044 	mask |= 1 << ((mmTPC1_CMDQ_CP_MSG_BASE3_ADDR_LO & 0x7F) >> 2);
1045 	mask |= 1 << ((mmTPC1_CMDQ_CP_MSG_BASE3_ADDR_HI & 0x7F) >> 2);
1046 	mask |= 1 << ((mmTPC1_CMDQ_CP_LDMA_TSIZE_OFFSET & 0x7F) >> 2);
1047 	mask |= 1 << ((mmTPC1_CMDQ_CP_LDMA_SRC_BASE_LO_OFFSET & 0x7F) >> 2);
1048 	mask |= 1 << ((mmTPC1_CMDQ_CP_LDMA_SRC_BASE_HI_OFFSET & 0x7F) >> 2);
1049 	mask |= 1 << ((mmTPC1_CMDQ_CP_LDMA_DST_BASE_LO_OFFSET & 0x7F) >> 2);
1050 	mask |= 1 << ((mmTPC1_CMDQ_CP_LDMA_DST_BASE_HI_OFFSET & 0x7F) >> 2);
1051 	mask |= 1 << ((mmTPC1_CMDQ_CP_LDMA_COMMIT_OFFSET & 0x7F) >> 2);
1052 	mask |= 1 << ((mmTPC1_CMDQ_CP_STS & 0x7F) >> 2);
1053 	mask |= 1 << ((mmTPC1_CMDQ_CP_CURRENT_INST_LO & 0x7F) >> 2);
1054 
1055 	WREG32(pb_addr + word_offset, ~mask);
1056 
1057 	pb_addr = (mmTPC1_CMDQ_CP_CURRENT_INST_HI & ~0xFFF) + PROT_BITS_OFFS;
1058 	word_offset = ((mmTPC1_CMDQ_CP_CURRENT_INST_HI & PROT_BITS_OFFS) >> 7)
1059 			<< 2;
1060 	mask = 1 << ((mmTPC1_CMDQ_CP_CURRENT_INST_HI & 0x7F) >> 2);
1061 	mask |= 1 << ((mmTPC1_CMDQ_CP_BARRIER_CFG & 0x7F) >> 2);
1062 	mask |= 1 << ((mmTPC1_CMDQ_CP_DBG_0 & 0x7F) >> 2);
1063 	mask |= 1 << ((mmTPC1_CMDQ_CQ_BUF_ADDR & 0x7F) >> 2);
1064 	mask |= 1 << ((mmTPC1_CMDQ_CQ_BUF_RDATA & 0x7F) >> 2);
1065 
1066 	WREG32(pb_addr + word_offset, ~mask);
1067 
1068 	goya_pb_set_block(hdev, mmTPC2_RTR_BASE);
1069 	goya_pb_set_block(hdev, mmTPC2_RD_REGULATOR_BASE);
1070 	goya_pb_set_block(hdev, mmTPC2_WR_REGULATOR_BASE);
1071 
1072 	pb_addr = (mmTPC2_CFG_SEMAPHORE & ~0xFFF) + PROT_BITS_OFFS;
1073 	word_offset = ((mmTPC2_CFG_SEMAPHORE & PROT_BITS_OFFS) >> 7) << 2;
1074 
1075 	mask = 1 << ((mmTPC2_CFG_SEMAPHORE & 0x7F) >> 2);
1076 	mask |= 1 << ((mmTPC2_CFG_VFLAGS & 0x7F) >> 2);
1077 	mask |= 1 << ((mmTPC2_CFG_SFLAGS & 0x7F) >> 2);
1078 	mask |= 1 << ((mmTPC2_CFG_STATUS & 0x7F) >> 2);
1079 
1080 	WREG32(pb_addr + word_offset, ~mask);
1081 
1082 	pb_addr = (mmTPC2_CFG_CFG_BASE_ADDRESS_HIGH & ~0xFFF) + PROT_BITS_OFFS;
1083 	word_offset = ((mmTPC2_CFG_CFG_BASE_ADDRESS_HIGH &
1084 			PROT_BITS_OFFS) >> 7) << 2;
1085 	mask = 1 << ((mmTPC2_CFG_CFG_BASE_ADDRESS_HIGH & 0x7F) >> 2);
1086 	mask |= 1 << ((mmTPC2_CFG_CFG_SUBTRACT_VALUE & 0x7F) >> 2);
1087 	mask |= 1 << ((mmTPC2_CFG_SM_BASE_ADDRESS_LOW & 0x7F) >> 2);
1088 	mask |= 1 << ((mmTPC2_CFG_SM_BASE_ADDRESS_HIGH & 0x7F) >> 2);
1089 	mask |= 1 << ((mmTPC2_CFG_TPC_STALL & 0x7F) >> 2);
1090 	mask |= 1 << ((mmTPC2_CFG_MSS_CONFIG & 0x7F) >> 2);
1091 	mask |= 1 << ((mmTPC2_CFG_TPC_INTR_CAUSE & 0x7F) >> 2);
1092 	mask |= 1 << ((mmTPC2_CFG_TPC_INTR_MASK & 0x7F) >> 2);
1093 
1094 	WREG32(pb_addr + word_offset, ~mask);
1095 
1096 	pb_addr = (mmTPC2_CFG_ARUSER & ~0xFFF) + PROT_BITS_OFFS;
1097 	word_offset = ((mmTPC2_CFG_ARUSER & PROT_BITS_OFFS) >> 7) << 2;
1098 	mask = 1 << ((mmTPC2_CFG_ARUSER & 0x7F) >> 2);
1099 	mask |= 1 << ((mmTPC2_CFG_AWUSER & 0x7F) >> 2);
1100 
1101 	WREG32(pb_addr + word_offset, ~mask);
1102 
1103 	pb_addr = (mmTPC2_CFG_FUNC_MBIST_CNTRL & ~0xFFF) + PROT_BITS_OFFS;
1104 	word_offset = ((mmTPC2_CFG_FUNC_MBIST_CNTRL & PROT_BITS_OFFS) >> 7)
1105 			<< 2;
1106 	mask = 1 << ((mmTPC2_CFG_FUNC_MBIST_CNTRL & 0x7F) >> 2);
1107 	mask |= 1 << ((mmTPC2_CFG_FUNC_MBIST_PAT & 0x7F) >> 2);
1108 	mask |= 1 << ((mmTPC2_CFG_FUNC_MBIST_MEM_0 & 0x7F) >> 2);
1109 	mask |= 1 << ((mmTPC2_CFG_FUNC_MBIST_MEM_1 & 0x7F) >> 2);
1110 	mask |= 1 << ((mmTPC2_CFG_FUNC_MBIST_MEM_2 & 0x7F) >> 2);
1111 	mask |= 1 << ((mmTPC2_CFG_FUNC_MBIST_MEM_3 & 0x7F) >> 2);
1112 	mask |= 1 << ((mmTPC2_CFG_FUNC_MBIST_MEM_4 & 0x7F) >> 2);
1113 	mask |= 1 << ((mmTPC2_CFG_FUNC_MBIST_MEM_5 & 0x7F) >> 2);
1114 	mask |= 1 << ((mmTPC2_CFG_FUNC_MBIST_MEM_6 & 0x7F) >> 2);
1115 	mask |= 1 << ((mmTPC2_CFG_FUNC_MBIST_MEM_7 & 0x7F) >> 2);
1116 	mask |= 1 << ((mmTPC2_CFG_FUNC_MBIST_MEM_8 & 0x7F) >> 2);
1117 	mask |= 1 << ((mmTPC2_CFG_FUNC_MBIST_MEM_9 & 0x7F) >> 2);
1118 
1119 	WREG32(pb_addr + word_offset, ~mask);
1120 
1121 	pb_addr = (mmTPC2_QM_GLBL_CFG0 & ~0xFFF) + PROT_BITS_OFFS;
1122 	word_offset = ((mmTPC2_QM_GLBL_CFG0 & PROT_BITS_OFFS) >> 7) << 2;
1123 	mask = 1 << ((mmTPC2_QM_GLBL_CFG0 & 0x7F) >> 2);
1124 	mask |= 1 << ((mmTPC2_QM_GLBL_CFG1 & 0x7F) >> 2);
1125 	mask |= 1 << ((mmTPC2_QM_GLBL_PROT & 0x7F) >> 2);
1126 	mask |= 1 << ((mmTPC2_QM_GLBL_ERR_CFG & 0x7F) >> 2);
1127 	mask |= 1 << ((mmTPC2_QM_GLBL_ERR_ADDR_LO & 0x7F) >> 2);
1128 	mask |= 1 << ((mmTPC2_QM_GLBL_ERR_ADDR_HI & 0x7F) >> 2);
1129 	mask |= 1 << ((mmTPC2_QM_GLBL_ERR_WDATA & 0x7F) >> 2);
1130 	mask |= 1 << ((mmTPC2_QM_GLBL_SECURE_PROPS & 0x7F) >> 2);
1131 	mask |= 1 << ((mmTPC2_QM_GLBL_NON_SECURE_PROPS & 0x7F) >> 2);
1132 	mask |= 1 << ((mmTPC2_QM_GLBL_STS0 & 0x7F) >> 2);
1133 	mask |= 1 << ((mmTPC2_QM_GLBL_STS1 & 0x7F) >> 2);
1134 	mask |= 1 << ((mmTPC2_QM_PQ_BASE_LO & 0x7F) >> 2);
1135 	mask |= 1 << ((mmTPC2_QM_PQ_BASE_HI & 0x7F) >> 2);
1136 	mask |= 1 << ((mmTPC2_QM_PQ_SIZE & 0x7F) >> 2);
1137 	mask |= 1 << ((mmTPC2_QM_PQ_PI & 0x7F) >> 2);
1138 	mask |= 1 << ((mmTPC2_QM_PQ_CI & 0x7F) >> 2);
1139 	mask |= 1 << ((mmTPC2_QM_PQ_CFG0 & 0x7F) >> 2);
1140 	mask |= 1 << ((mmTPC2_QM_PQ_CFG1 & 0x7F) >> 2);
1141 	mask |= 1 << ((mmTPC2_QM_PQ_ARUSER & 0x7F) >> 2);
1142 
1143 	WREG32(pb_addr + word_offset, ~mask);
1144 
1145 	pb_addr = (mmTPC2_QM_PQ_PUSH0 & ~0xFFF) + PROT_BITS_OFFS;
1146 	word_offset = ((mmTPC2_QM_PQ_PUSH0 & PROT_BITS_OFFS) >> 7) << 2;
1147 	mask = 1 << ((mmTPC2_QM_PQ_PUSH0 & 0x7F) >> 2);
1148 	mask |= 1 << ((mmTPC2_QM_PQ_PUSH1 & 0x7F) >> 2);
1149 	mask |= 1 << ((mmTPC2_QM_PQ_PUSH2 & 0x7F) >> 2);
1150 	mask |= 1 << ((mmTPC2_QM_PQ_PUSH3 & 0x7F) >> 2);
1151 	mask |= 1 << ((mmTPC2_QM_PQ_STS0 & 0x7F) >> 2);
1152 	mask |= 1 << ((mmTPC2_QM_PQ_STS1 & 0x7F) >> 2);
1153 	mask |= 1 << ((mmTPC2_QM_PQ_RD_RATE_LIM_EN & 0x7F) >> 2);
1154 	mask |= 1 << ((mmTPC2_QM_PQ_RD_RATE_LIM_RST_TOKEN & 0x7F) >> 2);
1155 	mask |= 1 << ((mmTPC2_QM_PQ_RD_RATE_LIM_SAT & 0x7F) >> 2);
1156 	mask |= 1 << ((mmTPC2_QM_PQ_RD_RATE_LIM_TOUT & 0x7F) >> 2);
1157 	mask |= 1 << ((mmTPC2_QM_CQ_CFG0 & 0x7F) >> 2);
1158 	mask |= 1 << ((mmTPC2_QM_CQ_CFG1 & 0x7F) >> 2);
1159 	mask |= 1 << ((mmTPC2_QM_CQ_ARUSER & 0x7F) >> 2);
1160 	mask |= 1 << ((mmTPC2_QM_CQ_PTR_LO & 0x7F) >> 2);
1161 	mask |= 1 << ((mmTPC2_QM_CQ_PTR_HI & 0x7F) >> 2);
1162 	mask |= 1 << ((mmTPC2_QM_CQ_TSIZE & 0x7F) >> 2);
1163 	mask |= 1 << ((mmTPC2_QM_CQ_CTL & 0x7F) >> 2);
1164 	mask |= 1 << ((mmTPC2_QM_CQ_PTR_LO_STS & 0x7F) >> 2);
1165 	mask |= 1 << ((mmTPC2_QM_CQ_PTR_HI_STS & 0x7F) >> 2);
1166 	mask |= 1 << ((mmTPC2_QM_CQ_TSIZE_STS & 0x7F) >> 2);
1167 	mask |= 1 << ((mmTPC2_QM_CQ_CTL_STS & 0x7F) >> 2);
1168 	mask |= 1 << ((mmTPC2_QM_CQ_STS0 & 0x7F) >> 2);
1169 	mask |= 1 << ((mmTPC2_QM_CQ_STS1 & 0x7F) >> 2);
1170 	mask |= 1 << ((mmTPC2_QM_CQ_RD_RATE_LIM_EN & 0x7F) >> 2);
1171 	mask |= 1 << ((mmTPC2_QM_CQ_RD_RATE_LIM_RST_TOKEN & 0x7F) >> 2);
1172 	mask |= 1 << ((mmTPC2_QM_CQ_RD_RATE_LIM_SAT & 0x7F) >> 2);
1173 	mask |= 1 << ((mmTPC2_QM_CQ_RD_RATE_LIM_TOUT & 0x7F) >> 2);
1174 
1175 	WREG32(pb_addr + word_offset, ~mask);
1176 
1177 	pb_addr = (mmTPC2_QM_CQ_IFIFO_CNT & ~0xFFF) + PROT_BITS_OFFS;
1178 	word_offset = ((mmTPC2_QM_CQ_IFIFO_CNT & PROT_BITS_OFFS) >> 7) << 2;
1179 	mask = 1 << ((mmTPC2_QM_CQ_IFIFO_CNT & 0x7F) >> 2);
1180 	mask |= 1 << ((mmTPC2_QM_CP_MSG_BASE0_ADDR_LO & 0x7F) >> 2);
1181 	mask |= 1 << ((mmTPC2_QM_CP_MSG_BASE0_ADDR_HI & 0x7F) >> 2);
1182 	mask |= 1 << ((mmTPC2_QM_CP_MSG_BASE1_ADDR_LO & 0x7F) >> 2);
1183 	mask |= 1 << ((mmTPC2_QM_CP_MSG_BASE1_ADDR_HI & 0x7F) >> 2);
1184 	mask |= 1 << ((mmTPC2_QM_CP_MSG_BASE2_ADDR_LO & 0x7F) >> 2);
1185 	mask |= 1 << ((mmTPC2_QM_CP_MSG_BASE2_ADDR_HI & 0x7F) >> 2);
1186 	mask |= 1 << ((mmTPC2_QM_CP_MSG_BASE3_ADDR_LO & 0x7F) >> 2);
1187 	mask |= 1 << ((mmTPC2_QM_CP_MSG_BASE3_ADDR_HI & 0x7F) >> 2);
1188 	mask |= 1 << ((mmTPC2_QM_CP_LDMA_TSIZE_OFFSET & 0x7F) >> 2);
1189 	mask |= 1 << ((mmTPC2_QM_CP_LDMA_SRC_BASE_LO_OFFSET & 0x7F) >> 2);
1190 	mask |= 1 << ((mmTPC2_QM_CP_LDMA_SRC_BASE_HI_OFFSET & 0x7F) >> 2);
1191 	mask |= 1 << ((mmTPC2_QM_CP_LDMA_DST_BASE_LO_OFFSET & 0x7F) >> 2);
1192 	mask |= 1 << ((mmTPC2_QM_CP_LDMA_DST_BASE_HI_OFFSET & 0x7F) >> 2);
1193 	mask |= 1 << ((mmTPC2_QM_CP_LDMA_COMMIT_OFFSET & 0x7F) >> 2);
1194 
1195 	WREG32(pb_addr + word_offset, ~mask);
1196 
1197 	pb_addr = (mmTPC2_CMDQ_GLBL_CFG0 & ~0xFFF) + PROT_BITS_OFFS;
1198 	word_offset = ((mmTPC2_CMDQ_GLBL_CFG0 & PROT_BITS_OFFS) >> 7) << 2;
1199 	mask = 1 << ((mmTPC2_CMDQ_GLBL_CFG0 & 0x7F) >> 2);
1200 	mask |= 1 << ((mmTPC2_CMDQ_GLBL_CFG1 & 0x7F) >> 2);
1201 	mask |= 1 << ((mmTPC2_CMDQ_GLBL_PROT & 0x7F) >> 2);
1202 	mask |= 1 << ((mmTPC2_CMDQ_GLBL_ERR_CFG & 0x7F) >> 2);
1203 	mask |= 1 << ((mmTPC2_CMDQ_GLBL_ERR_ADDR_LO & 0x7F) >> 2);
1204 	mask |= 1 << ((mmTPC2_CMDQ_GLBL_ERR_ADDR_HI & 0x7F) >> 2);
1205 	mask |= 1 << ((mmTPC2_CMDQ_GLBL_ERR_WDATA & 0x7F) >> 2);
1206 	mask |= 1 << ((mmTPC2_CMDQ_GLBL_SECURE_PROPS & 0x7F) >> 2);
1207 	mask |= 1 << ((mmTPC2_CMDQ_GLBL_NON_SECURE_PROPS & 0x7F) >> 2);
1208 	mask |= 1 << ((mmTPC2_CMDQ_GLBL_STS0 & 0x7F) >> 2);
1209 	mask |= 1 << ((mmTPC2_CMDQ_GLBL_STS1 & 0x7F) >> 2);
1210 
1211 	WREG32(pb_addr + word_offset, ~mask);
1212 
1213 	pb_addr = (mmTPC2_CMDQ_CQ_CFG0 & ~0xFFF) + PROT_BITS_OFFS;
1214 	word_offset = ((mmTPC2_CMDQ_CQ_CFG0 & PROT_BITS_OFFS) >> 7) << 2;
1215 	mask = 1 << ((mmTPC2_CMDQ_CQ_CFG0 & 0x7F) >> 2);
1216 	mask |= 1 << ((mmTPC2_CMDQ_CQ_CFG1 & 0x7F) >> 2);
1217 	mask |= 1 << ((mmTPC2_CMDQ_CQ_ARUSER & 0x7F) >> 2);
1218 	mask |= 1 << ((mmTPC2_CMDQ_CQ_PTR_LO_STS & 0x7F) >> 2);
1219 	mask |= 1 << ((mmTPC2_CMDQ_CQ_PTR_HI_STS & 0x7F) >> 2);
1220 	mask |= 1 << ((mmTPC2_CMDQ_CQ_TSIZE_STS & 0x7F) >> 2);
1221 	mask |= 1 << ((mmTPC2_CMDQ_CQ_CTL_STS & 0x7F) >> 2);
1222 	mask |= 1 << ((mmTPC2_CMDQ_CQ_STS0 & 0x7F) >> 2);
1223 	mask |= 1 << ((mmTPC2_CMDQ_CQ_STS1 & 0x7F) >> 2);
1224 	mask |= 1 << ((mmTPC2_CMDQ_CQ_RD_RATE_LIM_EN & 0x7F) >> 2);
1225 	mask |= 1 << ((mmTPC2_CMDQ_CQ_RD_RATE_LIM_RST_TOKEN & 0x7F) >> 2);
1226 	mask |= 1 << ((mmTPC2_CMDQ_CQ_RD_RATE_LIM_SAT & 0x7F) >> 2);
1227 	mask |= 1 << ((mmTPC2_CMDQ_CQ_RD_RATE_LIM_TOUT & 0x7F) >> 2);
1228 
1229 	WREG32(pb_addr + word_offset, ~mask);
1230 
1231 	pb_addr = (mmTPC2_CMDQ_CQ_IFIFO_CNT & ~0xFFF) + PROT_BITS_OFFS;
1232 	word_offset = ((mmTPC2_CMDQ_CQ_IFIFO_CNT & PROT_BITS_OFFS) >> 7) << 2;
1233 	mask = 1 << ((mmTPC2_CMDQ_CQ_IFIFO_CNT & 0x7F) >> 2);
1234 	mask |= 1 << ((mmTPC2_CMDQ_CP_MSG_BASE0_ADDR_LO & 0x7F) >> 2);
1235 	mask |= 1 << ((mmTPC2_CMDQ_CP_MSG_BASE0_ADDR_HI & 0x7F) >> 2);
1236 	mask |= 1 << ((mmTPC2_CMDQ_CP_MSG_BASE1_ADDR_LO & 0x7F) >> 2);
1237 	mask |= 1 << ((mmTPC2_CMDQ_CP_MSG_BASE1_ADDR_HI & 0x7F) >> 2);
1238 	mask |= 1 << ((mmTPC2_CMDQ_CP_MSG_BASE2_ADDR_LO & 0x7F) >> 2);
1239 	mask |= 1 << ((mmTPC2_CMDQ_CP_MSG_BASE2_ADDR_HI & 0x7F) >> 2);
1240 	mask |= 1 << ((mmTPC2_CMDQ_CP_MSG_BASE3_ADDR_LO & 0x7F) >> 2);
1241 	mask |= 1 << ((mmTPC2_CMDQ_CP_MSG_BASE3_ADDR_HI & 0x7F) >> 2);
1242 	mask |= 1 << ((mmTPC2_CMDQ_CP_LDMA_TSIZE_OFFSET & 0x7F) >> 2);
1243 	mask |= 1 << ((mmTPC2_CMDQ_CP_LDMA_SRC_BASE_LO_OFFSET & 0x7F) >> 2);
1244 	mask |= 1 << ((mmTPC2_CMDQ_CP_LDMA_SRC_BASE_HI_OFFSET & 0x7F) >> 2);
1245 	mask |= 1 << ((mmTPC2_CMDQ_CP_LDMA_DST_BASE_LO_OFFSET & 0x7F) >> 2);
1246 	mask |= 1 << ((mmTPC2_CMDQ_CP_LDMA_DST_BASE_HI_OFFSET & 0x7F) >> 2);
1247 	mask |= 1 << ((mmTPC2_CMDQ_CP_LDMA_COMMIT_OFFSET & 0x7F) >> 2);
1248 	mask |= 1 << ((mmTPC2_CMDQ_CP_STS & 0x7F) >> 2);
1249 	mask |= 1 << ((mmTPC2_CMDQ_CP_CURRENT_INST_LO & 0x7F) >> 2);
1250 
1251 	WREG32(pb_addr + word_offset, ~mask);
1252 
1253 	pb_addr = (mmTPC2_CMDQ_CP_CURRENT_INST_HI & ~0xFFF) + PROT_BITS_OFFS;
1254 	word_offset = ((mmTPC2_CMDQ_CP_CURRENT_INST_HI & PROT_BITS_OFFS) >> 7)
1255 			<< 2;
1256 	mask = 1 << ((mmTPC2_CMDQ_CP_CURRENT_INST_HI & 0x7F) >> 2);
1257 	mask |= 1 << ((mmTPC2_CMDQ_CP_BARRIER_CFG & 0x7F) >> 2);
1258 	mask |= 1 << ((mmTPC2_CMDQ_CP_DBG_0 & 0x7F) >> 2);
1259 	mask |= 1 << ((mmTPC2_CMDQ_CQ_BUF_ADDR & 0x7F) >> 2);
1260 	mask |= 1 << ((mmTPC2_CMDQ_CQ_BUF_RDATA & 0x7F) >> 2);
1261 
1262 	WREG32(pb_addr + word_offset, ~mask);
1263 
1264 	goya_pb_set_block(hdev, mmTPC3_RTR_BASE);
1265 	goya_pb_set_block(hdev, mmTPC3_RD_REGULATOR_BASE);
1266 	goya_pb_set_block(hdev, mmTPC3_WR_REGULATOR_BASE);
1267 
1268 	pb_addr = (mmTPC3_CFG_SEMAPHORE & ~0xFFF) + PROT_BITS_OFFS;
1269 	word_offset = ((mmTPC3_CFG_SEMAPHORE & PROT_BITS_OFFS) >> 7) << 2;
1270 
1271 	mask = 1 << ((mmTPC3_CFG_SEMAPHORE & 0x7F) >> 2);
1272 	mask |= 1 << ((mmTPC3_CFG_VFLAGS & 0x7F) >> 2);
1273 	mask |= 1 << ((mmTPC3_CFG_SFLAGS & 0x7F) >> 2);
1274 	mask |= 1 << ((mmTPC3_CFG_STATUS & 0x7F) >> 2);
1275 
1276 	WREG32(pb_addr + word_offset, ~mask);
1277 
1278 	pb_addr = (mmTPC3_CFG_CFG_BASE_ADDRESS_HIGH & ~0xFFF) + PROT_BITS_OFFS;
1279 	word_offset = ((mmTPC3_CFG_CFG_BASE_ADDRESS_HIGH
1280 			& PROT_BITS_OFFS) >> 7) << 2;
1281 	mask = 1 << ((mmTPC3_CFG_CFG_BASE_ADDRESS_HIGH & 0x7F) >> 2);
1282 	mask |= 1 << ((mmTPC3_CFG_CFG_SUBTRACT_VALUE & 0x7F) >> 2);
1283 	mask |= 1 << ((mmTPC3_CFG_SM_BASE_ADDRESS_LOW & 0x7F) >> 2);
1284 	mask |= 1 << ((mmTPC3_CFG_SM_BASE_ADDRESS_HIGH & 0x7F) >> 2);
1285 	mask |= 1 << ((mmTPC3_CFG_TPC_STALL & 0x7F) >> 2);
1286 	mask |= 1 << ((mmTPC3_CFG_MSS_CONFIG & 0x7F) >> 2);
1287 	mask |= 1 << ((mmTPC3_CFG_TPC_INTR_CAUSE & 0x7F) >> 2);
1288 	mask |= 1 << ((mmTPC3_CFG_TPC_INTR_MASK & 0x7F) >> 2);
1289 
1290 	WREG32(pb_addr + word_offset, ~mask);
1291 
1292 	pb_addr = (mmTPC3_CFG_ARUSER & ~0xFFF) + PROT_BITS_OFFS;
1293 	word_offset = ((mmTPC3_CFG_ARUSER & PROT_BITS_OFFS) >> 7) << 2;
1294 	mask = 1 << ((mmTPC3_CFG_ARUSER & 0x7F) >> 2);
1295 	mask |= 1 << ((mmTPC3_CFG_AWUSER & 0x7F) >> 2);
1296 
1297 	WREG32(pb_addr + word_offset, ~mask);
1298 
1299 	pb_addr = (mmTPC3_CFG_FUNC_MBIST_CNTRL & ~0xFFF) + PROT_BITS_OFFS;
1300 	word_offset = ((mmTPC3_CFG_FUNC_MBIST_CNTRL
1301 			& PROT_BITS_OFFS) >> 7) << 2;
1302 	mask = 1 << ((mmTPC3_CFG_FUNC_MBIST_CNTRL & 0x7F) >> 2);
1303 	mask |= 1 << ((mmTPC3_CFG_FUNC_MBIST_PAT & 0x7F) >> 2);
1304 	mask |= 1 << ((mmTPC3_CFG_FUNC_MBIST_MEM_0 & 0x7F) >> 2);
1305 	mask |= 1 << ((mmTPC3_CFG_FUNC_MBIST_MEM_1 & 0x7F) >> 2);
1306 	mask |= 1 << ((mmTPC3_CFG_FUNC_MBIST_MEM_2 & 0x7F) >> 2);
1307 	mask |= 1 << ((mmTPC3_CFG_FUNC_MBIST_MEM_3 & 0x7F) >> 2);
1308 	mask |= 1 << ((mmTPC3_CFG_FUNC_MBIST_MEM_4 & 0x7F) >> 2);
1309 	mask |= 1 << ((mmTPC3_CFG_FUNC_MBIST_MEM_5 & 0x7F) >> 2);
1310 	mask |= 1 << ((mmTPC3_CFG_FUNC_MBIST_MEM_6 & 0x7F) >> 2);
1311 	mask |= 1 << ((mmTPC3_CFG_FUNC_MBIST_MEM_7 & 0x7F) >> 2);
1312 	mask |= 1 << ((mmTPC3_CFG_FUNC_MBIST_MEM_8 & 0x7F) >> 2);
1313 	mask |= 1 << ((mmTPC3_CFG_FUNC_MBIST_MEM_9 & 0x7F) >> 2);
1314 
1315 	WREG32(pb_addr + word_offset, ~mask);
1316 
1317 	pb_addr = (mmTPC3_QM_GLBL_CFG0 & ~0xFFF) + PROT_BITS_OFFS;
1318 	word_offset = ((mmTPC3_QM_GLBL_CFG0 & PROT_BITS_OFFS) >> 7) << 2;
1319 	mask = 1 << ((mmTPC3_QM_GLBL_CFG0 & 0x7F) >> 2);
1320 	mask |= 1 << ((mmTPC3_QM_GLBL_CFG1 & 0x7F) >> 2);
1321 	mask |= 1 << ((mmTPC3_QM_GLBL_PROT & 0x7F) >> 2);
1322 	mask |= 1 << ((mmTPC3_QM_GLBL_ERR_CFG & 0x7F) >> 2);
1323 	mask |= 1 << ((mmTPC3_QM_GLBL_ERR_ADDR_LO & 0x7F) >> 2);
1324 	mask |= 1 << ((mmTPC3_QM_GLBL_ERR_ADDR_HI & 0x7F) >> 2);
1325 	mask |= 1 << ((mmTPC3_QM_GLBL_ERR_WDATA & 0x7F) >> 2);
1326 	mask |= 1 << ((mmTPC3_QM_GLBL_SECURE_PROPS & 0x7F) >> 2);
1327 	mask |= 1 << ((mmTPC3_QM_GLBL_NON_SECURE_PROPS & 0x7F) >> 2);
1328 	mask |= 1 << ((mmTPC3_QM_GLBL_STS0 & 0x7F) >> 2);
1329 	mask |= 1 << ((mmTPC3_QM_GLBL_STS1 & 0x7F) >> 2);
1330 	mask |= 1 << ((mmTPC3_QM_PQ_BASE_LO & 0x7F) >> 2);
1331 	mask |= 1 << ((mmTPC3_QM_PQ_BASE_HI & 0x7F) >> 2);
1332 	mask |= 1 << ((mmTPC3_QM_PQ_SIZE & 0x7F) >> 2);
1333 	mask |= 1 << ((mmTPC3_QM_PQ_PI & 0x7F) >> 2);
1334 	mask |= 1 << ((mmTPC3_QM_PQ_CI & 0x7F) >> 2);
1335 	mask |= 1 << ((mmTPC3_QM_PQ_CFG0 & 0x7F) >> 2);
1336 	mask |= 1 << ((mmTPC3_QM_PQ_CFG1 & 0x7F) >> 2);
1337 	mask |= 1 << ((mmTPC3_QM_PQ_ARUSER & 0x7F) >> 2);
1338 
1339 	WREG32(pb_addr + word_offset, ~mask);
1340 
1341 	pb_addr = (mmTPC3_QM_PQ_PUSH0 & ~0xFFF) + PROT_BITS_OFFS;
1342 	word_offset = ((mmTPC3_QM_PQ_PUSH0 & PROT_BITS_OFFS) >> 7) << 2;
1343 	mask = 1 << ((mmTPC3_QM_PQ_PUSH0 & 0x7F) >> 2);
1344 	mask |= 1 << ((mmTPC3_QM_PQ_PUSH1 & 0x7F) >> 2);
1345 	mask |= 1 << ((mmTPC3_QM_PQ_PUSH2 & 0x7F) >> 2);
1346 	mask |= 1 << ((mmTPC3_QM_PQ_PUSH3 & 0x7F) >> 2);
1347 	mask |= 1 << ((mmTPC3_QM_PQ_STS0 & 0x7F) >> 2);
1348 	mask |= 1 << ((mmTPC3_QM_PQ_STS1 & 0x7F) >> 2);
1349 	mask |= 1 << ((mmTPC3_QM_PQ_RD_RATE_LIM_EN & 0x7F) >> 2);
1350 	mask |= 1 << ((mmTPC3_QM_PQ_RD_RATE_LIM_RST_TOKEN & 0x7F) >> 2);
1351 	mask |= 1 << ((mmTPC3_QM_PQ_RD_RATE_LIM_SAT & 0x7F) >> 2);
1352 	mask |= 1 << ((mmTPC3_QM_PQ_RD_RATE_LIM_TOUT & 0x7F) >> 2);
1353 	mask |= 1 << ((mmTPC3_QM_CQ_CFG0 & 0x7F) >> 2);
1354 	mask |= 1 << ((mmTPC3_QM_CQ_CFG1 & 0x7F) >> 2);
1355 	mask |= 1 << ((mmTPC3_QM_CQ_ARUSER & 0x7F) >> 2);
1356 	mask |= 1 << ((mmTPC3_QM_CQ_PTR_LO & 0x7F) >> 2);
1357 	mask |= 1 << ((mmTPC3_QM_CQ_PTR_HI & 0x7F) >> 2);
1358 	mask |= 1 << ((mmTPC3_QM_CQ_TSIZE & 0x7F) >> 2);
1359 	mask |= 1 << ((mmTPC3_QM_CQ_CTL & 0x7F) >> 2);
1360 	mask |= 1 << ((mmTPC3_QM_CQ_PTR_LO_STS & 0x7F) >> 2);
1361 	mask |= 1 << ((mmTPC3_QM_CQ_PTR_HI_STS & 0x7F) >> 2);
1362 	mask |= 1 << ((mmTPC3_QM_CQ_TSIZE_STS & 0x7F) >> 2);
1363 	mask |= 1 << ((mmTPC3_QM_CQ_CTL_STS & 0x7F) >> 2);
1364 	mask |= 1 << ((mmTPC3_QM_CQ_STS0 & 0x7F) >> 2);
1365 	mask |= 1 << ((mmTPC3_QM_CQ_STS1 & 0x7F) >> 2);
1366 	mask |= 1 << ((mmTPC3_QM_CQ_RD_RATE_LIM_EN & 0x7F) >> 2);
1367 	mask |= 1 << ((mmTPC3_QM_CQ_RD_RATE_LIM_RST_TOKEN & 0x7F) >> 2);
1368 	mask |= 1 << ((mmTPC3_QM_CQ_RD_RATE_LIM_SAT & 0x7F) >> 2);
1369 	mask |= 1 << ((mmTPC3_QM_CQ_RD_RATE_LIM_TOUT & 0x7F) >> 2);
1370 
1371 	WREG32(pb_addr + word_offset, ~mask);
1372 
1373 	pb_addr = (mmTPC3_QM_CQ_IFIFO_CNT & ~0xFFF) + PROT_BITS_OFFS;
1374 	word_offset = ((mmTPC3_QM_CQ_IFIFO_CNT & PROT_BITS_OFFS) >> 7) << 2;
1375 	mask = 1 << ((mmTPC3_QM_CQ_IFIFO_CNT & 0x7F) >> 2);
1376 	mask |= 1 << ((mmTPC3_QM_CP_MSG_BASE0_ADDR_LO & 0x7F) >> 2);
1377 	mask |= 1 << ((mmTPC3_QM_CP_MSG_BASE0_ADDR_HI & 0x7F) >> 2);
1378 	mask |= 1 << ((mmTPC3_QM_CP_MSG_BASE1_ADDR_LO & 0x7F) >> 2);
1379 	mask |= 1 << ((mmTPC3_QM_CP_MSG_BASE1_ADDR_HI & 0x7F) >> 2);
1380 	mask |= 1 << ((mmTPC3_QM_CP_MSG_BASE2_ADDR_LO & 0x7F) >> 2);
1381 	mask |= 1 << ((mmTPC3_QM_CP_MSG_BASE2_ADDR_HI & 0x7F) >> 2);
1382 	mask |= 1 << ((mmTPC3_QM_CP_MSG_BASE3_ADDR_LO & 0x7F) >> 2);
1383 	mask |= 1 << ((mmTPC3_QM_CP_MSG_BASE3_ADDR_HI & 0x7F) >> 2);
1384 	mask |= 1 << ((mmTPC3_QM_CP_LDMA_TSIZE_OFFSET & 0x7F) >> 2);
1385 	mask |= 1 << ((mmTPC3_QM_CP_LDMA_SRC_BASE_LO_OFFSET & 0x7F) >> 2);
1386 	mask |= 1 << ((mmTPC3_QM_CP_LDMA_SRC_BASE_HI_OFFSET & 0x7F) >> 2);
1387 	mask |= 1 << ((mmTPC3_QM_CP_LDMA_DST_BASE_LO_OFFSET & 0x7F) >> 2);
1388 	mask |= 1 << ((mmTPC3_QM_CP_LDMA_DST_BASE_HI_OFFSET & 0x7F) >> 2);
1389 	mask |= 1 << ((mmTPC3_QM_CP_LDMA_COMMIT_OFFSET & 0x7F) >> 2);
1390 
1391 	WREG32(pb_addr + word_offset, ~mask);
1392 
1393 	pb_addr = (mmTPC3_CMDQ_GLBL_CFG0 & ~0xFFF) + PROT_BITS_OFFS;
1394 	word_offset = ((mmTPC3_CMDQ_GLBL_CFG0 & PROT_BITS_OFFS) >> 7) << 2;
1395 	mask = 1 << ((mmTPC3_CMDQ_GLBL_CFG0 & 0x7F) >> 2);
1396 	mask |= 1 << ((mmTPC3_CMDQ_GLBL_CFG1 & 0x7F) >> 2);
1397 	mask |= 1 << ((mmTPC3_CMDQ_GLBL_PROT & 0x7F) >> 2);
1398 	mask |= 1 << ((mmTPC3_CMDQ_GLBL_ERR_CFG & 0x7F) >> 2);
1399 	mask |= 1 << ((mmTPC3_CMDQ_GLBL_ERR_ADDR_LO & 0x7F) >> 2);
1400 	mask |= 1 << ((mmTPC3_CMDQ_GLBL_ERR_ADDR_HI & 0x7F) >> 2);
1401 	mask |= 1 << ((mmTPC3_CMDQ_GLBL_ERR_WDATA & 0x7F) >> 2);
1402 	mask |= 1 << ((mmTPC3_CMDQ_GLBL_SECURE_PROPS & 0x7F) >> 2);
1403 	mask |= 1 << ((mmTPC3_CMDQ_GLBL_NON_SECURE_PROPS & 0x7F) >> 2);
1404 	mask |= 1 << ((mmTPC3_CMDQ_GLBL_STS0 & 0x7F) >> 2);
1405 	mask |= 1 << ((mmTPC3_CMDQ_GLBL_STS1 & 0x7F) >> 2);
1406 
1407 	WREG32(pb_addr + word_offset, ~mask);
1408 
1409 	pb_addr = (mmTPC3_CMDQ_CQ_CFG0 & ~0xFFF) + PROT_BITS_OFFS;
1410 	word_offset = ((mmTPC3_CMDQ_CQ_CFG0 & PROT_BITS_OFFS) >> 7) << 2;
1411 	mask = 1 << ((mmTPC3_CMDQ_CQ_CFG0 & 0x7F) >> 2);
1412 	mask |= 1 << ((mmTPC3_CMDQ_CQ_CFG1 & 0x7F) >> 2);
1413 	mask |= 1 << ((mmTPC3_CMDQ_CQ_ARUSER & 0x7F) >> 2);
1414 	mask |= 1 << ((mmTPC3_CMDQ_CQ_PTR_LO_STS & 0x7F) >> 2);
1415 	mask |= 1 << ((mmTPC3_CMDQ_CQ_PTR_HI_STS & 0x7F) >> 2);
1416 	mask |= 1 << ((mmTPC3_CMDQ_CQ_TSIZE_STS & 0x7F) >> 2);
1417 	mask |= 1 << ((mmTPC3_CMDQ_CQ_CTL_STS & 0x7F) >> 2);
1418 	mask |= 1 << ((mmTPC3_CMDQ_CQ_STS0 & 0x7F) >> 2);
1419 	mask |= 1 << ((mmTPC3_CMDQ_CQ_STS1 & 0x7F) >> 2);
1420 	mask |= 1 << ((mmTPC3_CMDQ_CQ_RD_RATE_LIM_EN & 0x7F) >> 2);
1421 	mask |= 1 << ((mmTPC3_CMDQ_CQ_RD_RATE_LIM_RST_TOKEN & 0x7F) >> 2);
1422 	mask |= 1 << ((mmTPC3_CMDQ_CQ_RD_RATE_LIM_SAT & 0x7F) >> 2);
1423 	mask |= 1 << ((mmTPC3_CMDQ_CQ_RD_RATE_LIM_TOUT & 0x7F) >> 2);
1424 
1425 	WREG32(pb_addr + word_offset, ~mask);
1426 
1427 	pb_addr = (mmTPC3_CMDQ_CQ_IFIFO_CNT & ~0xFFF) + PROT_BITS_OFFS;
1428 	word_offset = ((mmTPC3_CMDQ_CQ_IFIFO_CNT & PROT_BITS_OFFS) >> 7) << 2;
1429 	mask = 1 << ((mmTPC3_CMDQ_CQ_IFIFO_CNT & 0x7F) >> 2);
1430 	mask |= 1 << ((mmTPC3_CMDQ_CP_MSG_BASE0_ADDR_LO & 0x7F) >> 2);
1431 	mask |= 1 << ((mmTPC3_CMDQ_CP_MSG_BASE0_ADDR_HI & 0x7F) >> 2);
1432 	mask |= 1 << ((mmTPC3_CMDQ_CP_MSG_BASE1_ADDR_LO & 0x7F) >> 2);
1433 	mask |= 1 << ((mmTPC3_CMDQ_CP_MSG_BASE1_ADDR_HI & 0x7F) >> 2);
1434 	mask |= 1 << ((mmTPC3_CMDQ_CP_MSG_BASE2_ADDR_LO & 0x7F) >> 2);
1435 	mask |= 1 << ((mmTPC3_CMDQ_CP_MSG_BASE2_ADDR_HI & 0x7F) >> 2);
1436 	mask |= 1 << ((mmTPC3_CMDQ_CP_MSG_BASE3_ADDR_LO & 0x7F) >> 2);
1437 	mask |= 1 << ((mmTPC3_CMDQ_CP_MSG_BASE3_ADDR_HI & 0x7F) >> 2);
1438 	mask |= 1 << ((mmTPC3_CMDQ_CP_LDMA_TSIZE_OFFSET & 0x7F) >> 2);
1439 	mask |= 1 << ((mmTPC3_CMDQ_CP_LDMA_SRC_BASE_LO_OFFSET & 0x7F) >> 2);
1440 	mask |= 1 << ((mmTPC3_CMDQ_CP_LDMA_SRC_BASE_HI_OFFSET & 0x7F) >> 2);
1441 	mask |= 1 << ((mmTPC3_CMDQ_CP_LDMA_DST_BASE_LO_OFFSET & 0x7F) >> 2);
1442 	mask |= 1 << ((mmTPC3_CMDQ_CP_LDMA_DST_BASE_HI_OFFSET & 0x7F) >> 2);
1443 	mask |= 1 << ((mmTPC3_CMDQ_CP_LDMA_COMMIT_OFFSET & 0x7F) >> 2);
1444 	mask |= 1 << ((mmTPC3_CMDQ_CP_STS & 0x7F) >> 2);
1445 	mask |= 1 << ((mmTPC3_CMDQ_CP_CURRENT_INST_LO & 0x7F) >> 2);
1446 
1447 	WREG32(pb_addr + word_offset, ~mask);
1448 
1449 	pb_addr = (mmTPC3_CMDQ_CP_CURRENT_INST_HI & ~0xFFF) + PROT_BITS_OFFS;
1450 	word_offset = ((mmTPC3_CMDQ_CP_CURRENT_INST_HI & PROT_BITS_OFFS) >> 7)
1451 			<< 2;
1452 	mask = 1 << ((mmTPC3_CMDQ_CP_CURRENT_INST_HI & 0x7F) >> 2);
1453 	mask |= 1 << ((mmTPC3_CMDQ_CP_BARRIER_CFG & 0x7F) >> 2);
1454 	mask |= 1 << ((mmTPC3_CMDQ_CP_DBG_0 & 0x7F) >> 2);
1455 	mask |= 1 << ((mmTPC3_CMDQ_CQ_BUF_ADDR & 0x7F) >> 2);
1456 	mask |= 1 << ((mmTPC3_CMDQ_CQ_BUF_RDATA & 0x7F) >> 2);
1457 
1458 	WREG32(pb_addr + word_offset, ~mask);
1459 
1460 	goya_pb_set_block(hdev, mmTPC4_RTR_BASE);
1461 	goya_pb_set_block(hdev, mmTPC4_RD_REGULATOR_BASE);
1462 	goya_pb_set_block(hdev, mmTPC4_WR_REGULATOR_BASE);
1463 
1464 	pb_addr = (mmTPC4_CFG_SEMAPHORE & ~0xFFF) + PROT_BITS_OFFS;
1465 	word_offset = ((mmTPC4_CFG_SEMAPHORE & PROT_BITS_OFFS) >> 7) << 2;
1466 
1467 	mask = 1 << ((mmTPC4_CFG_SEMAPHORE & 0x7F) >> 2);
1468 	mask |= 1 << ((mmTPC4_CFG_VFLAGS & 0x7F) >> 2);
1469 	mask |= 1 << ((mmTPC4_CFG_SFLAGS & 0x7F) >> 2);
1470 	mask |= 1 << ((mmTPC4_CFG_STATUS & 0x7F) >> 2);
1471 
1472 	WREG32(pb_addr + word_offset, ~mask);
1473 
1474 	pb_addr = (mmTPC4_CFG_CFG_BASE_ADDRESS_HIGH & ~0xFFF) + PROT_BITS_OFFS;
1475 	word_offset = ((mmTPC4_CFG_CFG_BASE_ADDRESS_HIGH &
1476 			PROT_BITS_OFFS) >> 7) << 2;
1477 	mask = 1 << ((mmTPC4_CFG_CFG_BASE_ADDRESS_HIGH & 0x7F) >> 2);
1478 	mask |= 1 << ((mmTPC4_CFG_CFG_SUBTRACT_VALUE & 0x7F) >> 2);
1479 	mask |= 1 << ((mmTPC4_CFG_SM_BASE_ADDRESS_LOW & 0x7F) >> 2);
1480 	mask |= 1 << ((mmTPC4_CFG_SM_BASE_ADDRESS_HIGH & 0x7F) >> 2);
1481 	mask |= 1 << ((mmTPC4_CFG_TPC_STALL & 0x7F) >> 2);
1482 	mask |= 1 << ((mmTPC4_CFG_MSS_CONFIG & 0x7F) >> 2);
1483 	mask |= 1 << ((mmTPC4_CFG_TPC_INTR_CAUSE & 0x7F) >> 2);
1484 	mask |= 1 << ((mmTPC4_CFG_TPC_INTR_MASK & 0x7F) >> 2);
1485 
1486 	WREG32(pb_addr + word_offset, ~mask);
1487 
1488 	pb_addr = (mmTPC4_CFG_ARUSER & ~0xFFF) + PROT_BITS_OFFS;
1489 	word_offset = ((mmTPC4_CFG_ARUSER & PROT_BITS_OFFS) >> 7) << 2;
1490 	mask = 1 << ((mmTPC4_CFG_ARUSER & 0x7F) >> 2);
1491 	mask |= 1 << ((mmTPC4_CFG_AWUSER & 0x7F) >> 2);
1492 
1493 	WREG32(pb_addr + word_offset, ~mask);
1494 
1495 	pb_addr = (mmTPC4_CFG_FUNC_MBIST_CNTRL & ~0xFFF) + PROT_BITS_OFFS;
1496 	word_offset = ((mmTPC4_CFG_FUNC_MBIST_CNTRL &
1497 			PROT_BITS_OFFS) >> 7) << 2;
1498 	mask = 1 << ((mmTPC4_CFG_FUNC_MBIST_CNTRL & 0x7F) >> 2);
1499 	mask |= 1 << ((mmTPC4_CFG_FUNC_MBIST_PAT & 0x7F) >> 2);
1500 	mask |= 1 << ((mmTPC4_CFG_FUNC_MBIST_MEM_0 & 0x7F) >> 2);
1501 	mask |= 1 << ((mmTPC4_CFG_FUNC_MBIST_MEM_1 & 0x7F) >> 2);
1502 	mask |= 1 << ((mmTPC4_CFG_FUNC_MBIST_MEM_2 & 0x7F) >> 2);
1503 	mask |= 1 << ((mmTPC4_CFG_FUNC_MBIST_MEM_3 & 0x7F) >> 2);
1504 	mask |= 1 << ((mmTPC4_CFG_FUNC_MBIST_MEM_4 & 0x7F) >> 2);
1505 	mask |= 1 << ((mmTPC4_CFG_FUNC_MBIST_MEM_5 & 0x7F) >> 2);
1506 	mask |= 1 << ((mmTPC4_CFG_FUNC_MBIST_MEM_6 & 0x7F) >> 2);
1507 	mask |= 1 << ((mmTPC4_CFG_FUNC_MBIST_MEM_7 & 0x7F) >> 2);
1508 	mask |= 1 << ((mmTPC4_CFG_FUNC_MBIST_MEM_8 & 0x7F) >> 2);
1509 	mask |= 1 << ((mmTPC4_CFG_FUNC_MBIST_MEM_9 & 0x7F) >> 2);
1510 
1511 	WREG32(pb_addr + word_offset, ~mask);
1512 
1513 	pb_addr = (mmTPC4_QM_GLBL_CFG0 & ~0xFFF) + PROT_BITS_OFFS;
1514 	word_offset = ((mmTPC4_QM_GLBL_CFG0 & PROT_BITS_OFFS) >> 7) << 2;
1515 	mask = 1 << ((mmTPC4_QM_GLBL_CFG0 & 0x7F) >> 2);
1516 	mask |= 1 << ((mmTPC4_QM_GLBL_CFG1 & 0x7F) >> 2);
1517 	mask |= 1 << ((mmTPC4_QM_GLBL_PROT & 0x7F) >> 2);
1518 	mask |= 1 << ((mmTPC4_QM_GLBL_ERR_CFG & 0x7F) >> 2);
1519 	mask |= 1 << ((mmTPC4_QM_GLBL_ERR_ADDR_LO & 0x7F) >> 2);
1520 	mask |= 1 << ((mmTPC4_QM_GLBL_ERR_ADDR_HI & 0x7F) >> 2);
1521 	mask |= 1 << ((mmTPC4_QM_GLBL_ERR_WDATA & 0x7F) >> 2);
1522 	mask |= 1 << ((mmTPC4_QM_GLBL_SECURE_PROPS & 0x7F) >> 2);
1523 	mask |= 1 << ((mmTPC4_QM_GLBL_NON_SECURE_PROPS & 0x7F) >> 2);
1524 	mask |= 1 << ((mmTPC4_QM_GLBL_STS0 & 0x7F) >> 2);
1525 	mask |= 1 << ((mmTPC4_QM_GLBL_STS1 & 0x7F) >> 2);
1526 	mask |= 1 << ((mmTPC4_QM_PQ_BASE_LO & 0x7F) >> 2);
1527 	mask |= 1 << ((mmTPC4_QM_PQ_BASE_HI & 0x7F) >> 2);
1528 	mask |= 1 << ((mmTPC4_QM_PQ_SIZE & 0x7F) >> 2);
1529 	mask |= 1 << ((mmTPC4_QM_PQ_PI & 0x7F) >> 2);
1530 	mask |= 1 << ((mmTPC4_QM_PQ_CI & 0x7F) >> 2);
1531 	mask |= 1 << ((mmTPC4_QM_PQ_CFG0 & 0x7F) >> 2);
1532 	mask |= 1 << ((mmTPC4_QM_PQ_CFG1 & 0x7F) >> 2);
1533 	mask |= 1 << ((mmTPC4_QM_PQ_ARUSER & 0x7F) >> 2);
1534 
1535 	WREG32(pb_addr + word_offset, ~mask);
1536 
1537 	pb_addr = (mmTPC4_QM_PQ_PUSH0 & ~0xFFF) + PROT_BITS_OFFS;
1538 	word_offset = ((mmTPC4_QM_PQ_PUSH0 & PROT_BITS_OFFS) >> 7) << 2;
1539 	mask = 1 << ((mmTPC4_QM_PQ_PUSH0 & 0x7F) >> 2);
1540 	mask |= 1 << ((mmTPC4_QM_PQ_PUSH1 & 0x7F) >> 2);
1541 	mask |= 1 << ((mmTPC4_QM_PQ_PUSH2 & 0x7F) >> 2);
1542 	mask |= 1 << ((mmTPC4_QM_PQ_PUSH3 & 0x7F) >> 2);
1543 	mask |= 1 << ((mmTPC4_QM_PQ_STS0 & 0x7F) >> 2);
1544 	mask |= 1 << ((mmTPC4_QM_PQ_STS1 & 0x7F) >> 2);
1545 	mask |= 1 << ((mmTPC4_QM_PQ_RD_RATE_LIM_EN & 0x7F) >> 2);
1546 	mask |= 1 << ((mmTPC4_QM_PQ_RD_RATE_LIM_RST_TOKEN & 0x7F) >> 2);
1547 	mask |= 1 << ((mmTPC4_QM_PQ_RD_RATE_LIM_SAT & 0x7F) >> 2);
1548 	mask |= 1 << ((mmTPC4_QM_PQ_RD_RATE_LIM_TOUT & 0x7F) >> 2);
1549 	mask |= 1 << ((mmTPC4_QM_CQ_CFG0 & 0x7F) >> 2);
1550 	mask |= 1 << ((mmTPC4_QM_CQ_CFG1 & 0x7F) >> 2);
1551 	mask |= 1 << ((mmTPC4_QM_CQ_ARUSER & 0x7F) >> 2);
1552 	mask |= 1 << ((mmTPC4_QM_CQ_PTR_LO & 0x7F) >> 2);
1553 	mask |= 1 << ((mmTPC4_QM_CQ_PTR_HI & 0x7F) >> 2);
1554 	mask |= 1 << ((mmTPC4_QM_CQ_TSIZE & 0x7F) >> 2);
1555 	mask |= 1 << ((mmTPC4_QM_CQ_CTL & 0x7F) >> 2);
1556 	mask |= 1 << ((mmTPC4_QM_CQ_PTR_LO_STS & 0x7F) >> 2);
1557 	mask |= 1 << ((mmTPC4_QM_CQ_PTR_HI_STS & 0x7F) >> 2);
1558 	mask |= 1 << ((mmTPC4_QM_CQ_TSIZE_STS & 0x7F) >> 2);
1559 	mask |= 1 << ((mmTPC4_QM_CQ_CTL_STS & 0x7F) >> 2);
1560 	mask |= 1 << ((mmTPC4_QM_CQ_STS0 & 0x7F) >> 2);
1561 	mask |= 1 << ((mmTPC4_QM_CQ_STS1 & 0x7F) >> 2);
1562 	mask |= 1 << ((mmTPC4_QM_CQ_RD_RATE_LIM_EN & 0x7F) >> 2);
1563 	mask |= 1 << ((mmTPC4_QM_CQ_RD_RATE_LIM_RST_TOKEN & 0x7F) >> 2);
1564 	mask |= 1 << ((mmTPC4_QM_CQ_RD_RATE_LIM_SAT & 0x7F) >> 2);
1565 	mask |= 1 << ((mmTPC4_QM_CQ_RD_RATE_LIM_TOUT & 0x7F) >> 2);
1566 
1567 	WREG32(pb_addr + word_offset, ~mask);
1568 
1569 	pb_addr = (mmTPC4_QM_CQ_IFIFO_CNT & ~0xFFF) + PROT_BITS_OFFS;
1570 	word_offset = ((mmTPC4_QM_CQ_IFIFO_CNT & PROT_BITS_OFFS) >> 7) << 2;
1571 	mask = 1 << ((mmTPC4_QM_CQ_IFIFO_CNT & 0x7F) >> 2);
1572 	mask |= 1 << ((mmTPC4_QM_CP_MSG_BASE0_ADDR_LO & 0x7F) >> 2);
1573 	mask |= 1 << ((mmTPC4_QM_CP_MSG_BASE0_ADDR_HI & 0x7F) >> 2);
1574 	mask |= 1 << ((mmTPC4_QM_CP_MSG_BASE1_ADDR_LO & 0x7F) >> 2);
1575 	mask |= 1 << ((mmTPC4_QM_CP_MSG_BASE1_ADDR_HI & 0x7F) >> 2);
1576 	mask |= 1 << ((mmTPC4_QM_CP_MSG_BASE2_ADDR_LO & 0x7F) >> 2);
1577 	mask |= 1 << ((mmTPC4_QM_CP_MSG_BASE2_ADDR_HI & 0x7F) >> 2);
1578 	mask |= 1 << ((mmTPC4_QM_CP_MSG_BASE3_ADDR_LO & 0x7F) >> 2);
1579 	mask |= 1 << ((mmTPC4_QM_CP_MSG_BASE3_ADDR_HI & 0x7F) >> 2);
1580 	mask |= 1 << ((mmTPC4_QM_CP_LDMA_TSIZE_OFFSET & 0x7F) >> 2);
1581 	mask |= 1 << ((mmTPC4_QM_CP_LDMA_SRC_BASE_LO_OFFSET & 0x7F) >> 2);
1582 	mask |= 1 << ((mmTPC4_QM_CP_LDMA_SRC_BASE_HI_OFFSET & 0x7F) >> 2);
1583 	mask |= 1 << ((mmTPC4_QM_CP_LDMA_DST_BASE_LO_OFFSET & 0x7F) >> 2);
1584 	mask |= 1 << ((mmTPC4_QM_CP_LDMA_DST_BASE_HI_OFFSET & 0x7F) >> 2);
1585 	mask |= 1 << ((mmTPC4_QM_CP_LDMA_COMMIT_OFFSET & 0x7F) >> 2);
1586 
1587 	WREG32(pb_addr + word_offset, ~mask);
1588 
1589 	pb_addr = (mmTPC4_CMDQ_GLBL_CFG0 & ~0xFFF) + PROT_BITS_OFFS;
1590 	word_offset = ((mmTPC4_CMDQ_GLBL_CFG0 & PROT_BITS_OFFS) >> 7) << 2;
1591 	mask = 1 << ((mmTPC4_CMDQ_GLBL_CFG0 & 0x7F) >> 2);
1592 	mask |= 1 << ((mmTPC4_CMDQ_GLBL_CFG1 & 0x7F) >> 2);
1593 	mask |= 1 << ((mmTPC4_CMDQ_GLBL_PROT & 0x7F) >> 2);
1594 	mask |= 1 << ((mmTPC4_CMDQ_GLBL_ERR_CFG & 0x7F) >> 2);
1595 	mask |= 1 << ((mmTPC4_CMDQ_GLBL_ERR_ADDR_LO & 0x7F) >> 2);
1596 	mask |= 1 << ((mmTPC4_CMDQ_GLBL_ERR_ADDR_HI & 0x7F) >> 2);
1597 	mask |= 1 << ((mmTPC4_CMDQ_GLBL_ERR_WDATA & 0x7F) >> 2);
1598 	mask |= 1 << ((mmTPC4_CMDQ_GLBL_SECURE_PROPS & 0x7F) >> 2);
1599 	mask |= 1 << ((mmTPC4_CMDQ_GLBL_NON_SECURE_PROPS & 0x7F) >> 2);
1600 	mask |= 1 << ((mmTPC4_CMDQ_GLBL_STS0 & 0x7F) >> 2);
1601 	mask |= 1 << ((mmTPC4_CMDQ_GLBL_STS1 & 0x7F) >> 2);
1602 
1603 	WREG32(pb_addr + word_offset, ~mask);
1604 
1605 	pb_addr = (mmTPC4_CMDQ_CQ_CFG0 & ~0xFFF) + PROT_BITS_OFFS;
1606 	word_offset = ((mmTPC4_CMDQ_CQ_CFG0 & PROT_BITS_OFFS) >> 7) << 2;
1607 	mask = 1 << ((mmTPC4_CMDQ_CQ_CFG0 & 0x7F) >> 2);
1608 	mask |= 1 << ((mmTPC4_CMDQ_CQ_CFG1 & 0x7F) >> 2);
1609 	mask |= 1 << ((mmTPC4_CMDQ_CQ_ARUSER & 0x7F) >> 2);
1610 	mask |= 1 << ((mmTPC4_CMDQ_CQ_PTR_LO_STS & 0x7F) >> 2);
1611 	mask |= 1 << ((mmTPC4_CMDQ_CQ_PTR_HI_STS & 0x7F) >> 2);
1612 	mask |= 1 << ((mmTPC4_CMDQ_CQ_TSIZE_STS & 0x7F) >> 2);
1613 	mask |= 1 << ((mmTPC4_CMDQ_CQ_CTL_STS & 0x7F) >> 2);
1614 	mask |= 1 << ((mmTPC4_CMDQ_CQ_STS0 & 0x7F) >> 2);
1615 	mask |= 1 << ((mmTPC4_CMDQ_CQ_STS1 & 0x7F) >> 2);
1616 	mask |= 1 << ((mmTPC4_CMDQ_CQ_RD_RATE_LIM_EN & 0x7F) >> 2);
1617 	mask |= 1 << ((mmTPC4_CMDQ_CQ_RD_RATE_LIM_RST_TOKEN & 0x7F) >> 2);
1618 	mask |= 1 << ((mmTPC4_CMDQ_CQ_RD_RATE_LIM_SAT & 0x7F) >> 2);
1619 	mask |= 1 << ((mmTPC4_CMDQ_CQ_RD_RATE_LIM_TOUT & 0x7F) >> 2);
1620 
1621 	WREG32(pb_addr + word_offset, ~mask);
1622 
1623 	pb_addr = (mmTPC4_CMDQ_CQ_IFIFO_CNT & ~0xFFF) + PROT_BITS_OFFS;
1624 	word_offset = ((mmTPC4_CMDQ_CQ_IFIFO_CNT & PROT_BITS_OFFS) >> 7) << 2;
1625 	mask = 1 << ((mmTPC4_CMDQ_CQ_IFIFO_CNT & 0x7F) >> 2);
1626 	mask |= 1 << ((mmTPC4_CMDQ_CP_MSG_BASE0_ADDR_LO & 0x7F) >> 2);
1627 	mask |= 1 << ((mmTPC4_CMDQ_CP_MSG_BASE0_ADDR_HI & 0x7F) >> 2);
1628 	mask |= 1 << ((mmTPC4_CMDQ_CP_MSG_BASE1_ADDR_LO & 0x7F) >> 2);
1629 	mask |= 1 << ((mmTPC4_CMDQ_CP_MSG_BASE1_ADDR_HI & 0x7F) >> 2);
1630 	mask |= 1 << ((mmTPC4_CMDQ_CP_MSG_BASE2_ADDR_LO & 0x7F) >> 2);
1631 	mask |= 1 << ((mmTPC4_CMDQ_CP_MSG_BASE2_ADDR_HI & 0x7F) >> 2);
1632 	mask |= 1 << ((mmTPC4_CMDQ_CP_MSG_BASE3_ADDR_LO & 0x7F) >> 2);
1633 	mask |= 1 << ((mmTPC4_CMDQ_CP_MSG_BASE3_ADDR_HI & 0x7F) >> 2);
1634 	mask |= 1 << ((mmTPC4_CMDQ_CP_LDMA_TSIZE_OFFSET & 0x7F) >> 2);
1635 	mask |= 1 << ((mmTPC4_CMDQ_CP_LDMA_SRC_BASE_LO_OFFSET & 0x7F) >> 2);
1636 	mask |= 1 << ((mmTPC4_CMDQ_CP_LDMA_SRC_BASE_HI_OFFSET & 0x7F) >> 2);
1637 	mask |= 1 << ((mmTPC4_CMDQ_CP_LDMA_DST_BASE_LO_OFFSET & 0x7F) >> 2);
1638 	mask |= 1 << ((mmTPC4_CMDQ_CP_LDMA_DST_BASE_HI_OFFSET & 0x7F) >> 2);
1639 	mask |= 1 << ((mmTPC4_CMDQ_CP_LDMA_COMMIT_OFFSET & 0x7F) >> 2);
1640 	mask |= 1 << ((mmTPC4_CMDQ_CP_STS & 0x7F) >> 2);
1641 	mask |= 1 << ((mmTPC4_CMDQ_CP_CURRENT_INST_LO & 0x7F) >> 2);
1642 
1643 	WREG32(pb_addr + word_offset, ~mask);
1644 
1645 	pb_addr = (mmTPC4_CMDQ_CP_CURRENT_INST_HI & ~0xFFF) + PROT_BITS_OFFS;
1646 	word_offset = ((mmTPC4_CMDQ_CP_CURRENT_INST_HI & PROT_BITS_OFFS) >> 7)
1647 			<< 2;
1648 	mask = 1 << ((mmTPC4_CMDQ_CP_CURRENT_INST_HI & 0x7F) >> 2);
1649 	mask |= 1 << ((mmTPC4_CMDQ_CP_BARRIER_CFG & 0x7F) >> 2);
1650 	mask |= 1 << ((mmTPC4_CMDQ_CP_DBG_0 & 0x7F) >> 2);
1651 	mask |= 1 << ((mmTPC4_CMDQ_CQ_BUF_ADDR & 0x7F) >> 2);
1652 	mask |= 1 << ((mmTPC4_CMDQ_CQ_BUF_RDATA & 0x7F) >> 2);
1653 
1654 	WREG32(pb_addr + word_offset, ~mask);
1655 
1656 	goya_pb_set_block(hdev, mmTPC5_RTR_BASE);
1657 	goya_pb_set_block(hdev, mmTPC5_RD_REGULATOR_BASE);
1658 	goya_pb_set_block(hdev, mmTPC5_WR_REGULATOR_BASE);
1659 
1660 	pb_addr = (mmTPC5_CFG_SEMAPHORE & ~0xFFF) + PROT_BITS_OFFS;
1661 	word_offset = ((mmTPC5_CFG_SEMAPHORE & PROT_BITS_OFFS) >> 7) << 2;
1662 
1663 	mask = 1 << ((mmTPC5_CFG_SEMAPHORE & 0x7F) >> 2);
1664 	mask |= 1 << ((mmTPC5_CFG_VFLAGS & 0x7F) >> 2);
1665 	mask |= 1 << ((mmTPC5_CFG_SFLAGS & 0x7F) >> 2);
1666 	mask |= 1 << ((mmTPC5_CFG_STATUS & 0x7F) >> 2);
1667 
1668 	WREG32(pb_addr + word_offset, ~mask);
1669 
1670 	pb_addr = (mmTPC5_CFG_CFG_BASE_ADDRESS_HIGH & ~0xFFF) + PROT_BITS_OFFS;
1671 	word_offset = ((mmTPC5_CFG_CFG_BASE_ADDRESS_HIGH &
1672 			PROT_BITS_OFFS) >> 7) << 2;
1673 	mask = 1 << ((mmTPC5_CFG_CFG_BASE_ADDRESS_HIGH & 0x7F) >> 2);
1674 	mask |= 1 << ((mmTPC5_CFG_CFG_SUBTRACT_VALUE & 0x7F) >> 2);
1675 	mask |= 1 << ((mmTPC5_CFG_SM_BASE_ADDRESS_LOW & 0x7F) >> 2);
1676 	mask |= 1 << ((mmTPC5_CFG_SM_BASE_ADDRESS_HIGH & 0x7F) >> 2);
1677 	mask |= 1 << ((mmTPC5_CFG_TPC_STALL & 0x7F) >> 2);
1678 	mask |= 1 << ((mmTPC5_CFG_MSS_CONFIG & 0x7F) >> 2);
1679 	mask |= 1 << ((mmTPC5_CFG_TPC_INTR_CAUSE & 0x7F) >> 2);
1680 	mask |= 1 << ((mmTPC5_CFG_TPC_INTR_MASK & 0x7F) >> 2);
1681 
1682 	WREG32(pb_addr + word_offset, ~mask);
1683 
1684 	pb_addr = (mmTPC5_CFG_ARUSER & ~0xFFF) + PROT_BITS_OFFS;
1685 	word_offset = ((mmTPC5_CFG_ARUSER & PROT_BITS_OFFS) >> 7) << 2;
1686 	mask = 1 << ((mmTPC5_CFG_ARUSER & 0x7F) >> 2);
1687 	mask |= 1 << ((mmTPC5_CFG_AWUSER & 0x7F) >> 2);
1688 
1689 	WREG32(pb_addr + word_offset, ~mask);
1690 
1691 	pb_addr = (mmTPC5_CFG_FUNC_MBIST_CNTRL & ~0xFFF) + PROT_BITS_OFFS;
1692 	word_offset = ((mmTPC5_CFG_FUNC_MBIST_CNTRL &
1693 			PROT_BITS_OFFS) >> 7) << 2;
1694 	mask = 1 << ((mmTPC5_CFG_FUNC_MBIST_CNTRL & 0x7F) >> 2);
1695 	mask |= 1 << ((mmTPC5_CFG_FUNC_MBIST_PAT & 0x7F) >> 2);
1696 	mask |= 1 << ((mmTPC5_CFG_FUNC_MBIST_MEM_0 & 0x7F) >> 2);
1697 	mask |= 1 << ((mmTPC5_CFG_FUNC_MBIST_MEM_1 & 0x7F) >> 2);
1698 	mask |= 1 << ((mmTPC5_CFG_FUNC_MBIST_MEM_2 & 0x7F) >> 2);
1699 	mask |= 1 << ((mmTPC5_CFG_FUNC_MBIST_MEM_3 & 0x7F) >> 2);
1700 	mask |= 1 << ((mmTPC5_CFG_FUNC_MBIST_MEM_4 & 0x7F) >> 2);
1701 	mask |= 1 << ((mmTPC5_CFG_FUNC_MBIST_MEM_5 & 0x7F) >> 2);
1702 	mask |= 1 << ((mmTPC5_CFG_FUNC_MBIST_MEM_6 & 0x7F) >> 2);
1703 	mask |= 1 << ((mmTPC5_CFG_FUNC_MBIST_MEM_7 & 0x7F) >> 2);
1704 	mask |= 1 << ((mmTPC5_CFG_FUNC_MBIST_MEM_8 & 0x7F) >> 2);
1705 	mask |= 1 << ((mmTPC5_CFG_FUNC_MBIST_MEM_9 & 0x7F) >> 2);
1706 
1707 	WREG32(pb_addr + word_offset, ~mask);
1708 
1709 	pb_addr = (mmTPC5_QM_GLBL_CFG0 & ~0xFFF) + PROT_BITS_OFFS;
1710 	word_offset = ((mmTPC5_QM_GLBL_CFG0 & PROT_BITS_OFFS) >> 7) << 2;
1711 	mask = 1 << ((mmTPC5_QM_GLBL_CFG0 & 0x7F) >> 2);
1712 	mask |= 1 << ((mmTPC5_QM_GLBL_CFG1 & 0x7F) >> 2);
1713 	mask |= 1 << ((mmTPC5_QM_GLBL_PROT & 0x7F) >> 2);
1714 	mask |= 1 << ((mmTPC5_QM_GLBL_ERR_CFG & 0x7F) >> 2);
1715 	mask |= 1 << ((mmTPC5_QM_GLBL_ERR_ADDR_LO & 0x7F) >> 2);
1716 	mask |= 1 << ((mmTPC5_QM_GLBL_ERR_ADDR_HI & 0x7F) >> 2);
1717 	mask |= 1 << ((mmTPC5_QM_GLBL_ERR_WDATA & 0x7F) >> 2);
1718 	mask |= 1 << ((mmTPC5_QM_GLBL_SECURE_PROPS & 0x7F) >> 2);
1719 	mask |= 1 << ((mmTPC5_QM_GLBL_NON_SECURE_PROPS & 0x7F) >> 2);
1720 	mask |= 1 << ((mmTPC5_QM_GLBL_STS0 & 0x7F) >> 2);
1721 	mask |= 1 << ((mmTPC5_QM_GLBL_STS1 & 0x7F) >> 2);
1722 	mask |= 1 << ((mmTPC5_QM_PQ_BASE_LO & 0x7F) >> 2);
1723 	mask |= 1 << ((mmTPC5_QM_PQ_BASE_HI & 0x7F) >> 2);
1724 	mask |= 1 << ((mmTPC5_QM_PQ_SIZE & 0x7F) >> 2);
1725 	mask |= 1 << ((mmTPC5_QM_PQ_PI & 0x7F) >> 2);
1726 	mask |= 1 << ((mmTPC5_QM_PQ_CI & 0x7F) >> 2);
1727 	mask |= 1 << ((mmTPC5_QM_PQ_CFG0 & 0x7F) >> 2);
1728 	mask |= 1 << ((mmTPC5_QM_PQ_CFG1 & 0x7F) >> 2);
1729 	mask |= 1 << ((mmTPC5_QM_PQ_ARUSER & 0x7F) >> 2);
1730 
1731 	WREG32(pb_addr + word_offset, ~mask);
1732 
1733 	pb_addr = (mmTPC5_QM_PQ_PUSH0 & ~0xFFF) + PROT_BITS_OFFS;
1734 	word_offset = ((mmTPC5_QM_PQ_PUSH0 & PROT_BITS_OFFS) >> 7) << 2;
1735 	mask = 1 << ((mmTPC5_QM_PQ_PUSH0 & 0x7F) >> 2);
1736 	mask |= 1 << ((mmTPC5_QM_PQ_PUSH1 & 0x7F) >> 2);
1737 	mask |= 1 << ((mmTPC5_QM_PQ_PUSH2 & 0x7F) >> 2);
1738 	mask |= 1 << ((mmTPC5_QM_PQ_PUSH3 & 0x7F) >> 2);
1739 	mask |= 1 << ((mmTPC5_QM_PQ_STS0 & 0x7F) >> 2);
1740 	mask |= 1 << ((mmTPC5_QM_PQ_STS1 & 0x7F) >> 2);
1741 	mask |= 1 << ((mmTPC5_QM_PQ_RD_RATE_LIM_EN & 0x7F) >> 2);
1742 	mask |= 1 << ((mmTPC5_QM_PQ_RD_RATE_LIM_RST_TOKEN & 0x7F) >> 2);
1743 	mask |= 1 << ((mmTPC5_QM_PQ_RD_RATE_LIM_SAT & 0x7F) >> 2);
1744 	mask |= 1 << ((mmTPC5_QM_PQ_RD_RATE_LIM_TOUT & 0x7F) >> 2);
1745 	mask |= 1 << ((mmTPC5_QM_CQ_CFG0 & 0x7F) >> 2);
1746 	mask |= 1 << ((mmTPC5_QM_CQ_CFG1 & 0x7F) >> 2);
1747 	mask |= 1 << ((mmTPC5_QM_CQ_ARUSER & 0x7F) >> 2);
1748 	mask |= 1 << ((mmTPC5_QM_CQ_PTR_LO & 0x7F) >> 2);
1749 	mask |= 1 << ((mmTPC5_QM_CQ_PTR_HI & 0x7F) >> 2);
1750 	mask |= 1 << ((mmTPC5_QM_CQ_TSIZE & 0x7F) >> 2);
1751 	mask |= 1 << ((mmTPC5_QM_CQ_CTL & 0x7F) >> 2);
1752 	mask |= 1 << ((mmTPC5_QM_CQ_PTR_LO_STS & 0x7F) >> 2);
1753 	mask |= 1 << ((mmTPC5_QM_CQ_PTR_HI_STS & 0x7F) >> 2);
1754 	mask |= 1 << ((mmTPC5_QM_CQ_TSIZE_STS & 0x7F) >> 2);
1755 	mask |= 1 << ((mmTPC5_QM_CQ_CTL_STS & 0x7F) >> 2);
1756 	mask |= 1 << ((mmTPC5_QM_CQ_STS0 & 0x7F) >> 2);
1757 	mask |= 1 << ((mmTPC5_QM_CQ_STS1 & 0x7F) >> 2);
1758 	mask |= 1 << ((mmTPC5_QM_CQ_RD_RATE_LIM_EN & 0x7F) >> 2);
1759 	mask |= 1 << ((mmTPC5_QM_CQ_RD_RATE_LIM_RST_TOKEN & 0x7F) >> 2);
1760 	mask |= 1 << ((mmTPC5_QM_CQ_RD_RATE_LIM_SAT & 0x7F) >> 2);
1761 	mask |= 1 << ((mmTPC5_QM_CQ_RD_RATE_LIM_TOUT & 0x7F) >> 2);
1762 
1763 	WREG32(pb_addr + word_offset, ~mask);
1764 
1765 	pb_addr = (mmTPC5_QM_CQ_IFIFO_CNT & ~0xFFF) + PROT_BITS_OFFS;
1766 	word_offset = ((mmTPC5_QM_CQ_IFIFO_CNT & PROT_BITS_OFFS) >> 7) << 2;
1767 	mask = 1 << ((mmTPC5_QM_CQ_IFIFO_CNT & 0x7F) >> 2);
1768 	mask |= 1 << ((mmTPC5_QM_CP_MSG_BASE0_ADDR_LO & 0x7F) >> 2);
1769 	mask |= 1 << ((mmTPC5_QM_CP_MSG_BASE0_ADDR_HI & 0x7F) >> 2);
1770 	mask |= 1 << ((mmTPC5_QM_CP_MSG_BASE1_ADDR_LO & 0x7F) >> 2);
1771 	mask |= 1 << ((mmTPC5_QM_CP_MSG_BASE1_ADDR_HI & 0x7F) >> 2);
1772 	mask |= 1 << ((mmTPC5_QM_CP_MSG_BASE2_ADDR_LO & 0x7F) >> 2);
1773 	mask |= 1 << ((mmTPC5_QM_CP_MSG_BASE2_ADDR_HI & 0x7F) >> 2);
1774 	mask |= 1 << ((mmTPC5_QM_CP_MSG_BASE3_ADDR_LO & 0x7F) >> 2);
1775 	mask |= 1 << ((mmTPC5_QM_CP_MSG_BASE3_ADDR_HI & 0x7F) >> 2);
1776 	mask |= 1 << ((mmTPC5_QM_CP_LDMA_TSIZE_OFFSET & 0x7F) >> 2);
1777 	mask |= 1 << ((mmTPC5_QM_CP_LDMA_SRC_BASE_LO_OFFSET & 0x7F) >> 2);
1778 	mask |= 1 << ((mmTPC5_QM_CP_LDMA_SRC_BASE_HI_OFFSET & 0x7F) >> 2);
1779 	mask |= 1 << ((mmTPC5_QM_CP_LDMA_DST_BASE_LO_OFFSET & 0x7F) >> 2);
1780 	mask |= 1 << ((mmTPC5_QM_CP_LDMA_DST_BASE_HI_OFFSET & 0x7F) >> 2);
1781 	mask |= 1 << ((mmTPC5_QM_CP_LDMA_COMMIT_OFFSET & 0x7F) >> 2);
1782 
1783 	WREG32(pb_addr + word_offset, ~mask);
1784 
1785 	pb_addr = (mmTPC5_CMDQ_GLBL_CFG0 & ~0xFFF) + PROT_BITS_OFFS;
1786 	word_offset = ((mmTPC5_CMDQ_GLBL_CFG0 & PROT_BITS_OFFS) >> 7) << 2;
1787 	mask = 1 << ((mmTPC5_CMDQ_GLBL_CFG0 & 0x7F) >> 2);
1788 	mask |= 1 << ((mmTPC5_CMDQ_GLBL_CFG1 & 0x7F) >> 2);
1789 	mask |= 1 << ((mmTPC5_CMDQ_GLBL_PROT & 0x7F) >> 2);
1790 	mask |= 1 << ((mmTPC5_CMDQ_GLBL_ERR_CFG & 0x7F) >> 2);
1791 	mask |= 1 << ((mmTPC5_CMDQ_GLBL_ERR_ADDR_LO & 0x7F) >> 2);
1792 	mask |= 1 << ((mmTPC5_CMDQ_GLBL_ERR_ADDR_HI & 0x7F) >> 2);
1793 	mask |= 1 << ((mmTPC5_CMDQ_GLBL_ERR_WDATA & 0x7F) >> 2);
1794 	mask |= 1 << ((mmTPC5_CMDQ_GLBL_SECURE_PROPS & 0x7F) >> 2);
1795 	mask |= 1 << ((mmTPC5_CMDQ_GLBL_NON_SECURE_PROPS & 0x7F) >> 2);
1796 	mask |= 1 << ((mmTPC5_CMDQ_GLBL_STS0 & 0x7F) >> 2);
1797 	mask |= 1 << ((mmTPC5_CMDQ_GLBL_STS1 & 0x7F) >> 2);
1798 
1799 	WREG32(pb_addr + word_offset, ~mask);
1800 
1801 	pb_addr = (mmTPC5_CMDQ_CQ_CFG0 & ~0xFFF) + PROT_BITS_OFFS;
1802 	word_offset = ((mmTPC5_CMDQ_CQ_CFG0 & PROT_BITS_OFFS) >> 7) << 2;
1803 	mask = 1 << ((mmTPC5_CMDQ_CQ_CFG0 & 0x7F) >> 2);
1804 	mask |= 1 << ((mmTPC5_CMDQ_CQ_CFG1 & 0x7F) >> 2);
1805 	mask |= 1 << ((mmTPC5_CMDQ_CQ_ARUSER & 0x7F) >> 2);
1806 	mask |= 1 << ((mmTPC5_CMDQ_CQ_PTR_LO_STS & 0x7F) >> 2);
1807 	mask |= 1 << ((mmTPC5_CMDQ_CQ_PTR_HI_STS & 0x7F) >> 2);
1808 	mask |= 1 << ((mmTPC5_CMDQ_CQ_TSIZE_STS & 0x7F) >> 2);
1809 	mask |= 1 << ((mmTPC5_CMDQ_CQ_CTL_STS & 0x7F) >> 2);
1810 	mask |= 1 << ((mmTPC5_CMDQ_CQ_STS0 & 0x7F) >> 2);
1811 	mask |= 1 << ((mmTPC5_CMDQ_CQ_STS1 & 0x7F) >> 2);
1812 	mask |= 1 << ((mmTPC5_CMDQ_CQ_RD_RATE_LIM_EN & 0x7F) >> 2);
1813 	mask |= 1 << ((mmTPC5_CMDQ_CQ_RD_RATE_LIM_RST_TOKEN & 0x7F) >> 2);
1814 	mask |= 1 << ((mmTPC5_CMDQ_CQ_RD_RATE_LIM_SAT & 0x7F) >> 2);
1815 	mask |= 1 << ((mmTPC5_CMDQ_CQ_RD_RATE_LIM_TOUT & 0x7F) >> 2);
1816 
1817 	WREG32(pb_addr + word_offset, ~mask);
1818 
1819 	pb_addr = (mmTPC5_CMDQ_CQ_IFIFO_CNT & ~0xFFF) + PROT_BITS_OFFS;
1820 	word_offset = ((mmTPC5_CMDQ_CQ_IFIFO_CNT & PROT_BITS_OFFS) >> 7) << 2;
1821 	mask = 1 << ((mmTPC5_CMDQ_CQ_IFIFO_CNT & 0x7F) >> 2);
1822 	mask |= 1 << ((mmTPC5_CMDQ_CP_MSG_BASE0_ADDR_LO & 0x7F) >> 2);
1823 	mask |= 1 << ((mmTPC5_CMDQ_CP_MSG_BASE0_ADDR_HI & 0x7F) >> 2);
1824 	mask |= 1 << ((mmTPC5_CMDQ_CP_MSG_BASE1_ADDR_LO & 0x7F) >> 2);
1825 	mask |= 1 << ((mmTPC5_CMDQ_CP_MSG_BASE1_ADDR_HI & 0x7F) >> 2);
1826 	mask |= 1 << ((mmTPC5_CMDQ_CP_MSG_BASE2_ADDR_LO & 0x7F) >> 2);
1827 	mask |= 1 << ((mmTPC5_CMDQ_CP_MSG_BASE2_ADDR_HI & 0x7F) >> 2);
1828 	mask |= 1 << ((mmTPC5_CMDQ_CP_MSG_BASE3_ADDR_LO & 0x7F) >> 2);
1829 	mask |= 1 << ((mmTPC5_CMDQ_CP_MSG_BASE3_ADDR_HI & 0x7F) >> 2);
1830 	mask |= 1 << ((mmTPC5_CMDQ_CP_LDMA_TSIZE_OFFSET & 0x7F) >> 2);
1831 	mask |= 1 << ((mmTPC5_CMDQ_CP_LDMA_SRC_BASE_LO_OFFSET & 0x7F) >> 2);
1832 	mask |= 1 << ((mmTPC5_CMDQ_CP_LDMA_SRC_BASE_HI_OFFSET & 0x7F) >> 2);
1833 	mask |= 1 << ((mmTPC5_CMDQ_CP_LDMA_DST_BASE_LO_OFFSET & 0x7F) >> 2);
1834 	mask |= 1 << ((mmTPC5_CMDQ_CP_LDMA_DST_BASE_HI_OFFSET & 0x7F) >> 2);
1835 	mask |= 1 << ((mmTPC5_CMDQ_CP_LDMA_COMMIT_OFFSET & 0x7F) >> 2);
1836 	mask |= 1 << ((mmTPC5_CMDQ_CP_STS & 0x7F) >> 2);
1837 	mask |= 1 << ((mmTPC5_CMDQ_CP_CURRENT_INST_LO & 0x7F) >> 2);
1838 
1839 	WREG32(pb_addr + word_offset, ~mask);
1840 
1841 	pb_addr = (mmTPC5_CMDQ_CP_CURRENT_INST_HI & ~0xFFF) + PROT_BITS_OFFS;
1842 	word_offset = ((mmTPC5_CMDQ_CP_CURRENT_INST_HI & PROT_BITS_OFFS) >> 7)
1843 			<< 2;
1844 	mask = 1 << ((mmTPC5_CMDQ_CP_CURRENT_INST_HI & 0x7F) >> 2);
1845 	mask |= 1 << ((mmTPC5_CMDQ_CP_BARRIER_CFG & 0x7F) >> 2);
1846 	mask |= 1 << ((mmTPC5_CMDQ_CP_DBG_0 & 0x7F) >> 2);
1847 	mask |= 1 << ((mmTPC5_CMDQ_CQ_BUF_ADDR & 0x7F) >> 2);
1848 	mask |= 1 << ((mmTPC5_CMDQ_CQ_BUF_RDATA & 0x7F) >> 2);
1849 
1850 	WREG32(pb_addr + word_offset, ~mask);
1851 
1852 	goya_pb_set_block(hdev, mmTPC6_RTR_BASE);
1853 	goya_pb_set_block(hdev, mmTPC6_RD_REGULATOR_BASE);
1854 	goya_pb_set_block(hdev, mmTPC6_WR_REGULATOR_BASE);
1855 
1856 	pb_addr = (mmTPC6_CFG_SEMAPHORE & ~0xFFF) + PROT_BITS_OFFS;
1857 	word_offset = ((mmTPC6_CFG_SEMAPHORE & PROT_BITS_OFFS) >> 7) << 2;
1858 
1859 	mask = 1 << ((mmTPC6_CFG_SEMAPHORE & 0x7F) >> 2);
1860 	mask |= 1 << ((mmTPC6_CFG_VFLAGS & 0x7F) >> 2);
1861 	mask |= 1 << ((mmTPC6_CFG_SFLAGS & 0x7F) >> 2);
1862 	mask |= 1 << ((mmTPC6_CFG_STATUS & 0x7F) >> 2);
1863 
1864 	WREG32(pb_addr + word_offset, ~mask);
1865 
1866 	pb_addr = (mmTPC6_CFG_CFG_BASE_ADDRESS_HIGH & ~0xFFF) + PROT_BITS_OFFS;
1867 	word_offset = ((mmTPC6_CFG_CFG_BASE_ADDRESS_HIGH &
1868 			PROT_BITS_OFFS) >> 7) << 2;
1869 	mask = 1 << ((mmTPC6_CFG_CFG_BASE_ADDRESS_HIGH & 0x7F) >> 2);
1870 	mask |= 1 << ((mmTPC6_CFG_CFG_SUBTRACT_VALUE & 0x7F) >> 2);
1871 	mask |= 1 << ((mmTPC6_CFG_SM_BASE_ADDRESS_LOW & 0x7F) >> 2);
1872 	mask |= 1 << ((mmTPC6_CFG_SM_BASE_ADDRESS_HIGH & 0x7F) >> 2);
1873 	mask |= 1 << ((mmTPC6_CFG_TPC_STALL & 0x7F) >> 2);
1874 	mask |= 1 << ((mmTPC6_CFG_MSS_CONFIG & 0x7F) >> 2);
1875 	mask |= 1 << ((mmTPC6_CFG_TPC_INTR_CAUSE & 0x7F) >> 2);
1876 	mask |= 1 << ((mmTPC6_CFG_TPC_INTR_MASK & 0x7F) >> 2);
1877 
1878 	WREG32(pb_addr + word_offset, ~mask);
1879 
1880 	pb_addr = (mmTPC6_CFG_ARUSER & ~0xFFF) + PROT_BITS_OFFS;
1881 	word_offset = ((mmTPC6_CFG_ARUSER & PROT_BITS_OFFS) >> 7) << 2;
1882 	mask = 1 << ((mmTPC6_CFG_ARUSER & 0x7F) >> 2);
1883 	mask |= 1 << ((mmTPC6_CFG_AWUSER & 0x7F) >> 2);
1884 
1885 	WREG32(pb_addr + word_offset, ~mask);
1886 
1887 	pb_addr = (mmTPC6_CFG_FUNC_MBIST_CNTRL & ~0xFFF) + PROT_BITS_OFFS;
1888 	word_offset = ((mmTPC6_CFG_FUNC_MBIST_CNTRL &
1889 			PROT_BITS_OFFS) >> 7) << 2;
1890 	mask = 1 << ((mmTPC6_CFG_FUNC_MBIST_CNTRL & 0x7F) >> 2);
1891 	mask |= 1 << ((mmTPC6_CFG_FUNC_MBIST_PAT & 0x7F) >> 2);
1892 	mask |= 1 << ((mmTPC6_CFG_FUNC_MBIST_MEM_0 & 0x7F) >> 2);
1893 	mask |= 1 << ((mmTPC6_CFG_FUNC_MBIST_MEM_1 & 0x7F) >> 2);
1894 	mask |= 1 << ((mmTPC6_CFG_FUNC_MBIST_MEM_2 & 0x7F) >> 2);
1895 	mask |= 1 << ((mmTPC6_CFG_FUNC_MBIST_MEM_3 & 0x7F) >> 2);
1896 	mask |= 1 << ((mmTPC6_CFG_FUNC_MBIST_MEM_4 & 0x7F) >> 2);
1897 	mask |= 1 << ((mmTPC6_CFG_FUNC_MBIST_MEM_5 & 0x7F) >> 2);
1898 	mask |= 1 << ((mmTPC6_CFG_FUNC_MBIST_MEM_6 & 0x7F) >> 2);
1899 	mask |= 1 << ((mmTPC6_CFG_FUNC_MBIST_MEM_7 & 0x7F) >> 2);
1900 	mask |= 1 << ((mmTPC6_CFG_FUNC_MBIST_MEM_8 & 0x7F) >> 2);
1901 	mask |= 1 << ((mmTPC6_CFG_FUNC_MBIST_MEM_9 & 0x7F) >> 2);
1902 
1903 	WREG32(pb_addr + word_offset, ~mask);
1904 
1905 	pb_addr = (mmTPC6_QM_GLBL_CFG0 & ~0xFFF) + PROT_BITS_OFFS;
1906 	word_offset = ((mmTPC6_QM_GLBL_CFG0 & PROT_BITS_OFFS) >> 7) << 2;
1907 	mask = 1 << ((mmTPC6_QM_GLBL_CFG0 & 0x7F) >> 2);
1908 	mask |= 1 << ((mmTPC6_QM_GLBL_CFG1 & 0x7F) >> 2);
1909 	mask |= 1 << ((mmTPC6_QM_GLBL_PROT & 0x7F) >> 2);
1910 	mask |= 1 << ((mmTPC6_QM_GLBL_ERR_CFG & 0x7F) >> 2);
1911 	mask |= 1 << ((mmTPC6_QM_GLBL_ERR_ADDR_LO & 0x7F) >> 2);
1912 	mask |= 1 << ((mmTPC6_QM_GLBL_ERR_ADDR_HI & 0x7F) >> 2);
1913 	mask |= 1 << ((mmTPC6_QM_GLBL_ERR_WDATA & 0x7F) >> 2);
1914 	mask |= 1 << ((mmTPC6_QM_GLBL_SECURE_PROPS & 0x7F) >> 2);
1915 	mask |= 1 << ((mmTPC6_QM_GLBL_NON_SECURE_PROPS & 0x7F) >> 2);
1916 	mask |= 1 << ((mmTPC6_QM_GLBL_STS0 & 0x7F) >> 2);
1917 	mask |= 1 << ((mmTPC6_QM_GLBL_STS1 & 0x7F) >> 2);
1918 	mask |= 1 << ((mmTPC6_QM_PQ_BASE_LO & 0x7F) >> 2);
1919 	mask |= 1 << ((mmTPC6_QM_PQ_BASE_HI & 0x7F) >> 2);
1920 	mask |= 1 << ((mmTPC6_QM_PQ_SIZE & 0x7F) >> 2);
1921 	mask |= 1 << ((mmTPC6_QM_PQ_PI & 0x7F) >> 2);
1922 	mask |= 1 << ((mmTPC6_QM_PQ_CI & 0x7F) >> 2);
1923 	mask |= 1 << ((mmTPC6_QM_PQ_CFG0 & 0x7F) >> 2);
1924 	mask |= 1 << ((mmTPC6_QM_PQ_CFG1 & 0x7F) >> 2);
1925 	mask |= 1 << ((mmTPC6_QM_PQ_ARUSER & 0x7F) >> 2);
1926 
1927 	WREG32(pb_addr + word_offset, ~mask);
1928 
1929 	pb_addr = (mmTPC6_QM_PQ_PUSH0 & ~0xFFF) + PROT_BITS_OFFS;
1930 	word_offset = ((mmTPC6_QM_PQ_PUSH0 & PROT_BITS_OFFS) >> 7) << 2;
1931 	mask = 1 << ((mmTPC6_QM_PQ_PUSH0 & 0x7F) >> 2);
1932 	mask |= 1 << ((mmTPC6_QM_PQ_PUSH1 & 0x7F) >> 2);
1933 	mask |= 1 << ((mmTPC6_QM_PQ_PUSH2 & 0x7F) >> 2);
1934 	mask |= 1 << ((mmTPC6_QM_PQ_PUSH3 & 0x7F) >> 2);
1935 	mask |= 1 << ((mmTPC6_QM_PQ_STS0 & 0x7F) >> 2);
1936 	mask |= 1 << ((mmTPC6_QM_PQ_STS1 & 0x7F) >> 2);
1937 	mask |= 1 << ((mmTPC6_QM_PQ_RD_RATE_LIM_EN & 0x7F) >> 2);
1938 	mask |= 1 << ((mmTPC6_QM_PQ_RD_RATE_LIM_RST_TOKEN & 0x7F) >> 2);
1939 	mask |= 1 << ((mmTPC6_QM_PQ_RD_RATE_LIM_SAT & 0x7F) >> 2);
1940 	mask |= 1 << ((mmTPC6_QM_PQ_RD_RATE_LIM_TOUT & 0x7F) >> 2);
1941 	mask |= 1 << ((mmTPC6_QM_CQ_CFG0 & 0x7F) >> 2);
1942 	mask |= 1 << ((mmTPC6_QM_CQ_CFG1 & 0x7F) >> 2);
1943 	mask |= 1 << ((mmTPC6_QM_CQ_ARUSER & 0x7F) >> 2);
1944 	mask |= 1 << ((mmTPC6_QM_CQ_PTR_LO & 0x7F) >> 2);
1945 	mask |= 1 << ((mmTPC6_QM_CQ_PTR_HI & 0x7F) >> 2);
1946 	mask |= 1 << ((mmTPC6_QM_CQ_TSIZE & 0x7F) >> 2);
1947 	mask |= 1 << ((mmTPC6_QM_CQ_CTL & 0x7F) >> 2);
1948 	mask |= 1 << ((mmTPC6_QM_CQ_PTR_LO_STS & 0x7F) >> 2);
1949 	mask |= 1 << ((mmTPC6_QM_CQ_PTR_HI_STS & 0x7F) >> 2);
1950 	mask |= 1 << ((mmTPC6_QM_CQ_TSIZE_STS & 0x7F) >> 2);
1951 	mask |= 1 << ((mmTPC6_QM_CQ_CTL_STS & 0x7F) >> 2);
1952 	mask |= 1 << ((mmTPC6_QM_CQ_STS0 & 0x7F) >> 2);
1953 	mask |= 1 << ((mmTPC6_QM_CQ_STS1 & 0x7F) >> 2);
1954 	mask |= 1 << ((mmTPC6_QM_CQ_RD_RATE_LIM_EN & 0x7F) >> 2);
1955 	mask |= 1 << ((mmTPC6_QM_CQ_RD_RATE_LIM_RST_TOKEN & 0x7F) >> 2);
1956 	mask |= 1 << ((mmTPC6_QM_CQ_RD_RATE_LIM_SAT & 0x7F) >> 2);
1957 	mask |= 1 << ((mmTPC6_QM_CQ_RD_RATE_LIM_TOUT & 0x7F) >> 2);
1958 
1959 	WREG32(pb_addr + word_offset, ~mask);
1960 
1961 	pb_addr = (mmTPC6_QM_CQ_IFIFO_CNT & ~0xFFF) + PROT_BITS_OFFS;
1962 	word_offset = ((mmTPC6_QM_CQ_IFIFO_CNT & PROT_BITS_OFFS) >> 7) << 2;
1963 	mask = 1 << ((mmTPC6_QM_CQ_IFIFO_CNT & 0x7F) >> 2);
1964 	mask |= 1 << ((mmTPC6_QM_CP_MSG_BASE0_ADDR_LO & 0x7F) >> 2);
1965 	mask |= 1 << ((mmTPC6_QM_CP_MSG_BASE0_ADDR_HI & 0x7F) >> 2);
1966 	mask |= 1 << ((mmTPC6_QM_CP_MSG_BASE1_ADDR_LO & 0x7F) >> 2);
1967 	mask |= 1 << ((mmTPC6_QM_CP_MSG_BASE1_ADDR_HI & 0x7F) >> 2);
1968 	mask |= 1 << ((mmTPC6_QM_CP_MSG_BASE2_ADDR_LO & 0x7F) >> 2);
1969 	mask |= 1 << ((mmTPC6_QM_CP_MSG_BASE2_ADDR_HI & 0x7F) >> 2);
1970 	mask |= 1 << ((mmTPC6_QM_CP_MSG_BASE3_ADDR_LO & 0x7F) >> 2);
1971 	mask |= 1 << ((mmTPC6_QM_CP_MSG_BASE3_ADDR_HI & 0x7F) >> 2);
1972 	mask |= 1 << ((mmTPC6_QM_CP_LDMA_TSIZE_OFFSET & 0x7F) >> 2);
1973 	mask |= 1 << ((mmTPC6_QM_CP_LDMA_SRC_BASE_LO_OFFSET & 0x7F) >> 2);
1974 	mask |= 1 << ((mmTPC6_QM_CP_LDMA_SRC_BASE_HI_OFFSET & 0x7F) >> 2);
1975 	mask |= 1 << ((mmTPC6_QM_CP_LDMA_DST_BASE_LO_OFFSET & 0x7F) >> 2);
1976 	mask |= 1 << ((mmTPC6_QM_CP_LDMA_DST_BASE_HI_OFFSET & 0x7F) >> 2);
1977 	mask |= 1 << ((mmTPC6_QM_CP_LDMA_COMMIT_OFFSET & 0x7F) >> 2);
1978 
1979 	WREG32(pb_addr + word_offset, ~mask);
1980 
1981 	pb_addr = (mmTPC6_CMDQ_GLBL_CFG0 & ~0xFFF) + PROT_BITS_OFFS;
1982 	word_offset = ((mmTPC6_CMDQ_GLBL_CFG0 & PROT_BITS_OFFS) >> 7) << 2;
1983 	mask = 1 << ((mmTPC6_CMDQ_GLBL_CFG0 & 0x7F) >> 2);
1984 	mask |= 1 << ((mmTPC6_CMDQ_GLBL_CFG1 & 0x7F) >> 2);
1985 	mask |= 1 << ((mmTPC6_CMDQ_GLBL_PROT & 0x7F) >> 2);
1986 	mask |= 1 << ((mmTPC6_CMDQ_GLBL_ERR_CFG & 0x7F) >> 2);
1987 	mask |= 1 << ((mmTPC6_CMDQ_GLBL_ERR_ADDR_LO & 0x7F) >> 2);
1988 	mask |= 1 << ((mmTPC6_CMDQ_GLBL_ERR_ADDR_HI & 0x7F) >> 2);
1989 	mask |= 1 << ((mmTPC6_CMDQ_GLBL_ERR_WDATA & 0x7F) >> 2);
1990 	mask |= 1 << ((mmTPC6_CMDQ_GLBL_SECURE_PROPS & 0x7F) >> 2);
1991 	mask |= 1 << ((mmTPC6_CMDQ_GLBL_NON_SECURE_PROPS & 0x7F) >> 2);
1992 	mask |= 1 << ((mmTPC6_CMDQ_GLBL_STS0 & 0x7F) >> 2);
1993 	mask |= 1 << ((mmTPC6_CMDQ_GLBL_STS1 & 0x7F) >> 2);
1994 
1995 	WREG32(pb_addr + word_offset, ~mask);
1996 
1997 	pb_addr = (mmTPC6_CMDQ_CQ_CFG0 & ~0xFFF) + PROT_BITS_OFFS;
1998 	word_offset = ((mmTPC6_CMDQ_CQ_CFG0 & PROT_BITS_OFFS) >> 7) << 2;
1999 	mask = 1 << ((mmTPC6_CMDQ_CQ_CFG0 & 0x7F) >> 2);
2000 	mask |= 1 << ((mmTPC6_CMDQ_CQ_CFG1 & 0x7F) >> 2);
2001 	mask |= 1 << ((mmTPC6_CMDQ_CQ_ARUSER & 0x7F) >> 2);
2002 	mask |= 1 << ((mmTPC6_CMDQ_CQ_PTR_LO_STS & 0x7F) >> 2);
2003 	mask |= 1 << ((mmTPC6_CMDQ_CQ_PTR_HI_STS & 0x7F) >> 2);
2004 	mask |= 1 << ((mmTPC6_CMDQ_CQ_TSIZE_STS & 0x7F) >> 2);
2005 	mask |= 1 << ((mmTPC6_CMDQ_CQ_CTL_STS & 0x7F) >> 2);
2006 	mask |= 1 << ((mmTPC6_CMDQ_CQ_STS0 & 0x7F) >> 2);
2007 	mask |= 1 << ((mmTPC6_CMDQ_CQ_STS1 & 0x7F) >> 2);
2008 	mask |= 1 << ((mmTPC6_CMDQ_CQ_RD_RATE_LIM_EN & 0x7F) >> 2);
2009 	mask |= 1 << ((mmTPC6_CMDQ_CQ_RD_RATE_LIM_RST_TOKEN & 0x7F) >> 2);
2010 	mask |= 1 << ((mmTPC6_CMDQ_CQ_RD_RATE_LIM_SAT & 0x7F) >> 2);
2011 	mask |= 1 << ((mmTPC6_CMDQ_CQ_RD_RATE_LIM_TOUT & 0x7F) >> 2);
2012 
2013 	WREG32(pb_addr + word_offset, ~mask);
2014 
2015 	pb_addr = (mmTPC6_CMDQ_CQ_IFIFO_CNT & ~0xFFF) + PROT_BITS_OFFS;
2016 	word_offset = ((mmTPC6_CMDQ_CQ_IFIFO_CNT & PROT_BITS_OFFS) >> 7) << 2;
2017 	mask = 1 << ((mmTPC6_CMDQ_CQ_IFIFO_CNT & 0x7F) >> 2);
2018 	mask |= 1 << ((mmTPC6_CMDQ_CP_MSG_BASE0_ADDR_LO & 0x7F) >> 2);
2019 	mask |= 1 << ((mmTPC6_CMDQ_CP_MSG_BASE0_ADDR_HI & 0x7F) >> 2);
2020 	mask |= 1 << ((mmTPC6_CMDQ_CP_MSG_BASE1_ADDR_LO & 0x7F) >> 2);
2021 	mask |= 1 << ((mmTPC6_CMDQ_CP_MSG_BASE1_ADDR_HI & 0x7F) >> 2);
2022 	mask |= 1 << ((mmTPC6_CMDQ_CP_MSG_BASE2_ADDR_LO & 0x7F) >> 2);
2023 	mask |= 1 << ((mmTPC6_CMDQ_CP_MSG_BASE2_ADDR_HI & 0x7F) >> 2);
2024 	mask |= 1 << ((mmTPC6_CMDQ_CP_MSG_BASE3_ADDR_LO & 0x7F) >> 2);
2025 	mask |= 1 << ((mmTPC6_CMDQ_CP_MSG_BASE3_ADDR_HI & 0x7F) >> 2);
2026 	mask |= 1 << ((mmTPC6_CMDQ_CP_LDMA_TSIZE_OFFSET & 0x7F) >> 2);
2027 	mask |= 1 << ((mmTPC6_CMDQ_CP_LDMA_SRC_BASE_LO_OFFSET & 0x7F) >> 2);
2028 	mask |= 1 << ((mmTPC6_CMDQ_CP_LDMA_SRC_BASE_HI_OFFSET & 0x7F) >> 2);
2029 	mask |= 1 << ((mmTPC6_CMDQ_CP_LDMA_DST_BASE_LO_OFFSET & 0x7F) >> 2);
2030 	mask |= 1 << ((mmTPC6_CMDQ_CP_LDMA_DST_BASE_HI_OFFSET & 0x7F) >> 2);
2031 	mask |= 1 << ((mmTPC6_CMDQ_CP_LDMA_COMMIT_OFFSET & 0x7F) >> 2);
2032 	mask |= 1 << ((mmTPC6_CMDQ_CP_STS & 0x7F) >> 2);
2033 	mask |= 1 << ((mmTPC6_CMDQ_CP_CURRENT_INST_LO & 0x7F) >> 2);
2034 
2035 	WREG32(pb_addr + word_offset, ~mask);
2036 
2037 	pb_addr = (mmTPC6_CMDQ_CP_CURRENT_INST_HI & ~0xFFF) + PROT_BITS_OFFS;
2038 	word_offset = ((mmTPC6_CMDQ_CP_CURRENT_INST_HI & PROT_BITS_OFFS) >> 7)
2039 			<< 2;
2040 	mask = 1 << ((mmTPC6_CMDQ_CP_CURRENT_INST_HI & 0x7F) >> 2);
2041 	mask |= 1 << ((mmTPC6_CMDQ_CP_BARRIER_CFG & 0x7F) >> 2);
2042 	mask |= 1 << ((mmTPC6_CMDQ_CP_DBG_0 & 0x7F) >> 2);
2043 	mask |= 1 << ((mmTPC6_CMDQ_CQ_BUF_ADDR & 0x7F) >> 2);
2044 	mask |= 1 << ((mmTPC6_CMDQ_CQ_BUF_RDATA & 0x7F) >> 2);
2045 
2046 	WREG32(pb_addr + word_offset, ~mask);
2047 
2048 	goya_pb_set_block(hdev, mmTPC7_NRTR_BASE);
2049 	goya_pb_set_block(hdev, mmTPC7_RD_REGULATOR_BASE);
2050 	goya_pb_set_block(hdev, mmTPC7_WR_REGULATOR_BASE);
2051 
2052 	pb_addr = (mmTPC7_CFG_SEMAPHORE & ~0xFFF) + PROT_BITS_OFFS;
2053 	word_offset = ((mmTPC7_CFG_SEMAPHORE & PROT_BITS_OFFS) >> 7) << 2;
2054 
2055 	mask = 1 << ((mmTPC7_CFG_SEMAPHORE & 0x7F) >> 2);
2056 	mask |= 1 << ((mmTPC7_CFG_VFLAGS & 0x7F) >> 2);
2057 	mask |= 1 << ((mmTPC7_CFG_SFLAGS & 0x7F) >> 2);
2058 	mask |= 1 << ((mmTPC7_CFG_STATUS & 0x7F) >> 2);
2059 
2060 	WREG32(pb_addr + word_offset, ~mask);
2061 
2062 	pb_addr = (mmTPC7_CFG_CFG_BASE_ADDRESS_HIGH & ~0xFFF) +	PROT_BITS_OFFS;
2063 	word_offset = ((mmTPC7_CFG_CFG_BASE_ADDRESS_HIGH &
2064 			PROT_BITS_OFFS) >> 7) << 2;
2065 	mask = 1 << ((mmTPC7_CFG_CFG_BASE_ADDRESS_HIGH & 0x7F) >> 2);
2066 	mask |= 1 << ((mmTPC7_CFG_CFG_SUBTRACT_VALUE & 0x7F) >> 2);
2067 	mask |= 1 << ((mmTPC7_CFG_SM_BASE_ADDRESS_LOW & 0x7F) >> 2);
2068 	mask |= 1 << ((mmTPC7_CFG_SM_BASE_ADDRESS_HIGH & 0x7F) >> 2);
2069 	mask |= 1 << ((mmTPC7_CFG_TPC_STALL & 0x7F) >> 2);
2070 	mask |= 1 << ((mmTPC7_CFG_MSS_CONFIG & 0x7F) >> 2);
2071 	mask |= 1 << ((mmTPC7_CFG_TPC_INTR_CAUSE & 0x7F) >> 2);
2072 	mask |= 1 << ((mmTPC7_CFG_TPC_INTR_MASK & 0x7F) >> 2);
2073 
2074 	WREG32(pb_addr + word_offset, ~mask);
2075 
2076 	pb_addr = (mmTPC7_CFG_ARUSER & ~0xFFF) + PROT_BITS_OFFS;
2077 	word_offset = ((mmTPC7_CFG_ARUSER & PROT_BITS_OFFS) >> 7) << 2;
2078 	mask = 1 << ((mmTPC7_CFG_ARUSER & 0x7F) >> 2);
2079 	mask |= 1 << ((mmTPC7_CFG_AWUSER & 0x7F) >> 2);
2080 
2081 	WREG32(pb_addr + word_offset, ~mask);
2082 
2083 	pb_addr = (mmTPC7_CFG_FUNC_MBIST_CNTRL & ~0xFFF) + PROT_BITS_OFFS;
2084 	word_offset = ((mmTPC7_CFG_FUNC_MBIST_CNTRL &
2085 			PROT_BITS_OFFS) >> 7) << 2;
2086 	mask = 1 << ((mmTPC7_CFG_FUNC_MBIST_CNTRL & 0x7F) >> 2);
2087 	mask |= 1 << ((mmTPC7_CFG_FUNC_MBIST_PAT & 0x7F) >> 2);
2088 	mask |= 1 << ((mmTPC7_CFG_FUNC_MBIST_MEM_0 & 0x7F) >> 2);
2089 	mask |= 1 << ((mmTPC7_CFG_FUNC_MBIST_MEM_1 & 0x7F) >> 2);
2090 	mask |= 1 << ((mmTPC7_CFG_FUNC_MBIST_MEM_2 & 0x7F) >> 2);
2091 	mask |= 1 << ((mmTPC7_CFG_FUNC_MBIST_MEM_3 & 0x7F) >> 2);
2092 	mask |= 1 << ((mmTPC7_CFG_FUNC_MBIST_MEM_4 & 0x7F) >> 2);
2093 	mask |= 1 << ((mmTPC7_CFG_FUNC_MBIST_MEM_5 & 0x7F) >> 2);
2094 	mask |= 1 << ((mmTPC7_CFG_FUNC_MBIST_MEM_6 & 0x7F) >> 2);
2095 	mask |= 1 << ((mmTPC7_CFG_FUNC_MBIST_MEM_7 & 0x7F) >> 2);
2096 	mask |= 1 << ((mmTPC7_CFG_FUNC_MBIST_MEM_8 & 0x7F) >> 2);
2097 	mask |= 1 << ((mmTPC7_CFG_FUNC_MBIST_MEM_9 & 0x7F) >> 2);
2098 
2099 	WREG32(pb_addr + word_offset, ~mask);
2100 
2101 	pb_addr = (mmTPC7_QM_GLBL_CFG0 & ~0xFFF) + PROT_BITS_OFFS;
2102 	word_offset = ((mmTPC7_QM_GLBL_CFG0 & PROT_BITS_OFFS) >> 7) << 2;
2103 	mask = 1 << ((mmTPC7_QM_GLBL_CFG0 & 0x7F) >> 2);
2104 	mask |= 1 << ((mmTPC7_QM_GLBL_CFG1 & 0x7F) >> 2);
2105 	mask |= 1 << ((mmTPC7_QM_GLBL_PROT & 0x7F) >> 2);
2106 	mask |= 1 << ((mmTPC7_QM_GLBL_ERR_CFG & 0x7F) >> 2);
2107 	mask |= 1 << ((mmTPC7_QM_GLBL_ERR_ADDR_LO & 0x7F) >> 2);
2108 	mask |= 1 << ((mmTPC7_QM_GLBL_ERR_ADDR_HI & 0x7F) >> 2);
2109 	mask |= 1 << ((mmTPC7_QM_GLBL_ERR_WDATA & 0x7F) >> 2);
2110 	mask |= 1 << ((mmTPC7_QM_GLBL_SECURE_PROPS & 0x7F) >> 2);
2111 	mask |= 1 << ((mmTPC7_QM_GLBL_NON_SECURE_PROPS & 0x7F) >> 2);
2112 	mask |= 1 << ((mmTPC7_QM_GLBL_STS0 & 0x7F) >> 2);
2113 	mask |= 1 << ((mmTPC7_QM_GLBL_STS1 & 0x7F) >> 2);
2114 	mask |= 1 << ((mmTPC7_QM_PQ_BASE_LO & 0x7F) >> 2);
2115 	mask |= 1 << ((mmTPC7_QM_PQ_BASE_HI & 0x7F) >> 2);
2116 	mask |= 1 << ((mmTPC7_QM_PQ_SIZE & 0x7F) >> 2);
2117 	mask |= 1 << ((mmTPC7_QM_PQ_PI & 0x7F) >> 2);
2118 	mask |= 1 << ((mmTPC7_QM_PQ_CI & 0x7F) >> 2);
2119 	mask |= 1 << ((mmTPC7_QM_PQ_CFG0 & 0x7F) >> 2);
2120 	mask |= 1 << ((mmTPC7_QM_PQ_CFG1 & 0x7F) >> 2);
2121 	mask |= 1 << ((mmTPC7_QM_PQ_ARUSER & 0x7F) >> 2);
2122 
2123 	WREG32(pb_addr + word_offset, ~mask);
2124 
2125 	pb_addr = (mmTPC7_QM_PQ_PUSH0 & ~0xFFF) + PROT_BITS_OFFS;
2126 	word_offset = ((mmTPC7_QM_PQ_PUSH0 & PROT_BITS_OFFS) >> 7) << 2;
2127 	mask = 1 << ((mmTPC7_QM_PQ_PUSH0 & 0x7F) >> 2);
2128 	mask |= 1 << ((mmTPC7_QM_PQ_PUSH1 & 0x7F) >> 2);
2129 	mask |= 1 << ((mmTPC7_QM_PQ_PUSH2 & 0x7F) >> 2);
2130 	mask |= 1 << ((mmTPC7_QM_PQ_PUSH3 & 0x7F) >> 2);
2131 	mask |= 1 << ((mmTPC7_QM_PQ_STS0 & 0x7F) >> 2);
2132 	mask |= 1 << ((mmTPC7_QM_PQ_STS1 & 0x7F) >> 2);
2133 	mask |= 1 << ((mmTPC7_QM_PQ_RD_RATE_LIM_EN & 0x7F) >> 2);
2134 	mask |= 1 << ((mmTPC7_QM_PQ_RD_RATE_LIM_RST_TOKEN & 0x7F) >> 2);
2135 	mask |= 1 << ((mmTPC7_QM_PQ_RD_RATE_LIM_SAT & 0x7F) >> 2);
2136 	mask |= 1 << ((mmTPC7_QM_PQ_RD_RATE_LIM_TOUT & 0x7F) >> 2);
2137 	mask |= 1 << ((mmTPC7_QM_CQ_CFG0 & 0x7F) >> 2);
2138 	mask |= 1 << ((mmTPC7_QM_CQ_CFG1 & 0x7F) >> 2);
2139 	mask |= 1 << ((mmTPC7_QM_CQ_ARUSER & 0x7F) >> 2);
2140 	mask |= 1 << ((mmTPC7_QM_CQ_PTR_LO & 0x7F) >> 2);
2141 	mask |= 1 << ((mmTPC7_QM_CQ_PTR_HI & 0x7F) >> 2);
2142 	mask |= 1 << ((mmTPC7_QM_CQ_TSIZE & 0x7F) >> 2);
2143 	mask |= 1 << ((mmTPC7_QM_CQ_CTL & 0x7F) >> 2);
2144 	mask |= 1 << ((mmTPC7_QM_CQ_PTR_LO_STS & 0x7F) >> 2);
2145 	mask |= 1 << ((mmTPC7_QM_CQ_PTR_HI_STS & 0x7F) >> 2);
2146 	mask |= 1 << ((mmTPC7_QM_CQ_TSIZE_STS & 0x7F) >> 2);
2147 	mask |= 1 << ((mmTPC7_QM_CQ_CTL_STS & 0x7F) >> 2);
2148 	mask |= 1 << ((mmTPC7_QM_CQ_STS0 & 0x7F) >> 2);
2149 	mask |= 1 << ((mmTPC7_QM_CQ_STS1 & 0x7F) >> 2);
2150 	mask |= 1 << ((mmTPC7_QM_CQ_RD_RATE_LIM_EN & 0x7F) >> 2);
2151 	mask |= 1 << ((mmTPC7_QM_CQ_RD_RATE_LIM_RST_TOKEN & 0x7F) >> 2);
2152 	mask |= 1 << ((mmTPC7_QM_CQ_RD_RATE_LIM_SAT & 0x7F) >> 2);
2153 	mask |= 1 << ((mmTPC7_QM_CQ_RD_RATE_LIM_TOUT & 0x7F) >> 2);
2154 
2155 	WREG32(pb_addr + word_offset, ~mask);
2156 
2157 	pb_addr = (mmTPC7_QM_CQ_IFIFO_CNT & ~0xFFF) + PROT_BITS_OFFS;
2158 	word_offset = ((mmTPC7_QM_CQ_IFIFO_CNT & PROT_BITS_OFFS) >> 7) << 2;
2159 	mask = 1 << ((mmTPC7_QM_CQ_IFIFO_CNT & 0x7F) >> 2);
2160 	mask |= 1 << ((mmTPC7_QM_CP_MSG_BASE0_ADDR_LO & 0x7F) >> 2);
2161 	mask |= 1 << ((mmTPC7_QM_CP_MSG_BASE0_ADDR_HI & 0x7F) >> 2);
2162 	mask |= 1 << ((mmTPC7_QM_CP_MSG_BASE1_ADDR_LO & 0x7F) >> 2);
2163 	mask |= 1 << ((mmTPC7_QM_CP_MSG_BASE1_ADDR_HI & 0x7F) >> 2);
2164 	mask |= 1 << ((mmTPC7_QM_CP_MSG_BASE2_ADDR_LO & 0x7F) >> 2);
2165 	mask |= 1 << ((mmTPC7_QM_CP_MSG_BASE2_ADDR_HI & 0x7F) >> 2);
2166 	mask |= 1 << ((mmTPC7_QM_CP_MSG_BASE3_ADDR_LO & 0x7F) >> 2);
2167 	mask |= 1 << ((mmTPC7_QM_CP_MSG_BASE3_ADDR_HI & 0x7F) >> 2);
2168 	mask |= 1 << ((mmTPC7_QM_CP_LDMA_TSIZE_OFFSET & 0x7F) >> 2);
2169 	mask |= 1 << ((mmTPC7_QM_CP_LDMA_SRC_BASE_LO_OFFSET & 0x7F) >> 2);
2170 	mask |= 1 << ((mmTPC7_QM_CP_LDMA_SRC_BASE_HI_OFFSET & 0x7F) >> 2);
2171 	mask |= 1 << ((mmTPC7_QM_CP_LDMA_DST_BASE_LO_OFFSET & 0x7F) >> 2);
2172 	mask |= 1 << ((mmTPC7_QM_CP_LDMA_DST_BASE_HI_OFFSET & 0x7F) >> 2);
2173 	mask |= 1 << ((mmTPC7_QM_CP_LDMA_COMMIT_OFFSET & 0x7F) >> 2);
2174 
2175 	WREG32(pb_addr + word_offset, ~mask);
2176 
2177 	pb_addr = (mmTPC7_CMDQ_GLBL_CFG0 & ~0xFFF) + PROT_BITS_OFFS;
2178 	word_offset = ((mmTPC7_CMDQ_GLBL_CFG0 & PROT_BITS_OFFS) >> 7) << 2;
2179 	mask = 1 << ((mmTPC7_CMDQ_GLBL_CFG0 & 0x7F) >> 2);
2180 	mask |= 1 << ((mmTPC7_CMDQ_GLBL_CFG1 & 0x7F) >> 2);
2181 	mask |= 1 << ((mmTPC7_CMDQ_GLBL_PROT & 0x7F) >> 2);
2182 	mask |= 1 << ((mmTPC7_CMDQ_GLBL_ERR_CFG & 0x7F) >> 2);
2183 	mask |= 1 << ((mmTPC7_CMDQ_GLBL_ERR_ADDR_LO & 0x7F) >> 2);
2184 	mask |= 1 << ((mmTPC7_CMDQ_GLBL_ERR_ADDR_HI & 0x7F) >> 2);
2185 	mask |= 1 << ((mmTPC7_CMDQ_GLBL_ERR_WDATA & 0x7F) >> 2);
2186 	mask |= 1 << ((mmTPC7_CMDQ_GLBL_SECURE_PROPS & 0x7F) >> 2);
2187 	mask |= 1 << ((mmTPC7_CMDQ_GLBL_NON_SECURE_PROPS & 0x7F) >> 2);
2188 	mask |= 1 << ((mmTPC7_CMDQ_GLBL_STS0 & 0x7F) >> 2);
2189 	mask |= 1 << ((mmTPC7_CMDQ_GLBL_STS1 & 0x7F) >> 2);
2190 
2191 	WREG32(pb_addr + word_offset, ~mask);
2192 
2193 	pb_addr = (mmTPC7_CMDQ_CQ_CFG0 & ~0xFFF) + PROT_BITS_OFFS;
2194 	word_offset = ((mmTPC7_CMDQ_CQ_CFG0 & PROT_BITS_OFFS) >> 7) << 2;
2195 	mask = 1 << ((mmTPC7_CMDQ_CQ_CFG0 & 0x7F) >> 2);
2196 	mask |= 1 << ((mmTPC7_CMDQ_CQ_CFG1 & 0x7F) >> 2);
2197 	mask |= 1 << ((mmTPC7_CMDQ_CQ_ARUSER & 0x7F) >> 2);
2198 	mask |= 1 << ((mmTPC7_CMDQ_CQ_PTR_LO_STS & 0x7F) >> 2);
2199 	mask |= 1 << ((mmTPC7_CMDQ_CQ_PTR_HI_STS & 0x7F) >> 2);
2200 	mask |= 1 << ((mmTPC7_CMDQ_CQ_TSIZE_STS & 0x7F) >> 2);
2201 	mask |= 1 << ((mmTPC7_CMDQ_CQ_CTL_STS & 0x7F) >> 2);
2202 	mask |= 1 << ((mmTPC7_CMDQ_CQ_STS0 & 0x7F) >> 2);
2203 	mask |= 1 << ((mmTPC7_CMDQ_CQ_STS1 & 0x7F) >> 2);
2204 	mask |= 1 << ((mmTPC7_CMDQ_CQ_RD_RATE_LIM_EN & 0x7F) >> 2);
2205 	mask |= 1 << ((mmTPC7_CMDQ_CQ_RD_RATE_LIM_RST_TOKEN & 0x7F) >> 2);
2206 	mask |= 1 << ((mmTPC7_CMDQ_CQ_RD_RATE_LIM_SAT & 0x7F) >> 2);
2207 	mask |= 1 << ((mmTPC7_CMDQ_CQ_RD_RATE_LIM_TOUT & 0x7F) >> 2);
2208 
2209 	WREG32(pb_addr + word_offset, ~mask);
2210 
2211 	pb_addr = (mmTPC7_CMDQ_CQ_IFIFO_CNT & ~0xFFF) + PROT_BITS_OFFS;
2212 	word_offset = ((mmTPC7_CMDQ_CQ_IFIFO_CNT & PROT_BITS_OFFS) >> 7) << 2;
2213 	mask = 1 << ((mmTPC7_CMDQ_CQ_IFIFO_CNT & 0x7F) >> 2);
2214 	mask |= 1 << ((mmTPC7_CMDQ_CP_MSG_BASE0_ADDR_LO & 0x7F) >> 2);
2215 	mask |= 1 << ((mmTPC7_CMDQ_CP_MSG_BASE0_ADDR_HI & 0x7F) >> 2);
2216 	mask |= 1 << ((mmTPC7_CMDQ_CP_MSG_BASE1_ADDR_LO & 0x7F) >> 2);
2217 	mask |= 1 << ((mmTPC7_CMDQ_CP_MSG_BASE1_ADDR_HI & 0x7F) >> 2);
2218 	mask |= 1 << ((mmTPC7_CMDQ_CP_MSG_BASE2_ADDR_LO & 0x7F) >> 2);
2219 	mask |= 1 << ((mmTPC7_CMDQ_CP_MSG_BASE2_ADDR_HI & 0x7F) >> 2);
2220 	mask |= 1 << ((mmTPC7_CMDQ_CP_MSG_BASE3_ADDR_LO & 0x7F) >> 2);
2221 	mask |= 1 << ((mmTPC7_CMDQ_CP_MSG_BASE3_ADDR_HI & 0x7F) >> 2);
2222 	mask |= 1 << ((mmTPC7_CMDQ_CP_LDMA_TSIZE_OFFSET & 0x7F) >> 2);
2223 	mask |= 1 << ((mmTPC7_CMDQ_CP_LDMA_SRC_BASE_LO_OFFSET & 0x7F) >> 2);
2224 	mask |= 1 << ((mmTPC7_CMDQ_CP_LDMA_SRC_BASE_HI_OFFSET & 0x7F) >> 2);
2225 	mask |= 1 << ((mmTPC7_CMDQ_CP_LDMA_DST_BASE_LO_OFFSET & 0x7F) >> 2);
2226 	mask |= 1 << ((mmTPC7_CMDQ_CP_LDMA_DST_BASE_HI_OFFSET & 0x7F) >> 2);
2227 	mask |= 1 << ((mmTPC7_CMDQ_CP_LDMA_COMMIT_OFFSET & 0x7F) >> 2);
2228 	mask |= 1 << ((mmTPC7_CMDQ_CP_STS & 0x7F) >> 2);
2229 	mask |= 1 << ((mmTPC7_CMDQ_CP_CURRENT_INST_LO & 0x7F) >> 2);
2230 
2231 	WREG32(pb_addr + word_offset, ~mask);
2232 
2233 	pb_addr = (mmTPC7_CMDQ_CP_CURRENT_INST_HI & ~0xFFF) + PROT_BITS_OFFS;
2234 	word_offset = ((mmTPC7_CMDQ_CP_CURRENT_INST_HI & PROT_BITS_OFFS) >> 7)
2235 			<< 2;
2236 	mask = 1 << ((mmTPC7_CMDQ_CP_CURRENT_INST_HI & 0x7F) >> 2);
2237 	mask |= 1 << ((mmTPC7_CMDQ_CP_BARRIER_CFG & 0x7F) >> 2);
2238 	mask |= 1 << ((mmTPC7_CMDQ_CP_DBG_0 & 0x7F) >> 2);
2239 	mask |= 1 << ((mmTPC7_CMDQ_CQ_BUF_ADDR & 0x7F) >> 2);
2240 	mask |= 1 << ((mmTPC7_CMDQ_CQ_BUF_RDATA & 0x7F) >> 2);
2241 
2242 	WREG32(pb_addr + word_offset, ~mask);
2243 }
2244 
2245 /*
2246  * goya_init_protection_bits - Initialize protection bits for specific registers
2247  *
2248  * @hdev: pointer to hl_device structure
2249  *
2250  * All protection bits are 1 by default, means not protected. Need to set to 0
2251  * each bit that belongs to a protected register.
2252  *
2253  */
2254 static void goya_init_protection_bits(struct hl_device *hdev)
2255 {
2256 	/*
2257 	 * In each 4K block of registers, the last 128 bytes are protection
2258 	 * bits - total of 1024 bits, one for each register. Each bit is related
2259 	 * to a specific register, by the order of the registers.
2260 	 * So in order to calculate the bit that is related to a given register,
2261 	 * we need to calculate its word offset and then the exact bit inside
2262 	 * the word (which is 4 bytes).
2263 	 *
2264 	 * Register address:
2265 	 *
2266 	 * 31                 12 11           7   6             2  1      0
2267 	 * -----------------------------------------------------------------
2268 	 * |      Don't         |    word       |  bit location  |    0    |
2269 	 * |      care          |   offset      |  inside word   |         |
2270 	 * -----------------------------------------------------------------
2271 	 *
2272 	 * Bits 7-11 represents the word offset inside the 128 bytes.
2273 	 * Bits 2-6 represents the bit location inside the word.
2274 	 */
2275 	u32 pb_addr, mask;
2276 	u8 word_offset;
2277 
2278 	goya_pb_set_block(hdev, mmPCI_NRTR_BASE);
2279 	goya_pb_set_block(hdev, mmPCI_RD_REGULATOR_BASE);
2280 	goya_pb_set_block(hdev, mmPCI_WR_REGULATOR_BASE);
2281 
2282 	goya_pb_set_block(hdev, mmSRAM_Y0_X0_BANK_BASE);
2283 	goya_pb_set_block(hdev, mmSRAM_Y0_X0_RTR_BASE);
2284 	goya_pb_set_block(hdev, mmSRAM_Y0_X1_BANK_BASE);
2285 	goya_pb_set_block(hdev, mmSRAM_Y0_X1_RTR_BASE);
2286 	goya_pb_set_block(hdev, mmSRAM_Y0_X2_BANK_BASE);
2287 	goya_pb_set_block(hdev, mmSRAM_Y0_X2_RTR_BASE);
2288 	goya_pb_set_block(hdev, mmSRAM_Y0_X3_BANK_BASE);
2289 	goya_pb_set_block(hdev, mmSRAM_Y0_X3_RTR_BASE);
2290 	goya_pb_set_block(hdev, mmSRAM_Y0_X4_BANK_BASE);
2291 	goya_pb_set_block(hdev, mmSRAM_Y0_X4_RTR_BASE);
2292 
2293 	goya_pb_set_block(hdev, mmSRAM_Y1_X0_BANK_BASE);
2294 	goya_pb_set_block(hdev, mmSRAM_Y1_X0_RTR_BASE);
2295 	goya_pb_set_block(hdev, mmSRAM_Y1_X1_BANK_BASE);
2296 	goya_pb_set_block(hdev, mmSRAM_Y1_X1_RTR_BASE);
2297 	goya_pb_set_block(hdev, mmSRAM_Y1_X2_BANK_BASE);
2298 	goya_pb_set_block(hdev, mmSRAM_Y1_X2_RTR_BASE);
2299 	goya_pb_set_block(hdev, mmSRAM_Y1_X3_BANK_BASE);
2300 	goya_pb_set_block(hdev, mmSRAM_Y1_X3_RTR_BASE);
2301 	goya_pb_set_block(hdev, mmSRAM_Y1_X4_BANK_BASE);
2302 	goya_pb_set_block(hdev, mmSRAM_Y1_X4_RTR_BASE);
2303 
2304 	goya_pb_set_block(hdev, mmSRAM_Y2_X0_BANK_BASE);
2305 	goya_pb_set_block(hdev, mmSRAM_Y2_X0_RTR_BASE);
2306 	goya_pb_set_block(hdev, mmSRAM_Y2_X1_BANK_BASE);
2307 	goya_pb_set_block(hdev, mmSRAM_Y2_X1_RTR_BASE);
2308 	goya_pb_set_block(hdev, mmSRAM_Y2_X2_BANK_BASE);
2309 	goya_pb_set_block(hdev, mmSRAM_Y2_X2_RTR_BASE);
2310 	goya_pb_set_block(hdev, mmSRAM_Y2_X3_BANK_BASE);
2311 	goya_pb_set_block(hdev, mmSRAM_Y2_X3_RTR_BASE);
2312 	goya_pb_set_block(hdev, mmSRAM_Y2_X4_BANK_BASE);
2313 	goya_pb_set_block(hdev, mmSRAM_Y2_X4_RTR_BASE);
2314 
2315 	goya_pb_set_block(hdev, mmSRAM_Y3_X0_BANK_BASE);
2316 	goya_pb_set_block(hdev, mmSRAM_Y3_X0_RTR_BASE);
2317 	goya_pb_set_block(hdev, mmSRAM_Y3_X1_BANK_BASE);
2318 	goya_pb_set_block(hdev, mmSRAM_Y3_X1_RTR_BASE);
2319 	goya_pb_set_block(hdev, mmSRAM_Y3_X2_BANK_BASE);
2320 	goya_pb_set_block(hdev, mmSRAM_Y3_X2_RTR_BASE);
2321 	goya_pb_set_block(hdev, mmSRAM_Y3_X3_BANK_BASE);
2322 	goya_pb_set_block(hdev, mmSRAM_Y3_X3_RTR_BASE);
2323 	goya_pb_set_block(hdev, mmSRAM_Y3_X4_BANK_BASE);
2324 	goya_pb_set_block(hdev, mmSRAM_Y3_X4_RTR_BASE);
2325 
2326 	goya_pb_set_block(hdev, mmSRAM_Y4_X0_BANK_BASE);
2327 	goya_pb_set_block(hdev, mmSRAM_Y4_X0_RTR_BASE);
2328 	goya_pb_set_block(hdev, mmSRAM_Y4_X1_BANK_BASE);
2329 	goya_pb_set_block(hdev, mmSRAM_Y4_X1_RTR_BASE);
2330 	goya_pb_set_block(hdev, mmSRAM_Y4_X2_BANK_BASE);
2331 	goya_pb_set_block(hdev, mmSRAM_Y4_X2_RTR_BASE);
2332 	goya_pb_set_block(hdev, mmSRAM_Y4_X3_BANK_BASE);
2333 	goya_pb_set_block(hdev, mmSRAM_Y4_X3_RTR_BASE);
2334 	goya_pb_set_block(hdev, mmSRAM_Y4_X4_BANK_BASE);
2335 	goya_pb_set_block(hdev, mmSRAM_Y4_X4_RTR_BASE);
2336 
2337 	goya_pb_set_block(hdev, mmSRAM_Y5_X0_BANK_BASE);
2338 	goya_pb_set_block(hdev, mmSRAM_Y5_X0_RTR_BASE);
2339 	goya_pb_set_block(hdev, mmSRAM_Y5_X1_BANK_BASE);
2340 	goya_pb_set_block(hdev, mmSRAM_Y5_X1_RTR_BASE);
2341 	goya_pb_set_block(hdev, mmSRAM_Y5_X2_BANK_BASE);
2342 	goya_pb_set_block(hdev, mmSRAM_Y5_X2_RTR_BASE);
2343 	goya_pb_set_block(hdev, mmSRAM_Y5_X3_BANK_BASE);
2344 	goya_pb_set_block(hdev, mmSRAM_Y5_X3_RTR_BASE);
2345 	goya_pb_set_block(hdev, mmSRAM_Y5_X4_BANK_BASE);
2346 	goya_pb_set_block(hdev, mmSRAM_Y5_X4_RTR_BASE);
2347 
2348 	goya_pb_set_block(hdev, mmPCIE_WRAP_BASE);
2349 	goya_pb_set_block(hdev, mmPCIE_CORE_BASE);
2350 	goya_pb_set_block(hdev, mmPCIE_DB_CFG_BASE);
2351 	goya_pb_set_block(hdev, mmPCIE_DB_CMD_BASE);
2352 	goya_pb_set_block(hdev, mmPCIE_AUX_BASE);
2353 	goya_pb_set_block(hdev, mmPCIE_DB_RSV_BASE);
2354 	goya_pb_set_block(hdev, mmPCIE_PHY_BASE);
2355 	goya_pb_set_block(hdev, mmTPC0_NRTR_BASE);
2356 	goya_pb_set_block(hdev, mmTPC_PLL_BASE);
2357 
2358 	pb_addr = (mmTPC_PLL_CLK_RLX_0 & ~0xFFF) + PROT_BITS_OFFS;
2359 	word_offset = ((mmTPC_PLL_CLK_RLX_0 & PROT_BITS_OFFS) >> 7) << 2;
2360 	mask = 1 << ((mmTPC_PLL_CLK_RLX_0 & 0x7C) >> 2);
2361 
2362 	WREG32(pb_addr + word_offset, mask);
2363 
2364 	goya_init_mme_protection_bits(hdev);
2365 
2366 	goya_init_dma_protection_bits(hdev);
2367 
2368 	goya_init_tpc_protection_bits(hdev);
2369 }
2370 
2371 /*
2372  * goya_init_security - Initialize security model
2373  *
2374  * @hdev: pointer to hl_device structure
2375  *
2376  * Initialize the security model of the device
2377  * That includes range registers and protection bit per register
2378  *
2379  */
2380 void goya_init_security(struct hl_device *hdev)
2381 {
2382 	struct goya_device *goya = hdev->asic_specific;
2383 
2384 	u32 dram_addr_lo = lower_32_bits(DRAM_PHYS_BASE);
2385 	u32 dram_addr_hi = upper_32_bits(DRAM_PHYS_BASE);
2386 
2387 	u32 lbw_rng0_base = 0xFC440000 & DMA_MACRO_LBW_RANGE_BASE_R_MASK;
2388 	u32 lbw_rng0_mask = 0xFFFF0000 & DMA_MACRO_LBW_RANGE_BASE_R_MASK;
2389 
2390 	u32 lbw_rng1_base = 0xFC480000 & DMA_MACRO_LBW_RANGE_BASE_R_MASK;
2391 	u32 lbw_rng1_mask = 0xFFF80000 & DMA_MACRO_LBW_RANGE_BASE_R_MASK;
2392 
2393 	u32 lbw_rng2_base = 0xFC600000 & DMA_MACRO_LBW_RANGE_BASE_R_MASK;
2394 	u32 lbw_rng2_mask = 0xFFE00000 & DMA_MACRO_LBW_RANGE_BASE_R_MASK;
2395 
2396 	u32 lbw_rng3_base = 0xFC800000 & DMA_MACRO_LBW_RANGE_BASE_R_MASK;
2397 	u32 lbw_rng3_mask = 0xFFF00000 & DMA_MACRO_LBW_RANGE_BASE_R_MASK;
2398 
2399 	u32 lbw_rng4_base = 0xFCC02000 & DMA_MACRO_LBW_RANGE_BASE_R_MASK;
2400 	u32 lbw_rng4_mask = 0xFFFFF000 & DMA_MACRO_LBW_RANGE_BASE_R_MASK;
2401 
2402 	u32 lbw_rng5_base = 0xFCC40000 & DMA_MACRO_LBW_RANGE_BASE_R_MASK;
2403 	u32 lbw_rng5_mask = 0xFFFF8000 & DMA_MACRO_LBW_RANGE_BASE_R_MASK;
2404 
2405 	u32 lbw_rng6_base = 0xFCC48000 & DMA_MACRO_LBW_RANGE_BASE_R_MASK;
2406 	u32 lbw_rng6_mask = 0xFFFFF000 & DMA_MACRO_LBW_RANGE_BASE_R_MASK;
2407 
2408 	u32 lbw_rng7_base = 0xFCC4A000 & DMA_MACRO_LBW_RANGE_BASE_R_MASK;
2409 	u32 lbw_rng7_mask = 0xFFFFE000 & DMA_MACRO_LBW_RANGE_BASE_R_MASK;
2410 
2411 	u32 lbw_rng8_base = 0xFCC4C000 & DMA_MACRO_LBW_RANGE_BASE_R_MASK;
2412 	u32 lbw_rng8_mask = 0xFFFFC000 & DMA_MACRO_LBW_RANGE_BASE_R_MASK;
2413 
2414 	u32 lbw_rng9_base = 0xFCC50000 & DMA_MACRO_LBW_RANGE_BASE_R_MASK;
2415 	u32 lbw_rng9_mask = 0xFFFF0000 & DMA_MACRO_LBW_RANGE_BASE_R_MASK;
2416 
2417 	u32 lbw_rng10_base = 0xFCC60000 & DMA_MACRO_LBW_RANGE_BASE_R_MASK;
2418 	u32 lbw_rng10_mask = 0xFFFE0000 & DMA_MACRO_LBW_RANGE_BASE_R_MASK;
2419 
2420 	u32 lbw_rng11_base = 0xFCE02000 & DMA_MACRO_LBW_RANGE_BASE_R_MASK;
2421 	u32 lbw_rng11_mask = 0xFFFFE000 & DMA_MACRO_LBW_RANGE_BASE_R_MASK;
2422 
2423 	u32 lbw_rng12_base = 0xFE484000 & DMA_MACRO_LBW_RANGE_BASE_R_MASK;
2424 	u32 lbw_rng12_mask = 0xFFFFF000 & DMA_MACRO_LBW_RANGE_BASE_R_MASK;
2425 
2426 	u32 lbw_rng13_base = 0xFEC43000 & DMA_MACRO_LBW_RANGE_BASE_R_MASK;
2427 	u32 lbw_rng13_mask = 0xFFFFF000 & DMA_MACRO_LBW_RANGE_BASE_R_MASK;
2428 
2429 	WREG32(mmDMA_MACRO_LBW_RANGE_HIT_BLOCK, 0xFFFF);
2430 	WREG32(mmDMA_MACRO_HBW_RANGE_HIT_BLOCK, 0xFF);
2431 
2432 	if (!(goya->hw_cap_initialized & HW_CAP_MMU)) {
2433 		WREG32(mmDMA_MACRO_HBW_RANGE_HIT_BLOCK, 0xFE);
2434 
2435 		/* Protect HOST */
2436 		WREG32(mmDMA_MACRO_HBW_RANGE_BASE_31_0_0, 0);
2437 		WREG32(mmDMA_MACRO_HBW_RANGE_BASE_49_32_0, 0);
2438 		WREG32(mmDMA_MACRO_HBW_RANGE_MASK_31_0_0, 0);
2439 		WREG32(mmDMA_MACRO_HBW_RANGE_MASK_49_32_0, 0xFFF80);
2440 	}
2441 
2442 	/*
2443 	 * Protect DDR @
2444 	 * DRAM_VIRT_BASE : DRAM_VIRT_BASE + DRAM_VIRT_END
2445 	 * The mask protects the first 512MB
2446 	 */
2447 	WREG32(mmDMA_MACRO_HBW_RANGE_BASE_31_0_1, dram_addr_lo);
2448 	WREG32(mmDMA_MACRO_HBW_RANGE_BASE_49_32_1, dram_addr_hi);
2449 	WREG32(mmDMA_MACRO_HBW_RANGE_MASK_31_0_1, 0xE0000000);
2450 	WREG32(mmDMA_MACRO_HBW_RANGE_MASK_49_32_1, 0x3FFFF);
2451 
2452 	/* Protect registers */
2453 
2454 	WREG32(mmDMA_MACRO_LBW_RANGE_BASE_0, lbw_rng0_base);
2455 	WREG32(mmDMA_MACRO_LBW_RANGE_MASK_0, lbw_rng0_mask);
2456 	WREG32(mmDMA_MACRO_LBW_RANGE_BASE_1, lbw_rng1_base);
2457 	WREG32(mmDMA_MACRO_LBW_RANGE_MASK_1, lbw_rng1_mask);
2458 	WREG32(mmDMA_MACRO_LBW_RANGE_BASE_2, lbw_rng2_base);
2459 	WREG32(mmDMA_MACRO_LBW_RANGE_MASK_2, lbw_rng2_mask);
2460 	WREG32(mmDMA_MACRO_LBW_RANGE_BASE_3, lbw_rng3_base);
2461 	WREG32(mmDMA_MACRO_LBW_RANGE_MASK_3, lbw_rng3_mask);
2462 	WREG32(mmDMA_MACRO_LBW_RANGE_BASE_4, lbw_rng4_base);
2463 	WREG32(mmDMA_MACRO_LBW_RANGE_MASK_4, lbw_rng4_mask);
2464 	WREG32(mmDMA_MACRO_LBW_RANGE_BASE_5, lbw_rng5_base);
2465 	WREG32(mmDMA_MACRO_LBW_RANGE_MASK_5, lbw_rng5_mask);
2466 	WREG32(mmDMA_MACRO_LBW_RANGE_BASE_6, lbw_rng6_base);
2467 	WREG32(mmDMA_MACRO_LBW_RANGE_MASK_6, lbw_rng6_mask);
2468 	WREG32(mmDMA_MACRO_LBW_RANGE_BASE_7, lbw_rng7_base);
2469 	WREG32(mmDMA_MACRO_LBW_RANGE_MASK_7, lbw_rng7_mask);
2470 	WREG32(mmDMA_MACRO_LBW_RANGE_BASE_8, lbw_rng8_base);
2471 	WREG32(mmDMA_MACRO_LBW_RANGE_MASK_8, lbw_rng8_mask);
2472 	WREG32(mmDMA_MACRO_LBW_RANGE_BASE_9, lbw_rng9_base);
2473 	WREG32(mmDMA_MACRO_LBW_RANGE_MASK_9, lbw_rng9_mask);
2474 	WREG32(mmDMA_MACRO_LBW_RANGE_BASE_10, lbw_rng10_base);
2475 	WREG32(mmDMA_MACRO_LBW_RANGE_MASK_10, lbw_rng10_mask);
2476 	WREG32(mmDMA_MACRO_LBW_RANGE_BASE_11, lbw_rng11_base);
2477 	WREG32(mmDMA_MACRO_LBW_RANGE_MASK_11, lbw_rng11_mask);
2478 	WREG32(mmDMA_MACRO_LBW_RANGE_BASE_12, lbw_rng12_base);
2479 	WREG32(mmDMA_MACRO_LBW_RANGE_MASK_12, lbw_rng12_mask);
2480 	WREG32(mmDMA_MACRO_LBW_RANGE_BASE_13, lbw_rng13_base);
2481 	WREG32(mmDMA_MACRO_LBW_RANGE_MASK_13, lbw_rng13_mask);
2482 
2483 	WREG32(mmMME1_RTR_LBW_RANGE_HIT, 0xFFFF);
2484 	WREG32(mmMME2_RTR_LBW_RANGE_HIT, 0xFFFF);
2485 	WREG32(mmMME3_RTR_LBW_RANGE_HIT, 0xFFFF);
2486 	WREG32(mmMME4_RTR_LBW_RANGE_HIT, 0xFFFF);
2487 	WREG32(mmMME5_RTR_LBW_RANGE_HIT, 0xFFFF);
2488 	WREG32(mmMME6_RTR_LBW_RANGE_HIT, 0xFFFF);
2489 
2490 	WREG32(mmMME1_RTR_HBW_RANGE_HIT, 0xFE);
2491 	WREG32(mmMME2_RTR_HBW_RANGE_HIT, 0xFE);
2492 	WREG32(mmMME3_RTR_HBW_RANGE_HIT, 0xFE);
2493 	WREG32(mmMME4_RTR_HBW_RANGE_HIT, 0xFE);
2494 	WREG32(mmMME5_RTR_HBW_RANGE_HIT, 0xFE);
2495 	WREG32(mmMME6_RTR_HBW_RANGE_HIT, 0xFE);
2496 
2497 	/* Protect HOST */
2498 	WREG32(mmMME1_RTR_HBW_RANGE_BASE_L_0, 0);
2499 	WREG32(mmMME1_RTR_HBW_RANGE_BASE_H_0, 0);
2500 	WREG32(mmMME1_RTR_HBW_RANGE_MASK_L_0, 0);
2501 	WREG32(mmMME1_RTR_HBW_RANGE_MASK_H_0, 0xFFF80);
2502 
2503 	WREG32(mmMME2_RTR_HBW_RANGE_BASE_L_0, 0);
2504 	WREG32(mmMME2_RTR_HBW_RANGE_BASE_H_0, 0);
2505 	WREG32(mmMME2_RTR_HBW_RANGE_MASK_L_0, 0);
2506 	WREG32(mmMME2_RTR_HBW_RANGE_MASK_H_0, 0xFFF80);
2507 
2508 	WREG32(mmMME3_RTR_HBW_RANGE_BASE_L_0, 0);
2509 	WREG32(mmMME3_RTR_HBW_RANGE_BASE_H_0, 0);
2510 	WREG32(mmMME3_RTR_HBW_RANGE_MASK_L_0, 0);
2511 	WREG32(mmMME3_RTR_HBW_RANGE_MASK_H_0, 0xFFF80);
2512 
2513 	WREG32(mmMME4_RTR_HBW_RANGE_BASE_L_0, 0);
2514 	WREG32(mmMME4_RTR_HBW_RANGE_BASE_H_0, 0);
2515 	WREG32(mmMME4_RTR_HBW_RANGE_MASK_L_0, 0);
2516 	WREG32(mmMME4_RTR_HBW_RANGE_MASK_H_0, 0xFFF80);
2517 
2518 	WREG32(mmMME5_RTR_HBW_RANGE_BASE_L_0, 0);
2519 	WREG32(mmMME5_RTR_HBW_RANGE_BASE_H_0, 0);
2520 	WREG32(mmMME5_RTR_HBW_RANGE_MASK_L_0, 0);
2521 	WREG32(mmMME5_RTR_HBW_RANGE_MASK_H_0, 0xFFF80);
2522 
2523 	WREG32(mmMME6_RTR_HBW_RANGE_BASE_L_0, 0);
2524 	WREG32(mmMME6_RTR_HBW_RANGE_BASE_H_0, 0);
2525 	WREG32(mmMME6_RTR_HBW_RANGE_MASK_L_0, 0);
2526 	WREG32(mmMME6_RTR_HBW_RANGE_MASK_H_0, 0xFFF80);
2527 
2528 	/*
2529 	 * Protect DDR @
2530 	 * DRAM_VIRT_BASE : DRAM_VIRT_BASE + DRAM_VIRT_END
2531 	 * The mask protects the first 512MB
2532 	 */
2533 	WREG32(mmMME1_RTR_HBW_RANGE_BASE_L_1, dram_addr_lo);
2534 	WREG32(mmMME1_RTR_HBW_RANGE_BASE_H_1, dram_addr_hi);
2535 	WREG32(mmMME1_RTR_HBW_RANGE_MASK_L_1, 0xE0000000);
2536 	WREG32(mmMME1_RTR_HBW_RANGE_MASK_H_1, 0x3FFFF);
2537 
2538 	WREG32(mmMME2_RTR_HBW_RANGE_BASE_L_1, dram_addr_lo);
2539 	WREG32(mmMME2_RTR_HBW_RANGE_BASE_H_1, dram_addr_hi);
2540 	WREG32(mmMME2_RTR_HBW_RANGE_MASK_L_1, 0xE0000000);
2541 	WREG32(mmMME2_RTR_HBW_RANGE_MASK_H_1, 0x3FFFF);
2542 
2543 	WREG32(mmMME3_RTR_HBW_RANGE_BASE_L_1, dram_addr_lo);
2544 	WREG32(mmMME3_RTR_HBW_RANGE_BASE_H_1, dram_addr_hi);
2545 	WREG32(mmMME3_RTR_HBW_RANGE_MASK_L_1, 0xE0000000);
2546 	WREG32(mmMME3_RTR_HBW_RANGE_MASK_H_1, 0x3FFFF);
2547 
2548 	WREG32(mmMME4_RTR_HBW_RANGE_BASE_L_1, dram_addr_lo);
2549 	WREG32(mmMME4_RTR_HBW_RANGE_BASE_H_1, dram_addr_hi);
2550 	WREG32(mmMME4_RTR_HBW_RANGE_MASK_L_1, 0xE0000000);
2551 	WREG32(mmMME4_RTR_HBW_RANGE_MASK_H_1, 0x3FFFF);
2552 
2553 	WREG32(mmMME5_RTR_HBW_RANGE_BASE_L_1, dram_addr_lo);
2554 	WREG32(mmMME5_RTR_HBW_RANGE_BASE_H_1, dram_addr_hi);
2555 	WREG32(mmMME5_RTR_HBW_RANGE_MASK_L_1, 0xE0000000);
2556 	WREG32(mmMME5_RTR_HBW_RANGE_MASK_H_1, 0x3FFFF);
2557 
2558 	WREG32(mmMME6_RTR_HBW_RANGE_BASE_L_1, dram_addr_lo);
2559 	WREG32(mmMME6_RTR_HBW_RANGE_BASE_H_1, dram_addr_hi);
2560 	WREG32(mmMME6_RTR_HBW_RANGE_MASK_L_1, 0xE0000000);
2561 	WREG32(mmMME6_RTR_HBW_RANGE_MASK_H_1, 0x3FFFF);
2562 
2563 	WREG32(mmMME1_RTR_LBW_RANGE_BASE_0, lbw_rng0_base);
2564 	WREG32(mmMME1_RTR_LBW_RANGE_MASK_0, lbw_rng0_mask);
2565 	WREG32(mmMME1_RTR_LBW_RANGE_BASE_1, lbw_rng1_base);
2566 	WREG32(mmMME1_RTR_LBW_RANGE_MASK_1, lbw_rng1_mask);
2567 	WREG32(mmMME1_RTR_LBW_RANGE_BASE_2, lbw_rng2_base);
2568 	WREG32(mmMME1_RTR_LBW_RANGE_MASK_2, lbw_rng2_mask);
2569 	WREG32(mmMME1_RTR_LBW_RANGE_BASE_3, lbw_rng3_base);
2570 	WREG32(mmMME1_RTR_LBW_RANGE_MASK_3, lbw_rng3_mask);
2571 	WREG32(mmMME1_RTR_LBW_RANGE_BASE_4, lbw_rng4_base);
2572 	WREG32(mmMME1_RTR_LBW_RANGE_MASK_4, lbw_rng4_mask);
2573 	WREG32(mmMME1_RTR_LBW_RANGE_BASE_5, lbw_rng5_base);
2574 	WREG32(mmMME1_RTR_LBW_RANGE_MASK_5, lbw_rng5_mask);
2575 	WREG32(mmMME1_RTR_LBW_RANGE_BASE_6, lbw_rng6_base);
2576 	WREG32(mmMME1_RTR_LBW_RANGE_MASK_6, lbw_rng6_mask);
2577 	WREG32(mmMME1_RTR_LBW_RANGE_BASE_7, lbw_rng7_base);
2578 	WREG32(mmMME1_RTR_LBW_RANGE_MASK_7, lbw_rng7_mask);
2579 	WREG32(mmMME1_RTR_LBW_RANGE_BASE_8, lbw_rng8_base);
2580 	WREG32(mmMME1_RTR_LBW_RANGE_MASK_8, lbw_rng8_mask);
2581 	WREG32(mmMME1_RTR_LBW_RANGE_BASE_9, lbw_rng9_base);
2582 	WREG32(mmMME1_RTR_LBW_RANGE_MASK_9, lbw_rng9_mask);
2583 	WREG32(mmMME1_RTR_LBW_RANGE_BASE_10, lbw_rng10_base);
2584 	WREG32(mmMME1_RTR_LBW_RANGE_MASK_10, lbw_rng10_mask);
2585 	WREG32(mmMME1_RTR_LBW_RANGE_BASE_11, lbw_rng11_base);
2586 	WREG32(mmMME1_RTR_LBW_RANGE_MASK_11, lbw_rng11_mask);
2587 	WREG32(mmMME1_RTR_LBW_RANGE_BASE_12, lbw_rng12_base);
2588 	WREG32(mmMME1_RTR_LBW_RANGE_MASK_12, lbw_rng12_mask);
2589 	WREG32(mmMME1_RTR_LBW_RANGE_BASE_13, lbw_rng13_base);
2590 	WREG32(mmMME1_RTR_LBW_RANGE_MASK_13, lbw_rng13_mask);
2591 
2592 	WREG32(mmMME2_RTR_LBW_RANGE_BASE_0, lbw_rng0_base);
2593 	WREG32(mmMME2_RTR_LBW_RANGE_MASK_0, lbw_rng0_mask);
2594 	WREG32(mmMME2_RTR_LBW_RANGE_BASE_1, lbw_rng1_base);
2595 	WREG32(mmMME2_RTR_LBW_RANGE_MASK_1, lbw_rng1_mask);
2596 	WREG32(mmMME2_RTR_LBW_RANGE_BASE_2, lbw_rng2_base);
2597 	WREG32(mmMME2_RTR_LBW_RANGE_MASK_2, lbw_rng2_mask);
2598 	WREG32(mmMME2_RTR_LBW_RANGE_BASE_3, lbw_rng3_base);
2599 	WREG32(mmMME2_RTR_LBW_RANGE_MASK_3, lbw_rng3_mask);
2600 	WREG32(mmMME2_RTR_LBW_RANGE_BASE_4, lbw_rng4_base);
2601 	WREG32(mmMME2_RTR_LBW_RANGE_MASK_4, lbw_rng4_mask);
2602 	WREG32(mmMME2_RTR_LBW_RANGE_BASE_5, lbw_rng5_base);
2603 	WREG32(mmMME2_RTR_LBW_RANGE_MASK_5, lbw_rng5_mask);
2604 	WREG32(mmMME2_RTR_LBW_RANGE_BASE_6, lbw_rng6_base);
2605 	WREG32(mmMME2_RTR_LBW_RANGE_MASK_6, lbw_rng6_mask);
2606 	WREG32(mmMME2_RTR_LBW_RANGE_BASE_7, lbw_rng7_base);
2607 	WREG32(mmMME2_RTR_LBW_RANGE_MASK_7, lbw_rng7_mask);
2608 	WREG32(mmMME2_RTR_LBW_RANGE_BASE_8, lbw_rng8_base);
2609 	WREG32(mmMME2_RTR_LBW_RANGE_MASK_8, lbw_rng8_mask);
2610 	WREG32(mmMME2_RTR_LBW_RANGE_BASE_9, lbw_rng9_base);
2611 	WREG32(mmMME2_RTR_LBW_RANGE_MASK_9, lbw_rng9_mask);
2612 	WREG32(mmMME2_RTR_LBW_RANGE_BASE_10, lbw_rng10_base);
2613 	WREG32(mmMME2_RTR_LBW_RANGE_MASK_10, lbw_rng10_mask);
2614 	WREG32(mmMME2_RTR_LBW_RANGE_BASE_11, lbw_rng11_base);
2615 	WREG32(mmMME2_RTR_LBW_RANGE_MASK_11, lbw_rng11_mask);
2616 	WREG32(mmMME2_RTR_LBW_RANGE_BASE_12, lbw_rng12_base);
2617 	WREG32(mmMME2_RTR_LBW_RANGE_MASK_12, lbw_rng12_mask);
2618 	WREG32(mmMME2_RTR_LBW_RANGE_BASE_13, lbw_rng13_base);
2619 	WREG32(mmMME2_RTR_LBW_RANGE_MASK_13, lbw_rng13_mask);
2620 
2621 	WREG32(mmMME3_RTR_LBW_RANGE_BASE_0, lbw_rng0_base);
2622 	WREG32(mmMME3_RTR_LBW_RANGE_MASK_0, lbw_rng0_mask);
2623 	WREG32(mmMME3_RTR_LBW_RANGE_BASE_1, lbw_rng1_base);
2624 	WREG32(mmMME3_RTR_LBW_RANGE_MASK_1, lbw_rng1_mask);
2625 	WREG32(mmMME3_RTR_LBW_RANGE_BASE_2, lbw_rng2_base);
2626 	WREG32(mmMME3_RTR_LBW_RANGE_MASK_2, lbw_rng2_mask);
2627 	WREG32(mmMME3_RTR_LBW_RANGE_BASE_3, lbw_rng3_base);
2628 	WREG32(mmMME3_RTR_LBW_RANGE_MASK_3, lbw_rng3_mask);
2629 	WREG32(mmMME3_RTR_LBW_RANGE_BASE_4, lbw_rng4_base);
2630 	WREG32(mmMME3_RTR_LBW_RANGE_MASK_4, lbw_rng4_mask);
2631 	WREG32(mmMME3_RTR_LBW_RANGE_BASE_5, lbw_rng5_base);
2632 	WREG32(mmMME3_RTR_LBW_RANGE_MASK_5, lbw_rng5_mask);
2633 	WREG32(mmMME3_RTR_LBW_RANGE_BASE_6, lbw_rng6_base);
2634 	WREG32(mmMME3_RTR_LBW_RANGE_MASK_6, lbw_rng6_mask);
2635 	WREG32(mmMME3_RTR_LBW_RANGE_BASE_7, lbw_rng7_base);
2636 	WREG32(mmMME3_RTR_LBW_RANGE_MASK_7, lbw_rng7_mask);
2637 	WREG32(mmMME3_RTR_LBW_RANGE_BASE_8, lbw_rng8_base);
2638 	WREG32(mmMME3_RTR_LBW_RANGE_MASK_8, lbw_rng8_mask);
2639 	WREG32(mmMME3_RTR_LBW_RANGE_BASE_9, lbw_rng9_base);
2640 	WREG32(mmMME3_RTR_LBW_RANGE_MASK_9, lbw_rng9_mask);
2641 	WREG32(mmMME3_RTR_LBW_RANGE_BASE_10, lbw_rng10_base);
2642 	WREG32(mmMME3_RTR_LBW_RANGE_MASK_10, lbw_rng10_mask);
2643 	WREG32(mmMME3_RTR_LBW_RANGE_BASE_11, lbw_rng11_base);
2644 	WREG32(mmMME3_RTR_LBW_RANGE_MASK_11, lbw_rng11_mask);
2645 	WREG32(mmMME3_RTR_LBW_RANGE_BASE_12, lbw_rng12_base);
2646 	WREG32(mmMME3_RTR_LBW_RANGE_MASK_12, lbw_rng12_mask);
2647 	WREG32(mmMME3_RTR_LBW_RANGE_BASE_13, lbw_rng13_base);
2648 	WREG32(mmMME3_RTR_LBW_RANGE_MASK_13, lbw_rng13_mask);
2649 
2650 	WREG32(mmMME4_RTR_LBW_RANGE_BASE_0, lbw_rng0_base);
2651 	WREG32(mmMME4_RTR_LBW_RANGE_MASK_0, lbw_rng0_mask);
2652 	WREG32(mmMME4_RTR_LBW_RANGE_BASE_1, lbw_rng1_base);
2653 	WREG32(mmMME4_RTR_LBW_RANGE_MASK_1, lbw_rng1_mask);
2654 	WREG32(mmMME4_RTR_LBW_RANGE_BASE_2, lbw_rng2_base);
2655 	WREG32(mmMME4_RTR_LBW_RANGE_MASK_2, lbw_rng2_mask);
2656 	WREG32(mmMME4_RTR_LBW_RANGE_BASE_3, lbw_rng3_base);
2657 	WREG32(mmMME4_RTR_LBW_RANGE_MASK_3, lbw_rng3_mask);
2658 	WREG32(mmMME4_RTR_LBW_RANGE_BASE_4, lbw_rng4_base);
2659 	WREG32(mmMME4_RTR_LBW_RANGE_MASK_4, lbw_rng4_mask);
2660 	WREG32(mmMME4_RTR_LBW_RANGE_BASE_5, lbw_rng5_base);
2661 	WREG32(mmMME4_RTR_LBW_RANGE_MASK_5, lbw_rng5_mask);
2662 	WREG32(mmMME4_RTR_LBW_RANGE_BASE_6, lbw_rng6_base);
2663 	WREG32(mmMME4_RTR_LBW_RANGE_MASK_6, lbw_rng6_mask);
2664 	WREG32(mmMME4_RTR_LBW_RANGE_BASE_7, lbw_rng7_base);
2665 	WREG32(mmMME4_RTR_LBW_RANGE_MASK_7, lbw_rng7_mask);
2666 	WREG32(mmMME4_RTR_LBW_RANGE_BASE_8, lbw_rng8_base);
2667 	WREG32(mmMME4_RTR_LBW_RANGE_MASK_8, lbw_rng8_mask);
2668 	WREG32(mmMME4_RTR_LBW_RANGE_BASE_9, lbw_rng9_base);
2669 	WREG32(mmMME4_RTR_LBW_RANGE_MASK_9, lbw_rng9_mask);
2670 	WREG32(mmMME4_RTR_LBW_RANGE_BASE_10, lbw_rng10_base);
2671 	WREG32(mmMME4_RTR_LBW_RANGE_MASK_10, lbw_rng10_mask);
2672 	WREG32(mmMME4_RTR_LBW_RANGE_BASE_11, lbw_rng11_base);
2673 	WREG32(mmMME4_RTR_LBW_RANGE_MASK_11, lbw_rng11_mask);
2674 	WREG32(mmMME4_RTR_LBW_RANGE_BASE_12, lbw_rng12_base);
2675 	WREG32(mmMME4_RTR_LBW_RANGE_MASK_12, lbw_rng12_mask);
2676 	WREG32(mmMME4_RTR_LBW_RANGE_BASE_13, lbw_rng13_base);
2677 	WREG32(mmMME4_RTR_LBW_RANGE_MASK_13, lbw_rng13_mask);
2678 
2679 	WREG32(mmMME5_RTR_LBW_RANGE_BASE_0, lbw_rng0_base);
2680 	WREG32(mmMME5_RTR_LBW_RANGE_MASK_0, lbw_rng0_mask);
2681 	WREG32(mmMME5_RTR_LBW_RANGE_BASE_1, lbw_rng1_base);
2682 	WREG32(mmMME5_RTR_LBW_RANGE_MASK_1, lbw_rng1_mask);
2683 	WREG32(mmMME5_RTR_LBW_RANGE_BASE_2, lbw_rng2_base);
2684 	WREG32(mmMME5_RTR_LBW_RANGE_MASK_2, lbw_rng2_mask);
2685 	WREG32(mmMME5_RTR_LBW_RANGE_BASE_3, lbw_rng3_base);
2686 	WREG32(mmMME5_RTR_LBW_RANGE_MASK_3, lbw_rng3_mask);
2687 	WREG32(mmMME5_RTR_LBW_RANGE_BASE_4, lbw_rng4_base);
2688 	WREG32(mmMME5_RTR_LBW_RANGE_MASK_4, lbw_rng4_mask);
2689 	WREG32(mmMME5_RTR_LBW_RANGE_BASE_5, lbw_rng5_base);
2690 	WREG32(mmMME5_RTR_LBW_RANGE_MASK_5, lbw_rng5_mask);
2691 	WREG32(mmMME5_RTR_LBW_RANGE_BASE_6, lbw_rng6_base);
2692 	WREG32(mmMME5_RTR_LBW_RANGE_MASK_6, lbw_rng6_mask);
2693 	WREG32(mmMME5_RTR_LBW_RANGE_BASE_7, lbw_rng7_base);
2694 	WREG32(mmMME5_RTR_LBW_RANGE_MASK_7, lbw_rng7_mask);
2695 	WREG32(mmMME5_RTR_LBW_RANGE_BASE_8, lbw_rng8_base);
2696 	WREG32(mmMME5_RTR_LBW_RANGE_MASK_8, lbw_rng8_mask);
2697 	WREG32(mmMME5_RTR_LBW_RANGE_BASE_9, lbw_rng9_base);
2698 	WREG32(mmMME5_RTR_LBW_RANGE_MASK_9, lbw_rng9_mask);
2699 	WREG32(mmMME5_RTR_LBW_RANGE_BASE_10, lbw_rng10_base);
2700 	WREG32(mmMME5_RTR_LBW_RANGE_MASK_10, lbw_rng10_mask);
2701 	WREG32(mmMME5_RTR_LBW_RANGE_BASE_11, lbw_rng11_base);
2702 	WREG32(mmMME5_RTR_LBW_RANGE_MASK_11, lbw_rng11_mask);
2703 	WREG32(mmMME5_RTR_LBW_RANGE_BASE_12, lbw_rng12_base);
2704 	WREG32(mmMME5_RTR_LBW_RANGE_MASK_12, lbw_rng12_mask);
2705 	WREG32(mmMME5_RTR_LBW_RANGE_BASE_13, lbw_rng13_base);
2706 	WREG32(mmMME5_RTR_LBW_RANGE_MASK_13, lbw_rng13_mask);
2707 
2708 	WREG32(mmMME6_RTR_LBW_RANGE_BASE_0, lbw_rng0_base);
2709 	WREG32(mmMME6_RTR_LBW_RANGE_MASK_0, lbw_rng0_mask);
2710 	WREG32(mmMME6_RTR_LBW_RANGE_BASE_1, lbw_rng1_base);
2711 	WREG32(mmMME6_RTR_LBW_RANGE_MASK_1, lbw_rng1_mask);
2712 	WREG32(mmMME6_RTR_LBW_RANGE_BASE_2, lbw_rng2_base);
2713 	WREG32(mmMME6_RTR_LBW_RANGE_MASK_2, lbw_rng2_mask);
2714 	WREG32(mmMME6_RTR_LBW_RANGE_BASE_3, lbw_rng3_base);
2715 	WREG32(mmMME6_RTR_LBW_RANGE_MASK_3, lbw_rng3_mask);
2716 	WREG32(mmMME6_RTR_LBW_RANGE_BASE_4, lbw_rng4_base);
2717 	WREG32(mmMME6_RTR_LBW_RANGE_MASK_4, lbw_rng4_mask);
2718 	WREG32(mmMME6_RTR_LBW_RANGE_BASE_5, lbw_rng5_base);
2719 	WREG32(mmMME6_RTR_LBW_RANGE_MASK_5, lbw_rng5_mask);
2720 	WREG32(mmMME6_RTR_LBW_RANGE_BASE_6, lbw_rng6_base);
2721 	WREG32(mmMME6_RTR_LBW_RANGE_MASK_6, lbw_rng6_mask);
2722 	WREG32(mmMME6_RTR_LBW_RANGE_BASE_7, lbw_rng7_base);
2723 	WREG32(mmMME6_RTR_LBW_RANGE_MASK_7, lbw_rng7_mask);
2724 	WREG32(mmMME6_RTR_LBW_RANGE_BASE_8, lbw_rng8_base);
2725 	WREG32(mmMME6_RTR_LBW_RANGE_MASK_8, lbw_rng8_mask);
2726 	WREG32(mmMME6_RTR_LBW_RANGE_BASE_9, lbw_rng9_base);
2727 	WREG32(mmMME6_RTR_LBW_RANGE_MASK_9, lbw_rng9_mask);
2728 	WREG32(mmMME6_RTR_LBW_RANGE_BASE_10, lbw_rng10_base);
2729 	WREG32(mmMME6_RTR_LBW_RANGE_MASK_10, lbw_rng10_mask);
2730 	WREG32(mmMME6_RTR_LBW_RANGE_BASE_11, lbw_rng11_base);
2731 	WREG32(mmMME6_RTR_LBW_RANGE_MASK_11, lbw_rng11_mask);
2732 	WREG32(mmMME6_RTR_LBW_RANGE_BASE_12, lbw_rng12_base);
2733 	WREG32(mmMME6_RTR_LBW_RANGE_MASK_12, lbw_rng12_mask);
2734 	WREG32(mmMME6_RTR_LBW_RANGE_BASE_13, lbw_rng13_base);
2735 	WREG32(mmMME6_RTR_LBW_RANGE_MASK_13, lbw_rng13_mask);
2736 
2737 	WREG32(mmTPC0_NRTR_LBW_RANGE_HIT, 0xFFFF);
2738 	WREG32(mmTPC0_NRTR_HBW_RANGE_HIT, 0xFE);
2739 
2740 	/* Protect HOST */
2741 	WREG32(mmTPC0_NRTR_HBW_RANGE_BASE_L_0, 0);
2742 	WREG32(mmTPC0_NRTR_HBW_RANGE_BASE_H_0, 0);
2743 	WREG32(mmTPC0_NRTR_HBW_RANGE_MASK_L_0, 0);
2744 	WREG32(mmTPC0_NRTR_HBW_RANGE_MASK_H_0, 0xFFF80);
2745 
2746 	/*
2747 	 * Protect DDR @
2748 	 * DRAM_VIRT_BASE : DRAM_VIRT_BASE + DRAM_VIRT_END
2749 	 * The mask protects the first 512MB
2750 	 */
2751 	WREG32(mmTPC0_NRTR_HBW_RANGE_BASE_L_1, dram_addr_lo);
2752 	WREG32(mmTPC0_NRTR_HBW_RANGE_BASE_H_1, dram_addr_hi);
2753 	WREG32(mmTPC0_NRTR_HBW_RANGE_MASK_L_1, 0xE0000000);
2754 	WREG32(mmTPC0_NRTR_HBW_RANGE_MASK_H_1, 0x3FFFF);
2755 
2756 	WREG32(mmTPC0_NRTR_LBW_RANGE_BASE_0, lbw_rng0_base);
2757 	WREG32(mmTPC0_NRTR_LBW_RANGE_MASK_0, lbw_rng0_mask);
2758 	WREG32(mmTPC0_NRTR_LBW_RANGE_BASE_1, lbw_rng1_base);
2759 	WREG32(mmTPC0_NRTR_LBW_RANGE_MASK_1, lbw_rng1_mask);
2760 	WREG32(mmTPC0_NRTR_LBW_RANGE_BASE_2, lbw_rng2_base);
2761 	WREG32(mmTPC0_NRTR_LBW_RANGE_MASK_2, lbw_rng2_mask);
2762 	WREG32(mmTPC0_NRTR_LBW_RANGE_BASE_3, lbw_rng3_base);
2763 	WREG32(mmTPC0_NRTR_LBW_RANGE_MASK_3, lbw_rng3_mask);
2764 	WREG32(mmTPC0_NRTR_LBW_RANGE_BASE_4, lbw_rng4_base);
2765 	WREG32(mmTPC0_NRTR_LBW_RANGE_MASK_4, lbw_rng4_mask);
2766 	WREG32(mmTPC0_NRTR_LBW_RANGE_BASE_5, lbw_rng5_base);
2767 	WREG32(mmTPC0_NRTR_LBW_RANGE_MASK_5, lbw_rng5_mask);
2768 	WREG32(mmTPC0_NRTR_LBW_RANGE_BASE_6, lbw_rng6_base);
2769 	WREG32(mmTPC0_NRTR_LBW_RANGE_MASK_6, lbw_rng6_mask);
2770 	WREG32(mmTPC0_NRTR_LBW_RANGE_BASE_7, lbw_rng7_base);
2771 	WREG32(mmTPC0_NRTR_LBW_RANGE_MASK_7, lbw_rng7_mask);
2772 	WREG32(mmTPC0_NRTR_LBW_RANGE_BASE_8, lbw_rng8_base);
2773 	WREG32(mmTPC0_NRTR_LBW_RANGE_MASK_8, lbw_rng8_mask);
2774 	WREG32(mmTPC0_NRTR_LBW_RANGE_BASE_9, lbw_rng9_base);
2775 	WREG32(mmTPC0_NRTR_LBW_RANGE_MASK_9, lbw_rng9_mask);
2776 	WREG32(mmTPC0_NRTR_LBW_RANGE_BASE_10, lbw_rng10_base);
2777 	WREG32(mmTPC0_NRTR_LBW_RANGE_MASK_10, lbw_rng10_mask);
2778 	WREG32(mmTPC0_NRTR_LBW_RANGE_BASE_11, lbw_rng11_base);
2779 	WREG32(mmTPC0_NRTR_LBW_RANGE_MASK_11, lbw_rng11_mask);
2780 	WREG32(mmTPC0_NRTR_LBW_RANGE_BASE_12, lbw_rng12_base);
2781 	WREG32(mmTPC0_NRTR_LBW_RANGE_MASK_12, lbw_rng12_mask);
2782 	WREG32(mmTPC0_NRTR_LBW_RANGE_BASE_13, lbw_rng13_base);
2783 	WREG32(mmTPC0_NRTR_LBW_RANGE_MASK_13, lbw_rng13_mask);
2784 
2785 	WREG32(mmTPC1_RTR_LBW_RANGE_HIT, 0xFFFF);
2786 	WREG32(mmTPC1_RTR_HBW_RANGE_HIT, 0xFE);
2787 
2788 	/* Protect HOST */
2789 	WREG32(mmTPC1_RTR_HBW_RANGE_BASE_L_0, 0);
2790 	WREG32(mmTPC1_RTR_HBW_RANGE_BASE_H_0, 0);
2791 	WREG32(mmTPC1_RTR_HBW_RANGE_MASK_L_0, 0);
2792 	WREG32(mmTPC1_RTR_HBW_RANGE_MASK_H_0, 0xFFF80);
2793 
2794 	/*
2795 	 * Protect DDR @
2796 	 * DRAM_VIRT_BASE : DRAM_VIRT_BASE + DRAM_VIRT_END
2797 	 * The mask protects the first 512MB
2798 	 */
2799 	WREG32(mmTPC1_RTR_HBW_RANGE_BASE_L_1, dram_addr_lo);
2800 	WREG32(mmTPC1_RTR_HBW_RANGE_BASE_H_1, dram_addr_hi);
2801 	WREG32(mmTPC1_RTR_HBW_RANGE_MASK_L_1, 0xE0000000);
2802 	WREG32(mmTPC1_RTR_HBW_RANGE_MASK_H_1, 0x3FFFF);
2803 
2804 	WREG32(mmTPC1_RTR_LBW_RANGE_BASE_0, lbw_rng0_base);
2805 	WREG32(mmTPC1_RTR_LBW_RANGE_MASK_0, lbw_rng0_mask);
2806 	WREG32(mmTPC1_RTR_LBW_RANGE_BASE_1, lbw_rng1_base);
2807 	WREG32(mmTPC1_RTR_LBW_RANGE_MASK_1, lbw_rng1_mask);
2808 	WREG32(mmTPC1_RTR_LBW_RANGE_BASE_2, lbw_rng2_base);
2809 	WREG32(mmTPC1_RTR_LBW_RANGE_MASK_2, lbw_rng2_mask);
2810 	WREG32(mmTPC1_RTR_LBW_RANGE_BASE_3, lbw_rng3_base);
2811 	WREG32(mmTPC1_RTR_LBW_RANGE_MASK_3, lbw_rng3_mask);
2812 	WREG32(mmTPC1_RTR_LBW_RANGE_BASE_4, lbw_rng4_base);
2813 	WREG32(mmTPC1_RTR_LBW_RANGE_MASK_4, lbw_rng4_mask);
2814 	WREG32(mmTPC1_RTR_LBW_RANGE_BASE_5, lbw_rng5_base);
2815 	WREG32(mmTPC1_RTR_LBW_RANGE_MASK_5, lbw_rng5_mask);
2816 	WREG32(mmTPC1_RTR_LBW_RANGE_BASE_6, lbw_rng6_base);
2817 	WREG32(mmTPC1_RTR_LBW_RANGE_MASK_6, lbw_rng6_mask);
2818 	WREG32(mmTPC1_RTR_LBW_RANGE_BASE_7, lbw_rng7_base);
2819 	WREG32(mmTPC1_RTR_LBW_RANGE_MASK_7, lbw_rng7_mask);
2820 	WREG32(mmTPC1_RTR_LBW_RANGE_BASE_8, lbw_rng8_base);
2821 	WREG32(mmTPC1_RTR_LBW_RANGE_MASK_8, lbw_rng8_mask);
2822 	WREG32(mmTPC1_RTR_LBW_RANGE_BASE_9, lbw_rng9_base);
2823 	WREG32(mmTPC1_RTR_LBW_RANGE_MASK_9, lbw_rng9_mask);
2824 	WREG32(mmTPC1_RTR_LBW_RANGE_BASE_10, lbw_rng10_base);
2825 	WREG32(mmTPC1_RTR_LBW_RANGE_MASK_10, lbw_rng10_mask);
2826 	WREG32(mmTPC1_RTR_LBW_RANGE_BASE_11, lbw_rng11_base);
2827 	WREG32(mmTPC1_RTR_LBW_RANGE_MASK_11, lbw_rng11_mask);
2828 	WREG32(mmTPC1_RTR_LBW_RANGE_BASE_12, lbw_rng12_base);
2829 	WREG32(mmTPC1_RTR_LBW_RANGE_MASK_12, lbw_rng12_mask);
2830 	WREG32(mmTPC1_RTR_LBW_RANGE_BASE_13, lbw_rng13_base);
2831 	WREG32(mmTPC1_RTR_LBW_RANGE_MASK_13, lbw_rng13_mask);
2832 
2833 	WREG32(mmTPC2_RTR_LBW_RANGE_HIT, 0xFFFF);
2834 	WREG32(mmTPC2_RTR_HBW_RANGE_HIT, 0xFE);
2835 
2836 	/* Protect HOST */
2837 	WREG32(mmTPC2_RTR_HBW_RANGE_BASE_L_0, 0);
2838 	WREG32(mmTPC2_RTR_HBW_RANGE_BASE_H_0, 0);
2839 	WREG32(mmTPC2_RTR_HBW_RANGE_MASK_L_0, 0);
2840 	WREG32(mmTPC2_RTR_HBW_RANGE_MASK_H_0, 0xFFF80);
2841 
2842 	/*
2843 	 * Protect DDR @
2844 	 * DRAM_VIRT_BASE : DRAM_VIRT_BASE + DRAM_VIRT_END
2845 	 * The mask protects the first 512MB
2846 	 */
2847 	WREG32(mmTPC2_RTR_HBW_RANGE_BASE_L_1, dram_addr_lo);
2848 	WREG32(mmTPC2_RTR_HBW_RANGE_BASE_H_1, dram_addr_hi);
2849 	WREG32(mmTPC2_RTR_HBW_RANGE_MASK_L_1, 0xE0000000);
2850 	WREG32(mmTPC2_RTR_HBW_RANGE_MASK_H_1, 0x3FFFF);
2851 
2852 	WREG32(mmTPC2_RTR_LBW_RANGE_BASE_0, lbw_rng0_base);
2853 	WREG32(mmTPC2_RTR_LBW_RANGE_MASK_0, lbw_rng0_mask);
2854 	WREG32(mmTPC2_RTR_LBW_RANGE_BASE_1, lbw_rng1_base);
2855 	WREG32(mmTPC2_RTR_LBW_RANGE_MASK_1, lbw_rng1_mask);
2856 	WREG32(mmTPC2_RTR_LBW_RANGE_BASE_2, lbw_rng2_base);
2857 	WREG32(mmTPC2_RTR_LBW_RANGE_MASK_2, lbw_rng2_mask);
2858 	WREG32(mmTPC2_RTR_LBW_RANGE_BASE_3, lbw_rng3_base);
2859 	WREG32(mmTPC2_RTR_LBW_RANGE_MASK_3, lbw_rng3_mask);
2860 	WREG32(mmTPC2_RTR_LBW_RANGE_BASE_4, lbw_rng4_base);
2861 	WREG32(mmTPC2_RTR_LBW_RANGE_MASK_4, lbw_rng4_mask);
2862 	WREG32(mmTPC2_RTR_LBW_RANGE_BASE_5, lbw_rng5_base);
2863 	WREG32(mmTPC2_RTR_LBW_RANGE_MASK_5, lbw_rng5_mask);
2864 	WREG32(mmTPC2_RTR_LBW_RANGE_BASE_6, lbw_rng6_base);
2865 	WREG32(mmTPC2_RTR_LBW_RANGE_MASK_6, lbw_rng6_mask);
2866 	WREG32(mmTPC2_RTR_LBW_RANGE_BASE_7, lbw_rng7_base);
2867 	WREG32(mmTPC2_RTR_LBW_RANGE_MASK_7, lbw_rng7_mask);
2868 	WREG32(mmTPC2_RTR_LBW_RANGE_BASE_8, lbw_rng8_base);
2869 	WREG32(mmTPC2_RTR_LBW_RANGE_MASK_8, lbw_rng8_mask);
2870 	WREG32(mmTPC2_RTR_LBW_RANGE_BASE_9, lbw_rng9_base);
2871 	WREG32(mmTPC2_RTR_LBW_RANGE_MASK_9, lbw_rng9_mask);
2872 	WREG32(mmTPC2_RTR_LBW_RANGE_BASE_10, lbw_rng10_base);
2873 	WREG32(mmTPC2_RTR_LBW_RANGE_MASK_10, lbw_rng10_mask);
2874 	WREG32(mmTPC2_RTR_LBW_RANGE_BASE_11, lbw_rng11_base);
2875 	WREG32(mmTPC2_RTR_LBW_RANGE_MASK_11, lbw_rng11_mask);
2876 	WREG32(mmTPC2_RTR_LBW_RANGE_BASE_12, lbw_rng12_base);
2877 	WREG32(mmTPC2_RTR_LBW_RANGE_MASK_12, lbw_rng12_mask);
2878 	WREG32(mmTPC2_RTR_LBW_RANGE_BASE_13, lbw_rng13_base);
2879 	WREG32(mmTPC2_RTR_LBW_RANGE_MASK_13, lbw_rng13_mask);
2880 
2881 	WREG32(mmTPC3_RTR_LBW_RANGE_HIT, 0xFFFF);
2882 	WREG32(mmTPC3_RTR_HBW_RANGE_HIT, 0xFE);
2883 
2884 	/* Protect HOST */
2885 	WREG32(mmTPC3_RTR_HBW_RANGE_BASE_L_0, 0);
2886 	WREG32(mmTPC3_RTR_HBW_RANGE_BASE_H_0, 0);
2887 	WREG32(mmTPC3_RTR_HBW_RANGE_MASK_L_0, 0);
2888 	WREG32(mmTPC3_RTR_HBW_RANGE_MASK_H_0, 0xFFF80);
2889 
2890 	/*
2891 	 * Protect DDR @
2892 	 * DRAM_VIRT_BASE : DRAM_VIRT_BASE + DRAM_VIRT_END
2893 	 * The mask protects the first 512MB
2894 	 */
2895 	WREG32(mmTPC3_RTR_HBW_RANGE_BASE_L_1, dram_addr_lo);
2896 	WREG32(mmTPC3_RTR_HBW_RANGE_BASE_H_1, dram_addr_hi);
2897 	WREG32(mmTPC3_RTR_HBW_RANGE_MASK_L_1, 0xE0000000);
2898 	WREG32(mmTPC3_RTR_HBW_RANGE_MASK_H_1, 0x3FFFF);
2899 
2900 	WREG32(mmTPC3_RTR_LBW_RANGE_BASE_0, lbw_rng0_base);
2901 	WREG32(mmTPC3_RTR_LBW_RANGE_MASK_0, lbw_rng0_mask);
2902 	WREG32(mmTPC3_RTR_LBW_RANGE_BASE_1, lbw_rng1_base);
2903 	WREG32(mmTPC3_RTR_LBW_RANGE_MASK_1, lbw_rng1_mask);
2904 	WREG32(mmTPC3_RTR_LBW_RANGE_BASE_2, lbw_rng2_base);
2905 	WREG32(mmTPC3_RTR_LBW_RANGE_MASK_2, lbw_rng2_mask);
2906 	WREG32(mmTPC3_RTR_LBW_RANGE_BASE_3, lbw_rng3_base);
2907 	WREG32(mmTPC3_RTR_LBW_RANGE_MASK_3, lbw_rng3_mask);
2908 	WREG32(mmTPC3_RTR_LBW_RANGE_BASE_4, lbw_rng4_base);
2909 	WREG32(mmTPC3_RTR_LBW_RANGE_MASK_4, lbw_rng4_mask);
2910 	WREG32(mmTPC3_RTR_LBW_RANGE_BASE_5, lbw_rng5_base);
2911 	WREG32(mmTPC3_RTR_LBW_RANGE_MASK_5, lbw_rng5_mask);
2912 	WREG32(mmTPC3_RTR_LBW_RANGE_BASE_6, lbw_rng6_base);
2913 	WREG32(mmTPC3_RTR_LBW_RANGE_MASK_6, lbw_rng6_mask);
2914 	WREG32(mmTPC3_RTR_LBW_RANGE_BASE_7, lbw_rng7_base);
2915 	WREG32(mmTPC3_RTR_LBW_RANGE_MASK_7, lbw_rng7_mask);
2916 	WREG32(mmTPC3_RTR_LBW_RANGE_BASE_8, lbw_rng8_base);
2917 	WREG32(mmTPC3_RTR_LBW_RANGE_MASK_8, lbw_rng8_mask);
2918 	WREG32(mmTPC3_RTR_LBW_RANGE_BASE_9, lbw_rng9_base);
2919 	WREG32(mmTPC3_RTR_LBW_RANGE_MASK_9, lbw_rng9_mask);
2920 	WREG32(mmTPC3_RTR_LBW_RANGE_BASE_10, lbw_rng10_base);
2921 	WREG32(mmTPC3_RTR_LBW_RANGE_MASK_10, lbw_rng10_mask);
2922 	WREG32(mmTPC3_RTR_LBW_RANGE_BASE_11, lbw_rng11_base);
2923 	WREG32(mmTPC3_RTR_LBW_RANGE_MASK_11, lbw_rng11_mask);
2924 	WREG32(mmTPC3_RTR_LBW_RANGE_BASE_12, lbw_rng12_base);
2925 	WREG32(mmTPC3_RTR_LBW_RANGE_MASK_12, lbw_rng12_mask);
2926 	WREG32(mmTPC3_RTR_LBW_RANGE_BASE_13, lbw_rng13_base);
2927 	WREG32(mmTPC3_RTR_LBW_RANGE_MASK_13, lbw_rng13_mask);
2928 
2929 	WREG32(mmTPC4_RTR_LBW_RANGE_HIT, 0xFFFF);
2930 	WREG32(mmTPC4_RTR_HBW_RANGE_HIT, 0xFE);
2931 
2932 	/* Protect HOST */
2933 	WREG32(mmTPC4_RTR_HBW_RANGE_BASE_L_0, 0);
2934 	WREG32(mmTPC4_RTR_HBW_RANGE_BASE_H_0, 0);
2935 	WREG32(mmTPC4_RTR_HBW_RANGE_MASK_L_0, 0);
2936 	WREG32(mmTPC4_RTR_HBW_RANGE_MASK_H_0, 0xFFF80);
2937 
2938 	/*
2939 	 * Protect DDR @
2940 	 * DRAM_VIRT_BASE : DRAM_VIRT_BASE + DRAM_VIRT_END
2941 	 * The mask protects the first 512MB
2942 	 */
2943 	WREG32(mmTPC4_RTR_HBW_RANGE_BASE_L_1, dram_addr_lo);
2944 	WREG32(mmTPC4_RTR_HBW_RANGE_BASE_H_1, dram_addr_hi);
2945 	WREG32(mmTPC4_RTR_HBW_RANGE_MASK_L_1, 0xE0000000);
2946 	WREG32(mmTPC4_RTR_HBW_RANGE_MASK_H_1, 0x3FFFF);
2947 
2948 	WREG32(mmTPC4_RTR_LBW_RANGE_BASE_0, lbw_rng0_base);
2949 	WREG32(mmTPC4_RTR_LBW_RANGE_MASK_0, lbw_rng0_mask);
2950 	WREG32(mmTPC4_RTR_LBW_RANGE_BASE_1, lbw_rng1_base);
2951 	WREG32(mmTPC4_RTR_LBW_RANGE_MASK_1, lbw_rng1_mask);
2952 	WREG32(mmTPC4_RTR_LBW_RANGE_BASE_2, lbw_rng2_base);
2953 	WREG32(mmTPC4_RTR_LBW_RANGE_MASK_2, lbw_rng2_mask);
2954 	WREG32(mmTPC4_RTR_LBW_RANGE_BASE_3, lbw_rng3_base);
2955 	WREG32(mmTPC4_RTR_LBW_RANGE_MASK_3, lbw_rng3_mask);
2956 	WREG32(mmTPC4_RTR_LBW_RANGE_BASE_4, lbw_rng4_base);
2957 	WREG32(mmTPC4_RTR_LBW_RANGE_MASK_4, lbw_rng4_mask);
2958 	WREG32(mmTPC4_RTR_LBW_RANGE_BASE_5, lbw_rng5_base);
2959 	WREG32(mmTPC4_RTR_LBW_RANGE_MASK_5, lbw_rng5_mask);
2960 	WREG32(mmTPC4_RTR_LBW_RANGE_BASE_6, lbw_rng6_base);
2961 	WREG32(mmTPC4_RTR_LBW_RANGE_MASK_6, lbw_rng6_mask);
2962 	WREG32(mmTPC4_RTR_LBW_RANGE_BASE_7, lbw_rng7_base);
2963 	WREG32(mmTPC4_RTR_LBW_RANGE_MASK_7, lbw_rng7_mask);
2964 	WREG32(mmTPC4_RTR_LBW_RANGE_BASE_8, lbw_rng8_base);
2965 	WREG32(mmTPC4_RTR_LBW_RANGE_MASK_8, lbw_rng8_mask);
2966 	WREG32(mmTPC4_RTR_LBW_RANGE_BASE_9, lbw_rng9_base);
2967 	WREG32(mmTPC4_RTR_LBW_RANGE_MASK_9, lbw_rng9_mask);
2968 	WREG32(mmTPC4_RTR_LBW_RANGE_BASE_10, lbw_rng10_base);
2969 	WREG32(mmTPC4_RTR_LBW_RANGE_MASK_10, lbw_rng10_mask);
2970 	WREG32(mmTPC4_RTR_LBW_RANGE_BASE_11, lbw_rng11_base);
2971 	WREG32(mmTPC4_RTR_LBW_RANGE_MASK_11, lbw_rng11_mask);
2972 	WREG32(mmTPC4_RTR_LBW_RANGE_BASE_12, lbw_rng12_base);
2973 	WREG32(mmTPC4_RTR_LBW_RANGE_MASK_12, lbw_rng12_mask);
2974 	WREG32(mmTPC4_RTR_LBW_RANGE_BASE_13, lbw_rng13_base);
2975 	WREG32(mmTPC4_RTR_LBW_RANGE_MASK_13, lbw_rng13_mask);
2976 
2977 	WREG32(mmTPC5_RTR_LBW_RANGE_HIT, 0xFFFF);
2978 	WREG32(mmTPC5_RTR_HBW_RANGE_HIT, 0xFE);
2979 
2980 	/* Protect HOST */
2981 	WREG32(mmTPC5_RTR_HBW_RANGE_BASE_L_0, 0);
2982 	WREG32(mmTPC5_RTR_HBW_RANGE_BASE_H_0, 0);
2983 	WREG32(mmTPC5_RTR_HBW_RANGE_MASK_L_0, 0);
2984 	WREG32(mmTPC5_RTR_HBW_RANGE_MASK_H_0, 0xFFF80);
2985 
2986 	/*
2987 	 * Protect DDR @
2988 	 * DRAM_VIRT_BASE : DRAM_VIRT_BASE + DRAM_VIRT_END
2989 	 * The mask protects the first 512MB
2990 	 */
2991 	WREG32(mmTPC5_RTR_HBW_RANGE_BASE_L_1, dram_addr_lo);
2992 	WREG32(mmTPC5_RTR_HBW_RANGE_BASE_H_1, dram_addr_hi);
2993 	WREG32(mmTPC5_RTR_HBW_RANGE_MASK_L_1, 0xE0000000);
2994 	WREG32(mmTPC5_RTR_HBW_RANGE_MASK_H_1, 0x3FFFF);
2995 
2996 	WREG32(mmTPC5_RTR_LBW_RANGE_BASE_0, lbw_rng0_base);
2997 	WREG32(mmTPC5_RTR_LBW_RANGE_MASK_0, lbw_rng0_mask);
2998 	WREG32(mmTPC5_RTR_LBW_RANGE_BASE_1, lbw_rng1_base);
2999 	WREG32(mmTPC5_RTR_LBW_RANGE_MASK_1, lbw_rng1_mask);
3000 	WREG32(mmTPC5_RTR_LBW_RANGE_BASE_2, lbw_rng2_base);
3001 	WREG32(mmTPC5_RTR_LBW_RANGE_MASK_2, lbw_rng2_mask);
3002 	WREG32(mmTPC5_RTR_LBW_RANGE_BASE_3, lbw_rng3_base);
3003 	WREG32(mmTPC5_RTR_LBW_RANGE_MASK_3, lbw_rng3_mask);
3004 	WREG32(mmTPC5_RTR_LBW_RANGE_BASE_4, lbw_rng4_base);
3005 	WREG32(mmTPC5_RTR_LBW_RANGE_MASK_4, lbw_rng4_mask);
3006 	WREG32(mmTPC5_RTR_LBW_RANGE_BASE_5, lbw_rng5_base);
3007 	WREG32(mmTPC5_RTR_LBW_RANGE_MASK_5, lbw_rng5_mask);
3008 	WREG32(mmTPC5_RTR_LBW_RANGE_BASE_6, lbw_rng6_base);
3009 	WREG32(mmTPC5_RTR_LBW_RANGE_MASK_6, lbw_rng6_mask);
3010 	WREG32(mmTPC5_RTR_LBW_RANGE_BASE_7, lbw_rng7_base);
3011 	WREG32(mmTPC5_RTR_LBW_RANGE_MASK_7, lbw_rng7_mask);
3012 	WREG32(mmTPC5_RTR_LBW_RANGE_BASE_8, lbw_rng8_base);
3013 	WREG32(mmTPC5_RTR_LBW_RANGE_MASK_8, lbw_rng8_mask);
3014 	WREG32(mmTPC5_RTR_LBW_RANGE_BASE_9, lbw_rng9_base);
3015 	WREG32(mmTPC5_RTR_LBW_RANGE_MASK_9, lbw_rng9_mask);
3016 	WREG32(mmTPC5_RTR_LBW_RANGE_BASE_10, lbw_rng10_base);
3017 	WREG32(mmTPC5_RTR_LBW_RANGE_MASK_10, lbw_rng10_mask);
3018 	WREG32(mmTPC5_RTR_LBW_RANGE_BASE_11, lbw_rng11_base);
3019 	WREG32(mmTPC5_RTR_LBW_RANGE_MASK_11, lbw_rng11_mask);
3020 	WREG32(mmTPC5_RTR_LBW_RANGE_BASE_12, lbw_rng12_base);
3021 	WREG32(mmTPC5_RTR_LBW_RANGE_MASK_12, lbw_rng12_mask);
3022 	WREG32(mmTPC5_RTR_LBW_RANGE_BASE_13, lbw_rng13_base);
3023 	WREG32(mmTPC5_RTR_LBW_RANGE_MASK_13, lbw_rng13_mask);
3024 
3025 	WREG32(mmTPC6_RTR_LBW_RANGE_HIT, 0xFFFF);
3026 	WREG32(mmTPC6_RTR_HBW_RANGE_HIT, 0xFE);
3027 
3028 	/* Protect HOST */
3029 	WREG32(mmTPC6_RTR_HBW_RANGE_BASE_L_0, 0);
3030 	WREG32(mmTPC6_RTR_HBW_RANGE_BASE_H_0, 0);
3031 	WREG32(mmTPC6_RTR_HBW_RANGE_MASK_L_0, 0);
3032 	WREG32(mmTPC6_RTR_HBW_RANGE_MASK_H_0, 0xFFF80);
3033 
3034 	/*
3035 	 * Protect DDR @
3036 	 * DRAM_VIRT_BASE : DRAM_VIRT_BASE + DRAM_VIRT_END
3037 	 * The mask protects the first 512MB
3038 	 */
3039 	WREG32(mmTPC6_RTR_HBW_RANGE_BASE_L_1, dram_addr_lo);
3040 	WREG32(mmTPC6_RTR_HBW_RANGE_BASE_H_1, dram_addr_hi);
3041 	WREG32(mmTPC6_RTR_HBW_RANGE_MASK_L_1, 0xE0000000);
3042 	WREG32(mmTPC6_RTR_HBW_RANGE_MASK_H_1, 0x3FFFF);
3043 
3044 	WREG32(mmTPC6_RTR_LBW_RANGE_BASE_0, lbw_rng0_base);
3045 	WREG32(mmTPC6_RTR_LBW_RANGE_MASK_0, lbw_rng0_mask);
3046 	WREG32(mmTPC6_RTR_LBW_RANGE_BASE_1, lbw_rng1_base);
3047 	WREG32(mmTPC6_RTR_LBW_RANGE_MASK_1, lbw_rng1_mask);
3048 	WREG32(mmTPC6_RTR_LBW_RANGE_BASE_2, lbw_rng2_base);
3049 	WREG32(mmTPC6_RTR_LBW_RANGE_MASK_2, lbw_rng2_mask);
3050 	WREG32(mmTPC6_RTR_LBW_RANGE_BASE_3, lbw_rng3_base);
3051 	WREG32(mmTPC6_RTR_LBW_RANGE_MASK_3, lbw_rng3_mask);
3052 	WREG32(mmTPC6_RTR_LBW_RANGE_BASE_4, lbw_rng4_base);
3053 	WREG32(mmTPC6_RTR_LBW_RANGE_MASK_4, lbw_rng4_mask);
3054 	WREG32(mmTPC6_RTR_LBW_RANGE_BASE_5, lbw_rng5_base);
3055 	WREG32(mmTPC6_RTR_LBW_RANGE_MASK_5, lbw_rng5_mask);
3056 	WREG32(mmTPC6_RTR_LBW_RANGE_BASE_6, lbw_rng6_base);
3057 	WREG32(mmTPC6_RTR_LBW_RANGE_MASK_6, lbw_rng6_mask);
3058 	WREG32(mmTPC6_RTR_LBW_RANGE_BASE_7, lbw_rng7_base);
3059 	WREG32(mmTPC6_RTR_LBW_RANGE_MASK_7, lbw_rng7_mask);
3060 	WREG32(mmTPC6_RTR_LBW_RANGE_BASE_8, lbw_rng8_base);
3061 	WREG32(mmTPC6_RTR_LBW_RANGE_MASK_8, lbw_rng8_mask);
3062 	WREG32(mmTPC6_RTR_LBW_RANGE_BASE_9, lbw_rng9_base);
3063 	WREG32(mmTPC6_RTR_LBW_RANGE_MASK_9, lbw_rng9_mask);
3064 	WREG32(mmTPC6_RTR_LBW_RANGE_BASE_10, lbw_rng10_base);
3065 	WREG32(mmTPC6_RTR_LBW_RANGE_MASK_10, lbw_rng10_mask);
3066 	WREG32(mmTPC6_RTR_LBW_RANGE_BASE_11, lbw_rng11_base);
3067 	WREG32(mmTPC6_RTR_LBW_RANGE_MASK_11, lbw_rng11_mask);
3068 	WREG32(mmTPC6_RTR_LBW_RANGE_BASE_12, lbw_rng12_base);
3069 	WREG32(mmTPC6_RTR_LBW_RANGE_MASK_12, lbw_rng12_mask);
3070 	WREG32(mmTPC6_RTR_LBW_RANGE_BASE_13, lbw_rng13_base);
3071 	WREG32(mmTPC6_RTR_LBW_RANGE_MASK_13, lbw_rng13_mask);
3072 
3073 	WREG32(mmTPC7_NRTR_LBW_RANGE_HIT, 0xFFFF);
3074 	WREG32(mmTPC7_NRTR_HBW_RANGE_HIT, 0xFE);
3075 
3076 	/* Protect HOST */
3077 	WREG32(mmTPC7_NRTR_HBW_RANGE_BASE_L_0, 0);
3078 	WREG32(mmTPC7_NRTR_HBW_RANGE_BASE_H_0, 0);
3079 	WREG32(mmTPC7_NRTR_HBW_RANGE_MASK_L_0, 0);
3080 	WREG32(mmTPC7_NRTR_HBW_RANGE_MASK_H_0, 0xFFF80);
3081 
3082 	/*
3083 	 * Protect DDR @
3084 	 * DRAM_VIRT_BASE : DRAM_VIRT_BASE + DRAM_VIRT_END
3085 	 * The mask protects the first 512MB
3086 	 */
3087 	WREG32(mmTPC7_NRTR_HBW_RANGE_BASE_L_1, dram_addr_lo);
3088 	WREG32(mmTPC7_NRTR_HBW_RANGE_BASE_H_1, dram_addr_hi);
3089 	WREG32(mmTPC7_NRTR_HBW_RANGE_MASK_L_1, 0xE0000000);
3090 	WREG32(mmTPC7_NRTR_HBW_RANGE_MASK_H_1, 0x3FFFF);
3091 
3092 	WREG32(mmTPC7_NRTR_LBW_RANGE_BASE_0, lbw_rng0_base);
3093 	WREG32(mmTPC7_NRTR_LBW_RANGE_MASK_0, lbw_rng0_mask);
3094 	WREG32(mmTPC7_NRTR_LBW_RANGE_BASE_1, lbw_rng1_base);
3095 	WREG32(mmTPC7_NRTR_LBW_RANGE_MASK_1, lbw_rng1_mask);
3096 	WREG32(mmTPC7_NRTR_LBW_RANGE_BASE_2, lbw_rng2_base);
3097 	WREG32(mmTPC7_NRTR_LBW_RANGE_MASK_2, lbw_rng2_mask);
3098 	WREG32(mmTPC7_NRTR_LBW_RANGE_BASE_3, lbw_rng3_base);
3099 	WREG32(mmTPC7_NRTR_LBW_RANGE_MASK_3, lbw_rng3_mask);
3100 	WREG32(mmTPC7_NRTR_LBW_RANGE_BASE_4, lbw_rng4_base);
3101 	WREG32(mmTPC7_NRTR_LBW_RANGE_MASK_4, lbw_rng4_mask);
3102 	WREG32(mmTPC7_NRTR_LBW_RANGE_BASE_5, lbw_rng5_base);
3103 	WREG32(mmTPC7_NRTR_LBW_RANGE_MASK_5, lbw_rng5_mask);
3104 	WREG32(mmTPC7_NRTR_LBW_RANGE_BASE_6, lbw_rng6_base);
3105 	WREG32(mmTPC7_NRTR_LBW_RANGE_MASK_6, lbw_rng6_mask);
3106 	WREG32(mmTPC7_NRTR_LBW_RANGE_BASE_7, lbw_rng7_base);
3107 	WREG32(mmTPC7_NRTR_LBW_RANGE_MASK_7, lbw_rng7_mask);
3108 	WREG32(mmTPC7_NRTR_LBW_RANGE_BASE_8, lbw_rng8_base);
3109 	WREG32(mmTPC7_NRTR_LBW_RANGE_MASK_8, lbw_rng8_mask);
3110 	WREG32(mmTPC7_NRTR_LBW_RANGE_BASE_9, lbw_rng9_base);
3111 	WREG32(mmTPC7_NRTR_LBW_RANGE_MASK_9, lbw_rng9_mask);
3112 	WREG32(mmTPC7_NRTR_LBW_RANGE_BASE_10, lbw_rng10_base);
3113 	WREG32(mmTPC7_NRTR_LBW_RANGE_MASK_10, lbw_rng10_mask);
3114 	WREG32(mmTPC7_NRTR_LBW_RANGE_BASE_11, lbw_rng11_base);
3115 	WREG32(mmTPC7_NRTR_LBW_RANGE_MASK_11, lbw_rng11_mask);
3116 	WREG32(mmTPC7_NRTR_LBW_RANGE_BASE_12, lbw_rng12_base);
3117 	WREG32(mmTPC7_NRTR_LBW_RANGE_MASK_12, lbw_rng12_mask);
3118 	WREG32(mmTPC7_NRTR_LBW_RANGE_BASE_13, lbw_rng13_base);
3119 	WREG32(mmTPC7_NRTR_LBW_RANGE_MASK_13, lbw_rng13_mask);
3120 
3121 	goya_init_protection_bits(hdev);
3122 }
3123 
3124 void goya_ack_protection_bits_errors(struct hl_device *hdev)
3125 {
3126 
3127 }
3128