// SPDX-License-Identifier: GPL-2.0

/*
 * Copyright 2016-2019 HabanaLabs, Ltd.
 * All Rights Reserved.
 */

#include "goyaP.h"

/*
 * goya_set_block_as_protected - set the given block as protected
 *
 * @hdev: pointer to hl_device structure
 * @block: block base address
 *
 */
static void goya_pb_set_block(struct hl_device *hdev, u64 base)
{
	u32 pb_addr = base - CFG_BASE + PROT_BITS_OFFS;

	while (pb_addr & 0xFFF) {
		WREG32(pb_addr, 0);
		pb_addr += 4;
	}
}

static void goya_init_mme_protection_bits(struct hl_device *hdev)
{
	u32 pb_addr, mask;
	u8 word_offset;

	/* TODO: change to real reg name when Soc Online is updated */
	u64 mmMME_SBB_POWER_ECO1 = 0xDFF60,
		mmMME_SBB_POWER_ECO2 = 0xDFF64;

	goya_pb_set_block(hdev, mmACC_MS_ECC_MEM_0_BASE);
	goya_pb_set_block(hdev, mmACC_MS_ECC_MEM_1_BASE);
	goya_pb_set_block(hdev, mmACC_MS_ECC_MEM_2_BASE);
	goya_pb_set_block(hdev, mmACC_MS_ECC_MEM_3_BASE);

	goya_pb_set_block(hdev, mmSBA_ECC_MEM_BASE);
	goya_pb_set_block(hdev, mmSBB_ECC_MEM_BASE);

	goya_pb_set_block(hdev, mmMME1_RTR_BASE);
	goya_pb_set_block(hdev, mmMME1_RD_REGULATOR_BASE);
	goya_pb_set_block(hdev, mmMME1_WR_REGULATOR_BASE);
	goya_pb_set_block(hdev, mmMME2_RTR_BASE);
	goya_pb_set_block(hdev, mmMME2_RD_REGULATOR_BASE);
	goya_pb_set_block(hdev, mmMME2_WR_REGULATOR_BASE);
	goya_pb_set_block(hdev, mmMME3_RTR_BASE);
	goya_pb_set_block(hdev, mmMME3_RD_REGULATOR_BASE);
	goya_pb_set_block(hdev, mmMME3_WR_REGULATOR_BASE);

	goya_pb_set_block(hdev, mmMME4_RTR_BASE);
	goya_pb_set_block(hdev, mmMME4_RD_REGULATOR_BASE);
	goya_pb_set_block(hdev, mmMME4_WR_REGULATOR_BASE);

	goya_pb_set_block(hdev, mmMME5_RTR_BASE);
	goya_pb_set_block(hdev, mmMME5_RD_REGULATOR_BASE);
	goya_pb_set_block(hdev, mmMME5_WR_REGULATOR_BASE);

	goya_pb_set_block(hdev, mmMME6_RTR_BASE);
	goya_pb_set_block(hdev, mmMME6_RD_REGULATOR_BASE);
	goya_pb_set_block(hdev, mmMME6_WR_REGULATOR_BASE);

	pb_addr = (mmMME_DUMMY & ~0xFFF) + PROT_BITS_OFFS;
	word_offset = ((mmMME_DUMMY & PROT_BITS_OFFS) >> 7) << 2;
	mask = 1 << ((mmMME_DUMMY & 0x7F) >> 2);
	mask |= 1 << ((mmMME_RESET & 0x7F) >> 2);
	mask |= 1 << ((mmMME_STALL & 0x7F) >> 2);
	mask |= 1 << ((mmMME_SM_BASE_ADDRESS_LOW & 0x7F) >> 2);
	mask |= 1 << ((mmMME_SM_BASE_ADDRESS_HIGH & 0x7F) >> 2);
	mask |= 1 << ((mmMME_DBGMEM_ADD & 0x7F) >> 2);
	mask |= 1 << ((mmMME_DBGMEM_DATA_WR & 0x7F) >> 2);
	mask |= 1 << ((mmMME_DBGMEM_DATA_RD & 0x7F) >> 2);
	mask |= 1 << ((mmMME_DBGMEM_CTRL & 0x7F) >> 2);
	mask |= 1 << ((mmMME_DBGMEM_RC & 0x7F) >> 2);
	mask |= 1 << ((mmMME_LOG_SHADOW & 0x7F) >> 2);

	WREG32(pb_addr + word_offset, ~mask);

	pb_addr = (mmMME_STORE_MAX_CREDIT & ~0xFFF) + PROT_BITS_OFFS;
	word_offset = ((mmMME_STORE_MAX_CREDIT & PROT_BITS_OFFS) >> 7) << 2;
	mask = 1 << ((mmMME_STORE_MAX_CREDIT & 0x7F) >> 2);
	mask |= 1 << ((mmMME_AGU & 0x7F) >> 2);
	mask |= 1 << ((mmMME_SBA & 0x7F) >> 2);
	mask |= 1 << ((mmMME_SBB & 0x7F) >> 2);
	mask |= 1 << ((mmMME_SBC & 0x7F) >> 2);
	mask |= 1 << ((mmMME_WBC & 0x7F) >> 2);
	mask |= 1 << ((mmMME_SBA_CONTROL_DATA & 0x7F) >> 2);
	mask |= 1 << ((mmMME_SBB_CONTROL_DATA & 0x7F) >> 2);
	mask |= 1 << ((mmMME_SBC_CONTROL_DATA & 0x7F) >> 2);
	mask |= 1 << ((mmMME_WBC_CONTROL_DATA & 0x7F) >> 2);
	mask |= 1 << ((mmMME_TE & 0x7F) >> 2);
	mask |= 1 << ((mmMME_TE2DEC & 0x7F) >> 2);
	mask |= 1 << ((mmMME_REI_STATUS & 0x7F) >> 2);
	mask |= 1 << ((mmMME_REI_MASK & 0x7F) >> 2);
	mask |= 1 << ((mmMME_SEI_STATUS & 0x7F) >> 2);
	mask |= 1 << ((mmMME_SEI_MASK & 0x7F) >> 2);
	mask |= 1 << ((mmMME_SPI_STATUS & 0x7F) >> 2);
	mask |= 1 << ((mmMME_SPI_MASK & 0x7F) >> 2);

	WREG32(pb_addr + word_offset, ~mask);

	pb_addr = (mmMME_QM_GLBL_CFG0 & ~0xFFF) + PROT_BITS_OFFS;
	word_offset = ((mmMME_QM_GLBL_CFG0 & PROT_BITS_OFFS) >> 7) << 2;
	mask = 1 << ((mmMME_QM_GLBL_CFG0 & 0x7F) >> 2);
	mask |= 1 << ((mmMME_QM_GLBL_CFG1 & 0x7F) >> 2);
	mask |= 1 << ((mmMME_QM_GLBL_PROT & 0x7F) >> 2);
	mask |= 1 << ((mmMME_QM_GLBL_ERR_CFG & 0x7F) >> 2);
	mask |= 1 << ((mmMME_QM_GLBL_ERR_ADDR_LO & 0x7F) >> 2);
	mask |= 1 << ((mmMME_QM_GLBL_ERR_ADDR_HI & 0x7F) >> 2);
	mask |= 1 << ((mmMME_QM_GLBL_ERR_WDATA & 0x7F) >> 2);
	mask |= 1 << ((mmMME_QM_GLBL_SECURE_PROPS & 0x7F) >> 2);
	mask |= 1 << ((mmMME_QM_GLBL_NON_SECURE_PROPS & 0x7F) >> 2);
	mask |= 1 << ((mmMME_QM_GLBL_STS0 & 0x7F) >> 2);
	mask |= 1 << ((mmMME_QM_GLBL_STS1 & 0x7F) >> 2);
	mask |= 1 << ((mmMME_QM_PQ_BASE_LO & 0x7F) >> 2);
	mask |= 1 << ((mmMME_QM_PQ_BASE_HI & 0x7F) >> 2);
	mask |= 1 << ((mmMME_QM_PQ_SIZE & 0x7F) >> 2);
	mask |= 1 << ((mmMME_QM_PQ_PI & 0x7F) >> 2);
	mask |= 1 << ((mmMME_QM_PQ_CI & 0x7F) >> 2);
	mask |= 1 << ((mmMME_QM_PQ_CFG0 & 0x7F) >> 2);
	mask |= 1 << ((mmMME_QM_PQ_CFG1 & 0x7F) >> 2);
	mask |= 1 << ((mmMME_QM_PQ_ARUSER & 0x7F) >> 2);

	WREG32(pb_addr + word_offset, ~mask);

	pb_addr = (mmMME_QM_PQ_PUSH0 & ~0xFFF) + PROT_BITS_OFFS;
	word_offset = ((mmMME_QM_PQ_PUSH0 & PROT_BITS_OFFS) >> 7) << 2;
	mask = 1 << ((mmMME_QM_PQ_PUSH0 & 0x7F) >> 2);
	mask |= 1 << ((mmMME_QM_PQ_PUSH1 & 0x7F) >> 2);
	mask |= 1 << ((mmMME_QM_PQ_PUSH2 & 0x7F) >> 2);
	mask |= 1 << ((mmMME_QM_PQ_PUSH3 & 0x7F) >> 2);
	mask |= 1 << ((mmMME_QM_PQ_STS0 & 0x7F) >> 2);
	mask |= 1 << ((mmMME_QM_PQ_STS1 & 0x7F) >> 2);
	mask |= 1 << ((mmMME_QM_PQ_RD_RATE_LIM_EN & 0x7F) >> 2);
	mask |= 1 << ((mmMME_QM_PQ_RD_RATE_LIM_RST_TOKEN & 0x7F) >> 2);
	mask |= 1 << ((mmMME_QM_PQ_RD_RATE_LIM_SAT & 0x7F) >> 2);
	mask |= 1 << ((mmMME_QM_PQ_RD_RATE_LIM_TOUT & 0x7F) >> 2);
	mask |= 1 << ((mmMME_QM_CQ_CFG0 & 0x7F) >> 2);
	mask |= 1 << ((mmMME_QM_CQ_CFG1 & 0x7F) >> 2);
	mask |= 1 << ((mmMME_QM_CQ_ARUSER & 0x7F) >> 2);
	mask |= 1 << ((mmMME_QM_CQ_PTR_LO & 0x7F) >> 2);
	mask |= 1 << ((mmMME_QM_CQ_PTR_HI & 0x7F) >> 2);
	mask |= 1 << ((mmMME_QM_CQ_TSIZE & 0x7F) >> 2);
	mask |= 1 << ((mmMME_QM_CQ_CTL & 0x7F) >> 2);
	mask |= 1 << ((mmMME_QM_CQ_PTR_LO_STS & 0x7F) >> 2);
	mask |= 1 << ((mmMME_QM_CQ_PTR_HI_STS & 0x7F) >> 2);
	mask |= 1 << ((mmMME_QM_CQ_TSIZE_STS & 0x7F) >> 2);
	mask |= 1 << ((mmMME_QM_CQ_CTL_STS & 0x7F) >> 2);
	mask |= 1 << ((mmMME_QM_CQ_STS0 & 0x7F) >> 2);
	mask |= 1 << ((mmMME_QM_CQ_STS1 & 0x7F) >> 2);
	mask |= 1 << ((mmMME_QM_CQ_RD_RATE_LIM_EN & 0x7F) >> 2);
	mask |= 1 << ((mmMME_QM_CQ_RD_RATE_LIM_RST_TOKEN & 0x7F) >> 2);
	mask |= 1 << ((mmMME_QM_CQ_RD_RATE_LIM_SAT & 0x7F) >> 2);
	mask |= 1 << ((mmMME_QM_CQ_RD_RATE_LIM_TOUT & 0x7F) >> 2);

	WREG32(pb_addr + word_offset, ~mask);

	pb_addr = (mmMME_QM_CQ_IFIFO_CNT & ~0xFFF) + PROT_BITS_OFFS;
	word_offset = ((mmMME_QM_CQ_IFIFO_CNT & PROT_BITS_OFFS) >> 7) << 2;
	mask = 1 << ((mmMME_QM_CQ_IFIFO_CNT & 0x7F) >> 2);
	mask |= 1 << ((mmMME_QM_CP_MSG_BASE0_ADDR_LO & 0x7F) >> 2);
	mask |= 1 << ((mmMME_QM_CP_MSG_BASE0_ADDR_HI & 0x7F) >> 2);
	mask |= 1 << ((mmMME_QM_CP_MSG_BASE1_ADDR_LO & 0x7F) >> 2);
	mask |= 1 << ((mmMME_QM_CP_MSG_BASE1_ADDR_HI & 0x7F) >> 2);
	mask |= 1 << ((mmMME_QM_CP_MSG_BASE2_ADDR_LO & 0x7F) >> 2);
	mask |= 1 << ((mmMME_QM_CP_MSG_BASE2_ADDR_HI & 0x7F) >> 2);
	mask |= 1 << ((mmMME_QM_CP_MSG_BASE3_ADDR_LO & 0x7F) >> 2);
	mask |= 1 << ((mmMME_QM_CP_MSG_BASE3_ADDR_HI & 0x7F) >> 2);
	mask |= 1 << ((mmMME_QM_CP_LDMA_TSIZE_OFFSET & 0x7F) >> 2);
	mask |= 1 << ((mmMME_QM_CP_LDMA_SRC_BASE_LO_OFFSET & 0x7F) >> 2);
	mask |= 1 << ((mmMME_QM_CP_LDMA_SRC_BASE_HI_OFFSET & 0x7F) >> 2);
	mask |= 1 << ((mmMME_QM_CP_LDMA_DST_BASE_LO_OFFSET & 0x7F) >> 2);
	mask |= 1 << ((mmMME_QM_CP_LDMA_DST_BASE_HI_OFFSET & 0x7F) >> 2);
	mask |= 1 << ((mmMME_QM_CP_LDMA_COMMIT_OFFSET & 0x7F) >> 2);

	WREG32(pb_addr + word_offset, ~mask);

	pb_addr = (mmMME_QM_CP_STS & ~0xFFF) + PROT_BITS_OFFS;
	word_offset = ((mmMME_QM_CP_STS & PROT_BITS_OFFS) >> 7) << 2;
	mask = 1 << ((mmMME_QM_CP_STS & 0x7F) >> 2);
	mask |= 1 << ((mmMME_QM_CP_CURRENT_INST_LO & 0x7F) >> 2);
	mask |= 1 << ((mmMME_QM_CP_CURRENT_INST_HI & 0x7F) >> 2);
	mask |= 1 << ((mmMME_QM_CP_BARRIER_CFG & 0x7F) >> 2);
	mask |= 1 << ((mmMME_QM_CP_DBG_0 & 0x7F) >> 2);
	mask |= 1 << ((mmMME_QM_PQ_BUF_ADDR & 0x7F) >> 2);
	mask |= 1 << ((mmMME_QM_PQ_BUF_RDATA & 0x7F) >> 2);
	mask |= 1 << ((mmMME_QM_CQ_BUF_ADDR & 0x7F) >> 2);
	mask |= 1 << ((mmMME_QM_CQ_BUF_RDATA & 0x7F) >> 2);

	WREG32(pb_addr + word_offset, ~mask);

	pb_addr = (mmMME_CMDQ_GLBL_CFG0 & ~0xFFF) + PROT_BITS_OFFS;
	word_offset = ((mmMME_CMDQ_GLBL_CFG0 & PROT_BITS_OFFS) >> 7) << 2;
	mask = 1 << ((mmMME_CMDQ_GLBL_CFG0 & 0x7F) >> 2);
	mask |= 1 << ((mmMME_CMDQ_GLBL_CFG1 & 0x7F) >> 2);
	mask |= 1 << ((mmMME_CMDQ_GLBL_PROT & 0x7F) >> 2);
	mask |= 1 << ((mmMME_CMDQ_GLBL_ERR_CFG & 0x7F) >> 2);
	mask |= 1 << ((mmMME_CMDQ_GLBL_ERR_ADDR_LO & 0x7F) >> 2);
	mask |= 1 << ((mmMME_CMDQ_GLBL_ERR_ADDR_HI & 0x7F) >> 2);
	mask |= 1 << ((mmMME_CMDQ_GLBL_ERR_WDATA & 0x7F) >> 2);
	mask |= 1 << ((mmMME_CMDQ_GLBL_SECURE_PROPS & 0x7F) >> 2);
	mask |= 1 << ((mmMME_CMDQ_GLBL_NON_SECURE_PROPS & 0x7F) >> 2);
	mask |= 1 << ((mmMME_CMDQ_GLBL_STS0 & 0x7F) >> 2);
	mask |= 1 << ((mmMME_CMDQ_GLBL_STS1 & 0x7F) >> 2);

	WREG32(pb_addr + word_offset, ~mask);

	pb_addr = (mmMME_CMDQ_CQ_CFG0 & ~0xFFF) + PROT_BITS_OFFS;
	word_offset = ((mmMME_CMDQ_CQ_CFG0 & PROT_BITS_OFFS) >> 7) << 2;
	mask = 1 << ((mmMME_CMDQ_CQ_CFG0 & 0x7F) >> 2);
	mask |= 1 << ((mmMME_CMDQ_CQ_CFG1 & 0x7F) >> 2);
	mask |= 1 << ((mmMME_CMDQ_CQ_ARUSER & 0x7F) >> 2);
	mask |= 1 << ((mmMME_CMDQ_CQ_PTR_LO_STS & 0x7F) >> 2);
	mask |= 1 << ((mmMME_CMDQ_CQ_PTR_HI_STS & 0x7F) >> 2);
	mask |= 1 << ((mmMME_CMDQ_CQ_TSIZE_STS & 0x7F) >> 2);
	mask |= 1 << ((mmMME_CMDQ_CQ_CTL_STS & 0x7F) >> 2);
	mask |= 1 << ((mmMME_CMDQ_CQ_STS0 & 0x7F) >> 2);
	mask |= 1 << ((mmMME_CMDQ_CQ_STS1 & 0x7F) >> 2);
	mask |= 1 << ((mmMME_CMDQ_CQ_RD_RATE_LIM_EN & 0x7F) >> 2);
	mask |= 1 << ((mmMME_CMDQ_CQ_RD_RATE_LIM_RST_TOKEN & 0x7F) >> 2);
	mask |= 1 << ((mmMME_CMDQ_CQ_RD_RATE_LIM_SAT & 0x7F) >> 2);
	mask |= 1 << ((mmMME_CMDQ_CQ_RD_RATE_LIM_TOUT & 0x7F) >> 2);

	WREG32(pb_addr + word_offset, ~mask);

	pb_addr = (mmMME_CMDQ_CQ_IFIFO_CNT & ~0xFFF) + PROT_BITS_OFFS;
	word_offset = ((mmMME_CMDQ_CQ_IFIFO_CNT &
			PROT_BITS_OFFS) >> 7) << 2;
	mask = 1 << ((mmMME_CMDQ_CQ_IFIFO_CNT & 0x7F) >> 2);
	mask |= 1 << ((mmMME_CMDQ_CP_MSG_BASE0_ADDR_LO & 0x7F) >> 2);
	mask |= 1 << ((mmMME_CMDQ_CP_MSG_BASE0_ADDR_HI & 0x7F) >> 2);
	mask |= 1 << ((mmMME_CMDQ_CP_MSG_BASE1_ADDR_LO & 0x7F) >> 2);
	mask |= 1 << ((mmMME_CMDQ_CP_MSG_BASE1_ADDR_HI & 0x7F) >> 2);
	mask |= 1 << ((mmMME_CMDQ_CP_MSG_BASE2_ADDR_LO & 0x7F) >> 2);
	mask |= 1 << ((mmMME_CMDQ_CP_MSG_BASE2_ADDR_HI & 0x7F) >> 2);
	mask |= 1 << ((mmMME_CMDQ_CP_MSG_BASE3_ADDR_LO & 0x7F) >> 2);
	mask |= 1 << ((mmMME_CMDQ_CP_MSG_BASE3_ADDR_HI & 0x7F) >> 2);
	mask |= 1 << ((mmMME_CMDQ_CP_LDMA_TSIZE_OFFSET & 0x7F) >> 2);
	mask |= 1 << ((mmMME_CMDQ_CP_LDMA_SRC_BASE_LO_OFFSET & 0x7F) >> 2);
	mask |= 1 << ((mmMME_CMDQ_CP_LDMA_SRC_BASE_HI_OFFSET & 0x7F) >> 2);
	mask |= 1 << ((mmMME_CMDQ_CP_LDMA_DST_BASE_LO_OFFSET & 0x7F) >> 2);
	mask |= 1 << ((mmMME_CMDQ_CP_LDMA_DST_BASE_HI_OFFSET & 0x7F) >> 2);
	mask |= 1 << ((mmMME_CMDQ_CP_LDMA_COMMIT_OFFSET & 0x7F) >> 2);
	mask |= 1 << ((mmMME_CMDQ_CP_STS & 0x7F) >> 2);
	mask |= 1 << ((mmMME_CMDQ_CP_CURRENT_INST_LO & 0x7F) >> 2);

	WREG32(pb_addr + word_offset, ~mask);

	pb_addr = (mmMME_CMDQ_CP_CURRENT_INST_HI & ~0xFFF) + PROT_BITS_OFFS;
	word_offset = ((mmMME_CMDQ_CP_CURRENT_INST_HI & PROT_BITS_OFFS) >> 7)
			<< 2;
	mask = 1 << ((mmMME_CMDQ_CP_CURRENT_INST_HI & 0x7F) >> 2);
	mask |= 1 << ((mmMME_CMDQ_CP_BARRIER_CFG & 0x7F) >> 2);
	mask |= 1 << ((mmMME_CMDQ_CP_DBG_0 & 0x7F) >> 2);
	mask |= 1 << ((mmMME_CMDQ_CQ_BUF_ADDR & 0x7F) >> 2);
	mask |= 1 << ((mmMME_CMDQ_CQ_BUF_RDATA & 0x7F) >> 2);

	WREG32(pb_addr + word_offset, ~mask);

	pb_addr = (mmMME_SBB_POWER_ECO1 & ~0xFFF) + PROT_BITS_OFFS;
	word_offset = ((mmMME_SBB_POWER_ECO1 & PROT_BITS_OFFS) >> 7) << 2;
	mask = 1 << ((mmMME_SBB_POWER_ECO1 & 0x7F) >> 2);
	mask |= 1 << ((mmMME_SBB_POWER_ECO2 & 0x7F) >> 2);

	WREG32(pb_addr + word_offset, ~mask);
}

