root/drivers/misc/habanalabs/goya/goya_security.c

/* [<][>][^][v][top][bottom][index][help] */

DEFINITIONS

This source file includes following definitions.
  1. goya_pb_set_block
  2. goya_init_mme_protection_bits
  3. goya_init_dma_protection_bits
  4. goya_init_tpc_protection_bits
  5. goya_init_protection_bits
  6. goya_init_security

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

/* [<][>][^][v][top][bottom][index][help] */