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