static void goya_init_dma_protection_bits(struct hl_device *hdev)
{
	u32 pb_addr, mask;
	u8 word_offset;

	goya_pb_set_block(hdev, mmDMA_NRTR_BASE);
	goya_pb_set_block(hdev, mmDMA_RD_REGULATOR_BASE);
	goya_pb_set_block(hdev, mmDMA_WR_REGULATOR_BASE);

	pb_addr = (mmDMA_QM_0_GLBL_CFG0 & ~0xFFF) + PROT_BITS_OFFS;
	word_offset = ((mmDMA_QM_0_GLBL_CFG0 & PROT_BITS_OFFS) >> 7) << 2;
	mask = 1 << ((mmDMA_QM_0_GLBL_CFG0 & 0x7F) >> 2);
	mask |= 1 << ((mmDMA_QM_0_GLBL_CFG1 & 0x7F) >> 2);
	mask |= 1 << ((mmDMA_QM_0_GLBL_PROT & 0x7F) >> 2);
	mask |= 1 << ((mmDMA_QM_0_GLBL_ERR_CFG & 0x7F) >> 2);
	mask |= 1 << ((mmDMA_QM_0_GLBL_ERR_ADDR_LO & 0x7F) >> 2);
	mask |= 1 << ((mmDMA_QM_0_GLBL_ERR_ADDR_HI & 0x7F) >> 2);
	mask |= 1 << ((mmDMA_QM_0_GLBL_ERR_WDATA & 0x7F) >> 2);
	mask |= 1 << ((mmDMA_QM_0_GLBL_SECURE_PROPS & 0x7F) >> 2);
	mask |= 1 << ((mmDMA_QM_0_GLBL_NON_SECURE_PROPS & 0x7F) >> 2);
	mask |= 1 << ((mmDMA_QM_0_GLBL_STS0 & 0x7F) >> 2);
	mask |= 1 << ((mmDMA_QM_0_GLBL_STS1 & 0x7F) >> 2);
	mask |= 1 << ((mmDMA_QM_0_PQ_BASE_LO & 0x7F) >> 2);
	mask |= 1 << ((mmDMA_QM_0_PQ_BASE_HI & 0x7F) >> 2);
	mask |= 1 << ((mmDMA_QM_0_PQ_SIZE & 0x7F) >> 2);
	mask |= 1 << ((mmDMA_QM_0_PQ_PI & 0x7F) >> 2);
	mask |= 1 << ((mmDMA_QM_0_PQ_CI & 0x7F) >> 2);
	mask |= 1 << ((mmDMA_QM_0_PQ_CFG0 & 0x7F) >> 2);
	mask |= 1 << ((mmDMA_QM_0_PQ_CFG1 & 0x7F) >> 2);
	mask |= 1 << ((mmDMA_QM_0_PQ_ARUSER & 0x7F) >> 2);

	WREG32(pb_addr + word_offset, ~mask);

	pb_addr = (mmDMA_QM_0_PQ_PUSH0 & ~0xFFF) + PROT_BITS_OFFS;
	word_offset = ((mmDMA_QM_0_PQ_PUSH0 & PROT_BITS_OFFS) >> 7) << 2;
	mask = 1 << ((mmDMA_QM_0_PQ_PUSH0 & 0x7F) >> 2);
	mask |= 1 << ((mmDMA_QM_0_PQ_PUSH1 & 0x7F) >> 2);
	mask |= 1 << ((mmDMA_QM_0_PQ_PUSH2 & 0x7F) >> 2);
	mask |= 1 << ((mmDMA_QM_0_PQ_PUSH3 & 0x7F) >> 2);
	mask |= 1 << ((mmDMA_QM_0_PQ_STS0 & 0x7F) >> 2);
	mask |= 1 << ((mmDMA_QM_0_PQ_STS1 & 0x7F) >> 2);
	mask |= 1 << ((mmDMA_QM_0_PQ_RD_RATE_LIM_EN & 0x7F) >> 2);
	mask |= 1 << ((mmDMA_QM_0_PQ_RD_RATE_LIM_RST_TOKEN & 0x7F) >> 2);
	mask |= 1 << ((mmDMA_QM_0_PQ_RD_RATE_LIM_SAT & 0x7F) >> 2);
	mask |= 1 << ((mmDMA_QM_0_PQ_RD_RATE_LIM_TOUT & 0x7F) >> 2);
	mask |= 1 << ((mmDMA_QM_0_CQ_CFG0 & 0x7F) >> 2);
	mask |= 1 << ((mmDMA_QM_0_CQ_CFG1 & 0x7F) >> 2);
	mask |= 1 << ((mmDMA_QM_0_CQ_ARUSER & 0x7F) >> 2);
	mask |= 1 << ((mmDMA_QM_0_CQ_PTR_LO & 0x7F) >> 2);
	mask |= 1 << ((mmDMA_QM_0_CQ_PTR_HI & 0x7F) >> 2);
	mask |= 1 << ((mmDMA_QM_0_CQ_TSIZE & 0x7F) >> 2);
	mask |= 1 << ((mmDMA_QM_0_CQ_CTL & 0x7F) >> 2);
	mask |= 1 << ((mmDMA_QM_0_CQ_PTR_LO_STS & 0x7F) >> 2);
	mask |= 1 << ((mmDMA_QM_0_CQ_PTR_HI_STS & 0x7F) >> 2);
	mask |= 1 << ((mmDMA_QM_0_CQ_TSIZE_STS & 0x7F) >> 2);
	mask |= 1 << ((mmDMA_QM_0_CQ_CTL_STS & 0x7F) >> 2);
	mask |= 1 << ((mmDMA_QM_0_CQ_STS0 & 0x7F) >> 2);
	mask |= 1 << ((mmDMA_QM_0_CQ_STS1 & 0x7F) >> 2);
	mask |= 1 << ((mmDMA_QM_0_CQ_RD_RATE_LIM_EN & 0x7F) >> 2);
	mask |= 1 << ((mmDMA_QM_0_CQ_RD_RATE_LIM_RST_TOKEN & 0x7F) >> 2);
	mask |= 1 << ((mmDMA_QM_0_CQ_RD_RATE_LIM_SAT & 0x7F) >> 2);
	mask |= 1 << ((mmDMA_QM_0_CQ_RD_RATE_LIM_TOUT & 0x7F) >> 2);

	WREG32(pb_addr + word_offset, ~mask);

	pb_addr = (mmDMA_QM_0_CQ_IFIFO_CNT & ~0xFFF) + PROT_BITS_OFFS;
	word_offset = ((mmDMA_QM_0_CQ_IFIFO_CNT & PROT_BITS_OFFS) >> 7) << 2;
	mask = 1 << ((mmDMA_QM_0_CQ_IFIFO_CNT & 0x7F) >> 2);
	mask |= 1 << ((mmDMA_QM_0_CP_MSG_BASE0_ADDR_LO & 0x7F) >> 2);
	mask |= 1 << ((mmDMA_QM_0_CP_MSG_BASE0_ADDR_HI & 0x7F) >> 2);
	mask |= 1 << ((mmDMA_QM_0_CP_MSG_BASE1_ADDR_LO & 0x7F) >> 2);
	mask |= 1 << ((mmDMA_QM_0_CP_MSG_BASE1_ADDR_HI & 0x7F) >> 2);
	mask |= 1 << ((mmDMA_QM_0_CP_MSG_BASE2_ADDR_LO & 0x7F) >> 2);
	mask |= 1 << ((mmDMA_QM_0_CP_MSG_BASE2_ADDR_HI & 0x7F) >> 2);
	mask |= 1 << ((mmDMA_QM_0_CP_MSG_BASE3_ADDR_LO & 0x7F) >> 2);
	mask |= 1 << ((mmDMA_QM_0_CP_MSG_BASE3_ADDR_HI & 0x7F) >> 2);
	mask |= 1 << ((mmDMA_QM_0_CP_LDMA_TSIZE_OFFSET & 0x7F) >> 2);
	mask |= 1 << ((mmDMA_QM_0_CP_LDMA_SRC_BASE_LO_OFFSET & 0x7F) >> 2);
	mask |= 1 << ((mmDMA_QM_0_CP_LDMA_SRC_BASE_HI_OFFSET & 0x7F) >> 2);
	mask |= 1 << ((mmDMA_QM_0_CP_LDMA_DST_BASE_LO_OFFSET & 0x7F) >> 2);
	mask |= 1 << ((mmDMA_QM_0_CP_LDMA_DST_BASE_HI_OFFSET & 0x7F) >> 2);
	mask |= 1 << ((mmDMA_QM_0_CP_LDMA_COMMIT_OFFSET & 0x7F) >> 2);

	WREG32(pb_addr + word_offset, ~mask);

	goya_pb_set_block(hdev, mmDMA_CH_0_BASE);

	pb_addr = (mmDMA_QM_1_GLBL_CFG0 & ~0xFFF) + PROT_BITS_OFFS;
	word_offset = ((mmDMA_QM_1_GLBL_CFG0 & PROT_BITS_OFFS) >> 7) << 2;
	mask = 1 << ((mmDMA_QM_1_GLBL_CFG0 & 0x7F) >> 2);
	mask |= 1 << ((mmDMA_QM_1_GLBL_CFG1 & 0x7F) >> 2);
	mask |= 1 << ((mmDMA_QM_1_GLBL_PROT & 0x7F) >> 2);
	mask |= 1 << ((mmDMA_QM_1_GLBL_ERR_CFG & 0x7F) >> 2);
	mask |= 1 << ((mmDMA_QM_1_GLBL_ERR_ADDR_LO & 0x7F) >> 2);
	mask |= 1 << ((mmDMA_QM_1_GLBL_ERR_ADDR_HI & 0x7F) >> 2);
	mask |= 1 << ((mmDMA_QM_1_GLBL_ERR_WDATA & 0x7F) >> 2);
	mask |= 1 << ((mmDMA_QM_1_GLBL_SECURE_PROPS & 0x7F) >> 2);
	mask |= 1 << ((mmDMA_QM_1_GLBL_NON_SECURE_PROPS & 0x7F) >> 2);
	mask |= 1 << ((mmDMA_QM_1_GLBL_STS0 & 0x7F) >> 2);
	mask |= 1 << ((mmDMA_QM_1_GLBL_STS1 & 0x7F) >> 2);
	mask |= 1 << ((mmDMA_QM_1_PQ_BASE_LO & 0x7F) >> 2);
	mask |= 1 << ((mmDMA_QM_1_PQ_BASE_HI & 0x7F) >> 2);
	mask |= 1 << ((mmDMA_QM_1_PQ_SIZE & 0x7F) >> 2);
	mask |= 1 << ((mmDMA_QM_1_PQ_PI & 0x7F) >> 2);
	mask |= 1 << ((mmDMA_QM_1_PQ_CI & 0x7F) >> 2);
	mask |= 1 << ((mmDMA_QM_1_PQ_CFG0 & 0x7F) >> 2);
	mask |= 1 << ((mmDMA_QM_1_PQ_CFG1 & 0x7F) >> 2);
	mask |= 1 << ((mmDMA_QM_1_PQ_ARUSER & 0x7F) >> 2);

	WREG32(pb_addr + word_offset, ~mask);

	pb_addr = (mmDMA_QM_1_PQ_PUSH0 & ~0xFFF) + PROT_BITS_OFFS;
	word_offset = ((mmDMA_QM_1_PQ_PUSH0 & PROT_BITS_OFFS) >> 7) << 2;
	mask = 1 << ((mmDMA_QM_1_PQ_PUSH0 & 0x7F) >> 2);
	mask |= 1 << ((mmDMA_QM_1_PQ_PUSH1 & 0x7F) >> 2);
	mask |= 1 << ((mmDMA_QM_1_PQ_PUSH2 & 0x7F) >> 2);
	mask |= 1 << ((mmDMA_QM_1_PQ_PUSH3 & 0x7F) >> 2);
	mask |= 1 << ((mmDMA_QM_1_PQ_STS0 & 0x7F) >> 2);
	mask |= 1 << ((mmDMA_QM_1_PQ_STS1 & 0x7F) >> 2);
	mask |= 1 << ((mmDMA_QM_1_PQ_RD_RATE_LIM_EN & 0x7F) >> 2);
	mask |= 1 << ((mmDMA_QM_1_PQ_RD_RATE_LIM_RST_TOKEN & 0x7F) >> 2);
	mask |= 1 << ((mmDMA_QM_1_PQ_RD_RATE_LIM_SAT & 0x7F) >> 2);
	mask |= 1 << ((mmDMA_QM_1_PQ_RD_RATE_LIM_TOUT & 0x7F) >> 2);
	mask |= 1 << ((mmDMA_QM_1_CQ_CFG0 & 0x7F) >> 2);
	mask |= 1 << ((mmDMA_QM_1_CQ_CFG1 & 0x7F) >> 2);
	mask |= 1 << ((mmDMA_QM_1_CQ_ARUSER & 0x7F) >> 2);
	mask |= 1 << ((mmDMA_QM_1_CQ_PTR_LO & 0x7F) >> 2);
	mask |= 1 << ((mmDMA_QM_1_CQ_PTR_HI & 0x7F) >> 2);
	mask |= 1 << ((mmDMA_QM_1_CQ_TSIZE & 0x7F) >> 2);
	mask |= 1 << ((mmDMA_QM_1_CQ_CTL & 0x7F) >> 2);
	mask |= 1 << ((mmDMA_QM_1_CQ_PTR_LO_STS & 0x7F) >> 2);
	mask |= 1 << ((mmDMA_QM_1_CQ_PTR_HI_STS & 0x7F) >> 2);
	mask |= 1 << ((mmDMA_QM_1_CQ_TSIZE_STS & 0x7F) >> 2);
	mask |= 1 << ((mmDMA_QM_1_CQ_CTL_STS & 0x7F) >> 2);
	mask |= 1 << ((mmDMA_QM_1_CQ_STS0 & 0x7F) >> 2);
	mask |= 1 << ((mmDMA_QM_1_CQ_STS1 & 0x7F) >> 2);
	mask |= 1 << ((mmDMA_QM_1_CQ_RD_RATE_LIM_EN & 0x7F) >> 2);
	mask |= 1 << ((mmDMA_QM_1_CQ_RD_RATE_LIM_RST_TOKEN & 0x7F) >> 2);
	mask |= 1 << ((mmDMA_QM_1_CQ_RD_RATE_LIM_SAT & 0x7F) >> 2);
	mask |= 1 << ((mmDMA_QM_1_CQ_RD_RATE_LIM_TOUT & 0x7F) >> 2);

	WREG32(pb_addr + word_offset, ~mask);

	pb_addr = (mmDMA_QM_1_CQ_IFIFO_CNT & ~0xFFF) + PROT_BITS_OFFS;
	word_offset = ((mmDMA_QM_1_CQ_IFIFO_CNT & PROT_BITS_OFFS) >> 7) << 2;
	mask = 1 << ((mmDMA_QM_1_CQ_IFIFO_CNT & 0x7F) >> 2);
	mask |= 1 << ((mmDMA_QM_1_CP_MSG_BASE0_ADDR_LO & 0x7F) >> 2);
	mask |= 1 << ((mmDMA_QM_1_CP_MSG_BASE0_ADDR_HI & 0x7F) >> 2);
	mask |= 1 << ((mmDMA_QM_1_CP_MSG_BASE1_ADDR_LO & 0x7F) >> 2);
	mask |= 1 << ((mmDMA_QM_1_CP_MSG_BASE1_ADDR_HI & 0x7F) >> 2);
	mask |= 1 << ((mmDMA_QM_1_CP_MSG_BASE2_ADDR_LO & 0x7F) >> 2);
	mask |= 1 << ((mmDMA_QM_1_CP_MSG_BASE2_ADDR_HI & 0x7F) >> 2);
	mask |= 1 << ((mmDMA_QM_1_CP_MSG_BASE3_ADDR_LO & 0x7F) >> 2);
	mask |= 1 << ((mmDMA_QM_1_CP_MSG_BASE3_ADDR_HI & 0x7F) >> 2);
	mask |= 1 << ((mmDMA_QM_1_CP_LDMA_TSIZE_OFFSET & 0x7F) >> 2);
	mask |= 1 << ((mmDMA_QM_1_CP_LDMA_SRC_BASE_LO_OFFSET & 0x7F) >> 2);
	mask |= 1 << ((mmDMA_QM_1_CP_LDMA_SRC_BASE_HI_OFFSET & 0x7F) >> 2);
	mask |= 1 << ((mmDMA_QM_1_CP_LDMA_DST_BASE_LO_OFFSET & 0x7F) >> 2);
	mask |= 1 << ((mmDMA_QM_1_CP_LDMA_DST_BASE_HI_OFFSET & 0x7F) >> 2);
	mask |= 1 << ((mmDMA_QM_1_CP_LDMA_COMMIT_OFFSET & 0x7F) >> 2);

	WREG32(pb_addr + word_offset, ~mask);

	goya_pb_set_block(hdev, mmDMA_CH_1_BASE);

	pb_addr = (mmDMA_QM_2_GLBL_CFG0 & ~0xFFF) + PROT_BITS_OFFS;
	word_offset = ((mmDMA_QM_2_GLBL_CFG0 & PROT_BITS_OFFS) >> 7) << 2;
	mask = 1 << ((mmDMA_QM_2_GLBL_CFG0 & 0x7F) >> 2);
	mask |= 1 << ((mmDMA_QM_2_GLBL_CFG1 & 0x7F) >> 2);
	mask |= 1 << ((mmDMA_QM_2_GLBL_PROT & 0x7F) >> 2);
	mask |= 1 << ((mmDMA_QM_2_GLBL_ERR_CFG & 0x7F) >> 2);
	mask |= 1 << ((mmDMA_QM_2_GLBL_ERR_ADDR_LO & 0x7F) >> 2);
	mask |= 1 << ((mmDMA_QM_2_GLBL_ERR_ADDR_HI & 0x7F) >> 2);
	mask |= 1 << ((mmDMA_QM_2_GLBL_ERR_WDATA & 0x7F) >> 2);
	mask |= 1 << ((mmDMA_QM_2_GLBL_SECURE_PROPS & 0x7F) >> 2);
	mask |= 1 << ((mmDMA_QM_2_GLBL_NON_SECURE_PROPS & 0x7F) >> 2);
	mask |= 1 << ((mmDMA_QM_2_GLBL_STS0 & 0x7F) >> 2);
	mask |= 1 << ((mmDMA_QM_2_GLBL_STS1 & 0x7F) >> 2);
	mask |= 1 << ((mmDMA_QM_2_PQ_BASE_LO & 0x7F) >> 2);
	mask |= 1 << ((mmDMA_QM_2_PQ_BASE_HI & 0x7F) >> 2);
	mask |= 1 << ((mmDMA_QM_2_PQ_SIZE & 0x7F) >> 2);
	mask |= 1 << ((mmDMA_QM_2_PQ_PI & 0x7F) >> 2);
	mask |= 1 << ((mmDMA_QM_2_PQ_CI & 0x7F) >> 2);
	mask |= 1 << ((mmDMA_QM_2_PQ_CFG0 & 0x7F) >> 2);
	mask |= 1 << ((mmDMA_QM_2_PQ_CFG1 & 0x7F) >> 2);
	mask |= 1 << ((mmDMA_QM_2_PQ_ARUSER & 0x7F) >> 2);

	WREG32(pb_addr + word_offset, ~mask);

	pb_addr = (mmDMA_QM_2_PQ_PUSH0 & ~0xFFF) + PROT_BITS_OFFS;
	word_offset = ((mmDMA_QM_2_PQ_PUSH0 & PROT_BITS_OFFS) >> 7) << 2;
	mask = 1 << ((mmDMA_QM_2_PQ_PUSH0 & 0x7F) >> 2);
	mask |= 1 << ((mmDMA_QM_2_PQ_PUSH1 & 0x7F) >> 2);
	mask |= 1 << ((mmDMA_QM_2_PQ_PUSH2 & 0x7F) >> 2);
	mask |= 1 << ((mmDMA_QM_2_PQ_PUSH3 & 0x7F) >> 2);
	mask |= 1 << ((mmDMA_QM_2_PQ_STS0 & 0x7F) >> 2);
	mask |= 1 << ((mmDMA_QM_2_PQ_STS1 & 0x7F) >> 2);
	mask |= 1 << ((mmDMA_QM_2_PQ_RD_RATE_LIM_EN & 0x7F) >> 2);
	mask |= 1 << ((mmDMA_QM_2_PQ_RD_RATE_LIM_RST_TOKEN & 0x7F) >> 2);
	mask |= 1 << ((mmDMA_QM_2_PQ_RD_RATE_LIM_SAT & 0x7F) >> 2);
	mask |= 1 << ((mmDMA_QM_2_PQ_RD_RATE_LIM_TOUT & 0x7F) >> 2);
	mask |= 1 << ((mmDMA_QM_2_CQ_CFG0 & 0x7F) >> 2);
	mask |= 1 << ((mmDMA_QM_2_CQ_CFG1 & 0x7F) >> 2);
	mask |= 1 << ((mmDMA_QM_2_CQ_ARUSER & 0x7F) >> 2);
	mask |= 1 << ((mmDMA_QM_2_CQ_PTR_LO & 0x7F) >> 2);
	mask |= 1 << ((mmDMA_QM_2_CQ_PTR_HI & 0x7F) >> 2);
	mask |= 1 << ((mmDMA_QM_2_CQ_TSIZE & 0x7F) >> 2);
	mask |= 1 << ((mmDMA_QM_2_CQ_CTL & 0x7F) >> 2);
	mask |= 1 << ((mmDMA_QM_2_CQ_PTR_LO_STS & 0x7F) >> 2);
	mask |= 1 << ((mmDMA_QM_2_CQ_PTR_HI_STS & 0x7F) >> 2);
	mask |= 1 << ((mmDMA_QM_2_CQ_TSIZE_STS & 0x7F) >> 2);
	mask |= 1 << ((mmDMA_QM_2_CQ_CTL_STS & 0x7F) >> 2);
	mask |= 1 << ((mmDMA_QM_2_CQ_STS0 & 0x7F) >> 2);
	mask |= 1 << ((mmDMA_QM_2_CQ_STS1 & 0x7F) >> 2);
	mask |= 1 << ((mmDMA_QM_2_CQ_RD_RATE_LIM_EN & 0x7F) >> 2);
	mask |= 1 << ((mmDMA_QM_2_CQ_RD_RATE_LIM_RST_TOKEN & 0x7F) >> 2);
	mask |= 1 << ((mmDMA_QM_2_CQ_RD_RATE_LIM_SAT & 0x7F) >> 2);
	mask |= 1 << ((mmDMA_QM_2_CQ_RD_RATE_LIM_TOUT & 0x7F) >> 2);

	WREG32(pb_addr + word_offset, ~mask);

	pb_addr = (mmDMA_QM_2_CQ_IFIFO_CNT & ~0xFFF) + PROT_BITS_OFFS;
	word_offset = ((mmDMA_QM_2_CQ_IFIFO_CNT & PROT_BITS_OFFS) >> 7) << 2;
	mask = 1 << ((mmDMA_QM_2_CQ_IFIFO_CNT & 0x7F) >> 2);
	mask |= 1 << ((mmDMA_QM_2_CP_MSG_BASE0_ADDR_LO & 0x7F) >> 2);
	mask |= 1 << ((mmDMA_QM_2_CP_MSG_BASE0_ADDR_HI & 0x7F) >> 2);
	mask |= 1 << ((mmDMA_QM_2_CP_MSG_BASE1_ADDR_LO & 0x7F) >> 2);
	mask |= 1 << ((mmDMA_QM_2_CP_MSG_BASE1_ADDR_HI & 0x7F) >> 2);
	mask |= 1 << ((mmDMA_QM_2_CP_MSG_BASE2_ADDR_LO & 0x7F) >> 2);
	mask |= 1 << ((mmDMA_QM_2_CP_MSG_BASE2_ADDR_HI & 0x7F) >> 2);
	mask |= 1 << ((mmDMA_QM_2_CP_MSG_BASE3_ADDR_LO & 0x7F) >> 2);
	mask |= 1 << ((mmDMA_QM_2_CP_MSG_BASE3_ADDR_HI & 0x7F) >> 2);
	mask |= 1 << ((mmDMA_QM_2_CP_LDMA_TSIZE_OFFSET & 0x7F) >> 2);
	mask |= 1 << ((mmDMA_QM_2_CP_LDMA_SRC_BASE_LO_OFFSET & 0x7F) >> 2);
	mask |= 1 << ((mmDMA_QM_2_CP_LDMA_SRC_BASE_HI_OFFSET & 0x7F) >> 2);
	mask |= 1 << ((mmDMA_QM_2_CP_LDMA_DST_BASE_LO_OFFSET & 0x7F) >> 2);
	mask |= 1 << ((mmDMA_QM_2_CP_LDMA_DST_BASE_HI_OFFSET & 0x7F) >> 2);
	mask |= 1 << ((mmDMA_QM_2_CP_LDMA_COMMIT_OFFSET & 0x7F) >> 2);

	WREG32(pb_addr + word_offset, ~mask);

	goya_pb_set_block(hdev, mmDMA_CH_2_BASE);

	pb_addr = (mmDMA_QM_3_GLBL_CFG0 & ~0xFFF) + PROT_BITS_OFFS;
	word_offset = ((mmDMA_QM_3_GLBL_CFG0 & PROT_BITS_OFFS) >> 7) << 2;
	mask = 1 << ((mmDMA_QM_3_GLBL_CFG0 & 0x7F) >> 2);
	mask |= 1 << ((mmDMA_QM_3_GLBL_CFG1 & 0x7F) >> 2);
	mask |= 1 << ((mmDMA_QM_3_GLBL_PROT & 0x7F) >> 2);
	mask |= 1 << ((mmDMA_QM_3_GLBL_ERR_CFG & 0x7F) >> 2);
	mask |= 1 << ((mmDMA_QM_3_GLBL_ERR_ADDR_LO & 0x7F) >> 2);
	mask |= 1 << ((mmDMA_QM_3_GLBL_ERR_ADDR_HI & 0x7F) >> 2);
	mask |= 1 << ((mmDMA_QM_3_GLBL_ERR_WDATA & 0x7F) >> 2);
	mask |= 1 << ((mmDMA_QM_3_GLBL_SECURE_PROPS & 0x7F) >> 2);
	mask |= 1 << ((mmDMA_QM_3_GLBL_NON_SECURE_PROPS & 0x7F) >> 2);
	mask |= 1 << ((mmDMA_QM_3_GLBL_STS0 & 0x7F) >> 2);
	mask |= 1 << ((mmDMA_QM_3_GLBL_STS1 & 0x7F) >> 2);
	mask |= 1 << ((mmDMA_QM_3_PQ_BASE_LO & 0x7F) >> 2);
	mask |= 1 << ((mmDMA_QM_3_PQ_BASE_HI & 0x7F) >> 2);
	mask |= 1 << ((mmDMA_QM_3_PQ_SIZE & 0x7F) >> 2);
	mask |= 1 << ((mmDMA_QM_3_PQ_PI & 0x7F) >> 2);
	mask |= 1 << ((mmDMA_QM_3_PQ_CI & 0x7F) >> 2);
	mask |= 1 << ((mmDMA_QM_3_PQ_CFG0 & 0x7F) >> 2);
	mask |= 1 << ((mmDMA_QM_3_PQ_CFG1 & 0x7F) >> 2);
	mask |= 1 << ((mmDMA_QM_3_PQ_ARUSER & 0x7F) >> 2);

	WREG32(pb_addr + word_offset, ~mask);

	pb_addr = (mmDMA_QM_3_PQ_PUSH0 & ~0xFFF) + PROT_BITS_OFFS;
	word_offset = ((mmDMA_QM_3_PQ_PUSH0 & PROT_BITS_OFFS) >> 7) << 2;
	mask = 1 << ((mmDMA_QM_3_PQ_PUSH0 & 0x7F) >> 2);
	mask |= 1 << ((mmDMA_QM_3_PQ_PUSH1 & 0x7F) >> 2);
	mask |= 1 << ((mmDMA_QM_3_PQ_PUSH2 & 0x7F) >> 2);
	mask |= 1 << ((mmDMA_QM_3_PQ_PUSH3 & 0x7F) >> 2);
	mask |= 1 << ((mmDMA_QM_3_PQ_STS0 & 0x7F) >> 2);
	mask |= 1 << ((mmDMA_QM_3_PQ_STS1 & 0x7F) >> 2);
	mask |= 1 << ((mmDMA_QM_3_PQ_RD_RATE_LIM_EN & 0x7F) >> 2);
	mask |= 1 << ((mmDMA_QM_3_PQ_RD_RATE_LIM_RST_TOKEN & 0x7F) >> 2);
	mask |= 1 << ((mmDMA_QM_3_PQ_RD_RATE_LIM_SAT & 0x7F) >> 2);
	mask |= 1 << ((mmDMA_QM_3_PQ_RD_RATE_LIM_TOUT & 0x7F) >> 2);
	mask |= 1 << ((mmDMA_QM_3_CQ_CFG0 & 0x7F) >> 2);
	mask |= 1 << ((mmDMA_QM_3_CQ_CFG1 & 0x7F) >> 2);
	mask |= 1 << ((mmDMA_QM_3_CQ_ARUSER & 0x7F) >> 2);
	mask |= 1 << ((mmDMA_QM_3_CQ_PTR_LO & 0x7F) >> 2);
	mask |= 1 << ((mmDMA_QM_3_CQ_PTR_HI & 0x7F) >> 2);
	mask |= 1 << ((mmDMA_QM_3_CQ_TSIZE & 0x7F) >> 2);
	mask |= 1 << ((mmDMA_QM_3_CQ_CTL & 0x7F) >> 2);
	mask |= 1 << ((mmDMA_QM_3_CQ_PTR_LO_STS & 0x7F) >> 2);
	mask |= 1 << ((mmDMA_QM_3_CQ_PTR_HI_STS & 0x7F) >> 2);
	mask |= 1 << ((mmDMA_QM_3_CQ_TSIZE_STS & 0x7F) >> 2);
	mask |= 1 << ((mmDMA_QM_3_CQ_CTL_STS & 0x7F) >> 2);
	mask |= 1 << ((mmDMA_QM_3_CQ_STS0 & 0x7F) >> 2);
	mask |= 1 << ((mmDMA_QM_3_CQ_STS1 & 0x7F) >> 2);
	mask |= 1 << ((mmDMA_QM_3_CQ_RD_RATE_LIM_EN & 0x7F) >> 2);
	mask |= 1 << ((mmDMA_QM_3_CQ_RD_RATE_LIM_RST_TOKEN & 0x7F) >> 2);
	mask |= 1 << ((mmDMA_QM_3_CQ_RD_RATE_LIM_SAT & 0x7F) >> 2);
	mask |= 1 << ((mmDMA_QM_3_CQ_RD_RATE_LIM_TOUT & 0x7F) >> 2);

	WREG32(pb_addr + word_offset, ~mask);

	pb_addr = (mmDMA_QM_3_CQ_IFIFO_CNT & ~0xFFF) + PROT_BITS_OFFS;
	word_offset = ((mmDMA_QM_3_CQ_IFIFO_CNT & PROT_BITS_OFFS) >> 7) << 2;
	mask = 1 << ((mmDMA_QM_3_CQ_IFIFO_CNT & 0x7F) >> 2);
	mask |= 1 << ((mmDMA_QM_3_CP_MSG_BASE0_ADDR_LO & 0x7F) >> 2);
	mask |= 1 << ((mmDMA_QM_3_CP_MSG_BASE0_ADDR_HI & 0x7F) >> 2);
	mask |= 1 << ((mmDMA_QM_3_CP_MSG_BASE1_ADDR_LO & 0x7F) >> 2);
	mask |= 1 << ((mmDMA_QM_3_CP_MSG_BASE1_ADDR_HI & 0x7F) >> 2);
	mask |= 1 << ((mmDMA_QM_3_CP_MSG_BASE2_ADDR_LO & 0x7F) >> 2);
	mask |= 1 << ((mmDMA_QM_3_CP_MSG_BASE2_ADDR_HI & 0x7F) >> 2);
	mask |= 1 << ((mmDMA_QM_3_CP_MSG_BASE3_ADDR_LO & 0x7F) >> 2);
	mask |= 1 << ((mmDMA_QM_3_CP_MSG_BASE3_ADDR_HI & 0x7F) >> 2);
	mask |= 1 << ((mmDMA_QM_3_CP_LDMA_TSIZE_OFFSET & 0x7F) >> 2);
	mask |= 1 << ((mmDMA_QM_3_CP_LDMA_SRC_BASE_LO_OFFSET & 0x7F) >> 2);
	mask |= 1 << ((mmDMA_QM_3_CP_LDMA_SRC_BASE_HI_OFFSET & 0x7F) >> 2);
	mask |= 1 << ((mmDMA_QM_3_CP_LDMA_DST_BASE_LO_OFFSET & 0x7F) >> 2);
	mask |= 1 << ((mmDMA_QM_3_CP_LDMA_DST_BASE_HI_OFFSET & 0x7F) >> 2);
	mask |= 1 << ((mmDMA_QM_3_CP_LDMA_COMMIT_OFFSET & 0x7F) >> 2);

	WREG32(pb_addr + word_offset, ~mask);

	goya_pb_set_block(hdev, mmDMA_CH_3_BASE);

	pb_addr = (mmDMA_QM_4_GLBL_CFG0 & ~0xFFF) + PROT_BITS_OFFS;
	word_offset = ((mmDMA_QM_4_GLBL_CFG0 & PROT_BITS_OFFS) >> 7) << 2;
	mask = 1 << ((mmDMA_QM_4_GLBL_CFG0 & 0x7F) >> 2);
	mask |= 1 << ((mmDMA_QM_4_GLBL_CFG1 & 0x7F) >> 2);
	mask |= 1 << ((mmDMA_QM_4_GLBL_PROT & 0x7F) >> 2);
	mask |= 1 << ((mmDMA_QM_4_GLBL_ERR_CFG & 0x7F) >> 2);
	mask |= 1 << ((mmDMA_QM_4_GLBL_ERR_ADDR_LO & 0x7F) >> 2);
	mask |= 1 << ((mmDMA_QM_4_GLBL_ERR_ADDR_HI & 0x7F) >> 2);
	mask |= 1 << ((mmDMA_QM_4_GLBL_ERR_WDATA & 0x7F) >> 2);
	mask |= 1 << ((mmDMA_QM_4_GLBL_SECURE_PROPS & 0x7F) >> 2);
	mask |= 1 << ((mmDMA_QM_4_GLBL_NON_SECURE_PROPS & 0x7F) >> 2);
	mask |= 1 << ((mmDMA_QM_4_GLBL_STS0 & 0x7F) >> 2);
	mask |= 1 << ((mmDMA_QM_4_GLBL_STS1 & 0x7F) >> 2);
	mask |= 1 << ((mmDMA_QM_4_PQ_BASE_LO & 0x7F) >> 2);
	mask |= 1 << ((mmDMA_QM_4_PQ_BASE_HI & 0x7F) >> 2);
	mask |= 1 << ((mmDMA_QM_4_PQ_SIZE & 0x7F) >> 2);
	mask |= 1 << ((mmDMA_QM_4_PQ_PI & 0x7F) >> 2);
	mask |= 1 << ((mmDMA_QM_4_PQ_CI & 0x7F) >> 2);
	mask |= 1 << ((mmDMA_QM_4_PQ_CFG0 & 0x7F) >> 2);
	mask |= 1 << ((mmDMA_QM_4_PQ_CFG1 & 0x7F) >> 2);
	mask |= 1 << ((mmDMA_QM_4_PQ_ARUSER & 0x7F) >> 2);

	WREG32(pb_addr + word_offset, ~mask);

	pb_addr = (mmDMA_QM_4_PQ_PUSH0 & ~0xFFF) + PROT_BITS_OFFS;
	word_offset = ((mmDMA_QM_4_PQ_PUSH0 & PROT_BITS_OFFS) >> 7) << 2;
	mask = 1 << ((mmDMA_QM_4_PQ_PUSH0 & 0x7F) >> 2);
	mask |= 1 << ((mmDMA_QM_4_PQ_PUSH1 & 0x7F) >> 2);
	mask |= 1 << ((mmDMA_QM_4_PQ_PUSH2 & 0x7F) >> 2);
	mask |= 1 << ((mmDMA_QM_4_PQ_PUSH3 & 0x7F) >> 2);
	mask |= 1 << ((mmDMA_QM_4_PQ_STS0 & 0x7F) >> 2);
	mask |= 1 << ((mmDMA_QM_4_PQ_STS1 & 0x7F) >> 2);
	mask |= 1 << ((mmDMA_QM_4_PQ_RD_RATE_LIM_EN & 0x7F) >> 2);
	mask |= 1 << ((mmDMA_QM_4_PQ_RD_RATE_LIM_RST_TOKEN & 0x7F) >> 2);
	mask |= 1 << ((mmDMA_QM_4_PQ_RD_RATE_LIM_SAT & 0x7F) >> 2);
	mask |= 1 << ((mmDMA_QM_4_PQ_RD_RATE_LIM_TOUT & 0x7F) >> 2);
	mask |= 1 << ((mmDMA_QM_4_CQ_CFG0 & 0x7F) >> 2);
	mask |= 1 << ((mmDMA_QM_4_CQ_CFG1 & 0x7F) >> 2);
	mask |= 1 << ((mmDMA_QM_4_CQ_ARUSER & 0x7F) >> 2);
	mask |= 1 << ((mmDMA_QM_4_CQ_PTR_LO & 0x7F) >> 2);
	mask |= 1 << ((mmDMA_QM_4_CQ_PTR_HI & 0x7F) >> 2);
	mask |= 1 << ((mmDMA_QM_4_CQ_TSIZE & 0x7F) >> 2);
	mask |= 1 << ((mmDMA_QM_4_CQ_CTL & 0x7F) >> 2);
	mask |= 1 << ((mmDMA_QM_4_CQ_PTR_LO_STS & 0x7F) >> 2);
	mask |= 1 << ((mmDMA_QM_4_CQ_PTR_HI_STS & 0x7F) >> 2);
	mask |= 1 << ((mmDMA_QM_4_CQ_TSIZE_STS & 0x7F) >> 2);
	mask |= 1 << ((mmDMA_QM_4_CQ_CTL_STS & 0x7F) >> 2);
	mask |= 1 << ((mmDMA_QM_4_CQ_STS0 & 0x7F) >> 2);
	mask |= 1 << ((mmDMA_QM_4_CQ_STS1 & 0x7F) >> 2);
	mask |= 1 << ((mmDMA_QM_4_CQ_RD_RATE_LIM_EN & 0x7F) >> 2);
	mask |= 1 << ((mmDMA_QM_4_CQ_RD_RATE_LIM_RST_TOKEN & 0x7F) >> 2);
	mask |= 1 << ((mmDMA_QM_4_CQ_RD_RATE_LIM_SAT & 0x7F) >> 2);
	mask |= 1 << ((mmDMA_QM_4_CQ_RD_RATE_LIM_TOUT & 0x7F) >> 2);

	WREG32(pb_addr + word_offset, ~mask);

	pb_addr = (mmDMA_QM_4_CQ_IFIFO_CNT & ~0xFFF) + PROT_BITS_OFFS;
	word_offset = ((mmDMA_QM_4_CQ_IFIFO_CNT & PROT_BITS_OFFS) >> 7) << 2;
	mask = 1 << ((mmDMA_QM_4_CQ_IFIFO_CNT & 0x7F) >> 2);
	mask |= 1 << ((mmDMA_QM_4_CP_MSG_BASE0_ADDR_LO & 0x7F) >> 2);
	mask |= 1 << ((mmDMA_QM_4_CP_MSG_BASE0_ADDR_HI & 0x7F) >> 2);
	mask |= 1 << ((mmDMA_QM_4_CP_MSG_BASE1_ADDR_LO & 0x7F) >> 2);
	mask |= 1 << ((mmDMA_QM_4_CP_MSG_BASE1_ADDR_HI & 0x7F) >> 2);
	mask |= 1 << ((mmDMA_QM_4_CP_MSG_BASE2_ADDR_LO & 0x7F) >> 2);
	mask |= 1 << ((mmDMA_QM_4_CP_MSG_BASE2_ADDR_HI & 0x7F) >> 2);
	mask |= 1 << ((mmDMA_QM_4_CP_MSG_BASE3_ADDR_LO & 0x7F) >> 2);
	mask |= 1 << ((mmDMA_QM_4_CP_MSG_BASE3_ADDR_HI & 0x7F) >> 2);
	mask |= 1 << ((mmDMA_QM_4_CP_LDMA_TSIZE_OFFSET & 0x7F) >> 2);
	mask |= 1 << ((mmDMA_QM_4_CP_LDMA_SRC_BASE_LO_OFFSET & 0x7F) >> 2);
	mask |= 1 << ((mmDMA_QM_4_CP_LDMA_SRC_BASE_HI_OFFSET & 0x7F) >> 2);
	mask |= 1 << ((mmDMA_QM_4_CP_LDMA_DST_BASE_LO_OFFSET & 0x7F) >> 2);
	mask |= 1 << ((mmDMA_QM_4_CP_LDMA_DST_BASE_HI_OFFSET & 0x7F) >> 2);
	mask |= 1 << ((mmDMA_QM_4_CP_LDMA_COMMIT_OFFSET & 0x7F) >> 2);

	WREG32(pb_addr + word_offset, ~mask);

	goya_pb_set_block(hdev, mmDMA_CH_4_BASE);
}

