Linux-libre 5.3.12-gnu
[librecmc/linux-libre.git] / drivers / misc / habanalabs / goya / goya_security.c
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_LFSR_POLYNOM & 0x7F) >> 2);
687         mask |= 1 << ((mmTPC0_CFG_STATUS & 0x7F) >> 2);
688
689         WREG32(pb_addr + word_offset, ~mask);
690
691         pb_addr = (mmTPC0_CFG_CFG_BASE_ADDRESS_HIGH & ~0xFFF) + PROT_BITS_OFFS;
692         word_offset = ((mmTPC0_CFG_CFG_BASE_ADDRESS_HIGH &
693                         PROT_BITS_OFFS) >> 7) << 2;
694         mask = 1 << ((mmTPC0_CFG_CFG_BASE_ADDRESS_HIGH & 0x7F) >> 2);
695         mask |= 1 << ((mmTPC0_CFG_CFG_SUBTRACT_VALUE & 0x7F) >> 2);
696         mask |= 1 << ((mmTPC0_CFG_SM_BASE_ADDRESS_LOW & 0x7F) >> 2);
697         mask |= 1 << ((mmTPC0_CFG_SM_BASE_ADDRESS_HIGH & 0x7F) >> 2);
698         mask |= 1 << ((mmTPC0_CFG_CFG_SUBTRACT_VALUE & 0x7F) >> 2);
699         mask |= 1 << ((mmTPC0_CFG_TPC_STALL & 0x7F) >> 2);
700         mask |= 1 << ((mmTPC0_CFG_MSS_CONFIG & 0x7F) >> 2);
701         mask |= 1 << ((mmTPC0_CFG_TPC_INTR_CAUSE & 0x7F) >> 2);
702         mask |= 1 << ((mmTPC0_CFG_TPC_INTR_MASK & 0x7F) >> 2);
703
704         WREG32(pb_addr + word_offset, ~mask);
705
706         pb_addr = (mmTPC0_CFG_ARUSER & ~0xFFF) + PROT_BITS_OFFS;
707         word_offset = ((mmTPC0_CFG_ARUSER & PROT_BITS_OFFS) >> 7) << 2;
708         mask = 1 << ((mmTPC0_CFG_ARUSER & 0x7F) >> 2);
709         mask |= 1 << ((mmTPC0_CFG_AWUSER & 0x7F) >> 2);
710
711         WREG32(pb_addr + word_offset, ~mask);
712
713         pb_addr = (mmTPC0_CFG_FUNC_MBIST_CNTRL & ~0xFFF) + PROT_BITS_OFFS;
714         word_offset = ((mmTPC0_CFG_FUNC_MBIST_CNTRL &
715                         PROT_BITS_OFFS) >> 7) << 2;
716         mask = 1 << ((mmTPC0_CFG_FUNC_MBIST_CNTRL & 0x7F) >> 2);
717         mask |= 1 << ((mmTPC0_CFG_FUNC_MBIST_PAT & 0x7F) >> 2);
718         mask |= 1 << ((mmTPC0_CFG_FUNC_MBIST_MEM_0 & 0x7F) >> 2);
719         mask |= 1 << ((mmTPC0_CFG_FUNC_MBIST_MEM_1 & 0x7F) >> 2);
720         mask |= 1 << ((mmTPC0_CFG_FUNC_MBIST_MEM_2 & 0x7F) >> 2);
721         mask |= 1 << ((mmTPC0_CFG_FUNC_MBIST_MEM_3 & 0x7F) >> 2);
722         mask |= 1 << ((mmTPC0_CFG_FUNC_MBIST_MEM_4 & 0x7F) >> 2);
723         mask |= 1 << ((mmTPC0_CFG_FUNC_MBIST_MEM_5 & 0x7F) >> 2);
724         mask |= 1 << ((mmTPC0_CFG_FUNC_MBIST_MEM_6 & 0x7F) >> 2);
725         mask |= 1 << ((mmTPC0_CFG_FUNC_MBIST_MEM_7 & 0x7F) >> 2);
726         mask |= 1 << ((mmTPC0_CFG_FUNC_MBIST_MEM_8 & 0x7F) >> 2);
727         mask |= 1 << ((mmTPC0_CFG_FUNC_MBIST_MEM_9 & 0x7F) >> 2);
728
729         WREG32(pb_addr + word_offset, ~mask);
730
731         pb_addr = (mmTPC0_QM_GLBL_CFG0 & ~0xFFF) + PROT_BITS_OFFS;
732         word_offset = ((mmTPC0_QM_GLBL_CFG0 & PROT_BITS_OFFS) >> 7) << 2;
733         mask = 1 << ((mmTPC0_QM_GLBL_CFG0 & 0x7F) >> 2);
734         mask |= 1 << ((mmTPC0_QM_GLBL_CFG1 & 0x7F) >> 2);
735         mask |= 1 << ((mmTPC0_QM_GLBL_PROT & 0x7F) >> 2);
736         mask |= 1 << ((mmTPC0_QM_GLBL_ERR_CFG & 0x7F) >> 2);
737         mask |= 1 << ((mmTPC0_QM_GLBL_ERR_ADDR_LO & 0x7F) >> 2);
738         mask |= 1 << ((mmTPC0_QM_GLBL_ERR_ADDR_HI & 0x7F) >> 2);
739         mask |= 1 << ((mmTPC0_QM_GLBL_ERR_WDATA & 0x7F) >> 2);
740         mask |= 1 << ((mmTPC0_QM_GLBL_SECURE_PROPS & 0x7F) >> 2);
741         mask |= 1 << ((mmTPC0_QM_GLBL_NON_SECURE_PROPS & 0x7F) >> 2);
742         mask |= 1 << ((mmTPC0_QM_GLBL_STS0 & 0x7F) >> 2);
743         mask |= 1 << ((mmTPC0_QM_GLBL_STS1 & 0x7F) >> 2);
744         mask |= 1 << ((mmTPC0_QM_PQ_BASE_LO & 0x7F) >> 2);
745         mask |= 1 << ((mmTPC0_QM_PQ_BASE_HI & 0x7F) >> 2);
746         mask |= 1 << ((mmTPC0_QM_PQ_SIZE & 0x7F) >> 2);
747         mask |= 1 << ((mmTPC0_QM_PQ_PI & 0x7F) >> 2);
748         mask |= 1 << ((mmTPC0_QM_PQ_CI & 0x7F) >> 2);
749         mask |= 1 << ((mmTPC0_QM_PQ_CFG0 & 0x7F) >> 2);
750         mask |= 1 << ((mmTPC0_QM_PQ_CFG1 & 0x7F) >> 2);
751         mask |= 1 << ((mmTPC0_QM_PQ_ARUSER & 0x7F) >> 2);
752
753         WREG32(pb_addr + word_offset, ~mask);
754
755         pb_addr = (mmTPC0_QM_PQ_PUSH0 & ~0xFFF) + PROT_BITS_OFFS;
756         word_offset = ((mmTPC0_QM_PQ_PUSH0 & PROT_BITS_OFFS) >> 7) << 2;
757         mask = 1 << ((mmTPC0_QM_PQ_PUSH0 & 0x7F) >> 2);
758         mask |= 1 << ((mmTPC0_QM_PQ_PUSH1 & 0x7F) >> 2);
759         mask |= 1 << ((mmTPC0_QM_PQ_PUSH2 & 0x7F) >> 2);
760         mask |= 1 << ((mmTPC0_QM_PQ_PUSH3 & 0x7F) >> 2);
761         mask |= 1 << ((mmTPC0_QM_PQ_STS0 & 0x7F) >> 2);
762         mask |= 1 << ((mmTPC0_QM_PQ_STS1 & 0x7F) >> 2);
763         mask |= 1 << ((mmTPC0_QM_PQ_RD_RATE_LIM_EN & 0x7F) >> 2);
764         mask |= 1 << ((mmTPC0_QM_PQ_RD_RATE_LIM_RST_TOKEN & 0x7F) >> 2);
765         mask |= 1 << ((mmTPC0_QM_PQ_RD_RATE_LIM_SAT & 0x7F) >> 2);
766         mask |= 1 << ((mmTPC0_QM_PQ_RD_RATE_LIM_TOUT & 0x7F) >> 2);
767         mask |= 1 << ((mmTPC0_QM_CQ_CFG0 & 0x7F) >> 2);
768         mask |= 1 << ((mmTPC0_QM_CQ_CFG1 & 0x7F) >> 2);
769         mask |= 1 << ((mmTPC0_QM_CQ_ARUSER & 0x7F) >> 2);
770         mask |= 1 << ((mmTPC0_QM_CQ_PTR_LO & 0x7F) >> 2);
771         mask |= 1 << ((mmTPC0_QM_CQ_PTR_HI & 0x7F) >> 2);
772         mask |= 1 << ((mmTPC0_QM_CQ_TSIZE & 0x7F) >> 2);
773         mask |= 1 << ((mmTPC0_QM_CQ_CTL & 0x7F) >> 2);
774         mask |= 1 << ((mmTPC0_QM_CQ_PTR_LO_STS & 0x7F) >> 2);
775         mask |= 1 << ((mmTPC0_QM_CQ_PTR_HI_STS & 0x7F) >> 2);
776         mask |= 1 << ((mmTPC0_QM_CQ_TSIZE_STS & 0x7F) >> 2);
777         mask |= 1 << ((mmTPC0_QM_CQ_CTL_STS & 0x7F) >> 2);
778         mask |= 1 << ((mmTPC0_QM_CQ_STS0 & 0x7F) >> 2);
779         mask |= 1 << ((mmTPC0_QM_CQ_STS1 & 0x7F) >> 2);
780         mask |= 1 << ((mmTPC0_QM_CQ_RD_RATE_LIM_EN & 0x7F) >> 2);
781         mask |= 1 << ((mmTPC0_QM_CQ_RD_RATE_LIM_RST_TOKEN & 0x7F) >> 2);
782         mask |= 1 << ((mmTPC0_QM_CQ_RD_RATE_LIM_SAT & 0x7F) >> 2);
783         mask |= 1 << ((mmTPC0_QM_CQ_RD_RATE_LIM_TOUT & 0x7F) >> 2);
784
785         WREG32(pb_addr + word_offset, ~mask);
786
787         pb_addr = (mmTPC0_QM_CQ_IFIFO_CNT & ~0xFFF) + PROT_BITS_OFFS;
788         word_offset = ((mmTPC0_QM_CQ_IFIFO_CNT & PROT_BITS_OFFS) >> 7) << 2;
789         mask = 1 << ((mmTPC0_QM_CQ_IFIFO_CNT & 0x7F) >> 2);
790         mask |= 1 << ((mmTPC0_QM_CP_MSG_BASE0_ADDR_LO & 0x7F) >> 2);
791         mask |= 1 << ((mmTPC0_QM_CP_MSG_BASE0_ADDR_HI & 0x7F) >> 2);
792         mask |= 1 << ((mmTPC0_QM_CP_MSG_BASE1_ADDR_LO & 0x7F) >> 2);
793         mask |= 1 << ((mmTPC0_QM_CP_MSG_BASE1_ADDR_HI & 0x7F) >> 2);
794         mask |= 1 << ((mmTPC0_QM_CP_MSG_BASE2_ADDR_LO & 0x7F) >> 2);
795         mask |= 1 << ((mmTPC0_QM_CP_MSG_BASE2_ADDR_HI & 0x7F) >> 2);
796         mask |= 1 << ((mmTPC0_QM_CP_MSG_BASE3_ADDR_LO & 0x7F) >> 2);
797         mask |= 1 << ((mmTPC0_QM_CP_MSG_BASE3_ADDR_HI & 0x7F) >> 2);
798         mask |= 1 << ((mmTPC0_QM_CP_LDMA_TSIZE_OFFSET & 0x7F) >> 2);
799         mask |= 1 << ((mmTPC0_QM_CP_LDMA_SRC_BASE_LO_OFFSET & 0x7F) >> 2);
800         mask |= 1 << ((mmTPC0_QM_CP_LDMA_SRC_BASE_HI_OFFSET & 0x7F) >> 2);
801         mask |= 1 << ((mmTPC0_QM_CP_LDMA_DST_BASE_LO_OFFSET & 0x7F) >> 2);
802         mask |= 1 << ((mmTPC0_QM_CP_LDMA_DST_BASE_HI_OFFSET & 0x7F) >> 2);
803         mask |= 1 << ((mmTPC0_QM_CP_LDMA_COMMIT_OFFSET & 0x7F) >> 2);
804
805         WREG32(pb_addr + word_offset, ~mask);
806
807         pb_addr = (mmTPC0_CMDQ_GLBL_CFG0 & ~0xFFF) + PROT_BITS_OFFS;
808         word_offset = ((mmTPC0_CMDQ_GLBL_CFG0 & PROT_BITS_OFFS) >> 7) << 2;
809         mask = 1 << ((mmTPC0_CMDQ_GLBL_CFG0 & 0x7F) >> 2);
810         mask |= 1 << ((mmTPC0_CMDQ_GLBL_CFG1 & 0x7F) >> 2);
811         mask |= 1 << ((mmTPC0_CMDQ_GLBL_PROT & 0x7F) >> 2);
812         mask |= 1 << ((mmTPC0_CMDQ_GLBL_ERR_CFG & 0x7F) >> 2);
813         mask |= 1 << ((mmTPC0_CMDQ_GLBL_ERR_ADDR_LO & 0x7F) >> 2);
814         mask |= 1 << ((mmTPC0_CMDQ_GLBL_ERR_ADDR_HI & 0x7F) >> 2);
815         mask |= 1 << ((mmTPC0_CMDQ_GLBL_ERR_WDATA & 0x7F) >> 2);
816         mask |= 1 << ((mmTPC0_CMDQ_GLBL_SECURE_PROPS & 0x7F) >> 2);
817         mask |= 1 << ((mmTPC0_CMDQ_GLBL_NON_SECURE_PROPS & 0x7F) >> 2);
818         mask |= 1 << ((mmTPC0_CMDQ_GLBL_STS0 & 0x7F) >> 2);
819         mask |= 1 << ((mmTPC0_CMDQ_GLBL_STS1 & 0x7F) >> 2);
820
821         WREG32(pb_addr + word_offset, ~mask);
822
823         pb_addr = (mmTPC0_CMDQ_CQ_CFG0 & ~0xFFF) + PROT_BITS_OFFS;
824         word_offset = ((mmTPC0_CMDQ_CQ_CFG0 & PROT_BITS_OFFS) >> 7) << 2;
825         mask = 1 << ((mmTPC0_CMDQ_CQ_CFG0 & 0x7F) >> 2);
826         mask |= 1 << ((mmTPC0_CMDQ_CQ_CFG1 & 0x7F) >> 2);
827         mask |= 1 << ((mmTPC0_CMDQ_CQ_ARUSER & 0x7F) >> 2);
828         mask |= 1 << ((mmTPC0_CMDQ_CQ_PTR_LO_STS & 0x7F) >> 2);
829         mask |= 1 << ((mmTPC0_CMDQ_CQ_PTR_HI_STS & 0x7F) >> 2);
830         mask |= 1 << ((mmTPC0_CMDQ_CQ_TSIZE_STS & 0x7F) >> 2);
831         mask |= 1 << ((mmTPC0_CMDQ_CQ_CTL_STS & 0x7F) >> 2);
832         mask |= 1 << ((mmTPC0_CMDQ_CQ_STS0 & 0x7F) >> 2);
833         mask |= 1 << ((mmTPC0_CMDQ_CQ_STS1 & 0x7F) >> 2);
834         mask |= 1 << ((mmTPC0_CMDQ_CQ_RD_RATE_LIM_EN & 0x7F) >> 2);
835         mask |= 1 << ((mmTPC0_CMDQ_CQ_RD_RATE_LIM_RST_TOKEN & 0x7F) >> 2);
836         mask |= 1 << ((mmTPC0_CMDQ_CQ_RD_RATE_LIM_SAT & 0x7F) >> 2);
837         mask |= 1 << ((mmTPC0_CMDQ_CQ_RD_RATE_LIM_TOUT & 0x7F) >> 2);
838
839         WREG32(pb_addr + word_offset, ~mask);
840
841         pb_addr = (mmTPC0_CMDQ_CQ_IFIFO_CNT & ~0xFFF) + PROT_BITS_OFFS;
842         word_offset = ((mmTPC0_CMDQ_CQ_IFIFO_CNT & PROT_BITS_OFFS) >> 7) << 2;
843         mask = 1 << ((mmTPC0_CMDQ_CQ_IFIFO_CNT & 0x7F) >> 2);
844         mask |= 1 << ((mmTPC0_CMDQ_CP_MSG_BASE0_ADDR_LO & 0x7F) >> 2);
845         mask |= 1 << ((mmTPC0_CMDQ_CP_MSG_BASE0_ADDR_HI & 0x7F) >> 2);
846         mask |= 1 << ((mmTPC0_CMDQ_CP_MSG_BASE1_ADDR_LO & 0x7F) >> 2);
847         mask |= 1 << ((mmTPC0_CMDQ_CP_MSG_BASE1_ADDR_HI & 0x7F) >> 2);
848         mask |= 1 << ((mmTPC0_CMDQ_CP_MSG_BASE2_ADDR_LO & 0x7F) >> 2);
849         mask |= 1 << ((mmTPC0_CMDQ_CP_MSG_BASE2_ADDR_HI & 0x7F) >> 2);
850         mask |= 1 << ((mmTPC0_CMDQ_CP_MSG_BASE3_ADDR_LO & 0x7F) >> 2);
851         mask |= 1 << ((mmTPC0_CMDQ_CP_MSG_BASE3_ADDR_HI & 0x7F) >> 2);
852         mask |= 1 << ((mmTPC0_CMDQ_CP_LDMA_TSIZE_OFFSET & 0x7F) >> 2);
853         mask |= 1 << ((mmTPC0_CMDQ_CP_LDMA_SRC_BASE_LO_OFFSET & 0x7F) >> 2);
854         mask |= 1 << ((mmTPC0_CMDQ_CP_LDMA_SRC_BASE_HI_OFFSET & 0x7F) >> 2);
855         mask |= 1 << ((mmTPC0_CMDQ_CP_LDMA_DST_BASE_LO_OFFSET & 0x7F) >> 2);
856         mask |= 1 << ((mmTPC0_CMDQ_CP_LDMA_DST_BASE_HI_OFFSET & 0x7F) >> 2);
857         mask |= 1 << ((mmTPC0_CMDQ_CP_LDMA_COMMIT_OFFSET & 0x7F) >> 2);
858         mask |= 1 << ((mmTPC0_CMDQ_CP_STS & 0x7F) >> 2);
859         mask |= 1 << ((mmTPC0_CMDQ_CP_CURRENT_INST_LO & 0x7F) >> 2);
860
861         WREG32(pb_addr + word_offset, ~mask);
862
863         pb_addr = (mmTPC0_CMDQ_CP_CURRENT_INST_HI & ~0xFFF) + PROT_BITS_OFFS;
864         word_offset = ((mmTPC0_CMDQ_CP_CURRENT_INST_HI & PROT_BITS_OFFS) >> 7)
865                         << 2;
866         mask = 1 << ((mmTPC0_CMDQ_CP_CURRENT_INST_HI & 0x7F) >> 2);
867         mask |= 1 << ((mmTPC0_CMDQ_CP_BARRIER_CFG & 0x7F) >> 2);
868         mask |= 1 << ((mmTPC0_CMDQ_CP_DBG_0 & 0x7F) >> 2);
869         mask |= 1 << ((mmTPC0_CMDQ_CQ_BUF_ADDR & 0x7F) >> 2);
870         mask |= 1 << ((mmTPC0_CMDQ_CQ_BUF_RDATA & 0x7F) >> 2);
871
872         WREG32(pb_addr + word_offset, ~mask);
873
874         goya_pb_set_block(hdev, mmTPC1_RTR_BASE);
875         goya_pb_set_block(hdev, mmTPC1_RD_REGULATOR_BASE);
876         goya_pb_set_block(hdev, mmTPC1_WR_REGULATOR_BASE);
877
878         pb_addr = (mmTPC1_CFG_CFG_BASE_ADDRESS_HIGH & ~0xFFF) + PROT_BITS_OFFS;
879         word_offset = ((mmTPC1_CFG_CFG_BASE_ADDRESS_HIGH &
880                         PROT_BITS_OFFS) >> 7) << 2;
881         mask = 1 << ((mmTPC1_CFG_CFG_BASE_ADDRESS_HIGH & 0x7F) >> 2);
882         mask |= 1 << ((mmTPC1_CFG_CFG_SUBTRACT_VALUE & 0x7F) >> 2);
883         mask |= 1 << ((mmTPC1_CFG_SM_BASE_ADDRESS_LOW & 0x7F) >> 2);
884         mask |= 1 << ((mmTPC1_CFG_SM_BASE_ADDRESS_HIGH & 0x7F) >> 2);
885
886         WREG32(pb_addr + word_offset, ~mask);
887
888         pb_addr = (mmTPC1_CFG_ARUSER & ~0xFFF) + PROT_BITS_OFFS;
889         word_offset = ((mmTPC1_CFG_ARUSER & PROT_BITS_OFFS) >> 7) << 2;
890         mask = 1 << ((mmTPC1_CFG_ARUSER & 0x7F) >> 2);
891         mask |= 1 << ((mmTPC1_CFG_AWUSER & 0x7F) >> 2);
892
893         WREG32(pb_addr + word_offset, ~mask);
894
895         pb_addr = (mmTPC1_CFG_FUNC_MBIST_CNTRL & ~0xFFF) + PROT_BITS_OFFS;
896         word_offset = ((mmTPC1_CFG_FUNC_MBIST_CNTRL & PROT_BITS_OFFS) >> 7)
897                         << 2;
898         mask = 1 << ((mmTPC1_CFG_FUNC_MBIST_CNTRL & 0x7F) >> 2);
899         mask |= 1 << ((mmTPC1_CFG_FUNC_MBIST_PAT & 0x7F) >> 2);
900         mask |= 1 << ((mmTPC1_CFG_FUNC_MBIST_MEM_0 & 0x7F) >> 2);
901         mask |= 1 << ((mmTPC1_CFG_FUNC_MBIST_MEM_1 & 0x7F) >> 2);
902         mask |= 1 << ((mmTPC1_CFG_FUNC_MBIST_MEM_2 & 0x7F) >> 2);
903         mask |= 1 << ((mmTPC1_CFG_FUNC_MBIST_MEM_3 & 0x7F) >> 2);
904         mask |= 1 << ((mmTPC1_CFG_FUNC_MBIST_MEM_4 & 0x7F) >> 2);
905         mask |= 1 << ((mmTPC1_CFG_FUNC_MBIST_MEM_5 & 0x7F) >> 2);
906         mask |= 1 << ((mmTPC1_CFG_FUNC_MBIST_MEM_6 & 0x7F) >> 2);
907         mask |= 1 << ((mmTPC1_CFG_FUNC_MBIST_MEM_7 & 0x7F) >> 2);
908         mask |= 1 << ((mmTPC1_CFG_FUNC_MBIST_MEM_8 & 0x7F) >> 2);
909         mask |= 1 << ((mmTPC1_CFG_FUNC_MBIST_MEM_9 & 0x7F) >> 2);
910
911         WREG32(pb_addr + word_offset, ~mask);
912
913         pb_addr = (mmTPC1_QM_GLBL_CFG0 & ~0xFFF) + PROT_BITS_OFFS;
914         word_offset = ((mmTPC1_QM_GLBL_CFG0 & PROT_BITS_OFFS) >> 7) << 2;
915         mask = 1 << ((mmTPC1_QM_GLBL_CFG0 & 0x7F) >> 2);
916         mask |= 1 << ((mmTPC1_QM_GLBL_CFG1 & 0x7F) >> 2);
917         mask |= 1 << ((mmTPC1_QM_GLBL_PROT & 0x7F) >> 2);
918         mask |= 1 << ((mmTPC1_QM_GLBL_ERR_CFG & 0x7F) >> 2);
919         mask |= 1 << ((mmTPC1_QM_GLBL_ERR_ADDR_LO & 0x7F) >> 2);
920         mask |= 1 << ((mmTPC1_QM_GLBL_ERR_ADDR_HI & 0x7F) >> 2);
921         mask |= 1 << ((mmTPC1_QM_GLBL_ERR_WDATA & 0x7F) >> 2);
922         mask |= 1 << ((mmTPC1_QM_GLBL_SECURE_PROPS & 0x7F) >> 2);
923         mask |= 1 << ((mmTPC1_QM_GLBL_NON_SECURE_PROPS & 0x7F) >> 2);
924         mask |= 1 << ((mmTPC1_QM_GLBL_STS0 & 0x7F) >> 2);
925         mask |= 1 << ((mmTPC1_QM_GLBL_STS1 & 0x7F) >> 2);
926         mask |= 1 << ((mmTPC1_QM_PQ_BASE_LO & 0x7F) >> 2);
927         mask |= 1 << ((mmTPC1_QM_PQ_BASE_HI & 0x7F) >> 2);
928         mask |= 1 << ((mmTPC1_QM_PQ_SIZE & 0x7F) >> 2);
929         mask |= 1 << ((mmTPC1_QM_PQ_PI & 0x7F) >> 2);
930         mask |= 1 << ((mmTPC1_QM_PQ_CI & 0x7F) >> 2);
931         mask |= 1 << ((mmTPC1_QM_PQ_CFG0 & 0x7F) >> 2);
932         mask |= 1 << ((mmTPC1_QM_PQ_CFG1 & 0x7F) >> 2);
933         mask |= 1 << ((mmTPC1_QM_PQ_ARUSER & 0x7F) >> 2);
934
935         WREG32(pb_addr + word_offset, ~mask);
936
937         pb_addr = (mmTPC1_QM_PQ_PUSH0 & ~0xFFF) + PROT_BITS_OFFS;
938         word_offset = ((mmTPC1_QM_PQ_PUSH0 & PROT_BITS_OFFS) >> 7) << 2;
939         mask = 1 << ((mmTPC1_QM_PQ_PUSH0 & 0x7F) >> 2);
940         mask |= 1 << ((mmTPC1_QM_PQ_PUSH1 & 0x7F) >> 2);
941         mask |= 1 << ((mmTPC1_QM_PQ_PUSH2 & 0x7F) >> 2);
942         mask |= 1 << ((mmTPC1_QM_PQ_PUSH3 & 0x7F) >> 2);
943         mask |= 1 << ((mmTPC1_QM_PQ_STS0 & 0x7F) >> 2);
944         mask |= 1 << ((mmTPC1_QM_PQ_STS1 & 0x7F) >> 2);
945         mask |= 1 << ((mmTPC1_QM_PQ_RD_RATE_LIM_EN & 0x7F) >> 2);
946         mask |= 1 << ((mmTPC1_QM_PQ_RD_RATE_LIM_RST_TOKEN & 0x7F) >> 2);
947         mask |= 1 << ((mmTPC1_QM_PQ_RD_RATE_LIM_SAT & 0x7F) >> 2);
948         mask |= 1 << ((mmTPC1_QM_PQ_RD_RATE_LIM_TOUT & 0x7F) >> 2);
949         mask |= 1 << ((mmTPC1_QM_CQ_CFG0 & 0x7F) >> 2);
950         mask |= 1 << ((mmTPC1_QM_CQ_CFG1 & 0x7F) >> 2);
951         mask |= 1 << ((mmTPC1_QM_CQ_ARUSER & 0x7F) >> 2);
952         mask |= 1 << ((mmTPC1_QM_CQ_PTR_LO & 0x7F) >> 2);
953         mask |= 1 << ((mmTPC1_QM_CQ_PTR_HI & 0x7F) >> 2);
954         mask |= 1 << ((mmTPC1_QM_CQ_TSIZE & 0x7F) >> 2);
955         mask |= 1 << ((mmTPC1_QM_CQ_CTL & 0x7F) >> 2);
956         mask |= 1 << ((mmTPC1_QM_CQ_PTR_LO_STS & 0x7F) >> 2);
957         mask |= 1 << ((mmTPC1_QM_CQ_PTR_HI_STS & 0x7F) >> 2);
958         mask |= 1 << ((mmTPC1_QM_CQ_TSIZE_STS & 0x7F) >> 2);
959         mask |= 1 << ((mmTPC1_QM_CQ_CTL_STS & 0x7F) >> 2);
960         mask |= 1 << ((mmTPC1_QM_CQ_STS0 & 0x7F) >> 2);
961         mask |= 1 << ((mmTPC1_QM_CQ_STS1 & 0x7F) >> 2);
962         mask |= 1 << ((mmTPC1_QM_CQ_RD_RATE_LIM_EN & 0x7F) >> 2);
963         mask |= 1 << ((mmTPC1_QM_CQ_RD_RATE_LIM_RST_TOKEN & 0x7F) >> 2);
964         mask |= 1 << ((mmTPC1_QM_CQ_RD_RATE_LIM_SAT & 0x7F) >> 2);
965         mask |= 1 << ((mmTPC1_QM_CQ_RD_RATE_LIM_TOUT & 0x7F) >> 2);
966
967         WREG32(pb_addr + word_offset, ~mask);
968
969         pb_addr = (mmTPC1_QM_CQ_IFIFO_CNT & ~0xFFF) + PROT_BITS_OFFS;
970         word_offset = ((mmTPC1_QM_CQ_IFIFO_CNT & PROT_BITS_OFFS) >> 7) << 2;
971         mask = 1 << ((mmTPC1_QM_CQ_IFIFO_CNT & 0x7F) >> 2);
972         mask |= 1 << ((mmTPC1_QM_CP_MSG_BASE0_ADDR_LO & 0x7F) >> 2);
973         mask |= 1 << ((mmTPC1_QM_CP_MSG_BASE0_ADDR_HI & 0x7F) >> 2);
974         mask |= 1 << ((mmTPC1_QM_CP_MSG_BASE1_ADDR_LO & 0x7F) >> 2);
975         mask |= 1 << ((mmTPC1_QM_CP_MSG_BASE1_ADDR_HI & 0x7F) >> 2);
976         mask |= 1 << ((mmTPC1_QM_CP_MSG_BASE2_ADDR_LO & 0x7F) >> 2);
977         mask |= 1 << ((mmTPC1_QM_CP_MSG_BASE2_ADDR_HI & 0x7F) >> 2);
978         mask |= 1 << ((mmTPC1_QM_CP_MSG_BASE3_ADDR_LO & 0x7F) >> 2);
979         mask |= 1 << ((mmTPC1_QM_CP_MSG_BASE3_ADDR_HI & 0x7F) >> 2);
980         mask |= 1 << ((mmTPC1_QM_CP_LDMA_TSIZE_OFFSET & 0x7F) >> 2);
981         mask |= 1 << ((mmTPC1_QM_CP_LDMA_SRC_BASE_LO_OFFSET & 0x7F) >> 2);
982         mask |= 1 << ((mmTPC1_QM_CP_LDMA_SRC_BASE_HI_OFFSET & 0x7F) >> 2);
983         mask |= 1 << ((mmTPC1_QM_CP_LDMA_DST_BASE_LO_OFFSET & 0x7F) >> 2);
984         mask |= 1 << ((mmTPC1_QM_CP_LDMA_DST_BASE_HI_OFFSET & 0x7F) >> 2);
985         mask |= 1 << ((mmTPC1_QM_CP_LDMA_COMMIT_OFFSET & 0x7F) >> 2);
986
987         WREG32(pb_addr + word_offset, ~mask);
988
989         pb_addr = (mmTPC1_CMDQ_GLBL_CFG0 & ~0xFFF) + PROT_BITS_OFFS;
990         word_offset = ((mmTPC1_CMDQ_GLBL_CFG0 & PROT_BITS_OFFS) >> 7) << 2;
991         mask = 1 << ((mmTPC1_CMDQ_GLBL_CFG0 & 0x7F) >> 2);
992         mask |= 1 << ((mmTPC1_CMDQ_GLBL_CFG1 & 0x7F) >> 2);
993         mask |= 1 << ((mmTPC1_CMDQ_GLBL_PROT & 0x7F) >> 2);
994         mask |= 1 << ((mmTPC1_CMDQ_GLBL_ERR_CFG & 0x7F) >> 2);
995         mask |= 1 << ((mmTPC1_CMDQ_GLBL_ERR_ADDR_LO & 0x7F) >> 2);
996         mask |= 1 << ((mmTPC1_CMDQ_GLBL_ERR_ADDR_HI & 0x7F) >> 2);
997         mask |= 1 << ((mmTPC1_CMDQ_GLBL_ERR_WDATA & 0x7F) >> 2);
998         mask |= 1 << ((mmTPC1_CMDQ_GLBL_SECURE_PROPS & 0x7F) >> 2);
999         mask |= 1 << ((mmTPC1_CMDQ_GLBL_NON_SECURE_PROPS & 0x7F) >> 2);
1000         mask |= 1 << ((mmTPC1_CMDQ_GLBL_STS0 & 0x7F) >> 2);
1001         mask |= 1 << ((mmTPC1_CMDQ_GLBL_STS1 & 0x7F) >> 2);
1002
1003         WREG32(pb_addr + word_offset, ~mask);
1004
1005         pb_addr = (mmTPC1_CMDQ_CQ_CFG0 & ~0xFFF) + PROT_BITS_OFFS;
1006         word_offset = ((mmTPC1_CMDQ_CQ_CFG0 & PROT_BITS_OFFS) >> 7) << 2;
1007         mask = 1 << ((mmTPC1_CMDQ_CQ_CFG0 & 0x7F) >> 2);
1008         mask |= 1 << ((mmTPC1_CMDQ_CQ_CFG1 & 0x7F) >> 2);
1009         mask |= 1 << ((mmTPC1_CMDQ_CQ_ARUSER & 0x7F) >> 2);
1010         mask |= 1 << ((mmTPC1_CMDQ_CQ_PTR_LO_STS & 0x7F) >> 2);
1011         mask |= 1 << ((mmTPC1_CMDQ_CQ_PTR_HI_STS & 0x7F) >> 2);
1012         mask |= 1 << ((mmTPC1_CMDQ_CQ_TSIZE_STS & 0x7F) >> 2);
1013         mask |= 1 << ((mmTPC1_CMDQ_CQ_CTL_STS & 0x7F) >> 2);
1014         mask |= 1 << ((mmTPC1_CMDQ_CQ_STS0 & 0x7F) >> 2);
1015         mask |= 1 << ((mmTPC1_CMDQ_CQ_STS1 & 0x7F) >> 2);
1016         mask |= 1 << ((mmTPC1_CMDQ_CQ_RD_RATE_LIM_EN & 0x7F) >> 2);
1017         mask |= 1 << ((mmTPC1_CMDQ_CQ_RD_RATE_LIM_RST_TOKEN & 0x7F) >> 2);
1018         mask |= 1 << ((mmTPC1_CMDQ_CQ_RD_RATE_LIM_SAT & 0x7F) >> 2);
1019         mask |= 1 << ((mmTPC1_CMDQ_CQ_RD_RATE_LIM_TOUT & 0x7F) >> 2);
1020
1021         WREG32(pb_addr + word_offset, ~mask);
1022
1023         pb_addr = (mmTPC1_CMDQ_CQ_IFIFO_CNT & ~0xFFF) + PROT_BITS_OFFS;
1024         word_offset = ((mmTPC1_CMDQ_CQ_IFIFO_CNT & PROT_BITS_OFFS) >> 7) << 2;
1025         mask = 1 << ((mmTPC1_CMDQ_CQ_IFIFO_CNT & 0x7F) >> 2);
1026         mask |= 1 << ((mmTPC1_CMDQ_CP_MSG_BASE0_ADDR_LO & 0x7F) >> 2);
1027         mask |= 1 << ((mmTPC1_CMDQ_CP_MSG_BASE0_ADDR_HI & 0x7F) >> 2);
1028         mask |= 1 << ((mmTPC1_CMDQ_CP_MSG_BASE1_ADDR_LO & 0x7F) >> 2);
1029         mask |= 1 << ((mmTPC1_CMDQ_CP_MSG_BASE1_ADDR_HI & 0x7F) >> 2);
1030         mask |= 1 << ((mmTPC1_CMDQ_CP_MSG_BASE2_ADDR_LO & 0x7F) >> 2);
1031         mask |= 1 << ((mmTPC1_CMDQ_CP_MSG_BASE2_ADDR_HI & 0x7F) >> 2);
1032         mask |= 1 << ((mmTPC1_CMDQ_CP_MSG_BASE3_ADDR_LO & 0x7F) >> 2);
1033         mask |= 1 << ((mmTPC1_CMDQ_CP_MSG_BASE3_ADDR_HI & 0x7F) >> 2);
1034         mask |= 1 << ((mmTPC1_CMDQ_CP_LDMA_TSIZE_OFFSET & 0x7F) >> 2);
1035         mask |= 1 << ((mmTPC1_CMDQ_CP_LDMA_SRC_BASE_LO_OFFSET & 0x7F) >> 2);
1036         mask |= 1 << ((mmTPC1_CMDQ_CP_LDMA_SRC_BASE_HI_OFFSET & 0x7F) >> 2);
1037         mask |= 1 << ((mmTPC1_CMDQ_CP_LDMA_DST_BASE_LO_OFFSET & 0x7F) >> 2);
1038         mask |= 1 << ((mmTPC1_CMDQ_CP_LDMA_DST_BASE_HI_OFFSET & 0x7F) >> 2);
1039         mask |= 1 << ((mmTPC1_CMDQ_CP_LDMA_COMMIT_OFFSET & 0x7F) >> 2);
1040         mask |= 1 << ((mmTPC1_CMDQ_CP_STS & 0x7F) >> 2);
1041         mask |= 1 << ((mmTPC1_CMDQ_CP_CURRENT_INST_LO & 0x7F) >> 2);
1042
1043         WREG32(pb_addr + word_offset, ~mask);
1044
1045         pb_addr = (mmTPC1_CMDQ_CP_CURRENT_INST_HI & ~0xFFF) + PROT_BITS_OFFS;
1046         word_offset = ((mmTPC1_CMDQ_CP_CURRENT_INST_HI & PROT_BITS_OFFS) >> 7)
1047                         << 2;
1048         mask = 1 << ((mmTPC1_CMDQ_CP_CURRENT_INST_HI & 0x7F) >> 2);
1049         mask |= 1 << ((mmTPC1_CMDQ_CP_BARRIER_CFG & 0x7F) >> 2);
1050         mask |= 1 << ((mmTPC1_CMDQ_CP_DBG_0 & 0x7F) >> 2);
1051         mask |= 1 << ((mmTPC1_CMDQ_CQ_BUF_ADDR & 0x7F) >> 2);
1052         mask |= 1 << ((mmTPC1_CMDQ_CQ_BUF_RDATA & 0x7F) >> 2);
1053
1054         WREG32(pb_addr + word_offset, ~mask);
1055
1056         goya_pb_set_block(hdev, mmTPC2_RTR_BASE);
1057         goya_pb_set_block(hdev, mmTPC2_RD_REGULATOR_BASE);
1058         goya_pb_set_block(hdev, mmTPC2_WR_REGULATOR_BASE);
1059
1060         pb_addr = (mmTPC2_CFG_CFG_BASE_ADDRESS_HIGH & ~0xFFF) + PROT_BITS_OFFS;
1061         word_offset = ((mmTPC2_CFG_CFG_BASE_ADDRESS_HIGH &
1062                         PROT_BITS_OFFS) >> 7) << 2;
1063         mask = 1 << ((mmTPC2_CFG_CFG_BASE_ADDRESS_HIGH & 0x7F) >> 2);
1064         mask |= 1 << ((mmTPC2_CFG_CFG_SUBTRACT_VALUE & 0x7F) >> 2);
1065         mask |= 1 << ((mmTPC2_CFG_SM_BASE_ADDRESS_LOW & 0x7F) >> 2);
1066         mask |= 1 << ((mmTPC2_CFG_SM_BASE_ADDRESS_HIGH & 0x7F) >> 2);
1067
1068         WREG32(pb_addr + word_offset, ~mask);
1069
1070         pb_addr = (mmTPC2_CFG_ARUSER & ~0xFFF) + PROT_BITS_OFFS;
1071         word_offset = ((mmTPC2_CFG_ARUSER & PROT_BITS_OFFS) >> 7) << 2;
1072         mask = 1 << ((mmTPC2_CFG_ARUSER & 0x7F) >> 2);
1073         mask |= 1 << ((mmTPC2_CFG_AWUSER & 0x7F) >> 2);
1074
1075         WREG32(pb_addr + word_offset, ~mask);
1076
1077         pb_addr = (mmTPC2_CFG_FUNC_MBIST_CNTRL & ~0xFFF) + PROT_BITS_OFFS;
1078         word_offset = ((mmTPC2_CFG_FUNC_MBIST_CNTRL & PROT_BITS_OFFS) >> 7)
1079                         << 2;
1080         mask = 1 << ((mmTPC2_CFG_FUNC_MBIST_CNTRL & 0x7F) >> 2);
1081         mask |= 1 << ((mmTPC2_CFG_FUNC_MBIST_PAT & 0x7F) >> 2);
1082         mask |= 1 << ((mmTPC2_CFG_FUNC_MBIST_MEM_0 & 0x7F) >> 2);
1083         mask |= 1 << ((mmTPC2_CFG_FUNC_MBIST_MEM_1 & 0x7F) >> 2);
1084         mask |= 1 << ((mmTPC2_CFG_FUNC_MBIST_MEM_2 & 0x7F) >> 2);
1085         mask |= 1 << ((mmTPC2_CFG_FUNC_MBIST_MEM_3 & 0x7F) >> 2);
1086         mask |= 1 << ((mmTPC2_CFG_FUNC_MBIST_MEM_4 & 0x7F) >> 2);
1087         mask |= 1 << ((mmTPC2_CFG_FUNC_MBIST_MEM_5 & 0x7F) >> 2);
1088         mask |= 1 << ((mmTPC2_CFG_FUNC_MBIST_MEM_6 & 0x7F) >> 2);
1089         mask |= 1 << ((mmTPC2_CFG_FUNC_MBIST_MEM_7 & 0x7F) >> 2);
1090         mask |= 1 << ((mmTPC2_CFG_FUNC_MBIST_MEM_8 & 0x7F) >> 2);
1091         mask |= 1 << ((mmTPC2_CFG_FUNC_MBIST_MEM_9 & 0x7F) >> 2);
1092
1093         WREG32(pb_addr + word_offset, ~mask);
1094
1095         pb_addr = (mmTPC2_QM_GLBL_CFG0 & ~0xFFF) + PROT_BITS_OFFS;
1096         word_offset = ((mmTPC2_QM_GLBL_CFG0 & PROT_BITS_OFFS) >> 7) << 2;
1097         mask = 1 << ((mmTPC2_QM_GLBL_CFG0 & 0x7F) >> 2);
1098         mask |= 1 << ((mmTPC2_QM_GLBL_CFG1 & 0x7F) >> 2);
1099         mask |= 1 << ((mmTPC2_QM_GLBL_PROT & 0x7F) >> 2);
1100         mask |= 1 << ((mmTPC2_QM_GLBL_ERR_CFG & 0x7F) >> 2);
1101         mask |= 1 << ((mmTPC2_QM_GLBL_ERR_ADDR_LO & 0x7F) >> 2);
1102         mask |= 1 << ((mmTPC2_QM_GLBL_ERR_ADDR_HI & 0x7F) >> 2);
1103         mask |= 1 << ((mmTPC2_QM_GLBL_ERR_WDATA & 0x7F) >> 2);
1104         mask |= 1 << ((mmTPC2_QM_GLBL_SECURE_PROPS & 0x7F) >> 2);
1105         mask |= 1 << ((mmTPC2_QM_GLBL_NON_SECURE_PROPS & 0x7F) >> 2);
1106         mask |= 1 << ((mmTPC2_QM_GLBL_STS0 & 0x7F) >> 2);
1107         mask |= 1 << ((mmTPC2_QM_GLBL_STS1 & 0x7F) >> 2);
1108         mask |= 1 << ((mmTPC2_QM_PQ_BASE_LO & 0x7F) >> 2);
1109         mask |= 1 << ((mmTPC2_QM_PQ_BASE_HI & 0x7F) >> 2);
1110         mask |= 1 << ((mmTPC2_QM_PQ_SIZE & 0x7F) >> 2);
1111         mask |= 1 << ((mmTPC2_QM_PQ_PI & 0x7F) >> 2);
1112         mask |= 1 << ((mmTPC2_QM_PQ_CI & 0x7F) >> 2);
1113         mask |= 1 << ((mmTPC2_QM_PQ_CFG0 & 0x7F) >> 2);
1114         mask |= 1 << ((mmTPC2_QM_PQ_CFG1 & 0x7F) >> 2);
1115         mask |= 1 << ((mmTPC2_QM_PQ_ARUSER & 0x7F) >> 2);
1116
1117         WREG32(pb_addr + word_offset, ~mask);
1118
1119         pb_addr = (mmTPC2_QM_PQ_PUSH0 & ~0xFFF) + PROT_BITS_OFFS;
1120         word_offset = ((mmTPC2_QM_PQ_PUSH0 & PROT_BITS_OFFS) >> 7) << 2;
1121         mask = 1 << ((mmTPC2_QM_PQ_PUSH0 & 0x7F) >> 2);
1122         mask |= 1 << ((mmTPC2_QM_PQ_PUSH1 & 0x7F) >> 2);
1123         mask |= 1 << ((mmTPC2_QM_PQ_PUSH2 & 0x7F) >> 2);
1124         mask |= 1 << ((mmTPC2_QM_PQ_PUSH3 & 0x7F) >> 2);
1125         mask |= 1 << ((mmTPC2_QM_PQ_STS0 & 0x7F) >> 2);
1126         mask |= 1 << ((mmTPC2_QM_PQ_STS1 & 0x7F) >> 2);
1127         mask |= 1 << ((mmTPC2_QM_PQ_RD_RATE_LIM_EN & 0x7F) >> 2);
1128         mask |= 1 << ((mmTPC2_QM_PQ_RD_RATE_LIM_RST_TOKEN & 0x7F) >> 2);
1129         mask |= 1 << ((mmTPC2_QM_PQ_RD_RATE_LIM_SAT & 0x7F) >> 2);
1130         mask |= 1 << ((mmTPC2_QM_PQ_RD_RATE_LIM_TOUT & 0x7F) >> 2);
1131         mask |= 1 << ((mmTPC2_QM_CQ_CFG0 & 0x7F) >> 2);
1132         mask |= 1 << ((mmTPC2_QM_CQ_CFG1 & 0x7F) >> 2);
1133         mask |= 1 << ((mmTPC2_QM_CQ_ARUSER & 0x7F) >> 2);
1134         mask |= 1 << ((mmTPC2_QM_CQ_PTR_LO & 0x7F) >> 2);
1135         mask |= 1 << ((mmTPC2_QM_CQ_PTR_HI & 0x7F) >> 2);
1136         mask |= 1 << ((mmTPC2_QM_CQ_TSIZE & 0x7F) >> 2);
1137         mask |= 1 << ((mmTPC2_QM_CQ_CTL & 0x7F) >> 2);
1138         mask |= 1 << ((mmTPC2_QM_CQ_PTR_LO_STS & 0x7F) >> 2);
1139         mask |= 1 << ((mmTPC2_QM_CQ_PTR_HI_STS & 0x7F) >> 2);
1140         mask |= 1 << ((mmTPC2_QM_CQ_TSIZE_STS & 0x7F) >> 2);
1141         mask |= 1 << ((mmTPC2_QM_CQ_CTL_STS & 0x7F) >> 2);
1142         mask |= 1 << ((mmTPC2_QM_CQ_STS0 & 0x7F) >> 2);
1143         mask |= 1 << ((mmTPC2_QM_CQ_STS1 & 0x7F) >> 2);
1144         mask |= 1 << ((mmTPC2_QM_CQ_RD_RATE_LIM_EN & 0x7F) >> 2);
1145         mask |= 1 << ((mmTPC2_QM_CQ_RD_RATE_LIM_RST_TOKEN & 0x7F) >> 2);
1146         mask |= 1 << ((mmTPC2_QM_CQ_RD_RATE_LIM_SAT & 0x7F) >> 2);
1147         mask |= 1 << ((mmTPC2_QM_CQ_RD_RATE_LIM_TOUT & 0x7F) >> 2);
1148
1149         WREG32(pb_addr + word_offset, ~mask);
1150
1151         pb_addr = (mmTPC2_QM_CQ_IFIFO_CNT & ~0xFFF) + PROT_BITS_OFFS;
1152         word_offset = ((mmTPC2_QM_CQ_IFIFO_CNT & PROT_BITS_OFFS) >> 7) << 2;
1153         mask = 1 << ((mmTPC2_QM_CQ_IFIFO_CNT & 0x7F) >> 2);
1154         mask |= 1 << ((mmTPC2_QM_CP_MSG_BASE0_ADDR_LO & 0x7F) >> 2);
1155         mask |= 1 << ((mmTPC2_QM_CP_MSG_BASE0_ADDR_HI & 0x7F) >> 2);
1156         mask |= 1 << ((mmTPC2_QM_CP_MSG_BASE1_ADDR_LO & 0x7F) >> 2);
1157         mask |= 1 << ((mmTPC2_QM_CP_MSG_BASE1_ADDR_HI & 0x7F) >> 2);
1158         mask |= 1 << ((mmTPC2_QM_CP_MSG_BASE2_ADDR_LO & 0x7F) >> 2);
1159         mask |= 1 << ((mmTPC2_QM_CP_MSG_BASE2_ADDR_HI & 0x7F) >> 2);
1160         mask |= 1 << ((mmTPC2_QM_CP_MSG_BASE3_ADDR_LO & 0x7F) >> 2);
1161         mask |= 1 << ((mmTPC2_QM_CP_MSG_BASE3_ADDR_HI & 0x7F) >> 2);
1162         mask |= 1 << ((mmTPC2_QM_CP_LDMA_TSIZE_OFFSET & 0x7F) >> 2);
1163         mask |= 1 << ((mmTPC2_QM_CP_LDMA_SRC_BASE_LO_OFFSET & 0x7F) >> 2);
1164         mask |= 1 << ((mmTPC2_QM_CP_LDMA_SRC_BASE_HI_OFFSET & 0x7F) >> 2);
1165         mask |= 1 << ((mmTPC2_QM_CP_LDMA_DST_BASE_LO_OFFSET & 0x7F) >> 2);
1166         mask |= 1 << ((mmTPC2_QM_CP_LDMA_DST_BASE_HI_OFFSET & 0x7F) >> 2);
1167         mask |= 1 << ((mmTPC2_QM_CP_LDMA_COMMIT_OFFSET & 0x7F) >> 2);
1168
1169         WREG32(pb_addr + word_offset, ~mask);
1170
1171         pb_addr = (mmTPC2_CMDQ_GLBL_CFG0 & ~0xFFF) + PROT_BITS_OFFS;
1172         word_offset = ((mmTPC2_CMDQ_GLBL_CFG0 & PROT_BITS_OFFS) >> 7) << 2;
1173         mask = 1 << ((mmTPC2_CMDQ_GLBL_CFG0 & 0x7F) >> 2);
1174         mask |= 1 << ((mmTPC2_CMDQ_GLBL_CFG1 & 0x7F) >> 2);
1175         mask |= 1 << ((mmTPC2_CMDQ_GLBL_PROT & 0x7F) >> 2);
1176         mask |= 1 << ((mmTPC2_CMDQ_GLBL_ERR_CFG & 0x7F) >> 2);
1177         mask |= 1 << ((mmTPC2_CMDQ_GLBL_ERR_ADDR_LO & 0x7F) >> 2);
1178         mask |= 1 << ((mmTPC2_CMDQ_GLBL_ERR_ADDR_HI & 0x7F) >> 2);
1179         mask |= 1 << ((mmTPC2_CMDQ_GLBL_ERR_WDATA & 0x7F) >> 2);
1180         mask |= 1 << ((mmTPC2_CMDQ_GLBL_SECURE_PROPS & 0x7F) >> 2);
1181         mask |= 1 << ((mmTPC2_CMDQ_GLBL_NON_SECURE_PROPS & 0x7F) >> 2);
1182         mask |= 1 << ((mmTPC2_CMDQ_GLBL_STS0 & 0x7F) >> 2);
1183         mask |= 1 << ((mmTPC2_CMDQ_GLBL_STS1 & 0x7F) >> 2);
1184
1185         WREG32(pb_addr + word_offset, ~mask);
1186
1187         pb_addr = (mmTPC2_CMDQ_CQ_CFG0 & ~0xFFF) + PROT_BITS_OFFS;
1188         word_offset = ((mmTPC2_CMDQ_CQ_CFG0 & PROT_BITS_OFFS) >> 7) << 2;
1189         mask = 1 << ((mmTPC2_CMDQ_CQ_CFG0 & 0x7F) >> 2);
1190         mask |= 1 << ((mmTPC2_CMDQ_CQ_CFG1 & 0x7F) >> 2);
1191         mask |= 1 << ((mmTPC2_CMDQ_CQ_ARUSER & 0x7F) >> 2);
1192         mask |= 1 << ((mmTPC2_CMDQ_CQ_PTR_LO_STS & 0x7F) >> 2);
1193         mask |= 1 << ((mmTPC2_CMDQ_CQ_PTR_HI_STS & 0x7F) >> 2);
1194         mask |= 1 << ((mmTPC2_CMDQ_CQ_TSIZE_STS & 0x7F) >> 2);
1195         mask |= 1 << ((mmTPC2_CMDQ_CQ_CTL_STS & 0x7F) >> 2);
1196         mask |= 1 << ((mmTPC2_CMDQ_CQ_STS0 & 0x7F) >> 2);
1197         mask |= 1 << ((mmTPC2_CMDQ_CQ_STS1 & 0x7F) >> 2);
1198         mask |= 1 << ((mmTPC2_CMDQ_CQ_RD_RATE_LIM_EN & 0x7F) >> 2);
1199         mask |= 1 << ((mmTPC2_CMDQ_CQ_RD_RATE_LIM_RST_TOKEN & 0x7F) >> 2);
1200         mask |= 1 << ((mmTPC2_CMDQ_CQ_RD_RATE_LIM_SAT & 0x7F) >> 2);
1201         mask |= 1 << ((mmTPC2_CMDQ_CQ_RD_RATE_LIM_TOUT & 0x7F) >> 2);
1202
1203         WREG32(pb_addr + word_offset, ~mask);
1204
1205         pb_addr = (mmTPC2_CMDQ_CQ_IFIFO_CNT & ~0xFFF) + PROT_BITS_OFFS;
1206         word_offset = ((mmTPC2_CMDQ_CQ_IFIFO_CNT & PROT_BITS_OFFS) >> 7) << 2;
1207         mask = 1 << ((mmTPC2_CMDQ_CQ_IFIFO_CNT & 0x7F) >> 2);
1208         mask |= 1 << ((mmTPC2_CMDQ_CP_MSG_BASE0_ADDR_LO & 0x7F) >> 2);
1209         mask |= 1 << ((mmTPC2_CMDQ_CP_MSG_BASE0_ADDR_HI & 0x7F) >> 2);
1210         mask |= 1 << ((mmTPC2_CMDQ_CP_MSG_BASE1_ADDR_LO & 0x7F) >> 2);
1211         mask |= 1 << ((mmTPC2_CMDQ_CP_MSG_BASE1_ADDR_HI & 0x7F) >> 2);
1212         mask |= 1 << ((mmTPC2_CMDQ_CP_MSG_BASE2_ADDR_LO & 0x7F) >> 2);
1213         mask |= 1 << ((mmTPC2_CMDQ_CP_MSG_BASE2_ADDR_HI & 0x7F) >> 2);
1214         mask |= 1 << ((mmTPC2_CMDQ_CP_MSG_BASE3_ADDR_LO & 0x7F) >> 2);
1215         mask |= 1 << ((mmTPC2_CMDQ_CP_MSG_BASE3_ADDR_HI & 0x7F) >> 2);
1216         mask |= 1 << ((mmTPC2_CMDQ_CP_LDMA_TSIZE_OFFSET & 0x7F) >> 2);
1217         mask |= 1 << ((mmTPC2_CMDQ_CP_LDMA_SRC_BASE_LO_OFFSET & 0x7F) >> 2);
1218         mask |= 1 << ((mmTPC2_CMDQ_CP_LDMA_SRC_BASE_HI_OFFSET & 0x7F) >> 2);
1219         mask |= 1 << ((mmTPC2_CMDQ_CP_LDMA_DST_BASE_LO_OFFSET & 0x7F) >> 2);
1220         mask |= 1 << ((mmTPC2_CMDQ_CP_LDMA_DST_BASE_HI_OFFSET & 0x7F) >> 2);
1221         mask |= 1 << ((mmTPC2_CMDQ_CP_LDMA_COMMIT_OFFSET & 0x7F) >> 2);
1222         mask |= 1 << ((mmTPC2_CMDQ_CP_STS & 0x7F) >> 2);
1223         mask |= 1 << ((mmTPC2_CMDQ_CP_CURRENT_INST_LO & 0x7F) >> 2);
1224
1225         WREG32(pb_addr + word_offset, ~mask);
1226
1227         pb_addr = (mmTPC2_CMDQ_CP_CURRENT_INST_HI & ~0xFFF) + PROT_BITS_OFFS;
1228         word_offset = ((mmTPC2_CMDQ_CP_CURRENT_INST_HI & PROT_BITS_OFFS) >> 7)
1229                         << 2;
1230         mask = 1 << ((mmTPC2_CMDQ_CP_CURRENT_INST_HI & 0x7F) >> 2);
1231         mask |= 1 << ((mmTPC2_CMDQ_CP_BARRIER_CFG & 0x7F) >> 2);
1232         mask |= 1 << ((mmTPC2_CMDQ_CP_DBG_0 & 0x7F) >> 2);
1233         mask |= 1 << ((mmTPC2_CMDQ_CQ_BUF_ADDR & 0x7F) >> 2);
1234         mask |= 1 << ((mmTPC2_CMDQ_CQ_BUF_RDATA & 0x7F) >> 2);
1235
1236         WREG32(pb_addr + word_offset, ~mask);
1237
1238         goya_pb_set_block(hdev, mmTPC3_RTR_BASE);
1239         goya_pb_set_block(hdev, mmTPC3_RD_REGULATOR_BASE);
1240         goya_pb_set_block(hdev, mmTPC3_WR_REGULATOR_BASE);
1241
1242         pb_addr = (mmTPC3_CFG_CFG_BASE_ADDRESS_HIGH & ~0xFFF) + PROT_BITS_OFFS;
1243         word_offset = ((mmTPC3_CFG_CFG_BASE_ADDRESS_HIGH
1244                         & PROT_BITS_OFFS) >> 7) << 2;
1245         mask = 1 << ((mmTPC3_CFG_CFG_BASE_ADDRESS_HIGH & 0x7F) >> 2);
1246         mask |= 1 << ((mmTPC3_CFG_CFG_SUBTRACT_VALUE & 0x7F) >> 2);
1247         mask |= 1 << ((mmTPC3_CFG_SM_BASE_ADDRESS_LOW & 0x7F) >> 2);
1248         mask |= 1 << ((mmTPC3_CFG_SM_BASE_ADDRESS_HIGH & 0x7F) >> 2);
1249
1250         WREG32(pb_addr + word_offset, ~mask);
1251
1252         pb_addr = (mmTPC3_CFG_ARUSER & ~0xFFF) + PROT_BITS_OFFS;
1253         word_offset = ((mmTPC3_CFG_ARUSER & PROT_BITS_OFFS) >> 7) << 2;
1254         mask = 1 << ((mmTPC3_CFG_ARUSER & 0x7F) >> 2);
1255         mask |= 1 << ((mmTPC3_CFG_AWUSER & 0x7F) >> 2);
1256
1257         WREG32(pb_addr + word_offset, ~mask);
1258
1259         pb_addr = (mmTPC3_CFG_FUNC_MBIST_CNTRL & ~0xFFF) + PROT_BITS_OFFS;
1260         word_offset = ((mmTPC3_CFG_FUNC_MBIST_CNTRL
1261                         & PROT_BITS_OFFS) >> 7) << 2;
1262         mask = 1 << ((mmTPC3_CFG_FUNC_MBIST_CNTRL & 0x7F) >> 2);
1263         mask |= 1 << ((mmTPC3_CFG_FUNC_MBIST_PAT & 0x7F) >> 2);
1264         mask |= 1 << ((mmTPC3_CFG_FUNC_MBIST_MEM_0 & 0x7F) >> 2);
1265         mask |= 1 << ((mmTPC3_CFG_FUNC_MBIST_MEM_1 & 0x7F) >> 2);
1266         mask |= 1 << ((mmTPC3_CFG_FUNC_MBIST_MEM_2 & 0x7F) >> 2);
1267         mask |= 1 << ((mmTPC3_CFG_FUNC_MBIST_MEM_3 & 0x7F) >> 2);
1268         mask |= 1 << ((mmTPC3_CFG_FUNC_MBIST_MEM_4 & 0x7F) >> 2);
1269         mask |= 1 << ((mmTPC3_CFG_FUNC_MBIST_MEM_5 & 0x7F) >> 2);
1270         mask |= 1 << ((mmTPC3_CFG_FUNC_MBIST_MEM_6 & 0x7F) >> 2);
1271         mask |= 1 << ((mmTPC3_CFG_FUNC_MBIST_MEM_7 & 0x7F) >> 2);
1272         mask |= 1 << ((mmTPC3_CFG_FUNC_MBIST_MEM_8 & 0x7F) >> 2);
1273         mask |= 1 << ((mmTPC3_CFG_FUNC_MBIST_MEM_9 & 0x7F) >> 2);
1274
1275         WREG32(pb_addr + word_offset, ~mask);
1276
1277         pb_addr = (mmTPC3_QM_GLBL_CFG0 & ~0xFFF) + PROT_BITS_OFFS;
1278         word_offset = ((mmTPC3_QM_GLBL_CFG0 & PROT_BITS_OFFS) >> 7) << 2;
1279         mask = 1 << ((mmTPC3_QM_GLBL_CFG0 & 0x7F) >> 2);
1280         mask |= 1 << ((mmTPC3_QM_GLBL_CFG1 & 0x7F) >> 2);
1281         mask |= 1 << ((mmTPC3_QM_GLBL_PROT & 0x7F) >> 2);
1282         mask |= 1 << ((mmTPC3_QM_GLBL_ERR_CFG & 0x7F) >> 2);
1283         mask |= 1 << ((mmTPC3_QM_GLBL_ERR_ADDR_LO & 0x7F) >> 2);
1284         mask |= 1 << ((mmTPC3_QM_GLBL_ERR_ADDR_HI & 0x7F) >> 2);
1285         mask |= 1 << ((mmTPC3_QM_GLBL_ERR_WDATA & 0x7F) >> 2);
1286         mask |= 1 << ((mmTPC3_QM_GLBL_SECURE_PROPS & 0x7F) >> 2);
1287         mask |= 1 << ((mmTPC3_QM_GLBL_NON_SECURE_PROPS & 0x7F) >> 2);
1288         mask |= 1 << ((mmTPC3_QM_GLBL_STS0 & 0x7F) >> 2);
1289         mask |= 1 << ((mmTPC3_QM_GLBL_STS1 & 0x7F) >> 2);
1290         mask |= 1 << ((mmTPC3_QM_PQ_BASE_LO & 0x7F) >> 2);
1291         mask |= 1 << ((mmTPC3_QM_PQ_BASE_HI & 0x7F) >> 2);
1292         mask |= 1 << ((mmTPC3_QM_PQ_SIZE & 0x7F) >> 2);
1293         mask |= 1 << ((mmTPC3_QM_PQ_PI & 0x7F) >> 2);
1294         mask |= 1 << ((mmTPC3_QM_PQ_CI & 0x7F) >> 2);
1295         mask |= 1 << ((mmTPC3_QM_PQ_CFG0 & 0x7F) >> 2);
1296         mask |= 1 << ((mmTPC3_QM_PQ_CFG1 & 0x7F) >> 2);
1297         mask |= 1 << ((mmTPC3_QM_PQ_ARUSER & 0x7F) >> 2);
1298
1299         WREG32(pb_addr + word_offset, ~mask);
1300
1301         pb_addr = (mmTPC3_QM_PQ_PUSH0 & ~0xFFF) + PROT_BITS_OFFS;
1302         word_offset = ((mmTPC3_QM_PQ_PUSH0 & PROT_BITS_OFFS) >> 7) << 2;
1303         mask = 1 << ((mmTPC3_QM_PQ_PUSH0 & 0x7F) >> 2);
1304         mask |= 1 << ((mmTPC3_QM_PQ_PUSH1 & 0x7F) >> 2);
1305         mask |= 1 << ((mmTPC3_QM_PQ_PUSH2 & 0x7F) >> 2);
1306         mask |= 1 << ((mmTPC3_QM_PQ_PUSH3 & 0x7F) >> 2);
1307         mask |= 1 << ((mmTPC3_QM_PQ_STS0 & 0x7F) >> 2);
1308         mask |= 1 << ((mmTPC3_QM_PQ_STS1 & 0x7F) >> 2);
1309         mask |= 1 << ((mmTPC3_QM_PQ_RD_RATE_LIM_EN & 0x7F) >> 2);
1310         mask |= 1 << ((mmTPC3_QM_PQ_RD_RATE_LIM_RST_TOKEN & 0x7F) >> 2);
1311         mask |= 1 << ((mmTPC3_QM_PQ_RD_RATE_LIM_SAT & 0x7F) >> 2);
1312         mask |= 1 << ((mmTPC3_QM_PQ_RD_RATE_LIM_TOUT & 0x7F) >> 2);
1313         mask |= 1 << ((mmTPC3_QM_CQ_CFG0 & 0x7F) >> 2);
1314         mask |= 1 << ((mmTPC3_QM_CQ_CFG1 & 0x7F) >> 2);
1315         mask |= 1 << ((mmTPC3_QM_CQ_ARUSER & 0x7F) >> 2);
1316         mask |= 1 << ((mmTPC3_QM_CQ_PTR_LO & 0x7F) >> 2);
1317         mask |= 1 << ((mmTPC3_QM_CQ_PTR_HI & 0x7F) >> 2);
1318         mask |= 1 << ((mmTPC3_QM_CQ_TSIZE & 0x7F) >> 2);
1319         mask |= 1 << ((mmTPC3_QM_CQ_CTL & 0x7F) >> 2);
1320         mask |= 1 << ((mmTPC3_QM_CQ_PTR_LO_STS & 0x7F) >> 2);
1321         mask |= 1 << ((mmTPC3_QM_CQ_PTR_HI_STS & 0x7F) >> 2);
1322         mask |= 1 << ((mmTPC3_QM_CQ_TSIZE_STS & 0x7F) >> 2);
1323         mask |= 1 << ((mmTPC3_QM_CQ_CTL_STS & 0x7F) >> 2);
1324         mask |= 1 << ((mmTPC3_QM_CQ_STS0 & 0x7F) >> 2);
1325         mask |= 1 << ((mmTPC3_QM_CQ_STS1 & 0x7F) >> 2);
1326         mask |= 1 << ((mmTPC3_QM_CQ_RD_RATE_LIM_EN & 0x7F) >> 2);
1327         mask |= 1 << ((mmTPC3_QM_CQ_RD_RATE_LIM_RST_TOKEN & 0x7F) >> 2);
1328         mask |= 1 << ((mmTPC3_QM_CQ_RD_RATE_LIM_SAT & 0x7F) >> 2);
1329         mask |= 1 << ((mmTPC3_QM_CQ_RD_RATE_LIM_TOUT & 0x7F) >> 2);
1330
1331         WREG32(pb_addr + word_offset, ~mask);
1332
1333         pb_addr = (mmTPC3_QM_CQ_IFIFO_CNT & ~0xFFF) + PROT_BITS_OFFS;
1334         word_offset = ((mmTPC3_QM_CQ_IFIFO_CNT & PROT_BITS_OFFS) >> 7) << 2;
1335         mask = 1 << ((mmTPC3_QM_CQ_IFIFO_CNT & 0x7F) >> 2);
1336         mask |= 1 << ((mmTPC3_QM_CP_MSG_BASE0_ADDR_LO & 0x7F) >> 2);
1337         mask |= 1 << ((mmTPC3_QM_CP_MSG_BASE0_ADDR_HI & 0x7F) >> 2);
1338         mask |= 1 << ((mmTPC3_QM_CP_MSG_BASE1_ADDR_LO & 0x7F) >> 2);
1339         mask |= 1 << ((mmTPC3_QM_CP_MSG_BASE1_ADDR_HI & 0x7F) >> 2);
1340         mask |= 1 << ((mmTPC3_QM_CP_MSG_BASE2_ADDR_LO & 0x7F) >> 2);
1341         mask |= 1 << ((mmTPC3_QM_CP_MSG_BASE2_ADDR_HI & 0x7F) >> 2);
1342         mask |= 1 << ((mmTPC3_QM_CP_MSG_BASE3_ADDR_LO & 0x7F) >> 2);
1343         mask |= 1 << ((mmTPC3_QM_CP_MSG_BASE3_ADDR_HI & 0x7F) >> 2);
1344         mask |= 1 << ((mmTPC3_QM_CP_LDMA_TSIZE_OFFSET & 0x7F) >> 2);
1345         mask |= 1 << ((mmTPC3_QM_CP_LDMA_SRC_BASE_LO_OFFSET & 0x7F) >> 2);
1346         mask |= 1 << ((mmTPC3_QM_CP_LDMA_SRC_BASE_HI_OFFSET & 0x7F) >> 2);
1347         mask |= 1 << ((mmTPC3_QM_CP_LDMA_DST_BASE_LO_OFFSET & 0x7F) >> 2);
1348         mask |= 1 << ((mmTPC3_QM_CP_LDMA_DST_BASE_HI_OFFSET & 0x7F) >> 2);
1349         mask |= 1 << ((mmTPC3_QM_CP_LDMA_COMMIT_OFFSET & 0x7F) >> 2);
1350
1351         WREG32(pb_addr + word_offset, ~mask);
1352
1353         pb_addr = (mmTPC3_CMDQ_GLBL_CFG0 & ~0xFFF) + PROT_BITS_OFFS;
1354         word_offset = ((mmTPC3_CMDQ_GLBL_CFG0 & PROT_BITS_OFFS) >> 7) << 2;
1355         mask = 1 << ((mmTPC3_CMDQ_GLBL_CFG0 & 0x7F) >> 2);
1356         mask |= 1 << ((mmTPC3_CMDQ_GLBL_CFG1 & 0x7F) >> 2);
1357         mask |= 1 << ((mmTPC3_CMDQ_GLBL_PROT & 0x7F) >> 2);
1358         mask |= 1 << ((mmTPC3_CMDQ_GLBL_ERR_CFG & 0x7F) >> 2);
1359         mask |= 1 << ((mmTPC3_CMDQ_GLBL_ERR_ADDR_LO & 0x7F) >> 2);
1360         mask |= 1 << ((mmTPC3_CMDQ_GLBL_ERR_ADDR_HI & 0x7F) >> 2);
1361         mask |= 1 << ((mmTPC3_CMDQ_GLBL_ERR_WDATA & 0x7F) >> 2);
1362         mask |= 1 << ((mmTPC3_CMDQ_GLBL_SECURE_PROPS & 0x7F) >> 2);
1363         mask |= 1 << ((mmTPC3_CMDQ_GLBL_NON_SECURE_PROPS & 0x7F) >> 2);
1364         mask |= 1 << ((mmTPC3_CMDQ_GLBL_STS0 & 0x7F) >> 2);
1365         mask |= 1 << ((mmTPC3_CMDQ_GLBL_STS1 & 0x7F) >> 2);
1366
1367         WREG32(pb_addr + word_offset, ~mask);
1368
1369         pb_addr = (mmTPC3_CMDQ_CQ_CFG0 & ~0xFFF) + PROT_BITS_OFFS;
1370         word_offset = ((mmTPC3_CMDQ_CQ_CFG0 & PROT_BITS_OFFS) >> 7) << 2;
1371         mask = 1 << ((mmTPC3_CMDQ_CQ_CFG0 & 0x7F) >> 2);
1372         mask |= 1 << ((mmTPC3_CMDQ_CQ_CFG1 & 0x7F) >> 2);
1373         mask |= 1 << ((mmTPC3_CMDQ_CQ_ARUSER & 0x7F) >> 2);
1374         mask |= 1 << ((mmTPC3_CMDQ_CQ_PTR_LO_STS & 0x7F) >> 2);
1375         mask |= 1 << ((mmTPC3_CMDQ_CQ_PTR_HI_STS & 0x7F) >> 2);
1376         mask |= 1 << ((mmTPC3_CMDQ_CQ_TSIZE_STS & 0x7F) >> 2);
1377         mask |= 1 << ((mmTPC3_CMDQ_CQ_CTL_STS & 0x7F) >> 2);
1378         mask |= 1 << ((mmTPC3_CMDQ_CQ_STS0 & 0x7F) >> 2);
1379         mask |= 1 << ((mmTPC3_CMDQ_CQ_STS1 & 0x7F) >> 2);
1380         mask |= 1 << ((mmTPC3_CMDQ_CQ_RD_RATE_LIM_EN & 0x7F) >> 2);
1381         mask |= 1 << ((mmTPC3_CMDQ_CQ_RD_RATE_LIM_RST_TOKEN & 0x7F) >> 2);
1382         mask |= 1 << ((mmTPC3_CMDQ_CQ_RD_RATE_LIM_SAT & 0x7F) >> 2);
1383         mask |= 1 << ((mmTPC3_CMDQ_CQ_RD_RATE_LIM_TOUT & 0x7F) >> 2);
1384
1385         WREG32(pb_addr + word_offset, ~mask);
1386
1387         pb_addr = (mmTPC3_CMDQ_CQ_IFIFO_CNT & ~0xFFF) + PROT_BITS_OFFS;
1388         word_offset = ((mmTPC3_CMDQ_CQ_IFIFO_CNT & PROT_BITS_OFFS) >> 7) << 2;
1389         mask = 1 << ((mmTPC3_CMDQ_CQ_IFIFO_CNT & 0x7F) >> 2);
1390         mask |= 1 << ((mmTPC3_CMDQ_CP_MSG_BASE0_ADDR_LO & 0x7F) >> 2);
1391         mask |= 1 << ((mmTPC3_CMDQ_CP_MSG_BASE0_ADDR_HI & 0x7F) >> 2);
1392         mask |= 1 << ((mmTPC3_CMDQ_CP_MSG_BASE1_ADDR_LO & 0x7F) >> 2);
1393         mask |= 1 << ((mmTPC3_CMDQ_CP_MSG_BASE1_ADDR_HI & 0x7F) >> 2);
1394         mask |= 1 << ((mmTPC3_CMDQ_CP_MSG_BASE2_ADDR_LO & 0x7F) >> 2);
1395         mask |= 1 << ((mmTPC3_CMDQ_CP_MSG_BASE2_ADDR_HI & 0x7F) >> 2);
1396         mask |= 1 << ((mmTPC3_CMDQ_CP_MSG_BASE3_ADDR_LO & 0x7F) >> 2);
1397         mask |= 1 << ((mmTPC3_CMDQ_CP_MSG_BASE3_ADDR_HI & 0x7F) >> 2);
1398         mask |= 1 << ((mmTPC3_CMDQ_CP_LDMA_TSIZE_OFFSET & 0x7F) >> 2);
1399         mask |= 1 << ((mmTPC3_CMDQ_CP_LDMA_SRC_BASE_LO_OFFSET & 0x7F) >> 2);
1400         mask |= 1 << ((mmTPC3_CMDQ_CP_LDMA_SRC_BASE_HI_OFFSET & 0x7F) >> 2);
1401         mask |= 1 << ((mmTPC3_CMDQ_CP_LDMA_DST_BASE_LO_OFFSET & 0x7F) >> 2);
1402         mask |= 1 << ((mmTPC3_CMDQ_CP_LDMA_DST_BASE_HI_OFFSET & 0x7F) >> 2);
1403         mask |= 1 << ((mmTPC3_CMDQ_CP_LDMA_COMMIT_OFFSET & 0x7F) >> 2);
1404         mask |= 1 << ((mmTPC3_CMDQ_CP_STS & 0x7F) >> 2);
1405         mask |= 1 << ((mmTPC3_CMDQ_CP_CURRENT_INST_LO & 0x7F) >> 2);
1406
1407         WREG32(pb_addr + word_offset, ~mask);
1408
1409         pb_addr = (mmTPC3_CMDQ_CP_CURRENT_INST_HI & ~0xFFF) + PROT_BITS_OFFS;
1410         word_offset = ((mmTPC3_CMDQ_CP_CURRENT_INST_HI & PROT_BITS_OFFS) >> 7)
1411                         << 2;
1412         mask = 1 << ((mmTPC3_CMDQ_CP_CURRENT_INST_HI & 0x7F) >> 2);
1413         mask |= 1 << ((mmTPC3_CMDQ_CP_BARRIER_CFG & 0x7F) >> 2);
1414         mask |= 1 << ((mmTPC3_CMDQ_CP_DBG_0 & 0x7F) >> 2);
1415         mask |= 1 << ((mmTPC3_CMDQ_CQ_BUF_ADDR & 0x7F) >> 2);
1416         mask |= 1 << ((mmTPC3_CMDQ_CQ_BUF_RDATA & 0x7F) >> 2);
1417
1418         WREG32(pb_addr + word_offset, ~mask);
1419
1420         goya_pb_set_block(hdev, mmTPC4_RTR_BASE);
1421         goya_pb_set_block(hdev, mmTPC4_RD_REGULATOR_BASE);
1422         goya_pb_set_block(hdev, mmTPC4_WR_REGULATOR_BASE);
1423
1424         pb_addr = (mmTPC4_CFG_CFG_BASE_ADDRESS_HIGH & ~0xFFF) + PROT_BITS_OFFS;
1425         word_offset = ((mmTPC4_CFG_CFG_BASE_ADDRESS_HIGH &
1426                         PROT_BITS_OFFS) >> 7) << 2;
1427         mask = 1 << ((mmTPC4_CFG_CFG_BASE_ADDRESS_HIGH & 0x7F) >> 2);
1428         mask |= 1 << ((mmTPC4_CFG_CFG_SUBTRACT_VALUE & 0x7F) >> 2);
1429         mask |= 1 << ((mmTPC4_CFG_SM_BASE_ADDRESS_LOW & 0x7F) >> 2);
1430         mask |= 1 << ((mmTPC4_CFG_SM_BASE_ADDRESS_HIGH & 0x7F) >> 2);
1431
1432         WREG32(pb_addr + word_offset, ~mask);
1433
1434         pb_addr = (mmTPC4_CFG_ARUSER & ~0xFFF) + PROT_BITS_OFFS;
1435         word_offset = ((mmTPC4_CFG_ARUSER & PROT_BITS_OFFS) >> 7) << 2;
1436         mask = 1 << ((mmTPC4_CFG_ARUSER & 0x7F) >> 2);
1437         mask |= 1 << ((mmTPC4_CFG_AWUSER & 0x7F) >> 2);
1438
1439         WREG32(pb_addr + word_offset, ~mask);
1440
1441         pb_addr = (mmTPC4_CFG_FUNC_MBIST_CNTRL & ~0xFFF) + PROT_BITS_OFFS;
1442         word_offset = ((mmTPC4_CFG_FUNC_MBIST_CNTRL &
1443                         PROT_BITS_OFFS) >> 7) << 2;
1444         mask = 1 << ((mmTPC4_CFG_FUNC_MBIST_CNTRL & 0x7F) >> 2);
1445         mask |= 1 << ((mmTPC4_CFG_FUNC_MBIST_PAT & 0x7F) >> 2);
1446         mask |= 1 << ((mmTPC4_CFG_FUNC_MBIST_MEM_0 & 0x7F) >> 2);
1447         mask |= 1 << ((mmTPC4_CFG_FUNC_MBIST_MEM_1 & 0x7F) >> 2);
1448         mask |= 1 << ((mmTPC4_CFG_FUNC_MBIST_MEM_2 & 0x7F) >> 2);
1449         mask |= 1 << ((mmTPC4_CFG_FUNC_MBIST_MEM_3 & 0x7F) >> 2);
1450         mask |= 1 << ((mmTPC4_CFG_FUNC_MBIST_MEM_4 & 0x7F) >> 2);
1451         mask |= 1 << ((mmTPC4_CFG_FUNC_MBIST_MEM_5 & 0x7F) >> 2);
1452         mask |= 1 << ((mmTPC4_CFG_FUNC_MBIST_MEM_6 & 0x7F) >> 2);
1453         mask |= 1 << ((mmTPC4_CFG_FUNC_MBIST_MEM_7 & 0x7F) >> 2);
1454         mask |= 1 << ((mmTPC4_CFG_FUNC_MBIST_MEM_8 & 0x7F) >> 2);
1455         mask |= 1 << ((mmTPC4_CFG_FUNC_MBIST_MEM_9 & 0x7F) >> 2);
1456
1457         WREG32(pb_addr + word_offset, ~mask);
1458
1459         pb_addr = (mmTPC4_QM_GLBL_CFG0 & ~0xFFF) + PROT_BITS_OFFS;
1460         word_offset = ((mmTPC4_QM_GLBL_CFG0 & PROT_BITS_OFFS) >> 7) << 2;
1461         mask = 1 << ((mmTPC4_QM_GLBL_CFG0 & 0x7F) >> 2);
1462         mask |= 1 << ((mmTPC4_QM_GLBL_CFG1 & 0x7F) >> 2);
1463         mask |= 1 << ((mmTPC4_QM_GLBL_PROT & 0x7F) >> 2);
1464         mask |= 1 << ((mmTPC4_QM_GLBL_ERR_CFG & 0x7F) >> 2);
1465         mask |= 1 << ((mmTPC4_QM_GLBL_ERR_ADDR_LO & 0x7F) >> 2);
1466         mask |= 1 << ((mmTPC4_QM_GLBL_ERR_ADDR_HI & 0x7F) >> 2);
1467         mask |= 1 << ((mmTPC4_QM_GLBL_ERR_WDATA & 0x7F) >> 2);
1468         mask |= 1 << ((mmTPC4_QM_GLBL_SECURE_PROPS & 0x7F) >> 2);
1469         mask |= 1 << ((mmTPC4_QM_GLBL_NON_SECURE_PROPS & 0x7F) >> 2);
1470         mask |= 1 << ((mmTPC4_QM_GLBL_STS0 & 0x7F) >> 2);
1471         mask |= 1 << ((mmTPC4_QM_GLBL_STS1 & 0x7F) >> 2);
1472         mask |= 1 << ((mmTPC4_QM_PQ_BASE_LO & 0x7F) >> 2);
1473         mask |= 1 << ((mmTPC4_QM_PQ_BASE_HI & 0x7F) >> 2);
1474         mask |= 1 << ((mmTPC4_QM_PQ_SIZE & 0x7F) >> 2);
1475         mask |= 1 << ((mmTPC4_QM_PQ_PI & 0x7F) >> 2);
1476         mask |= 1 << ((mmTPC4_QM_PQ_CI & 0x7F) >> 2);
1477         mask |= 1 << ((mmTPC4_QM_PQ_CFG0 & 0x7F) >> 2);
1478         mask |= 1 << ((mmTPC4_QM_PQ_CFG1 & 0x7F) >> 2);
1479         mask |= 1 << ((mmTPC4_QM_PQ_ARUSER & 0x7F) >> 2);
1480
1481         WREG32(pb_addr + word_offset, ~mask);
1482
1483         pb_addr = (mmTPC4_QM_PQ_PUSH0 & ~0xFFF) + PROT_BITS_OFFS;
1484         word_offset = ((mmTPC4_QM_PQ_PUSH0 & PROT_BITS_OFFS) >> 7) << 2;
1485         mask = 1 << ((mmTPC4_QM_PQ_PUSH0 & 0x7F) >> 2);
1486         mask |= 1 << ((mmTPC4_QM_PQ_PUSH1 & 0x7F) >> 2);
1487         mask |= 1 << ((mmTPC4_QM_PQ_PUSH2 & 0x7F) >> 2);
1488         mask |= 1 << ((mmTPC4_QM_PQ_PUSH3 & 0x7F) >> 2);
1489         mask |= 1 << ((mmTPC4_QM_PQ_STS0 & 0x7F) >> 2);
1490         mask |= 1 << ((mmTPC4_QM_PQ_STS1 & 0x7F) >> 2);
1491         mask |= 1 << ((mmTPC4_QM_PQ_RD_RATE_LIM_EN & 0x7F) >> 2);
1492         mask |= 1 << ((mmTPC4_QM_PQ_RD_RATE_LIM_RST_TOKEN & 0x7F) >> 2);
1493         mask |= 1 << ((mmTPC4_QM_PQ_RD_RATE_LIM_SAT & 0x7F) >> 2);
1494         mask |= 1 << ((mmTPC4_QM_PQ_RD_RATE_LIM_TOUT & 0x7F) >> 2);
1495         mask |= 1 << ((mmTPC4_QM_CQ_CFG0 & 0x7F) >> 2);
1496         mask |= 1 << ((mmTPC4_QM_CQ_CFG1 & 0x7F) >> 2);
1497         mask |= 1 << ((mmTPC4_QM_CQ_ARUSER & 0x7F) >> 2);
1498         mask |= 1 << ((mmTPC4_QM_CQ_PTR_LO & 0x7F) >> 2);
1499         mask |= 1 << ((mmTPC4_QM_CQ_PTR_HI & 0x7F) >> 2);
1500         mask |= 1 << ((mmTPC4_QM_CQ_TSIZE & 0x7F) >> 2);
1501         mask |= 1 << ((mmTPC4_QM_CQ_CTL & 0x7F) >> 2);
1502         mask |= 1 << ((mmTPC4_QM_CQ_PTR_LO_STS & 0x7F) >> 2);
1503         mask |= 1 << ((mmTPC4_QM_CQ_PTR_HI_STS & 0x7F) >> 2);
1504         mask |= 1 << ((mmTPC4_QM_CQ_TSIZE_STS & 0x7F) >> 2);
1505         mask |= 1 << ((mmTPC4_QM_CQ_CTL_STS & 0x7F) >> 2);
1506         mask |= 1 << ((mmTPC4_QM_CQ_STS0 & 0x7F) >> 2);
1507         mask |= 1 << ((mmTPC4_QM_CQ_STS1 & 0x7F) >> 2);
1508         mask |= 1 << ((mmTPC4_QM_CQ_RD_RATE_LIM_EN & 0x7F) >> 2);
1509         mask |= 1 << ((mmTPC4_QM_CQ_RD_RATE_LIM_RST_TOKEN & 0x7F) >> 2);
1510         mask |= 1 << ((mmTPC4_QM_CQ_RD_RATE_LIM_SAT & 0x7F) >> 2);
1511         mask |= 1 << ((mmTPC4_QM_CQ_RD_RATE_LIM_TOUT & 0x7F) >> 2);
1512
1513         WREG32(pb_addr + word_offset, ~mask);
1514
1515         pb_addr = (mmTPC4_QM_CQ_IFIFO_CNT & ~0xFFF) + PROT_BITS_OFFS;
1516         word_offset = ((mmTPC4_QM_CQ_IFIFO_CNT & PROT_BITS_OFFS) >> 7) << 2;
1517         mask = 1 << ((mmTPC4_QM_CQ_IFIFO_CNT & 0x7F) >> 2);
1518         mask |= 1 << ((mmTPC4_QM_CP_MSG_BASE0_ADDR_LO & 0x7F) >> 2);
1519         mask |= 1 << ((mmTPC4_QM_CP_MSG_BASE0_ADDR_HI & 0x7F) >> 2);
1520         mask |= 1 << ((mmTPC4_QM_CP_MSG_BASE1_ADDR_LO & 0x7F) >> 2);
1521         mask |= 1 << ((mmTPC4_QM_CP_MSG_BASE1_ADDR_HI & 0x7F) >> 2);
1522         mask |= 1 << ((mmTPC4_QM_CP_MSG_BASE2_ADDR_LO & 0x7F) >> 2);
1523         mask |= 1 << ((mmTPC4_QM_CP_MSG_BASE2_ADDR_HI & 0x7F) >> 2);
1524         mask |= 1 << ((mmTPC4_QM_CP_MSG_BASE3_ADDR_LO & 0x7F) >> 2);
1525         mask |= 1 << ((mmTPC4_QM_CP_MSG_BASE3_ADDR_HI & 0x7F) >> 2);
1526         mask |= 1 << ((mmTPC4_QM_CP_LDMA_TSIZE_OFFSET & 0x7F) >> 2);
1527         mask |= 1 << ((mmTPC4_QM_CP_LDMA_SRC_BASE_LO_OFFSET & 0x7F) >> 2);
1528         mask |= 1 << ((mmTPC4_QM_CP_LDMA_SRC_BASE_HI_OFFSET & 0x7F) >> 2);
1529         mask |= 1 << ((mmTPC4_QM_CP_LDMA_DST_BASE_LO_OFFSET & 0x7F) >> 2);
1530         mask |= 1 << ((mmTPC4_QM_CP_LDMA_DST_BASE_HI_OFFSET & 0x7F) >> 2);
1531         mask |= 1 << ((mmTPC4_QM_CP_LDMA_COMMIT_OFFSET & 0x7F) >> 2);
1532
1533         WREG32(pb_addr + word_offset, ~mask);
1534
1535         pb_addr = (mmTPC4_CMDQ_GLBL_CFG0 & ~0xFFF) + PROT_BITS_OFFS;
1536         word_offset = ((mmTPC4_CMDQ_GLBL_CFG0 & PROT_BITS_OFFS) >> 7) << 2;
1537         mask = 1 << ((mmTPC4_CMDQ_GLBL_CFG0 & 0x7F) >> 2);
1538         mask |= 1 << ((mmTPC4_CMDQ_GLBL_CFG1 & 0x7F) >> 2);
1539         mask |= 1 << ((mmTPC4_CMDQ_GLBL_PROT & 0x7F) >> 2);
1540         mask |= 1 << ((mmTPC4_CMDQ_GLBL_ERR_CFG & 0x7F) >> 2);
1541         mask |= 1 << ((mmTPC4_CMDQ_GLBL_ERR_ADDR_LO & 0x7F) >> 2);
1542         mask |= 1 << ((mmTPC4_CMDQ_GLBL_ERR_ADDR_HI & 0x7F) >> 2);
1543         mask |= 1 << ((mmTPC4_CMDQ_GLBL_ERR_WDATA & 0x7F) >> 2);
1544         mask |= 1 << ((mmTPC4_CMDQ_GLBL_SECURE_PROPS & 0x7F) >> 2);
1545         mask |= 1 << ((mmTPC4_CMDQ_GLBL_NON_SECURE_PROPS & 0x7F) >> 2);
1546         mask |= 1 << ((mmTPC4_CMDQ_GLBL_STS0 & 0x7F) >> 2);
1547         mask |= 1 << ((mmTPC4_CMDQ_GLBL_STS1 & 0x7F) >> 2);
1548
1549         WREG32(pb_addr + word_offset, ~mask);
1550
1551         pb_addr = (mmTPC4_CMDQ_CQ_CFG0 & ~0xFFF) + PROT_BITS_OFFS;
1552         word_offset = ((mmTPC4_CMDQ_CQ_CFG0 & PROT_BITS_OFFS) >> 7) << 2;
1553         mask = 1 << ((mmTPC4_CMDQ_CQ_CFG0 & 0x7F) >> 2);
1554         mask |= 1 << ((mmTPC4_CMDQ_CQ_CFG1 & 0x7F) >> 2);
1555         mask |= 1 << ((mmTPC4_CMDQ_CQ_ARUSER & 0x7F) >> 2);
1556         mask |= 1 << ((mmTPC4_CMDQ_CQ_PTR_LO_STS & 0x7F) >> 2);
1557         mask |= 1 << ((mmTPC4_CMDQ_CQ_PTR_HI_STS & 0x7F) >> 2);
1558         mask |= 1 << ((mmTPC4_CMDQ_CQ_TSIZE_STS & 0x7F) >> 2);
1559         mask |= 1 << ((mmTPC4_CMDQ_CQ_CTL_STS & 0x7F) >> 2);
1560         mask |= 1 << ((mmTPC4_CMDQ_CQ_STS0 & 0x7F) >> 2);
1561         mask |= 1 << ((mmTPC4_CMDQ_CQ_STS1 & 0x7F) >> 2);
1562         mask |= 1 << ((mmTPC4_CMDQ_CQ_RD_RATE_LIM_EN & 0x7F) >> 2);
1563         mask |= 1 << ((mmTPC4_CMDQ_CQ_RD_RATE_LIM_RST_TOKEN & 0x7F) >> 2);
1564         mask |= 1 << ((mmTPC4_CMDQ_CQ_RD_RATE_LIM_SAT & 0x7F) >> 2);
1565         mask |= 1 << ((mmTPC4_CMDQ_CQ_RD_RATE_LIM_TOUT & 0x7F) >> 2);
1566
1567         WREG32(pb_addr + word_offset, ~mask);
1568
1569         pb_addr = (mmTPC4_CMDQ_CQ_IFIFO_CNT & ~0xFFF) + PROT_BITS_OFFS;
1570         word_offset = ((mmTPC4_CMDQ_CQ_IFIFO_CNT & PROT_BITS_OFFS) >> 7) << 2;
1571         mask = 1 << ((mmTPC4_CMDQ_CQ_IFIFO_CNT & 0x7F) >> 2);
1572         mask |= 1 << ((mmTPC4_CMDQ_CP_MSG_BASE0_ADDR_LO & 0x7F) >> 2);
1573         mask |= 1 << ((mmTPC4_CMDQ_CP_MSG_BASE0_ADDR_HI & 0x7F) >> 2);
1574         mask |= 1 << ((mmTPC4_CMDQ_CP_MSG_BASE1_ADDR_LO & 0x7F) >> 2);
1575         mask |= 1 << ((mmTPC4_CMDQ_CP_MSG_BASE1_ADDR_HI & 0x7F) >> 2);
1576         mask |= 1 << ((mmTPC4_CMDQ_CP_MSG_BASE2_ADDR_LO & 0x7F) >> 2);
1577         mask |= 1 << ((mmTPC4_CMDQ_CP_MSG_BASE2_ADDR_HI & 0x7F) >> 2);
1578         mask |= 1 << ((mmTPC4_CMDQ_CP_MSG_BASE3_ADDR_LO & 0x7F) >> 2);
1579         mask |= 1 << ((mmTPC4_CMDQ_CP_MSG_BASE3_ADDR_HI & 0x7F) >> 2);
1580         mask |= 1 << ((mmTPC4_CMDQ_CP_LDMA_TSIZE_OFFSET & 0x7F) >> 2);
1581         mask |= 1 << ((mmTPC4_CMDQ_CP_LDMA_SRC_BASE_LO_OFFSET & 0x7F) >> 2);
1582         mask |= 1 << ((mmTPC4_CMDQ_CP_LDMA_SRC_BASE_HI_OFFSET & 0x7F) >> 2);
1583         mask |= 1 << ((mmTPC4_CMDQ_CP_LDMA_DST_BASE_LO_OFFSET & 0x7F) >> 2);
1584         mask |= 1 << ((mmTPC4_CMDQ_CP_LDMA_DST_BASE_HI_OFFSET & 0x7F) >> 2);
1585         mask |= 1 << ((mmTPC4_CMDQ_CP_LDMA_COMMIT_OFFSET & 0x7F) >> 2);
1586         mask |= 1 << ((mmTPC4_CMDQ_CP_STS & 0x7F) >> 2);
1587         mask |= 1 << ((mmTPC4_CMDQ_CP_CURRENT_INST_LO & 0x7F) >> 2);
1588
1589         WREG32(pb_addr + word_offset, ~mask);
1590
1591         pb_addr = (mmTPC4_CMDQ_CP_CURRENT_INST_HI & ~0xFFF) + PROT_BITS_OFFS;
1592         word_offset = ((mmTPC4_CMDQ_CP_CURRENT_INST_HI & PROT_BITS_OFFS) >> 7)
1593                         << 2;
1594         mask = 1 << ((mmTPC4_CMDQ_CP_CURRENT_INST_HI & 0x7F) >> 2);
1595         mask |= 1 << ((mmTPC4_CMDQ_CP_BARRIER_CFG & 0x7F) >> 2);
1596         mask |= 1 << ((mmTPC4_CMDQ_CP_DBG_0 & 0x7F) >> 2);
1597         mask |= 1 << ((mmTPC4_CMDQ_CQ_BUF_ADDR & 0x7F) >> 2);
1598         mask |= 1 << ((mmTPC4_CMDQ_CQ_BUF_RDATA & 0x7F) >> 2);
1599
1600         WREG32(pb_addr + word_offset, ~mask);
1601
1602         goya_pb_set_block(hdev, mmTPC5_RTR_BASE);
1603         goya_pb_set_block(hdev, mmTPC5_RD_REGULATOR_BASE);
1604         goya_pb_set_block(hdev, mmTPC5_WR_REGULATOR_BASE);
1605
1606         pb_addr = (mmTPC5_CFG_CFG_BASE_ADDRESS_HIGH & ~0xFFF) + PROT_BITS_OFFS;
1607         word_offset = ((mmTPC5_CFG_CFG_BASE_ADDRESS_HIGH &
1608                         PROT_BITS_OFFS) >> 7) << 2;
1609         mask = 1 << ((mmTPC5_CFG_CFG_BASE_ADDRESS_HIGH & 0x7F) >> 2);
1610         mask |= 1 << ((mmTPC5_CFG_CFG_SUBTRACT_VALUE & 0x7F) >> 2);
1611         mask |= 1 << ((mmTPC5_CFG_SM_BASE_ADDRESS_LOW & 0x7F) >> 2);
1612         mask |= 1 << ((mmTPC5_CFG_SM_BASE_ADDRESS_HIGH & 0x7F) >> 2);
1613
1614         WREG32(pb_addr + word_offset, ~mask);
1615
1616         pb_addr = (mmTPC5_CFG_ARUSER & ~0xFFF) + PROT_BITS_OFFS;
1617         word_offset = ((mmTPC5_CFG_ARUSER & PROT_BITS_OFFS) >> 7) << 2;
1618         mask = 1 << ((mmTPC5_CFG_ARUSER & 0x7F) >> 2);
1619         mask |= 1 << ((mmTPC5_CFG_AWUSER & 0x7F) >> 2);
1620
1621         WREG32(pb_addr + word_offset, ~mask);
1622
1623         pb_addr = (mmTPC5_CFG_FUNC_MBIST_CNTRL & ~0xFFF) + PROT_BITS_OFFS;
1624         word_offset = ((mmTPC5_CFG_FUNC_MBIST_CNTRL &
1625                         PROT_BITS_OFFS) >> 7) << 2;
1626         mask = 1 << ((mmTPC5_CFG_FUNC_MBIST_CNTRL & 0x7F) >> 2);
1627         mask |= 1 << ((mmTPC5_CFG_FUNC_MBIST_PAT & 0x7F) >> 2);
1628         mask |= 1 << ((mmTPC5_CFG_FUNC_MBIST_MEM_0 & 0x7F) >> 2);
1629         mask |= 1 << ((mmTPC5_CFG_FUNC_MBIST_MEM_1 & 0x7F) >> 2);
1630         mask |= 1 << ((mmTPC5_CFG_FUNC_MBIST_MEM_2 & 0x7F) >> 2);
1631         mask |= 1 << ((mmTPC5_CFG_FUNC_MBIST_MEM_3 & 0x7F) >> 2);
1632         mask |= 1 << ((mmTPC5_CFG_FUNC_MBIST_MEM_4 & 0x7F) >> 2);
1633         mask |= 1 << ((mmTPC5_CFG_FUNC_MBIST_MEM_5 & 0x7F) >> 2);
1634         mask |= 1 << ((mmTPC5_CFG_FUNC_MBIST_MEM_6 & 0x7F) >> 2);
1635         mask |= 1 << ((mmTPC5_CFG_FUNC_MBIST_MEM_7 & 0x7F) >> 2);
1636         mask |= 1 << ((mmTPC5_CFG_FUNC_MBIST_MEM_8 & 0x7F) >> 2);
1637         mask |= 1 << ((mmTPC5_CFG_FUNC_MBIST_MEM_9 & 0x7F) >> 2);
1638
1639         WREG32(pb_addr + word_offset, ~mask);
1640
1641         pb_addr = (mmTPC5_QM_GLBL_CFG0 & ~0xFFF) + PROT_BITS_OFFS;
1642         word_offset = ((mmTPC5_QM_GLBL_CFG0 & PROT_BITS_OFFS) >> 7) << 2;
1643         mask = 1 << ((mmTPC5_QM_GLBL_CFG0 & 0x7F) >> 2);
1644         mask |= 1 << ((mmTPC5_QM_GLBL_CFG1 & 0x7F) >> 2);
1645         mask |= 1 << ((mmTPC5_QM_GLBL_PROT & 0x7F) >> 2);
1646         mask |= 1 << ((mmTPC5_QM_GLBL_ERR_CFG & 0x7F) >> 2);
1647         mask |= 1 << ((mmTPC5_QM_GLBL_ERR_ADDR_LO & 0x7F) >> 2);
1648         mask |= 1 << ((mmTPC5_QM_GLBL_ERR_ADDR_HI & 0x7F) >> 2);
1649         mask |= 1 << ((mmTPC5_QM_GLBL_ERR_WDATA & 0x7F) >> 2);
1650         mask |= 1 << ((mmTPC5_QM_GLBL_SECURE_PROPS & 0x7F) >> 2);
1651         mask |= 1 << ((mmTPC5_QM_GLBL_NON_SECURE_PROPS & 0x7F) >> 2);
1652         mask |= 1 << ((mmTPC5_QM_GLBL_STS0 & 0x7F) >> 2);
1653         mask |= 1 << ((mmTPC5_QM_GLBL_STS1 & 0x7F) >> 2);
1654         mask |= 1 << ((mmTPC5_QM_PQ_BASE_LO & 0x7F) >> 2);
1655         mask |= 1 << ((mmTPC5_QM_PQ_BASE_HI & 0x7F) >> 2);
1656         mask |= 1 << ((mmTPC5_QM_PQ_SIZE & 0x7F) >> 2);
1657         mask |= 1 << ((mmTPC5_QM_PQ_PI & 0x7F) >> 2);
1658         mask |= 1 << ((mmTPC5_QM_PQ_CI & 0x7F) >> 2);
1659         mask |= 1 << ((mmTPC5_QM_PQ_CFG0 & 0x7F) >> 2);
1660         mask |= 1 << ((mmTPC5_QM_PQ_CFG1 & 0x7F) >> 2);
1661         mask |= 1 << ((mmTPC5_QM_PQ_ARUSER & 0x7F) >> 2);
1662
1663         WREG32(pb_addr + word_offset, ~mask);
1664
1665         pb_addr = (mmTPC5_QM_PQ_PUSH0 & ~0xFFF) + PROT_BITS_OFFS;
1666         word_offset = ((mmTPC5_QM_PQ_PUSH0 & PROT_BITS_OFFS) >> 7) << 2;
1667         mask = 1 << ((mmTPC5_QM_PQ_PUSH0 & 0x7F) >> 2);
1668         mask |= 1 << ((mmTPC5_QM_PQ_PUSH1 & 0x7F) >> 2);
1669         mask |= 1 << ((mmTPC5_QM_PQ_PUSH2 & 0x7F) >> 2);
1670         mask |= 1 << ((mmTPC5_QM_PQ_PUSH3 & 0x7F) >> 2);
1671         mask |= 1 << ((mmTPC5_QM_PQ_STS0 & 0x7F) >> 2);
1672         mask |= 1 << ((mmTPC5_QM_PQ_STS1 & 0x7F) >> 2);
1673         mask |= 1 << ((mmTPC5_QM_PQ_RD_RATE_LIM_EN & 0x7F) >> 2);
1674         mask |= 1 << ((mmTPC5_QM_PQ_RD_RATE_LIM_RST_TOKEN & 0x7F) >> 2);
1675         mask |= 1 << ((mmTPC5_QM_PQ_RD_RATE_LIM_SAT & 0x7F) >> 2);
1676         mask |= 1 << ((mmTPC5_QM_PQ_RD_RATE_LIM_TOUT & 0x7F) >> 2);
1677         mask |= 1 << ((mmTPC5_QM_CQ_CFG0 & 0x7F) >> 2);
1678         mask |= 1 << ((mmTPC5_QM_CQ_CFG1 & 0x7F) >> 2);
1679         mask |= 1 << ((mmTPC5_QM_CQ_ARUSER & 0x7F) >> 2);
1680         mask |= 1 << ((mmTPC5_QM_CQ_PTR_LO & 0x7F) >> 2);
1681         mask |= 1 << ((mmTPC5_QM_CQ_PTR_HI & 0x7F) >> 2);
1682         mask |= 1 << ((mmTPC5_QM_CQ_TSIZE & 0x7F) >> 2);
1683         mask |= 1 << ((mmTPC5_QM_CQ_CTL & 0x7F) >> 2);
1684         mask |= 1 << ((mmTPC5_QM_CQ_PTR_LO_STS & 0x7F) >> 2);
1685         mask |= 1 << ((mmTPC5_QM_CQ_PTR_HI_STS & 0x7F) >> 2);
1686         mask |= 1 << ((mmTPC5_QM_CQ_TSIZE_STS & 0x7F) >> 2);
1687         mask |= 1 << ((mmTPC5_QM_CQ_CTL_STS & 0x7F) >> 2);
1688         mask |= 1 << ((mmTPC5_QM_CQ_STS0 & 0x7F) >> 2);
1689         mask |= 1 << ((mmTPC5_QM_CQ_STS1 & 0x7F) >> 2);
1690         mask |= 1 << ((mmTPC5_QM_CQ_RD_RATE_LIM_EN & 0x7F) >> 2);
1691         mask |= 1 << ((mmTPC5_QM_CQ_RD_RATE_LIM_RST_TOKEN & 0x7F) >> 2);
1692         mask |= 1 << ((mmTPC5_QM_CQ_RD_RATE_LIM_SAT & 0x7F) >> 2);
1693         mask |= 1 << ((mmTPC5_QM_CQ_RD_RATE_LIM_TOUT & 0x7F) >> 2);
1694
1695         WREG32(pb_addr + word_offset, ~mask);
1696
1697         pb_addr = (mmTPC5_QM_CQ_IFIFO_CNT & ~0xFFF) + PROT_BITS_OFFS;
1698         word_offset = ((mmTPC5_QM_CQ_IFIFO_CNT & PROT_BITS_OFFS) >> 7) << 2;
1699         mask = 1 << ((mmTPC5_QM_CQ_IFIFO_CNT & 0x7F) >> 2);
1700         mask |= 1 << ((mmTPC5_QM_CP_MSG_BASE0_ADDR_LO & 0x7F) >> 2);
1701         mask |= 1 << ((mmTPC5_QM_CP_MSG_BASE0_ADDR_HI & 0x7F) >> 2);
1702         mask |= 1 << ((mmTPC5_QM_CP_MSG_BASE1_ADDR_LO & 0x7F) >> 2);
1703         mask |= 1 << ((mmTPC5_QM_CP_MSG_BASE1_ADDR_HI & 0x7F) >> 2);
1704         mask |= 1 << ((mmTPC5_QM_CP_MSG_BASE2_ADDR_LO & 0x7F) >> 2);
1705         mask |= 1 << ((mmTPC5_QM_CP_MSG_BASE2_ADDR_HI & 0x7F) >> 2);
1706         mask |= 1 << ((mmTPC5_QM_CP_MSG_BASE3_ADDR_LO & 0x7F) >> 2);
1707         mask |= 1 << ((mmTPC5_QM_CP_MSG_BASE3_ADDR_HI & 0x7F) >> 2);
1708         mask |= 1 << ((mmTPC5_QM_CP_LDMA_TSIZE_OFFSET & 0x7F) >> 2);
1709         mask |= 1 << ((mmTPC5_QM_CP_LDMA_SRC_BASE_LO_OFFSET & 0x7F) >> 2);
1710         mask |= 1 << ((mmTPC5_QM_CP_LDMA_SRC_BASE_HI_OFFSET & 0x7F) >> 2);
1711         mask |= 1 << ((mmTPC5_QM_CP_LDMA_DST_BASE_LO_OFFSET & 0x7F) >> 2);
1712         mask |= 1 << ((mmTPC5_QM_CP_LDMA_DST_BASE_HI_OFFSET & 0x7F) >> 2);
1713         mask |= 1 << ((mmTPC5_QM_CP_LDMA_COMMIT_OFFSET & 0x7F) >> 2);
1714
1715         WREG32(pb_addr + word_offset, ~mask);
1716
1717         pb_addr = (mmTPC5_CMDQ_GLBL_CFG0 & ~0xFFF) + PROT_BITS_OFFS;
1718         word_offset = ((mmTPC5_CMDQ_GLBL_CFG0 & PROT_BITS_OFFS) >> 7) << 2;
1719         mask = 1 << ((mmTPC5_CMDQ_GLBL_CFG0 & 0x7F) >> 2);
1720         mask |= 1 << ((mmTPC5_CMDQ_GLBL_CFG1 & 0x7F) >> 2);
1721         mask |= 1 << ((mmTPC5_CMDQ_GLBL_PROT & 0x7F) >> 2);
1722         mask |= 1 << ((mmTPC5_CMDQ_GLBL_ERR_CFG & 0x7F) >> 2);
1723         mask |= 1 << ((mmTPC5_CMDQ_GLBL_ERR_ADDR_LO & 0x7F) >> 2);
1724         mask |= 1 << ((mmTPC5_CMDQ_GLBL_ERR_ADDR_HI & 0x7F) >> 2);
1725         mask |= 1 << ((mmTPC5_CMDQ_GLBL_ERR_WDATA & 0x7F) >> 2);
1726         mask |= 1 << ((mmTPC5_CMDQ_GLBL_SECURE_PROPS & 0x7F) >> 2);
1727         mask |= 1 << ((mmTPC5_CMDQ_GLBL_NON_SECURE_PROPS & 0x7F) >> 2);
1728         mask |= 1 << ((mmTPC5_CMDQ_GLBL_STS0 & 0x7F) >> 2);
1729         mask |= 1 << ((mmTPC5_CMDQ_GLBL_STS1 & 0x7F) >> 2);
1730
1731         WREG32(pb_addr + word_offset, ~mask);
1732
1733         pb_addr = (mmTPC5_CMDQ_CQ_CFG0 & ~0xFFF) + PROT_BITS_OFFS;
1734         word_offset = ((mmTPC5_CMDQ_CQ_CFG0 & PROT_BITS_OFFS) >> 7) << 2;
1735         mask = 1 << ((mmTPC5_CMDQ_CQ_CFG0 & 0x7F) >> 2);
1736         mask |= 1 << ((mmTPC5_CMDQ_CQ_CFG1 & 0x7F) >> 2);
1737         mask |= 1 << ((mmTPC5_CMDQ_CQ_ARUSER & 0x7F) >> 2);
1738         mask |= 1 << ((mmTPC5_CMDQ_CQ_PTR_LO_STS & 0x7F) >> 2);
1739         mask |= 1 << ((mmTPC5_CMDQ_CQ_PTR_HI_STS & 0x7F) >> 2);
1740         mask |= 1 << ((mmTPC5_CMDQ_CQ_TSIZE_STS & 0x7F) >> 2);
1741         mask |= 1 << ((mmTPC5_CMDQ_CQ_CTL_STS & 0x7F) >> 2);
1742         mask |= 1 << ((mmTPC5_CMDQ_CQ_STS0 & 0x7F) >> 2);
1743         mask |= 1 << ((mmTPC5_CMDQ_CQ_STS1 & 0x7F) >> 2);
1744         mask |= 1 << ((mmTPC5_CMDQ_CQ_RD_RATE_LIM_EN & 0x7F) >> 2);
1745         mask |= 1 << ((mmTPC5_CMDQ_CQ_RD_RATE_LIM_RST_TOKEN & 0x7F) >> 2);
1746         mask |= 1 << ((mmTPC5_CMDQ_CQ_RD_RATE_LIM_SAT & 0x7F) >> 2);
1747         mask |= 1 << ((mmTPC5_CMDQ_CQ_RD_RATE_LIM_TOUT & 0x7F) >> 2);
1748
1749         WREG32(pb_addr + word_offset, ~mask);
1750
1751         pb_addr = (mmTPC5_CMDQ_CQ_IFIFO_CNT & ~0xFFF) + PROT_BITS_OFFS;
1752         word_offset = ((mmTPC5_CMDQ_CQ_IFIFO_CNT & PROT_BITS_OFFS) >> 7) << 2;
1753         mask = 1 << ((mmTPC5_CMDQ_CQ_IFIFO_CNT & 0x7F) >> 2);
1754         mask |= 1 << ((mmTPC5_CMDQ_CP_MSG_BASE0_ADDR_LO & 0x7F) >> 2);
1755         mask |= 1 << ((mmTPC5_CMDQ_CP_MSG_BASE0_ADDR_HI & 0x7F) >> 2);
1756         mask |= 1 << ((mmTPC5_CMDQ_CP_MSG_BASE1_ADDR_LO & 0x7F) >> 2);
1757         mask |= 1 << ((mmTPC5_CMDQ_CP_MSG_BASE1_ADDR_HI & 0x7F) >> 2);
1758         mask |= 1 << ((mmTPC5_CMDQ_CP_MSG_BASE2_ADDR_LO & 0x7F) >> 2);
1759         mask |= 1 << ((mmTPC5_CMDQ_CP_MSG_BASE2_ADDR_HI & 0x7F) >> 2);
1760         mask |= 1 << ((mmTPC5_CMDQ_CP_MSG_BASE3_ADDR_LO & 0x7F) >> 2);
1761         mask |= 1 << ((mmTPC5_CMDQ_CP_MSG_BASE3_ADDR_HI & 0x7F) >> 2);
1762         mask |= 1 << ((mmTPC5_CMDQ_CP_LDMA_TSIZE_OFFSET & 0x7F) >> 2);
1763         mask |= 1 << ((mmTPC5_CMDQ_CP_LDMA_SRC_BASE_LO_OFFSET & 0x7F) >> 2);
1764         mask |= 1 << ((mmTPC5_CMDQ_CP_LDMA_SRC_BASE_HI_OFFSET & 0x7F) >> 2);
1765         mask |= 1 << ((mmTPC5_CMDQ_CP_LDMA_DST_BASE_LO_OFFSET & 0x7F) >> 2);
1766         mask |= 1 << ((mmTPC5_CMDQ_CP_LDMA_DST_BASE_HI_OFFSET & 0x7F) >> 2);
1767         mask |= 1 << ((mmTPC5_CMDQ_CP_LDMA_COMMIT_OFFSET & 0x7F) >> 2);
1768         mask |= 1 << ((mmTPC5_CMDQ_CP_STS & 0x7F) >> 2);
1769         mask |= 1 << ((mmTPC5_CMDQ_CP_CURRENT_INST_LO & 0x7F) >> 2);
1770
1771         WREG32(pb_addr + word_offset, ~mask);
1772
1773         pb_addr = (mmTPC5_CMDQ_CP_CURRENT_INST_HI & ~0xFFF) + PROT_BITS_OFFS;
1774         word_offset = ((mmTPC5_CMDQ_CP_CURRENT_INST_HI & PROT_BITS_OFFS) >> 7)
1775                         << 2;
1776         mask = 1 << ((mmTPC5_CMDQ_CP_CURRENT_INST_HI & 0x7F) >> 2);
1777         mask |= 1 << ((mmTPC5_CMDQ_CP_BARRIER_CFG & 0x7F) >> 2);
1778         mask |= 1 << ((mmTPC5_CMDQ_CP_DBG_0 & 0x7F) >> 2);
1779         mask |= 1 << ((mmTPC5_CMDQ_CQ_BUF_ADDR & 0x7F) >> 2);
1780         mask |= 1 << ((mmTPC5_CMDQ_CQ_BUF_RDATA & 0x7F) >> 2);
1781
1782         WREG32(pb_addr + word_offset, ~mask);
1783
1784         goya_pb_set_block(hdev, mmTPC6_RTR_BASE);
1785         goya_pb_set_block(hdev, mmTPC6_RD_REGULATOR_BASE);
1786         goya_pb_set_block(hdev, mmTPC6_WR_REGULATOR_BASE);
1787
1788         pb_addr = (mmTPC6_CFG_CFG_BASE_ADDRESS_HIGH & ~0xFFF) + PROT_BITS_OFFS;
1789         word_offset = ((mmTPC6_CFG_CFG_BASE_ADDRESS_HIGH &
1790                         PROT_BITS_OFFS) >> 7) << 2;
1791         mask = 1 << ((mmTPC6_CFG_CFG_BASE_ADDRESS_HIGH & 0x7F) >> 2);
1792         mask |= 1 << ((mmTPC6_CFG_CFG_SUBTRACT_VALUE & 0x7F) >> 2);
1793         mask |= 1 << ((mmTPC6_CFG_SM_BASE_ADDRESS_LOW & 0x7F) >> 2);
1794         mask |= 1 << ((mmTPC6_CFG_SM_BASE_ADDRESS_HIGH & 0x7F) >> 2);
1795
1796         WREG32(pb_addr + word_offset, ~mask);
1797
1798         pb_addr = (mmTPC6_CFG_ARUSER & ~0xFFF) + PROT_BITS_OFFS;
1799         word_offset = ((mmTPC6_CFG_ARUSER & PROT_BITS_OFFS) >> 7) << 2;
1800         mask = 1 << ((mmTPC6_CFG_ARUSER & 0x7F) >> 2);
1801         mask |= 1 << ((mmTPC6_CFG_AWUSER & 0x7F) >> 2);
1802
1803         WREG32(pb_addr + word_offset, ~mask);
1804
1805         pb_addr = (mmTPC6_CFG_FUNC_MBIST_CNTRL & ~0xFFF) + PROT_BITS_OFFS;
1806         word_offset = ((mmTPC6_CFG_FUNC_MBIST_CNTRL &
1807                         PROT_BITS_OFFS) >> 7) << 2;
1808         mask = 1 << ((mmTPC6_CFG_FUNC_MBIST_CNTRL & 0x7F) >> 2);
1809         mask |= 1 << ((mmTPC6_CFG_FUNC_MBIST_PAT & 0x7F) >> 2);
1810         mask |= 1 << ((mmTPC6_CFG_FUNC_MBIST_MEM_0 & 0x7F) >> 2);
1811         mask |= 1 << ((mmTPC6_CFG_FUNC_MBIST_MEM_1 & 0x7F) >> 2);
1812         mask |= 1 << ((mmTPC6_CFG_FUNC_MBIST_MEM_2 & 0x7F) >> 2);
1813         mask |= 1 << ((mmTPC6_CFG_FUNC_MBIST_MEM_3 & 0x7F) >> 2);
1814         mask |= 1 << ((mmTPC6_CFG_FUNC_MBIST_MEM_4 & 0x7F) >> 2);
1815         mask |= 1 << ((mmTPC6_CFG_FUNC_MBIST_MEM_5 & 0x7F) >> 2);
1816         mask |= 1 << ((mmTPC6_CFG_FUNC_MBIST_MEM_6 & 0x7F) >> 2);
1817         mask |= 1 << ((mmTPC6_CFG_FUNC_MBIST_MEM_7 & 0x7F) >> 2);
1818         mask |= 1 << ((mmTPC6_CFG_FUNC_MBIST_MEM_8 & 0x7F) >> 2);
1819         mask |= 1 << ((mmTPC6_CFG_FUNC_MBIST_MEM_9 & 0x7F) >> 2);
1820
1821         WREG32(pb_addr + word_offset, ~mask);
1822
1823         pb_addr = (mmTPC6_QM_GLBL_CFG0 & ~0xFFF) + PROT_BITS_OFFS;
1824         word_offset = ((mmTPC6_QM_GLBL_CFG0 & PROT_BITS_OFFS) >> 7) << 2;
1825         mask = 1 << ((mmTPC6_QM_GLBL_CFG0 & 0x7F) >> 2);
1826         mask |= 1 << ((mmTPC6_QM_GLBL_CFG1 & 0x7F) >> 2);
1827         mask |= 1 << ((mmTPC6_QM_GLBL_PROT & 0x7F) >> 2);
1828         mask |= 1 << ((mmTPC6_QM_GLBL_ERR_CFG & 0x7F) >> 2);
1829         mask |= 1 << ((mmTPC6_QM_GLBL_ERR_ADDR_LO & 0x7F) >> 2);
1830         mask |= 1 << ((mmTPC6_QM_GLBL_ERR_ADDR_HI & 0x7F) >> 2);
1831         mask |= 1 << ((mmTPC6_QM_GLBL_ERR_WDATA & 0x7F) >> 2);
1832         mask |= 1 << ((mmTPC6_QM_GLBL_SECURE_PROPS & 0x7F) >> 2);
1833         mask |= 1 << ((mmTPC6_QM_GLBL_NON_SECURE_PROPS & 0x7F) >> 2);
1834         mask |= 1 << ((mmTPC6_QM_GLBL_STS0 & 0x7F) >> 2);
1835         mask |= 1 << ((mmTPC6_QM_GLBL_STS1 & 0x7F) >> 2);
1836         mask |= 1 << ((mmTPC6_QM_PQ_BASE_LO & 0x7F) >> 2);
1837         mask |= 1 << ((mmTPC6_QM_PQ_BASE_HI & 0x7F) >> 2);
1838         mask |= 1 << ((mmTPC6_QM_PQ_SIZE & 0x7F) >> 2);
1839         mask |= 1 << ((mmTPC6_QM_PQ_PI & 0x7F) >> 2);
1840         mask |= 1 << ((mmTPC6_QM_PQ_CI & 0x7F) >> 2);
1841         mask |= 1 << ((mmTPC6_QM_PQ_CFG0 & 0x7F) >> 2);
1842         mask |= 1 << ((mmTPC6_QM_PQ_CFG1 & 0x7F) >> 2);
1843         mask |= 1 << ((mmTPC6_QM_PQ_ARUSER & 0x7F) >> 2);
1844
1845         WREG32(pb_addr + word_offset, ~mask);
1846
1847         pb_addr = (mmTPC6_QM_PQ_PUSH0 & ~0xFFF) + PROT_BITS_OFFS;
1848         word_offset = ((mmTPC6_QM_PQ_PUSH0 & PROT_BITS_OFFS) >> 7) << 2;
1849         mask = 1 << ((mmTPC6_QM_PQ_PUSH0 & 0x7F) >> 2);
1850         mask |= 1 << ((mmTPC6_QM_PQ_PUSH1 & 0x7F) >> 2);
1851         mask |= 1 << ((mmTPC6_QM_PQ_PUSH2 & 0x7F) >> 2);
1852         mask |= 1 << ((mmTPC6_QM_PQ_PUSH3 & 0x7F) >> 2);
1853         mask |= 1 << ((mmTPC6_QM_PQ_STS0 & 0x7F) >> 2);
1854         mask |= 1 << ((mmTPC6_QM_PQ_STS1 & 0x7F) >> 2);
1855         mask |= 1 << ((mmTPC6_QM_PQ_RD_RATE_LIM_EN & 0x7F) >> 2);
1856         mask |= 1 << ((mmTPC6_QM_PQ_RD_RATE_LIM_RST_TOKEN & 0x7F) >> 2);
1857         mask |= 1 << ((mmTPC6_QM_PQ_RD_RATE_LIM_SAT & 0x7F) >> 2);
1858         mask |= 1 << ((mmTPC6_QM_PQ_RD_RATE_LIM_TOUT & 0x7F) >> 2);
1859         mask |= 1 << ((mmTPC6_QM_CQ_CFG0 & 0x7F) >> 2);
1860         mask |= 1 << ((mmTPC6_QM_CQ_CFG1 & 0x7F) >> 2);
1861         mask |= 1 << ((mmTPC6_QM_CQ_ARUSER & 0x7F) >> 2);
1862         mask |= 1 << ((mmTPC6_QM_CQ_PTR_LO & 0x7F) >> 2);
1863         mask |= 1 << ((mmTPC6_QM_CQ_PTR_HI & 0x7F) >> 2);
1864         mask |= 1 << ((mmTPC6_QM_CQ_TSIZE & 0x7F) >> 2);
1865         mask |= 1 << ((mmTPC6_QM_CQ_CTL & 0x7F) >> 2);
1866         mask |= 1 << ((mmTPC6_QM_CQ_PTR_LO_STS & 0x7F) >> 2);
1867         mask |= 1 << ((mmTPC6_QM_CQ_PTR_HI_STS & 0x7F) >> 2);
1868         mask |= 1 << ((mmTPC6_QM_CQ_TSIZE_STS & 0x7F) >> 2);
1869         mask |= 1 << ((mmTPC6_QM_CQ_CTL_STS & 0x7F) >> 2);
1870         mask |= 1 << ((mmTPC6_QM_CQ_STS0 & 0x7F) >> 2);
1871         mask |= 1 << ((mmTPC6_QM_CQ_STS1 & 0x7F) >> 2);
1872         mask |= 1 << ((mmTPC6_QM_CQ_RD_RATE_LIM_EN & 0x7F) >> 2);
1873         mask |= 1 << ((mmTPC6_QM_CQ_RD_RATE_LIM_RST_TOKEN & 0x7F) >> 2);
1874         mask |= 1 << ((mmTPC6_QM_CQ_RD_RATE_LIM_SAT & 0x7F) >> 2);
1875         mask |= 1 << ((mmTPC6_QM_CQ_RD_RATE_LIM_TOUT & 0x7F) >> 2);
1876
1877         WREG32(pb_addr + word_offset, ~mask);
1878
1879         pb_addr = (mmTPC6_QM_CQ_IFIFO_CNT & ~0xFFF) + PROT_BITS_OFFS;
1880         word_offset = ((mmTPC6_QM_CQ_IFIFO_CNT & PROT_BITS_OFFS) >> 7) << 2;
1881         mask = 1 << ((mmTPC6_QM_CQ_IFIFO_CNT & 0x7F) >> 2);
1882         mask |= 1 << ((mmTPC6_QM_CP_MSG_BASE0_ADDR_LO & 0x7F) >> 2);
1883         mask |= 1 << ((mmTPC6_QM_CP_MSG_BASE0_ADDR_HI & 0x7F) >> 2);
1884         mask |= 1 << ((mmTPC6_QM_CP_MSG_BASE1_ADDR_LO & 0x7F) >> 2);
1885         mask |= 1 << ((mmTPC6_QM_CP_MSG_BASE1_ADDR_HI & 0x7F) >> 2);
1886         mask |= 1 << ((mmTPC6_QM_CP_MSG_BASE2_ADDR_LO & 0x7F) >> 2);
1887         mask |= 1 << ((mmTPC6_QM_CP_MSG_BASE2_ADDR_HI & 0x7F) >> 2);
1888         mask |= 1 << ((mmTPC6_QM_CP_MSG_BASE3_ADDR_LO & 0x7F) >> 2);
1889         mask |= 1 << ((mmTPC6_QM_CP_MSG_BASE3_ADDR_HI & 0x7F) >> 2);
1890         mask |= 1 << ((mmTPC6_QM_CP_LDMA_TSIZE_OFFSET & 0x7F) >> 2);
1891         mask |= 1 << ((mmTPC6_QM_CP_LDMA_SRC_BASE_LO_OFFSET & 0x7F) >> 2);
1892         mask |= 1 << ((mmTPC6_QM_CP_LDMA_SRC_BASE_HI_OFFSET & 0x7F) >> 2);
1893         mask |= 1 << ((mmTPC6_QM_CP_LDMA_DST_BASE_LO_OFFSET & 0x7F) >> 2);
1894         mask |= 1 << ((mmTPC6_QM_CP_LDMA_DST_BASE_HI_OFFSET & 0x7F) >> 2);
1895         mask |= 1 << ((mmTPC6_QM_CP_LDMA_COMMIT_OFFSET & 0x7F) >> 2);
1896
1897         WREG32(pb_addr + word_offset, ~mask);
1898
1899         pb_addr = (mmTPC6_CMDQ_GLBL_CFG0 & ~0xFFF) + PROT_BITS_OFFS;
1900         word_offset = ((mmTPC6_CMDQ_GLBL_CFG0 & PROT_BITS_OFFS) >> 7) << 2;
1901         mask = 1 << ((mmTPC6_CMDQ_GLBL_CFG0 & 0x7F) >> 2);
1902         mask |= 1 << ((mmTPC6_CMDQ_GLBL_CFG1 & 0x7F) >> 2);
1903         mask |= 1 << ((mmTPC6_CMDQ_GLBL_PROT & 0x7F) >> 2);
1904         mask |= 1 << ((mmTPC6_CMDQ_GLBL_ERR_CFG & 0x7F) >> 2);
1905         mask |= 1 << ((mmTPC6_CMDQ_GLBL_ERR_ADDR_LO & 0x7F) >> 2);
1906         mask |= 1 << ((mmTPC6_CMDQ_GLBL_ERR_ADDR_HI & 0x7F) >> 2);
1907         mask |= 1 << ((mmTPC6_CMDQ_GLBL_ERR_WDATA & 0x7F) >> 2);
1908         mask |= 1 << ((mmTPC6_CMDQ_GLBL_SECURE_PROPS & 0x7F) >> 2);
1909         mask |= 1 << ((mmTPC6_CMDQ_GLBL_NON_SECURE_PROPS & 0x7F) >> 2);
1910         mask |= 1 << ((mmTPC6_CMDQ_GLBL_STS0 & 0x7F) >> 2);
1911         mask |= 1 << ((mmTPC6_CMDQ_GLBL_STS1 & 0x7F) >> 2);
1912
1913         WREG32(pb_addr + word_offset, ~mask);
1914
1915         pb_addr = (mmTPC6_CMDQ_CQ_CFG0 & ~0xFFF) + PROT_BITS_OFFS;
1916         word_offset = ((mmTPC6_CMDQ_CQ_CFG0 & PROT_BITS_OFFS) >> 7) << 2;
1917         mask = 1 << ((mmTPC6_CMDQ_CQ_CFG0 & 0x7F) >> 2);
1918         mask |= 1 << ((mmTPC6_CMDQ_CQ_CFG1 & 0x7F) >> 2);
1919         mask |= 1 << ((mmTPC6_CMDQ_CQ_ARUSER & 0x7F) >> 2);
1920         mask |= 1 << ((mmTPC6_CMDQ_CQ_PTR_LO_STS & 0x7F) >> 2);
1921         mask |= 1 << ((mmTPC6_CMDQ_CQ_PTR_HI_STS & 0x7F) >> 2);
1922         mask |= 1 << ((mmTPC6_CMDQ_CQ_TSIZE_STS & 0x7F) >> 2);
1923         mask |= 1 << ((mmTPC6_CMDQ_CQ_CTL_STS & 0x7F) >> 2);
1924         mask |= 1 << ((mmTPC6_CMDQ_CQ_STS0 & 0x7F) >> 2);
1925         mask |= 1 << ((mmTPC6_CMDQ_CQ_STS1 & 0x7F) >> 2);
1926         mask |= 1 << ((mmTPC6_CMDQ_CQ_RD_RATE_LIM_EN & 0x7F) >> 2);
1927         mask |= 1 << ((mmTPC6_CMDQ_CQ_RD_RATE_LIM_RST_TOKEN & 0x7F) >> 2);
1928         mask |= 1 << ((mmTPC6_CMDQ_CQ_RD_RATE_LIM_SAT & 0x7F) >> 2);
1929         mask |= 1 << ((mmTPC6_CMDQ_CQ_RD_RATE_LIM_TOUT & 0x7F) >> 2);
1930
1931         WREG32(pb_addr + word_offset, ~mask);
1932
1933         pb_addr = (mmTPC6_CMDQ_CQ_IFIFO_CNT & ~0xFFF) + PROT_BITS_OFFS;
1934         word_offset = ((mmTPC6_CMDQ_CQ_IFIFO_CNT & PROT_BITS_OFFS) >> 7) << 2;
1935         mask = 1 << ((mmTPC6_CMDQ_CQ_IFIFO_CNT & 0x7F) >> 2);
1936         mask |= 1 << ((mmTPC6_CMDQ_CP_MSG_BASE0_ADDR_LO & 0x7F) >> 2);
1937         mask |= 1 << ((mmTPC6_CMDQ_CP_MSG_BASE0_ADDR_HI & 0x7F) >> 2);
1938         mask |= 1 << ((mmTPC6_CMDQ_CP_MSG_BASE1_ADDR_LO & 0x7F) >> 2);
1939         mask |= 1 << ((mmTPC6_CMDQ_CP_MSG_BASE1_ADDR_HI & 0x7F) >> 2);
1940         mask |= 1 << ((mmTPC6_CMDQ_CP_MSG_BASE2_ADDR_LO & 0x7F) >> 2);
1941         mask |= 1 << ((mmTPC6_CMDQ_CP_MSG_BASE2_ADDR_HI & 0x7F) >> 2);
1942         mask |= 1 << ((mmTPC6_CMDQ_CP_MSG_BASE3_ADDR_LO & 0x7F) >> 2);
1943         mask |= 1 << ((mmTPC6_CMDQ_CP_MSG_BASE3_ADDR_HI & 0x7F) >> 2);
1944         mask |= 1 << ((mmTPC6_CMDQ_CP_LDMA_TSIZE_OFFSET & 0x7F) >> 2);
1945         mask |= 1 << ((mmTPC6_CMDQ_CP_LDMA_SRC_BASE_LO_OFFSET & 0x7F) >> 2);
1946         mask |= 1 << ((mmTPC6_CMDQ_CP_LDMA_SRC_BASE_HI_OFFSET & 0x7F) >> 2);
1947         mask |= 1 << ((mmTPC6_CMDQ_CP_LDMA_DST_BASE_LO_OFFSET & 0x7F) >> 2);
1948         mask |= 1 << ((mmTPC6_CMDQ_CP_LDMA_DST_BASE_HI_OFFSET & 0x7F) >> 2);
1949         mask |= 1 << ((mmTPC6_CMDQ_CP_LDMA_COMMIT_OFFSET & 0x7F) >> 2);
1950         mask |= 1 << ((mmTPC6_CMDQ_CP_STS & 0x7F) >> 2);
1951         mask |= 1 << ((mmTPC6_CMDQ_CP_CURRENT_INST_LO & 0x7F) >> 2);
1952
1953         WREG32(pb_addr + word_offset, ~mask);
1954
1955         pb_addr = (mmTPC6_CMDQ_CP_CURRENT_INST_HI & ~0xFFF) + PROT_BITS_OFFS;
1956         word_offset = ((mmTPC6_CMDQ_CP_CURRENT_INST_HI & PROT_BITS_OFFS) >> 7)
1957                         << 2;
1958         mask = 1 << ((mmTPC6_CMDQ_CP_CURRENT_INST_HI & 0x7F) >> 2);
1959         mask |= 1 << ((mmTPC6_CMDQ_CP_BARRIER_CFG & 0x7F) >> 2);
1960         mask |= 1 << ((mmTPC6_CMDQ_CP_DBG_0 & 0x7F) >> 2);
1961         mask |= 1 << ((mmTPC6_CMDQ_CQ_BUF_ADDR & 0x7F) >> 2);
1962         mask |= 1 << ((mmTPC6_CMDQ_CQ_BUF_RDATA & 0x7F) >> 2);
1963
1964         WREG32(pb_addr + word_offset, ~mask);
1965
1966         goya_pb_set_block(hdev, mmTPC7_NRTR_BASE);
1967         goya_pb_set_block(hdev, mmTPC7_RD_REGULATOR_BASE);
1968         goya_pb_set_block(hdev, mmTPC7_WR_REGULATOR_BASE);
1969
1970         pb_addr = (mmTPC7_CFG_CFG_BASE_ADDRESS_HIGH & ~0xFFF) + PROT_BITS_OFFS;
1971         word_offset = ((mmTPC7_CFG_CFG_BASE_ADDRESS_HIGH &
1972                         PROT_BITS_OFFS) >> 7) << 2;
1973         mask = 1 << ((mmTPC7_CFG_CFG_BASE_ADDRESS_HIGH & 0x7F) >> 2);
1974         mask |= 1 << ((mmTPC7_CFG_CFG_SUBTRACT_VALUE & 0x7F) >> 2);
1975         mask |= 1 << ((mmTPC7_CFG_SM_BASE_ADDRESS_LOW & 0x7F) >> 2);
1976         mask |= 1 << ((mmTPC7_CFG_SM_BASE_ADDRESS_HIGH & 0x7F) >> 2);
1977
1978         WREG32(pb_addr + word_offset, ~mask);
1979
1980         pb_addr = (mmTPC7_CFG_ARUSER & ~0xFFF) + PROT_BITS_OFFS;
1981         word_offset = ((mmTPC7_CFG_ARUSER & PROT_BITS_OFFS) >> 7) << 2;
1982         mask = 1 << ((mmTPC7_CFG_ARUSER & 0x7F) >> 2);
1983         mask |= 1 << ((mmTPC7_CFG_AWUSER & 0x7F) >> 2);
1984
1985         WREG32(pb_addr + word_offset, ~mask);
1986
1987         pb_addr = (mmTPC7_CFG_FUNC_MBIST_CNTRL & ~0xFFF) + PROT_BITS_OFFS;
1988         word_offset = ((mmTPC7_CFG_FUNC_MBIST_CNTRL &
1989                         PROT_BITS_OFFS) >> 7) << 2;
1990         mask = 1 << ((mmTPC7_CFG_FUNC_MBIST_CNTRL & 0x7F) >> 2);
1991         mask |= 1 << ((mmTPC7_CFG_FUNC_MBIST_PAT & 0x7F) >> 2);
1992         mask |= 1 << ((mmTPC7_CFG_FUNC_MBIST_MEM_0 & 0x7F) >> 2);
1993         mask |= 1 << ((mmTPC7_CFG_FUNC_MBIST_MEM_1 & 0x7F) >> 2);
1994         mask |= 1 << ((mmTPC7_CFG_FUNC_MBIST_MEM_2 & 0x7F) >> 2);
1995         mask |= 1 << ((mmTPC7_CFG_FUNC_MBIST_MEM_3 & 0x7F) >> 2);
1996         mask |= 1 << ((mmTPC7_CFG_FUNC_MBIST_MEM_4 & 0x7F) >> 2);
1997         mask |= 1 << ((mmTPC7_CFG_FUNC_MBIST_MEM_5 & 0x7F) >> 2);
1998         mask |= 1 << ((mmTPC7_CFG_FUNC_MBIST_MEM_6 & 0x7F) >> 2);
1999         mask |= 1 << ((mmTPC7_CFG_FUNC_MBIST_MEM_7 & 0x7F) >> 2);
2000         mask |= 1 << ((mmTPC7_CFG_FUNC_MBIST_MEM_8 & 0x7F) >> 2);
2001         mask |= 1 << ((mmTPC7_CFG_FUNC_MBIST_MEM_9 & 0x7F) >> 2);
2002
2003         WREG32(pb_addr + word_offset, ~mask);
2004
2005         pb_addr = (mmTPC7_QM_GLBL_CFG0 & ~0xFFF) + PROT_BITS_OFFS;
2006         word_offset = ((mmTPC7_QM_GLBL_CFG0 & PROT_BITS_OFFS) >> 7) << 2;
2007         mask = 1 << ((mmTPC7_QM_GLBL_CFG0 & 0x7F) >> 2);
2008         mask |= 1 << ((mmTPC7_QM_GLBL_CFG1 & 0x7F) >> 2);
2009         mask |= 1 << ((mmTPC7_QM_GLBL_PROT & 0x7F) >> 2);
2010         mask |= 1 << ((mmTPC7_QM_GLBL_ERR_CFG & 0x7F) >> 2);
2011         mask |= 1 << ((mmTPC7_QM_GLBL_ERR_ADDR_LO & 0x7F) >> 2);
2012         mask |= 1 << ((mmTPC7_QM_GLBL_ERR_ADDR_HI & 0x7F) >> 2);
2013         mask |= 1 << ((mmTPC7_QM_GLBL_ERR_WDATA & 0x7F) >> 2);
2014         mask |= 1 << ((mmTPC7_QM_GLBL_SECURE_PROPS & 0x7F) >> 2);
2015         mask |= 1 << ((mmTPC7_QM_GLBL_NON_SECURE_PROPS & 0x7F) >> 2);
2016         mask |= 1 << ((mmTPC7_QM_GLBL_STS0 & 0x7F) >> 2);
2017         mask |= 1 << ((mmTPC7_QM_GLBL_STS1 & 0x7F) >> 2);
2018         mask |= 1 << ((mmTPC7_QM_PQ_BASE_LO & 0x7F) >> 2);
2019         mask |= 1 << ((mmTPC7_QM_PQ_BASE_HI & 0x7F) >> 2);
2020         mask |= 1 << ((mmTPC7_QM_PQ_SIZE & 0x7F) >> 2);
2021         mask |= 1 << ((mmTPC7_QM_PQ_PI & 0x7F) >> 2);
2022         mask |= 1 << ((mmTPC7_QM_PQ_CI & 0x7F) >> 2);
2023         mask |= 1 << ((mmTPC7_QM_PQ_CFG0 & 0x7F) >> 2);
2024         mask |= 1 << ((mmTPC7_QM_PQ_CFG1 & 0x7F) >> 2);
2025         mask |= 1 << ((mmTPC7_QM_PQ_ARUSER & 0x7F) >> 2);
2026
2027         WREG32(pb_addr + word_offset, ~mask);
2028
2029         pb_addr = (mmTPC7_QM_PQ_PUSH0 & ~0xFFF) + PROT_BITS_OFFS;
2030         word_offset = ((mmTPC7_QM_PQ_PUSH0 & PROT_BITS_OFFS) >> 7) << 2;
2031         mask = 1 << ((mmTPC7_QM_PQ_PUSH0 & 0x7F) >> 2);
2032         mask |= 1 << ((mmTPC7_QM_PQ_PUSH1 & 0x7F) >> 2);
2033         mask |= 1 << ((mmTPC7_QM_PQ_PUSH2 & 0x7F) >> 2);
2034         mask |= 1 << ((mmTPC7_QM_PQ_PUSH3 & 0x7F) >> 2);
2035         mask |= 1 << ((mmTPC7_QM_PQ_STS0 & 0x7F) >> 2);
2036         mask |= 1 << ((mmTPC7_QM_PQ_STS1 & 0x7F) >> 2);
2037         mask |= 1 << ((mmTPC7_QM_PQ_RD_RATE_LIM_EN & 0x7F) >> 2);
2038         mask |= 1 << ((mmTPC7_QM_PQ_RD_RATE_LIM_RST_TOKEN & 0x7F) >> 2);
2039         mask |= 1 << ((mmTPC7_QM_PQ_RD_RATE_LIM_SAT & 0x7F) >> 2);
2040         mask |= 1 << ((mmTPC7_QM_PQ_RD_RATE_LIM_TOUT & 0x7F) >> 2);
2041         mask |= 1 << ((mmTPC7_QM_CQ_CFG0 & 0x7F) >> 2);
2042         mask |= 1 << ((mmTPC7_QM_CQ_CFG1 & 0x7F) >> 2);
2043         mask |= 1 << ((mmTPC7_QM_CQ_ARUSER & 0x7F) >> 2);
2044         mask |= 1 << ((mmTPC7_QM_CQ_PTR_LO & 0x7F) >> 2);
2045         mask |= 1 << ((mmTPC7_QM_CQ_PTR_HI & 0x7F) >> 2);
2046         mask |= 1 << ((mmTPC7_QM_CQ_TSIZE & 0x7F) >> 2);
2047         mask |= 1 << ((mmTPC7_QM_CQ_CTL & 0x7F) >> 2);
2048         mask |= 1 << ((mmTPC7_QM_CQ_PTR_LO_STS & 0x7F) >> 2);
2049         mask |= 1 << ((mmTPC7_QM_CQ_PTR_HI_STS & 0x7F) >> 2);
2050         mask |= 1 << ((mmTPC7_QM_CQ_TSIZE_STS & 0x7F) >> 2);
2051         mask |= 1 << ((mmTPC7_QM_CQ_CTL_STS & 0x7F) >> 2);
2052         mask |= 1 << ((mmTPC7_QM_CQ_STS0 & 0x7F) >> 2);
2053         mask |= 1 << ((mmTPC7_QM_CQ_STS1 & 0x7F) >> 2);
2054         mask |= 1 << ((mmTPC7_QM_CQ_RD_RATE_LIM_EN & 0x7F) >> 2);
2055         mask |= 1 << ((mmTPC7_QM_CQ_RD_RATE_LIM_RST_TOKEN & 0x7F) >> 2);
2056         mask |= 1 << ((mmTPC7_QM_CQ_RD_RATE_LIM_SAT & 0x7F) >> 2);
2057         mask |= 1 << ((mmTPC7_QM_CQ_RD_RATE_LIM_TOUT & 0x7F) >> 2);
2058
2059         WREG32(pb_addr + word_offset, ~mask);
2060
2061         pb_addr = (mmTPC7_QM_CQ_IFIFO_CNT & ~0xFFF) + PROT_BITS_OFFS;
2062         word_offset = ((mmTPC7_QM_CQ_IFIFO_CNT & PROT_BITS_OFFS) >> 7) << 2;
2063         mask = 1 << ((mmTPC7_QM_CQ_IFIFO_CNT & 0x7F) >> 2);
2064         mask |= 1 << ((mmTPC7_QM_CP_MSG_BASE0_ADDR_LO & 0x7F) >> 2);
2065         mask |= 1 << ((mmTPC7_QM_CP_MSG_BASE0_ADDR_HI & 0x7F) >> 2);
2066         mask |= 1 << ((mmTPC7_QM_CP_MSG_BASE1_ADDR_LO & 0x7F) >> 2);
2067         mask |= 1 << ((mmTPC7_QM_CP_MSG_BASE1_ADDR_HI & 0x7F) >> 2);
2068         mask |= 1 << ((mmTPC7_QM_CP_MSG_BASE2_ADDR_LO & 0x7F) >> 2);
2069         mask |= 1 << ((mmTPC7_QM_CP_MSG_BASE2_ADDR_HI & 0x7F) >> 2);
2070         mask |= 1 << ((mmTPC7_QM_CP_MSG_BASE3_ADDR_LO & 0x7F) >> 2);
2071         mask |= 1 << ((mmTPC7_QM_CP_MSG_BASE3_ADDR_HI & 0x7F) >> 2);
2072         mask |= 1 << ((mmTPC7_QM_CP_LDMA_TSIZE_OFFSET & 0x7F) >> 2);
2073         mask |= 1 << ((mmTPC7_QM_CP_LDMA_SRC_BASE_LO_OFFSET & 0x7F) >> 2);
2074         mask |= 1 << ((mmTPC7_QM_CP_LDMA_SRC_BASE_HI_OFFSET & 0x7F) >> 2);
2075         mask |= 1 << ((mmTPC7_QM_CP_LDMA_DST_BASE_LO_OFFSET & 0x7F) >> 2);
2076         mask |= 1 << ((mmTPC7_QM_CP_LDMA_DST_BASE_HI_OFFSET & 0x7F) >> 2);
2077         mask |= 1 << ((mmTPC7_QM_CP_LDMA_COMMIT_OFFSET & 0x7F) >> 2);
2078
2079         WREG32(pb_addr + word_offset, ~mask);
2080
2081         pb_addr = (mmTPC7_CMDQ_GLBL_CFG0 & ~0xFFF) + PROT_BITS_OFFS;
2082         word_offset = ((mmTPC7_CMDQ_GLBL_CFG0 & PROT_BITS_OFFS) >> 7) << 2;
2083         mask = 1 << ((mmTPC7_CMDQ_GLBL_CFG0 & 0x7F) >> 2);
2084         mask |= 1 << ((mmTPC7_CMDQ_GLBL_CFG1 & 0x7F) >> 2);
2085         mask |= 1 << ((mmTPC7_CMDQ_GLBL_PROT & 0x7F) >> 2);
2086         mask |= 1 << ((mmTPC7_CMDQ_GLBL_ERR_CFG & 0x7F) >> 2);
2087         mask |= 1 << ((mmTPC7_CMDQ_GLBL_ERR_ADDR_LO & 0x7F) >> 2);
2088         mask |= 1 << ((mmTPC7_CMDQ_GLBL_ERR_ADDR_HI & 0x7F) >> 2);
2089         mask |= 1 << ((mmTPC7_CMDQ_GLBL_ERR_WDATA & 0x7F) >> 2);
2090         mask |= 1 << ((mmTPC7_CMDQ_GLBL_SECURE_PROPS & 0x7F) >> 2);
2091         mask |= 1 << ((mmTPC7_CMDQ_GLBL_NON_SECURE_PROPS & 0x7F) >> 2);
2092         mask |= 1 << ((mmTPC7_CMDQ_GLBL_STS0 & 0x7F) >> 2);
2093         mask |= 1 << ((mmTPC7_CMDQ_GLBL_STS1 & 0x7F) >> 2);
2094
2095         WREG32(pb_addr + word_offset, ~mask);
2096
2097         pb_addr = (mmTPC7_CMDQ_CQ_CFG0 & ~0xFFF) + PROT_BITS_OFFS;
2098         word_offset = ((mmTPC7_CMDQ_CQ_CFG0 & PROT_BITS_OFFS) >> 7) << 2;
2099         mask = 1 << ((mmTPC7_CMDQ_CQ_CFG0 & 0x7F) >> 2);
2100         mask |= 1 << ((mmTPC7_CMDQ_CQ_CFG1 & 0x7F) >> 2);
2101         mask |= 1 << ((mmTPC7_CMDQ_CQ_ARUSER & 0x7F) >> 2);
2102         mask |= 1 << ((mmTPC7_CMDQ_CQ_PTR_LO_STS & 0x7F) >> 2);
2103         mask |= 1 << ((mmTPC7_CMDQ_CQ_PTR_HI_STS & 0x7F) >> 2);
2104         mask |= 1 << ((mmTPC7_CMDQ_CQ_TSIZE_STS & 0x7F) >> 2);
2105         mask |= 1 << ((mmTPC7_CMDQ_CQ_CTL_STS & 0x7F) >> 2);
2106         mask |= 1 << ((mmTPC7_CMDQ_CQ_STS0 & 0x7F) >> 2);
2107         mask |= 1 << ((mmTPC7_CMDQ_CQ_STS1 & 0x7F) >> 2);
2108         mask |= 1 << ((mmTPC7_CMDQ_CQ_RD_RATE_LIM_EN & 0x7F) >> 2);
2109         mask |= 1 << ((mmTPC7_CMDQ_CQ_RD_RATE_LIM_RST_TOKEN & 0x7F) >> 2);
2110         mask |= 1 << ((mmTPC7_CMDQ_CQ_RD_RATE_LIM_SAT & 0x7F) >> 2);
2111         mask |= 1 << ((mmTPC7_CMDQ_CQ_RD_RATE_LIM_TOUT & 0x7F) >> 2);
2112
2113         WREG32(pb_addr + word_offset, ~mask);
2114
2115         pb_addr = (mmTPC7_CMDQ_CQ_IFIFO_CNT & ~0xFFF) + PROT_BITS_OFFS;
2116         word_offset = ((mmTPC7_CMDQ_CQ_IFIFO_CNT & PROT_BITS_OFFS) >> 7) << 2;
2117         mask = 1 << ((mmTPC7_CMDQ_CQ_IFIFO_CNT & 0x7F) >> 2);
2118         mask |= 1 << ((mmTPC7_CMDQ_CP_MSG_BASE0_ADDR_LO & 0x7F) >> 2);
2119         mask |= 1 << ((mmTPC7_CMDQ_CP_MSG_BASE0_ADDR_HI & 0x7F) >> 2);
2120         mask |= 1 << ((mmTPC7_CMDQ_CP_MSG_BASE1_ADDR_LO & 0x7F) >> 2);
2121         mask |= 1 << ((mmTPC7_CMDQ_CP_MSG_BASE1_ADDR_HI & 0x7F) >> 2);
2122         mask |= 1 << ((mmTPC7_CMDQ_CP_MSG_BASE2_ADDR_LO & 0x7F) >> 2);
2123         mask |= 1 << ((mmTPC7_CMDQ_CP_MSG_BASE2_ADDR_HI & 0x7F) >> 2);
2124         mask |= 1 << ((mmTPC7_CMDQ_CP_MSG_BASE3_ADDR_LO & 0x7F) >> 2);
2125         mask |= 1 << ((mmTPC7_CMDQ_CP_MSG_BASE3_ADDR_HI & 0x7F) >> 2);
2126         mask |= 1 << ((mmTPC7_CMDQ_CP_LDMA_TSIZE_OFFSET & 0x7F) >> 2);
2127         mask |= 1 << ((mmTPC7_CMDQ_CP_LDMA_SRC_BASE_LO_OFFSET & 0x7F) >> 2);
2128         mask |= 1 << ((mmTPC7_CMDQ_CP_LDMA_SRC_BASE_HI_OFFSET & 0x7F) >> 2);
2129         mask |= 1 << ((mmTPC7_CMDQ_CP_LDMA_DST_BASE_LO_OFFSET & 0x7F) >> 2);
2130         mask |= 1 << ((mmTPC7_CMDQ_CP_LDMA_DST_BASE_HI_OFFSET & 0x7F) >> 2);
2131         mask |= 1 << ((mmTPC7_CMDQ_CP_LDMA_COMMIT_OFFSET & 0x7F) >> 2);
2132         mask |= 1 << ((mmTPC7_CMDQ_CP_STS & 0x7F) >> 2);
2133         mask |= 1 << ((mmTPC7_CMDQ_CP_CURRENT_INST_LO & 0x7F) >> 2);
2134
2135         WREG32(pb_addr + word_offset, ~mask);
2136
2137         pb_addr = (mmTPC7_CMDQ_CP_CURRENT_INST_HI & ~0xFFF) + PROT_BITS_OFFS;
2138         word_offset = ((mmTPC7_CMDQ_CP_CURRENT_INST_HI & PROT_BITS_OFFS) >> 7)
2139                         << 2;
2140         mask = 1 << ((mmTPC7_CMDQ_CP_CURRENT_INST_HI & 0x7F) >> 2);
2141         mask |= 1 << ((mmTPC7_CMDQ_CP_BARRIER_CFG & 0x7F) >> 2);
2142         mask |= 1 << ((mmTPC7_CMDQ_CP_DBG_0 & 0x7F) >> 2);
2143         mask |= 1 << ((mmTPC7_CMDQ_CQ_BUF_ADDR & 0x7F) >> 2);
2144         mask |= 1 << ((mmTPC7_CMDQ_CQ_BUF_RDATA & 0x7F) >> 2);
2145
2146         WREG32(pb_addr + word_offset, ~mask);
2147 }
2148
2149 /*
2150  * goya_init_protection_bits - Initialize protection bits for specific registers
2151  *
2152  * @hdev: pointer to hl_device structure
2153  *
2154  * All protection bits are 1 by default, means not protected. Need to set to 0
2155  * each bit that belongs to a protected register.
2156  *
2157  */
2158 static void goya_init_protection_bits(struct hl_device *hdev)
2159 {
2160         /*
2161          * In each 4K block of registers, the last 128 bytes are protection
2162          * bits - total of 1024 bits, one for each register. Each bit is related
2163          * to a specific register, by the order of the registers.
2164          * So in order to calculate the bit that is related to a given register,
2165          * we need to calculate its word offset and then the exact bit inside
2166          * the word (which is 4 bytes).
2167          *
2168          * Register address:
2169          *
2170          * 31                 12 11           7   6             2  1      0
2171          * -----------------------------------------------------------------
2172          * |      Don't         |    word       |  bit location  |    0    |
2173          * |      care          |   offset      |  inside word   |         |
2174          * -----------------------------------------------------------------
2175          *
2176          * Bits 7-11 represents the word offset inside the 128 bytes.
2177          * Bits 2-6 represents the bit location inside the word.
2178          */
2179         u32 pb_addr, mask;
2180         u8 word_offset;
2181
2182         goya_pb_set_block(hdev, mmPCI_NRTR_BASE);
2183         goya_pb_set_block(hdev, mmPCI_RD_REGULATOR_BASE);
2184         goya_pb_set_block(hdev, mmPCI_WR_REGULATOR_BASE);
2185
2186         goya_pb_set_block(hdev, mmSRAM_Y0_X0_BANK_BASE);
2187         goya_pb_set_block(hdev, mmSRAM_Y0_X0_RTR_BASE);
2188         goya_pb_set_block(hdev, mmSRAM_Y0_X1_BANK_BASE);
2189         goya_pb_set_block(hdev, mmSRAM_Y0_X1_RTR_BASE);
2190         goya_pb_set_block(hdev, mmSRAM_Y0_X2_BANK_BASE);
2191         goya_pb_set_block(hdev, mmSRAM_Y0_X2_RTR_BASE);
2192         goya_pb_set_block(hdev, mmSRAM_Y0_X3_BANK_BASE);
2193         goya_pb_set_block(hdev, mmSRAM_Y0_X3_RTR_BASE);
2194         goya_pb_set_block(hdev, mmSRAM_Y0_X4_BANK_BASE);
2195         goya_pb_set_block(hdev, mmSRAM_Y0_X4_RTR_BASE);
2196
2197         goya_pb_set_block(hdev, mmSRAM_Y1_X0_BANK_BASE);
2198         goya_pb_set_block(hdev, mmSRAM_Y1_X0_RTR_BASE);
2199         goya_pb_set_block(hdev, mmSRAM_Y1_X1_BANK_BASE);
2200         goya_pb_set_block(hdev, mmSRAM_Y1_X1_RTR_BASE);
2201         goya_pb_set_block(hdev, mmSRAM_Y1_X2_BANK_BASE);
2202         goya_pb_set_block(hdev, mmSRAM_Y1_X2_RTR_BASE);
2203         goya_pb_set_block(hdev, mmSRAM_Y1_X3_BANK_BASE);
2204         goya_pb_set_block(hdev, mmSRAM_Y1_X3_RTR_BASE);
2205         goya_pb_set_block(hdev, mmSRAM_Y1_X4_BANK_BASE);
2206         goya_pb_set_block(hdev, mmSRAM_Y1_X4_RTR_BASE);
2207
2208         goya_pb_set_block(hdev, mmSRAM_Y2_X0_BANK_BASE);
2209         goya_pb_set_block(hdev, mmSRAM_Y2_X0_RTR_BASE);
2210         goya_pb_set_block(hdev, mmSRAM_Y2_X1_BANK_BASE);
2211         goya_pb_set_block(hdev, mmSRAM_Y2_X1_RTR_BASE);
2212         goya_pb_set_block(hdev, mmSRAM_Y2_X2_BANK_BASE);
2213         goya_pb_set_block(hdev, mmSRAM_Y2_X2_RTR_BASE);
2214         goya_pb_set_block(hdev, mmSRAM_Y2_X3_BANK_BASE);
2215         goya_pb_set_block(hdev, mmSRAM_Y2_X3_RTR_BASE);
2216         goya_pb_set_block(hdev, mmSRAM_Y2_X4_BANK_BASE);
2217         goya_pb_set_block(hdev, mmSRAM_Y2_X4_RTR_BASE);
2218
2219         goya_pb_set_block(hdev, mmSRAM_Y3_X0_BANK_BASE);
2220         goya_pb_set_block(hdev, mmSRAM_Y3_X0_RTR_BASE);
2221         goya_pb_set_block(hdev, mmSRAM_Y3_X1_BANK_BASE);
2222         goya_pb_set_block(hdev, mmSRAM_Y3_X1_RTR_BASE);
2223         goya_pb_set_block(hdev, mmSRAM_Y3_X2_BANK_BASE);
2224         goya_pb_set_block(hdev, mmSRAM_Y3_X2_RTR_BASE);
2225         goya_pb_set_block(hdev, mmSRAM_Y3_X3_BANK_BASE);
2226         goya_pb_set_block(hdev, mmSRAM_Y3_X3_RTR_BASE);
2227         goya_pb_set_block(hdev, mmSRAM_Y3_X4_BANK_BASE);
2228         goya_pb_set_block(hdev, mmSRAM_Y3_X4_RTR_BASE);
2229
2230         goya_pb_set_block(hdev, mmSRAM_Y4_X0_BANK_BASE);
2231         goya_pb_set_block(hdev, mmSRAM_Y4_X0_RTR_BASE);
2232         goya_pb_set_block(hdev, mmSRAM_Y4_X1_BANK_BASE);
2233         goya_pb_set_block(hdev, mmSRAM_Y4_X1_RTR_BASE);
2234         goya_pb_set_block(hdev, mmSRAM_Y4_X2_BANK_BASE);
2235         goya_pb_set_block(hdev, mmSRAM_Y4_X2_RTR_BASE);
2236         goya_pb_set_block(hdev, mmSRAM_Y4_X3_BANK_BASE);
2237         goya_pb_set_block(hdev, mmSRAM_Y4_X3_RTR_BASE);
2238         goya_pb_set_block(hdev, mmSRAM_Y4_X4_BANK_BASE);
2239         goya_pb_set_block(hdev, mmSRAM_Y4_X4_RTR_BASE);
2240
2241         goya_pb_set_block(hdev, mmSRAM_Y5_X0_BANK_BASE);
2242         goya_pb_set_block(hdev, mmSRAM_Y5_X0_RTR_BASE);
2243         goya_pb_set_block(hdev, mmSRAM_Y5_X1_BANK_BASE);
2244         goya_pb_set_block(hdev, mmSRAM_Y5_X1_RTR_BASE);
2245         goya_pb_set_block(hdev, mmSRAM_Y5_X2_BANK_BASE);
2246         goya_pb_set_block(hdev, mmSRAM_Y5_X2_RTR_BASE);
2247         goya_pb_set_block(hdev, mmSRAM_Y5_X3_BANK_BASE);
2248         goya_pb_set_block(hdev, mmSRAM_Y5_X3_RTR_BASE);
2249         goya_pb_set_block(hdev, mmSRAM_Y5_X4_BANK_BASE);
2250         goya_pb_set_block(hdev, mmSRAM_Y5_X4_RTR_BASE);
2251
2252         goya_pb_set_block(hdev, mmPCIE_WRAP_BASE);
2253         goya_pb_set_block(hdev, mmPCIE_CORE_BASE);
2254         goya_pb_set_block(hdev, mmPCIE_DB_CFG_BASE);
2255         goya_pb_set_block(hdev, mmPCIE_DB_CMD_BASE);
2256         goya_pb_set_block(hdev, mmPCIE_AUX_BASE);
2257         goya_pb_set_block(hdev, mmPCIE_DB_RSV_BASE);
2258         goya_pb_set_block(hdev, mmPCIE_PHY_BASE);
2259         goya_pb_set_block(hdev, mmTPC0_NRTR_BASE);
2260         goya_pb_set_block(hdev, mmTPC_PLL_BASE);
2261
2262         pb_addr = (mmTPC_PLL_CLK_RLX_0 & ~0xFFF) + PROT_BITS_OFFS;
2263         word_offset = ((mmTPC_PLL_CLK_RLX_0 & PROT_BITS_OFFS) >> 7) << 2;
2264         mask = 1 << ((mmTPC_PLL_CLK_RLX_0 & 0x7C) >> 2);
2265
2266         WREG32(pb_addr + word_offset, mask);
2267
2268         goya_init_mme_protection_bits(hdev);
2269
2270         goya_init_dma_protection_bits(hdev);
2271
2272         goya_init_tpc_protection_bits(hdev);
2273 }
2274
2275 /*
2276  * goya_init_security - Initialize security model
2277  *
2278  * @hdev: pointer to hl_device structure
2279  *
2280  * Initialize the security model of the device
2281  * That includes range registers and protection bit per register
2282  *
2283  */
2284 void goya_init_security(struct hl_device *hdev)
2285 {
2286         struct goya_device *goya = hdev->asic_specific;
2287
2288         u32 dram_addr_lo = lower_32_bits(DRAM_PHYS_BASE);
2289         u32 dram_addr_hi = upper_32_bits(DRAM_PHYS_BASE);
2290
2291         u32 lbw_rng0_base = 0xFC440000 & DMA_MACRO_LBW_RANGE_BASE_R_MASK;
2292         u32 lbw_rng0_mask = 0xFFFF0000 & DMA_MACRO_LBW_RANGE_BASE_R_MASK;
2293
2294         u32 lbw_rng1_base = 0xFC480000 & DMA_MACRO_LBW_RANGE_BASE_R_MASK;
2295         u32 lbw_rng1_mask = 0xFFF80000 & DMA_MACRO_LBW_RANGE_BASE_R_MASK;
2296
2297         u32 lbw_rng2_base = 0xFC600000 & DMA_MACRO_LBW_RANGE_BASE_R_MASK;
2298         u32 lbw_rng2_mask = 0xFFE00000 & DMA_MACRO_LBW_RANGE_BASE_R_MASK;
2299
2300         u32 lbw_rng3_base = 0xFC800000 & DMA_MACRO_LBW_RANGE_BASE_R_MASK;
2301         u32 lbw_rng3_mask = 0xFFF00000 & DMA_MACRO_LBW_RANGE_BASE_R_MASK;
2302
2303         u32 lbw_rng4_base = 0xFCC02000 & DMA_MACRO_LBW_RANGE_BASE_R_MASK;
2304         u32 lbw_rng4_mask = 0xFFFFF000 & DMA_MACRO_LBW_RANGE_BASE_R_MASK;
2305
2306         u32 lbw_rng5_base = 0xFCC40000 & DMA_MACRO_LBW_RANGE_BASE_R_MASK;
2307         u32 lbw_rng5_mask = 0xFFFF8000 & DMA_MACRO_LBW_RANGE_BASE_R_MASK;
2308
2309         u32 lbw_rng6_base = 0xFCC48000 & DMA_MACRO_LBW_RANGE_BASE_R_MASK;
2310         u32 lbw_rng6_mask = 0xFFFFF000 & DMA_MACRO_LBW_RANGE_BASE_R_MASK;
2311
2312         u32 lbw_rng7_base = 0xFCC4A000 & DMA_MACRO_LBW_RANGE_BASE_R_MASK;
2313         u32 lbw_rng7_mask = 0xFFFFE000 & DMA_MACRO_LBW_RANGE_BASE_R_MASK;
2314
2315         u32 lbw_rng8_base = 0xFCC4C000 & DMA_MACRO_LBW_RANGE_BASE_R_MASK;
2316         u32 lbw_rng8_mask = 0xFFFFC000 & DMA_MACRO_LBW_RANGE_BASE_R_MASK;
2317
2318         u32 lbw_rng9_base = 0xFCC50000 & DMA_MACRO_LBW_RANGE_BASE_R_MASK;
2319         u32 lbw_rng9_mask = 0xFFFF0000 & DMA_MACRO_LBW_RANGE_BASE_R_MASK;
2320
2321         u32 lbw_rng10_base = 0xFCC60000 & DMA_MACRO_LBW_RANGE_BASE_R_MASK;
2322         u32 lbw_rng10_mask = 0xFFFE0000 & DMA_MACRO_LBW_RANGE_BASE_R_MASK;
2323
2324         u32 lbw_rng11_base = 0xFCE02000 & DMA_MACRO_LBW_RANGE_BASE_R_MASK;
2325         u32 lbw_rng11_mask = 0xFFFFE000 & DMA_MACRO_LBW_RANGE_BASE_R_MASK;
2326
2327         u32 lbw_rng12_base = 0xFE484000 & DMA_MACRO_LBW_RANGE_BASE_R_MASK;
2328         u32 lbw_rng12_mask = 0xFFFFF000 & DMA_MACRO_LBW_RANGE_BASE_R_MASK;
2329
2330         u32 lbw_rng13_base = 0xFEC43000 & DMA_MACRO_LBW_RANGE_BASE_R_MASK;
2331         u32 lbw_rng13_mask = 0xFFFFF000 & DMA_MACRO_LBW_RANGE_BASE_R_MASK;
2332
2333         WREG32(mmDMA_MACRO_LBW_RANGE_HIT_BLOCK, 0xFFFF);
2334         WREG32(mmDMA_MACRO_HBW_RANGE_HIT_BLOCK, 0xFF);
2335
2336         if (!(goya->hw_cap_initialized & HW_CAP_MMU)) {
2337                 WREG32(mmDMA_MACRO_HBW_RANGE_HIT_BLOCK, 0xFE);
2338
2339                 /* Protect HOST */
2340                 WREG32(mmDMA_MACRO_HBW_RANGE_BASE_31_0_0, 0);
2341                 WREG32(mmDMA_MACRO_HBW_RANGE_BASE_49_32_0, 0);
2342                 WREG32(mmDMA_MACRO_HBW_RANGE_MASK_31_0_0, 0);
2343                 WREG32(mmDMA_MACRO_HBW_RANGE_MASK_49_32_0, 0xFFF80);
2344         }
2345
2346         /*
2347          * Protect DDR @
2348          * DRAM_VIRT_BASE : DRAM_VIRT_BASE + DRAM_VIRT_END
2349          * The mask protects the first 512MB
2350          */
2351         WREG32(mmDMA_MACRO_HBW_RANGE_BASE_31_0_1, dram_addr_lo);
2352         WREG32(mmDMA_MACRO_HBW_RANGE_BASE_49_32_1, dram_addr_hi);
2353         WREG32(mmDMA_MACRO_HBW_RANGE_MASK_31_0_1, 0xE0000000);
2354         WREG32(mmDMA_MACRO_HBW_RANGE_MASK_49_32_1, 0x3FFFF);
2355
2356         /* Protect registers */
2357
2358         WREG32(mmDMA_MACRO_LBW_RANGE_BASE_0, lbw_rng0_base);
2359         WREG32(mmDMA_MACRO_LBW_RANGE_MASK_0, lbw_rng0_mask);
2360         WREG32(mmDMA_MACRO_LBW_RANGE_BASE_1, lbw_rng1_base);
2361         WREG32(mmDMA_MACRO_LBW_RANGE_MASK_1, lbw_rng1_mask);
2362         WREG32(mmDMA_MACRO_LBW_RANGE_BASE_2, lbw_rng2_base);
2363         WREG32(mmDMA_MACRO_LBW_RANGE_MASK_2, lbw_rng2_mask);
2364         WREG32(mmDMA_MACRO_LBW_RANGE_BASE_3, lbw_rng3_base);
2365         WREG32(mmDMA_MACRO_LBW_RANGE_MASK_3, lbw_rng3_mask);
2366         WREG32(mmDMA_MACRO_LBW_RANGE_BASE_4, lbw_rng4_base);
2367         WREG32(mmDMA_MACRO_LBW_RANGE_MASK_4, lbw_rng4_mask);
2368         WREG32(mmDMA_MACRO_LBW_RANGE_BASE_5, lbw_rng5_base);
2369         WREG32(mmDMA_MACRO_LBW_RANGE_MASK_5, lbw_rng5_mask);
2370         WREG32(mmDMA_MACRO_LBW_RANGE_BASE_6, lbw_rng6_base);
2371         WREG32(mmDMA_MACRO_LBW_RANGE_MASK_6, lbw_rng6_mask);
2372         WREG32(mmDMA_MACRO_LBW_RANGE_BASE_7, lbw_rng7_base);
2373         WREG32(mmDMA_MACRO_LBW_RANGE_MASK_7, lbw_rng7_mask);
2374         WREG32(mmDMA_MACRO_LBW_RANGE_BASE_8, lbw_rng8_base);
2375         WREG32(mmDMA_MACRO_LBW_RANGE_MASK_8, lbw_rng8_mask);
2376         WREG32(mmDMA_MACRO_LBW_RANGE_BASE_9, lbw_rng9_base);
2377         WREG32(mmDMA_MACRO_LBW_RANGE_MASK_9, lbw_rng9_mask);
2378         WREG32(mmDMA_MACRO_LBW_RANGE_BASE_10, lbw_rng10_base);
2379         WREG32(mmDMA_MACRO_LBW_RANGE_MASK_10, lbw_rng10_mask);
2380         WREG32(mmDMA_MACRO_LBW_RANGE_BASE_11, lbw_rng11_base);
2381         WREG32(mmDMA_MACRO_LBW_RANGE_MASK_11, lbw_rng11_mask);
2382         WREG32(mmDMA_MACRO_LBW_RANGE_BASE_12, lbw_rng12_base);
2383         WREG32(mmDMA_MACRO_LBW_RANGE_MASK_12, lbw_rng12_mask);
2384         WREG32(mmDMA_MACRO_LBW_RANGE_BASE_13, lbw_rng13_base);
2385         WREG32(mmDMA_MACRO_LBW_RANGE_MASK_13, lbw_rng13_mask);
2386
2387         WREG32(mmMME1_RTR_LBW_RANGE_HIT, 0xFFFF);
2388         WREG32(mmMME2_RTR_LBW_RANGE_HIT, 0xFFFF);
2389         WREG32(mmMME3_RTR_LBW_RANGE_HIT, 0xFFFF);
2390         WREG32(mmMME4_RTR_LBW_RANGE_HIT, 0xFFFF);
2391         WREG32(mmMME5_RTR_LBW_RANGE_HIT, 0xFFFF);
2392         WREG32(mmMME6_RTR_LBW_RANGE_HIT, 0xFFFF);
2393
2394         WREG32(mmMME1_RTR_HBW_RANGE_HIT, 0xFE);
2395         WREG32(mmMME2_RTR_HBW_RANGE_HIT, 0xFE);
2396         WREG32(mmMME3_RTR_HBW_RANGE_HIT, 0xFE);
2397         WREG32(mmMME4_RTR_HBW_RANGE_HIT, 0xFE);
2398         WREG32(mmMME5_RTR_HBW_RANGE_HIT, 0xFE);
2399         WREG32(mmMME6_RTR_HBW_RANGE_HIT, 0xFE);
2400
2401         /* Protect HOST */
2402         WREG32(mmMME1_RTR_HBW_RANGE_BASE_L_0, 0);
2403         WREG32(mmMME1_RTR_HBW_RANGE_BASE_H_0, 0);
2404         WREG32(mmMME1_RTR_HBW_RANGE_MASK_L_0, 0);
2405         WREG32(mmMME1_RTR_HBW_RANGE_MASK_H_0, 0xFFF80);
2406
2407         WREG32(mmMME2_RTR_HBW_RANGE_BASE_L_0, 0);
2408         WREG32(mmMME2_RTR_HBW_RANGE_BASE_H_0, 0);
2409         WREG32(mmMME2_RTR_HBW_RANGE_MASK_L_0, 0);
2410         WREG32(mmMME2_RTR_HBW_RANGE_MASK_H_0, 0xFFF80);
2411
2412         WREG32(mmMME3_RTR_HBW_RANGE_BASE_L_0, 0);
2413         WREG32(mmMME3_RTR_HBW_RANGE_BASE_H_0, 0);
2414         WREG32(mmMME3_RTR_HBW_RANGE_MASK_L_0, 0);
2415         WREG32(mmMME3_RTR_HBW_RANGE_MASK_H_0, 0xFFF80);
2416
2417         WREG32(mmMME4_RTR_HBW_RANGE_BASE_L_0, 0);
2418         WREG32(mmMME4_RTR_HBW_RANGE_BASE_H_0, 0);
2419         WREG32(mmMME4_RTR_HBW_RANGE_MASK_L_0, 0);
2420         WREG32(mmMME4_RTR_HBW_RANGE_MASK_H_0, 0xFFF80);
2421
2422         WREG32(mmMME5_RTR_HBW_RANGE_BASE_L_0, 0);
2423         WREG32(mmMME5_RTR_HBW_RANGE_BASE_H_0, 0);
2424         WREG32(mmMME5_RTR_HBW_RANGE_MASK_L_0, 0);
2425         WREG32(mmMME5_RTR_HBW_RANGE_MASK_H_0, 0xFFF80);
2426
2427         WREG32(mmMME6_RTR_HBW_RANGE_BASE_L_0, 0);
2428         WREG32(mmMME6_RTR_HBW_RANGE_BASE_H_0, 0);
2429         WREG32(mmMME6_RTR_HBW_RANGE_MASK_L_0, 0);
2430         WREG32(mmMME6_RTR_HBW_RANGE_MASK_H_0, 0xFFF80);
2431
2432         /*
2433          * Protect DDR @
2434          * DRAM_VIRT_BASE : DRAM_VIRT_BASE + DRAM_VIRT_END
2435          * The mask protects the first 512MB
2436          */
2437         WREG32(mmMME1_RTR_HBW_RANGE_BASE_L_1, dram_addr_lo);
2438         WREG32(mmMME1_RTR_HBW_RANGE_BASE_H_1, dram_addr_hi);
2439         WREG32(mmMME1_RTR_HBW_RANGE_MASK_L_1, 0xE0000000);
2440         WREG32(mmMME1_RTR_HBW_RANGE_MASK_H_1, 0x3FFFF);
2441
2442         WREG32(mmMME2_RTR_HBW_RANGE_BASE_L_1, dram_addr_lo);
2443         WREG32(mmMME2_RTR_HBW_RANGE_BASE_H_1, dram_addr_hi);
2444         WREG32(mmMME2_RTR_HBW_RANGE_MASK_L_1, 0xE0000000);
2445         WREG32(mmMME2_RTR_HBW_RANGE_MASK_H_1, 0x3FFFF);
2446
2447         WREG32(mmMME3_RTR_HBW_RANGE_BASE_L_1, dram_addr_lo);
2448         WREG32(mmMME3_RTR_HBW_RANGE_BASE_H_1, dram_addr_hi);
2449         WREG32(mmMME3_RTR_HBW_RANGE_MASK_L_1, 0xE0000000);
2450         WREG32(mmMME3_RTR_HBW_RANGE_MASK_H_1, 0x3FFFF);
2451
2452         WREG32(mmMME4_RTR_HBW_RANGE_BASE_L_1, dram_addr_lo);
2453         WREG32(mmMME4_RTR_HBW_RANGE_BASE_H_1, dram_addr_hi);
2454         WREG32(mmMME4_RTR_HBW_RANGE_MASK_L_1, 0xE0000000);
2455         WREG32(mmMME4_RTR_HBW_RANGE_MASK_H_1, 0x3FFFF);
2456
2457         WREG32(mmMME5_RTR_HBW_RANGE_BASE_L_1, dram_addr_lo);
2458         WREG32(mmMME5_RTR_HBW_RANGE_BASE_H_1, dram_addr_hi);
2459         WREG32(mmMME5_RTR_HBW_RANGE_MASK_L_1, 0xE0000000);
2460         WREG32(mmMME5_RTR_HBW_RANGE_MASK_H_1, 0x3FFFF);
2461
2462         WREG32(mmMME6_RTR_HBW_RANGE_BASE_L_1, dram_addr_lo);
2463         WREG32(mmMME6_RTR_HBW_RANGE_BASE_H_1, dram_addr_hi);
2464         WREG32(mmMME6_RTR_HBW_RANGE_MASK_L_1, 0xE0000000);
2465         WREG32(mmMME6_RTR_HBW_RANGE_MASK_H_1, 0x3FFFF);
2466
2467         WREG32(mmMME1_RTR_LBW_RANGE_BASE_0, lbw_rng0_base);
2468         WREG32(mmMME1_RTR_LBW_RANGE_MASK_0, lbw_rng0_mask);
2469         WREG32(mmMME1_RTR_LBW_RANGE_BASE_1, lbw_rng1_base);
2470         WREG32(mmMME1_RTR_LBW_RANGE_MASK_1, lbw_rng1_mask);
2471         WREG32(mmMME1_RTR_LBW_RANGE_BASE_2, lbw_rng2_base);
2472         WREG32(mmMME1_RTR_LBW_RANGE_MASK_2, lbw_rng2_mask);
2473         WREG32(mmMME1_RTR_LBW_RANGE_BASE_3, lbw_rng3_base);
2474         WREG32(mmMME1_RTR_LBW_RANGE_MASK_3, lbw_rng3_mask);
2475         WREG32(mmMME1_RTR_LBW_RANGE_BASE_4, lbw_rng4_base);
2476         WREG32(mmMME1_RTR_LBW_RANGE_MASK_4, lbw_rng4_mask);
2477         WREG32(mmMME1_RTR_LBW_RANGE_BASE_5, lbw_rng5_base);
2478         WREG32(mmMME1_RTR_LBW_RANGE_MASK_5, lbw_rng5_mask);
2479         WREG32(mmMME1_RTR_LBW_RANGE_BASE_6, lbw_rng6_base);
2480         WREG32(mmMME1_RTR_LBW_RANGE_MASK_6, lbw_rng6_mask);
2481         WREG32(mmMME1_RTR_LBW_RANGE_BASE_7, lbw_rng7_base);
2482         WREG32(mmMME1_RTR_LBW_RANGE_MASK_7, lbw_rng7_mask);
2483         WREG32(mmMME1_RTR_LBW_RANGE_BASE_8, lbw_rng8_base);
2484         WREG32(mmMME1_RTR_LBW_RANGE_MASK_8, lbw_rng8_mask);
2485         WREG32(mmMME1_RTR_LBW_RANGE_BASE_9, lbw_rng9_base);
2486         WREG32(mmMME1_RTR_LBW_RANGE_MASK_9, lbw_rng9_mask);
2487         WREG32(mmMME1_RTR_LBW_RANGE_BASE_10, lbw_rng10_base);
2488         WREG32(mmMME1_RTR_LBW_RANGE_MASK_10, lbw_rng10_mask);
2489         WREG32(mmMME1_RTR_LBW_RANGE_BASE_11, lbw_rng11_base);
2490         WREG32(mmMME1_RTR_LBW_RANGE_MASK_11, lbw_rng11_mask);
2491         WREG32(mmMME1_RTR_LBW_RANGE_BASE_12, lbw_rng12_base);
2492         WREG32(mmMME1_RTR_LBW_RANGE_MASK_12, lbw_rng12_mask);
2493         WREG32(mmMME1_RTR_LBW_RANGE_BASE_13, lbw_rng13_base);
2494         WREG32(mmMME1_RTR_LBW_RANGE_MASK_13, lbw_rng13_mask);
2495
2496         WREG32(mmMME2_RTR_LBW_RANGE_BASE_0, lbw_rng0_base);
2497         WREG32(mmMME2_RTR_LBW_RANGE_MASK_0, lbw_rng0_mask);
2498         WREG32(mmMME2_RTR_LBW_RANGE_BASE_1, lbw_rng1_base);
2499         WREG32(mmMME2_RTR_LBW_RANGE_MASK_1, lbw_rng1_mask);
2500         WREG32(mmMME2_RTR_LBW_RANGE_BASE_2, lbw_rng2_base);
2501         WREG32(mmMME2_RTR_LBW_RANGE_MASK_2, lbw_rng2_mask);
2502         WREG32(mmMME2_RTR_LBW_RANGE_BASE_3, lbw_rng3_base);
2503         WREG32(mmMME2_RTR_LBW_RANGE_MASK_3, lbw_rng3_mask);
2504         WREG32(mmMME2_RTR_LBW_RANGE_BASE_4, lbw_rng4_base);
2505         WREG32(mmMME2_RTR_LBW_RANGE_MASK_4, lbw_rng4_mask);
2506         WREG32(mmMME2_RTR_LBW_RANGE_BASE_5, lbw_rng5_base);
2507         WREG32(mmMME2_RTR_LBW_RANGE_MASK_5, lbw_rng5_mask);
2508         WREG32(mmMME2_RTR_LBW_RANGE_BASE_6, lbw_rng6_base);
2509         WREG32(mmMME2_RTR_LBW_RANGE_MASK_6, lbw_rng6_mask);
2510         WREG32(mmMME2_RTR_LBW_RANGE_BASE_7, lbw_rng7_base);
2511         WREG32(mmMME2_RTR_LBW_RANGE_MASK_7, lbw_rng7_mask);
2512         WREG32(mmMME2_RTR_LBW_RANGE_BASE_8, lbw_rng8_base);
2513         WREG32(mmMME2_RTR_LBW_RANGE_MASK_8, lbw_rng8_mask);
2514         WREG32(mmMME2_RTR_LBW_RANGE_BASE_9, lbw_rng9_base);
2515         WREG32(mmMME2_RTR_LBW_RANGE_MASK_9, lbw_rng9_mask);
2516         WREG32(mmMME2_RTR_LBW_RANGE_BASE_10, lbw_rng10_base);
2517         WREG32(mmMME2_RTR_LBW_RANGE_MASK_10, lbw_rng10_mask);
2518         WREG32(mmMME2_RTR_LBW_RANGE_BASE_11, lbw_rng11_base);
2519         WREG32(mmMME2_RTR_LBW_RANGE_MASK_11, lbw_rng11_mask);
2520         WREG32(mmMME2_RTR_LBW_RANGE_BASE_12, lbw_rng12_base);
2521         WREG32(mmMME2_RTR_LBW_RANGE_MASK_12, lbw_rng12_mask);
2522         WREG32(mmMME2_RTR_LBW_RANGE_BASE_13, lbw_rng13_base);
2523         WREG32(mmMME2_RTR_LBW_RANGE_MASK_13, lbw_rng13_mask);
2524
2525         WREG32(mmMME3_RTR_LBW_RANGE_BASE_0, lbw_rng0_base);
2526         WREG32(mmMME3_RTR_LBW_RANGE_MASK_0, lbw_rng0_mask);
2527         WREG32(mmMME3_RTR_LBW_RANGE_BASE_1, lbw_rng1_base);
2528         WREG32(mmMME3_RTR_LBW_RANGE_MASK_1, lbw_rng1_mask);
2529         WREG32(mmMME3_RTR_LBW_RANGE_BASE_2, lbw_rng2_base);
2530         WREG32(mmMME3_RTR_LBW_RANGE_MASK_2, lbw_rng2_mask);
2531         WREG32(mmMME3_RTR_LBW_RANGE_BASE_3, lbw_rng3_base);
2532         WREG32(mmMME3_RTR_LBW_RANGE_MASK_3, lbw_rng3_mask);
2533         WREG32(mmMME3_RTR_LBW_RANGE_BASE_4, lbw_rng4_base);
2534         WREG32(mmMME3_RTR_LBW_RANGE_MASK_4, lbw_rng4_mask);
2535         WREG32(mmMME3_RTR_LBW_RANGE_BASE_5, lbw_rng5_base);
2536         WREG32(mmMME3_RTR_LBW_RANGE_MASK_5, lbw_rng5_mask);
2537         WREG32(mmMME3_RTR_LBW_RANGE_BASE_6, lbw_rng6_base);
2538         WREG32(mmMME3_RTR_LBW_RANGE_MASK_6, lbw_rng6_mask);
2539         WREG32(mmMME3_RTR_LBW_RANGE_BASE_7, lbw_rng7_base);
2540         WREG32(mmMME3_RTR_LBW_RANGE_MASK_7, lbw_rng7_mask);
2541         WREG32(mmMME3_RTR_LBW_RANGE_BASE_8, lbw_rng8_base);
2542         WREG32(mmMME3_RTR_LBW_RANGE_MASK_8, lbw_rng8_mask);
2543         WREG32(mmMME3_RTR_LBW_RANGE_BASE_9, lbw_rng9_base);
2544         WREG32(mmMME3_RTR_LBW_RANGE_MASK_9, lbw_rng9_mask);
2545         WREG32(mmMME3_RTR_LBW_RANGE_BASE_10, lbw_rng10_base);
2546         WREG32(mmMME3_RTR_LBW_RANGE_MASK_10, lbw_rng10_mask);
2547         WREG32(mmMME3_RTR_LBW_RANGE_BASE_11, lbw_rng11_base);
2548         WREG32(mmMME3_RTR_LBW_RANGE_MASK_11, lbw_rng11_mask);
2549         WREG32(mmMME3_RTR_LBW_RANGE_BASE_12, lbw_rng12_base);
2550         WREG32(mmMME3_RTR_LBW_RANGE_MASK_12, lbw_rng12_mask);
2551         WREG32(mmMME3_RTR_LBW_RANGE_BASE_13, lbw_rng13_base);
2552         WREG32(mmMME3_RTR_LBW_RANGE_MASK_13, lbw_rng13_mask);
2553
2554         WREG32(mmMME4_RTR_LBW_RANGE_BASE_0, lbw_rng0_base);
2555         WREG32(mmMME4_RTR_LBW_RANGE_MASK_0, lbw_rng0_mask);
2556         WREG32(mmMME4_RTR_LBW_RANGE_BASE_1, lbw_rng1_base);
2557         WREG32(mmMME4_RTR_LBW_RANGE_MASK_1, lbw_rng1_mask);
2558         WREG32(mmMME4_RTR_LBW_RANGE_BASE_2, lbw_rng2_base);
2559         WREG32(mmMME4_RTR_LBW_RANGE_MASK_2, lbw_rng2_mask);
2560         WREG32(mmMME4_RTR_LBW_RANGE_BASE_3, lbw_rng3_base);
2561         WREG32(mmMME4_RTR_LBW_RANGE_MASK_3, lbw_rng3_mask);
2562         WREG32(mmMME4_RTR_LBW_RANGE_BASE_4, lbw_rng4_base);
2563         WREG32(mmMME4_RTR_LBW_RANGE_MASK_4, lbw_rng4_mask);
2564         WREG32(mmMME4_RTR_LBW_RANGE_BASE_5, lbw_rng5_base);
2565         WREG32(mmMME4_RTR_LBW_RANGE_MASK_5, lbw_rng5_mask);
2566         WREG32(mmMME4_RTR_LBW_RANGE_BASE_6, lbw_rng6_base);
2567         WREG32(mmMME4_RTR_LBW_RANGE_MASK_6, lbw_rng6_mask);
2568         WREG32(mmMME4_RTR_LBW_RANGE_BASE_7, lbw_rng7_base);
2569         WREG32(mmMME4_RTR_LBW_RANGE_MASK_7, lbw_rng7_mask);
2570         WREG32(mmMME4_RTR_LBW_RANGE_BASE_8, lbw_rng8_base);
2571         WREG32(mmMME4_RTR_LBW_RANGE_MASK_8, lbw_rng8_mask);
2572         WREG32(mmMME4_RTR_LBW_RANGE_BASE_9, lbw_rng9_base);
2573         WREG32(mmMME4_RTR_LBW_RANGE_MASK_9, lbw_rng9_mask);
2574         WREG32(mmMME4_RTR_LBW_RANGE_BASE_10, lbw_rng10_base);
2575         WREG32(mmMME4_RTR_LBW_RANGE_MASK_10, lbw_rng10_mask);
2576         WREG32(mmMME4_RTR_LBW_RANGE_BASE_11, lbw_rng11_base);
2577         WREG32(mmMME4_RTR_LBW_RANGE_MASK_11, lbw_rng11_mask);
2578         WREG32(mmMME4_RTR_LBW_RANGE_BASE_12, lbw_rng12_base);
2579         WREG32(mmMME4_RTR_LBW_RANGE_MASK_12, lbw_rng12_mask);
2580         WREG32(mmMME4_RTR_LBW_RANGE_BASE_13, lbw_rng13_base);
2581         WREG32(mmMME4_RTR_LBW_RANGE_MASK_13, lbw_rng13_mask);
2582
2583         WREG32(mmMME5_RTR_LBW_RANGE_BASE_0, lbw_rng0_base);
2584         WREG32(mmMME5_RTR_LBW_RANGE_MASK_0, lbw_rng0_mask);
2585         WREG32(mmMME5_RTR_LBW_RANGE_BASE_1, lbw_rng1_base);
2586         WREG32(mmMME5_RTR_LBW_RANGE_MASK_1, lbw_rng1_mask);
2587         WREG32(mmMME5_RTR_LBW_RANGE_BASE_2, lbw_rng2_base);
2588         WREG32(mmMME5_RTR_LBW_RANGE_MASK_2, lbw_rng2_mask);
2589         WREG32(mmMME5_RTR_LBW_RANGE_BASE_3, lbw_rng3_base);
2590         WREG32(mmMME5_RTR_LBW_RANGE_MASK_3, lbw_rng3_mask);
2591         WREG32(mmMME5_RTR_LBW_RANGE_BASE_4, lbw_rng4_base);
2592         WREG32(mmMME5_RTR_LBW_RANGE_MASK_4, lbw_rng4_mask);
2593         WREG32(mmMME5_RTR_LBW_RANGE_BASE_5, lbw_rng5_base);
2594         WREG32(mmMME5_RTR_LBW_RANGE_MASK_5, lbw_rng5_mask);
2595         WREG32(mmMME5_RTR_LBW_RANGE_BASE_6, lbw_rng6_base);
2596         WREG32(mmMME5_RTR_LBW_RANGE_MASK_6, lbw_rng6_mask);
2597         WREG32(mmMME5_RTR_LBW_RANGE_BASE_7, lbw_rng7_base);
2598         WREG32(mmMME5_RTR_LBW_RANGE_MASK_7, lbw_rng7_mask);
2599         WREG32(mmMME5_RTR_LBW_RANGE_BASE_8, lbw_rng8_base);
2600         WREG32(mmMME5_RTR_LBW_RANGE_MASK_8, lbw_rng8_mask);
2601         WREG32(mmMME5_RTR_LBW_RANGE_BASE_9, lbw_rng9_base);
2602         WREG32(mmMME5_RTR_LBW_RANGE_MASK_9, lbw_rng9_mask);
2603         WREG32(mmMME5_RTR_LBW_RANGE_BASE_10, lbw_rng10_base);
2604         WREG32(mmMME5_RTR_LBW_RANGE_MASK_10, lbw_rng10_mask);
2605         WREG32(mmMME5_RTR_LBW_RANGE_BASE_11, lbw_rng11_base);
2606         WREG32(mmMME5_RTR_LBW_RANGE_MASK_11, lbw_rng11_mask);
2607         WREG32(mmMME5_RTR_LBW_RANGE_BASE_12, lbw_rng12_base);
2608         WREG32(mmMME5_RTR_LBW_RANGE_MASK_12, lbw_rng12_mask);
2609         WREG32(mmMME5_RTR_LBW_RANGE_BASE_13, lbw_rng13_base);
2610         WREG32(mmMME5_RTR_LBW_RANGE_MASK_13, lbw_rng13_mask);
2611
2612         WREG32(mmMME6_RTR_LBW_RANGE_BASE_0, lbw_rng0_base);
2613         WREG32(mmMME6_RTR_LBW_RANGE_MASK_0, lbw_rng0_mask);
2614         WREG32(mmMME6_RTR_LBW_RANGE_BASE_1, lbw_rng1_base);
2615         WREG32(mmMME6_RTR_LBW_RANGE_MASK_1, lbw_rng1_mask);
2616         WREG32(mmMME6_RTR_LBW_RANGE_BASE_2, lbw_rng2_base);
2617         WREG32(mmMME6_RTR_LBW_RANGE_MASK_2, lbw_rng2_mask);
2618         WREG32(mmMME6_RTR_LBW_RANGE_BASE_3, lbw_rng3_base);
2619         WREG32(mmMME6_RTR_LBW_RANGE_MASK_3, lbw_rng3_mask);
2620         WREG32(mmMME6_RTR_LBW_RANGE_BASE_4, lbw_rng4_base);
2621         WREG32(mmMME6_RTR_LBW_RANGE_MASK_4, lbw_rng4_mask);
2622         WREG32(mmMME6_RTR_LBW_RANGE_BASE_5, lbw_rng5_base);
2623         WREG32(mmMME6_RTR_LBW_RANGE_MASK_5, lbw_rng5_mask);
2624         WREG32(mmMME6_RTR_LBW_RANGE_BASE_6, lbw_rng6_base);
2625         WREG32(mmMME6_RTR_LBW_RANGE_MASK_6, lbw_rng6_mask);
2626         WREG32(mmMME6_RTR_LBW_RANGE_BASE_7, lbw_rng7_base);
2627         WREG32(mmMME6_RTR_LBW_RANGE_MASK_7, lbw_rng7_mask);
2628         WREG32(mmMME6_RTR_LBW_RANGE_BASE_8, lbw_rng8_base);
2629         WREG32(mmMME6_RTR_LBW_RANGE_MASK_8, lbw_rng8_mask);
2630         WREG32(mmMME6_RTR_LBW_RANGE_BASE_9, lbw_rng9_base);
2631         WREG32(mmMME6_RTR_LBW_RANGE_MASK_9, lbw_rng9_mask);
2632         WREG32(mmMME6_RTR_LBW_RANGE_BASE_10, lbw_rng10_base);
2633         WREG32(mmMME6_RTR_LBW_RANGE_MASK_10, lbw_rng10_mask);
2634         WREG32(mmMME6_RTR_LBW_RANGE_BASE_11, lbw_rng11_base);
2635         WREG32(mmMME6_RTR_LBW_RANGE_MASK_11, lbw_rng11_mask);
2636         WREG32(mmMME6_RTR_LBW_RANGE_BASE_12, lbw_rng12_base);
2637         WREG32(mmMME6_RTR_LBW_RANGE_MASK_12, lbw_rng12_mask);
2638         WREG32(mmMME6_RTR_LBW_RANGE_BASE_13, lbw_rng13_base);
2639         WREG32(mmMME6_RTR_LBW_RANGE_MASK_13, lbw_rng13_mask);
2640
2641         WREG32(mmTPC0_NRTR_LBW_RANGE_HIT, 0xFFFF);
2642         WREG32(mmTPC0_NRTR_HBW_RANGE_HIT, 0xFE);
2643
2644         /* Protect HOST */
2645         WREG32(mmTPC0_NRTR_HBW_RANGE_BASE_L_0, 0);
2646         WREG32(mmTPC0_NRTR_HBW_RANGE_BASE_H_0, 0);
2647         WREG32(mmTPC0_NRTR_HBW_RANGE_MASK_L_0, 0);
2648         WREG32(mmTPC0_NRTR_HBW_RANGE_MASK_H_0, 0xFFF80);
2649
2650         /*
2651          * Protect DDR @
2652          * DRAM_VIRT_BASE : DRAM_VIRT_BASE + DRAM_VIRT_END
2653          * The mask protects the first 512MB
2654          */
2655         WREG32(mmTPC0_NRTR_HBW_RANGE_BASE_L_1, dram_addr_lo);
2656         WREG32(mmTPC0_NRTR_HBW_RANGE_BASE_H_1, dram_addr_hi);
2657         WREG32(mmTPC0_NRTR_HBW_RANGE_MASK_L_1, 0xE0000000);
2658         WREG32(mmTPC0_NRTR_HBW_RANGE_MASK_H_1, 0x3FFFF);
2659
2660         WREG32(mmTPC0_NRTR_LBW_RANGE_BASE_0, lbw_rng0_base);
2661         WREG32(mmTPC0_NRTR_LBW_RANGE_MASK_0, lbw_rng0_mask);
2662         WREG32(mmTPC0_NRTR_LBW_RANGE_BASE_1, lbw_rng1_base);
2663         WREG32(mmTPC0_NRTR_LBW_RANGE_MASK_1, lbw_rng1_mask);
2664         WREG32(mmTPC0_NRTR_LBW_RANGE_BASE_2, lbw_rng2_base);
2665         WREG32(mmTPC0_NRTR_LBW_RANGE_MASK_2, lbw_rng2_mask);
2666         WREG32(mmTPC0_NRTR_LBW_RANGE_BASE_3, lbw_rng3_base);
2667         WREG32(mmTPC0_NRTR_LBW_RANGE_MASK_3, lbw_rng3_mask);
2668         WREG32(mmTPC0_NRTR_LBW_RANGE_BASE_4, lbw_rng4_base);
2669         WREG32(mmTPC0_NRTR_LBW_RANGE_MASK_4, lbw_rng4_mask);
2670         WREG32(mmTPC0_NRTR_LBW_RANGE_BASE_5, lbw_rng5_base);
2671         WREG32(mmTPC0_NRTR_LBW_RANGE_MASK_5, lbw_rng5_mask);
2672         WREG32(mmTPC0_NRTR_LBW_RANGE_BASE_6, lbw_rng6_base);
2673         WREG32(mmTPC0_NRTR_LBW_RANGE_MASK_6, lbw_rng6_mask);
2674         WREG32(mmTPC0_NRTR_LBW_RANGE_BASE_7, lbw_rng7_base);
2675         WREG32(mmTPC0_NRTR_LBW_RANGE_MASK_7, lbw_rng7_mask);
2676         WREG32(mmTPC0_NRTR_LBW_RANGE_BASE_8, lbw_rng8_base);
2677         WREG32(mmTPC0_NRTR_LBW_RANGE_MASK_8, lbw_rng8_mask);
2678         WREG32(mmTPC0_NRTR_LBW_RANGE_BASE_9, lbw_rng9_base);
2679         WREG32(mmTPC0_NRTR_LBW_RANGE_MASK_9, lbw_rng9_mask);
2680         WREG32(mmTPC0_NRTR_LBW_RANGE_BASE_10, lbw_rng10_base);
2681         WREG32(mmTPC0_NRTR_LBW_RANGE_MASK_10, lbw_rng10_mask);
2682         WREG32(mmTPC0_NRTR_LBW_RANGE_BASE_11, lbw_rng11_base);
2683         WREG32(mmTPC0_NRTR_LBW_RANGE_MASK_11, lbw_rng11_mask);
2684         WREG32(mmTPC0_NRTR_LBW_RANGE_BASE_12, lbw_rng12_base);
2685         WREG32(mmTPC0_NRTR_LBW_RANGE_MASK_12, lbw_rng12_mask);
2686         WREG32(mmTPC0_NRTR_LBW_RANGE_BASE_13, lbw_rng13_base);
2687         WREG32(mmTPC0_NRTR_LBW_RANGE_MASK_13, lbw_rng13_mask);
2688
2689         WREG32(mmTPC1_RTR_LBW_RANGE_HIT, 0xFFFF);
2690         WREG32(mmTPC1_RTR_HBW_RANGE_HIT, 0xFE);
2691
2692         /* Protect HOST */
2693         WREG32(mmTPC1_RTR_HBW_RANGE_BASE_L_0, 0);
2694         WREG32(mmTPC1_RTR_HBW_RANGE_BASE_H_0, 0);
2695         WREG32(mmTPC1_RTR_HBW_RANGE_MASK_L_0, 0);
2696         WREG32(mmTPC1_RTR_HBW_RANGE_MASK_H_0, 0xFFF80);
2697
2698         /*
2699          * Protect DDR @
2700          * DRAM_VIRT_BASE : DRAM_VIRT_BASE + DRAM_VIRT_END
2701          * The mask protects the first 512MB
2702          */
2703         WREG32(mmTPC1_RTR_HBW_RANGE_BASE_L_1, dram_addr_lo);
2704         WREG32(mmTPC1_RTR_HBW_RANGE_BASE_H_1, dram_addr_hi);
2705         WREG32(mmTPC1_RTR_HBW_RANGE_MASK_L_1, 0xE0000000);
2706         WREG32(mmTPC1_RTR_HBW_RANGE_MASK_H_1, 0x3FFFF);
2707
2708         WREG32(mmTPC1_RTR_LBW_RANGE_BASE_0, lbw_rng0_base);
2709         WREG32(mmTPC1_RTR_LBW_RANGE_MASK_0, lbw_rng0_mask);
2710         WREG32(mmTPC1_RTR_LBW_RANGE_BASE_1, lbw_rng1_base);
2711         WREG32(mmTPC1_RTR_LBW_RANGE_MASK_1, lbw_rng1_mask);
2712         WREG32(mmTPC1_RTR_LBW_RANGE_BASE_2, lbw_rng2_base);
2713         WREG32(mmTPC1_RTR_LBW_RANGE_MASK_2, lbw_rng2_mask);
2714         WREG32(mmTPC1_RTR_LBW_RANGE_BASE_3, lbw_rng3_base);
2715         WREG32(mmTPC1_RTR_LBW_RANGE_MASK_3, lbw_rng3_mask);
2716         WREG32(mmTPC1_RTR_LBW_RANGE_BASE_4, lbw_rng4_base);
2717         WREG32(mmTPC1_RTR_LBW_RANGE_MASK_4, lbw_rng4_mask);
2718         WREG32(mmTPC1_RTR_LBW_RANGE_BASE_5, lbw_rng5_base);
2719         WREG32(mmTPC1_RTR_LBW_RANGE_MASK_5, lbw_rng5_mask);
2720         WREG32(mmTPC1_RTR_LBW_RANGE_BASE_6, lbw_rng6_base);
2721         WREG32(mmTPC1_RTR_LBW_RANGE_MASK_6, lbw_rng6_mask);
2722         WREG32(mmTPC1_RTR_LBW_RANGE_BASE_7, lbw_rng7_base);
2723         WREG32(mmTPC1_RTR_LBW_RANGE_MASK_7, lbw_rng7_mask);
2724         WREG32(mmTPC1_RTR_LBW_RANGE_BASE_8, lbw_rng8_base);
2725         WREG32(mmTPC1_RTR_LBW_RANGE_MASK_8, lbw_rng8_mask);
2726         WREG32(mmTPC1_RTR_LBW_RANGE_BASE_9, lbw_rng9_base);
2727         WREG32(mmTPC1_RTR_LBW_RANGE_MASK_9, lbw_rng9_mask);
2728         WREG32(mmTPC1_RTR_LBW_RANGE_BASE_10, lbw_rng10_base);
2729         WREG32(mmTPC1_RTR_LBW_RANGE_MASK_10, lbw_rng10_mask);
2730         WREG32(mmTPC1_RTR_LBW_RANGE_BASE_11, lbw_rng11_base);
2731         WREG32(mmTPC1_RTR_LBW_RANGE_MASK_11, lbw_rng11_mask);
2732         WREG32(mmTPC1_RTR_LBW_RANGE_BASE_12, lbw_rng12_base);
2733         WREG32(mmTPC1_RTR_LBW_RANGE_MASK_12, lbw_rng12_mask);
2734         WREG32(mmTPC1_RTR_LBW_RANGE_BASE_13, lbw_rng13_base);
2735         WREG32(mmTPC1_RTR_LBW_RANGE_MASK_13, lbw_rng13_mask);
2736
2737         WREG32(mmTPC2_RTR_LBW_RANGE_HIT, 0xFFFF);
2738         WREG32(mmTPC2_RTR_HBW_RANGE_HIT, 0xFE);
2739
2740         /* Protect HOST */
2741         WREG32(mmTPC2_RTR_HBW_RANGE_BASE_L_0, 0);
2742         WREG32(mmTPC2_RTR_HBW_RANGE_BASE_H_0, 0);
2743         WREG32(mmTPC2_RTR_HBW_RANGE_MASK_L_0, 0);
2744         WREG32(mmTPC2_RTR_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(mmTPC2_RTR_HBW_RANGE_BASE_L_1, dram_addr_lo);
2752         WREG32(mmTPC2_RTR_HBW_RANGE_BASE_H_1, dram_addr_hi);
2753         WREG32(mmTPC2_RTR_HBW_RANGE_MASK_L_1, 0xE0000000);
2754         WREG32(mmTPC2_RTR_HBW_RANGE_MASK_H_1, 0x3FFFF);
2755
2756         WREG32(mmTPC2_RTR_LBW_RANGE_BASE_0, lbw_rng0_base);
2757         WREG32(mmTPC2_RTR_LBW_RANGE_MASK_0, lbw_rng0_mask);
2758         WREG32(mmTPC2_RTR_LBW_RANGE_BASE_1, lbw_rng1_base);
2759         WREG32(mmTPC2_RTR_LBW_RANGE_MASK_1, lbw_rng1_mask);
2760         WREG32(mmTPC2_RTR_LBW_RANGE_BASE_2, lbw_rng2_base);
2761         WREG32(mmTPC2_RTR_LBW_RANGE_MASK_2, lbw_rng2_mask);
2762         WREG32(mmTPC2_RTR_LBW_RANGE_BASE_3, lbw_rng3_base);
2763         WREG32(mmTPC2_RTR_LBW_RANGE_MASK_3, lbw_rng3_mask);
2764         WREG32(mmTPC2_RTR_LBW_RANGE_BASE_4, lbw_rng4_base);
2765         WREG32(mmTPC2_RTR_LBW_RANGE_MASK_4, lbw_rng4_mask);
2766         WREG32(mmTPC2_RTR_LBW_RANGE_BASE_5, lbw_rng5_base);
2767         WREG32(mmTPC2_RTR_LBW_RANGE_MASK_5, lbw_rng5_mask);
2768         WREG32(mmTPC2_RTR_LBW_RANGE_BASE_6, lbw_rng6_base);
2769         WREG32(mmTPC2_RTR_LBW_RANGE_MASK_6, lbw_rng6_mask);
2770         WREG32(mmTPC2_RTR_LBW_RANGE_BASE_7, lbw_rng7_base);
2771         WREG32(mmTPC2_RTR_LBW_RANGE_MASK_7, lbw_rng7_mask);
2772         WREG32(mmTPC2_RTR_LBW_RANGE_BASE_8, lbw_rng8_base);
2773         WREG32(mmTPC2_RTR_LBW_RANGE_MASK_8, lbw_rng8_mask);
2774         WREG32(mmTPC2_RTR_LBW_RANGE_BASE_9, lbw_rng9_base);
2775         WREG32(mmTPC2_RTR_LBW_RANGE_MASK_9, lbw_rng9_mask);
2776         WREG32(mmTPC2_RTR_LBW_RANGE_BASE_10, lbw_rng10_base);
2777         WREG32(mmTPC2_RTR_LBW_RANGE_MASK_10, lbw_rng10_mask);
2778         WREG32(mmTPC2_RTR_LBW_RANGE_BASE_11, lbw_rng11_base);
2779         WREG32(mmTPC2_RTR_LBW_RANGE_MASK_11, lbw_rng11_mask);
2780         WREG32(mmTPC2_RTR_LBW_RANGE_BASE_12, lbw_rng12_base);
2781         WREG32(mmTPC2_RTR_LBW_RANGE_MASK_12, lbw_rng12_mask);
2782         WREG32(mmTPC2_RTR_LBW_RANGE_BASE_13, lbw_rng13_base);
2783         WREG32(mmTPC2_RTR_LBW_RANGE_MASK_13, lbw_rng13_mask);
2784
2785         WREG32(mmTPC3_RTR_LBW_RANGE_HIT, 0xFFFF);
2786         WREG32(mmTPC3_RTR_HBW_RANGE_HIT, 0xFE);
2787
2788         /* Protect HOST */
2789         WREG32(mmTPC3_RTR_HBW_RANGE_BASE_L_0, 0);
2790         WREG32(mmTPC3_RTR_HBW_RANGE_BASE_H_0, 0);
2791         WREG32(mmTPC3_RTR_HBW_RANGE_MASK_L_0, 0);
2792         WREG32(mmTPC3_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(mmTPC3_RTR_HBW_RANGE_BASE_L_1, dram_addr_lo);
2800         WREG32(mmTPC3_RTR_HBW_RANGE_BASE_H_1, dram_addr_hi);
2801         WREG32(mmTPC3_RTR_HBW_RANGE_MASK_L_1, 0xE0000000);
2802         WREG32(mmTPC3_RTR_HBW_RANGE_MASK_H_1, 0x3FFFF);
2803
2804         WREG32(mmTPC3_RTR_LBW_RANGE_BASE_0, lbw_rng0_base);
2805         WREG32(mmTPC3_RTR_LBW_RANGE_MASK_0, lbw_rng0_mask);
2806         WREG32(mmTPC3_RTR_LBW_RANGE_BASE_1, lbw_rng1_base);
2807         WREG32(mmTPC3_RTR_LBW_RANGE_MASK_1, lbw_rng1_mask);
2808         WREG32(mmTPC3_RTR_LBW_RANGE_BASE_2, lbw_rng2_base);
2809         WREG32(mmTPC3_RTR_LBW_RANGE_MASK_2, lbw_rng2_mask);
2810         WREG32(mmTPC3_RTR_LBW_RANGE_BASE_3, lbw_rng3_base);
2811         WREG32(mmTPC3_RTR_LBW_RANGE_MASK_3, lbw_rng3_mask);
2812         WREG32(mmTPC3_RTR_LBW_RANGE_BASE_4, lbw_rng4_base);
2813         WREG32(mmTPC3_RTR_LBW_RANGE_MASK_4, lbw_rng4_mask);
2814         WREG32(mmTPC3_RTR_LBW_RANGE_BASE_5, lbw_rng5_base);
2815         WREG32(mmTPC3_RTR_LBW_RANGE_MASK_5, lbw_rng5_mask);
2816         WREG32(mmTPC3_RTR_LBW_RANGE_BASE_6, lbw_rng6_base);
2817         WREG32(mmTPC3_RTR_LBW_RANGE_MASK_6, lbw_rng6_mask);
2818         WREG32(mmTPC3_RTR_LBW_RANGE_BASE_7, lbw_rng7_base);
2819         WREG32(mmTPC3_RTR_LBW_RANGE_MASK_7, lbw_rng7_mask);
2820         WREG32(mmTPC3_RTR_LBW_RANGE_BASE_8, lbw_rng8_base);
2821         WREG32(mmTPC3_RTR_LBW_RANGE_MASK_8, lbw_rng8_mask);
2822         WREG32(mmTPC3_RTR_LBW_RANGE_BASE_9, lbw_rng9_base);
2823         WREG32(mmTPC3_RTR_LBW_RANGE_MASK_9, lbw_rng9_mask);
2824         WREG32(mmTPC3_RTR_LBW_RANGE_BASE_10, lbw_rng10_base);
2825         WREG32(mmTPC3_RTR_LBW_RANGE_MASK_10, lbw_rng10_mask);
2826         WREG32(mmTPC3_RTR_LBW_RANGE_BASE_11, lbw_rng11_base);
2827         WREG32(mmTPC3_RTR_LBW_RANGE_MASK_11, lbw_rng11_mask);
2828         WREG32(mmTPC3_RTR_LBW_RANGE_BASE_12, lbw_rng12_base);
2829         WREG32(mmTPC3_RTR_LBW_RANGE_MASK_12, lbw_rng12_mask);
2830         WREG32(mmTPC3_RTR_LBW_RANGE_BASE_13, lbw_rng13_base);
2831         WREG32(mmTPC3_RTR_LBW_RANGE_MASK_13, lbw_rng13_mask);
2832
2833         WREG32(mmTPC4_RTR_LBW_RANGE_HIT, 0xFFFF);
2834         WREG32(mmTPC4_RTR_HBW_RANGE_HIT, 0xFE);
2835
2836         /* Protect HOST */
2837         WREG32(mmTPC4_RTR_HBW_RANGE_BASE_L_0, 0);
2838         WREG32(mmTPC4_RTR_HBW_RANGE_BASE_H_0, 0);
2839         WREG32(mmTPC4_RTR_HBW_RANGE_MASK_L_0, 0);
2840         WREG32(mmTPC4_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(mmTPC4_RTR_HBW_RANGE_BASE_L_1, dram_addr_lo);
2848         WREG32(mmTPC4_RTR_HBW_RANGE_BASE_H_1, dram_addr_hi);
2849         WREG32(mmTPC4_RTR_HBW_RANGE_MASK_L_1, 0xE0000000);
2850         WREG32(mmTPC4_RTR_HBW_RANGE_MASK_H_1, 0x3FFFF);
2851
2852         WREG32(mmTPC4_RTR_LBW_RANGE_BASE_0, lbw_rng0_base);
2853         WREG32(mmTPC4_RTR_LBW_RANGE_MASK_0, lbw_rng0_mask);
2854         WREG32(mmTPC4_RTR_LBW_RANGE_BASE_1, lbw_rng1_base);
2855         WREG32(mmTPC4_RTR_LBW_RANGE_MASK_1, lbw_rng1_mask);
2856         WREG32(mmTPC4_RTR_LBW_RANGE_BASE_2, lbw_rng2_base);
2857         WREG32(mmTPC4_RTR_LBW_RANGE_MASK_2, lbw_rng2_mask);
2858         WREG32(mmTPC4_RTR_LBW_RANGE_BASE_3, lbw_rng3_base);
2859         WREG32(mmTPC4_RTR_LBW_RANGE_MASK_3, lbw_rng3_mask);
2860         WREG32(mmTPC4_RTR_LBW_RANGE_BASE_4, lbw_rng4_base);
2861         WREG32(mmTPC4_RTR_LBW_RANGE_MASK_4, lbw_rng4_mask);
2862         WREG32(mmTPC4_RTR_LBW_RANGE_BASE_5, lbw_rng5_base);
2863         WREG32(mmTPC4_RTR_LBW_RANGE_MASK_5, lbw_rng5_mask);
2864         WREG32(mmTPC4_RTR_LBW_RANGE_BASE_6, lbw_rng6_base);
2865         WREG32(mmTPC4_RTR_LBW_RANGE_MASK_6, lbw_rng6_mask);
2866         WREG32(mmTPC4_RTR_LBW_RANGE_BASE_7, lbw_rng7_base);
2867         WREG32(mmTPC4_RTR_LBW_RANGE_MASK_7, lbw_rng7_mask);
2868         WREG32(mmTPC4_RTR_LBW_RANGE_BASE_8, lbw_rng8_base);
2869         WREG32(mmTPC4_RTR_LBW_RANGE_MASK_8, lbw_rng8_mask);
2870         WREG32(mmTPC4_RTR_LBW_RANGE_BASE_9, lbw_rng9_base);
2871         WREG32(mmTPC4_RTR_LBW_RANGE_MASK_9, lbw_rng9_mask);
2872         WREG32(mmTPC4_RTR_LBW_RANGE_BASE_10, lbw_rng10_base);
2873         WREG32(mmTPC4_RTR_LBW_RANGE_MASK_10, lbw_rng10_mask);
2874         WREG32(mmTPC4_RTR_LBW_RANGE_BASE_11, lbw_rng11_base);
2875         WREG32(mmTPC4_RTR_LBW_RANGE_MASK_11, lbw_rng11_mask);
2876         WREG32(mmTPC4_RTR_LBW_RANGE_BASE_12, lbw_rng12_base);
2877         WREG32(mmTPC4_RTR_LBW_RANGE_MASK_12, lbw_rng12_mask);
2878         WREG32(mmTPC4_RTR_LBW_RANGE_BASE_13, lbw_rng13_base);
2879         WREG32(mmTPC4_RTR_LBW_RANGE_MASK_13, lbw_rng13_mask);
2880
2881         WREG32(mmTPC5_RTR_LBW_RANGE_HIT, 0xFFFF);
2882         WREG32(mmTPC5_RTR_HBW_RANGE_HIT, 0xFE);
2883
2884         /* Protect HOST */
2885         WREG32(mmTPC5_RTR_HBW_RANGE_BASE_L_0, 0);
2886         WREG32(mmTPC5_RTR_HBW_RANGE_BASE_H_0, 0);
2887         WREG32(mmTPC5_RTR_HBW_RANGE_MASK_L_0, 0);
2888         WREG32(mmTPC5_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(mmTPC5_RTR_HBW_RANGE_BASE_L_1, dram_addr_lo);
2896         WREG32(mmTPC5_RTR_HBW_RANGE_BASE_H_1, dram_addr_hi);
2897         WREG32(mmTPC5_RTR_HBW_RANGE_MASK_L_1, 0xE0000000);
2898         WREG32(mmTPC5_RTR_HBW_RANGE_MASK_H_1, 0x3FFFF);
2899
2900         WREG32(mmTPC5_RTR_LBW_RANGE_BASE_0, lbw_rng0_base);
2901         WREG32(mmTPC5_RTR_LBW_RANGE_MASK_0, lbw_rng0_mask);
2902         WREG32(mmTPC5_RTR_LBW_RANGE_BASE_1, lbw_rng1_base);
2903         WREG32(mmTPC5_RTR_LBW_RANGE_MASK_1, lbw_rng1_mask);
2904         WREG32(mmTPC5_RTR_LBW_RANGE_BASE_2, lbw_rng2_base);
2905         WREG32(mmTPC5_RTR_LBW_RANGE_MASK_2, lbw_rng2_mask);
2906         WREG32(mmTPC5_RTR_LBW_RANGE_BASE_3, lbw_rng3_base);
2907         WREG32(mmTPC5_RTR_LBW_RANGE_MASK_3, lbw_rng3_mask);
2908         WREG32(mmTPC5_RTR_LBW_RANGE_BASE_4, lbw_rng4_base);
2909         WREG32(mmTPC5_RTR_LBW_RANGE_MASK_4, lbw_rng4_mask);
2910         WREG32(mmTPC5_RTR_LBW_RANGE_BASE_5, lbw_rng5_base);
2911         WREG32(mmTPC5_RTR_LBW_RANGE_MASK_5, lbw_rng5_mask);
2912         WREG32(mmTPC5_RTR_LBW_RANGE_BASE_6, lbw_rng6_base);
2913         WREG32(mmTPC5_RTR_LBW_RANGE_MASK_6, lbw_rng6_mask);
2914         WREG32(mmTPC5_RTR_LBW_RANGE_BASE_7, lbw_rng7_base);
2915         WREG32(mmTPC5_RTR_LBW_RANGE_MASK_7, lbw_rng7_mask);
2916         WREG32(mmTPC5_RTR_LBW_RANGE_BASE_8, lbw_rng8_base);
2917         WREG32(mmTPC5_RTR_LBW_RANGE_MASK_8, lbw_rng8_mask);
2918         WREG32(mmTPC5_RTR_LBW_RANGE_BASE_9, lbw_rng9_base);
2919         WREG32(mmTPC5_RTR_LBW_RANGE_MASK_9, lbw_rng9_mask);
2920         WREG32(mmTPC5_RTR_LBW_RANGE_BASE_10, lbw_rng10_base);
2921         WREG32(mmTPC5_RTR_LBW_RANGE_MASK_10, lbw_rng10_mask);
2922         WREG32(mmTPC5_RTR_LBW_RANGE_BASE_11, lbw_rng11_base);
2923         WREG32(mmTPC5_RTR_LBW_RANGE_MASK_11, lbw_rng11_mask);
2924         WREG32(mmTPC5_RTR_LBW_RANGE_BASE_12, lbw_rng12_base);
2925         WREG32(mmTPC5_RTR_LBW_RANGE_MASK_12, lbw_rng12_mask);
2926         WREG32(mmTPC5_RTR_LBW_RANGE_BASE_13, lbw_rng13_base);
2927         WREG32(mmTPC5_RTR_LBW_RANGE_MASK_13, lbw_rng13_mask);
2928
2929         WREG32(mmTPC6_RTR_LBW_RANGE_HIT, 0xFFFF);
2930         WREG32(mmTPC6_RTR_HBW_RANGE_HIT, 0xFE);
2931
2932         /* Protect HOST */
2933         WREG32(mmTPC6_RTR_HBW_RANGE_BASE_L_0, 0);
2934         WREG32(mmTPC6_RTR_HBW_RANGE_BASE_H_0, 0);
2935         WREG32(mmTPC6_RTR_HBW_RANGE_MASK_L_0, 0);
2936         WREG32(mmTPC6_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(mmTPC6_RTR_HBW_RANGE_BASE_L_1, dram_addr_lo);
2944         WREG32(mmTPC6_RTR_HBW_RANGE_BASE_H_1, dram_addr_hi);
2945         WREG32(mmTPC6_RTR_HBW_RANGE_MASK_L_1, 0xE0000000);
2946         WREG32(mmTPC6_RTR_HBW_RANGE_MASK_H_1, 0x3FFFF);
2947
2948         WREG32(mmTPC6_RTR_LBW_RANGE_BASE_0, lbw_rng0_base);
2949         WREG32(mmTPC6_RTR_LBW_RANGE_MASK_0, lbw_rng0_mask);
2950         WREG32(mmTPC6_RTR_LBW_RANGE_BASE_1, lbw_rng1_base);
2951         WREG32(mmTPC6_RTR_LBW_RANGE_MASK_1, lbw_rng1_mask);
2952         WREG32(mmTPC6_RTR_LBW_RANGE_BASE_2, lbw_rng2_base);
2953         WREG32(mmTPC6_RTR_LBW_RANGE_MASK_2, lbw_rng2_mask);
2954         WREG32(mmTPC6_RTR_LBW_RANGE_BASE_3, lbw_rng3_base);
2955         WREG32(mmTPC6_RTR_LBW_RANGE_MASK_3, lbw_rng3_mask);
2956         WREG32(mmTPC6_RTR_LBW_RANGE_BASE_4, lbw_rng4_base);
2957         WREG32(mmTPC6_RTR_LBW_RANGE_MASK_4, lbw_rng4_mask);
2958         WREG32(mmTPC6_RTR_LBW_RANGE_BASE_5, lbw_rng5_base);
2959         WREG32(mmTPC6_RTR_LBW_RANGE_MASK_5, lbw_rng5_mask);
2960         WREG32(mmTPC6_RTR_LBW_RANGE_BASE_6, lbw_rng6_base);
2961         WREG32(mmTPC6_RTR_LBW_RANGE_MASK_6, lbw_rng6_mask);
2962         WREG32(mmTPC6_RTR_LBW_RANGE_BASE_7, lbw_rng7_base);
2963         WREG32(mmTPC6_RTR_LBW_RANGE_MASK_7, lbw_rng7_mask);
2964         WREG32(mmTPC6_RTR_LBW_RANGE_BASE_8, lbw_rng8_base);
2965         WREG32(mmTPC6_RTR_LBW_RANGE_MASK_8, lbw_rng8_mask);
2966         WREG32(mmTPC6_RTR_LBW_RANGE_BASE_9, lbw_rng9_base);
2967         WREG32(mmTPC6_RTR_LBW_RANGE_MASK_9, lbw_rng9_mask);
2968         WREG32(mmTPC6_RTR_LBW_RANGE_BASE_10, lbw_rng10_base);
2969         WREG32(mmTPC6_RTR_LBW_RANGE_MASK_10, lbw_rng10_mask);
2970         WREG32(mmTPC6_RTR_LBW_RANGE_BASE_11, lbw_rng11_base);
2971         WREG32(mmTPC6_RTR_LBW_RANGE_MASK_11, lbw_rng11_mask);
2972         WREG32(mmTPC6_RTR_LBW_RANGE_BASE_12, lbw_rng12_base);
2973         WREG32(mmTPC6_RTR_LBW_RANGE_MASK_12, lbw_rng12_mask);
2974         WREG32(mmTPC6_RTR_LBW_RANGE_BASE_13, lbw_rng13_base);
2975         WREG32(mmTPC6_RTR_LBW_RANGE_MASK_13, lbw_rng13_mask);
2976
2977         WREG32(mmTPC7_NRTR_LBW_RANGE_HIT, 0xFFFF);
2978         WREG32(mmTPC7_NRTR_HBW_RANGE_HIT, 0xFE);
2979
2980         /* Protect HOST */
2981         WREG32(mmTPC7_NRTR_HBW_RANGE_BASE_L_0, 0);
2982         WREG32(mmTPC7_NRTR_HBW_RANGE_BASE_H_0, 0);
2983         WREG32(mmTPC7_NRTR_HBW_RANGE_MASK_L_0, 0);
2984         WREG32(mmTPC7_NRTR_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(mmTPC7_NRTR_HBW_RANGE_BASE_L_1, dram_addr_lo);
2992         WREG32(mmTPC7_NRTR_HBW_RANGE_BASE_H_1, dram_addr_hi);
2993         WREG32(mmTPC7_NRTR_HBW_RANGE_MASK_L_1, 0xE0000000);
2994         WREG32(mmTPC7_NRTR_HBW_RANGE_MASK_H_1, 0x3FFFF);
2995
2996         WREG32(mmTPC7_NRTR_LBW_RANGE_BASE_0, lbw_rng0_base);
2997         WREG32(mmTPC7_NRTR_LBW_RANGE_MASK_0, lbw_rng0_mask);
2998         WREG32(mmTPC7_NRTR_LBW_RANGE_BASE_1, lbw_rng1_base);
2999         WREG32(mmTPC7_NRTR_LBW_RANGE_MASK_1, lbw_rng1_mask);
3000         WREG32(mmTPC7_NRTR_LBW_RANGE_BASE_2, lbw_rng2_base);
3001         WREG32(mmTPC7_NRTR_LBW_RANGE_MASK_2, lbw_rng2_mask);
3002         WREG32(mmTPC7_NRTR_LBW_RANGE_BASE_3, lbw_rng3_base);
3003         WREG32(mmTPC7_NRTR_LBW_RANGE_MASK_3, lbw_rng3_mask);
3004         WREG32(mmTPC7_NRTR_LBW_RANGE_BASE_4, lbw_rng4_base);
3005         WREG32(mmTPC7_NRTR_LBW_RANGE_MASK_4, lbw_rng4_mask);
3006         WREG32(mmTPC7_NRTR_LBW_RANGE_BASE_5, lbw_rng5_base);
3007         WREG32(mmTPC7_NRTR_LBW_RANGE_MASK_5, lbw_rng5_mask);
3008         WREG32(mmTPC7_NRTR_LBW_RANGE_BASE_6, lbw_rng6_base);
3009         WREG32(mmTPC7_NRTR_LBW_RANGE_MASK_6, lbw_rng6_mask);
3010         WREG32(mmTPC7_NRTR_LBW_RANGE_BASE_7, lbw_rng7_base);
3011         WREG32(mmTPC7_NRTR_LBW_RANGE_MASK_7, lbw_rng7_mask);
3012         WREG32(mmTPC7_NRTR_LBW_RANGE_BASE_8, lbw_rng8_base);
3013         WREG32(mmTPC7_NRTR_LBW_RANGE_MASK_8, lbw_rng8_mask);
3014         WREG32(mmTPC7_NRTR_LBW_RANGE_BASE_9, lbw_rng9_base);
3015         WREG32(mmTPC7_NRTR_LBW_RANGE_MASK_9, lbw_rng9_mask);
3016         WREG32(mmTPC7_NRTR_LBW_RANGE_BASE_10, lbw_rng10_base);
3017         WREG32(mmTPC7_NRTR_LBW_RANGE_MASK_10, lbw_rng10_mask);
3018         WREG32(mmTPC7_NRTR_LBW_RANGE_BASE_11, lbw_rng11_base);
3019         WREG32(mmTPC7_NRTR_LBW_RANGE_MASK_11, lbw_rng11_mask);
3020         WREG32(mmTPC7_NRTR_LBW_RANGE_BASE_12, lbw_rng12_base);
3021         WREG32(mmTPC7_NRTR_LBW_RANGE_MASK_12, lbw_rng12_mask);
3022         WREG32(mmTPC7_NRTR_LBW_RANGE_BASE_13, lbw_rng13_base);
3023         WREG32(mmTPC7_NRTR_LBW_RANGE_MASK_13, lbw_rng13_mask);
3024
3025         goya_init_protection_bits(hdev);
3026 }