static void goya_init_tpc_protection_bits(struct hl_device *hdev)
{
	u32 pb_addr, mask;
	u8 word_offset;

	goya_pb_set_block(hdev, mmTPC0_RD_REGULATOR_BASE);
	goya_pb_set_block(hdev, mmTPC0_WR_REGULATOR_BASE);

	pb_addr = (mmTPC0_CFG_CFG_BASE_ADDRESS_HIGH & ~0xFFF) + PROT_BITS_OFFS;
	word_offset = ((mmTPC0_CFG_CFG_BASE_ADDRESS_HIGH &
			PROT_BITS_OFFS) >> 7) << 2;
	mask = 1 << ((mmTPC0_CFG_CFG_BASE_ADDRESS_HIGH & 0x7F) >> 2);
	mask |= 1 << ((mmTPC0_CFG_CFG_SUBTRACT_VALUE & 0x7F) >> 2);
	mask |= 1 << ((mmTPC0_CFG_SM_BASE_ADDRESS_LOW & 0x7F) >> 2);
	mask |= 1 << ((mmTPC0_CFG_SM_BASE_ADDRESS_HIGH & 0x7F) >> 2);

	WREG32(pb_addr + word_offset, ~mask);

	pb_addr = (mmTPC0_CFG_ARUSER & ~0xFFF) + PROT_BITS_OFFS;
	word_offset = ((mmTPC0_CFG_ARUSER & PROT_BITS_OFFS) >> 7) << 2;
	mask = 1 << ((mmTPC0_CFG_ARUSER & 0x7F) >> 2);
	mask |= 1 << ((mmTPC0_CFG_AWUSER & 0x7F) >> 2);

	WREG32(pb_addr + word_offset, ~mask);

	pb_addr = (mmTPC0_CFG_FUNC_MBIST_CNTRL & ~0xFFF) + PROT_BITS_OFFS;
	word_offset = ((mmTPC0_CFG_FUNC_MBIST_CNTRL &
			PROT_BITS_OFFS) >> 7) << 2;
	mask = 1 << ((mmTPC0_CFG_FUNC_MBIST_CNTRL & 0x7F) >> 2);
	mask |= 1 << ((mmTPC0_CFG_FUNC_MBIST_PAT & 0x7F) >> 2);
	mask |= 1 << ((mmTPC0_CFG_FUNC_MBIST_MEM_0 & 0x7F) >> 2);
	mask |= 1 << ((mmTPC0_CFG_FUNC_MBIST_MEM_1 & 0x7F) >> 2);
	mask |= 1 << ((mmTPC0_CFG_FUNC_MBIST_MEM_2 & 0x7F) >> 2);
	mask |= 1 << ((mmTPC0_CFG_FUNC_MBIST_MEM_3 & 0x7F) >> 2);
	mask |= 1 << ((mmTPC0_CFG_FUNC_MBIST_MEM_4 & 0x7F) >> 2);
	mask |= 1 << ((mmTPC0_CFG_FUNC_MBIST_MEM_5 & 0x7F) >> 2);
	mask |= 1 << ((mmTPC0_CFG_FUNC_MBIST_MEM_6 & 0x7F) >> 2);
	mask |= 1 << ((mmTPC0_CFG_FUNC_MBIST_MEM_7 & 0x7F) >> 2);
	mask |= 1 << ((mmTPC0_CFG_FUNC_MBIST_MEM_8 & 0x7F) >> 2);
	mask |= 1 << ((mmTPC0_CFG_FUNC_MBIST_MEM_9 & 0x7F) >> 2);

	WREG32(pb_addr + word_offset, ~mask);

	pb_addr = (mmTPC0_QM_GLBL_CFG0 & ~0xFFF) + PROT_BITS_OFFS;
	word_offset = ((mmTPC0_QM_GLBL_CFG0 & PROT_BITS_OFFS) >> 7) << 2;
	mask = 1 << ((mmTPC0_QM_GLBL_CFG0 & 0x7F) >> 2);
	mask |= 1 << ((mmTPC0_QM_GLBL_CFG1 & 0x7F) >> 2);
	mask |= 1 << ((mmTPC0_QM_GLBL_PROT & 0x7F) >> 2);
	mask |= 1 << ((mmTPC0_QM_GLBL_ERR_CFG & 0x7F) >> 2);
	mask |= 1 << ((mmTPC0_QM_GLBL_ERR_ADDR_LO & 0x7F) >> 2);
	mask |= 1 << ((mmTPC0_QM_GLBL_ERR_ADDR_HI & 0x7F) >> 2);
	mask |= 1 << ((mmTPC0_QM_GLBL_ERR_WDATA & 0x7F) >> 2);
	mask |= 1 << ((mmTPC0_QM_GLBL_SECURE_PROPS & 0x7F) >> 2);
	mask |= 1 << ((mmTPC0_QM_GLBL_NON_SECURE_PROPS & 0x7F) >> 2);
	mask |= 1 << ((mmTPC0_QM_GLBL_STS0 & 0x7F) >> 2);
	mask |= 1 << ((mmTPC0_QM_GLBL_STS1 & 0x7F) >> 2);
	mask |= 1 << ((mmTPC0_QM_PQ_BASE_LO & 0x7F) >> 2);
	mask |= 1 << ((mmTPC0_QM_PQ_BASE_HI & 0x7F) >> 2);
	mask |= 1 << ((mmTPC0_QM_PQ_SIZE & 0x7F) >> 2);
	mask |= 1 << ((mmTPC0_QM_PQ_PI & 0x7F) >> 2);
	mask |= 1 << ((mmTPC0_QM_PQ_CI & 0x7F) >> 2);
	mask |= 1 << ((mmTPC0_QM_PQ_CFG0 & 0x7F) >> 2);
	mask |= 1 << ((mmTPC0_QM_PQ_CFG1 & 0x7F) >> 2);
	mask |= 1 << ((mmTPC0_QM_PQ_ARUSER & 0x7F) >> 2);

	WREG32(pb_addr + word_offset, ~mask);

	pb_addr = (mmTPC0_QM_PQ_PUSH0 & ~0xFFF) + PROT_BITS_OFFS;
	word_offset = ((mmTPC0_QM_PQ_PUSH0 & PROT_BITS_OFFS) >> 7) << 2;
	mask = 1 << ((mmTPC0_QM_PQ_PUSH0 & 0x7F) >> 2);
	mask |= 1 << ((mmTPC0_QM_PQ_PUSH1 & 0x7F) >> 2);
	mask |= 1 << ((mmTPC0_QM_PQ_PUSH2 & 0x7F) >> 2);
	mask |= 1 << ((mmTPC0_QM_PQ_PUSH3 & 0x7F) >> 2);
	mask |= 1 << ((mmTPC0_QM_PQ_STS0 & 0x7F) >> 2);
	mask |= 1 << ((mmTPC0_QM_PQ_STS1 & 0x7F) >> 2);
	mask |= 1 << ((mmTPC0_QM_PQ_RD_RATE_LIM_EN & 0x7F) >> 2);
	mask |= 1 << ((mmTPC0_QM_PQ_RD_RATE_LIM_RST_TOKEN & 0x7F) >> 2);
	mask |= 1 << ((mmTPC0_QM_PQ_RD_RATE_LIM_SAT & 0x7F) >> 2);
	mask |= 1 << ((mmTPC0_QM_PQ_RD_RATE_LIM_TOUT & 0x7F) >> 2);
	mask |= 1 << ((mmTPC0_QM_CQ_CFG0 & 0x7F) >> 2);
	mask |= 1 << ((mmTPC0_QM_CQ_CFG1 & 0x7F) >> 2);
	mask |= 1 << ((mmTPC0_QM_CQ_ARUSER & 0x7F) >> 2);
	mask |= 1 << ((mmTPC0_QM_CQ_PTR_LO & 0x7F) >> 2);
	mask |= 1 << ((mmTPC0_QM_CQ_PTR_HI & 0x7F) >> 2);
	mask |= 1 << ((mmTPC0_QM_CQ_TSIZE & 0x7F) >> 2);
	mask |= 1 << ((mmTPC0_QM_CQ_CTL & 0x7F) >> 2);
	mask |= 1 << ((mmTPC0_QM_CQ_PTR_LO_STS & 0x7F) >> 2);
	mask |= 1 << ((mmTPC0_QM_CQ_PTR_HI_STS & 0x7F) >> 2);
	mask |= 1 << ((mmTPC0_QM_CQ_TSIZE_STS & 0x7F) >> 2);
	mask |= 1 << ((mmTPC0_QM_CQ_CTL_STS & 0x7F) >> 2);
	mask |= 1 << ((mmTPC0_QM_CQ_STS0 & 0x7F) >> 2);
	mask |= 1 << ((mmTPC0_QM_CQ_STS1 & 0x7F) >> 2);
	mask |= 1 << ((mmTPC0_QM_CQ_RD_RATE_LIM_EN & 0x7F) >> 2);
	mask |= 1 << ((mmTPC0_QM_CQ_RD_RATE_LIM_RST_TOKEN & 0x7F) >> 2);
	mask |= 1 << ((mmTPC0_QM_CQ_RD_RATE_LIM_SAT & 0x7F) >> 2);
	mask |= 1 << ((mmTPC0_QM_CQ_RD_RATE_LIM_TOUT & 0x7F) >> 2);

	WREG32(pb_addr + word_offset, ~mask);

	pb_addr = (mmTPC0_QM_CQ_IFIFO_CNT & ~0xFFF) + PROT_BITS_OFFS;
	word_offset = ((mmTPC0_QM_CQ_IFIFO_CNT & PROT_BITS_OFFS) >> 7) << 2;
	mask = 1 << ((mmTPC0_QM_CQ_IFIFO_CNT & 0x7F) >> 2);
	mask |= 1 << ((mmTPC0_QM_CP_MSG_BASE0_ADDR_LO & 0x7F) >> 2);
	mask |= 1 << ((mmTPC0_QM_CP_MSG_BASE0_ADDR_HI & 0x7F) >> 2);
	mask |= 1 << ((mmTPC0_QM_CP_MSG_BASE1_ADDR_LO & 0x7F) >> 2);
	mask |= 1 << ((mmTPC0_QM_CP_MSG_BASE1_ADDR_HI & 0x7F) >> 2);
	mask |= 1 << ((mmTPC0_QM_CP_MSG_BASE2_ADDR_LO & 0x7F) >> 2);
	mask |= 1 << ((mmTPC0_QM_CP_MSG_BASE2_ADDR_HI & 0x7F) >> 2);
	mask |= 1 << ((mmTPC0_QM_CP_MSG_BASE3_ADDR_LO & 0x7F) >> 2);
	mask |= 1 << ((mmTPC0_QM_CP_MSG_BASE3_ADDR_HI & 0x7F) >> 2);
	mask |= 1 << ((mmTPC0_QM_CP_LDMA_TSIZE_OFFSET & 0x7F) >> 2);
	mask |= 1 << ((mmTPC0_QM_CP_LDMA_SRC_BASE_LO_OFFSET & 0x7F) >> 2);
	mask |= 1 << ((mmTPC0_QM_CP_LDMA_SRC_BASE_HI_OFFSET & 0x7F) >> 2);
	mask |= 1 << ((mmTPC0_QM_CP_LDMA_DST_BASE_LO_OFFSET & 0x7F) >> 2);
	mask |= 1 << ((mmTPC0_QM_CP_LDMA_DST_BASE_HI_OFFSET & 0x7F) >> 2);
	mask |= 1 << ((mmTPC0_QM_CP_LDMA_COMMIT_OFFSET & 0x7F) >> 2);

	WREG32(pb_addr + word_offset, ~mask);

	pb_addr = (mmTPC0_CMDQ_GLBL_CFG0 & ~0xFFF) + PROT_BITS_OFFS;
	word_offset = ((mmTPC0_CMDQ_GLBL_CFG0 & PROT_BITS_OFFS) >> 7) << 2;
	mask = 1 << ((mmTPC0_CMDQ_GLBL_CFG0 & 0x7F) >> 2);
	mask |= 1 << ((mmTPC0_CMDQ_GLBL_CFG1 & 0x7F) >> 2);
	mask |= 1 << ((mmTPC0_CMDQ_GLBL_PROT & 0x7F) >> 2);
	mask |= 1 << ((mmTPC0_CMDQ_GLBL_ERR_CFG & 0x7F) >> 2);
	mask |= 1 << ((mmTPC0_CMDQ_GLBL_ERR_ADDR_LO & 0x7F) >> 2);
	mask |= 1 << ((mmTPC0_CMDQ_GLBL_ERR_ADDR_HI & 0x7F) >> 2);
	mask |= 1 << ((mmTPC0_CMDQ_GLBL_ERR_WDATA & 0x7F) >> 2);
	mask |= 1 << ((mmTPC0_CMDQ_GLBL_SECURE_PROPS & 0x7F) >> 2);
	mask |= 1 << ((mmTPC0_CMDQ_GLBL_NON_SECURE_PROPS & 0x7F) >> 2);
	mask |= 1 << ((mmTPC0_CMDQ_GLBL_STS0 & 0x7F) >> 2);
	mask |= 1 << ((mmTPC0_CMDQ_GLBL_STS1 & 0x7F) >> 2);

	WREG32(pb_addr + word_offset, ~mask);

	pb_addr = (mmTPC0_CMDQ_CQ_CFG0 & ~0xFFF) + PROT_BITS_OFFS;
	word_offset = ((mmTPC0_CMDQ_CQ_CFG0 & PROT_BITS_OFFS) >> 7) << 2;
	mask = 1 << ((mmTPC0_CMDQ_CQ_CFG0 & 0x7F) >> 2);
	mask |= 1 << ((mmTPC0_CMDQ_CQ_CFG1 & 0x7F) >> 2);
	mask |= 1 << ((mmTPC0_CMDQ_CQ_ARUSER & 0x7F) >> 2);
	mask |= 1 << ((mmTPC0_CMDQ_CQ_PTR_LO_STS & 0x7F) >> 2);
	mask |= 1 << ((mmTPC0_CMDQ_CQ_PTR_HI_STS & 0x7F) >> 2);
	mask |= 1 << ((mmTPC0_CMDQ_CQ_TSIZE_STS & 0x7F) >> 2);
	mask |= 1 << ((mmTPC0_CMDQ_CQ_CTL_STS & 0x7F) >> 2);
	mask |= 1 << ((mmTPC0_CMDQ_CQ_STS0 & 0x7F) >> 2);
	mask |= 1 << ((mmTPC0_CMDQ_CQ_STS1 & 0x7F) >> 2);
	mask |= 1 << ((mmTPC0_CMDQ_CQ_RD_RATE_LIM_EN & 0x7F) >> 2);
	mask |= 1 << ((mmTPC0_CMDQ_CQ_RD_RATE_LIM_RST_TOKEN & 0x7F) >> 2);
	mask |= 1 << ((mmTPC0_CMDQ_CQ_RD_RATE_LIM_SAT & 0x7F) >> 2);
	mask |= 1 << ((mmTPC0_CMDQ_CQ_RD_RATE_LIM_TOUT & 0x7F) >> 2);

	WREG32(pb_addr + word_offset, ~mask);

	pb_addr = (mmTPC0_CMDQ_CQ_IFIFO_CNT & ~0xFFF) + PROT_BITS_OFFS;
	word_offset = ((mmTPC0_CMDQ_CQ_IFIFO_CNT & PROT_BITS_OFFS) >> 7) << 2;
	mask = 1 << ((mmTPC0_CMDQ_CQ_IFIFO_CNT & 0x7F) >> 2);
	mask |= 1 << ((mmTPC0_CMDQ_CP_MSG_BASE0_ADDR_LO & 0x7F) >> 2);
	mask |= 1 << ((mmTPC0_CMDQ_CP_MSG_BASE0_ADDR_HI & 0x7F) >> 2);
	mask |= 1 << ((mmTPC0_CMDQ_CP_MSG_BASE1_ADDR_LO & 0x7F) >> 2);
	mask |= 1 << ((mmTPC0_CMDQ_CP_MSG_BASE1_ADDR_HI & 0x7F) >> 2);
	mask |= 1 << ((mmTPC0_CMDQ_CP_MSG_BASE2_ADDR_LO & 0x7F) >> 2);
	mask |= 1 << ((mmTPC0_CMDQ_CP_MSG_BASE2_ADDR_HI & 0x7F) >> 2);
	mask |= 1 << ((mmTPC0_CMDQ_CP_MSG_BASE3_ADDR_LO & 0x7F) >> 2);
	mask |= 1 << ((mmTPC0_CMDQ_CP_MSG_BASE3_ADDR_HI & 0x7F) >> 2);
	mask |= 1 << ((mmTPC0_CMDQ_CP_LDMA_TSIZE_OFFSET & 0x7F) >> 2);
	mask |= 1 << ((mmTPC0_CMDQ_CP_LDMA_SRC_BASE_LO_OFFSET & 0x7F) >> 2);
	mask |= 1 << ((mmTPC0_CMDQ_CP_LDMA_SRC_BASE_HI_OFFSET & 0x7F) >> 2);
	mask |= 1 << ((mmTPC0_CMDQ_CP_LDMA_DST_BASE_LO_OFFSET & 0x7F) >> 2);
	mask |= 1 << ((mmTPC0_CMDQ_CP_LDMA_DST_BASE_HI_OFFSET & 0x7F) >> 2);
	mask |= 1 << ((mmTPC0_CMDQ_CP_LDMA_COMMIT_OFFSET & 0x7F) >> 2);
	mask |= 1 << ((mmTPC0_CMDQ_CP_STS & 0x7F) >> 2);
	mask |= 1 << ((mmTPC0_CMDQ_CP_CURRENT_INST_LO & 0x7F) >> 2);

	WREG32(pb_addr + word_offset, ~mask);

	pb_addr = (mmTPC0_CMDQ_CP_CURRENT_INST_HI & ~0xFFF) + PROT_BITS_OFFS;
	word_offset = ((mmTPC0_CMDQ_CP_CURRENT_INST_HI & PROT_BITS_OFFS) >> 7)
			<< 2;
	mask = 1 << ((mmTPC0_CMDQ_CP_CURRENT_INST_HI & 0x7F) >> 2);
	mask |= 1 << ((mmTPC0_CMDQ_CP_BARRIER_CFG & 0x7F) >> 2);
	mask |= 1 << ((mmTPC0_CMDQ_CP_DBG_0 & 0x7F) >> 2);
	mask |= 1 << ((mmTPC0_CMDQ_CQ_BUF_ADDR & 0x7F) >> 2);
	mask |= 1 << ((mmTPC0_CMDQ_CQ_BUF_RDATA & 0x7F) >> 2);

	WREG32(pb_addr + word_offset, ~mask);

	goya_pb_set_block(hdev, mmTPC1_RTR_BASE);
	goya_pb_set_block(hdev, mmTPC1_RD_REGULATOR_BASE);
	goya_pb_set_block(hdev, mmTPC1_WR_REGULATOR_BASE);

	pb_addr = (mmTPC1_CFG_CFG_BASE_ADDRESS_HIGH & ~0xFFF) + PROT_BITS_OFFS;
	word_offset = ((mmTPC1_CFG_CFG_BASE_ADDRESS_HIGH &
			PROT_BITS_OFFS) >> 7) << 2;
	mask = 1 << ((mmTPC1_CFG_CFG_BASE_ADDRESS_HIGH & 0x7F) >> 2);
	mask |= 1 << ((mmTPC1_CFG_CFG_SUBTRACT_VALUE & 0x7F) >> 2);
	mask |= 1 << ((mmTPC1_CFG_SM_BASE_ADDRESS_LOW & 0x7F) >> 2);
	mask |= 1 << ((mmTPC1_CFG_SM_BASE_ADDRESS_HIGH & 0x7F) >> 2);

	WREG32(pb_addr + word_offset, ~mask);

	pb_addr = (mmTPC1_CFG_ARUSER & ~0xFFF) + PROT_BITS_OFFS;
	word_offset = ((mmTPC1_CFG_ARUSER & PROT_BITS_OFFS) >> 7) << 2;
	mask = 1 << ((mmTPC1_CFG_ARUSER & 0x7F) >> 2);
	mask |= 1 << ((mmTPC1_CFG_AWUSER & 0x7F) >> 2);

	WREG32(pb_addr + word_offset, ~mask);

	pb_addr = (mmTPC1_CFG_FUNC_MBIST_CNTRL & ~0xFFF) + PROT_BITS_OFFS;
	word_offset = ((mmTPC1_CFG_FUNC_MBIST_CNTRL & PROT_BITS_OFFS) >> 7)
			<< 2;
	mask = 1 << ((mmTPC1_CFG_FUNC_MBIST_CNTRL & 0x7F) >> 2);
	mask |= 1 << ((mmTPC1_CFG_FUNC_MBIST_PAT & 0x7F) >> 2);
	mask |= 1 << ((mmTPC1_CFG_FUNC_MBIST_MEM_0 & 0x7F) >> 2);
	mask |= 1 << ((mmTPC1_CFG_FUNC_MBIST_MEM_1 & 0x7F) >> 2);
	mask |= 1 << ((mmTPC1_CFG_FUNC_MBIST_MEM_2 & 0x7F) >> 2);
	mask |= 1 << ((mmTPC1_CFG_FUNC_MBIST_MEM_3 & 0x7F) >> 2);
	mask |= 1 << ((mmTPC1_CFG_FUNC_MBIST_MEM_4 & 0x7F) >> 2);
	mask |= 1 << ((mmTPC1_CFG_FUNC_MBIST_MEM_5 & 0x7F) >> 2);
	mask |= 1 << ((mmTPC1_CFG_FUNC_MBIST_MEM_6 & 0x7F) >> 2);
	mask |= 1 << ((mmTPC1_CFG_FUNC_MBIST_MEM_7 & 0x7F) >> 2);
	mask |= 1 << ((mmTPC1_CFG_FUNC_MBIST_MEM_8 & 0x7F) >> 2);
	mask |= 1 << ((mmTPC1_CFG_FUNC_MBIST_MEM_9 & 0x7F) >> 2);

	WREG32(pb_addr + word_offset, ~mask);

	pb_addr = (mmTPC1_QM_GLBL_CFG0 & ~0xFFF) + PROT_BITS_OFFS;
	word_offset = ((mmTPC1_QM_GLBL_CFG0 & PROT_BITS_OFFS) >> 7) << 2;
	mask = 1 << ((mmTPC1_QM_GLBL_CFG0 & 0x7F) >> 2);
	mask |= 1 << ((mmTPC1_QM_GLBL_CFG1 & 0x7F) >> 2);
	mask |= 1 << ((mmTPC1_QM_GLBL_PROT & 0x7F) >> 2);
	mask |= 1 << ((mmTPC1_QM_GLBL_ERR_CFG & 0x7F) >> 2);
	mask |= 1 << ((mmTPC1_QM_GLBL_ERR_ADDR_LO & 0x7F) >> 2);
	mask |= 1 << ((mmTPC1_QM_GLBL_ERR_ADDR_HI & 0x7F) >> 2);
	mask |= 1 << ((mmTPC1_QM_GLBL_ERR_WDATA & 0x7F) >> 2);
	mask |= 1 << ((mmTPC1_QM_GLBL_SECURE_PROPS & 0x7F) >> 2);
	mask |= 1 << ((mmTPC1_QM_GLBL_NON_SECURE_PROPS & 0x7F) >> 2);
	mask |= 1 << ((mmTPC1_QM_GLBL_STS0 & 0x7F) >> 2);
	mask |= 1 << ((mmTPC1_QM_GLBL_STS1 & 0x7F) >> 2);
	mask |= 1 << ((mmTPC1_QM_PQ_BASE_LO & 0x7F) >> 2);
	mask |= 1 << ((mmTPC1_QM_PQ_BASE_HI & 0x7F) >> 2);
	mask |= 1 << ((mmTPC1_QM_PQ_SIZE & 0x7F) >> 2);
	mask |= 1 << ((mmTPC1_QM_PQ_PI & 0x7F) >> 2);
	mask |= 1 << ((mmTPC1_QM_PQ_CI & 0x7F) >> 2);
	mask |= 1 << ((mmTPC1_QM_PQ_CFG0 & 0x7F) >> 2);
	mask |= 1 << ((mmTPC1_QM_PQ_CFG1 & 0x7F) >> 2);
	mask |= 1 << ((mmTPC1_QM_PQ_ARUSER & 0x7F) >> 2);

	WREG32(pb_addr + word_offset, ~mask);

	pb_addr = (mmTPC1_QM_PQ_PUSH0 & ~0xFFF) + PROT_BITS_OFFS;
	word_offset = ((mmTPC1_QM_PQ_PUSH0 & PROT_BITS_OFFS) >> 7) << 2;
	mask = 1 << ((mmTPC1_QM_PQ_PUSH0 & 0x7F) >> 2);
	mask |= 1 << ((mmTPC1_QM_PQ_PUSH1 & 0x7F) >> 2);
	mask |= 1 << ((mmTPC1_QM_PQ_PUSH2 & 0x7F) >> 2);
	mask |= 1 << ((mmTPC1_QM_PQ_PUSH3 & 0x7F) >> 2);
	mask |= 1 << ((mmTPC1_QM_PQ_STS0 & 0x7F) >> 2);
	mask |= 1 << ((mmTPC1_QM_PQ_STS1 & 0x7F) >> 2);
	mask |= 1 << ((mmTPC1_QM_PQ_RD_RATE_LIM_EN & 0x7F) >> 2);
	mask |= 1 << ((mmTPC1_QM_PQ_RD_RATE_LIM_RST_TOKEN & 0x7F) >> 2);
	mask |= 1 << ((mmTPC1_QM_PQ_RD_RATE_LIM_SAT & 0x7F) >> 2);
	mask |= 1 << ((mmTPC1_QM_PQ_RD_RATE_LIM_TOUT & 0x7F) >> 2);
	mask |= 1 << ((mmTPC1_QM_CQ_CFG0 & 0x7F) >> 2);
	mask |= 1 << ((mmTPC1_QM_CQ_CFG1 & 0x7F) >> 2);
	mask |= 1 << ((mmTPC1_QM_CQ_ARUSER & 0x7F) >> 2);
	mask |= 1 << ((mmTPC1_QM_CQ_PTR_LO & 0x7F) >> 2);
	mask |= 1 << ((mmTPC1_QM_CQ_PTR_HI & 0x7F) >> 2);
	mask |= 1 << ((mmTPC1_QM_CQ_TSIZE & 0x7F) >> 2);
	mask |= 1 << ((mmTPC1_QM_CQ_CTL & 0x7F) >> 2);
	mask |= 1 << ((mmTPC1_QM_CQ_PTR_LO_STS & 0x7F) >> 2);
	mask |= 1 << ((mmTPC1_QM_CQ_PTR_HI_STS & 0x7F) >> 2);
	mask |= 1 << ((mmTPC1_QM_CQ_TSIZE_STS & 0x7F) >> 2);
	mask |= 1 << ((mmTPC1_QM_CQ_CTL_STS & 0x7F) >> 2);
	mask |= 1 << ((mmTPC1_QM_CQ_STS0 & 0x7F) >> 2);
	mask |= 1 << ((mmTPC1_QM_CQ_STS1 & 0x7F) >> 2);
	mask |= 1 << ((mmTPC1_QM_CQ_RD_RATE_LIM_EN & 0x7F) >> 2);
	mask |= 1 << ((mmTPC1_QM_CQ_RD_RATE_LIM_RST_TOKEN & 0x7F) >> 2);
	mask |= 1 << ((mmTPC1_QM_CQ_RD_RATE_LIM_SAT & 0x7F) >> 2);
	mask |= 1 << ((mmTPC1_QM_CQ_RD_RATE_LIM_TOUT & 0x7F) >> 2);

	WREG32(pb_addr + word_offset, ~mask);

	pb_addr = (mmTPC1_QM_CQ_IFIFO_CNT & ~0xFFF) + PROT_BITS_OFFS;
	word_offset = ((mmTPC1_QM_CQ_IFIFO_CNT & PROT_BITS_OFFS) >> 7) << 2;
	mask = 1 << ((mmTPC1_QM_CQ_IFIFO_CNT & 0x7F) >> 2);
	mask |= 1 << ((mmTPC1_QM_CP_MSG_BASE0_ADDR_LO & 0x7F) >> 2);
	mask |= 1 << ((mmTPC1_QM_CP_MSG_BASE0_ADDR_HI & 0x7F) >> 2);
	mask |= 1 << ((mmTPC1_QM_CP_MSG_BASE1_ADDR_LO & 0x7F) >> 2);
	mask |= 1 << ((mmTPC1_QM_CP_MSG_BASE1_ADDR_HI & 0x7F) >> 2);
	mask |= 1 << ((mmTPC1_QM_CP_MSG_BASE2_ADDR_LO & 0x7F) >> 2);
	mask |= 1 << ((mmTPC1_QM_CP_MSG_BASE2_ADDR_HI & 0x7F) >> 2);
	mask |= 1 << ((mmTPC1_QM_CP_MSG_BASE3_ADDR_LO & 0x7F) >> 2);
	mask |= 1 << ((mmTPC1_QM_CP_MSG_BASE3_ADDR_HI & 0x7F) >> 2);
	mask |= 1 << ((mmTPC1_QM_CP_LDMA_TSIZE_OFFSET & 0x7F) >> 2);
	mask |= 1 << ((mmTPC1_QM_CP_LDMA_SRC_BASE_LO_OFFSET & 0x7F) >> 2);
	mask |= 1 << ((mmTPC1_QM_CP_LDMA_SRC_BASE_HI_OFFSET & 0x7F) >> 2);
	mask |= 1 << ((mmTPC1_QM_CP_LDMA_DST_BASE_LO_OFFSET & 0x7F) >> 2);
	mask |= 1 << ((mmTPC1_QM_CP_LDMA_DST_BASE_HI_OFFSET & 0x7F) >> 2);
	mask |= 1 << ((mmTPC1_QM_CP_LDMA_COMMIT_OFFSET & 0x7F) >> 2);

	WREG32(pb_addr + word_offset, ~mask);

	pb_addr = (mmTPC1_CMDQ_GLBL_CFG0 & ~0xFFF) + PROT_BITS_OFFS;
	word_offset = ((mmTPC1_CMDQ_GLBL_CFG0 & PROT_BITS_OFFS) >> 7) << 2;
	mask = 1 << ((mmTPC1_CMDQ_GLBL_CFG0 & 0x7F) >> 2);
	mask |= 1 << ((mmTPC1_CMDQ_GLBL_CFG1 & 0x7F) >> 2);
	mask |= 1 << ((mmTPC1_CMDQ_GLBL_PROT & 0x7F) >> 2);
	mask |= 1 << ((mmTPC1_CMDQ_GLBL_ERR_CFG & 0x7F) >> 2);
	mask |= 1 << ((mmTPC1_CMDQ_GLBL_ERR_ADDR_LO & 0x7F) >> 2);
	mask |= 1 << ((mmTPC1_CMDQ_GLBL_ERR_ADDR_HI & 0x7F) >> 2);
	mask |= 1 << ((mmTPC1_CMDQ_GLBL_ERR_WDATA & 0x7F) >> 2);
	mask |= 1 << ((mmTPC1_CMDQ_GLBL_SECURE_PROPS & 0x7F) >> 2);
	mask |= 1 << ((mmTPC1_CMDQ_GLBL_NON_SECURE_PROPS & 0x7F) >> 2);
	mask |= 1 << ((mmTPC1_CMDQ_GLBL_STS0 & 0x7F) >> 2);
	mask |= 1 << ((mmTPC1_CMDQ_GLBL_STS1 & 0x7F) >> 2);

	WREG32(pb_addr + word_offset, ~mask);

	pb_addr = (mmTPC1_CMDQ_CQ_CFG0 & ~0xFFF) + PROT_BITS_OFFS;
	word_offset = ((mmTPC1_CMDQ_CQ_CFG0 & PROT_BITS_OFFS) >> 7) << 2;
	mask = 1 << ((mmTPC1_CMDQ_CQ_CFG0 & 0x7F) >> 2);
	mask |= 1 << ((mmTPC1_CMDQ_CQ_CFG1 & 0x7F) >> 2);
	mask |= 1 << ((mmTPC1_CMDQ_CQ_ARUSER & 0x7F) >> 2);
	mask |= 1 << ((mmTPC1_CMDQ_CQ_PTR_LO_STS & 0x7F) >> 2);
	mask |= 1 << ((mmTPC1_CMDQ_CQ_PTR_HI_STS & 0x7F) >> 2);
	mask |= 1 << ((mmTPC1_CMDQ_CQ_TSIZE_STS & 0x7F) >> 2);
	mask |= 1 << ((mmTPC1_CMDQ_CQ_CTL_STS & 0x7F) >> 2);
	mask |= 1 << ((mmTPC1_CMDQ_CQ_STS0 & 0x7F) >> 2);
	mask |= 1 << ((mmTPC1_CMDQ_CQ_STS1 & 0x7F) >> 2);
	mask |= 1 << ((mmTPC1_CMDQ_CQ_RD_RATE_LIM_EN & 0x7F) >> 2);
	mask |= 1 << ((mmTPC1_CMDQ_CQ_RD_RATE_LIM_RST_TOKEN & 0x7F) >> 2);
	mask |= 1 << ((mmTPC1_CMDQ_CQ_RD_RATE_LIM_SAT & 0x7F) >> 2);
	mask |= 1 << ((mmTPC1_CMDQ_CQ_RD_RATE_LIM_TOUT & 0x7F) >> 2);

	WREG32(pb_addr + word_offset, ~mask);

	pb_addr = (mmTPC1_CMDQ_CQ_IFIFO_CNT & ~0xFFF) + PROT_BITS_OFFS;
	word_offset = ((mmTPC1_CMDQ_CQ_IFIFO_CNT & PROT_BITS_OFFS) >> 7) << 2;
	mask = 1 << ((mmTPC1_CMDQ_CQ_IFIFO_CNT & 0x7F) >> 2);
	mask |= 1 << ((mmTPC1_CMDQ_CP_MSG_BASE0_ADDR_LO & 0x7F) >> 2);
	mask |= 1 << ((mmTPC1_CMDQ_CP_MSG_BASE0_ADDR_HI & 0x7F) >> 2);
	mask |= 1 << ((mmTPC1_CMDQ_CP_MSG_BASE1_ADDR_LO & 0x7F) >> 2);
	mask |= 1 << ((mmTPC1_CMDQ_CP_MSG_BASE1_ADDR_HI & 0x7F) >> 2);
	mask |= 1 << ((mmTPC1_CMDQ_CP_MSG_BASE2_ADDR_LO & 0x7F) >> 2);
	mask |= 1 << ((mmTPC1_CMDQ_CP_MSG_BASE2_ADDR_HI & 0x7F) >> 2);
	mask |= 1 << ((mmTPC1_CMDQ_CP_MSG_BASE3_ADDR_LO & 0x7F) >> 2);
	mask |= 1 << ((mmTPC1_CMDQ_CP_MSG_BASE3_ADDR_HI & 0x7F) >> 2);
	mask |= 1 << ((mmTPC1_CMDQ_CP_LDMA_TSIZE_OFFSET & 0x7F) >> 2);
	mask |= 1 << ((mmTPC1_CMDQ_CP_LDMA_SRC_BASE_LO_OFFSET & 0x7F) >> 2);
	mask |= 1 << ((mmTPC1_CMDQ_CP_LDMA_SRC_BASE_HI_OFFSET & 0x7F) >> 2);
	mask |= 1 << ((mmTPC1_CMDQ_CP_LDMA_DST_BASE_LO_OFFSET & 0x7F) >> 2);
	mask |= 1 << ((mmTPC1_CMDQ_CP_LDMA_DST_BASE_HI_OFFSET & 0x7F) >> 2);
	mask |= 1 << ((mmTPC1_CMDQ_CP_LDMA_COMMIT_OFFSET & 0x7F) >> 2);
	mask |= 1 << ((mmTPC1_CMDQ_CP_STS & 0x7F) >> 2);
	mask |= 1 << ((mmTPC1_CMDQ_CP_CURRENT_INST_LO & 0x7F) >> 2);

	WREG32(pb_addr + word_offset, ~mask);

	pb_addr = (mmTPC1_CMDQ_CP_CURRENT_INST_HI & ~0xFFF) + PROT_BITS_OFFS;
	word_offset = ((mmTPC1_CMDQ_CP_CURRENT_INST_HI & PROT_BITS_OFFS) >> 7)
			<< 2;
	mask = 1 << ((mmTPC1_CMDQ_CP_CURRENT_INST_HI & 0x7F) >> 2);
	mask |= 1 << ((mmTPC1_CMDQ_CP_BARRIER_CFG & 0x7F) >> 2);
	mask |= 1 << ((mmTPC1_CMDQ_CP_DBG_0 & 0x7F) >> 2);
	mask |= 1 << ((mmTPC1_CMDQ_CQ_BUF_ADDR & 0x7F) >> 2);
	mask |= 1 << ((mmTPC1_CMDQ_CQ_BUF_RDATA & 0x7F) >> 2);

	WREG32(pb_addr + word_offset, ~mask);

	goya_pb_set_block(hdev, mmTPC2_RTR_BASE);
	goya_pb_set_block(hdev, mmTPC2_RD_REGULATOR_BASE);
	goya_pb_set_block(hdev, mmTPC2_WR_REGULATOR_BASE);

	pb_addr = (mmTPC2_CFG_CFG_BASE_ADDRESS_HIGH & ~0xFFF) + PROT_BITS_OFFS;
	word_offset = ((mmTPC2_CFG_CFG_BASE_ADDRESS_HIGH &
			PROT_BITS_OFFS) >> 7) << 2;
	mask = 1 << ((mmTPC2_CFG_CFG_BASE_ADDRESS_HIGH & 0x7F) >> 2);
	mask |= 1 << ((mmTPC2_CFG_CFG_SUBTRACT_VALUE & 0x7F) >> 2);
	mask |= 1 << ((mmTPC2_CFG_SM_BASE_ADDRESS_LOW & 0x7F) >> 2);
	mask |= 1 << ((mmTPC2_CFG_SM_BASE_ADDRESS_HIGH & 0x7F) >> 2);

	WREG32(pb_addr + word_offset, ~mask);

	pb_addr = (mmTPC2_CFG_ARUSER & ~0xFFF) + PROT_BITS_OFFS;
	word_offset = ((mmTPC2_CFG_ARUSER & PROT_BITS_OFFS) >> 7) << 2;
	mask = 1 << ((mmTPC2_CFG_ARUSER & 0x7F) >> 2);
	mask |= 1 << ((mmTPC2_CFG_AWUSER & 0x7F) >> 2);

	WREG32(pb_addr + word_offset, ~mask);

	pb_addr = (mmTPC2_CFG_FUNC_MBIST_CNTRL & ~0xFFF) + PROT_BITS_OFFS;
	word_offset = ((mmTPC2_CFG_FUNC_MBIST_CNTRL & PROT_BITS_OFFS) >> 7)
			<< 2;
	mask = 1 << ((mmTPC2_CFG_FUNC_MBIST_CNTRL & 0x7F) >> 2);
	mask |= 1 << ((mmTPC2_CFG_FUNC_MBIST_PAT & 0x7F) >> 2);
	mask |= 1 << ((mmTPC2_CFG_FUNC_MBIST_MEM_0 & 0x7F) >> 2);
	mask |= 1 << ((mmTPC2_CFG_FUNC_MBIST_MEM_1 & 0x7F) >> 2);
	mask |= 1 << ((mmTPC2_CFG_FUNC_MBIST_MEM_2 & 0x7F) >> 2);
	mask |= 1 << ((mmTPC2_CFG_FUNC_MBIST_MEM_3 & 0x7F) >> 2);
	mask |= 1 << ((mmTPC2_CFG_FUNC_MBIST_MEM_4 & 0x7F) >> 2);
	mask |= 1 << ((mmTPC2_CFG_FUNC_MBIST_MEM_5 & 0x7F) >> 2);
	mask |= 1 << ((mmTPC2_CFG_FUNC_MBIST_MEM_6 & 0x7F) >> 2);
	mask |= 1 << ((mmTPC2_CFG_FUNC_MBIST_MEM_7 & 0x7F) >> 2);
	mask |= 1 << ((mmTPC2_CFG_FUNC_MBIST_MEM_8 & 0x7F) >> 2);
	mask |= 1 << ((mmTPC2_CFG_FUNC_MBIST_MEM_9 & 0x7F) >> 2);

	WREG32(pb_addr + word_offset, ~mask);

	pb_addr = (mmTPC2_QM_GLBL_CFG0 & ~0xFFF) + PROT_BITS_OFFS;
	word_offset = ((mmTPC2_QM_GLBL_CFG0 & PROT_BITS_OFFS) >> 7) << 2;
	mask = 1 << ((mmTPC2_QM_GLBL_CFG0 & 0x7F) >> 2);
	mask |= 1 << ((mmTPC2_QM_GLBL_CFG1 & 0x7F) >> 2);
	mask |= 1 << ((mmTPC2_QM_GLBL_PROT & 0x7F) >> 2);
	mask |= 1 << ((mmTPC2_QM_GLBL_ERR_CFG & 0x7F) >> 2);
	mask |= 1 << ((mmTPC2_QM_GLBL_ERR_ADDR_LO & 0x7F) >> 2);
	mask |= 1 << ((mmTPC2_QM_GLBL_ERR_ADDR_HI & 0x7F) >> 2);
	mask |= 1 << ((mmTPC2_QM_GLBL_ERR_WDATA & 0x7F) >> 2);
	mask |= 1 << ((mmTPC2_QM_GLBL_SECURE_PROPS & 0x7F) >> 2);
	mask |= 1 << ((mmTPC2_QM_GLBL_NON_SECURE_PROPS & 0x7F) >> 2);
	mask |= 1 << ((mmTPC2_QM_GLBL_STS0 & 0x7F) >> 2);
	mask |= 1 << ((mmTPC2_QM_GLBL_STS1 & 0x7F) >> 2);
	mask |= 1 << ((mmTPC2_QM_PQ_BASE_LO & 0x7F) >> 2);
	mask |= 1 << ((mmTPC2_QM_PQ_BASE_HI & 0x7F) >> 2);
	mask |= 1 << ((mmTPC2_QM_PQ_SIZE & 0x7F) >> 2);
	mask |= 1 << ((mmTPC2_QM_PQ_PI & 0x7F) >> 2);
	mask |= 1 << ((mmTPC2_QM_PQ_CI & 0x7F) >> 2);
	mask |= 1 << ((mmTPC2_QM_PQ_CFG0 & 0x7F) >> 2);
	mask |= 1 << ((mmTPC2_QM_PQ_CFG1 & 0x7F) >> 2);
	mask |= 1 << ((mmTPC2_QM_PQ_ARUSER & 0x7F) >> 2);

	WREG32(pb_addr + word_offset, ~mask);

	pb_addr = (mmTPC2_QM_PQ_PUSH0 & ~0xFFF) + PROT_BITS_OFFS;
	word_offset = ((mmTPC2_QM_PQ_PUSH0 & PROT_BITS_OFFS) >> 7) << 2;
	mask = 1 << ((mmTPC2_QM_PQ_PUSH0 & 0x7F) >> 2);
	mask |= 1 << ((mmTPC2_QM_PQ_PUSH1 & 0x7F) >> 2);
	mask |= 1 << ((mmTPC2_QM_PQ_PUSH2 & 0x7F) >> 2);
	mask |= 1 << ((mmTPC2_QM_PQ_PUSH3 & 0x7F) >> 2);
	mask |= 1 << ((mmTPC2_QM_PQ_STS0 & 0x7F) >> 2);
	mask |= 1 << ((mmTPC2_QM_PQ_STS1 & 0x7F) >> 2);
	mask |= 1 << ((mmTPC2_QM_PQ_RD_RATE_LIM_EN & 0x7F) >> 2);
	mask |= 1 << ((mmTPC2_QM_PQ_RD_RATE_LIM_RST_TOKEN & 0x7F) >> 2);
	mask |= 1 << ((mmTPC2_QM_PQ_RD_RATE_LIM_SAT & 0x7F) >> 2);
	mask |= 1 << ((mmTPC2_QM_PQ_RD_RATE_LIM_TOUT & 0x7F) >> 2);
	mask |= 1 << ((mmTPC2_QM_CQ_CFG0 & 0x7F) >> 2);
	mask |= 1 << ((mmTPC2_QM_CQ_CFG1 & 0x7F) >> 2);
	mask |= 1 << ((mmTPC2_QM_CQ_ARUSER & 0x7F) >> 2);
	mask |= 1 << ((mmTPC2_QM_CQ_PTR_LO & 0x7F) >> 2);
	mask |= 1 << ((mmTPC2_QM_CQ_PTR_HI & 0x7F) >> 2);
	mask |= 1 << ((mmTPC2_QM_CQ_TSIZE & 0x7F) >> 2);
	mask |= 1 << ((mmTPC2_QM_CQ_CTL & 0x7F) >> 2);
	mask |= 1 << ((mmTPC2_QM_CQ_PTR_LO_STS & 0x7F) >> 2);
	mask |= 1 << ((mmTPC2_QM_CQ_PTR_HI_STS & 0x7F) >> 2);
	mask |= 1 << ((mmTPC2_QM_CQ_TSIZE_STS & 0x7F) >> 2);
	mask |= 1 << ((mmTPC2_QM_CQ_CTL_STS & 0x7F) >> 2);
	mask |= 1 << ((mmTPC2_QM_CQ_STS0 & 0x7F) >> 2);
	mask |= 1 << ((mmTPC2_QM_CQ_STS1 & 0x7F) >> 2);
	mask |= 1 << ((mmTPC2_QM_CQ_RD_RATE_LIM_EN & 0x7F) >> 2);
	mask |= 1 << ((mmTPC2_QM_CQ_RD_RATE_LIM_RST_TOKEN & 0x7F) >> 2);
	mask |= 1 << ((mmTPC2_QM_CQ_RD_RATE_LIM_SAT & 0x7F) >> 2);
	mask |= 1 << ((mmTPC2_QM_CQ_RD_RATE_LIM_TOUT & 0x7F) >> 2);

	WREG32(pb_addr + word_offset, ~mask);

	pb_addr = (mmTPC2_QM_CQ_IFIFO_CNT & ~0xFFF) + PROT_BITS_OFFS;
	word_offset = ((mmTPC2_QM_CQ_IFIFO_CNT & PROT_BITS_OFFS) >> 7) << 2;
	mask = 1 << ((mmTPC2_QM_CQ_IFIFO_CNT & 0x7F) >> 2);
	mask |= 1 << ((mmTPC2_QM_CP_MSG_BASE0_ADDR_LO & 0x7F) >> 2);
	mask |= 1 << ((mmTPC2_QM_CP_MSG_BASE0_ADDR_HI & 0x7F) >> 2);
	mask |= 1 << ((mmTPC2_QM_CP_MSG_BASE1_ADDR_LO & 0x7F) >> 2);
	mask |= 1 << ((mmTPC2_QM_CP_MSG_BASE1_ADDR_HI & 0x7F) >> 2);
	mask |= 1 << ((mmTPC2_QM_CP_MSG_BASE2_ADDR_LO & 0x7F) >> 2);
	mask |= 1 << ((mmTPC2_QM_CP_MSG_BASE2_ADDR_HI & 0x7F) >> 2);
	mask |= 1 << ((mmTPC2_QM_CP_MSG_BASE3_ADDR_LO & 0x7F) >> 2);
	mask |= 1 << ((mmTPC2_QM_CP_MSG_BASE3_ADDR_HI & 0x7F) >> 2);
	mask |= 1 << ((mmTPC2_QM_CP_LDMA_TSIZE_OFFSET & 0x7F) >> 2);
	mask |= 1 << ((mmTPC2_QM_CP_LDMA_SRC_BASE_LO_OFFSET & 0x7F) >> 2);
	mask |= 1 << ((mmTPC2_QM_CP_LDMA_SRC_BASE_HI_OFFSET & 0x7F) >> 2);
	mask |= 1 << ((mmTPC2_QM_CP_LDMA_DST_BASE_LO_OFFSET & 0x7F) >> 2);
	mask |= 1 << ((mmTPC2_QM_CP_LDMA_DST_BASE_HI_OFFSET & 0x7F) >> 2);
	mask |= 1 << ((mmTPC2_QM_CP_LDMA_COMMIT_OFFSET & 0x7F) >> 2);

	WREG32(pb_addr + word_offset, ~mask);

	pb_addr = (mmTPC2_CMDQ_GLBL_CFG0 & ~0xFFF) + PROT_BITS_OFFS;
	word_offset = ((mmTPC2_CMDQ_GLBL_CFG0 & PROT_BITS_OFFS) >> 7) << 2;
	mask = 1 << ((mmTPC2_CMDQ_GLBL_CFG0 & 0x7F) >> 2);
	mask |= 1 << ((mmTPC2_CMDQ_GLBL_CFG1 & 0x7F) >> 2);
	mask |= 1 << ((mmTPC2_CMDQ_GLBL_PROT & 0x7F) >> 2);
	mask |= 1 << ((mmTPC2_CMDQ_GLBL_ERR_CFG & 0x7F) >> 2);
	mask |= 1 << ((mmTPC2_CMDQ_GLBL_ERR_ADDR_LO & 0x7F) >> 2);
	mask |= 1 << ((mmTPC2_CMDQ_GLBL_ERR_ADDR_HI & 0x7F) >> 2);
	mask |= 1 << ((mmTPC2_CMDQ_GLBL_ERR_WDATA & 0x7F) >> 2);
	mask |= 1 << ((mmTPC2_CMDQ_GLBL_SECURE_PROPS & 0x7F) >> 2);
	mask |= 1 << ((mmTPC2_CMDQ_GLBL_NON_SECURE_PROPS & 0x7F) >> 2);
	mask |= 1 << ((mmTPC2_CMDQ_GLBL_STS0 & 0x7F) >> 2);
	mask |= 1 << ((mmTPC2_CMDQ_GLBL_STS1 & 0x7F) >> 2);

	WREG32(pb_addr + word_offset, ~mask);

	pb_addr = (mmTPC2_CMDQ_CQ_CFG0 & ~0xFFF) + PROT_BITS_OFFS;
	word_offset = ((mmTPC2_CMDQ_CQ_CFG0 & PROT_BITS_OFFS) >> 7) << 2;
	mask = 1 << ((mmTPC2_CMDQ_CQ_CFG0 & 0x7F) >> 2);
	mask |= 1 << ((mmTPC2_CMDQ_CQ_CFG1 & 0x7F) >> 2);
	mask |= 1 << ((mmTPC2_CMDQ_CQ_ARUSER & 0x7F) >> 2);
	mask |= 1 << ((mmTPC2_CMDQ_CQ_PTR_LO_STS & 0x7F) >> 2);
	mask |= 1 << ((mmTPC2_CMDQ_CQ_PTR_HI_STS & 0x7F) >> 2);
	mask |= 1 << ((mmTPC2_CMDQ_CQ_TSIZE_STS & 0x7F) >> 2);
	mask |= 1 << ((mmTPC2_CMDQ_CQ_CTL_STS & 0x7F) >> 2);
	mask |= 1 << ((mmTPC2_CMDQ_CQ_STS0 & 0x7F) >> 2);
	mask |= 1 << ((mmTPC2_CMDQ_CQ_STS1 & 0x7F) >> 2);
	mask |= 1 << ((mmTPC2_CMDQ_CQ_RD_RATE_LIM_EN & 0x7F) >> 2);
	mask |= 1 << ((mmTPC2_CMDQ_CQ_RD_RATE_LIM_RST_TOKEN & 0x7F) >> 2);
	mask |= 1 << ((mmTPC2_CMDQ_CQ_RD_RATE_LIM_SAT & 0x7F) >> 2);
	mask |= 1 << ((mmTPC2_CMDQ_CQ_RD_RATE_LIM_TOUT & 0x7F) >> 2);

	WREG32(pb_addr + word_offset, ~mask);

	pb_addr = (mmTPC2_CMDQ_CQ_IFIFO_CNT & ~0xFFF) + PROT_BITS_OFFS;
	word_offset = ((mmTPC2_CMDQ_CQ_IFIFO_CNT & PROT_BITS_OFFS) >> 7) << 2;
	mask = 1 << ((mmTPC2_CMDQ_CQ_IFIFO_CNT & 0x7F) >> 2);
	mask |= 1 << ((mmTPC2_CMDQ_CP_MSG_BASE0_ADDR_LO & 0x7F) >> 2);
	mask |= 1 << ((mmTPC2_CMDQ_CP_MSG_BASE0_ADDR_HI & 0x7F) >> 2);
	mask |= 1 << ((mmTPC2_CMDQ_CP_MSG_BASE1_ADDR_LO & 0x7F) >> 2);
	mask |= 1 << ((mmTPC2_CMDQ_CP_MSG_BASE1_ADDR_HI & 0x7F) >> 2);
	mask |= 1 << ((mmTPC2_CMDQ_CP_MSG_BASE2_ADDR_LO & 0x7F) >> 2);
	mask |= 1 << ((mmTPC2_CMDQ_CP_MSG_BASE2_ADDR_HI & 0x7F) >> 2);
	mask |= 1 << ((mmTPC2_CMDQ_CP_MSG_BASE3_ADDR_LO & 0x7F) >> 2);
	mask |= 1 << ((mmTPC2_CMDQ_CP_MSG_BASE3_ADDR_HI & 0x7F) >> 2);
	mask |= 1 << ((mmTPC2_CMDQ_CP_LDMA_TSIZE_OFFSET & 0x7F) >> 2);
	mask |= 1 << ((mmTPC2_CMDQ_CP_LDMA_SRC_BASE_LO_OFFSET & 0x7F) >> 2);
	mask |= 1 << ((mmTPC2_CMDQ_CP_LDMA_SRC_BASE_HI_OFFSET & 0x7F) >> 2);
	mask |= 1 << ((mmTPC2_CMDQ_CP_LDMA_DST_BASE_LO_OFFSET & 0x7F) >> 2);
	mask |= 1 << ((mmTPC2_CMDQ_CP_LDMA_DST_BASE_HI_OFFSET & 0x7F) >> 2);
	mask |= 1 << ((mmTPC2_CMDQ_CP_LDMA_COMMIT_OFFSET & 0x7F) >> 2);
	mask |= 1 << ((mmTPC2_CMDQ_CP_STS & 0x7F) >> 2);
	mask |= 1 << ((mmTPC2_CMDQ_CP_CURRENT_INST_LO & 0x7F) >> 2);

	WREG32(pb_addr + word_offset, ~mask);

	pb_addr = (mmTPC2_CMDQ_CP_CURRENT_INST_HI & ~0xFFF) + PROT_BITS_OFFS;
	word_offset = ((mmTPC2_CMDQ_CP_CURRENT_INST_HI & PROT_BITS_OFFS) >> 7)
			<< 2;
	mask = 1 << ((mmTPC2_CMDQ_CP_CURRENT_INST_HI & 0x7F) >> 2);
	mask |= 1 << ((mmTPC2_CMDQ_CP_BARRIER_CFG & 0x7F) >> 2);
	mask |= 1 << ((mmTPC2_CMDQ_CP_DBG_0 & 0x7F) >> 2);
	mask |= 1 << ((mmTPC2_CMDQ_CQ_BUF_ADDR & 0x7F) >> 2);
	mask |= 1 << ((mmTPC2_CMDQ_CQ_BUF_RDATA & 0x7F) >> 2);

	WREG32(pb_addr + word_offset, ~mask);

	goya_pb_set_block(hdev, mmTPC3_RTR_BASE);
	goya_pb_set_block(hdev, mmTPC3_RD_REGULATOR_BASE);
	goya_pb_set_block(hdev, mmTPC3_WR_REGULATOR_BASE);

	pb_addr = (mmTPC3_CFG_CFG_BASE_ADDRESS_HIGH & ~0xFFF) + PROT_BITS_OFFS;
	word_offset = ((mmTPC3_CFG_CFG_BASE_ADDRESS_HIGH
			& PROT_BITS_OFFS) >> 7) << 2;
	mask = 1 << ((mmTPC3_CFG_CFG_BASE_ADDRESS_HIGH & 0x7F) >> 2);
	mask |= 1 << ((mmTPC3_CFG_CFG_SUBTRACT_VALUE & 0x7F) >> 2);
	mask |= 1 << ((mmTPC3_CFG_SM_BASE_ADDRESS_LOW & 0x7F) >> 2);
	mask |= 1 << ((mmTPC3_CFG_SM_BASE_ADDRESS_HIGH & 0x7F) >> 2);

	WREG32(pb_addr + word_offset, ~mask);

	pb_addr = (mmTPC3_CFG_ARUSER & ~0xFFF) + PROT_BITS_OFFS;
	word_offset = ((mmTPC3_CFG_ARUSER & PROT_BITS_OFFS) >> 7) << 2;
	mask = 1 << ((mmTPC3_CFG_ARUSER & 0x7F) >> 2);
	mask |= 1 << ((mmTPC3_CFG_AWUSER & 0x7F) >> 2);

	WREG32(pb_addr + word_offset, ~mask);

	pb_addr = (mmTPC3_CFG_FUNC_MBIST_CNTRL & ~0xFFF) + PROT_BITS_OFFS;
	word_offset = ((mmTPC3_CFG_FUNC_MBIST_CNTRL
			& PROT_BITS_OFFS) >> 7) << 2;
	mask = 1 << ((mmTPC3_CFG_FUNC_MBIST_CNTRL & 0x7F) >> 2);
	mask |= 1 << ((mmTPC3_CFG_FUNC_MBIST_PAT & 0x7F) >> 2);
	mask |= 1 << ((mmTPC3_CFG_FUNC_MBIST_MEM_0 & 0x7F) >> 2);
	mask |= 1 << ((mmTPC3_CFG_FUNC_MBIST_MEM_1 & 0x7F) >> 2);
	mask |= 1 << ((mmTPC3_CFG_FUNC_MBIST_MEM_2 & 0x7F) >> 2);
	mask |= 1 << ((mmTPC3_CFG_FUNC_MBIST_MEM_3 & 0x7F) >> 2);
	mask |= 1 << ((mmTPC3_CFG_FUNC_MBIST_MEM_4 & 0x7F) >> 2);
	mask |= 1 << ((mmTPC3_CFG_FUNC_MBIST_MEM_5 & 0x7F) >> 2);
	mask |= 1 << ((mmTPC3_CFG_FUNC_MBIST_MEM_6 & 0x7F) >> 2);
	mask |= 1 << ((mmTPC3_CFG_FUNC_MBIST_MEM_7 & 0x7F) >> 2);
	mask |= 1 << ((mmTPC3_CFG_FUNC_MBIST_MEM_8 & 0x7F) >> 2);
	mask |= 1 << ((mmTPC3_CFG_FUNC_MBIST_MEM_9 & 0x7F) >> 2);

	WREG32(pb_addr + word_offset, ~mask);

	pb_addr = (mmTPC3_QM_GLBL_CFG0 & ~0xFFF) + PROT_BITS_OFFS;
	word_offset = ((mmTPC3_QM_GLBL_CFG0 & PROT_BITS_OFFS) >> 7) << 2;
	mask = 1 << ((mmTPC3_QM_GLBL_CFG0 & 0x7F) >> 2);
	mask |= 1 << ((mmTPC3_QM_GLBL_CFG1 & 0x7F) >> 2);
	mask |= 1 << ((mmTPC3_QM_GLBL_PROT & 0x7F) >> 2);
	mask |= 1 << ((mmTPC3_QM_GLBL_ERR_CFG & 0x7F) >> 2);
	mask |= 1 << ((mmTPC3_QM_GLBL_ERR_ADDR_LO & 0x7F) >> 2);
	mask |= 1 << ((mmTPC3_QM_GLBL_ERR_ADDR_HI & 0x7F) >> 2);
	mask |= 1 << ((mmTPC3_QM_GLBL_ERR_WDATA & 0x7F) >> 2);
	mask |= 1 << ((mmTPC3_QM_GLBL_SECURE_PROPS & 0x7F) >> 2);
	mask |= 1 << ((mmTPC3_QM_GLBL_NON_SECURE_PROPS & 0x7F) >> 2);
	mask |= 1 << ((mmTPC3_QM_GLBL_STS0 & 0x7F) >> 2);
	mask |= 1 << ((mmTPC3_QM_GLBL_STS1 & 0x7F) >> 2);
	mask |= 1 << ((mmTPC3_QM_PQ_BASE_LO & 0x7F) >> 2);
	mask |= 1 << ((mmTPC3_QM_PQ_BASE_HI & 0x7F) >> 2);
	mask |= 1 << ((mmTPC3_QM_PQ_SIZE & 0x7F) >> 2);
	mask |= 1 << ((mmTPC3_QM_PQ_PI & 0x7F) >> 2);
	mask |= 1 << ((mmTPC3_QM_PQ_CI & 0x7F) >> 2);
	mask |= 1 << ((mmTPC3_QM_PQ_CFG0 & 0x7F) >> 2);
	mask |= 1 << ((mmTPC3_QM_PQ_CFG1 & 0x7F) >> 2);
	mask |= 1 << ((mmTPC3_QM_PQ_ARUSER & 0x7F) >> 2);

	WREG32(pb_addr + word_offset, ~mask);

	pb_addr = (mmTPC3_QM_PQ_PUSH0 & ~0xFFF) + PROT_BITS_OFFS;
	word_offset = ((mmTPC3_QM_PQ_PUSH0 & PROT_BITS_OFFS) >> 7) << 2;
	mask = 1 << ((mmTPC3_QM_PQ_PUSH0 & 0x7F) >> 2);
	mask |= 1 << ((mmTPC3_QM_PQ_PUSH1 & 0x7F) >> 2);
	mask |= 1 << ((mmTPC3_QM_PQ_PUSH2 & 0x7F) >> 2);
	mask |= 1 << ((mmTPC3_QM_PQ_PUSH3 & 0x7F) >> 2);
	mask |= 1 << ((mmTPC3_QM_PQ_STS0 & 0x7F) >> 2);
	mask |= 1 << ((mmTPC3_QM_PQ_STS1 & 0x7F) >> 2);
	mask |= 1 << ((mmTPC3_QM_PQ_RD_RATE_LIM_EN & 0x7F) >> 2);
	mask |= 1 << ((mmTPC3_QM_PQ_RD_RATE_LIM_RST_TOKEN & 0x7F) >> 2);
	mask |= 1 << ((mmTPC3_QM_PQ_RD_RATE_LIM_SAT & 0x7F) >> 2);
	mask |= 1 << ((mmTPC3_QM_PQ_RD_RATE_LIM_TOUT & 0x7F) >> 2);
	mask |= 1 << ((mmTPC3_QM_CQ_CFG0 & 0x7F) >> 2);
	mask |= 1 << ((mmTPC3_QM_CQ_CFG1 & 0x7F) >> 2);
	mask |= 1 << ((mmTPC3_QM_CQ_ARUSER & 0x7F) >> 2);
	mask |= 1 << ((mmTPC3_QM_CQ_PTR_LO & 0x7F) >> 2);
	mask |= 1 << ((mmTPC3_QM_CQ_PTR_HI & 0x7F) >> 2);
	mask |= 1 << ((mmTPC3_QM_CQ_TSIZE & 0x7F) >> 2);
	mask |= 1 << ((mmTPC3_QM_CQ_CTL & 0x7F) >> 2);
	mask |= 1 << ((mmTPC3_QM_CQ_PTR_LO_STS & 0x7F) >> 2);
	mask |= 1 << ((mmTPC3_QM_CQ_PTR_HI_STS & 0x7F) >> 2);
	mask |= 1 << ((mmTPC3_QM_CQ_TSIZE_STS & 0x7F) >> 2);
	mask |= 1 << ((mmTPC3_QM_CQ_CTL_STS & 0x7F) >> 2);
	mask |= 1 << ((mmTPC3_QM_CQ_STS0 & 0x7F) >> 2);
	mask |= 1 << ((mmTPC3_QM_CQ_STS1 & 0x7F) >> 2);
	mask |= 1 << ((mmTPC3_QM_CQ_RD_RATE_LIM_EN & 0x7F) >> 2);
	mask |= 1 << ((mmTPC3_QM_CQ_RD_RATE_LIM_RST_TOKEN & 0x7F) >> 2);
	mask |= 1 << ((mmTPC3_QM_CQ_RD_RATE_LIM_SAT & 0x7F) >> 2);
	mask |= 1 << ((mmTPC3_QM_CQ_RD_RATE_LIM_TOUT & 0x7F) >> 2);

	WREG32(pb_addr + word_offset, ~mask);

	pb_addr = (mmTPC3_QM_CQ_IFIFO_CNT & ~0xFFF) + PROT_BITS_OFFS;
	word_offset = ((mmTPC3_QM_CQ_IFIFO_CNT & PROT_BITS_OFFS) >> 7) << 2;
	mask = 1 << ((mmTPC3_QM_CQ_IFIFO_CNT & 0x7F) >> 2);
	mask |= 1 << ((mmTPC3_QM_CP_MSG_BASE0_ADDR_LO & 0x7F) >> 2);
	mask |= 1 << ((mmTPC3_QM_CP_MSG_BASE0_ADDR_HI & 0x7F) >> 2);
	mask |= 1 << ((mmTPC3_QM_CP_MSG_BASE1_ADDR_LO & 0x7F) >> 2);
	mask |= 1 << ((mmTPC3_QM_CP_MSG_BASE1_ADDR_HI & 0x7F) >> 2);
	mask |= 1 << ((mmTPC3_QM_CP_MSG_BASE2_ADDR_LO & 0x7F) >> 2);
	mask |= 1 << ((mmTPC3_QM_CP_MSG_BASE2_ADDR_HI & 0x7F) >> 2);
	mask |= 1 << ((mmTPC3_QM_CP_MSG_BASE3_ADDR_LO & 0x7F) >> 2);
	mask |= 1 << ((mmTPC3_QM_CP_MSG_BASE3_ADDR_HI & 0x7F) >> 2);
	mask |= 1 << ((mmTPC3_QM_CP_LDMA_TSIZE_OFFSET & 0x7F) >> 2);
	mask |= 1 << ((mmTPC3_QM_CP_LDMA_SRC_BASE_LO_OFFSET & 0x7F) >> 2);
	mask |= 1 << ((mmTPC3_QM_CP_LDMA_SRC_BASE_HI_OFFSET & 0x7F) >> 2);
	mask |= 1 << ((mmTPC3_QM_CP_LDMA_DST_BASE_LO_OFFSET & 0x7F) >> 2);
	mask |= 1 << ((mmTPC3_QM_CP_LDMA_DST_BASE_HI_OFFSET & 0x7F) >> 2);
	mask |= 1 << ((mmTPC3_QM_CP_LDMA_COMMIT_OFFSET & 0x7F) >> 2);

	WREG32(pb_addr + word_offset, ~mask);

	pb_addr = (mmTPC3_CMDQ_GLBL_CFG0 & ~0xFFF) + PROT_BITS_OFFS;
	word_offset = ((mmTPC3_CMDQ_GLBL_CFG0 & PROT_BITS_OFFS) >> 7) << 2;
	mask = 1 << ((mmTPC3_CMDQ_GLBL_CFG0 & 0x7F) >> 2);
	mask |= 1 << ((mmTPC3_CMDQ_GLBL_CFG1 & 0x7F) >> 2);
	mask |= 1 << ((mmTPC3_CMDQ_GLBL_PROT & 0x7F) >> 2);
	mask |= 1 << ((mmTPC3_CMDQ_GLBL_ERR_CFG & 0x7F) >> 2);
	mask |= 1 << ((mmTPC3_CMDQ_GLBL_ERR_ADDR_LO & 0x7F) >> 2);
	mask |= 1 << ((mmTPC3_CMDQ_GLBL_ERR_ADDR_HI & 0x7F) >> 2);
	mask |= 1 << ((mmTPC3_CMDQ_GLBL_ERR_WDATA & 0x7F) >> 2);
	mask |= 1 << ((mmTPC3_CMDQ_GLBL_SECURE_PROPS & 0x7F) >> 2);
	mask |= 1 << ((mmTPC3_CMDQ_GLBL_NON_SECURE_PROPS & 0x7F) >> 2);
	mask |= 1 << ((mmTPC3_CMDQ_GLBL_STS0 & 0x7F) >> 2);
	mask |= 1 << ((mmTPC3_CMDQ_GLBL_STS1 & 0x7F) >> 2);

	WREG32(pb_addr + word_offset, ~mask);

	pb_addr = (mmTPC3_CMDQ_CQ_CFG0 & ~0xFFF) + PROT_BITS_OFFS;
	word_offset = ((mmTPC3_CMDQ_CQ_CFG0 & PROT_BITS_OFFS) >> 7) << 2;
	mask = 1 << ((mmTPC3_CMDQ_CQ_CFG0 & 0x7F) >> 2);
	mask |= 1 << ((mmTPC3_CMDQ_CQ_CFG1 & 0x7F) >> 2);
	mask |= 1 << ((mmTPC3_CMDQ_CQ_ARUSER & 0x7F) >> 2);
	mask |= 1 << ((mmTPC3_CMDQ_CQ_PTR_LO_STS & 0x7F) >> 2);
	mask |= 1 << ((mmTPC3_CMDQ_CQ_PTR_HI_STS & 0x7F) >> 2);
	mask |= 1 << ((mmTPC3_CMDQ_CQ_TSIZE_STS & 0x7F) >> 2);
	mask |= 1 << ((mmTPC3_CMDQ_CQ_CTL_STS & 0x7F) >> 2);
	mask |= 1 << ((mmTPC3_CMDQ_CQ_STS0 & 0x7F) >> 2);
	mask |= 1 << ((mmTPC3_CMDQ_CQ_STS1 & 0x7F) >> 2);
	mask |= 1 << ((mmTPC3_CMDQ_CQ_RD_RATE_LIM_EN & 0x7F) >> 2);
	mask |= 1 << ((mmTPC3_CMDQ_CQ_RD_RATE_LIM_RST_TOKEN & 0x7F) >> 2);
	mask |= 1 << ((mmTPC3_CMDQ_CQ_RD_RATE_LIM_SAT & 0x7F) >> 2);
	mask |= 1 << ((mmTPC3_CMDQ_CQ_RD_RATE_LIM_TOUT & 0x7F) >> 2);

	WREG32(pb_addr + word_offset, ~mask);

	pb_addr = (mmTPC3_CMDQ_CQ_IFIFO_CNT & ~0xFFF) + PROT_BITS_OFFS;
	word_offset = ((mmTPC3_CMDQ_CQ_IFIFO_CNT & PROT_BITS_OFFS) >> 7) << 2;
	mask = 1 << ((mmTPC3_CMDQ_CQ_IFIFO_CNT & 0x7F) >> 2);
	mask |= 1 << ((mmTPC3_CMDQ_CP_MSG_BASE0_ADDR_LO & 0x7F) >> 2);
	mask |= 1 << ((mmTPC3_CMDQ_CP_MSG_BASE0_ADDR_HI & 0x7F) >> 2);
	mask |= 1 << ((mmTPC3_CMDQ_CP_MSG_BASE1_ADDR_LO & 0x7F) >> 2);
	mask |= 1 << ((mmTPC3_CMDQ_CP_MSG_BASE1_ADDR_HI & 0x7F) >> 2);
	mask |= 1 << ((mmTPC3_CMDQ_CP_MSG_BASE2_ADDR_LO & 0x7F) >> 2);
	mask |= 1 << ((mmTPC3_CMDQ_CP_MSG_BASE2_ADDR_HI & 0x7F) >> 2);
	mask |= 1 << ((mmTPC3_CMDQ_CP_MSG_BASE3_ADDR_LO & 0x7F) >> 2);
	mask |= 1 << ((mmTPC3_CMDQ_CP_MSG_BASE3_ADDR_HI & 0x7F) >> 2);
	mask |= 1 << ((mmTPC3_CMDQ_CP_LDMA_TSIZE_OFFSET & 0x7F) >> 2);
	mask |= 1 << ((mmTPC3_CMDQ_CP_LDMA_SRC_BASE_LO_OFFSET & 0x7F) >> 2);
	mask |= 1 << ((mmTPC3_CMDQ_CP_LDMA_SRC_BASE_HI_OFFSET & 0x7F) >> 2);
	mask |= 1 << ((mmTPC3_CMDQ_CP_LDMA_DST_BASE_LO_OFFSET & 0x7F) >> 2);
	mask |= 1 << ((mmTPC3_CMDQ_CP_LDMA_DST_BASE_HI_OFFSET & 0x7F) >> 2);
	mask |= 1 << ((mmTPC3_CMDQ_CP_LDMA_COMMIT_OFFSET & 0x7F) >> 2);
	mask |= 1 << ((mmTPC3_CMDQ_CP_STS & 0x7F) >> 2);
	mask |= 1 << ((mmTPC3_CMDQ_CP_CURRENT_INST_LO & 0x7F) >> 2);

	WREG32(pb_addr + word_offset, ~mask);

	pb_addr = (mmTPC3_CMDQ_CP_CURRENT_INST_HI & ~0xFFF) + PROT_BITS_OFFS;
	word_offset = ((mmTPC3_CMDQ_CP_CURRENT_INST_HI & PROT_BITS_OFFS) >> 7)
			<< 2;
	mask = 1 << ((mmTPC3_CMDQ_CP_CURRENT_INST_HI & 0x7F) >> 2);
	mask |= 1 << ((mmTPC3_CMDQ_CP_BARRIER_CFG & 0x7F) >> 2);
	mask |= 1 << ((mmTPC3_CMDQ_CP_DBG_0 & 0x7F) >> 2);
	mask |= 1 << ((mmTPC3_CMDQ_CQ_BUF_ADDR & 0x7F) >> 2);
	mask |= 1 << ((mmTPC3_CMDQ_CQ_BUF_RDATA & 0x7F) >> 2);

	WREG32(pb_addr + word_offset, ~mask);

	goya_pb_set_block(hdev, mmTPC4_RTR_BASE);
	goya_pb_set_block(hdev, mmTPC4_RD_REGULATOR_BASE);
	goya_pb_set_block(hdev, mmTPC4_WR_REGULATOR_BASE);

	pb_addr = (mmTPC4_CFG_CFG_BASE_ADDRESS_HIGH & ~0xFFF) + PROT_BITS_OFFS;
	word_offset = ((mmTPC4_CFG_CFG_BASE_ADDRESS_HIGH &
			PROT_BITS_OFFS) >> 7) << 2;
	mask = 1 << ((mmTPC4_CFG_CFG_BASE_ADDRESS_HIGH & 0x7F) >> 2);
	mask |= 1 << ((mmTPC4_CFG_CFG_SUBTRACT_VALUE & 0x7F) >> 2);
	mask |= 1 << ((mmTPC4_CFG_SM_BASE_ADDRESS_LOW & 0x7F) >> 2);
	mask |= 1 << ((mmTPC4_CFG_SM_BASE_ADDRESS_HIGH & 0x7F) >> 2);

	WREG32(pb_addr + word_offset, ~mask);

	pb_addr = (mmTPC4_CFG_ARUSER & ~0xFFF) + PROT_BITS_OFFS;
	word_offset = ((mmTPC4_CFG_ARUSER & PROT_BITS_OFFS) >> 7) << 2;
	mask = 1 << ((mmTPC4_CFG_ARUSER & 0x7F) >> 2);
	mask |= 1 << ((mmTPC4_CFG_AWUSER & 0x7F) >> 2);

	WREG32(pb_addr + word_offset, ~mask);

	pb_addr = (mmTPC4_CFG_FUNC_MBIST_CNTRL & ~0xFFF) + PROT_BITS_OFFS;
	word_offset = ((mmTPC4_CFG_FUNC_MBIST_CNTRL &
			PROT_BITS_OFFS) >> 7) << 2;
	mask = 1 << ((mmTPC4_CFG_FUNC_MBIST_CNTRL & 0x7F) >> 2);
	mask |= 1 << ((mmTPC4_CFG_FUNC_MBIST_PAT & 0x7F) >> 2);
	mask |= 1 << ((mmTPC4_CFG_FUNC_MBIST_MEM_0 & 0x7F) >> 2);
	mask |= 1 << ((mmTPC4_CFG_FUNC_MBIST_MEM_1 & 0x7F) >> 2);
	mask |= 1 << ((mmTPC4_CFG_FUNC_MBIST_MEM_2 & 0x7F) >> 2);
	mask |= 1 << ((mmTPC4_CFG_FUNC_MBIST_MEM_3 & 0x7F) >> 2);
	mask |= 1 << ((mmTPC4_CFG_FUNC_MBIST_MEM_4 & 0x7F) >> 2);
	mask |= 1 << ((mmTPC4_CFG_FUNC_MBIST_MEM_5 & 0x7F) >> 2);
	mask |= 1 << ((mmTPC4_CFG_FUNC_MBIST_MEM_6 & 0x7F) >> 2);
	mask |= 1 << ((mmTPC4_CFG_FUNC_MBIST_MEM_7 & 0x7F) >> 2);
	mask |= 1 << ((mmTPC4_CFG_FUNC_MBIST_MEM_8 & 0x7F) >> 2);
	mask |= 1 << ((mmTPC4_CFG_FUNC_MBIST_MEM_9 & 0x7F) >> 2);

	WREG32(pb_addr + word_offset, ~mask);

	pb_addr = (mmTPC4_QM_GLBL_CFG0 & ~0xFFF) + PROT_BITS_OFFS;
	word_offset = ((mmTPC4_QM_GLBL_CFG0 & PROT_BITS_OFFS) >> 7) << 2;
	mask = 1 << ((mmTPC4_QM_GLBL_CFG0 & 0x7F) >> 2);
	mask |= 1 << ((mmTPC4_QM_GLBL_CFG1 & 0x7F) >> 2);
	mask |= 1 << ((mmTPC4_QM_GLBL_PROT & 0x7F) >> 2);
	mask |= 1 << ((mmTPC4_QM_GLBL_ERR_CFG & 0x7F) >> 2);
	mask |= 1 << ((mmTPC4_QM_GLBL_ERR_ADDR_LO & 0x7F) >> 2);
	mask |= 1 << ((mmTPC4_QM_GLBL_ERR_ADDR_HI & 0x7F) >> 2);
	mask |= 1 << ((mmTPC4_QM_GLBL_ERR_WDATA & 0x7F) >> 2);
	mask |= 1 << ((mmTPC4_QM_GLBL_SECURE_PROPS & 0x7F) >> 2);
	mask |= 1 << ((mmTPC4_QM_GLBL_NON_SECURE_PROPS & 0x7F) >> 2);
	mask |= 1 << ((mmTPC4_QM_GLBL_STS0 & 0x7F) >> 2);
	mask |= 1 << ((mmTPC4_QM_GLBL_STS1 & 0x7F) >> 2);
	mask |= 1 << ((mmTPC4_QM_PQ_BASE_LO & 0x7F) >> 2);
	mask |= 1 << ((mmTPC4_QM_PQ_BASE_HI & 0x7F) >> 2);
	mask |= 1 << ((mmTPC4_QM_PQ_SIZE & 0x7F) >> 2);
	mask |= 1 << ((mmTPC4_QM_PQ_PI & 0x7F) >> 2);
	mask |= 1 << ((mmTPC4_QM_PQ_CI & 0x7F) >> 2);
	mask |= 1 << ((mmTPC4_QM_PQ_CFG0 & 0x7F) >> 2);
	mask |= 1 << ((mmTPC4_QM_PQ_CFG1 & 0x7F) >> 2);
	mask |= 1 << ((mmTPC4_QM_PQ_ARUSER & 0x7F) >> 2);

	WREG32(pb_addr + word_offset, ~mask);

	pb_addr = (mmTPC4_QM_PQ_PUSH0 & ~0xFFF) + PROT_BITS_OFFS;
	word_offset = ((mmTPC4_QM_PQ_PUSH0 & PROT_BITS_OFFS) >> 7) << 2;
	mask = 1 << ((mmTPC4_QM_PQ_PUSH0 & 0x7F) >> 2);
	mask |= 1 << ((mmTPC4_QM_PQ_PUSH1 & 0x7F) >> 2);
	mask |= 1 << ((mmTPC4_QM_PQ_PUSH2 & 0x7F) >> 2);
	mask |= 1 << ((mmTPC4_QM_PQ_PUSH3 & 0x7F) >> 2);
	mask |= 1 << ((mmTPC4_QM_PQ_STS0 & 0x7F) >> 2);
	mask |= 1 << ((mmTPC4_QM_PQ_STS1 & 0x7F) >> 2);
	mask |= 1 << ((mmTPC4_QM_PQ_RD_RATE_LIM_EN & 0x7F) >> 2);
	mask |= 1 << ((mmTPC4_QM_PQ_RD_RATE_LIM_RST_TOKEN & 0x7F) >> 2);
	mask |= 1 << ((mmTPC4_QM_PQ_RD_RATE_LIM_SAT & 0x7F) >> 2);
	mask |= 1 << ((mmTPC4_QM_PQ_RD_RATE_LIM_TOUT & 0x7F) >> 2);
	mask |= 1 << ((mmTPC4_QM_CQ_CFG0 & 0x7F) >> 2);
	mask |= 1 << ((mmTPC4_QM_CQ_CFG1 & 0x7F) >> 2);
	mask |= 1 << ((mmTPC4_QM_CQ_ARUSER & 0x7F) >> 2);
	mask |= 1 << ((mmTPC4_QM_CQ_PTR_LO & 0x7F) >> 2);
	mask |= 1 << ((mmTPC4_QM_CQ_PTR_HI & 0x7F) >> 2);
	mask |= 1 << ((mmTPC4_QM_CQ_TSIZE & 0x7F) >> 2);
	mask |= 1 << ((mmTPC4_QM_CQ_CTL & 0x7F) >> 2);
	mask |= 1 << ((mmTPC4_QM_CQ_PTR_LO_STS & 0x7F) >> 2);
	mask |= 1 << ((mmTPC4_QM_CQ_PTR_HI_STS & 0x7F) >> 2);
	mask |= 1 << ((mmTPC4_QM_CQ_TSIZE_STS & 0x7F) >> 2);
	mask |= 1 << ((mmTPC4_QM_CQ_CTL_STS & 0x7F) >> 2);
	mask |= 1 << ((mmTPC4_QM_CQ_STS0 & 0x7F) >> 2);
	mask |= 1 << ((mmTPC4_QM_CQ_STS1 & 0x7F) >> 2);
	mask |= 1 << ((mmTPC4_QM_CQ_RD_RATE_LIM_EN & 0x7F) >> 2);
	mask |= 1 << ((mmTPC4_QM_CQ_RD_RATE_LIM_RST_TOKEN & 0x7F) >> 2);
	mask |= 1 << ((mmTPC4_QM_CQ_RD_RATE_LIM_SAT & 0x7F) >> 2);
	mask |= 1 << ((mmTPC4_QM_CQ_RD_RATE_LIM_TOUT & 0x7F) >> 2);

	WREG32(pb_addr + word_offset, ~mask);

	pb_addr = (mmTPC4_QM_CQ_IFIFO_CNT & ~0xFFF) + PROT_BITS_OFFS;
	word_offset = ((mmTPC4_QM_CQ_IFIFO_CNT & PROT_BITS_OFFS) >> 7) << 2;
	mask = 1 << ((mmTPC4_QM_CQ_IFIFO_CNT & 0x7F) >> 2);
	mask |= 1 << ((mmTPC4_QM_CP_MSG_BASE0_ADDR_LO & 0x7F) >> 2);
	mask |= 1 << ((mmTPC4_QM_CP_MSG_BASE0_ADDR_HI & 0x7F) >> 2);
	mask |= 1 << ((mmTPC4_QM_CP_MSG_BASE1_ADDR_LO & 0x7F) >> 2);
	mask |= 1 << ((mmTPC4_QM_CP_MSG_BASE1_ADDR_HI & 0x7F) >> 2);
	mask |= 1 << ((mmTPC4_QM_CP_MSG_BASE2_ADDR_LO & 0x7F) >> 2);
	mask |= 1 << ((mmTPC4_QM_CP_MSG_BASE2_ADDR_HI & 0x7F) >> 2);
	mask |= 1 << ((mmTPC4_QM_CP_MSG_BASE3_ADDR_LO & 0x7F) >> 2);
	mask |= 1 << ((mmTPC4_QM_CP_MSG_BASE3_ADDR_HI & 0x7F) >> 2);
	mask |= 1 << ((mmTPC4_QM_CP_LDMA_TSIZE_OFFSET & 0x7F) >> 2);
	mask |= 1 << ((mmTPC4_QM_CP_LDMA_SRC_BASE_LO_OFFSET & 0x7F) >> 2);
	mask |= 1 << ((mmTPC4_QM_CP_LDMA_SRC_BASE_HI_OFFSET & 0x7F) >> 2);
	mask |= 1 << ((mmTPC4_QM_CP_LDMA_DST_BASE_LO_OFFSET & 0x7F) >> 2);
	mask |= 1 << ((mmTPC4_QM_CP_LDMA_DST_BASE_HI_OFFSET & 0x7F) >> 2);
	mask |= 1 << ((mmTPC4_QM_CP_LDMA_COMMIT_OFFSET & 0x7F) >> 2);

	WREG32(pb_addr + word_offset, ~mask);

	pb_addr = (mmTPC4_CMDQ_GLBL_CFG0 & ~0xFFF) + PROT_BITS_OFFS;
	word_offset = ((mmTPC4_CMDQ_GLBL_CFG0 & PROT_BITS_OFFS) >> 7) << 2;
	mask = 1 << ((mmTPC4_CMDQ_GLBL_CFG0 & 0x7F) >> 2);
	mask |= 1 << ((mmTPC4_CMDQ_GLBL_CFG1 & 0x7F) >> 2);
	mask |= 1 << ((mmTPC4_CMDQ_GLBL_PROT & 0x7F) >> 2);
	mask |= 1 << ((mmTPC4_CMDQ_GLBL_ERR_CFG & 0x7F) >> 2);
	mask |= 1 << ((mmTPC4_CMDQ_GLBL_ERR_ADDR_LO & 0x7F) >> 2);
	mask |= 1 << ((mmTPC4_CMDQ_GLBL_ERR_ADDR_HI & 0x7F) >> 2);
	mask |= 1 << ((mmTPC4_CMDQ_GLBL_ERR_WDATA & 0x7F) >> 2);
	mask |= 1 << ((mmTPC4_CMDQ_GLBL_SECURE_PROPS & 0x7F) >> 2);
	mask |= 1 << ((mmTPC4_CMDQ_GLBL_NON_SECURE_PROPS & 0x7F) >> 2);
	mask |= 1 << ((mmTPC4_CMDQ_GLBL_STS0 & 0x7F) >> 2);
	mask |= 1 << ((mmTPC4_CMDQ_GLBL_STS1 & 0x7F) >> 2);

	WREG32(pb_addr + word_offset, ~mask);

	pb_addr = (mmTPC4_CMDQ_CQ_CFG0 & ~0xFFF) + PROT_BITS_OFFS;
	word_offset = ((mmTPC4_CMDQ_CQ_CFG0 & PROT_BITS_OFFS) >> 7) << 2;
	mask = 1 << ((mmTPC4_CMDQ_CQ_CFG0 & 0x7F) >> 2);
	mask |= 1 << ((mmTPC4_CMDQ_CQ_CFG1 & 0x7F) >> 2);
	mask |= 1 << ((mmTPC4_CMDQ_CQ_ARUSER & 0x7F) >> 2);
	mask |= 1 << ((mmTPC4_CMDQ_CQ_PTR_LO_STS & 0x7F) >> 2);
	mask |= 1 << ((mmTPC4_CMDQ_CQ_PTR_HI_STS & 0x7F) >> 2);
	mask |= 1 << ((mmTPC4_CMDQ_CQ_TSIZE_STS & 0x7F) >> 2);
	mask |= 1 << ((mmTPC4_CMDQ_CQ_CTL_STS & 0x7F) >> 2);
	mask |= 1 << ((mmTPC4_CMDQ_CQ_STS0 & 0x7F) >> 2);
	mask |= 1 << ((mmTPC4_CMDQ_CQ_STS1 & 0x7F) >> 2);
	mask |= 1 << ((mmTPC4_CMDQ_CQ_RD_RATE_LIM_EN & 0x7F) >> 2);
	mask |= 1 << ((mmTPC4_CMDQ_CQ_RD_RATE_LIM_RST_TOKEN & 0x7F) >> 2);
	mask |= 1 << ((mmTPC4_CMDQ_CQ_RD_RATE_LIM_SAT & 0x7F) >> 2);
	mask |= 1 << ((mmTPC4_CMDQ_CQ_RD_RATE_LIM_TOUT & 0x7F) >> 2);

	WREG32(pb_addr + word_offset, ~mask);

	pb_addr = (mmTPC4_CMDQ_CQ_IFIFO_CNT & ~0xFFF) + PROT_BITS_OFFS;
	word_offset = ((mmTPC4_CMDQ_CQ_IFIFO_CNT & PROT_BITS_OFFS) >> 7) << 2;
	mask = 1 << ((mmTPC4_CMDQ_CQ_IFIFO_CNT & 0x7F) >> 2);
	mask |= 1 << ((mmTPC4_CMDQ_CP_MSG_BASE0_ADDR_LO & 0x7F) >> 2);
	mask |= 1 << ((mmTPC4_CMDQ_CP_MSG_BASE0_ADDR_HI & 0x7F) >> 2);
	mask |= 1 << ((mmTPC4_CMDQ_CP_MSG_BASE1_ADDR_LO & 0x7F) >> 2);
	mask |= 1 << ((mmTPC4_CMDQ_CP_MSG_BASE1_ADDR_HI & 0x7F) >> 2);
	mask |= 1 << ((mmTPC4_CMDQ_CP_MSG_BASE2_ADDR_LO & 0x7F) >> 2);
	mask |= 1 << ((mmTPC4_CMDQ_CP_MSG_BASE2_ADDR_HI & 0x7F) >> 2);
	mask |= 1 << ((mmTPC4_CMDQ_CP_MSG_BASE3_ADDR_LO & 0x7F) >> 2);
	mask |= 1 << ((mmTPC4_CMDQ_CP_MSG_BASE3_ADDR_HI & 0x7F) >> 2);
	mask |= 1 << ((mmTPC4_CMDQ_CP_LDMA_TSIZE_OFFSET & 0x7F) >> 2);
	mask |= 1 << ((mmTPC4_CMDQ_CP_LDMA_SRC_BASE_LO_OFFSET & 0x7F) >> 2);
	mask |= 1 << ((mmTPC4_CMDQ_CP_LDMA_SRC_BASE_HI_OFFSET & 0x7F) >> 2);
	mask |= 1 << ((mmTPC4_CMDQ_CP_LDMA_DST_BASE_LO_OFFSET & 0x7F) >> 2);
	mask |= 1 << ((mmTPC4_CMDQ_CP_LDMA_DST_BASE_HI_OFFSET & 0x7F) >> 2);
	mask |= 1 << ((mmTPC4_CMDQ_CP_LDMA_COMMIT_OFFSET & 0x7F) >> 2);
	mask |= 1 << ((mmTPC4_CMDQ_CP_STS & 0x7F) >> 2);
	mask |= 1 << ((mmTPC4_CMDQ_CP_CURRENT_INST_LO & 0x7F) >> 2);

	WREG32(pb_addr + word_offset, ~mask);

	pb_addr = (mmTPC4_CMDQ_CP_CURRENT_INST_HI & ~0xFFF) + PROT_BITS_OFFS;
	word_offset = ((mmTPC4_CMDQ_CP_CURRENT_INST_HI & PROT_BITS_OFFS) >> 7)
			<< 2;
	mask = 1 << ((mmTPC4_CMDQ_CP_CURRENT_INST_HI & 0x7F) >> 2);
	mask |= 1 << ((mmTPC4_CMDQ_CP_BARRIER_CFG & 0x7F) >> 2);
	mask |= 1 << ((mmTPC4_CMDQ_CP_DBG_0 & 0x7F) >> 2);
	mask |= 1 << ((mmTPC4_CMDQ_CQ_BUF_ADDR & 0x7F) >> 2);
	mask |= 1 << ((mmTPC4_CMDQ_CQ_BUF_RDATA & 0x7F) >> 2);

	WREG32(pb_addr + word_offset, ~mask);

	goya_pb_set_block(hdev, mmTPC5_RTR_BASE);
	goya_pb_set_block(hdev, mmTPC5_RD_REGULATOR_BASE);
	goya_pb_set_block(hdev, mmTPC5_WR_REGULATOR_BASE);

	pb_addr = (mmTPC5_CFG_CFG_BASE_ADDRESS_HIGH & ~0xFFF) + PROT_BITS_OFFS;
	word_offset = ((mmTPC5_CFG_CFG_BASE_ADDRESS_HIGH &
			PROT_BITS_OFFS) >> 7) << 2;
	mask = 1 << ((mmTPC5_CFG_CFG_BASE_ADDRESS_HIGH & 0x7F) >> 2);
	mask |= 1 << ((mmTPC5_CFG_CFG_SUBTRACT_VALUE & 0x7F) >> 2);
	mask |= 1 << ((mmTPC5_CFG_SM_BASE_ADDRESS_LOW & 0x7F) >> 2);
	mask |= 1 << ((mmTPC5_CFG_SM_BASE_ADDRESS_HIGH & 0x7F) >> 2);

	WREG32(pb_addr + word_offset, ~mask);

	pb_addr = (mmTPC5_CFG_ARUSER & ~0xFFF) + PROT_BITS_OFFS;
	word_offset = ((mmTPC5_CFG_ARUSER & PROT_BITS_OFFS) >> 7) << 2;
	mask = 1 << ((mmTPC5_CFG_ARUSER & 0x7F) >> 2);
	mask |= 1 << ((mmTPC5_CFG_AWUSER & 0x7F) >> 2);

	WREG32(pb_addr + word_offset, ~mask);

	pb_addr = (mmTPC5_CFG_FUNC_MBIST_CNTRL & ~0xFFF) + PROT_BITS_OFFS;
	word_offset = ((mmTPC5_CFG_FUNC_MBIST_CNTRL &
			PROT_BITS_OFFS) >> 7) << 2;
	mask = 1 << ((mmTPC5_CFG_FUNC_MBIST_CNTRL & 0x7F) >> 2);
	mask |= 1 << ((mmTPC5_CFG_FUNC_MBIST_PAT & 0x7F) >> 2);
	mask |= 1 << ((mmTPC5_CFG_FUNC_MBIST_MEM_0 & 0x7F) >> 2);
	mask |= 1 << ((mmTPC5_CFG_FUNC_MBIST_MEM_1 & 0x7F) >> 2);
	mask |= 1 << ((mmTPC5_CFG_FUNC_MBIST_MEM_2 & 0x7F) >> 2);
	mask |= 1 << ((mmTPC5_CFG_FUNC_MBIST_MEM_3 & 0x7F) >> 2);
	mask |= 1 << ((mmTPC5_CFG_FUNC_MBIST_MEM_4 & 0x7F) >> 2);
	mask |= 1 << ((mmTPC5_CFG_FUNC_MBIST_MEM_5 & 0x7F) >> 2);
	mask |= 1 << ((mmTPC5_CFG_FUNC_MBIST_MEM_6 & 0x7F) >> 2);
	mask |= 1 << ((mmTPC5_CFG_FUNC_MBIST_MEM_7 & 0x7F) >> 2);
	mask |= 1 << ((mmTPC5_CFG_FUNC_MBIST_MEM_8 & 0x7F) >> 2);
	mask |= 1 << ((mmTPC5_CFG_FUNC_MBIST_MEM_9 & 0x7F) >> 2);

	WREG32(pb_addr + word_offset, ~mask);

	pb_addr = (mmTPC5_QM_GLBL_CFG0 & ~0xFFF) + PROT_BITS_OFFS;
	word_offset = ((mmTPC5_QM_GLBL_CFG0 & PROT_BITS_OFFS) >> 7) << 2;
	mask = 1 << ((mmTPC5_QM_GLBL_CFG0 & 0x7F) >> 2);
	mask |= 1 << ((mmTPC5_QM_GLBL_CFG1 & 0x7F) >> 2);
	mask |= 1 << ((mmTPC5_QM_GLBL_PROT & 0x7F) >> 2);
	mask |= 1 << ((mmTPC5_QM_GLBL_ERR_CFG & 0x7F) >> 2);
	mask |= 1 << ((mmTPC5_QM_GLBL_ERR_ADDR_LO & 0x7F) >> 2);
	mask |= 1 << ((mmTPC5_QM_GLBL_ERR_ADDR_HI & 0x7F) >> 2);
	mask |= 1 << ((mmTPC5_QM_GLBL_ERR_WDATA & 0x7F) >> 2);
	mask |= 1 << ((mmTPC5_QM_GLBL_SECURE_PROPS & 0x7F) >> 2);
	mask |= 1 << ((mmTPC5_QM_GLBL_NON_SECURE_PROPS & 0x7F) >> 2);
	mask |= 1 << ((mmTPC5_QM_GLBL_STS0 & 0x7F) >> 2);
	mask |= 1 << ((mmTPC5_QM_GLBL_STS1 & 0x7F) >> 2);
	mask |= 1 << ((mmTPC5_QM_PQ_BASE_LO & 0x7F) >> 2);
	mask |= 1 << ((mmTPC5_QM_PQ_BASE_HI & 0x7F) >> 2);
	mask |= 1 << ((mmTPC5_QM_PQ_SIZE & 0x7F) >> 2);
	mask |= 1 << ((mmTPC5_QM_PQ_PI & 0x7F) >> 2);
	mask |= 1 << ((mmTPC5_QM_PQ_CI & 0x7F) >> 2);
	mask |= 1 << ((mmTPC5_QM_PQ_CFG0 & 0x7F) >> 2);
	mask |= 1 << ((mmTPC5_QM_PQ_CFG1 & 0x7F) >> 2);
	mask |= 1 << ((mmTPC5_QM_PQ_ARUSER & 0x7F) >> 2);

	WREG32(pb_addr + word_offset, ~mask);

	pb_addr = (mmTPC5_QM_PQ_PUSH0 & ~0xFFF) + PROT_BITS_OFFS;
	word_offset = ((mmTPC5_QM_PQ_PUSH0 & PROT_BITS_OFFS) >> 7) << 2;
	mask = 1 << ((mmTPC5_QM_PQ_PUSH0 & 0x7F) >> 2);
	mask |= 1 << ((mmTPC5_QM_PQ_PUSH1 & 0x7F) >> 2);
	mask |= 1 << ((mmTPC5_QM_PQ_PUSH2 & 0x7F) >> 2);
	mask |= 1 << ((mmTPC5_QM_PQ_PUSH3 & 0x7F) >> 2);
	mask |= 1 << ((mmTPC5_QM_PQ_STS0 & 0x7F) >> 2);
	mask |= 1 << ((mmTPC5_QM_PQ_STS1 & 0x7F) >> 2);
	mask |= 1 << ((mmTPC5_QM_PQ_RD_RATE_LIM_EN & 0x7F) >> 2);
	mask |= 1 << ((mmTPC5_QM_PQ_RD_RATE_LIM_RST_TOKEN & 0x7F) >> 2);
	mask |= 1 << ((mmTPC5_QM_PQ_RD_RATE_LIM_SAT & 0x7F) >> 2);
	mask |= 1 << ((mmTPC5_QM_PQ_RD_RATE_LIM_TOUT & 0x7F) >> 2);
	mask |= 1 << ((mmTPC5_QM_CQ_CFG0 & 0x7F) >> 2);
	mask |= 1 << ((mmTPC5_QM_CQ_CFG1 & 0x7F) >> 2);
	mask |= 1 << ((mmTPC5_QM_CQ_ARUSER & 0x7F) >> 2);
	mask |= 1 << ((mmTPC5_QM_CQ_PTR_LO & 0x7F) >> 2);
	mask |= 1 << ((mmTPC5_QM_CQ_PTR_HI & 0x7F) >> 2);
	mask |= 1 << ((mmTPC5_QM_CQ_TSIZE & 0x7F) >> 2);
	mask |= 1 << ((mmTPC5_QM_CQ_CTL & 0x7F) >> 2);
	mask |= 1 << ((mmTPC5_QM_CQ_PTR_LO_STS & 0x7F) >> 2);
	mask |= 1 << ((mmTPC5_QM_CQ_PTR_HI_STS & 0x7F) >> 2);
	mask |= 1 << ((mmTPC5_QM_CQ_TSIZE_STS & 0x7F) >> 2);
	mask |= 1 << ((mmTPC5_QM_CQ_CTL_STS & 0x7F) >> 2);
	mask |= 1 << ((mmTPC5_QM_CQ_STS0 & 0x7F) >> 2);
	mask |= 1 << ((mmTPC5_QM_CQ_STS1 & 0x7F) >> 2);
	mask |= 1 << ((mmTPC5_QM_CQ_RD_RATE_LIM_EN & 0x7F) >> 2);
	mask |= 1 << ((mmTPC5_QM_CQ_RD_RATE_LIM_RST_TOKEN & 0x7F) >> 2);
	mask |= 1 << ((mmTPC5_QM_CQ_RD_RATE_LIM_SAT & 0x7F) >> 2);
	mask |= 1 << ((mmTPC5_QM_CQ_RD_RATE_LIM_TOUT & 0x7F) >> 2);

	WREG32(pb_addr + word_offset, ~mask);

	pb_addr = (mmTPC5_QM_CQ_IFIFO_CNT & ~0xFFF) + PROT_BITS_OFFS;
	word_offset = ((mmTPC5_QM_CQ_IFIFO_CNT & PROT_BITS_OFFS) >> 7) << 2;
	mask = 1 << ((mmTPC5_QM_CQ_IFIFO_CNT & 0x7F) >> 2);
	mask |= 1 << ((mmTPC5_QM_CP_MSG_BASE0_ADDR_LO & 0x7F) >> 2);
	mask |= 1 << ((mmTPC5_QM_CP_MSG_BASE0_ADDR_HI & 0x7F) >> 2);
	mask |= 1 << ((mmTPC5_QM_CP_MSG_BASE1_ADDR_LO & 0x7F) >> 2);
	mask |= 1 << ((mmTPC5_QM_CP_MSG_BASE1_ADDR_HI & 0x7F) >> 2);
	mask |= 1 << ((mmTPC5_QM_CP_MSG_BASE2_ADDR_LO & 0x7F) >> 2);
	mask |= 1 << ((mmTPC5_QM_CP_MSG_BASE2_ADDR_HI & 0x7F) >> 2);
	mask |= 1 << ((mmTPC5_QM_CP_MSG_BASE3_ADDR_LO & 0x7F) >> 2);
	mask |= 1 << ((mmTPC5_QM_CP_MSG_BASE3_ADDR_HI & 0x7F) >> 2);
	mask |= 1 << ((mmTPC5_QM_CP_LDMA_TSIZE_OFFSET & 0x7F) >> 2);
	mask |= 1 << ((mmTPC5_QM_CP_LDMA_SRC_BASE_LO_OFFSET & 0x7F) >> 2);
	mask |= 1 << ((mmTPC5_QM_CP_LDMA_SRC_BASE_HI_OFFSET & 0x7F) >> 2);
	mask |= 1 << ((mmTPC5_QM_CP_LDMA_DST_BASE_LO_OFFSET & 0x7F) >> 2);
	mask |= 1 << ((mmTPC5_QM_CP_LDMA_DST_BASE_HI_OFFSET & 0x7F) >> 2);
	mask |= 1 << ((mmTPC5_QM_CP_LDMA_COMMIT_OFFSET & 0x7F) >> 2);

	WREG32(pb_addr + word_offset, ~mask);

	pb_addr = (mmTPC5_CMDQ_GLBL_CFG0 & ~0xFFF) + PROT_BITS_OFFS;
	word_offset = ((mmTPC5_CMDQ_GLBL_CFG0 & PROT_BITS_OFFS) >> 7) << 2;
	mask = 1 << ((mmTPC5_CMDQ_GLBL_CFG0 & 0x7F) >> 2);
	mask |= 1 << ((mmTPC5_CMDQ_GLBL_CFG1 & 0x7F) >> 2);
	mask |= 1 << ((mmTPC5_CMDQ_GLBL_PROT & 0x7F) >> 2);
	mask |= 1 << ((mmTPC5_CMDQ_GLBL_ERR_CFG & 0x7F) >> 2);
	mask |= 1 << ((mmTPC5_CMDQ_GLBL_ERR_ADDR_LO & 0x7F) >> 2);
	mask |= 1 << ((mmTPC5_CMDQ_GLBL_ERR_ADDR_HI & 0x7F) >> 2);
	mask |= 1 << ((mmTPC5_CMDQ_GLBL_ERR_WDATA & 0x7F) >> 2);
	mask |= 1 << ((mmTPC5_CMDQ_GLBL_SECURE_PROPS & 0x7F) >> 2);
	mask |= 1 << ((mmTPC5_CMDQ_GLBL_NON_SECURE_PROPS & 0x7F) >> 2);
	mask |= 1 << ((mmTPC5_CMDQ_GLBL_STS0 & 0x7F) >> 2);
	mask |= 1 << ((mmTPC5_CMDQ_GLBL_STS1 & 0x7F) >> 2);

	WREG32(pb_addr + word_offset, ~mask);

	pb_addr = (mmTPC5_CMDQ_CQ_CFG0 & ~0xFFF) + PROT_BITS_OFFS;
	word_offset = ((mmTPC5_CMDQ_CQ_CFG0 & PROT_BITS_OFFS) >> 7) << 2;
	mask = 1 << ((mmTPC5_CMDQ_CQ_CFG0 & 0x7F) >> 2);
	mask |= 1 << ((mmTPC5_CMDQ_CQ_CFG1 & 0x7F) >> 2);
	mask |= 1 << ((mmTPC5_CMDQ_CQ_ARUSER & 0x7F) >> 2);
	mask |= 1 << ((mmTPC5_CMDQ_CQ_PTR_LO_STS & 0x7F) >> 2);
	mask |= 1 << ((mmTPC5_CMDQ_CQ_PTR_HI_STS & 0x7F) >> 2);
	mask |= 1 << ((mmTPC5_CMDQ_CQ_TSIZE_STS & 0x7F) >> 2);
	mask |= 1 << ((mmTPC5_CMDQ_CQ_CTL_STS & 0x7F) >> 2);
	mask |= 1 << ((mmTPC5_CMDQ_CQ_STS0 & 0x7F) >> 2);
	mask |= 1 << ((mmTPC5_CMDQ_CQ_STS1 & 0x7F) >> 2);
	mask |= 1 << ((mmTPC5_CMDQ_CQ_RD_RATE_LIM_EN & 0x7F) >> 2);
	mask |= 1 << ((mmTPC5_CMDQ_CQ_RD_RATE_LIM_RST_TOKEN & 0x7F) >> 2);
	mask |= 1 << ((mmTPC5_CMDQ_CQ_RD_RATE_LIM_SAT & 0x7F) >> 2);
	mask |= 1 << ((mmTPC5_CMDQ_CQ_RD_RATE_LIM_TOUT & 0x7F) >> 2);

	WREG32(pb_addr + word_offset, ~mask);

	pb_addr = (mmTPC5_CMDQ_CQ_IFIFO_CNT & ~0xFFF) + PROT_BITS_OFFS;
	word_offset = ((mmTPC5_CMDQ_CQ_IFIFO_CNT & PROT_BITS_OFFS) >> 7) << 2;
	mask = 1 << ((mmTPC5_CMDQ_CQ_IFIFO_CNT & 0x7F) >> 2);
	mask |= 1 << ((mmTPC5_CMDQ_CP_MSG_BASE0_ADDR_LO & 0x7F) >> 2);
	mask |= 1 << ((mmTPC5_CMDQ_CP_MSG_BASE0_ADDR_HI & 0x7F) >> 2);
	mask |= 1 << ((mmTPC5_CMDQ_CP_MSG_BASE1_ADDR_LO & 0x7F) >> 2);
	mask |= 1 << ((mmTPC5_CMDQ_CP_MSG_BASE1_ADDR_HI & 0x7F) >> 2);
	mask |= 1 << ((mmTPC5_CMDQ_CP_MSG_BASE2_ADDR_LO & 0x7F) >> 2);
	mask |= 1 << ((mmTPC5_CMDQ_CP_MSG_BASE2_ADDR_HI & 0x7F) >> 2);
	mask |= 1 << ((mmTPC5_CMDQ_CP_MSG_BASE3_ADDR_LO & 0x7F) >> 2);
	mask |= 1 << ((mmTPC5_CMDQ_CP_MSG_BASE3_ADDR_HI & 0x7F) >> 2);
	mask |= 1 << ((mmTPC5_CMDQ_CP_LDMA_TSIZE_OFFSET & 0x7F) >> 2);
	mask |= 1 << ((mmTPC5_CMDQ_CP_LDMA_SRC_BASE_LO_OFFSET & 0x7F) >> 2);
	mask |= 1 << ((mmTPC5_CMDQ_CP_LDMA_SRC_BASE_HI_OFFSET & 0x7F) >> 2);
	mask |= 1 << ((mmTPC5_CMDQ_CP_LDMA_DST_BASE_LO_OFFSET & 0x7F) >> 2);
	mask |= 1 << ((mmTPC5_CMDQ_CP_LDMA_DST_BASE_HI_OFFSET & 0x7F) >> 2);
	mask |= 1 << ((mmTPC5_CMDQ_CP_LDMA_COMMIT_OFFSET & 0x7F) >> 2);
	mask |= 1 << ((mmTPC5_CMDQ_CP_STS & 0x7F) >> 2);
	mask |= 1 << ((mmTPC5_CMDQ_CP_CURRENT_INST_LO & 0x7F) >> 2);

	WREG32(pb_addr + word_offset, ~mask);

	pb_addr = (mmTPC5_CMDQ_CP_CURRENT_INST_HI & ~0xFFF) + PROT_BITS_OFFS;
	word_offset = ((mmTPC5_CMDQ_CP_CURRENT_INST_HI & PROT_BITS_OFFS) >> 7)
			<< 2;
	mask = 1 << ((mmTPC5_CMDQ_CP_CURRENT_INST_HI & 0x7F) >> 2);
	mask |= 1 << ((mmTPC5_CMDQ_CP_BARRIER_CFG & 0x7F) >> 2);
	mask |= 1 << ((mmTPC5_CMDQ_CP_DBG_0 & 0x7F) >> 2);
	mask |= 1 << ((mmTPC5_CMDQ_CQ_BUF_ADDR & 0x7F) >> 2);
	mask |= 1 << ((mmTPC5_CMDQ_CQ_BUF_RDATA & 0x7F) >> 2);

	WREG32(pb_addr + word_offset, ~mask);

	goya_pb_set_block(hdev, mmTPC6_RTR_BASE);
	goya_pb_set_block(hdev, mmTPC6_RD_REGULATOR_BASE);
	goya_pb_set_block(hdev, mmTPC6_WR_REGULATOR_BASE);

	pb_addr = (mmTPC6_CFG_CFG_BASE_ADDRESS_HIGH & ~0xFFF) + PROT_BITS_OFFS;
	word_offset = ((mmTPC6_CFG_CFG_BASE_ADDRESS_HIGH &
			PROT_BITS_OFFS) >> 7) << 2;
	mask = 1 << ((mmTPC6_CFG_CFG_BASE_ADDRESS_HIGH & 0x7F) >> 2);
	mask |= 1 << ((mmTPC6_CFG_CFG_SUBTRACT_VALUE & 0x7F) >> 2);
	mask |= 1 << ((mmTPC6_CFG_SM_BASE_ADDRESS_LOW & 0x7F) >> 2);
	mask |= 1 << ((mmTPC6_CFG_SM_BASE_ADDRESS_HIGH & 0x7F) >> 2);

	WREG32(pb_addr + word_offset, ~mask);

	pb_addr = (mmTPC6_CFG_ARUSER & ~0xFFF) + PROT_BITS_OFFS;
	word_offset = ((mmTPC6_CFG_ARUSER & PROT_BITS_OFFS) >> 7) << 2;
	mask = 1 << ((mmTPC6_CFG_ARUSER & 0x7F) >> 2);
	mask |= 1 << ((mmTPC6_CFG_AWUSER & 0x7F) >> 2);

	WREG32(pb_addr + word_offset, ~mask);

	pb_addr = (mmTPC6_CFG_FUNC_MBIST_CNTRL & ~0xFFF) + PROT_BITS_OFFS;
	word_offset = ((mmTPC6_CFG_FUNC_MBIST_CNTRL &
			PROT_BITS_OFFS) >> 7) << 2;
	mask = 1 << ((mmTPC6_CFG_FUNC_MBIST_CNTRL & 0x7F) >> 2);
	mask |= 1 << ((mmTPC6_CFG_FUNC_MBIST_PAT & 0x7F) >> 2);
	mask |= 1 << ((mmTPC6_CFG_FUNC_MBIST_MEM_0 & 0x7F) >> 2);
	mask |= 1 << ((mmTPC6_CFG_FUNC_MBIST_MEM_1 & 0x7F) >> 2);
	mask |= 1 << ((mmTPC6_CFG_FUNC_MBIST_MEM_2 & 0x7F) >> 2);
	mask |= 1 << ((mmTPC6_CFG_FUNC_MBIST_MEM_3 & 0x7F) >> 2);
	mask |= 1 << ((mmTPC6_CFG_FUNC_MBIST_MEM_4 & 0x7F) >> 2);
	mask |= 1 << ((mmTPC6_CFG_FUNC_MBIST_MEM_5 & 0x7F) >> 2);
	mask |= 1 << ((mmTPC6_CFG_FUNC_MBIST_MEM_6 & 0x7F) >> 2);
	mask |= 1 << ((mmTPC6_CFG_FUNC_MBIST_MEM_7 & 0x7F) >> 2);
	mask |= 1 << ((mmTPC6_CFG_FUNC_MBIST_MEM_8 & 0x7F) >> 2);
	mask |= 1 << ((mmTPC6_CFG_FUNC_MBIST_MEM_9 & 0x7F) >> 2);

	WREG32(pb_addr + word_offset, ~mask);

	pb_addr = (mmTPC6_QM_GLBL_CFG0 & ~0xFFF) + PROT_BITS_OFFS;
	word_offset = ((mmTPC6_QM_GLBL_CFG0 & PROT_BITS_OFFS) >> 7) << 2;
	mask = 1 << ((mmTPC6_QM_GLBL_CFG0 & 0x7F) >> 2);
	mask |= 1 << ((mmTPC6_QM_GLBL_CFG1 & 0x7F) >> 2);
	mask |= 1 << ((mmTPC6_QM_GLBL_PROT & 0x7F) >> 2);
	mask |= 1 << ((mmTPC6_QM_GLBL_ERR_CFG & 0x7F) >> 2);
	mask |= 1 << ((mmTPC6_QM_GLBL_ERR_ADDR_LO & 0x7F) >> 2);
	mask |= 1 << ((mmTPC6_QM_GLBL_ERR_ADDR_HI & 0x7F) >> 2);
	mask |= 1 << ((mmTPC6_QM_GLBL_ERR_WDATA & 0x7F) >> 2);
	mask |= 1 << ((mmTPC6_QM_GLBL_SECURE_PROPS & 0x7F) >> 2);
	mask |= 1 << ((mmTPC6_QM_GLBL_NON_SECURE_PROPS & 0x7F) >> 2);
	mask |= 1 << ((mmTPC6_QM_GLBL_STS0 & 0x7F) >> 2);
	mask |= 1 << ((mmTPC6_QM_GLBL_STS1 & 0x7F) >> 2);
	mask |= 1 << ((mmTPC6_QM_PQ_BASE_LO & 0x7F) >> 2);
	mask |= 1 << ((mmTPC6_QM_PQ_BASE_HI & 0x7F) >> 2);
	mask |= 1 << ((mmTPC6_QM_PQ_SIZE & 0x7F) >> 2);
	mask |= 1 << ((mmTPC6_QM_PQ_PI & 0x7F) >> 2);
	mask |= 1 << ((mmTPC6_QM_PQ_CI & 0x7F) >> 2);
	mask |= 1 << ((mmTPC6_QM_PQ_CFG0 & 0x7F) >> 2);
	mask |= 1 << ((mmTPC6_QM_PQ_CFG1 & 0x7F) >> 2);
	mask |= 1 << ((mmTPC6_QM_PQ_ARUSER & 0x7F) >> 2);

	WREG32(pb_addr + word_offset, ~mask);

	pb_addr = (mmTPC6_QM_PQ_PUSH0 & ~0xFFF) + PROT_BITS_OFFS;
	word_offset = ((mmTPC6_QM_PQ_PUSH0 & PROT_BITS_OFFS) >> 7) << 2;
	mask = 1 << ((mmTPC6_QM_PQ_PUSH0 & 0x7F) >> 2);
	mask |= 1 << ((mmTPC6_QM_PQ_PUSH1 & 0x7F) >> 2);
	mask |= 1 << ((mmTPC6_QM_PQ_PUSH2 & 0x7F) >> 2);
	mask |= 1 << ((mmTPC6_QM_PQ_PUSH3 & 0x7F) >> 2);
	mask |= 1 << ((mmTPC6_QM_PQ_STS0 & 0x7F) >> 2);
	mask |= 1 << ((mmTPC6_QM_PQ_STS1 & 0x7F) >> 2);
	mask |= 1 << ((mmTPC6_QM_PQ_RD_RATE_LIM_EN & 0x7F) >> 2);
	mask |= 1 << ((mmTPC6_QM_PQ_RD_RATE_LIM_RST_TOKEN & 0x7F) >> 2);
	mask |= 1 << ((mmTPC6_QM_PQ_RD_RATE_LIM_SAT & 0x7F) >> 2);
	mask |= 1 << ((mmTPC6_QM_PQ_RD_RATE_LIM_TOUT & 0x7F) >> 2);
	mask |= 1 << ((mmTPC6_QM_CQ_CFG0 & 0x7F) >> 2);
	mask |= 1 << ((mmTPC6_QM_CQ_CFG1 & 0x7F) >> 2);
	mask |= 1 << ((mmTPC6_QM_CQ_ARUSER & 0x7F) >> 2);
	mask |= 1 << ((mmTPC6_QM_CQ_PTR_LO & 0x7F) >> 2);
	mask |= 1 << ((mmTPC6_QM_CQ_PTR_HI & 0x7F) >> 2);
	mask |= 1 << ((mmTPC6_QM_CQ_TSIZE & 0x7F) >> 2);
	mask |= 1 << ((mmTPC6_QM_CQ_CTL & 0x7F) >> 2);
	mask |= 1 << ((mmTPC6_QM_CQ_PTR_LO_STS & 0x7F) >> 2);
	mask |= 1 << ((mmTPC6_QM_CQ_PTR_HI_STS & 0x7F) >> 2);
	mask |= 1 << ((mmTPC6_QM_CQ_TSIZE_STS & 0x7F) >> 2);
	mask |= 1 << ((mmTPC6_QM_CQ_CTL_STS & 0x7F) >> 2);
	mask |= 1 << ((mmTPC6_QM_CQ_STS0 & 0x7F) >> 2);
	mask |= 1 << ((mmTPC6_QM_CQ_STS1 & 0x7F) >> 2);
	mask |= 1 << ((mmTPC6_QM_CQ_RD_RATE_LIM_EN & 0x7F) >> 2);
	mask |= 1 << ((mmTPC6_QM_CQ_RD_RATE_LIM_RST_TOKEN & 0x7F) >> 2);
	mask |= 1 << ((mmTPC6_QM_CQ_RD_RATE_LIM_SAT & 0x7F) >> 2);
	mask |= 1 << ((mmTPC6_QM_CQ_RD_RATE_LIM_TOUT & 0x7F) >> 2);

	WREG32(pb_addr + word_offset, ~mask);

	pb_addr = (mmTPC6_QM_CQ_IFIFO_CNT & ~0xFFF) + PROT_BITS_OFFS;
	word_offset = ((mmTPC6_QM_CQ_IFIFO_CNT & PROT_BITS_OFFS) >> 7) << 2;
	mask = 1 << ((mmTPC6_QM_CQ_IFIFO_CNT & 0x7F) >> 2);
	mask |= 1 << ((mmTPC6_QM_CP_MSG_BASE0_ADDR_LO & 0x7F) >> 2);
	mask |= 1 << ((mmTPC6_QM_CP_MSG_BASE0_ADDR_HI & 0x7F) >> 2);
	mask |= 1 << ((mmTPC6_QM_CP_MSG_BASE1_ADDR_LO & 0x7F) >> 2);
	mask |= 1 << ((mmTPC6_QM_CP_MSG_BASE1_ADDR_HI & 0x7F) >> 2);
	mask |= 1 << ((mmTPC6_QM_CP_MSG_BASE2_ADDR_LO & 0x7F) >> 2);
	mask |= 1 << ((mmTPC6_QM_CP_MSG_BASE2_ADDR_HI & 0x7F) >> 2);
	mask |= 1 << ((mmTPC6_QM_CP_MSG_BASE3_ADDR_LO & 0x7F) >> 2);
	mask |= 1 << ((mmTPC6_QM_CP_MSG_BASE3_ADDR_HI & 0x7F) >> 2);
	mask |= 1 << ((mmTPC6_QM_CP_LDMA_TSIZE_OFFSET & 0x7F) >> 2);
	mask |= 1 << ((mmTPC6_QM_CP_LDMA_SRC_BASE_LO_OFFSET & 0x7F) >> 2);
	mask |= 1 << ((mmTPC6_QM_CP_LDMA_SRC_BASE_HI_OFFSET & 0x7F) >> 2);
	mask |= 1 << ((mmTPC6_QM_CP_LDMA_DST_BASE_LO_OFFSET & 0x7F) >> 2);
	mask |= 1 << ((mmTPC6_QM_CP_LDMA_DST_BASE_HI_OFFSET & 0x7F) >> 2);
	mask |= 1 << ((mmTPC6_QM_CP_LDMA_COMMIT_OFFSET & 0x7F) >> 2);

	WREG32(pb_addr + word_offset, ~mask);

	pb_addr = (mmTPC6_CMDQ_GLBL_CFG0 & ~0xFFF) + PROT_BITS_OFFS;
	word_offset = ((mmTPC6_CMDQ_GLBL_CFG0 & PROT_BITS_OFFS) >> 7) << 2;
	mask = 1 << ((mmTPC6_CMDQ_GLBL_CFG0 & 0x7F) >> 2);
	mask |= 1 << ((mmTPC6_CMDQ_GLBL_CFG1 & 0x7F) >> 2);
	mask |= 1 << ((mmTPC6_CMDQ_GLBL_PROT & 0x7F) >> 2);
	mask |= 1 << ((mmTPC6_CMDQ_GLBL_ERR_CFG & 0x7F) >> 2);
	mask |= 1 << ((mmTPC6_CMDQ_GLBL_ERR_ADDR_LO & 0x7F) >> 2);
	mask |= 1 << ((mmTPC6_CMDQ_GLBL_ERR_ADDR_HI & 0x7F) >> 2);
	mask |= 1 << ((mmTPC6_CMDQ_GLBL_ERR_WDATA & 0x7F) >> 2);
	mask |= 1 << ((mmTPC6_CMDQ_GLBL_SECURE_PROPS & 0x7F) >> 2);
	mask |= 1 << ((mmTPC6_CMDQ_GLBL_NON_SECURE_PROPS & 0x7F) >> 2);
	mask |= 1 << ((mmTPC6_CMDQ_GLBL_STS0 & 0x7F) >> 2);
	mask |= 1 << ((mmTPC6_CMDQ_GLBL_STS1 & 0x7F) >> 2);

	WREG32(pb_addr + word_offset, ~mask);

	pb_addr = (mmTPC6_CMDQ_CQ_CFG0 & ~0xFFF) + PROT_BITS_OFFS;
	word_offset = ((mmTPC6_CMDQ_CQ_CFG0 & PROT_BITS_OFFS) >> 7) << 2;
	mask = 1 << ((mmTPC6_CMDQ_CQ_CFG0 & 0x7F) >> 2);
	mask |= 1 << ((mmTPC6_CMDQ_CQ_CFG1 & 0x7F) >> 2);
	mask |= 1 << ((mmTPC6_CMDQ_CQ_ARUSER & 0x7F) >> 2);
	mask |= 1 << ((mmTPC6_CMDQ_CQ_PTR_LO_STS & 0x7F) >> 2);
	mask |= 1 << ((mmTPC6_CMDQ_CQ_PTR_HI_STS & 0x7F) >> 2);
	mask |= 1 << ((mmTPC6_CMDQ_CQ_TSIZE_STS & 0x7F) >> 2);
	mask |= 1 << ((mmTPC6_CMDQ_CQ_CTL_STS & 0x7F) >> 2);
	mask |= 1 << ((mmTPC6_CMDQ_CQ_STS0 & 0x7F) >> 2);
	mask |= 1 << ((mmTPC6_CMDQ_CQ_STS1 & 0x7F) >> 2);
	mask |= 1 << ((mmTPC6_CMDQ_CQ_RD_RATE_LIM_EN & 0x7F) >> 2);
	mask |= 1 << ((mmTPC6_CMDQ_CQ_RD_RATE_LIM_RST_TOKEN & 0x7F) >> 2);
	mask |= 1 << ((mmTPC6_CMDQ_CQ_RD_RATE_LIM_SAT & 0x7F) >> 2);
	mask |= 1 << ((mmTPC6_CMDQ_CQ_RD_RATE_LIM_TOUT & 0x7F) >> 2);

	WREG32(pb_addr + word_offset, ~mask);

	pb_addr = (mmTPC6_CMDQ_CQ_IFIFO_CNT & ~0xFFF) + PROT_BITS_OFFS;
	word_offset = ((mmTPC6_CMDQ_CQ_IFIFO_CNT & PROT_BITS_OFFS) >> 7) << 2;
	mask = 1 << ((mmTPC6_CMDQ_CQ_IFIFO_CNT & 0x7F) >> 2);
	mask |= 1 << ((mmTPC6_CMDQ_CP_MSG_BASE0_ADDR_LO & 0x7F) >> 2);
	mask |= 1 << ((mmTPC6_CMDQ_CP_MSG_BASE0_ADDR_HI & 0x7F) >> 2);
	mask |= 1 << ((mmTPC6_CMDQ_CP_MSG_BASE1_ADDR_LO & 0x7F) >> 2);
	mask |= 1 << ((mmTPC6_CMDQ_CP_MSG_BASE1_ADDR_HI & 0x7F) >> 2);
	mask |= 1 << ((mmTPC6_CMDQ_CP_MSG_BASE2_ADDR_LO & 0x7F) >> 2);
	mask |= 1 << ((mmTPC6_CMDQ_CP_MSG_BASE2_ADDR_HI & 0x7F) >> 2);
	mask |= 1 << ((mmTPC6_CMDQ_CP_MSG_BASE3_ADDR_LO & 0x7F) >> 2);
	mask |= 1 << ((mmTPC6_CMDQ_CP_MSG_BASE3_ADDR_HI & 0x7F) >> 2);
	mask |= 1 << ((mmTPC6_CMDQ_CP_LDMA_TSIZE_OFFSET & 0x7F) >> 2);
	mask |= 1 << ((mmTPC6_CMDQ_CP_LDMA_SRC_BASE_LO_OFFSET & 0x7F) >> 2);
	mask |= 1 << ((mmTPC6_CMDQ_CP_LDMA_SRC_BASE_HI_OFFSET & 0x7F) >> 2);
	mask |= 1 << ((mmTPC6_CMDQ_CP_LDMA_DST_BASE_LO_OFFSET & 0x7F) >> 2);
	mask |= 1 << ((mmTPC6_CMDQ_CP_LDMA_DST_BASE_HI_OFFSET & 0x7F) >> 2);
	mask |= 1 << ((mmTPC6_CMDQ_CP_LDMA_COMMIT_OFFSET & 0x7F) >> 2);
	mask |= 1 << ((mmTPC6_CMDQ_CP_STS & 0x7F) >> 2);
	mask |= 1 << ((mmTPC6_CMDQ_CP_CURRENT_INST_LO & 0x7F) >> 2);

	WREG32(pb_addr + word_offset, ~mask);

	pb_addr = (mmTPC6_CMDQ_CP_CURRENT_INST_HI & ~0xFFF) + PROT_BITS_OFFS;
	word_offset = ((mmTPC6_CMDQ_CP_CURRENT_INST_HI & PROT_BITS_OFFS) >> 7)
			<< 2;
	mask = 1 << ((mmTPC6_CMDQ_CP_CURRENT_INST_HI & 0x7F) >> 2);
	mask |= 1 << ((mmTPC6_CMDQ_CP_BARRIER_CFG & 0x7F) >> 2);
	mask |= 1 << ((mmTPC6_CMDQ_CP_DBG_0 & 0x7F) >> 2);
	mask |= 1 << ((mmTPC6_CMDQ_CQ_BUF_ADDR & 0x7F) >> 2);
	mask |= 1 << ((mmTPC6_CMDQ_CQ_BUF_RDATA & 0x7F) >> 2);

	WREG32(pb_addr + word_offset, ~mask);

	goya_pb_set_block(hdev, mmTPC7_NRTR_BASE);
	goya_pb_set_block(hdev, mmTPC7_RD_REGULATOR_BASE);
	goya_pb_set_block(hdev, mmTPC7_WR_REGULATOR_BASE);

	pb_addr = (mmTPC7_CFG_CFG_BASE_ADDRESS_HIGH & ~0xFFF) +	PROT_BITS_OFFS;
	word_offset = ((mmTPC7_CFG_CFG_BASE_ADDRESS_HIGH &
			PROT_BITS_OFFS) >> 7) << 2;
	mask = 1 << ((mmTPC7_CFG_CFG_BASE_ADDRESS_HIGH & 0x7F) >> 2);
	mask |= 1 << ((mmTPC7_CFG_CFG_SUBTRACT_VALUE & 0x7F) >> 2);
	mask |= 1 << ((mmTPC7_CFG_SM_BASE_ADDRESS_LOW & 0x7F) >> 2);
	mask |= 1 << ((mmTPC7_CFG_SM_BASE_ADDRESS_HIGH & 0x7F) >> 2);

	WREG32(pb_addr + word_offset, ~mask);

	pb_addr = (mmTPC7_CFG_ARUSER & ~0xFFF) + PROT_BITS_OFFS;
	word_offset = ((mmTPC7_CFG_ARUSER & PROT_BITS_OFFS) >> 7) << 2;
	mask = 1 << ((mmTPC7_CFG_ARUSER & 0x7F) >> 2);
	mask |= 1 << ((mmTPC7_CFG_AWUSER & 0x7F) >> 2);

	WREG32(pb_addr + word_offset, ~mask);

	pb_addr = (mmTPC7_CFG_FUNC_MBIST_CNTRL & ~0xFFF) + PROT_BITS_OFFS;
	word_offset = ((mmTPC7_CFG_FUNC_MBIST_CNTRL &
			PROT_BITS_OFFS) >> 7) << 2;
	mask = 1 << ((mmTPC7_CFG_FUNC_MBIST_CNTRL & 0x7F) >> 2);
	mask |= 1 << ((mmTPC7_CFG_FUNC_MBIST_PAT & 0x7F) >> 2);
	mask |= 1 << ((mmTPC7_CFG_FUNC_MBIST_MEM_0 & 0x7F) >> 2);
	mask |= 1 << ((mmTPC7_CFG_FUNC_MBIST_MEM_1 & 0x7F) >> 2);
	mask |= 1 << ((mmTPC7_CFG_FUNC_MBIST_MEM_2 & 0x7F) >> 2);
	mask |= 1 << ((mmTPC7_CFG_FUNC_MBIST_MEM_3 & 0x7F) >> 2);
	mask |= 1 << ((mmTPC7_CFG_FUNC_MBIST_MEM_4 & 0x7F) >> 2);
	mask |= 1 << ((mmTPC7_CFG_FUNC_MBIST_MEM_5 & 0x7F) >> 2);
	mask |= 1 << ((mmTPC7_CFG_FUNC_MBIST_MEM_6 & 0x7F) >> 2);
	mask |= 1 << ((mmTPC7_CFG_FUNC_MBIST_MEM_7 & 0x7F) >> 2);
	mask |= 1 << ((mmTPC7_CFG_FUNC_MBIST_MEM_8 & 0x7F) >> 2);
	mask |= 1 << ((mmTPC7_CFG_FUNC_MBIST_MEM_9 & 0x7F) >> 2);

	WREG32(pb_addr + word_offset, ~mask);

	pb_addr = (mmTPC7_QM_GLBL_CFG0 & ~0xFFF) + PROT_BITS_OFFS;
	word_offset = ((mmTPC7_QM_GLBL_CFG0 & PROT_BITS_OFFS) >> 7) << 2;
	mask = 1 << ((mmTPC7_QM_GLBL_CFG0 & 0x7F) >> 2);
	mask |= 1 << ((mmTPC7_QM_GLBL_CFG1 & 0x7F) >> 2);
	mask |= 1 << ((mmTPC7_QM_GLBL_PROT & 0x7F) >> 2);
	mask |= 1 << ((mmTPC7_QM_GLBL_ERR_CFG & 0x7F) >> 2);
	mask |= 1 << ((mmTPC7_QM_GLBL_ERR_ADDR_LO & 0x7F) >> 2);
	mask |= 1 << ((mmTPC7_QM_GLBL_ERR_ADDR_HI & 0x7F) >> 2);
	mask |= 1 << ((mmTPC7_QM_GLBL_ERR_WDATA & 0x7F) >> 2);
	mask |= 1 << ((mmTPC7_QM_GLBL_SECURE_PROPS & 0x7F) >> 2);
	mask |= 1 << ((mmTPC7_QM_GLBL_NON_SECURE_PROPS & 0x7F) >> 2);
	mask |= 1 << ((mmTPC7_QM_GLBL_STS0 & 0x7F) >> 2);
	mask |= 1 << ((mmTPC7_QM_GLBL_STS1 & 0x7F) >> 2);
	mask |= 1 << ((mmTPC7_QM_PQ_BASE_LO & 0x7F) >> 2);
	mask |= 1 << ((mmTPC7_QM_PQ_BASE_HI & 0x7F) >> 2);
	mask |= 1 << ((mmTPC7_QM_PQ_SIZE & 0x7F) >> 2);
	mask |= 1 << ((mmTPC7_QM_PQ_PI & 0x7F) >> 2);
	mask |= 1 << ((mmTPC7_QM_PQ_CI & 0x7F) >> 2);
	mask |= 1 << ((mmTPC7_QM_PQ_CFG0 & 0x7F) >> 2);
	mask |= 1 << ((mmTPC7_QM_PQ_CFG1 & 0x7F) >> 2);
	mask |= 1 << ((mmTPC7_QM_PQ_ARUSER & 0x7F) >> 2);

	WREG32(pb_addr + word_offset, ~mask);

	pb_addr = (mmTPC7_QM_PQ_PUSH0 & ~0xFFF) + PROT_BITS_OFFS;
	word_offset = ((mmTPC7_QM_PQ_PUSH0 & PROT_BITS_OFFS) >> 7) << 2;
	mask = 1 << ((mmTPC7_QM_PQ_PUSH0 & 0x7F) >> 2);
	mask |= 1 << ((mmTPC7_QM_PQ_PUSH1 & 0x7F) >> 2);
	mask |= 1 << ((mmTPC7_QM_PQ_PUSH2 & 0x7F) >> 2);
	mask |= 1 << ((mmTPC7_QM_PQ_PUSH3 & 0x7F) >> 2);
	mask |= 1 << ((mmTPC7_QM_PQ_STS0 & 0x7F) >> 2);
	mask |= 1 << ((mmTPC7_QM_PQ_STS1 & 0x7F) >> 2);
	mask |= 1 << ((mmTPC7_QM_PQ_RD_RATE_LIM_EN & 0x7F) >> 2);
	mask |= 1 << ((mmTPC7_QM_PQ_RD_RATE_LIM_RST_TOKEN & 0x7F) >> 2);
	mask |= 1 << ((mmTPC7_QM_PQ_RD_RATE_LIM_SAT & 0x7F) >> 2);
	mask |= 1 << ((mmTPC7_QM_PQ_RD_RATE_LIM_TOUT & 0x7F) >> 2);
	mask |= 1 << ((mmTPC7_QM_CQ_CFG0 & 0x7F) >> 2);
	mask |= 1 << ((mmTPC7_QM_CQ_CFG1 & 0x7F) >> 2);
	mask |= 1 << ((mmTPC7_QM_CQ_ARUSER & 0x7F) >> 2);
	mask |= 1 << ((mmTPC7_QM_CQ_PTR_LO & 0x7F) >> 2);
	mask |= 1 << ((mmTPC7_QM_CQ_PTR_HI & 0x7F) >> 2);
	mask |= 1 << ((mmTPC7_QM_CQ_TSIZE & 0x7F) >> 2);
	mask |= 1 << ((mmTPC7_QM_CQ_CTL & 0x7F) >> 2);
	mask |= 1 << ((mmTPC7_QM_CQ_PTR_LO_STS & 0x7F) >> 2);
	mask |= 1 << ((mmTPC7_QM_CQ_PTR_HI_STS & 0x7F) >> 2);
	mask |= 1 << ((mmTPC7_QM_CQ_TSIZE_STS & 0x7F) >> 2);
	mask |= 1 << ((mmTPC7_QM_CQ_CTL_STS & 0x7F) >> 2);
	mask |= 1 << ((mmTPC7_QM_CQ_STS0 & 0x7F) >> 2);
	mask |= 1 << ((mmTPC7_QM_CQ_STS1 & 0x7F) >> 2);
	mask |= 1 << ((mmTPC7_QM_CQ_RD_RATE_LIM_EN & 0x7F) >> 2);
	mask |= 1 << ((mmTPC7_QM_CQ_RD_RATE_LIM_RST_TOKEN & 0x7F) >> 2);
	mask |= 1 << ((mmTPC7_QM_CQ_RD_RATE_LIM_SAT & 0x7F) >> 2);
	mask |= 1 << ((mmTPC7_QM_CQ_RD_RATE_LIM_TOUT & 0x7F) >> 2);

	WREG32(pb_addr + word_offset, ~mask);

	pb_addr = (mmTPC7_QM_CQ_IFIFO_CNT & ~0xFFF) + PROT_BITS_OFFS;
	word_offset = ((mmTPC7_QM_CQ_IFIFO_CNT & PROT_BITS_OFFS) >> 7) << 2;
	mask = 1 << ((mmTPC7_QM_CQ_IFIFO_CNT & 0x7F) >> 2);
	mask |= 1 << ((mmTPC7_QM_CP_MSG_BASE0_ADDR_LO & 0x7F) >> 2);
	mask |= 1 << ((mmTPC7_QM_CP_MSG_BASE0_ADDR_HI & 0x7F) >> 2);
	mask |= 1 << ((mmTPC7_QM_CP_MSG_BASE1_ADDR_LO & 0x7F) >> 2);
	mask |= 1 << ((mmTPC7_QM_CP_MSG_BASE1_ADDR_HI & 0x7F) >> 2);
	mask |= 1 << ((mmTPC7_QM_CP_MSG_BASE2_ADDR_LO & 0x7F) >> 2);
	mask |= 1 << ((mmTPC7_QM_CP_MSG_BASE2_ADDR_HI & 0x7F) >> 2);
	mask |= 1 << ((mmTPC7_QM_CP_MSG_BASE3_ADDR_LO & 0x7F) >> 2);
	mask |= 1 << ((mmTPC7_QM_CP_MSG_BASE3_ADDR_HI & 0x7F) >> 2);
	mask |= 1 << ((mmTPC7_QM_CP_LDMA_TSIZE_OFFSET & 0x7F) >> 2);
	mask |= 1 << ((mmTPC7_QM_CP_LDMA_SRC_BASE_LO_OFFSET & 0x7F) >> 2);
	mask |= 1 << ((mmTPC7_QM_CP_LDMA_SRC_BASE_HI_OFFSET & 0x7F) >> 2);
	mask |= 1 << ((mmTPC7_QM_CP_LDMA_DST_BASE_LO_OFFSET & 0x7F) >> 2);
	mask |= 1 << ((mmTPC7_QM_CP_LDMA_DST_BASE_HI_OFFSET & 0x7F) >> 2);
	mask |= 1 << ((mmTPC7_QM_CP_LDMA_COMMIT_OFFSET & 0x7F) >> 2);

	WREG32(pb_addr + word_offset, ~mask);

	pb_addr = (mmTPC7_CMDQ_GLBL_CFG0 & ~0xFFF) + PROT_BITS_OFFS;
	word_offset = ((mmTPC7_CMDQ_GLBL_CFG0 & PROT_BITS_OFFS) >> 7) << 2;
	mask = 1 << ((mmTPC7_CMDQ_GLBL_CFG0 & 0x7F) >> 2);
	mask |= 1 << ((mmTPC7_CMDQ_GLBL_CFG1 & 0x7F) >> 2);
	mask |= 1 << ((mmTPC7_CMDQ_GLBL_PROT & 0x7F) >> 2);
	mask |= 1 << ((mmTPC7_CMDQ_GLBL_ERR_CFG & 0x7F) >> 2);
	mask |= 1 << ((mmTPC7_CMDQ_GLBL_ERR_ADDR_LO & 0x7F) >> 2);
	mask |= 1 << ((mmTPC7_CMDQ_GLBL_ERR_ADDR_HI & 0x7F) >> 2);
	mask |= 1 << ((mmTPC7_CMDQ_GLBL_ERR_WDATA & 0x7F) >> 2);
	mask |= 1 << ((mmTPC7_CMDQ_GLBL_SECURE_PROPS & 0x7F) >> 2);
	mask |= 1 << ((mmTPC7_CMDQ_GLBL_NON_SECURE_PROPS & 0x7F) >> 2);
	mask |= 1 << ((mmTPC7_CMDQ_GLBL_STS0 & 0x7F) >> 2);
	mask |= 1 << ((mmTPC7_CMDQ_GLBL_STS1 & 0x7F) >> 2);

	WREG32(pb_addr + word_offset, ~mask);

	pb_addr = (mmTPC7_CMDQ_CQ_CFG0 & ~0xFFF) + PROT_BITS_OFFS;
	word_offset = ((mmTPC7_CMDQ_CQ_CFG0 & PROT_BITS_OFFS) >> 7) << 2;
	mask = 1 << ((mmTPC7_CMDQ_CQ_CFG0 & 0x7F) >> 2);
	mask |= 1 << ((mmTPC7_CMDQ_CQ_CFG1 & 0x7F) >> 2);
	mask |= 1 << ((mmTPC7_CMDQ_CQ_ARUSER & 0x7F) >> 2);
	mask |= 1 << ((mmTPC7_CMDQ_CQ_PTR_LO_STS & 0x7F) >> 2);
	mask |= 1 << ((mmTPC7_CMDQ_CQ_PTR_HI_STS & 0x7F) >> 2);
	mask |= 1 << ((mmTPC7_CMDQ_CQ_TSIZE_STS & 0x7F) >> 2);
	mask |= 1 << ((mmTPC7_CMDQ_CQ_CTL_STS & 0x7F) >> 2);
	mask |= 1 << ((mmTPC7_CMDQ_CQ_STS0 & 0x7F) >> 2);
	mask |= 1 << ((mmTPC7_CMDQ_CQ_STS1 & 0x7F) >> 2);
	mask |= 1 << ((mmTPC7_CMDQ_CQ_RD_RATE_LIM_EN & 0x7F) >> 2);
	mask |= 1 << ((mmTPC7_CMDQ_CQ_RD_RATE_LIM_RST_TOKEN & 0x7F) >> 2);
	mask |= 1 << ((mmTPC7_CMDQ_CQ_RD_RATE_LIM_SAT & 0x7F) >> 2);
	mask |= 1 << ((mmTPC7_CMDQ_CQ_RD_RATE_LIM_TOUT & 0x7F) >> 2);

	WREG32(pb_addr + word_offset, ~mask);

	pb_addr = (mmTPC7_CMDQ_CQ_IFIFO_CNT & ~0xFFF) + PROT_BITS_OFFS;
	word_offset = ((mmTPC7_CMDQ_CQ_IFIFO_CNT & PROT_BITS_OFFS) >> 7) << 2;
	mask = 1 << ((mmTPC7_CMDQ_CQ_IFIFO_CNT & 0x7F) >> 2);
	mask |= 1 << ((mmTPC7_CMDQ_CP_MSG_BASE0_ADDR_LO & 0x7F) >> 2);
	mask |= 1 << ((mmTPC7_CMDQ_CP_MSG_BASE0_ADDR_HI & 0x7F) >> 2);
	mask |= 1 << ((mmTPC7_CMDQ_CP_MSG_BASE1_ADDR_LO & 0x7F) >> 2);
	mask |= 1 << ((mmTPC7_CMDQ_CP_MSG_BASE1_ADDR_HI & 0x7F) >> 2);
	mask |= 1 << ((mmTPC7_CMDQ_CP_MSG_BASE2_ADDR_LO & 0x7F) >> 2);
	mask |= 1 << ((mmTPC7_CMDQ_CP_MSG_BASE2_ADDR_HI & 0x7F) >> 2);
	mask |= 1 << ((mmTPC7_CMDQ_CP_MSG_BASE3_ADDR_LO & 0x7F) >> 2);
	mask |= 1 << ((mmTPC7_CMDQ_CP_MSG_BASE3_ADDR_HI & 0x7F) >> 2);
	mask |= 1 << ((mmTPC7_CMDQ_CP_LDMA_TSIZE_OFFSET & 0x7F) >> 2);
	mask |= 1 << ((mmTPC7_CMDQ_CP_LDMA_SRC_BASE_LO_OFFSET & 0x7F) >> 2);
	mask |= 1 << ((mmTPC7_CMDQ_CP_LDMA_SRC_BASE_HI_OFFSET & 0x7F) >> 2);
	mask |= 1 << ((mmTPC7_CMDQ_CP_LDMA_DST_BASE_LO_OFFSET & 0x7F) >> 2);
	mask |= 1 << ((mmTPC7_CMDQ_CP_LDMA_DST_BASE_HI_OFFSET & 0x7F) >> 2);
	mask |= 1 << ((mmTPC7_CMDQ_CP_LDMA_COMMIT_OFFSET & 0x7F) >> 2);
	mask |= 1 << ((mmTPC7_CMDQ_CP_STS & 0x7F) >> 2);
	mask |= 1 << ((mmTPC7_CMDQ_CP_CURRENT_INST_LO & 0x7F) >> 2);

	WREG32(pb_addr + word_offset, ~mask);

	pb_addr = (mmTPC7_CMDQ_CP_CURRENT_INST_HI & ~0xFFF) + PROT_BITS_OFFS;
	word_offset = ((mmTPC7_CMDQ_CP_CURRENT_INST_HI & PROT_BITS_OFFS) >> 7)
			<< 2;
	mask = 1 << ((mmTPC7_CMDQ_CP_CURRENT_INST_HI & 0x7F) >> 2);
	mask |= 1 << ((mmTPC7_CMDQ_CP_BARRIER_CFG & 0x7F) >> 2);
	mask |= 1 << ((mmTPC7_CMDQ_CP_DBG_0 & 0x7F) >> 2);
	mask |= 1 << ((mmTPC7_CMDQ_CQ_BUF_ADDR & 0x7F) >> 2);
	mask |= 1 << ((mmTPC7_CMDQ_CQ_BUF_RDATA & 0x7F) >> 2);

	WREG32(pb_addr + word_offset, ~mask);
}

/*
 * goya_init_protection_bits - Initialize protection bits for specific registers
 *
 * @hdev: pointer to hl_device structure
 *
 * All protection bits are 1 by default, means not protected. Need to set to 0
 * each bit that belongs to a protected register.
 *
 */
static void goya_init_protection_bits(struct hl_device *hdev)
{
	/*
	 * In each 4K block of registers, the last 128 bytes are protection
	 * bits - total of 1024 bits, one for each register. Each bit is related
	 * to a specific register, by the order of the registers.
	 * So in order to calculate the bit that is related to a given register,
	 * we need to calculate its word offset and then the exact bit inside
	 * the word (which is 4 bytes).
	 *
	 * Register address:
	 *
	 * 31                 12 11           7   6             2  1      0
	 * -----------------------------------------------------------------
	 * |      Don't         |    word       |  bit location  |    0    |
	 * |      care          |   offset      |  inside word   |         |
	 * -----------------------------------------------------------------
	 *
	 * Bits 7-11 represents the word offset inside the 128 bytes.
	 * Bits 2-6 represents the bit location inside the word.
	 */

	goya_pb_set_block(hdev, mmPCI_NRTR_BASE);
	goya_pb_set_block(hdev, mmPCI_RD_REGULATOR_BASE);
	goya_pb_set_block(hdev, mmPCI_WR_REGULATOR_BASE);

	goya_pb_set_block(hdev, mmSRAM_Y0_X0_BANK_BASE);
	goya_pb_set_block(hdev, mmSRAM_Y0_X0_RTR_BASE);
	goya_pb_set_block(hdev, mmSRAM_Y0_X1_BANK_BASE);
	goya_pb_set_block(hdev, mmSRAM_Y0_X1_RTR_BASE);
	goya_pb_set_block(hdev, mmSRAM_Y0_X2_BANK_BASE);
	goya_pb_set_block(hdev, mmSRAM_Y0_X2_RTR_BASE);
	goya_pb_set_block(hdev, mmSRAM_Y0_X3_BANK_BASE);
	goya_pb_set_block(hdev, mmSRAM_Y0_X3_RTR_BASE);
	goya_pb_set_block(hdev, mmSRAM_Y0_X4_BANK_BASE);
	goya_pb_set_block(hdev, mmSRAM_Y0_X4_RTR_BASE);

	goya_pb_set_block(hdev, mmSRAM_Y1_X0_BANK_BASE);
	goya_pb_set_block(hdev, mmSRAM_Y1_X0_RTR_BASE);
	goya_pb_set_block(hdev, mmSRAM_Y1_X1_BANK_BASE);
	goya_pb_set_block(hdev, mmSRAM_Y1_X1_RTR_BASE);
	goya_pb_set_block(hdev, mmSRAM_Y1_X2_BANK_BASE);
	goya_pb_set_block(hdev, mmSRAM_Y1_X2_RTR_BASE);
	goya_pb_set_block(hdev, mmSRAM_Y1_X3_BANK_BASE);
	goya_pb_set_block(hdev, mmSRAM_Y1_X3_RTR_BASE);
	goya_pb_set_block(hdev, mmSRAM_Y1_X4_BANK_BASE);
	goya_pb_set_block(hdev, mmSRAM_Y1_X4_RTR_BASE);

	goya_pb_set_block(hdev, mmSRAM_Y2_X0_BANK_BASE);
	goya_pb_set_block(hdev, mmSRAM_Y2_X0_RTR_BASE);
	goya_pb_set_block(hdev, mmSRAM_Y2_X1_BANK_BASE);
	goya_pb_set_block(hdev, mmSRAM_Y2_X1_RTR_BASE);
	goya_pb_set_block(hdev, mmSRAM_Y2_X2_BANK_BASE);
	goya_pb_set_block(hdev, mmSRAM_Y2_X2_RTR_BASE);
	goya_pb_set_block(hdev, mmSRAM_Y2_X3_BANK_BASE);
	goya_pb_set_block(hdev, mmSRAM_Y2_X3_RTR_BASE);
	goya_pb_set_block(hdev, mmSRAM_Y2_X4_BANK_BASE);
	goya_pb_set_block(hdev, mmSRAM_Y2_X4_RTR_BASE);

	goya_pb_set_block(hdev, mmSRAM_Y3_X0_BANK_BASE);
	goya_pb_set_block(hdev, mmSRAM_Y3_X0_RTR_BASE);
	goya_pb_set_block(hdev, mmSRAM_Y3_X1_BANK_BASE);
	goya_pb_set_block(hdev, mmSRAM_Y3_X1_RTR_BASE);
	goya_pb_set_block(hdev, mmSRAM_Y3_X2_BANK_BASE);
	goya_pb_set_block(hdev, mmSRAM_Y3_X2_RTR_BASE);
	goya_pb_set_block(hdev, mmSRAM_Y3_X3_BANK_BASE);
	goya_pb_set_block(hdev, mmSRAM_Y3_X3_RTR_BASE);
	goya_pb_set_block(hdev, mmSRAM_Y3_X4_BANK_BASE);
	goya_pb_set_block(hdev, mmSRAM_Y3_X4_RTR_BASE);

	goya_pb_set_block(hdev, mmSRAM_Y4_X0_BANK_BASE);
	goya_pb_set_block(hdev, mmSRAM_Y4_X0_RTR_BASE);
	goya_pb_set_block(hdev, mmSRAM_Y4_X1_BANK_BASE);
	goya_pb_set_block(hdev, mmSRAM_Y4_X1_RTR_BASE);
	goya_pb_set_block(hdev, mmSRAM_Y4_X2_BANK_BASE);
	goya_pb_set_block(hdev, mmSRAM_Y4_X2_RTR_BASE);
	goya_pb_set_block(hdev, mmSRAM_Y4_X3_BANK_BASE);
	goya_pb_set_block(hdev, mmSRAM_Y4_X3_RTR_BASE);
	goya_pb_set_block(hdev, mmSRAM_Y4_X4_BANK_BASE);
	goya_pb_set_block(hdev, mmSRAM_Y4_X4_RTR_BASE);

	goya_pb_set_block(hdev, mmSRAM_Y5_X0_BANK_BASE);
	goya_pb_set_block(hdev, mmSRAM_Y5_X0_RTR_BASE);
	goya_pb_set_block(hdev, mmSRAM_Y5_X1_BANK_BASE);
	goya_pb_set_block(hdev, mmSRAM_Y5_X1_RTR_BASE);
	goya_pb_set_block(hdev, mmSRAM_Y5_X2_BANK_BASE);
	goya_pb_set_block(hdev, mmSRAM_Y5_X2_RTR_BASE);
	goya_pb_set_block(hdev, mmSRAM_Y5_X3_BANK_BASE);
	goya_pb_set_block(hdev, mmSRAM_Y5_X3_RTR_BASE);
	goya_pb_set_block(hdev, mmSRAM_Y5_X4_BANK_BASE);
	goya_pb_set_block(hdev, mmSRAM_Y5_X4_RTR_BASE);

	goya_pb_set_block(hdev, mmPCIE_WRAP_BASE);
	goya_pb_set_block(hdev, mmPCIE_CORE_BASE);
	goya_pb_set_block(hdev, mmPCIE_DB_CFG_BASE);
	goya_pb_set_block(hdev, mmPCIE_DB_CMD_BASE);
	goya_pb_set_block(hdev, mmPCIE_AUX_BASE);
	goya_pb_set_block(hdev, mmPCIE_DB_RSV_BASE);
	goya_pb_set_block(hdev, mmPCIE_PHY_BASE);

	goya_init_mme_protection_bits(hdev);

	goya_init_dma_protection_bits(hdev);

	goya_init_tpc_protection_bits(hdev);
}

/*
 * goya_init_security - Initialize security model
 *
 * @hdev: pointer to hl_device structure
 *
 * Initialize the security model of the device
 * That includes range registers and protection bit per register
 *
 */
void goya_init_security(struct hl_device *hdev)
{
	struct goya_device *goya = hdev->asic_specific;

	u32 dram_addr_lo = lower_32_bits(DRAM_PHYS_BASE);
	u32 dram_addr_hi = upper_32_bits(DRAM_PHYS_BASE);

	u32 lbw_rng0_base = 0xFC440000 & DMA_MACRO_LBW_RANGE_BASE_R_MASK;
	u32 lbw_rng0_mask = 0xFFFF0000 & DMA_MACRO_LBW_RANGE_BASE_R_MASK;

	u32 lbw_rng1_base = 0xFC480000 & DMA_MACRO_LBW_RANGE_BASE_R_MASK;
	u32 lbw_rng1_mask = 0xFFF80000 & DMA_MACRO_LBW_RANGE_BASE_R_MASK;

	u32 lbw_rng2_base = 0xFC600000 & DMA_MACRO_LBW_RANGE_BASE_R_MASK;
	u32 lbw_rng2_mask = 0xFFE00000 & DMA_MACRO_LBW_RANGE_BASE_R_MASK;

	u32 lbw_rng3_base = 0xFC800000 & DMA_MACRO_LBW_RANGE_BASE_R_MASK;
	u32 lbw_rng3_mask = 0xFFF00000 & DMA_MACRO_LBW_RANGE_BASE_R_MASK;

	u32 lbw_rng4_base = 0xFCC02000 & DMA_MACRO_LBW_RANGE_BASE_R_MASK;
	u32 lbw_rng4_mask = 0xFFFFF000 & DMA_MACRO_LBW_RANGE_BASE_R_MASK;

	u32 lbw_rng5_base = 0xFCC40000 & DMA_MACRO_LBW_RANGE_BASE_R_MASK;
	u32 lbw_rng5_mask = 0xFFFF8000 & DMA_MACRO_LBW_RANGE_BASE_R_MASK;

	u32 lbw_rng6_base = 0xFCC48000 & DMA_MACRO_LBW_RANGE_BASE_R_MASK;
	u32 lbw_rng6_mask = 0xFFFFF000 & DMA_MACRO_LBW_RANGE_BASE_R_MASK;

	u32 lbw_rng7_base = 0xFCC4A000 & DMA_MACRO_LBW_RANGE_BASE_R_MASK;
	u32 lbw_rng7_mask = 0xFFFFE000 & DMA_MACRO_LBW_RANGE_BASE_R_MASK;

	u32 lbw_rng8_base = 0xFCC4C000 & DMA_MACRO_LBW_RANGE_BASE_R_MASK;
	u32 lbw_rng8_mask = 0xFFFFC000 & DMA_MACRO_LBW_RANGE_BASE_R_MASK;

	u32 lbw_rng9_base = 0xFCC50000 & DMA_MACRO_LBW_RANGE_BASE_R_MASK;
	u32 lbw_rng9_mask = 0xFFFF0000 & DMA_MACRO_LBW_RANGE_BASE_R_MASK;

	u32 lbw_rng10_base = 0xFCC60000 & DMA_MACRO_LBW_RANGE_BASE_R_MASK;
	u32 lbw_rng10_mask = 0xFFFE0000 & DMA_MACRO_LBW_RANGE_BASE_R_MASK;

	u32 lbw_rng11_base = 0xFCE00000 & DMA_MACRO_LBW_RANGE_BASE_R_MASK;
	u32 lbw_rng11_mask = 0xFFFFC000 & DMA_MACRO_LBW_RANGE_BASE_R_MASK;

	u32 lbw_rng12_base = 0xFE484000 & DMA_MACRO_LBW_RANGE_BASE_R_MASK;
	u32 lbw_rng12_mask = 0xFFFFF000 & DMA_MACRO_LBW_RANGE_BASE_R_MASK;

	u32 lbw_rng13_base = 0xFEC43000 & DMA_MACRO_LBW_RANGE_BASE_R_MASK;
	u32 lbw_rng13_mask = 0xFFFFF000 & DMA_MACRO_LBW_RANGE_BASE_R_MASK;

	WREG32(mmDMA_MACRO_LBW_RANGE_HIT_BLOCK, 0xFFFF);
	WREG32(mmDMA_MACRO_HBW_RANGE_HIT_BLOCK, 0xFF);

	if (!(goya->hw_cap_initialized & HW_CAP_MMU)) {
		WREG32(mmDMA_MACRO_HBW_RANGE_HIT_BLOCK, 0xFE);

		/* Protect HOST */
		WREG32(mmDMA_MACRO_HBW_RANGE_BASE_31_0_0, 0);
		WREG32(mmDMA_MACRO_HBW_RANGE_BASE_49_32_0, 0);
		WREG32(mmDMA_MACRO_HBW_RANGE_MASK_31_0_0, 0);
		WREG32(mmDMA_MACRO_HBW_RANGE_MASK_49_32_0, 0xFFF80);
	}

	/*
	 * Protect DDR @
	 * DRAM_VIRT_BASE : DRAM_VIRT_BASE + DRAM_VIRT_END
	 * The mask protects the first 512MB
	 */
	WREG32(mmDMA_MACRO_HBW_RANGE_BASE_31_0_1, dram_addr_lo);
	WREG32(mmDMA_MACRO_HBW_RANGE_BASE_49_32_1, dram_addr_hi);
	WREG32(mmDMA_MACRO_HBW_RANGE_MASK_31_0_1, 0xE0000000);
	WREG32(mmDMA_MACRO_HBW_RANGE_MASK_49_32_1, 0x3FFFF);

	/* Protect registers */

	WREG32(mmDMA_MACRO_LBW_RANGE_BASE_0, lbw_rng0_base);
	WREG32(mmDMA_MACRO_LBW_RANGE_MASK_0, lbw_rng0_mask);
	WREG32(mmDMA_MACRO_LBW_RANGE_BASE_1, lbw_rng1_base);
	WREG32(mmDMA_MACRO_LBW_RANGE_MASK_1, lbw_rng1_mask);
	WREG32(mmDMA_MACRO_LBW_RANGE_BASE_2, lbw_rng2_base);
	WREG32(mmDMA_MACRO_LBW_RANGE_MASK_2, lbw_rng2_mask);
	WREG32(mmDMA_MACRO_LBW_RANGE_BASE_3, lbw_rng3_base);
	WREG32(mmDMA_MACRO_LBW_RANGE_MASK_3, lbw_rng3_mask);
	WREG32(mmDMA_MACRO_LBW_RANGE_BASE_4, lbw_rng4_base);
	WREG32(mmDMA_MACRO_LBW_RANGE_MASK_4, lbw_rng4_mask);
	WREG32(mmDMA_MACRO_LBW_RANGE_BASE_5, lbw_rng5_base);
	WREG32(mmDMA_MACRO_LBW_RANGE_MASK_5, lbw_rng5_mask);
	WREG32(mmDMA_MACRO_LBW_RANGE_BASE_6, lbw_rng6_base);
	WREG32(mmDMA_MACRO_LBW_RANGE_MASK_6, lbw_rng6_mask);
	WREG32(mmDMA_MACRO_LBW_RANGE_BASE_7, lbw_rng7_base);
	WREG32(mmDMA_MACRO_LBW_RANGE_MASK_7, lbw_rng7_mask);
	WREG32(mmDMA_MACRO_LBW_RANGE_BASE_8, lbw_rng8_base);
	WREG32(mmDMA_MACRO_LBW_RANGE_MASK_8, lbw_rng8_mask);
	WREG32(mmDMA_MACRO_LBW_RANGE_BASE_9, lbw_rng9_base);
	WREG32(mmDMA_MACRO_LBW_RANGE_MASK_9, lbw_rng9_mask);
	WREG32(mmDMA_MACRO_LBW_RANGE_BASE_10, lbw_rng10_base);
	WREG32(mmDMA_MACRO_LBW_RANGE_MASK_10, lbw_rng10_mask);
	WREG32(mmDMA_MACRO_LBW_RANGE_BASE_11, lbw_rng11_base);
	WREG32(mmDMA_MACRO_LBW_RANGE_MASK_11, lbw_rng11_mask);
	WREG32(mmDMA_MACRO_LBW_RANGE_BASE_12, lbw_rng12_base);
	WREG32(mmDMA_MACRO_LBW_RANGE_MASK_12, lbw_rng12_mask);
	WREG32(mmDMA_MACRO_LBW_RANGE_BASE_13, lbw_rng13_base);
	WREG32(mmDMA_MACRO_LBW_RANGE_MASK_13, lbw_rng13_mask);

	WREG32(mmMME1_RTR_LBW_RANGE_HIT, 0xFFFF);
	WREG32(mmMME2_RTR_LBW_RANGE_HIT, 0xFFFF);
	WREG32(mmMME3_RTR_LBW_RANGE_HIT, 0xFFFF);
	WREG32(mmMME4_RTR_LBW_RANGE_HIT, 0xFFFF);
	WREG32(mmMME5_RTR_LBW_RANGE_HIT, 0xFFFF);
	WREG32(mmMME6_RTR_LBW_RANGE_HIT, 0xFFFF);

	WREG32(mmMME1_RTR_HBW_RANGE_HIT, 0xFE);
	WREG32(mmMME2_RTR_HBW_RANGE_HIT, 0xFE);
	WREG32(mmMME3_RTR_HBW_RANGE_HIT, 0xFE);
	WREG32(mmMME4_RTR_HBW_RANGE_HIT, 0xFE);
	WREG32(mmMME5_RTR_HBW_RANGE_HIT, 0xFE);
	WREG32(mmMME6_RTR_HBW_RANGE_HIT, 0xFE);

	/* Protect HOST */
	WREG32(mmMME1_RTR_HBW_RANGE_BASE_L_0, 0);
	WREG32(mmMME1_RTR_HBW_RANGE_BASE_H_0, 0);
	WREG32(mmMME1_RTR_HBW_RANGE_MASK_L_0, 0);
	WREG32(mmMME1_RTR_HBW_RANGE_MASK_H_0, 0xFFF80);

	WREG32(mmMME2_RTR_HBW_RANGE_BASE_L_0, 0);
	WREG32(mmMME2_RTR_HBW_RANGE_BASE_H_0, 0);
	WREG32(mmMME2_RTR_HBW_RANGE_MASK_L_0, 0);
	WREG32(mmMME2_RTR_HBW_RANGE_MASK_H_0, 0xFFF80);

	WREG32(mmMME3_RTR_HBW_RANGE_BASE_L_0, 0);
	WREG32(mmMME3_RTR_HBW_RANGE_BASE_H_0, 0);
	WREG32(mmMME3_RTR_HBW_RANGE_MASK_L_0, 0);
	WREG32(mmMME3_RTR_HBW_RANGE_MASK_H_0, 0xFFF80);

	WREG32(mmMME4_RTR_HBW_RANGE_BASE_L_0, 0);
	WREG32(mmMME4_RTR_HBW_RANGE_BASE_H_0, 0);
	WREG32(mmMME4_RTR_HBW_RANGE_MASK_L_0, 0);
	WREG32(mmMME4_RTR_HBW_RANGE_MASK_H_0, 0xFFF80);

	WREG32(mmMME5_RTR_HBW_RANGE_BASE_L_0, 0);
	WREG32(mmMME5_RTR_HBW_RANGE_BASE_H_0, 0);
	WREG32(mmMME5_RTR_HBW_RANGE_MASK_L_0, 0);
	WREG32(mmMME5_RTR_HBW_RANGE_MASK_H_0, 0xFFF80);

	WREG32(mmMME6_RTR_HBW_RANGE_BASE_L_0, 0);
	WREG32(mmMME6_RTR_HBW_RANGE_BASE_H_0, 0);
	WREG32(mmMME6_RTR_HBW_RANGE_MASK_L_0, 0);
	WREG32(mmMME6_RTR_HBW_RANGE_MASK_H_0, 0xFFF80);

	/*
	 * Protect DDR @
	 * DRAM_VIRT_BASE : DRAM_VIRT_BASE + DRAM_VIRT_END
	 * The mask protects the first 512MB
	 */
	WREG32(mmMME1_RTR_HBW_RANGE_BASE_L_1, dram_addr_lo);
	WREG32(mmMME1_RTR_HBW_RANGE_BASE_H_1, dram_addr_hi);
	WREG32(mmMME1_RTR_HBW_RANGE_MASK_L_1, 0xE0000000);
	WREG32(mmMME1_RTR_HBW_RANGE_MASK_H_1, 0x3FFFF);

	WREG32(mmMME2_RTR_HBW_RANGE_BASE_L_1, dram_addr_lo);
	WREG32(mmMME2_RTR_HBW_RANGE_BASE_H_1, dram_addr_hi);
	WREG32(mmMME2_RTR_HBW_RANGE_MASK_L_1, 0xE0000000);
	WREG32(mmMME2_RTR_HBW_RANGE_MASK_H_1, 0x3FFFF);

	WREG32(mmMME3_RTR_HBW_RANGE_BASE_L_1, dram_addr_lo);
	WREG32(mmMME3_RTR_HBW_RANGE_BASE_H_1, dram_addr_hi);
	WREG32(mmMME3_RTR_HBW_RANGE_MASK_L_1, 0xE0000000);
	WREG32(mmMME3_RTR_HBW_RANGE_MASK_H_1, 0x3FFFF);

	WREG32(mmMME4_RTR_HBW_RANGE_BASE_L_1, dram_addr_lo);
	WREG32(mmMME4_RTR_HBW_RANGE_BASE_H_1, dram_addr_hi);
	WREG32(mmMME4_RTR_HBW_RANGE_MASK_L_1, 0xE0000000);
	WREG32(mmMME4_RTR_HBW_RANGE_MASK_H_1, 0x3FFFF);

	WREG32(mmMME5_RTR_HBW_RANGE_BASE_L_1, dram_addr_lo);
	WREG32(mmMME5_RTR_HBW_RANGE_BASE_H_1, dram_addr_hi);
	WREG32(mmMME5_RTR_HBW_RANGE_MASK_L_1, 0xE0000000);
	WREG32(mmMME5_RTR_HBW_RANGE_MASK_H_1, 0x3FFFF);

	WREG32(mmMME6_RTR_HBW_RANGE_BASE_L_1, dram_addr_lo);
	WREG32(mmMME6_RTR_HBW_RANGE_BASE_H_1, dram_addr_hi);
	WREG32(mmMME6_RTR_HBW_RANGE_MASK_L_1, 0xE0000000);
	WREG32(mmMME6_RTR_HBW_RANGE_MASK_H_1, 0x3FFFF);

	WREG32(mmMME1_RTR_LBW_RANGE_BASE_0, lbw_rng0_base);
	WREG32(mmMME1_RTR_LBW_RANGE_MASK_0, lbw_rng0_mask);
	WREG32(mmMME1_RTR_LBW_RANGE_BASE_1, lbw_rng1_base);
	WREG32(mmMME1_RTR_LBW_RANGE_MASK_1, lbw_rng1_mask);
	WREG32(mmMME1_RTR_LBW_RANGE_BASE_2, lbw_rng2_base);
	WREG32(mmMME1_RTR_LBW_RANGE_MASK_2, lbw_rng2_mask);
	WREG32(mmMME1_RTR_LBW_RANGE_BASE_3, lbw_rng3_base);
	WREG32(mmMME1_RTR_LBW_RANGE_MASK_3, lbw_rng3_mask);
	WREG32(mmMME1_RTR_LBW_RANGE_BASE_4, lbw_rng4_base);
	WREG32(mmMME1_RTR_LBW_RANGE_MASK_4, lbw_rng4_mask);
	WREG32(mmMME1_RTR_LBW_RANGE_BASE_5, lbw_rng5_base);
	WREG32(mmMME1_RTR_LBW_RANGE_MASK_5, lbw_rng5_mask);
	WREG32(mmMME1_RTR_LBW_RANGE_BASE_6, lbw_rng6_base);
	WREG32(mmMME1_RTR_LBW_RANGE_MASK_6, lbw_rng6_mask);
	WREG32(mmMME1_RTR_LBW_RANGE_BASE_7, lbw_rng7_base);
	WREG32(mmMME1_RTR_LBW_RANGE_MASK_7, lbw_rng7_mask);
	WREG32(mmMME1_RTR_LBW_RANGE_BASE_8, lbw_rng8_base);
	WREG32(mmMME1_RTR_LBW_RANGE_MASK_8, lbw_rng8_mask);
	WREG32(mmMME1_RTR_LBW_RANGE_BASE_9, lbw_rng9_base);
	WREG32(mmMME1_RTR_LBW_RANGE_MASK_9, lbw_rng9_mask);
	WREG32(mmMME1_RTR_LBW_RANGE_BASE_10, lbw_rng10_base);
	WREG32(mmMME1_RTR_LBW_RANGE_MASK_10, lbw_rng10_mask);
	WREG32(mmMME1_RTR_LBW_RANGE_BASE_11, lbw_rng11_base);
	WREG32(mmMME1_RTR_LBW_RANGE_MASK_11, lbw_rng11_mask);
	WREG32(mmMME1_RTR_LBW_RANGE_BASE_12, lbw_rng12_base);
	WREG32(mmMME1_RTR_LBW_RANGE_MASK_12, lbw_rng12_mask);
	WREG32(mmMME1_RTR_LBW_RANGE_BASE_13, lbw_rng13_base);
	WREG32(mmMME1_RTR_LBW_RANGE_MASK_13, lbw_rng13_mask);

	WREG32(mmMME2_RTR_LBW_RANGE_BASE_0, lbw_rng0_base);
	WREG32(mmMME2_RTR_LBW_RANGE_MASK_0, lbw_rng0_mask);
	WREG32(mmMME2_RTR_LBW_RANGE_BASE_1, lbw_rng1_base);
	WREG32(mmMME2_RTR_LBW_RANGE_MASK_1, lbw_rng1_mask);
	WREG32(mmMME2_RTR_LBW_RANGE_BASE_2, lbw_rng2_base);
	WREG32(mmMME2_RTR_LBW_RANGE_MASK_2, lbw_rng2_mask);
	WREG32(mmMME2_RTR_LBW_RANGE_BASE_3, lbw_rng3_base);
	WREG32(mmMME2_RTR_LBW_RANGE_MASK_3, lbw_rng3_mask);
	WREG32(mmMME2_RTR_LBW_RANGE_BASE_4, lbw_rng4_base);
	WREG32(mmMME2_RTR_LBW_RANGE_MASK_4, lbw_rng4_mask);
	WREG32(mmMME2_RTR_LBW_RANGE_BASE_5, lbw_rng5_base);
	WREG32(mmMME2_RTR_LBW_RANGE_MASK_5, lbw_rng5_mask);
	WREG32(mmMME2_RTR_LBW_RANGE_BASE_6, lbw_rng6_base);
	WREG32(mmMME2_RTR_LBW_RANGE_MASK_6, lbw_rng6_mask);
	WREG32(mmMME2_RTR_LBW_RANGE_BASE_7, lbw_rng7_base);
	WREG32(mmMME2_RTR_LBW_RANGE_MASK_7, lbw_rng7_mask);
	WREG32(mmMME2_RTR_LBW_RANGE_BASE_8, lbw_rng8_base);
	WREG32(mmMME2_RTR_LBW_RANGE_MASK_8, lbw_rng8_mask);
	WREG32(mmMME2_RTR_LBW_RANGE_BASE_9, lbw_rng9_base);
	WREG32(mmMME2_RTR_LBW_RANGE_MASK_9, lbw_rng9_mask);
	WREG32(mmMME2_RTR_LBW_RANGE_BASE_10, lbw_rng10_base);
	WREG32(mmMME2_RTR_LBW_RANGE_MASK_10, lbw_rng10_mask);
	WREG32(mmMME2_RTR_LBW_RANGE_BASE_11, lbw_rng11_base);
	WREG32(mmMME2_RTR_LBW_RANGE_MASK_11, lbw_rng11_mask);
	WREG32(mmMME2_RTR_LBW_RANGE_BASE_12, lbw_rng12_base);
	WREG32(mmMME2_RTR_LBW_RANGE_MASK_12, lbw_rng12_mask);
	WREG32(mmMME2_RTR_LBW_RANGE_BASE_13, lbw_rng13_base);
	WREG32(mmMME2_RTR_LBW_RANGE_MASK_13, lbw_rng13_mask);

	WREG32(mmMME3_RTR_LBW_RANGE_BASE_0, lbw_rng0_base);
	WREG32(mmMME3_RTR_LBW_RANGE_MASK_0, lbw_rng0_mask);
	WREG32(mmMME3_RTR_LBW_RANGE_BASE_1, lbw_rng1_base);
	WREG32(mmMME3_RTR_LBW_RANGE_MASK_1, lbw_rng1_mask);
	WREG32(mmMME3_RTR_LBW_RANGE_BASE_2, lbw_rng2_base);
	WREG32(mmMME3_RTR_LBW_RANGE_MASK_2, lbw_rng2_mask);
	WREG32(mmMME3_RTR_LBW_RANGE_BASE_3, lbw_rng3_base);
	WREG32(mmMME3_RTR_LBW_RANGE_MASK_3, lbw_rng3_mask);
	WREG32(mmMME3_RTR_LBW_RANGE_BASE_4, lbw_rng4_base);
	WREG32(mmMME3_RTR_LBW_RANGE_MASK_4, lbw_rng4_mask);
	WREG32(mmMME3_RTR_LBW_RANGE_BASE_5, lbw_rng5_base);
	WREG32(mmMME3_RTR_LBW_RANGE_MASK_5, lbw_rng5_mask);
	WREG32(mmMME3_RTR_LBW_RANGE_BASE_6, lbw_rng6_base);
	WREG32(mmMME3_RTR_LBW_RANGE_MASK_6, lbw_rng6_mask);
	WREG32(mmMME3_RTR_LBW_RANGE_BASE_7, lbw_rng7_base);
	WREG32(mmMME3_RTR_LBW_RANGE_MASK_7, lbw_rng7_mask);
	WREG32(mmMME3_RTR_LBW_RANGE_BASE_8, lbw_rng8_base);
	WREG32(mmMME3_RTR_LBW_RANGE_MASK_8, lbw_rng8_mask);
	WREG32(mmMME3_RTR_LBW_RANGE_BASE_9, lbw_rng9_base);
	WREG32(mmMME3_RTR_LBW_RANGE_MASK_9, lbw_rng9_mask);
	WREG32(mmMME3_RTR_LBW_RANGE_BASE_10, lbw_rng10_base);
	WREG32(mmMME3_RTR_LBW_RANGE_MASK_10, lbw_rng10_mask);
	WREG32(mmMME3_RTR_LBW_RANGE_BASE_11, lbw_rng11_base);
	WREG32(mmMME3_RTR_LBW_RANGE_MASK_11, lbw_rng11_mask);
	WREG32(mmMME3_RTR_LBW_RANGE_BASE_12, lbw_rng12_base);
	WREG32(mmMME3_RTR_LBW_RANGE_MASK_12, lbw_rng12_mask);
	WREG32(mmMME3_RTR_LBW_RANGE_BASE_13, lbw_rng13_base);
	WREG32(mmMME3_RTR_LBW_RANGE_MASK_13, lbw_rng13_mask);

	WREG32(mmMME4_RTR_LBW_RANGE_BASE_0, lbw_rng0_base);
	WREG32(mmMME4_RTR_LBW_RANGE_MASK_0, lbw_rng0_mask);
	WREG32(mmMME4_RTR_LBW_RANGE_BASE_1, lbw_rng1_base);
	WREG32(mmMME4_RTR_LBW_RANGE_MASK_1, lbw_rng1_mask);
	WREG32(mmMME4_RTR_LBW_RANGE_BASE_2, lbw_rng2_base);
	WREG32(mmMME4_RTR_LBW_RANGE_MASK_2, lbw_rng2_mask);
	WREG32(mmMME4_RTR_LBW_RANGE_BASE_3, lbw_rng3_base);
	WREG32(mmMME4_RTR_LBW_RANGE_MASK_3, lbw_rng3_mask);
	WREG32(mmMME4_RTR_LBW_RANGE_BASE_4, lbw_rng4_base);
	WREG32(mmMME4_RTR_LBW_RANGE_MASK_4, lbw_rng4_mask);
	WREG32(mmMME4_RTR_LBW_RANGE_BASE_5, lbw_rng5_base);
	WREG32(mmMME4_RTR_LBW_RANGE_MASK_5, lbw_rng5_mask);
	WREG32(mmMME4_RTR_LBW_RANGE_BASE_6, lbw_rng6_base);
	WREG32(mmMME4_RTR_LBW_RANGE_MASK_6, lbw_rng6_mask);
	WREG32(mmMME4_RTR_LBW_RANGE_BASE_7, lbw_rng7_base);
	WREG32(mmMME4_RTR_LBW_RANGE_MASK_7, lbw_rng7_mask);
	WREG32(mmMME4_RTR_LBW_RANGE_BASE_8, lbw_rng8_base);
	WREG32(mmMME4_RTR_LBW_RANGE_MASK_8, lbw_rng8_mask);
	WREG32(mmMME4_RTR_LBW_RANGE_BASE_9, lbw_rng9_base);
	WREG32(mmMME4_RTR_LBW_RANGE_MASK_9, lbw_rng9_mask);
	WREG32(mmMME4_RTR_LBW_RANGE_BASE_10, lbw_rng10_base);
	WREG32(mmMME4_RTR_LBW_RANGE_MASK_10, lbw_rng10_mask);
	WREG32(mmMME4_RTR_LBW_RANGE_BASE_11, lbw_rng11_base);
	WREG32(mmMME4_RTR_LBW_RANGE_MASK_11, lbw_rng11_mask);
	WREG32(mmMME4_RTR_LBW_RANGE_BASE_12, lbw_rng12_base);
	WREG32(mmMME4_RTR_LBW_RANGE_MASK_12, lbw_rng12_mask);
	WREG32(mmMME4_RTR_LBW_RANGE_BASE_13, lbw_rng13_base);
	WREG32(mmMME4_RTR_LBW_RANGE_MASK_13, lbw_rng13_mask);

	WREG32(mmMME5_RTR_LBW_RANGE_BASE_0, lbw_rng0_base);
	WREG32(mmMME5_RTR_LBW_RANGE_MASK_0, lbw_rng0_mask);
	WREG32(mmMME5_RTR_LBW_RANGE_BASE_1, lbw_rng1_base);
	WREG32(mmMME5_RTR_LBW_RANGE_MASK_1, lbw_rng1_mask);
	WREG32(mmMME5_RTR_LBW_RANGE_BASE_2, lbw_rng2_base);
	WREG32(mmMME5_RTR_LBW_RANGE_MASK_2, lbw_rng2_mask);
	WREG32(mmMME5_RTR_LBW_RANGE_BASE_3, lbw_rng3_base);
	WREG32(mmMME5_RTR_LBW_RANGE_MASK_3, lbw_rng3_mask);
	WREG32(mmMME5_RTR_LBW_RANGE_BASE_4, lbw_rng4_base);
	WREG32(mmMME5_RTR_LBW_RANGE_MASK_4, lbw_rng4_mask);
	WREG32(mmMME5_RTR_LBW_RANGE_BASE_5, lbw_rng5_base);
	WREG32(mmMME5_RTR_LBW_RANGE_MASK_5, lbw_rng5_mask);
	WREG32(mmMME5_RTR_LBW_RANGE_BASE_6, lbw_rng6_base);
	WREG32(mmMME5_RTR_LBW_RANGE_MASK_6, lbw_rng6_mask);
	WREG32(mmMME5_RTR_LBW_RANGE_BASE_7, lbw_rng7_base);
	WREG32(mmMME5_RTR_LBW_RANGE_MASK_7, lbw_rng7_mask);
	WREG32(mmMME5_RTR_LBW_RANGE_BASE_8, lbw_rng8_base);
	WREG32(mmMME5_RTR_LBW_RANGE_MASK_8, lbw_rng8_mask);
	WREG32(mmMME5_RTR_LBW_RANGE_BASE_9, lbw_rng9_base);
	WREG32(mmMME5_RTR_LBW_RANGE_MASK_9, lbw_rng9_mask);
	WREG32(mmMME5_RTR_LBW_RANGE_BASE_10, lbw_rng10_base);
	WREG32(mmMME5_RTR_LBW_RANGE_MASK_10, lbw_rng10_mask);
	WREG32(mmMME5_RTR_LBW_RANGE_BASE_11, lbw_rng11_base);
	WREG32(mmMME5_RTR_LBW_RANGE_MASK_11, lbw_rng11_mask);
	WREG32(mmMME5_RTR_LBW_RANGE_BASE_12, lbw_rng12_base);
	WREG32(mmMME5_RTR_LBW_RANGE_MASK_12, lbw_rng12_mask);
	WREG32(mmMME5_RTR_LBW_RANGE_BASE_13, lbw_rng13_base);
	WREG32(mmMME5_RTR_LBW_RANGE_MASK_13, lbw_rng13_mask);

	WREG32(mmMME6_RTR_LBW_RANGE_BASE_0, lbw_rng0_base);
	WREG32(mmMME6_RTR_LBW_RANGE_MASK_0, lbw_rng0_mask);
	WREG32(mmMME6_RTR_LBW_RANGE_BASE_1, lbw_rng1_base);
	WREG32(mmMME6_RTR_LBW_RANGE_MASK_1, lbw_rng1_mask);
	WREG32(mmMME6_RTR_LBW_RANGE_BASE_2, lbw_rng2_base);
	WREG32(mmMME6_RTR_LBW_RANGE_MASK_2, lbw_rng2_mask);
	WREG32(mmMME6_RTR_LBW_RANGE_BASE_3, lbw_rng3_base);
	WREG32(mmMME6_RTR_LBW_RANGE_MASK_3, lbw_rng3_mask);
	WREG32(mmMME6_RTR_LBW_RANGE_BASE_4, lbw_rng4_base);
	WREG32(mmMME6_RTR_LBW_RANGE_MASK_4, lbw_rng4_mask);
	WREG32(mmMME6_RTR_LBW_RANGE_BASE_5, lbw_rng5_base);
	WREG32(mmMME6_RTR_LBW_RANGE_MASK_5, lbw_rng5_mask);
	WREG32(mmMME6_RTR_LBW_RANGE_BASE_6, lbw_rng6_base);
	WREG32(mmMME6_RTR_LBW_RANGE_MASK_6, lbw_rng6_mask);
	WREG32(mmMME6_RTR_LBW_RANGE_BASE_7, lbw_rng7_base);
	WREG32(mmMME6_RTR_LBW_RANGE_MASK_7, lbw_rng7_mask);
	WREG32(mmMME6_RTR_LBW_RANGE_BASE_8, lbw_rng8_base);
	WREG32(mmMME6_RTR_LBW_RANGE_MASK_8, lbw_rng8_mask);
	WREG32(mmMME6_RTR_LBW_RANGE_BASE_9, lbw_rng9_base);
	WREG32(mmMME6_RTR_LBW_RANGE_MASK_9, lbw_rng9_mask);
	WREG32(mmMME6_RTR_LBW_RANGE_BASE_10, lbw_rng10_base);
	WREG32(mmMME6_RTR_LBW_RANGE_MASK_10, lbw_rng10_mask);
	WREG32(mmMME6_RTR_LBW_RANGE_BASE_11, lbw_rng11_base);
	WREG32(mmMME6_RTR_LBW_RANGE_MASK_11, lbw_rng11_mask);
	WREG32(mmMME6_RTR_LBW_RANGE_BASE_12, lbw_rng12_base);
	WREG32(mmMME6_RTR_LBW_RANGE_MASK_12, lbw_rng12_mask);
	WREG32(mmMME6_RTR_LBW_RANGE_BASE_13, lbw_rng13_base);
	WREG32(mmMME6_RTR_LBW_RANGE_MASK_13, lbw_rng13_mask);

	WREG32(mmTPC0_NRTR_LBW_RANGE_HIT, 0xFFFF);
	WREG32(mmTPC0_NRTR_HBW_RANGE_HIT, 0xFE);

	/* Protect HOST */
	WREG32(mmTPC0_NRTR_HBW_RANGE_BASE_L_0, 0);
	WREG32(mmTPC0_NRTR_HBW_RANGE_BASE_H_0, 0);
	WREG32(mmTPC0_NRTR_HBW_RANGE_MASK_L_0, 0);
	WREG32(mmTPC0_NRTR_HBW_RANGE_MASK_H_0, 0xFFF80);

	/*
	 * Protect DDR @
	 * DRAM_VIRT_BASE : DRAM_VIRT_BASE + DRAM_VIRT_END
	 * The mask protects the first 512MB
	 */
	WREG32(mmTPC0_NRTR_HBW_RANGE_BASE_L_1, dram_addr_lo);
	WREG32(mmTPC0_NRTR_HBW_RANGE_BASE_H_1, dram_addr_hi);
	WREG32(mmTPC0_NRTR_HBW_RANGE_MASK_L_1, 0xE0000000);
	WREG32(mmTPC0_NRTR_HBW_RANGE_MASK_H_1, 0x3FFFF);

	WREG32(mmTPC0_NRTR_LBW_RANGE_BASE_0, lbw_rng0_base);
	WREG32(mmTPC0_NRTR_LBW_RANGE_MASK_0, lbw_rng0_mask);
	WREG32(mmTPC0_NRTR_LBW_RANGE_BASE_1, lbw_rng1_base);
	WREG32(mmTPC0_NRTR_LBW_RANGE_MASK_1, lbw_rng1_mask);
	WREG32(mmTPC0_NRTR_LBW_RANGE_BASE_2, lbw_rng2_base);
	WREG32(mmTPC0_NRTR_LBW_RANGE_MASK_2, lbw_rng2_mask);
	WREG32(mmTPC0_NRTR_LBW_RANGE_BASE_3, lbw_rng3_base);
	WREG32(mmTPC0_NRTR_LBW_RANGE_MASK_3, lbw_rng3_mask);
	WREG32(mmTPC0_NRTR_LBW_RANGE_BASE_4, lbw_rng4_base);
	WREG32(mmTPC0_NRTR_LBW_RANGE_MASK_4, lbw_rng4_mask);
	WREG32(mmTPC0_NRTR_LBW_RANGE_BASE_5, lbw_rng5_base);
	WREG32(mmTPC0_NRTR_LBW_RANGE_MASK_5, lbw_rng5_mask);
	WREG32(mmTPC0_NRTR_LBW_RANGE_BASE_6, lbw_rng6_base);
	WREG32(mmTPC0_NRTR_LBW_RANGE_MASK_6, lbw_rng6_mask);
	WREG32(mmTPC0_NRTR_LBW_RANGE_BASE_7, lbw_rng7_base);
	WREG32(mmTPC0_NRTR_LBW_RANGE_MASK_7, lbw_rng7_mask);
	WREG32(mmTPC0_NRTR_LBW_RANGE_BASE_8, lbw_rng8_base);
	WREG32(mmTPC0_NRTR_LBW_RANGE_MASK_8, lbw_rng8_mask);
	WREG32(mmTPC0_NRTR_LBW_RANGE_BASE_9, lbw_rng9_base);
	WREG32(mmTPC0_NRTR_LBW_RANGE_MASK_9, lbw_rng9_mask);
	WREG32(mmTPC0_NRTR_LBW_RANGE_BASE_10, lbw_rng10_base);
	WREG32(mmTPC0_NRTR_LBW_RANGE_MASK_10, lbw_rng10_mask);
	WREG32(mmTPC0_NRTR_LBW_RANGE_BASE_11, lbw_rng11_base);
	WREG32(mmTPC0_NRTR_LBW_RANGE_MASK_11, lbw_rng11_mask);
	WREG32(mmTPC0_NRTR_LBW_RANGE_BASE_12, lbw_rng12_base);
	WREG32(mmTPC0_NRTR_LBW_RANGE_MASK_12, lbw_rng12_mask);
	WREG32(mmTPC0_NRTR_LBW_RANGE_BASE_13, lbw_rng13_base);
	WREG32(mmTPC0_NRTR_LBW_RANGE_MASK_13, lbw_rng13_mask);

	WREG32(mmTPC1_RTR_LBW_RANGE_HIT, 0xFFFF);
	WREG32(mmTPC1_RTR_HBW_RANGE_HIT, 0xFE);

	/* Protect HOST */
	WREG32(mmTPC1_RTR_HBW_RANGE_BASE_L_0, 0);
	WREG32(mmTPC1_RTR_HBW_RANGE_BASE_H_0, 0);
	WREG32(mmTPC1_RTR_HBW_RANGE_MASK_L_0, 0);
	WREG32(mmTPC1_RTR_HBW_RANGE_MASK_H_0, 0xFFF80);

	/*
	 * Protect DDR @
	 * DRAM_VIRT_BASE : DRAM_VIRT_BASE + DRAM_VIRT_END
	 * The mask protects the first 512MB
	 */
	WREG32(mmTPC1_RTR_HBW_RANGE_BASE_L_1, dram_addr_lo);
	WREG32(mmTPC1_RTR_HBW_RANGE_BASE_H_1, dram_addr_hi);
	WREG32(mmTPC1_RTR_HBW_RANGE_MASK_L_1, 0xE0000000);
	WREG32(mmTPC1_RTR_HBW_RANGE_MASK_H_1, 0x3FFFF);

	WREG32(mmTPC1_RTR_LBW_RANGE_BASE_0, lbw_rng0_base);
	WREG32(mmTPC1_RTR_LBW_RANGE_MASK_0, lbw_rng0_mask);
	WREG32(mmTPC1_RTR_LBW_RANGE_BASE_1, lbw_rng1_base);
	WREG32(mmTPC1_RTR_LBW_RANGE_MASK_1, lbw_rng1_mask);
	WREG32(mmTPC1_RTR_LBW_RANGE_BASE_2, lbw_rng2_base);
	WREG32(mmTPC1_RTR_LBW_RANGE_MASK_2, lbw_rng2_mask);
	WREG32(mmTPC1_RTR_LBW_RANGE_BASE_3, lbw_rng3_base);
	WREG32(mmTPC1_RTR_LBW_RANGE_MASK_3, lbw_rng3_mask);
	WREG32(mmTPC1_RTR_LBW_RANGE_BASE_4, lbw_rng4_base);
	WREG32(mmTPC1_RTR_LBW_RANGE_MASK_4, lbw_rng4_mask);
	WREG32(mmTPC1_RTR_LBW_RANGE_BASE_5, lbw_rng5_base);
	WREG32(mmTPC1_RTR_LBW_RANGE_MASK_5, lbw_rng5_mask);
	WREG32(mmTPC1_RTR_LBW_RANGE_BASE_6, lbw_rng6_base);
	WREG32(mmTPC1_RTR_LBW_RANGE_MASK_6, lbw_rng6_mask);
	WREG32(mmTPC1_RTR_LBW_RANGE_BASE_7, lbw_rng7_base);
	WREG32(mmTPC1_RTR_LBW_RANGE_MASK_7, lbw_rng7_mask);
	WREG32(mmTPC1_RTR_LBW_RANGE_BASE_8, lbw_rng8_base);
	WREG32(mmTPC1_RTR_LBW_RANGE_MASK_8, lbw_rng8_mask);
	WREG32(mmTPC1_RTR_LBW_RANGE_BASE_9, lbw_rng9_base);
	WREG32(mmTPC1_RTR_LBW_RANGE_MASK_9, lbw_rng9_mask);
	WREG32(mmTPC1_RTR_LBW_RANGE_BASE_10, lbw_rng10_base);
	WREG32(mmTPC1_RTR_LBW_RANGE_MASK_10, lbw_rng10_mask);
	WREG32(mmTPC1_RTR_LBW_RANGE_BASE_11, lbw_rng11_base);
	WREG32(mmTPC1_RTR_LBW_RANGE_MASK_11, lbw_rng11_mask);
	WREG32(mmTPC1_RTR_LBW_RANGE_BASE_12, lbw_rng12_base);
	WREG32(mmTPC1_RTR_LBW_RANGE_MASK_12, lbw_rng12_mask);
	WREG32(mmTPC1_RTR_LBW_RANGE_BASE_13, lbw_rng13_base);
	WREG32(mmTPC1_RTR_LBW_RANGE_MASK_13, lbw_rng13_mask);

	WREG32(mmTPC2_RTR_LBW_RANGE_HIT, 0xFFFF);
	WREG32(mmTPC2_RTR_HBW_RANGE_HIT, 0xFE);

	/* Protect HOST */
	WREG32(mmTPC2_RTR_HBW_RANGE_BASE_L_0, 0);
	WREG32(mmTPC2_RTR_HBW_RANGE_BASE_H_0, 0);
	WREG32(mmTPC2_RTR_HBW_RANGE_MASK_L_0, 0);
	WREG32(mmTPC2_RTR_HBW_RANGE_MASK_H_0, 0xFFF80);

	/*
	 * Protect DDR @
	 * DRAM_VIRT_BASE : DRAM_VIRT_BASE + DRAM_VIRT_END
	 * The mask protects the first 512MB
	 */
	WREG32(mmTPC2_RTR_HBW_RANGE_BASE_L_1, dram_addr_lo);
	WREG32(mmTPC2_RTR_HBW_RANGE_BASE_H_1, dram_addr_hi);
	WREG32(mmTPC2_RTR_HBW_RANGE_MASK_L_1, 0xE0000000);
	WREG32(mmTPC2_RTR_HBW_RANGE_MASK_H_1, 0x3FFFF);

	WREG32(mmTPC2_RTR_LBW_RANGE_BASE_0, lbw_rng0_base);
	WREG32(mmTPC2_RTR_LBW_RANGE_MASK_0, lbw_rng0_mask);
	WREG32(mmTPC2_RTR_LBW_RANGE_BASE_1, lbw_rng1_base);
	WREG32(mmTPC2_RTR_LBW_RANGE_MASK_1, lbw_rng1_mask);
	WREG32(mmTPC2_RTR_LBW_RANGE_BASE_2, lbw_rng2_base);
	WREG32(mmTPC2_RTR_LBW_RANGE_MASK_2, lbw_rng2_mask);
	WREG32(mmTPC2_RTR_LBW_RANGE_BASE_3, lbw_rng3_base);
	WREG32(mmTPC2_RTR_LBW_RANGE_MASK_3, lbw_rng3_mask);
	WREG32(mmTPC2_RTR_LBW_RANGE_BASE_4, lbw_rng4_base);
	WREG32(mmTPC2_RTR_LBW_RANGE_MASK_4, lbw_rng4_mask);
	WREG32(mmTPC2_RTR_LBW_RANGE_BASE_5, lbw_rng5_base);
	WREG32(mmTPC2_RTR_LBW_RANGE_MASK_5, lbw_rng5_mask);
	WREG32(mmTPC2_RTR_LBW_RANGE_BASE_6, lbw_rng6_base);
	WREG32(mmTPC2_RTR_LBW_RANGE_MASK_6, lbw_rng6_mask);
	WREG32(mmTPC2_RTR_LBW_RANGE_BASE_7, lbw_rng7_base);
	WREG32(mmTPC2_RTR_LBW_RANGE_MASK_7, lbw_rng7_mask);
	WREG32(mmTPC2_RTR_LBW_RANGE_BASE_8, lbw_rng8_base);
	WREG32(mmTPC2_RTR_LBW_RANGE_MASK_8, lbw_rng8_mask);
	WREG32(mmTPC2_RTR_LBW_RANGE_BASE_9, lbw_rng9_base);
	WREG32(mmTPC2_RTR_LBW_RANGE_MASK_9, lbw_rng9_mask);
	WREG32(mmTPC2_RTR_LBW_RANGE_BASE_10, lbw_rng10_base);
	WREG32(mmTPC2_RTR_LBW_RANGE_MASK_10, lbw_rng10_mask);
	WREG32(mmTPC2_RTR_LBW_RANGE_BASE_11, lbw_rng11_base);
	WREG32(mmTPC2_RTR_LBW_RANGE_MASK_11, lbw_rng11_mask);
	WREG32(mmTPC2_RTR_LBW_RANGE_BASE_12, lbw_rng12_base);
	WREG32(mmTPC2_RTR_LBW_RANGE_MASK_12, lbw_rng12_mask);
	WREG32(mmTPC2_RTR_LBW_RANGE_BASE_13, lbw_rng13_base);
	WREG32(mmTPC2_RTR_LBW_RANGE_MASK_13, lbw_rng13_mask);

	WREG32(mmTPC3_RTR_LBW_RANGE_HIT, 0xFFFF);
	WREG32(mmTPC3_RTR_HBW_RANGE_HIT, 0xFE);

	/* Protect HOST */
	WREG32(mmTPC3_RTR_HBW_RANGE_BASE_L_0, 0);
	WREG32(mmTPC3_RTR_HBW_RANGE_BASE_H_0, 0);
	WREG32(mmTPC3_RTR_HBW_RANGE_MASK_L_0, 0);
	WREG32(mmTPC3_RTR_HBW_RANGE_MASK_H_0, 0xFFF80);

	/*
	 * Protect DDR @
	 * DRAM_VIRT_BASE : DRAM_VIRT_BASE + DRAM_VIRT_END
	 * The mask protects the first 512MB
	 */
	WREG32(mmTPC3_RTR_HBW_RANGE_BASE_L_1, dram_addr_lo);
	WREG32(mmTPC3_RTR_HBW_RANGE_BASE_H_1, dram_addr_hi);
	WREG32(mmTPC3_RTR_HBW_RANGE_MASK_L_1, 0xE0000000);
	WREG32(mmTPC3_RTR_HBW_RANGE_MASK_H_1, 0x3FFFF);

	WREG32(mmTPC3_RTR_LBW_RANGE_BASE_0, lbw_rng0_base);
	WREG32(mmTPC3_RTR_LBW_RANGE_MASK_0, lbw_rng0_mask);
	WREG32(mmTPC3_RTR_LBW_RANGE_BASE_1, lbw_rng1_base);
	WREG32(mmTPC3_RTR_LBW_RANGE_MASK_1, lbw_rng1_mask);
	WREG32(mmTPC3_RTR_LBW_RANGE_BASE_2, lbw_rng2_base);
	WREG32(mmTPC3_RTR_LBW_RANGE_MASK_2, lbw_rng2_mask);
	WREG32(mmTPC3_RTR_LBW_RANGE_BASE_3, lbw_rng3_base);
	WREG32(mmTPC3_RTR_LBW_RANGE_MASK_3, lbw_rng3_mask);
	WREG32(mmTPC3_RTR_LBW_RANGE_BASE_4, lbw_rng4_base);
	WREG32(mmTPC3_RTR_LBW_RANGE_MASK_4, lbw_rng4_mask);
	WREG32(mmTPC3_RTR_LBW_RANGE_BASE_5, lbw_rng5_base);
	WREG32(mmTPC3_RTR_LBW_RANGE_MASK_5, lbw_rng5_mask);
	WREG32(mmTPC3_RTR_LBW_RANGE_BASE_6, lbw_rng6_base);
	WREG32(mmTPC3_RTR_LBW_RANGE_MASK_6, lbw_rng6_mask);
	WREG32(mmTPC3_RTR_LBW_RANGE_BASE_7, lbw_rng7_base);
	WREG32(mmTPC3_RTR_LBW_RANGE_MASK_7, lbw_rng7_mask);
	WREG32(mmTPC3_RTR_LBW_RANGE_BASE_8, lbw_rng8_base);
	WREG32(mmTPC3_RTR_LBW_RANGE_MASK_8, lbw_rng8_mask);
	WREG32(mmTPC3_RTR_LBW_RANGE_BASE_9, lbw_rng9_base);
	WREG32(mmTPC3_RTR_LBW_RANGE_MASK_9, lbw_rng9_mask);
	WREG32(mmTPC3_RTR_LBW_RANGE_BASE_10, lbw_rng10_base);
	WREG32(mmTPC3_RTR_LBW_RANGE_MASK_10, lbw_rng10_mask);
	WREG32(mmTPC3_RTR_LBW_RANGE_BASE_11, lbw_rng11_base);
	WREG32(mmTPC3_RTR_LBW_RANGE_MASK_11, lbw_rng11_mask);
	WREG32(mmTPC3_RTR_LBW_RANGE_BASE_12, lbw_rng12_base);
	WREG32(mmTPC3_RTR_LBW_RANGE_MASK_12, lbw_rng12_mask);
	WREG32(mmTPC3_RTR_LBW_RANGE_BASE_13, lbw_rng13_base);
	WREG32(mmTPC3_RTR_LBW_RANGE_MASK_13, lbw_rng13_mask);

	WREG32(mmTPC4_RTR_LBW_RANGE_HIT, 0xFFFF);
	WREG32(mmTPC4_RTR_HBW_RANGE_HIT, 0xFE);

	/* Protect HOST */
	WREG32(mmTPC4_RTR_HBW_RANGE_BASE_L_0, 0);
	WREG32(mmTPC4_RTR_HBW_RANGE_BASE_H_0, 0);
	WREG32(mmTPC4_RTR_HBW_RANGE_MASK_L_0, 0);
	WREG32(mmTPC4_RTR_HBW_RANGE_MASK_H_0, 0xFFF80);

	/*
	 * Protect DDR @
	 * DRAM_VIRT_BASE : DRAM_VIRT_BASE + DRAM_VIRT_END
	 * The mask protects the first 512MB
	 */
	WREG32(mmTPC4_RTR_HBW_RANGE_BASE_L_1, dram_addr_lo);
	WREG32(mmTPC4_RTR_HBW_RANGE_BASE_H_1, dram_addr_hi);
	WREG32(mmTPC4_RTR_HBW_RANGE_MASK_L_1, 0xE0000000);
	WREG32(mmTPC4_RTR_HBW_RANGE_MASK_H_1, 0x3FFFF);

	WREG32(mmTPC4_RTR_LBW_RANGE_BASE_0, lbw_rng0_base);
	WREG32(mmTPC4_RTR_LBW_RANGE_MASK_0, lbw_rng0_mask);
	WREG32(mmTPC4_RTR_LBW_RANGE_BASE_1, lbw_rng1_base);
	WREG32(mmTPC4_RTR_LBW_RANGE_MASK_1, lbw_rng1_mask);
	WREG32(mmTPC4_RTR_LBW_RANGE_BASE_2, lbw_rng2_base);
	WREG32(mmTPC4_RTR_LBW_RANGE_MASK_2, lbw_rng2_mask);
	WREG32(mmTPC4_RTR_LBW_RANGE_BASE_3, lbw_rng3_base);
	WREG32(mmTPC4_RTR_LBW_RANGE_MASK_3, lbw_rng3_mask);
	WREG32(mmTPC4_RTR_LBW_RANGE_BASE_4, lbw_rng4_base);
	WREG32(mmTPC4_RTR_LBW_RANGE_MASK_4, lbw_rng4_mask);
	WREG32(mmTPC4_RTR_LBW_RANGE_BASE_5, lbw_rng5_base);
	WREG32(mmTPC4_RTR_LBW_RANGE_MASK_5, lbw_rng5_mask);
	WREG32(mmTPC4_RTR_LBW_RANGE_BASE_6, lbw_rng6_base);
	WREG32(mmTPC4_RTR_LBW_RANGE_MASK_6, lbw_rng6_mask);
	WREG32(mmTPC4_RTR_LBW_RANGE_BASE_7, lbw_rng7_base);
	WREG32(mmTPC4_RTR_LBW_RANGE_MASK_7, lbw_rng7_mask);
	WREG32(mmTPC4_RTR_LBW_RANGE_BASE_8, lbw_rng8_base);
	WREG32(mmTPC4_RTR_LBW_RANGE_MASK_8, lbw_rng8_mask);
	WREG32(mmTPC4_RTR_LBW_RANGE_BASE_9, lbw_rng9_base);
	WREG32(mmTPC4_RTR_LBW_RANGE_MASK_9, lbw_rng9_mask);
	WREG32(mmTPC4_RTR_LBW_RANGE_BASE_10, lbw_rng10_base);
	WREG32(mmTPC4_RTR_LBW_RANGE_MASK_10, lbw_rng10_mask);
	WREG32(mmTPC4_RTR_LBW_RANGE_BASE_11, lbw_rng11_base);
	WREG32(mmTPC4_RTR_LBW_RANGE_MASK_11, lbw_rng11_mask);
	WREG32(mmTPC4_RTR_LBW_RANGE_BASE_12, lbw_rng12_base);
	WREG32(mmTPC4_RTR_LBW_RANGE_MASK_12, lbw_rng12_mask);
	WREG32(mmTPC4_RTR_LBW_RANGE_BASE_13, lbw_rng13_base);
	WREG32(mmTPC4_RTR_LBW_RANGE_MASK_13, lbw_rng13_mask);

	WREG32(mmTPC5_RTR_LBW_RANGE_HIT, 0xFFFF);
	WREG32(mmTPC5_RTR_HBW_RANGE_HIT, 0xFE);

	/* Protect HOST */
	WREG32(mmTPC5_RTR_HBW_RANGE_BASE_L_0, 0);
	WREG32(mmTPC5_RTR_HBW_RANGE_BASE_H_0, 0);
	WREG32(mmTPC5_RTR_HBW_RANGE_MASK_L_0, 0);
	WREG32(mmTPC5_RTR_HBW_RANGE_MASK_H_0, 0xFFF80);

	/*
	 * Protect DDR @
	 * DRAM_VIRT_BASE : DRAM_VIRT_BASE + DRAM_VIRT_END
	 * The mask protects the first 512MB
	 */
	WREG32(mmTPC5_RTR_HBW_RANGE_BASE_L_1, dram_addr_lo);
	WREG32(mmTPC5_RTR_HBW_RANGE_BASE_H_1, dram_addr_hi);
	WREG32(mmTPC5_RTR_HBW_RANGE_MASK_L_1, 0xE0000000);
	WREG32(mmTPC5_RTR_HBW_RANGE_MASK_H_1, 0x3FFFF);

	WREG32(mmTPC5_RTR_LBW_RANGE_BASE_0, lbw_rng0_base);
	WREG32(mmTPC5_RTR_LBW_RANGE_MASK_0, lbw_rng0_mask);
	WREG32(mmTPC5_RTR_LBW_RANGE_BASE_1, lbw_rng1_base);
	WREG32(mmTPC5_RTR_LBW_RANGE_MASK_1, lbw_rng1_mask);
	WREG32(mmTPC5_RTR_LBW_RANGE_BASE_2, lbw_rng2_base);
	WREG32(mmTPC5_RTR_LBW_RANGE_MASK_2, lbw_rng2_mask);
	WREG32(mmTPC5_RTR_LBW_RANGE_BASE_3, lbw_rng3_base);
	WREG32(mmTPC5_RTR_LBW_RANGE_MASK_3, lbw_rng3_mask);
	WREG32(mmTPC5_RTR_LBW_RANGE_BASE_4, lbw_rng4_base);
	WREG32(mmTPC5_RTR_LBW_RANGE_MASK_4, lbw_rng4_mask);
	WREG32(mmTPC5_RTR_LBW_RANGE_BASE_5, lbw_rng5_base);
	WREG32(mmTPC5_RTR_LBW_RANGE_MASK_5, lbw_rng5_mask);
	WREG32(mmTPC5_RTR_LBW_RANGE_BASE_6, lbw_rng6_base);
	WREG32(mmTPC5_RTR_LBW_RANGE_MASK_6, lbw_rng6_mask);
	WREG32(mmTPC5_RTR_LBW_RANGE_BASE_7, lbw_rng7_base);
	WREG32(mmTPC5_RTR_LBW_RANGE_MASK_7, lbw_rng7_mask);
	WREG32(mmTPC5_RTR_LBW_RANGE_BASE_8, lbw_rng8_base);
	WREG32(mmTPC5_RTR_LBW_RANGE_MASK_8, lbw_rng8_mask);
	WREG32(mmTPC5_RTR_LBW_RANGE_BASE_9, lbw_rng9_base);
	WREG32(mmTPC5_RTR_LBW_RANGE_MASK_9, lbw_rng9_mask);
	WREG32(mmTPC5_RTR_LBW_RANGE_BASE_10, lbw_rng10_base);
	WREG32(mmTPC5_RTR_LBW_RANGE_MASK_10, lbw_rng10_mask);
	WREG32(mmTPC5_RTR_LBW_RANGE_BASE_11, lbw_rng11_base);
	WREG32(mmTPC5_RTR_LBW_RANGE_MASK_11, lbw_rng11_mask);
	WREG32(mmTPC5_RTR_LBW_RANGE_BASE_12, lbw_rng12_base);
	WREG32(mmTPC5_RTR_LBW_RANGE_MASK_12, lbw_rng12_mask);
	WREG32(mmTPC5_RTR_LBW_RANGE_BASE_13, lbw_rng13_base);
	WREG32(mmTPC5_RTR_LBW_RANGE_MASK_13, lbw_rng13_mask);

	WREG32(mmTPC6_RTR_LBW_RANGE_HIT, 0xFFFF);
	WREG32(mmTPC6_RTR_HBW_RANGE_HIT, 0xFE);

	/* Protect HOST */
	WREG32(mmTPC6_RTR_HBW_RANGE_BASE_L_0, 0);
	WREG32(mmTPC6_RTR_HBW_RANGE_BASE_H_0, 0);
	WREG32(mmTPC6_RTR_HBW_RANGE_MASK_L_0, 0);
	WREG32(mmTPC6_RTR_HBW_RANGE_MASK_H_0, 0xFFF80);

	/*
	 * Protect DDR @
	 * DRAM_VIRT_BASE : DRAM_VIRT_BASE + DRAM_VIRT_END
	 * The mask protects the first 512MB
	 */
	WREG32(mmTPC6_RTR_HBW_RANGE_BASE_L_1, dram_addr_lo);
	WREG32(mmTPC6_RTR_HBW_RANGE_BASE_H_1, dram_addr_hi);
	WREG32(mmTPC6_RTR_HBW_RANGE_MASK_L_1, 0xE0000000);
	WREG32(mmTPC6_RTR_HBW_RANGE_MASK_H_1, 0x3FFFF);

	WREG32(mmTPC6_RTR_LBW_RANGE_BASE_0, lbw_rng0_base);
	WREG32(mmTPC6_RTR_LBW_RANGE_MASK_0, lbw_rng0_mask);
	WREG32(mmTPC6_RTR_LBW_RANGE_BASE_1, lbw_rng1_base);
	WREG32(mmTPC6_RTR_LBW_RANGE_MASK_1, lbw_rng1_mask);
	WREG32(mmTPC6_RTR_LBW_RANGE_BASE_2, lbw_rng2_base);
	WREG32(mmTPC6_RTR_LBW_RANGE_MASK_2, lbw_rng2_mask);
	WREG32(mmTPC6_RTR_LBW_RANGE_BASE_3, lbw_rng3_base);
	WREG32(mmTPC6_RTR_LBW_RANGE_MASK_3, lbw_rng3_mask);
	WREG32(mmTPC6_RTR_LBW_RANGE_BASE_4, lbw_rng4_base);
	WREG32(mmTPC6_RTR_LBW_RANGE_MASK_4, lbw_rng4_mask);
	WREG32(mmTPC6_RTR_LBW_RANGE_BASE_5, lbw_rng5_base);
	WREG32(mmTPC6_RTR_LBW_RANGE_MASK_5, lbw_rng5_mask);
	WREG32(mmTPC6_RTR_LBW_RANGE_BASE_6, lbw_rng6_base);
	WREG32(mmTPC6_RTR_LBW_RANGE_MASK_6, lbw_rng6_mask);
	WREG32(mmTPC6_RTR_LBW_RANGE_BASE_7, lbw_rng7_base);
	WREG32(mmTPC6_RTR_LBW_RANGE_MASK_7, lbw_rng7_mask);
	WREG32(mmTPC6_RTR_LBW_RANGE_BASE_8, lbw_rng8_base);
	WREG32(mmTPC6_RTR_LBW_RANGE_MASK_8, lbw_rng8_mask);
	WREG32(mmTPC6_RTR_LBW_RANGE_BASE_9, lbw_rng9_base);
	WREG32(mmTPC6_RTR_LBW_RANGE_MASK_9, lbw_rng9_mask);
	WREG32(mmTPC6_RTR_LBW_RANGE_BASE_10, lbw_rng10_base);
	WREG32(mmTPC6_RTR_LBW_RANGE_MASK_10, lbw_rng10_mask);
	WREG32(mmTPC6_RTR_LBW_RANGE_BASE_11, lbw_rng11_base);
	WREG32(mmTPC6_RTR_LBW_RANGE_MASK_11, lbw_rng11_mask);
	WREG32(mmTPC6_RTR_LBW_RANGE_BASE_12, lbw_rng12_base);
	WREG32(mmTPC6_RTR_LBW_RANGE_MASK_12, lbw_rng12_mask);
	WREG32(mmTPC6_RTR_LBW_RANGE_BASE_13, lbw_rng13_base);
	WREG32(mmTPC6_RTR_LBW_RANGE_MASK_13, lbw_rng13_mask);

	WREG32(mmTPC7_NRTR_LBW_RANGE_HIT, 0xFFFF);
	WREG32(mmTPC7_NRTR_HBW_RANGE_HIT, 0xFE);

	/* Protect HOST */
	WREG32(mmTPC7_NRTR_HBW_RANGE_BASE_L_0, 0);
	WREG32(mmTPC7_NRTR_HBW_RANGE_BASE_H_0, 0);
	WREG32(mmTPC7_NRTR_HBW_RANGE_MASK_L_0, 0);
	WREG32(mmTPC7_NRTR_HBW_RANGE_MASK_H_0, 0xFFF80);

	/*
	 * Protect DDR @
	 * DRAM_VIRT_BASE : DRAM_VIRT_BASE + DRAM_VIRT_END
	 * The mask protects the first 512MB
	 */
	WREG32(mmTPC7_NRTR_HBW_RANGE_BASE_L_1, dram_addr_lo);
	WREG32(mmTPC7_NRTR_HBW_RANGE_BASE_H_1, dram_addr_hi);
	WREG32(mmTPC7_NRTR_HBW_RANGE_MASK_L_1, 0xE0000000);
	WREG32(mmTPC7_NRTR_HBW_RANGE_MASK_H_1, 0x3FFFF);

	WREG32(mmTPC7_NRTR_LBW_RANGE_BASE_0, lbw_rng0_base);
	WREG32(mmTPC7_NRTR_LBW_RANGE_MASK_0, lbw_rng0_mask);
	WREG32(mmTPC7_NRTR_LBW_RANGE_BASE_1, lbw_rng1_base);
	WREG32(mmTPC7_NRTR_LBW_RANGE_MASK_1, lbw_rng1_mask);
	WREG32(mmTPC7_NRTR_LBW_RANGE_BASE_2, lbw_rng2_base);
	WREG32(mmTPC7_NRTR_LBW_RANGE_MASK_2, lbw_rng2_mask);
	WREG32(mmTPC7_NRTR_LBW_RANGE_BASE_3, lbw_rng3_base);
	WREG32(mmTPC7_NRTR_LBW_RANGE_MASK_3, lbw_rng3_mask);
	WREG32(mmTPC7_NRTR_LBW_RANGE_BASE_4, lbw_rng4_base);
	WREG32(mmTPC7_NRTR_LBW_RANGE_MASK_4, lbw_rng4_mask);
	WREG32(mmTPC7_NRTR_LBW_RANGE_BASE_5, lbw_rng5_base);
	WREG32(mmTPC7_NRTR_LBW_RANGE_MASK_5, lbw_rng5_mask);
	WREG32(mmTPC7_NRTR_LBW_RANGE_BASE_6, lbw_rng6_base);
	WREG32(mmTPC7_NRTR_LBW_RANGE_MASK_6, lbw_rng6_mask);
	WREG32(mmTPC7_NRTR_LBW_RANGE_BASE_7, lbw_rng7_base);
	WREG32(mmTPC7_NRTR_LBW_RANGE_MASK_7, lbw_rng7_mask);
	WREG32(mmTPC7_NRTR_LBW_RANGE_BASE_8, lbw_rng8_base);
	WREG32(mmTPC7_NRTR_LBW_RANGE_MASK_8, lbw_rng8_mask);
	WREG32(mmTPC7_NRTR_LBW_RANGE_BASE_9, lbw_rng9_base);
	WREG32(mmTPC7_NRTR_LBW_RANGE_MASK_9, lbw_rng9_mask);
	WREG32(mmTPC7_NRTR_LBW_RANGE_BASE_10, lbw_rng10_base);
	WREG32(mmTPC7_NRTR_LBW_RANGE_MASK_10, lbw_rng10_mask);
	WREG32(mmTPC7_NRTR_LBW_RANGE_BASE_11, lbw_rng11_base);
	WREG32(mmTPC7_NRTR_LBW_RANGE_MASK_11, lbw_rng11_mask);
	WREG32(mmTPC7_NRTR_LBW_RANGE_BASE_12, lbw_rng12_base);
	WREG32(mmTPC7_NRTR_LBW_RANGE_MASK_12, lbw_rng12_mask);
	WREG32(mmTPC7_NRTR_LBW_RANGE_BASE_13, lbw_rng13_base);
	WREG32(mmTPC7_NRTR_LBW_RANGE_MASK_13, lbw_rng13_mask);

	goya_init_protection_bits(hdev);
}
