Kaynağa Gözat

gsi: Add HAL Layer for GSI

Add Hardware Abstraction Layer infrastructure to GSI
driver. This change includes registers HAL component
for GSI.

Change-Id: I87e7c22ed88117a74af4220b4c05c610bae498cc
Signed-off-by: Amir Levy <[email protected]>
Signed-off-by: Ilia Lin <[email protected]>
Sivan Reinstein 4 yıl önce
ebeveyn
işleme
b4f2036141

+ 0 - 1
config/dataipa.h

@@ -4,7 +4,6 @@
 */
 
 #define CONFIG_GSI 1
-#define CONFIG_GSI_REGISTER_VERSION_2 1
 #define CONFIG_RMNET_IPA3 1
 #define CONFIG_RNDIS_IPA 1
 #define CONFIG_IPA_WDI_UNIFIED_API 1

+ 0 - 1
config/dataipa_GKI.conf

@@ -1,5 +1,4 @@
 export CONFIG_GSI=m
-export CONFIG_GSI_REGISTER_VERSION_2=y
 export CONFIG_IPA_CLIENTS_MANAGER=m
 export CONFIG_IPA_WDI_UNIFIED_API=y
 export CONFIG_RMNET_IPA3=y

+ 0 - 1
config/dataipa_QGKI.conf

@@ -1,5 +1,4 @@
 export CONFIG_GSI=y
-export CONFIG_GSI_REGISTER_VERSION_2=y
 export CONFIG_IPA_CLIENTS_MANAGER=y
 export CONFIG_IPA_WDI_UNIFIED_API=y
 export CONFIG_RMNET_IPA3=y

+ 2 - 1
drivers/platform/msm/Makefile

@@ -27,8 +27,9 @@ endif
 
 DATAIPADRVTOP = $(srctree)/techpack/dataipa/drivers/platform/msm
 
-ifneq (,$(filter $(CONFIG_IPA3),y m))
+ifneq (,$(filter $(CONFIG_IPA3) $(CONFIG_GSI),y m))
 LINUXINCLUDE += -I$(DATAIPADRVTOP)/gsi
+LINUXINCLUDE += -I$(DATAIPADRVTOP)/gsi/gsihal
 LINUXINCLUDE += -I$(DATAIPADRVTOP)/ipa
 LINUXINCLUDE += -I$(DATAIPADRVTOP)/ipa/ipa_v3
 LINUXINCLUDE += -I$(DATAIPADRVTOP)/ipa/ipa_v3/ipahal

+ 1 - 1
drivers/platform/msm/gsi/Makefile

@@ -2,7 +2,7 @@
 
 obj-$(CONFIG_GSI) += gsim.o
 
-gsim-objs := gsi.o
+gsim-objs := gsi.o gsihal/gsihal.o gsihal/gsihal_reg.o
 
 gsim-$(CONFIG_DEBUG_FS) += gsi_dbg.o
 

Dosya farkı çok büyük olduğundan ihmal edildi
+ 226 - 381
drivers/platform/msm/gsi/gsi.c


+ 2 - 4
drivers/platform/msm/gsi/gsi.h

@@ -30,9 +30,6 @@
 #define GSI_NO_EVT_ERINDEX 31
 #define GSI_ISR_CACHE_MAX 20
 
-#define gsi_readl(c)	(readl_relaxed(c))
-#define gsi_writel(v, c)	({ __iowmb(); writel_relaxed((v), (c)); })
-
 #define GSI_IPC_LOGGING(buf, fmt, args...) \
 	do { \
 		if (buf) \
@@ -2037,10 +2034,11 @@ void gsi_wdi3_dump_register(unsigned long chan_hdl);
 
  * @gsi_base_addr: Base address of GSI register space
  * @gsi_size: Mapping size of the GSI register space
+ * @ver: The appropriate GSI version enum
  *
  * @Return gsi_status
  */
-int gsi_map_base(phys_addr_t gsi_base_addr, u32 gsi_size);
+int gsi_map_base(phys_addr_t gsi_base_addr, u32 gsi_size, enum gsi_ver ver);
 
 /**
  * gsi_unmap_base - Peripheral should call this function to undo the

+ 72 - 81
drivers/platform/msm/gsi/gsi_dbg.c

@@ -9,8 +9,8 @@
 #include <linux/random.h>
 #include <linux/uaccess.h>
 #include <linux/msm_gsi.h>
-#include "gsi_reg.h"
 #include "gsi.h"
+#include "gsihal.h"
 
 #define TERR(fmt, args...) \
 		pr_err("%s:%d " fmt, __func__, __LINE__, ## args)
@@ -69,53 +69,53 @@ static ssize_t gsi_dump_evt(struct file *file,
 		return -EINVAL;
 	}
 
-	val = gsi_readl(gsi_ctx->base +
-		GSI_EE_n_EV_CH_k_CNTXT_0_OFFS(arg1, gsi_ctx->per.ee));
+	val = gsihal_read_reg_nk(GSI_EE_n_EV_CH_k_CNTXT_0,
+		gsi_ctx->per.ee, arg1);
 	TERR("EV%2d CTX0  0x%x\n", arg1, val);
-	val = gsi_readl(gsi_ctx->base +
-		GSI_EE_n_EV_CH_k_CNTXT_1_OFFS(arg1, gsi_ctx->per.ee));
+	val = gsihal_read_reg_nk(GSI_EE_n_EV_CH_k_CNTXT_1,
+		gsi_ctx->per.ee, arg1);
 	TERR("EV%2d CTX1  0x%x\n", arg1, val);
-	val = gsi_readl(gsi_ctx->base +
-		GSI_EE_n_EV_CH_k_CNTXT_2_OFFS(arg1, gsi_ctx->per.ee));
+	val = gsihal_read_reg_nk(GSI_EE_n_EV_CH_k_CNTXT_2,
+		gsi_ctx->per.ee, arg1);
 	TERR("EV%2d CTX2  0x%x\n", arg1, val);
-	val = gsi_readl(gsi_ctx->base +
-		GSI_EE_n_EV_CH_k_CNTXT_3_OFFS(arg1, gsi_ctx->per.ee));
+	val = gsihal_read_reg_nk(GSI_EE_n_EV_CH_k_CNTXT_3,
+		gsi_ctx->per.ee, arg1);
 	TERR("EV%2d CTX3  0x%x\n", arg1, val);
-	val = gsi_readl(gsi_ctx->base +
-		GSI_EE_n_EV_CH_k_CNTXT_4_OFFS(arg1, gsi_ctx->per.ee));
+	val = gsihal_read_reg_nk(GSI_EE_n_EV_CH_k_CNTXT_4,
+		gsi_ctx->per.ee, arg1);
 	TERR("EV%2d CTX4  0x%x\n", arg1, val);
-	val = gsi_readl(gsi_ctx->base +
-		GSI_EE_n_EV_CH_k_CNTXT_5_OFFS(arg1, gsi_ctx->per.ee));
+	val = gsihal_read_reg_nk(GSI_EE_n_EV_CH_k_CNTXT_5,
+		gsi_ctx->per.ee, arg1);
 	TERR("EV%2d CTX5  0x%x\n", arg1, val);
-	val = gsi_readl(gsi_ctx->base +
-		GSI_EE_n_EV_CH_k_CNTXT_6_OFFS(arg1, gsi_ctx->per.ee));
+	val = gsihal_read_reg_nk(GSI_EE_n_EV_CH_k_CNTXT_6,
+		gsi_ctx->per.ee, arg1);
 	TERR("EV%2d CTX6  0x%x\n", arg1, val);
-	val = gsi_readl(gsi_ctx->base +
-		GSI_EE_n_EV_CH_k_CNTXT_7_OFFS(arg1, gsi_ctx->per.ee));
+	val = gsihal_read_reg_nk(GSI_EE_n_EV_CH_k_CNTXT_7,
+		gsi_ctx->per.ee, arg1);
 	TERR("EV%2d CTX7  0x%x\n", arg1, val);
-	val = gsi_readl(gsi_ctx->base +
-		GSI_EE_n_EV_CH_k_CNTXT_8_OFFS(arg1, gsi_ctx->per.ee));
+	val = gsihal_read_reg_nk(GSI_EE_n_EV_CH_k_CNTXT_8,
+		gsi_ctx->per.ee, arg1);
 	TERR("EV%2d CTX8  0x%x\n", arg1, val);
-	val = gsi_readl(gsi_ctx->base +
-		GSI_EE_n_EV_CH_k_CNTXT_9_OFFS(arg1, gsi_ctx->per.ee));
+	val = gsihal_read_reg_nk(GSI_EE_n_EV_CH_k_CNTXT_9,
+		gsi_ctx->per.ee, arg1);
 	TERR("EV%2d CTX9  0x%x\n", arg1, val);
-	val = gsi_readl(gsi_ctx->base +
-		GSI_EE_n_EV_CH_k_CNTXT_10_OFFS(arg1, gsi_ctx->per.ee));
+	val = gsihal_read_reg_nk(GSI_EE_n_EV_CH_k_CNTXT_10,
+		gsi_ctx->per.ee, arg1);
 	TERR("EV%2d CTX10 0x%x\n", arg1, val);
-	val = gsi_readl(gsi_ctx->base +
-		GSI_EE_n_EV_CH_k_CNTXT_11_OFFS(arg1, gsi_ctx->per.ee));
+	val = gsihal_read_reg_nk(GSI_EE_n_EV_CH_k_CNTXT_11,
+		gsi_ctx->per.ee, arg1);
 	TERR("EV%2d CTX11 0x%x\n", arg1, val);
-	val = gsi_readl(gsi_ctx->base +
-		GSI_EE_n_EV_CH_k_CNTXT_12_OFFS(arg1, gsi_ctx->per.ee));
+	val = gsihal_read_reg_nk(GSI_EE_n_EV_CH_k_CNTXT_12,
+		gsi_ctx->per.ee, arg1);
 	TERR("EV%2d CTX12 0x%x\n", arg1, val);
-	val = gsi_readl(gsi_ctx->base +
-		GSI_EE_n_EV_CH_k_CNTXT_13_OFFS(arg1, gsi_ctx->per.ee));
+	val = gsihal_read_reg_nk(GSI_EE_n_EV_CH_k_CNTXT_13,
+		gsi_ctx->per.ee, arg1);
 	TERR("EV%2d CTX13 0x%x\n", arg1, val);
-	val = gsi_readl(gsi_ctx->base +
-		GSI_EE_n_EV_CH_k_SCRATCH_0_OFFS(arg1, gsi_ctx->per.ee));
+	val = gsihal_read_reg_nk(GSI_EE_n_EV_CH_k_SCRATCH_0,
+		gsi_ctx->per.ee, arg1);
 	TERR("EV%2d SCR0  0x%x\n", arg1, val);
-	val = gsi_readl(gsi_ctx->base +
-		GSI_EE_n_EV_CH_k_SCRATCH_1_OFFS(arg1, gsi_ctx->per.ee));
+	val = gsihal_read_reg_nk(GSI_EE_n_EV_CH_k_SCRATCH_1,
+		gsi_ctx->per.ee, arg1);
 	TERR("EV%2d SCR1  0x%x\n", arg1, val);
 
 	if (arg2) {
@@ -182,57 +182,50 @@ static ssize_t gsi_dump_ch(struct file *file,
 		return -EINVAL;
 	}
 
-	val = gsi_readl(gsi_ctx->base +
-		GSI_EE_n_GSI_CH_k_CNTXT_0_OFFS(arg1, gsi_ctx->per.ee));
+	val = gsihal_read_reg_nk(GSI_EE_n_GSI_CH_k_CNTXT_0,
+		gsi_ctx->per.ee, arg1);
 	TERR("CH%2d CTX0  0x%x\n", arg1, val);
-	val = gsi_readl(gsi_ctx->base +
-		GSI_EE_n_GSI_CH_k_CNTXT_1_OFFS(arg1, gsi_ctx->per.ee));
+	val = gsihal_read_reg_nk(GSI_EE_n_GSI_CH_k_CNTXT_1,
+		gsi_ctx->per.ee, arg1);
 	TERR("CH%2d CTX1  0x%x\n", arg1, val);
-	val = gsi_readl(gsi_ctx->base +
-		GSI_EE_n_GSI_CH_k_CNTXT_2_OFFS(arg1, gsi_ctx->per.ee));
+	val = gsihal_read_reg_nk(GSI_EE_n_GSI_CH_k_CNTXT_2,
+		gsi_ctx->per.ee, arg1);
 	TERR("CH%2d CTX2  0x%x\n", arg1, val);
-	val = gsi_readl(gsi_ctx->base +
-		GSI_EE_n_GSI_CH_k_CNTXT_3_OFFS(arg1, gsi_ctx->per.ee));
+	val = gsihal_read_reg_nk(GSI_EE_n_GSI_CH_k_CNTXT_3,
+		gsi_ctx->per.ee, arg1);
 	TERR("CH%2d CTX3  0x%x\n", arg1, val);
-	val = gsi_readl(gsi_ctx->base +
-		GSI_EE_n_GSI_CH_k_CNTXT_4_OFFS(arg1, gsi_ctx->per.ee));
+	val = gsihal_read_reg_nk(GSI_EE_n_GSI_CH_k_CNTXT_4,
+		gsi_ctx->per.ee, arg1);
 	TERR("CH%2d CTX4  0x%x\n", arg1, val);
-	val = gsi_readl(gsi_ctx->base +
-		GSI_EE_n_GSI_CH_k_CNTXT_5_OFFS(arg1, gsi_ctx->per.ee));
+	val = gsihal_read_reg_nk(GSI_EE_n_GSI_CH_k_CNTXT_5,
+		gsi_ctx->per.ee, arg1);
 	TERR("CH%2d CTX5  0x%x\n", arg1, val);
-	val = gsi_readl(gsi_ctx->base +
-		GSI_EE_n_GSI_CH_k_CNTXT_6_OFFS(arg1, gsi_ctx->per.ee));
+	val = gsihal_read_reg_nk(GSI_EE_n_GSI_CH_k_CNTXT_6,
+		gsi_ctx->per.ee, arg1);
 	TERR("CH%2d CTX6  0x%x\n", arg1, val);
-	val = gsi_readl(gsi_ctx->base +
-		GSI_EE_n_GSI_CH_k_CNTXT_7_OFFS(arg1, gsi_ctx->per.ee));
+	val = gsihal_read_reg_nk(GSI_EE_n_GSI_CH_k_CNTXT_7,
+		gsi_ctx->per.ee, arg1);
 	TERR("CH%2d CTX7  0x%x\n", arg1, val);
-	val = gsi_readl(gsi_ctx->base +
-		GSI_EE_n_GSI_CH_k_RE_FETCH_READ_PTR_OFFS(arg1,
-			gsi_ctx->per.ee));
+	val = gsihal_read_reg_nk(GSI_EE_n_GSI_CH_k_RE_FETCH_READ_PTR,
+		gsi_ctx->per.ee, arg1);
 	TERR("CH%2d REFRP 0x%x\n", arg1, val);
-	val = gsi_readl(gsi_ctx->base +
-		GSI_EE_n_GSI_CH_k_RE_FETCH_WRITE_PTR_OFFS(arg1,
-			gsi_ctx->per.ee));
+	val = gsihal_read_reg_nk(GSI_EE_n_GSI_CH_k_RE_FETCH_WRITE_PTR,
+		gsi_ctx->per.ee, arg1);
 	TERR("CH%2d REFWP 0x%x\n", arg1, val);
-	if (gsi_ctx->per.ver >= GSI_VER_2_5) {
-		val = gsi_readl(gsi_ctx->base +
-			GSI_V2_5_EE_n_GSI_CH_k_QOS_OFFS(arg1, gsi_ctx->per.ee));
-	} else {
-		val = gsi_readl(gsi_ctx->base +
-			GSI_EE_n_GSI_CH_k_QOS_OFFS(arg1, gsi_ctx->per.ee));
-	}
+	val = gsihal_read_reg_nk(GSI_EE_n_GSI_CH_k_QOS,
+		gsi_ctx->per.ee, arg1);
 	TERR("CH%2d QOS   0x%x\n", arg1, val);
-	val = gsi_readl(gsi_ctx->base +
-		GSI_EE_n_GSI_CH_k_SCRATCH_0_OFFS(arg1, gsi_ctx->per.ee));
+	val = gsihal_read_reg_nk(GSI_EE_n_GSI_CH_k_SCRATCH_0,
+		gsi_ctx->per.ee, arg1);
 	TERR("CH%2d SCR0  0x%x\n", arg1, val);
-	val = gsi_readl(gsi_ctx->base +
-		GSI_EE_n_GSI_CH_k_SCRATCH_1_OFFS(arg1, gsi_ctx->per.ee));
+	val = gsihal_read_reg_nk(GSI_EE_n_GSI_CH_k_SCRATCH_1,
+		gsi_ctx->per.ee, arg1);
 	TERR("CH%2d SCR1  0x%x\n", arg1, val);
-	val = gsi_readl(gsi_ctx->base +
-		GSI_EE_n_GSI_CH_k_SCRATCH_2_OFFS(arg1, gsi_ctx->per.ee));
+	val = gsihal_read_reg_nk(GSI_EE_n_GSI_CH_k_SCRATCH_2,
+		gsi_ctx->per.ee, arg1);
 	TERR("CH%2d SCR2  0x%x\n", arg1, val);
-	val = gsi_readl(gsi_ctx->base +
-		GSI_EE_n_GSI_CH_k_SCRATCH_3_OFFS(arg1, gsi_ctx->per.ee));
+	val = gsihal_read_reg_nk(GSI_EE_n_GSI_CH_k_SCRATCH_3,
+		gsi_ctx->per.ee, arg1);
 	TERR("CH%2d SCR3  0x%x\n", arg1, val);
 
 	if (arg2) {
@@ -482,17 +475,15 @@ static void gsi_dbg_update_ch_dp_stats(struct gsi_chan_ctx *ctx)
 	int ee = gsi_ctx->per.ee;
 	uint16_t used_hw;
 
-	rp_hw = gsi_readl(gsi_ctx->base +
-		GSI_EE_n_GSI_CH_k_CNTXT_4_OFFS(ctx->props.ch_id, ee));
-	rp_hw |= ((uint64_t)gsi_readl(gsi_ctx->base +
-		GSI_EE_n_GSI_CH_k_CNTXT_5_OFFS(ctx->props.ch_id, ee)))
-		<< 32;
-
-	wp_hw = gsi_readl(gsi_ctx->base +
-		GSI_EE_n_GSI_CH_k_CNTXT_6_OFFS(ctx->props.ch_id, ee));
-	wp_hw |= ((uint64_t)gsi_readl(gsi_ctx->base +
-		GSI_EE_n_GSI_CH_k_CNTXT_7_OFFS(ctx->props.ch_id, ee)))
-		<< 32;
+	rp_hw = gsihal_read_reg_nk(GSI_EE_n_GSI_CH_k_CNTXT_4,
+		ee, ctx->props.ch_id);
+	rp_hw |= ((uint64_t)gsihal_read_reg_nk(GSI_EE_n_GSI_CH_k_CNTXT_5,
+		ee, ctx->props.ch_id)) << 32;
+
+	wp_hw = gsihal_read_reg_nk(GSI_EE_n_GSI_CH_k_CNTXT_6,
+		ee, ctx->props.ch_id);
+	wp_hw |= ((uint64_t)gsihal_read_reg_nk(GSI_EE_n_GSI_CH_k_CNTXT_7,
+		ee, ctx->props.ch_id)) << 32;
 
 	start_hw = gsi_find_idx_from_addr(&ctx->ring, rp_hw);
 	end_hw = gsi_find_idx_from_addr(&ctx->ring, wp_hw);

+ 0 - 1
drivers/platform/msm/gsi/gsi_emulation.h

@@ -9,7 +9,6 @@
 # include <linux/interrupt.h>
 
 # include "gsi.h"
-# include "gsi_reg.h"
 
 #if defined(CONFIG_IPA_EMULATION)
 # include "gsi_emulation_stubs.h"

+ 0 - 30
drivers/platform/msm/gsi/gsi_reg.h

@@ -1,30 +0,0 @@
-/* SPDX-License-Identifier: GPL-2.0-only */
-/*
- * Copyright (c) 2015-2019, The Linux Foundation. All rights reserved.
- */
-
-#ifndef __GSI_REG_H__
-#define __GSI_REG_H__
-
-enum gsi_register_ver {
-	GSI_REGISTER_VER_1 = 0,
-	GSI_REGISTER_VER_2 = 1,
-	GSI_REGISTER_MAX,
-};
-
-#ifdef GSI_REGISTER_VER_CURRENT
-#error GSI_REGISTER_VER_CURRENT already defined
-#endif
-
-#ifdef CONFIG_GSI_REGISTER_VERSION_2
-#include "gsi_reg_v2.h"
-#define GSI_REGISTER_VER_CURRENT GSI_REGISTER_VER_2
-#endif
-
-/* The default is V1 */
-#ifndef GSI_REGISTER_VER_CURRENT
-#include "gsi_reg_v1.h"
-#define GSI_REGISTER_VER_CURRENT GSI_REGISTER_VER_1
-#endif
-
-#endif /* __GSI_REG_H__ */

+ 0 - 1098
drivers/platform/msm/gsi/gsi_reg_v1.h

@@ -1,1098 +0,0 @@
-/* SPDX-License-Identifier: GPL-2.0-only */
-/*
- * Copyright (c) 2015-2019, The Linux Foundation. All rights reserved.
- */
-
-#ifndef __GSI_REG_V1_H__
-#define __GSI_REG_V1_H__
-
-#define GSI_GSI_REG_BASE_OFFS 0
-
-#define GSI_GSI_CFG_OFFS \
-	(GSI_GSI_REG_BASE_OFFS + 0x00000000)
-#define GSI_V2_5_GSI_CFG_SLEEP_CLK_DIV_BMSK 0xf00
-#define GSI_V2_5_GSI_CFG_SLEEP_CLK_DIV_SHFT 0x8
-#define GSI_GSI_CFG_BP_MTRIX_DISABLE_BMSK 0x20
-#define GSI_GSI_CFG_BP_MTRIX_DISABLE_SHFT 0x5
-#define GSI_GSI_CFG_GSI_PWR_CLPS_BMSK 0x10
-#define GSI_GSI_CFG_GSI_PWR_CLPS_SHFT 0x4
-#define GSI_GSI_CFG_UC_IS_MCS_BMSK 0x8
-#define GSI_GSI_CFG_UC_IS_MCS_SHFT 0x3
-#define GSI_GSI_CFG_DOUBLE_MCS_CLK_FREQ_BMSK 0x4
-#define GSI_GSI_CFG_DOUBLE_MCS_CLK_FREQ_SHFT 0x2
-#define GSI_GSI_CFG_MCS_ENABLE_BMSK 0x2
-#define GSI_GSI_CFG_MCS_ENABLE_SHFT 0x1
-#define GSI_GSI_CFG_GSI_ENABLE_BMSK 0x1
-#define GSI_GSI_CFG_GSI_ENABLE_SHFT 0x0
-
-#define GSI_GSI_MCS_CFG_OFFS \
-	(GSI_GSI_REG_BASE_OFFS + 0x0000B000)
-#define GSI_GSI_MCS_CFG_MCS_ENABLE_BMSK 0x1
-#define GSI_GSI_MCS_CFG_MCS_ENABLE_SHFT 0x0
-
-#define GSI_GSI_PERIPH_BASE_ADDR_LSB_OFFS \
-	(GSI_GSI_REG_BASE_OFFS + 0x00000018)
-#define GSI_GSI_PERIPH_BASE_ADDR_LSB_RMSK 0xffffffff
-#define GSI_GSI_PERIPH_BASE_ADDR_LSB_BASE_ADDR_BMSK 0xffffffff
-#define GSI_GSI_PERIPH_BASE_ADDR_LSB_BASE_ADDR_SHFT 0x0
-
-#define GSI_GSI_PERIPH_BASE_ADDR_MSB_OFFS \
-	(GSI_GSI_REG_BASE_OFFS + 0x0000001c)
-#define GSI_GSI_PERIPH_BASE_ADDR_MSB_RMSK 0xffffffff
-#define GSI_GSI_PERIPH_BASE_ADDR_MSB_BASE_ADDR_BMSK 0xffffffff
-#define GSI_GSI_PERIPH_BASE_ADDR_MSB_BASE_ADDR_SHFT 0x0
-
-#define GSI_IC_DISABLE_CHNL_BCK_PRS_LSB_OFFS \
-	(GSI_GSI_REG_BASE_OFFS + 0x000000a0)
-#define GSI_IC_DISABLE_CHNL_BCK_PRS_LSB_RMSK 0x3ffc1047
-#define GSI_IC_DISABLE_CHNL_BCK_PRS_LSB_TLV_INT_BMSK 0x3f000000
-#define GSI_IC_DISABLE_CHNL_BCK_PRS_LSB_TLV_INT_SHFT 0x18
-#define GSI_IC_DISABLE_CHNL_BCK_PRS_LSB_CSR_INT_BMSK 0xfc0000
-#define GSI_IC_DISABLE_CHNL_BCK_PRS_LSB_CSR_INT_SHFT 0x12
-#define GSI_IC_DISABLE_CHNL_BCK_PRS_LSB_INT_END_INT_BMSK 0x1000
-#define GSI_IC_DISABLE_CHNL_BCK_PRS_LSB_INT_END_INT_SHFT 0xc
-#define GSI_IC_DISABLE_CHNL_BCK_PRS_LSB_EV_ENG_INT_BMSK 0x40
-#define GSI_IC_DISABLE_CHNL_BCK_PRS_LSB_EV_ENG_INT_SHFT 0x6
-#define GSI_IC_DISABLE_CHNL_BCK_PRS_LSB_REE_INT_BMSK 0x7
-#define GSI_IC_DISABLE_CHNL_BCK_PRS_LSB_REE_INT_SHFT 0x0
-
-#define GSI_IC_DISABLE_CHNL_BCK_PRS_MSB_OFFS \
-	(GSI_GSI_REG_BASE_OFFS + 0x000000a4)
-#define GSI_IC_DISABLE_CHNL_BCK_PRS_MSB_RMSK 0xfc3041
-#define GSI_IC_DISABLE_CHNL_BCK_PRS_MSB_UCONTROLLER_INT_BMSK 0xfc0000
-#define GSI_IC_DISABLE_CHNL_BCK_PRS_MSB_UCONTROLLER_INT_SHFT 0x12
-#define GSI_IC_DISABLE_CHNL_BCK_PRS_MSB_RD_WR_INT_BMSK 0x3000
-#define GSI_IC_DISABLE_CHNL_BCK_PRS_MSB_RD_WR_INT_SHFT 0xc
-#define GSI_IC_DISABLE_CHNL_BCK_PRS_MSB_DB_ENG_INT_BMSK 0x40
-#define GSI_IC_DISABLE_CHNL_BCK_PRS_MSB_DB_ENG_INT_SHFT 0x6
-#define GSI_IC_DISABLE_CHNL_BCK_PRS_MSB_TIMER_INT_BMSK 0x1
-#define GSI_IC_DISABLE_CHNL_BCK_PRS_MSB_TIMER_INT_SHFT 0x0
-
-#define GSI_IC_GEN_EVNT_BCK_PRS_LSB_OFFS \
-	(GSI_GSI_REG_BASE_OFFS + 0x000000a8)
-#define GSI_IC_GEN_EVNT_BCK_PRS_LSB_RMSK 0x3ffc1047
-#define GSI_IC_GEN_EVNT_BCK_PRS_LSB_TLV_INT_BMSK 0x3f000000
-#define GSI_IC_GEN_EVNT_BCK_PRS_LSB_TLV_INT_SHFT 0x18
-#define GSI_IC_GEN_EVNT_BCK_PRS_LSB_CSR_INT_BMSK 0xfc0000
-#define GSI_IC_GEN_EVNT_BCK_PRS_LSB_CSR_INT_SHFT 0x12
-#define GSI_IC_GEN_EVNT_BCK_PRS_LSB_INT_END_INT_BMSK 0x1000
-#define GSI_IC_GEN_EVNT_BCK_PRS_LSB_INT_END_INT_SHFT 0xc
-#define GSI_IC_GEN_EVNT_BCK_PRS_LSB_EV_ENG_INT_BMSK 0x40
-#define GSI_IC_GEN_EVNT_BCK_PRS_LSB_EV_ENG_INT_SHFT 0x6
-#define GSI_IC_GEN_EVNT_BCK_PRS_LSB_REE_INT_BMSK 0x7
-#define GSI_IC_GEN_EVNT_BCK_PRS_LSB_REE_INT_SHFT 0x0
-
-#define GSI_IC_GEN_EVNT_BCK_PRS_MSB_OFFS \
-	(GSI_GSI_REG_BASE_OFFS + 0x000000ac)
-#define GSI_IC_GEN_EVNT_BCK_PRS_MSB_RMSK 0xfc3041
-#define GSI_IC_GEN_EVNT_BCK_PRS_MSB_UCONTROLLER_INT_BMSK 0xfc0000
-#define GSI_IC_GEN_EVNT_BCK_PRS_MSB_UCONTROLLER_INT_SHFT 0x12
-#define GSI_IC_GEN_EVNT_BCK_PRS_MSB_RD_WR_INT_BMSK 0x3000
-#define GSI_IC_GEN_EVNT_BCK_PRS_MSB_RD_WR_INT_SHFT 0xc
-#define GSI_IC_GEN_EVNT_BCK_PRS_MSB_DB_ENG_INT_BMSK 0x40
-#define GSI_IC_GEN_EVNT_BCK_PRS_MSB_DB_ENG_INT_SHFT 0x6
-#define GSI_IC_GEN_EVNT_BCK_PRS_MSB_TIMER_INT_BMSK 0x1
-#define GSI_IC_GEN_EVNT_BCK_PRS_MSB_TIMER_INT_SHFT 0x0
-
-#define GSI_IC_GEN_INT_BCK_PRS_LSB_OFFS \
-	(GSI_GSI_REG_BASE_OFFS + 0x000000b0)
-#define GSI_IC_GEN_INT_BCK_PRS_LSB_RMSK 0x3ffc1047
-#define GSI_IC_GEN_INT_BCK_PRS_LSB_TLV_INT_BMSK 0x3f000000
-#define GSI_IC_GEN_INT_BCK_PRS_LSB_TLV_INT_SHFT 0x18
-#define GSI_IC_GEN_INT_BCK_PRS_LSB_CSR_INT_BMSK 0xfc0000
-#define GSI_IC_GEN_INT_BCK_PRS_LSB_CSR_INT_SHFT 0x12
-#define GSI_IC_GEN_INT_BCK_PRS_LSB_INT_END_INT_BMSK 0x1000
-#define GSI_IC_GEN_INT_BCK_PRS_LSB_INT_END_INT_SHFT 0xc
-#define GSI_IC_GEN_INT_BCK_PRS_LSB_EV_ENG_INT_BMSK 0x40
-#define GSI_IC_GEN_INT_BCK_PRS_LSB_EV_ENG_INT_SHFT 0x6
-#define GSI_IC_GEN_INT_BCK_PRS_LSB_REE_INT_BMSK 0x7
-#define GSI_IC_GEN_INT_BCK_PRS_LSB_REE_INT_SHFT 0x0
-
-#define GSI_IC_GEN_INT_BCK_PRS_MSB_OFFS \
-	(GSI_GSI_REG_BASE_OFFS + 0x000000b4)
-#define GSI_IC_GEN_INT_BCK_PRS_MSB_RMSK 0xfc3041
-#define GSI_IC_GEN_INT_BCK_PRS_MSB_UCONTROLLER_INT_BMSK 0xfc0000
-#define GSI_IC_GEN_INT_BCK_PRS_MSB_UCONTROLLER_INT_SHFT 0x12
-#define GSI_IC_GEN_INT_BCK_PRS_MSB_RD_WR_INT_BMSK 0x3000
-#define GSI_IC_GEN_INT_BCK_PRS_MSB_RD_WR_INT_SHFT 0xc
-#define GSI_IC_GEN_INT_BCK_PRS_MSB_DB_ENG_INT_BMSK 0x40
-#define GSI_IC_GEN_INT_BCK_PRS_MSB_DB_ENG_INT_SHFT 0x6
-#define GSI_IC_GEN_INT_BCK_PRS_MSB_TIMER_INT_BMSK 0x1
-#define GSI_IC_GEN_INT_BCK_PRS_MSB_TIMER_INT_SHFT 0x0
-
-#define GSI_IC_STOP_INT_MOD_BCK_PRS_LSB_OFFS \
-	(GSI_GSI_REG_BASE_OFFS + 0x000000b8)
-#define GSI_IC_STOP_INT_MOD_BCK_PRS_LSB_RMSK 0x3ffc1047
-#define GSI_IC_STOP_INT_MOD_BCK_PRS_LSB_TLV_INT_BMSK 0x3f000000
-#define GSI_IC_STOP_INT_MOD_BCK_PRS_LSB_TLV_INT_SHFT 0x18
-#define GSI_IC_STOP_INT_MOD_BCK_PRS_LSB_CSR_INT_BMSK 0xfc0000
-#define GSI_IC_STOP_INT_MOD_BCK_PRS_LSB_CSR_INT_SHFT 0x12
-#define GSI_IC_STOP_INT_MOD_BCK_PRS_LSB_INT_END_INT_BMSK 0x1000
-#define GSI_IC_STOP_INT_MOD_BCK_PRS_LSB_INT_END_INT_SHFT 0xc
-#define GSI_IC_STOP_INT_MOD_BCK_PRS_LSB_EV_ENG_INT_BMSK 0x40
-#define GSI_IC_STOP_INT_MOD_BCK_PRS_LSB_EV_ENG_INT_SHFT 0x6
-#define GSI_IC_STOP_INT_MOD_BCK_PRS_LSB_REE_INT_BMSK 0x7
-#define GSI_IC_STOP_INT_MOD_BCK_PRS_LSB_REE_INT_SHFT 0x0
-
-#define GSI_IC_STOP_INT_MOD_BCK_PRS_MSB_OFFS \
-	(GSI_GSI_REG_BASE_OFFS + 0x000000bc)
-#define GSI_IC_STOP_INT_MOD_BCK_PRS_MSB_RMSK 0xfc3041
-#define GSI_IC_STOP_INT_MOD_BCK_PRS_MSB_UCONTROLLER_INT_BMSK 0xfc0000
-#define GSI_IC_STOP_INT_MOD_BCK_PRS_MSB_UCONTROLLER_INT_SHFT 0x12
-#define GSI_IC_STOP_INT_MOD_BCK_PRS_MSB_RD_WR_INT_BMSK 0x3000
-#define GSI_IC_STOP_INT_MOD_BCK_PRS_MSB_RD_WR_INT_SHFT 0xc
-#define GSI_IC_STOP_INT_MOD_BCK_PRS_MSB_DB_ENG_INT_BMSK 0x40
-#define GSI_IC_STOP_INT_MOD_BCK_PRS_MSB_DB_ENG_INT_SHFT 0x6
-#define GSI_IC_STOP_INT_MOD_BCK_PRS_MSB_TIMER_INT_BMSK 0x1
-#define GSI_IC_STOP_INT_MOD_BCK_PRS_MSB_TIMER_INT_SHFT 0x0
-
-#define GSI_IC_PROCESS_DESC_BCK_PRS_LSB_OFFS \
-	(GSI_GSI_REG_BASE_OFFS + 0x000000c0)
-#define GSI_IC_PROCESS_DESC_BCK_PRS_LSB_RMSK 0x3ffc1047
-#define GSI_IC_PROCESS_DESC_BCK_PRS_LSB_TLV_INT_BMSK 0x3f000000
-#define GSI_IC_PROCESS_DESC_BCK_PRS_LSB_TLV_INT_SHFT 0x18
-#define GSI_IC_PROCESS_DESC_BCK_PRS_LSB_CSR_INT_BMSK 0xfc0000
-#define GSI_IC_PROCESS_DESC_BCK_PRS_LSB_CSR_INT_SHFT 0x12
-#define GSI_IC_PROCESS_DESC_BCK_PRS_LSB_INT_END_INT_BMSK 0x1000
-#define GSI_IC_PROCESS_DESC_BCK_PRS_LSB_INT_END_INT_SHFT 0xc
-#define GSI_IC_PROCESS_DESC_BCK_PRS_LSB_EV_ENG_INT_BMSK 0x40
-#define GSI_IC_PROCESS_DESC_BCK_PRS_LSB_EV_ENG_INT_SHFT 0x6
-#define GSI_IC_PROCESS_DESC_BCK_PRS_LSB_REE_INT_BMSK 0x7
-#define GSI_IC_PROCESS_DESC_BCK_PRS_LSB_REE_INT_SHFT 0x0
-
-#define GSI_IC_PROCESS_DESC_BCK_PRS_MSB_OFFS \
-	(GSI_GSI_REG_BASE_OFFS + 0x000000c4)
-#define GSI_IC_PROCESS_DESC_BCK_PRS_MSB_RMSK 0xfc3041
-#define GSI_IC_PROCESS_DESC_BCK_PRS_MSB_UCONTROLLER_INT_BMSK 0xfc0000
-#define GSI_IC_PROCESS_DESC_BCK_PRS_MSB_UCONTROLLER_INT_SHFT 0x12
-#define GSI_IC_PROCESS_DESC_BCK_PRS_MSB_RD_WR_INT_BMSK 0x3000
-#define GSI_IC_PROCESS_DESC_BCK_PRS_MSB_RD_WR_INT_SHFT 0xc
-#define GSI_IC_PROCESS_DESC_BCK_PRS_MSB_DB_ENG_INT_BMSK 0x40
-#define GSI_IC_PROCESS_DESC_BCK_PRS_MSB_DB_ENG_INT_SHFT 0x6
-#define GSI_IC_PROCESS_DESC_BCK_PRS_MSB_TIMER_INT_BMSK 0x1
-#define GSI_IC_PROCESS_DESC_BCK_PRS_MSB_TIMER_INT_SHFT 0x0
-
-#define GSI_IC_TLV_STOP_BCK_PRS_LSB_OFFS \
-	(GSI_GSI_REG_BASE_OFFS + 0x000000c8)
-#define GSI_IC_TLV_STOP_BCK_PRS_LSB_RMSK 0x3ffc1047
-#define GSI_IC_TLV_STOP_BCK_PRS_LSB_TLV_INT_BMSK 0x3f000000
-#define GSI_IC_TLV_STOP_BCK_PRS_LSB_TLV_INT_SHFT 0x18
-#define GSI_IC_TLV_STOP_BCK_PRS_LSB_CSR_INT_BMSK 0xfc0000
-#define GSI_IC_TLV_STOP_BCK_PRS_LSB_CSR_INT_SHFT 0x12
-#define GSI_IC_TLV_STOP_BCK_PRS_LSB_INT_END_INT_BMSK 0x1000
-#define GSI_IC_TLV_STOP_BCK_PRS_LSB_INT_END_INT_SHFT 0xc
-#define GSI_IC_TLV_STOP_BCK_PRS_LSB_EV_ENG_INT_BMSK 0x40
-#define GSI_IC_TLV_STOP_BCK_PRS_LSB_EV_ENG_INT_SHFT 0x6
-#define GSI_IC_TLV_STOP_BCK_PRS_LSB_REE_INT_BMSK 0x7
-#define GSI_IC_TLV_STOP_BCK_PRS_LSB_REE_INT_SHFT 0x0
-
-#define GSI_IC_TLV_STOP_BCK_PRS_MSB_OFFS \
-	(GSI_GSI_REG_BASE_OFFS + 0x000000cc)
-#define GSI_IC_TLV_STOP_BCK_PRS_MSB_RMSK 0xfc3041
-#define GSI_IC_TLV_STOP_BCK_PRS_MSB_UCONTROLLER_INT_BMSK 0xfc0000
-#define GSI_IC_TLV_STOP_BCK_PRS_MSB_UCONTROLLER_INT_SHFT 0x12
-#define GSI_IC_TLV_STOP_BCK_PRS_MSB_RD_WR_INT_BMSK 0x3000
-#define GSI_IC_TLV_STOP_BCK_PRS_MSB_RD_WR_INT_SHFT 0xc
-#define GSI_IC_TLV_STOP_BCK_PRS_MSB_DB_ENG_INT_BMSK 0x40
-#define GSI_IC_TLV_STOP_BCK_PRS_MSB_DB_ENG_INT_SHFT 0x6
-#define GSI_IC_TLV_STOP_BCK_PRS_MSB_TIMER_INT_BMSK 0x1
-#define GSI_IC_TLV_STOP_BCK_PRS_MSB_TIMER_INT_SHFT 0x0
-
-#define GSI_IC_TLV_RESET_BCK_PRS_LSB_OFFS \
-	(GSI_GSI_REG_BASE_OFFS + 0x000000d0)
-#define GSI_IC_TLV_RESET_BCK_PRS_LSB_RMSK 0x3ffc1047
-#define GSI_IC_TLV_RESET_BCK_PRS_LSB_TLV_INT_BMSK 0x3f000000
-#define GSI_IC_TLV_RESET_BCK_PRS_LSB_TLV_INT_SHFT 0x18
-#define GSI_IC_TLV_RESET_BCK_PRS_LSB_CSR_INT_BMSK 0xfc0000
-#define GSI_IC_TLV_RESET_BCK_PRS_LSB_CSR_INT_SHFT 0x12
-#define GSI_IC_TLV_RESET_BCK_PRS_LSB_INT_END_INT_BMSK 0x1000
-#define GSI_IC_TLV_RESET_BCK_PRS_LSB_INT_END_INT_SHFT 0xc
-#define GSI_IC_TLV_RESET_BCK_PRS_LSB_EV_ENG_INT_BMSK 0x40
-#define GSI_IC_TLV_RESET_BCK_PRS_LSB_EV_ENG_INT_SHFT 0x6
-#define GSI_IC_TLV_RESET_BCK_PRS_LSB_REE_INT_BMSK 0x7
-#define GSI_IC_TLV_RESET_BCK_PRS_LSB_REE_INT_SHFT 0x0
-
-#define GSI_IC_TLV_RESET_BCK_PRS_MSB_OFFS \
-	(GSI_GSI_REG_BASE_OFFS + 0x000000d4)
-#define GSI_IC_TLV_RESET_BCK_PRS_MSB_RMSK 0xfc3041
-#define GSI_IC_TLV_RESET_BCK_PRS_MSB_UCONTROLLER_INT_BMSK 0xfc0000
-#define GSI_IC_TLV_RESET_BCK_PRS_MSB_UCONTROLLER_INT_SHFT 0x12
-#define GSI_IC_TLV_RESET_BCK_PRS_MSB_RD_WR_INT_BMSK 0x3000
-#define GSI_IC_TLV_RESET_BCK_PRS_MSB_RD_WR_INT_SHFT 0xc
-#define GSI_IC_TLV_RESET_BCK_PRS_MSB_DB_ENG_INT_BMSK 0x40
-#define GSI_IC_TLV_RESET_BCK_PRS_MSB_DB_ENG_INT_SHFT 0x6
-#define GSI_IC_TLV_RESET_BCK_PRS_MSB_TIMER_INT_BMSK 0x1
-#define GSI_IC_TLV_RESET_BCK_PRS_MSB_TIMER_INT_SHFT 0x0
-
-#define GSI_IC_RGSTR_TIMER_BCK_PRS_LSB_OFFS \
-	(GSI_GSI_REG_BASE_OFFS + 0x000000d8)
-#define GSI_IC_RGSTR_TIMER_BCK_PRS_LSB_RMSK 0x3ffc1047
-#define GSI_IC_RGSTR_TIMER_BCK_PRS_LSB_TLV_INT_BMSK 0x3f000000
-#define GSI_IC_RGSTR_TIMER_BCK_PRS_LSB_TLV_INT_SHFT 0x18
-#define GSI_IC_RGSTR_TIMER_BCK_PRS_LSB_CSR_INT_BMSK 0xfc0000
-#define GSI_IC_RGSTR_TIMER_BCK_PRS_LSB_CSR_INT_SHFT 0x12
-#define GSI_IC_RGSTR_TIMER_BCK_PRS_LSB_INT_END_INT_BMSK 0x1000
-#define GSI_IC_RGSTR_TIMER_BCK_PRS_LSB_INT_END_INT_SHFT 0xc
-#define GSI_IC_RGSTR_TIMER_BCK_PRS_LSB_EV_ENG_INT_BMSK 0x40
-#define GSI_IC_RGSTR_TIMER_BCK_PRS_LSB_EV_ENG_INT_SHFT 0x6
-#define GSI_IC_RGSTR_TIMER_BCK_PRS_LSB_REE_INT_BMSK 0x7
-#define GSI_IC_RGSTR_TIMER_BCK_PRS_LSB_REE_INT_SHFT 0x0
-
-#define GSI_IC_RGSTR_TIMER_BCK_PRS_MSB_OFFS \
-	(GSI_GSI_REG_BASE_OFFS + 0x000000dc)
-#define GSI_IC_RGSTR_TIMER_BCK_PRS_MSB_RMSK 0xfc3041
-#define GSI_IC_RGSTR_TIMER_BCK_PRS_MSB_UCONTROLLER_INT_BMSK 0xfc0000
-#define GSI_IC_RGSTR_TIMER_BCK_PRS_MSB_UCONTROLLER_INT_SHFT 0x12
-#define GSI_IC_RGSTR_TIMER_BCK_PRS_MSB_RD_WR_INT_BMSK 0x3000
-#define GSI_IC_RGSTR_TIMER_BCK_PRS_MSB_RD_WR_INT_SHFT 0xc
-#define GSI_IC_RGSTR_TIMER_BCK_PRS_MSB_DB_ENG_INT_BMSK 0x40
-#define GSI_IC_RGSTR_TIMER_BCK_PRS_MSB_DB_ENG_INT_SHFT 0x6
-#define GSI_IC_RGSTR_TIMER_BCK_PRS_MSB_TIMER_INT_BMSK 0x1
-#define GSI_IC_RGSTR_TIMER_BCK_PRS_MSB_TIMER_INT_SHFT 0x0
-
-#define GSI_IC_READ_BCK_PRS_LSB_OFFS \
-	(GSI_GSI_REG_BASE_OFFS + 0x000000e0)
-#define GSI_IC_READ_BCK_PRS_LSB_RMSK 0x3ffc1047
-#define GSI_IC_READ_BCK_PRS_LSB_TLV_INT_BMSK 0x3f000000
-#define GSI_IC_READ_BCK_PRS_LSB_TLV_INT_SHFT 0x18
-#define GSI_IC_READ_BCK_PRS_LSB_CSR_INT_BMSK 0xfc0000
-#define GSI_IC_READ_BCK_PRS_LSB_CSR_INT_SHFT 0x12
-#define GSI_IC_READ_BCK_PRS_LSB_INT_END_INT_BMSK 0x1000
-#define GSI_IC_READ_BCK_PRS_LSB_INT_END_INT_SHFT 0xc
-#define GSI_IC_READ_BCK_PRS_LSB_EV_ENG_INT_BMSK 0x40
-#define GSI_IC_READ_BCK_PRS_LSB_EV_ENG_INT_SHFT 0x6
-#define GSI_IC_READ_BCK_PRS_LSB_REE_INT_BMSK 0x7
-#define GSI_IC_READ_BCK_PRS_LSB_REE_INT_SHFT 0x0
-
-#define GSI_IC_READ_BCK_PRS_MSB_OFFS \
-	(GSI_GSI_REG_BASE_OFFS + 0x000000e4)
-#define GSI_IC_READ_BCK_PRS_MSB_RMSK 0xfc3041
-#define GSI_IC_READ_BCK_PRS_MSB_UCONTROLLER_INT_BMSK 0xfc0000
-#define GSI_IC_READ_BCK_PRS_MSB_UCONTROLLER_INT_SHFT 0x12
-#define GSI_IC_READ_BCK_PRS_MSB_RD_WR_INT_BMSK 0x3000
-#define GSI_IC_READ_BCK_PRS_MSB_RD_WR_INT_SHFT 0xc
-#define GSI_IC_READ_BCK_PRS_MSB_DB_ENG_INT_BMSK 0x40
-#define GSI_IC_READ_BCK_PRS_MSB_DB_ENG_INT_SHFT 0x6
-#define GSI_IC_READ_BCK_PRS_MSB_TIMER_INT_BMSK 0x1
-#define GSI_IC_READ_BCK_PRS_MSB_TIMER_INT_SHFT 0x0
-
-#define GSI_IC_WRITE_BCK_PRS_LSB_OFFS \
-	(GSI_GSI_REG_BASE_OFFS + 0x000000e8)
-#define GSI_IC_WRITE_BCK_PRS_LSB_RMSK 0x3ffc1047
-#define GSI_IC_WRITE_BCK_PRS_LSB_TLV_INT_BMSK 0x3f000000
-#define GSI_IC_WRITE_BCK_PRS_LSB_TLV_INT_SHFT 0x18
-#define GSI_IC_WRITE_BCK_PRS_LSB_CSR_INT_BMSK 0xfc0000
-#define GSI_IC_WRITE_BCK_PRS_LSB_CSR_INT_SHFT 0x12
-#define GSI_IC_WRITE_BCK_PRS_LSB_INT_END_INT_BMSK 0x1000
-#define GSI_IC_WRITE_BCK_PRS_LSB_INT_END_INT_SHFT 0xc
-#define GSI_IC_WRITE_BCK_PRS_LSB_EV_ENG_INT_BMSK 0x40
-#define GSI_IC_WRITE_BCK_PRS_LSB_EV_ENG_INT_SHFT 0x6
-#define GSI_IC_WRITE_BCK_PRS_LSB_REE_INT_BMSK 0x7
-#define GSI_IC_WRITE_BCK_PRS_LSB_REE_INT_SHFT 0x0
-
-#define GSI_IC_WRITE_BCK_PRS_MSB_OFFS \
-	(GSI_GSI_REG_BASE_OFFS + 0x000000ec)
-#define GSI_IC_WRITE_BCK_PRS_MSB_RMSK 0xfc3041
-#define GSI_IC_WRITE_BCK_PRS_MSB_UCONTROLLER_INT_BMSK 0xfc0000
-#define GSI_IC_WRITE_BCK_PRS_MSB_UCONTROLLER_INT_SHFT 0x12
-#define GSI_IC_WRITE_BCK_PRS_MSB_RD_WR_INT_BMSK 0x3000
-#define GSI_IC_WRITE_BCK_PRS_MSB_RD_WR_INT_SHFT 0xc
-#define GSI_IC_WRITE_BCK_PRS_MSB_DB_ENG_INT_BMSK 0x40
-#define GSI_IC_WRITE_BCK_PRS_MSB_DB_ENG_INT_SHFT 0x6
-#define GSI_IC_WRITE_BCK_PRS_MSB_TIMER_INT_BMSK 0x1
-#define GSI_IC_WRITE_BCK_PRS_MSB_TIMER_INT_SHFT 0x0
-
-#define GSI_IC_UCONTROLLER_GPR_BCK_PRS_LSB_OFFS \
-	(GSI_GSI_REG_BASE_OFFS + 0x000000f0)
-#define GSI_IC_UCONTROLLER_GPR_BCK_PRS_LSB_RMSK 0x3ffc1047
-#define GSI_IC_UCONTROLLER_GPR_BCK_PRS_LSB_TLV_INT_BMSK 0x3f000000
-#define GSI_IC_UCONTROLLER_GPR_BCK_PRS_LSB_TLV_INT_SHFT 0x18
-#define GSI_IC_UCONTROLLER_GPR_BCK_PRS_LSB_CSR_INT_BMSK 0xfc0000
-#define GSI_IC_UCONTROLLER_GPR_BCK_PRS_LSB_CSR_INT_SHFT 0x12
-#define GSI_IC_UCONTROLLER_GPR_BCK_PRS_LSB_INT_END_INT_BMSK 0x1000
-#define GSI_IC_UCONTROLLER_GPR_BCK_PRS_LSB_INT_END_INT_SHFT 0xc
-#define GSI_IC_UCONTROLLER_GPR_BCK_PRS_LSB_EV_ENG_INT_BMSK 0x40
-#define GSI_IC_UCONTROLLER_GPR_BCK_PRS_LSB_EV_ENG_INT_SHFT 0x6
-#define GSI_IC_UCONTROLLER_GPR_BCK_PRS_LSB_REE_INT_BMSK 0x7
-#define GSI_IC_UCONTROLLER_GPR_BCK_PRS_LSB_REE_INT_SHFT 0x0
-
-#define GSI_IC_UCONTROLLER_GPR_BCK_PRS_MSB_OFFS \
-	(GSI_GSI_REG_BASE_OFFS + 0x000000f4)
-#define GSI_IC_UCONTROLLER_GPR_BCK_PRS_MSB_RMSK 0xfc3041
-#define GSI_IC_UCONTROLLER_GPR_BCK_PRS_MSB_UCONTROLLER_INT_BMSK 0xfc0000
-#define GSI_IC_UCONTROLLER_GPR_BCK_PRS_MSB_UCONTROLLER_INT_SHFT 0x12
-#define GSI_IC_UCONTROLLER_GPR_BCK_PRS_MSB_RD_WR_INT_BMSK 0x3000
-#define GSI_IC_UCONTROLLER_GPR_BCK_PRS_MSB_RD_WR_INT_SHFT 0xc
-#define GSI_IC_UCONTROLLER_GPR_BCK_PRS_MSB_DB_ENG_INT_BMSK 0x40
-#define GSI_IC_UCONTROLLER_GPR_BCK_PRS_MSB_DB_ENG_INT_SHFT 0x6
-#define GSI_IC_UCONTROLLER_GPR_BCK_PRS_MSB_TIMER_INT_BMSK 0x1
-#define GSI_IC_UCONTROLLER_GPR_BCK_PRS_MSB_TIMER_INT_SHFT 0x0
-
-#define GSI_GSI_IRAM_PTR_CH_CMD_OFFS \
-	(GSI_GSI_REG_BASE_OFFS + 0x00000400)
-#define GSI_GSI_IRAM_PTR_CH_CMD_RMSK 0xfff
-#define GSI_GSI_IRAM_PTR_CH_CMD_IRAM_PTR_BMSK 0xfff
-#define GSI_GSI_IRAM_PTR_CH_CMD_IRAM_PTR_SHFT 0x0
-
-#define GSI_GSI_IRAM_PTR_EE_GENERIC_CMD_OFFS \
-	(GSI_GSI_REG_BASE_OFFS + 0x00000404)
-#define GSI_GSI_IRAM_PTR_EE_GENERIC_CMD_RMSK 0xfff
-#define GSI_GSI_IRAM_PTR_EE_GENERIC_CMD_IRAM_PTR_BMSK 0xfff
-#define GSI_GSI_IRAM_PTR_EE_GENERIC_CMD_IRAM_PTR_SHFT 0x0
-
-#define GSI_V2_5_GSI_IRAM_PTR_TLV_CH_NOT_FULL_OFFS \
-	(GSI_GSI_REG_BASE_OFFS + 0x00000408)
-#define GSI_V2_5_GSI_IRAM_PTR_TLV_CH_NOT_FULL_RMSK 0xfff
-#define GSI_V2_5_GSI_IRAM_PTR_TLV_CH_NOT_FULL_IRAM_PTR_BMSK 0xfff
-#define GSI_V2_5_GSI_IRAM_PTR_TLV_CH_NOT_FULL_IRAM_PTR_SHFT 0x0
-
-#define GSI_GSI_IRAM_PTR_CH_DB_OFFS \
-	(GSI_GSI_REG_BASE_OFFS + 0x00000418)
-#define GSI_GSI_IRAM_PTR_CH_DB_RMSK 0xfff
-#define GSI_GSI_IRAM_PTR_CH_DB_IRAM_PTR_BMSK 0xfff
-#define GSI_GSI_IRAM_PTR_CH_DB_IRAM_PTR_SHFT 0x0
-
-#define GSI_GSI_IRAM_PTR_EV_DB_OFFS \
-	(GSI_GSI_REG_BASE_OFFS + 0x0000041c)
-#define GSI_GSI_IRAM_PTR_EV_DB_RMSK 0xfff
-#define GSI_GSI_IRAM_PTR_EV_DB_IRAM_PTR_BMSK 0xfff
-#define GSI_GSI_IRAM_PTR_EV_DB_IRAM_PTR_SHFT 0x0
-
-#define GSI_GSI_IRAM_PTR_NEW_RE_OFFS \
-	(GSI_GSI_REG_BASE_OFFS + 0x00000420)
-#define GSI_GSI_IRAM_PTR_NEW_RE_RMSK 0xfff
-#define GSI_GSI_IRAM_PTR_NEW_RE_IRAM_PTR_BMSK 0xfff
-#define GSI_GSI_IRAM_PTR_NEW_RE_IRAM_PTR_SHFT 0x0
-
-#define GSI_GSI_IRAM_PTR_CH_DIS_COMP_OFFS \
-	(GSI_GSI_REG_BASE_OFFS + 0x00000424)
-#define GSI_GSI_IRAM_PTR_CH_DIS_COMP_RMSK 0xfff
-#define GSI_GSI_IRAM_PTR_CH_DIS_COMP_IRAM_PTR_BMSK 0xfff
-#define GSI_GSI_IRAM_PTR_CH_DIS_COMP_IRAM_PTR_SHFT 0x0
-
-#define GSI_GSI_IRAM_PTR_CH_EMPTY_OFFS \
-	(GSI_GSI_REG_BASE_OFFS + 0x00000428)
-#define GSI_GSI_IRAM_PTR_CH_EMPTY_RMSK 0xfff
-#define GSI_GSI_IRAM_PTR_CH_EMPTY_IRAM_PTR_BMSK 0xfff
-#define GSI_GSI_IRAM_PTR_CH_EMPTY_IRAM_PTR_SHFT 0x0
-
-#define GSI_GSI_IRAM_PTR_EVENT_GEN_COMP_OFFS \
-	(GSI_GSI_REG_BASE_OFFS + 0x0000042c)
-#define GSI_GSI_IRAM_PTR_EVENT_GEN_COMP_RMSK 0xfff
-#define GSI_GSI_IRAM_PTR_EVENT_GEN_COMP_IRAM_PTR_BMSK 0xfff
-#define GSI_GSI_IRAM_PTR_EVENT_GEN_COMP_IRAM_PTR_SHFT 0x0
-
-#define GSI_GSI_IRAM_PTR_PERIPH_IF_TLV_IN_0_OFFS \
-	(GSI_GSI_REG_BASE_OFFS + 0x00000430)
-#define GSI_GSI_IRAM_PTR_PERIPH_IF_TLV_IN_0_RMSK 0xfff
-#define GSI_GSI_IRAM_PTR_PERIPH_IF_TLV_IN_0_IRAM_PTR_BMSK 0xfff
-#define GSI_GSI_IRAM_PTR_PERIPH_IF_TLV_IN_0_IRAM_PTR_SHFT 0x0
-
-#define GSI_GSI_IRAM_PTR_PERIPH_IF_TLV_IN_2_OFFS \
-	(GSI_GSI_REG_BASE_OFFS + 0x00000434)
-#define GSI_GSI_IRAM_PTR_PERIPH_IF_TLV_IN_2_RMSK 0xfff
-#define GSI_GSI_IRAM_PTR_PERIPH_IF_TLV_IN_2_IRAM_PTR_BMSK 0xfff
-#define GSI_GSI_IRAM_PTR_PERIPH_IF_TLV_IN_2_IRAM_PTR_SHFT 0x0
-
-#define GSI_GSI_IRAM_PTR_PERIPH_IF_TLV_IN_1_OFFS \
-	(GSI_GSI_REG_BASE_OFFS + 0x00000438)
-#define GSI_GSI_IRAM_PTR_PERIPH_IF_TLV_IN_1_RMSK 0xfff
-#define GSI_GSI_IRAM_PTR_PERIPH_IF_TLV_IN_1_IRAM_PTR_BMSK 0xfff
-#define GSI_GSI_IRAM_PTR_PERIPH_IF_TLV_IN_1_IRAM_PTR_SHFT 0x0
-
-#define GSI_GSI_IRAM_PTR_TIMER_EXPIRED_OFFS \
-	(GSI_GSI_REG_BASE_OFFS + 0x0000043c)
-#define GSI_GSI_IRAM_PTR_TIMER_EXPIRED_RMSK 0xfff
-#define GSI_GSI_IRAM_PTR_TIMER_EXPIRED_IRAM_PTR_BMSK 0xfff
-#define GSI_GSI_IRAM_PTR_TIMER_EXPIRED_IRAM_PTR_SHFT 0x0
-
-#define GSI_GSI_IRAM_PTR_WRITE_ENG_COMP_OFFS \
-	(GSI_GSI_REG_BASE_OFFS + 0x00000440)
-#define GSI_GSI_IRAM_PTR_WRITE_ENG_COMP_RMSK 0xfff
-#define GSI_GSI_IRAM_PTR_WRITE_ENG_COMP_IRAM_PTR_BMSK 0xfff
-#define GSI_GSI_IRAM_PTR_WRITE_ENG_COMP_IRAM_PTR_SHFT 0x0
-
-#define GSI_GSI_IRAM_PTR_READ_ENG_COMP_OFFS \
-	(GSI_GSI_REG_BASE_OFFS + 0x00000444)
-#define GSI_GSI_IRAM_PTR_READ_ENG_COMP_RMSK 0xfff
-#define GSI_GSI_IRAM_PTR_READ_ENG_COMP_IRAM_PTR_BMSK 0xfff
-#define GSI_GSI_IRAM_PTR_READ_ENG_COMP_IRAM_PTR_SHFT 0x0
-
-#define GSI_GSI_IRAM_PTR_UC_GP_INT_OFFS \
-	(GSI_GSI_REG_BASE_OFFS + 0x00000448)
-#define GSI_GSI_IRAM_PTR_UC_GP_INT_RMSK 0xfff
-#define GSI_GSI_IRAM_PTR_UC_GP_INT_IRAM_PTR_BMSK 0xfff
-#define GSI_GSI_IRAM_PTR_UC_GP_INT_IRAM_PTR_SHFT 0x0
-
-/* Real H/W register name is with STOPPED with single P */
-#define GSI_GSI_IRAM_PTR_INT_MOD_STOPPED_OFFS \
-	(GSI_GSI_REG_BASE_OFFS + 0x0000044c)
-#define GSI_GSI_IRAM_PTR_INT_MOD_STOPPED_RMSK 0xfff
-#define GSI_GSI_IRAM_PTR_INT_MOD_STOPPED_IRAM_PTR_BMSK 0xfff
-#define GSI_GSI_IRAM_PTR_INT_MOD_STOPPED_IRAM_PTR_SHFT 0x0
-
-#define GSI_GSI_INST_RAM_n_WORD_SZ 0x4
-#define GSI_GSI_INST_RAM_n_OFFS(n) \
-	(GSI_GSI_REG_BASE_OFFS + 0x00004000 + GSI_GSI_INST_RAM_n_WORD_SZ * (n))
-#define GSI_V2_5_GSI_INST_RAM_n_OFFS(n) \
-	(GSI_GSI_REG_BASE_OFFS + 0x0001b000 + GSI_GSI_INST_RAM_n_WORD_SZ * (n))
-#define GSI_GSI_INST_RAM_n_RMSK 0xffffffff
-#define GSI_GSI_INST_RAM_n_MAXn 4095
-#define GSI_V2_0_GSI_INST_RAM_n_MAXn 6143
-#define GSI_V2_2_GSI_INST_RAM_n_MAXn 4095
-#define GSI_V2_5_GSI_INST_RAM_n_MAXn 8191
-#define GSI_V2_7_GSI_INST_RAM_n_MAXn 5119
-
-#define GSI_GSI_INST_RAM_n_INST_BYTE_3_BMSK 0xff000000
-#define GSI_GSI_INST_RAM_n_INST_BYTE_3_SHFT 0x18
-#define GSI_GSI_INST_RAM_n_INST_BYTE_2_BMSK 0xff0000
-#define GSI_GSI_INST_RAM_n_INST_BYTE_2_SHFT 0x10
-#define GSI_GSI_INST_RAM_n_INST_BYTE_1_BMSK 0xff00
-#define GSI_GSI_INST_RAM_n_INST_BYTE_1_SHFT 0x8
-#define GSI_GSI_INST_RAM_n_INST_BYTE_0_BMSK 0xff
-#define GSI_GSI_INST_RAM_n_INST_BYTE_0_SHFT 0x0
-
-#define GSI_EE_n_GSI_CH_k_CNTXT_0_OFFS(k, n) \
-	(GSI_GSI_REG_BASE_OFFS + 0x0001c000 + 0x4000 * (n) + 0x80 * (k))
-#define GSI_EE_n_GSI_CH_k_CNTXT_0_ELEMENT_SIZE_BMSK 0xff000000
-#define GSI_EE_n_GSI_CH_k_CNTXT_0_ELEMENT_SIZE_SHFT 0x18
-#define GSI_EE_n_GSI_CH_k_CNTXT_0_CHSTATE_BMSK 0xf00000
-#define GSI_EE_n_GSI_CH_k_CNTXT_0_CHSTATE_SHFT 0x14
-#define GSI_EE_n_GSI_CH_k_CNTXT_0_ERINDEX_BMSK 0x7c000
-#define GSI_EE_n_GSI_CH_k_CNTXT_0_ERINDEX_SHFT 0xe
-#define GSI_V2_5_EE_n_GSI_CH_k_CNTXT_0_CHTYPE_PROTOCOL_MSB_BMSK 0x2000
-#define GSI_V2_5_EE_n_GSI_CH_k_CNTXT_0_CHTYPE_PROTOCOL_MSB_SHFT 0xd
-#define GSI_EE_n_GSI_CH_k_CNTXT_0_CHID_BMSK 0x1f00
-#define GSI_EE_n_GSI_CH_k_CNTXT_0_CHID_SHFT 0x8
-#define GSI_EE_n_GSI_CH_k_CNTXT_0_EE_BMSK 0xf0
-#define GSI_EE_n_GSI_CH_k_CNTXT_0_EE_SHFT 0x4
-#define GSI_EE_n_GSI_CH_k_CNTXT_0_CHTYPE_DIR_BMSK 0x8
-#define GSI_EE_n_GSI_CH_k_CNTXT_0_CHTYPE_DIR_SHFT 0x3
-#define GSI_EE_n_GSI_CH_k_CNTXT_0_CHTYPE_PROTOCOL_BMSK 0x7
-#define GSI_EE_n_GSI_CH_k_CNTXT_0_CHTYPE_PROTOCOL_SHFT 0x0
-
-#define GSI_EE_n_GSI_CH_k_CNTXT_1_OFFS(k, n) \
-	(GSI_GSI_REG_BASE_OFFS + 0x0001c004 + 0x4000 * (n) + 0x80 * (k))
-#define GSI_EE_n_GSI_CH_k_CNTXT_1_R_LENGTH_BMSK 0xffff
-#define GSI_EE_n_GSI_CH_k_CNTXT_1_R_LENGTH_SHFT 0x0
-
-#define GSI_EE_n_GSI_CH_k_CNTXT_2_OFFS(k, n) \
-	(GSI_GSI_REG_BASE_OFFS + 0x0001c008 + 0x4000 * (n) + 0x80 * (k))
-#define GSI_EE_n_GSI_CH_k_CNTXT_2_R_BASE_ADDR_LSBS_BMSK 0xffffffff
-#define GSI_EE_n_GSI_CH_k_CNTXT_2_R_BASE_ADDR_LSBS_SHFT 0x0
-
-#define GSI_EE_n_GSI_CH_k_CNTXT_3_OFFS(k, n) \
-	(GSI_GSI_REG_BASE_OFFS + 0x0001c00c + 0x4000 * (n) + 0x80 * (k))
-#define GSI_EE_n_GSI_CH_k_CNTXT_3_R_BASE_ADDR_MSBS_BMSK 0xffffffff
-#define GSI_EE_n_GSI_CH_k_CNTXT_3_R_BASE_ADDR_MSBS_SHFT 0x0
-
-#define GSI_EE_n_GSI_CH_k_CNTXT_4_OFFS(k, n) \
-	(GSI_GSI_REG_BASE_OFFS + 0x0001c010 + 0x4000 * (n) + 0x80 * (k))
-#define GSI_EE_n_GSI_CH_k_CNTXT_4_READ_PTR_LSB_BMSK 0xffffffff
-#define GSI_EE_n_GSI_CH_k_CNTXT_4_READ_PTR_LSB_SHFT 0x0
-
-#define GSI_EE_n_GSI_CH_k_CNTXT_5_OFFS(k, n) \
-	(GSI_GSI_REG_BASE_OFFS + 0x0001c014 + 0x4000 * (n) + 0x80 * (k))
-#define GSI_EE_n_GSI_CH_k_CNTXT_5_READ_PTR_MSB_BMSK 0xffffffff
-#define GSI_EE_n_GSI_CH_k_CNTXT_5_READ_PTR_MSB_SHFT 0x0
-
-#define GSI_EE_n_GSI_CH_k_CNTXT_6_OFFS(k, n) \
-	(GSI_GSI_REG_BASE_OFFS + 0x0001c018 + 0x4000 * (n) + 0x80 * (k))
-#define GSI_EE_n_GSI_CH_k_CNTXT_6_WRITE_PTR_LSB_BMSK 0xffffffff
-#define GSI_EE_n_GSI_CH_k_CNTXT_6_WRITE_PTR_LSB_SHFT 0x0
-
-#define GSI_EE_n_GSI_CH_k_CNTXT_7_OFFS(k, n) \
-	(GSI_GSI_REG_BASE_OFFS + 0x0001c01c + 0x4000 * (n) + 0x80 * (k))
-#define GSI_EE_n_GSI_CH_k_CNTXT_7_WRITE_PTR_MSB_BMSK 0xffffffff
-#define GSI_EE_n_GSI_CH_k_CNTXT_7_WRITE_PTR_MSB_SHFT 0x0
-
-#define GSI_EE_n_GSI_CH_k_RE_FETCH_READ_PTR_OFFS(k, n) \
-	(GSI_GSI_REG_BASE_OFFS + 0x0001c054 + 0x4000 * (n) + 0x80 * (k))
-#define GSI_EE_n_GSI_CH_k_RE_FETCH_READ_PTR_RMSK 0xffff
-#define GSI_EE_n_GSI_CH_k_RE_FETCH_READ_PTR_MAXk 30
-#define GSI_EE_n_GSI_CH_k_RE_FETCH_READ_PTR_MAXn 3
-#define GSI_EE_n_GSI_CH_k_RE_FETCH_READ_PTR_READ_PTR_BMSK 0xffff
-#define GSI_EE_n_GSI_CH_k_RE_FETCH_READ_PTR_READ_PTR_SHFT 0x0
-
-#define GSI_EE_n_GSI_CH_k_RE_FETCH_WRITE_PTR_OFFS(k, n) \
-	(GSI_GSI_REG_BASE_OFFS + 0x0001c058 + 0x4000 * (n) + 0x80 * (k))
-#define GSI_EE_n_GSI_CH_k_RE_FETCH_WRITE_PTR_RMSK 0xffff
-#define GSI_EE_n_GSI_CH_k_RE_FETCH_WRITE_PTR_MAXk 30
-#define GSI_EE_n_GSI_CH_k_RE_FETCH_WRITE_PTR_MAXn 3
-#define GSI_EE_n_GSI_CH_k_RE_FETCH_WRITE_PTR_RE_INTR_DB_BMSK 0xffff
-#define GSI_EE_n_GSI_CH_k_RE_FETCH_WRITE_PTR_RE_INTR_DB_SHFT 0x0
-
-#define GSI_EE_n_GSI_CH_k_QOS_OFFS(k, n) \
-	(GSI_GSI_REG_BASE_OFFS + 0x0001c05c + 0x4000 * (n) + 0x80 * (k))
-#define GSI_EE_n_GSI_CH_k_QOS_RMSK 0x303
-#define GSI_EE_n_GSI_CH_k_QOS_MAXk 30
-#define GSI_EE_n_GSI_CH_k_QOS_MAXn 3
-#define GSI_EE_n_GSI_CH_k_QOS_USE_ESCAPE_BUF_ONLY_BMSK 0x400
-#define GSI_EE_n_GSI_CH_k_QOS_USE_ESCAPE_BUF_ONLY_SHFT 0xa
-#define GSI_EE_n_GSI_CH_k_QOS_USE_DB_ENG_BMSK 0x200
-#define GSI_EE_n_GSI_CH_k_QOS_USE_DB_ENG_SHFT 0x9
-#define GSI_EE_n_GSI_CH_k_QOS_MAX_PREFETCH_BMSK 0x100
-#define GSI_EE_n_GSI_CH_k_QOS_MAX_PREFETCH_SHFT 0x8
-#define GSI_EE_n_GSI_CH_k_QOS_WRR_WEIGHT_BMSK 0xf
-#define GSI_EE_n_GSI_CH_k_QOS_WRR_WEIGHT_SHFT 0x0
-
-#define GSI_V2_5_EE_n_GSI_CH_k_QOS_OFFS(k, n) \
-	(GSI_GSI_REG_BASE_OFFS + 0x0000f05c + 0x4000 * (n) + 0x80 * (k))
-#define GSI_V2_5_EE_n_GSI_CH_k_QOS_EMPTY_LVL_THRSHOLD_BMSK 0xff0000
-#define GSI_V2_5_EE_n_GSI_CH_k_QOS_EMPTY_LVL_THRSHOLD_SHFT 0x10
-#define GSI_V2_5_EE_n_GSI_CH_k_QOS_PREFETCH_MODE_BMSK 0x3c00
-#define GSI_V2_5_EE_n_GSI_CH_k_QOS_PREFETCH_MODE_SHFT 0xa
-#define GSI_V2_5_EE_n_GSI_CH_k_QOS_USE_DB_ENG_BMSK 0x200
-#define GSI_V2_5_EE_n_GSI_CH_k_QOS_USE_DB_ENG_SHFT 0x9
-#define GSI_V2_5_EE_n_GSI_CH_k_QOS_MAX_PREFETCH_BMSK 0x100
-#define GSI_V2_5_EE_n_GSI_CH_k_QOS_MAX_PREFETCH_SHFT 0x8
-#define GSI_V2_5_EE_n_GSI_CH_k_QOS_WRR_WEIGHT_BMSK 0xf
-#define GSI_V2_5_EE_n_GSI_CH_k_QOS_WRR_WEIGHT_SHFT 0x0
-
-
-#define GSI_EE_n_GSI_CH_k_SCRATCH_0_OFFS(k, n) \
-	(GSI_GSI_REG_BASE_OFFS + 0x0001c060 + 0x4000 * (n) + 0x80 * (k))
-#define GSI_EE_n_GSI_CH_k_SCRATCH_0_SCRATCH_BMSK 0xffffffff
-#define GSI_EE_n_GSI_CH_k_SCRATCH_0_SCRATCH_SHFT 0x0
-
-#define GSI_EE_n_GSI_CH_k_SCRATCH_1_OFFS(k, n) \
-	(GSI_GSI_REG_BASE_OFFS + 0x0001c064 + 0x4000 * (n) + 0x80 * (k))
-#define GSI_EE_n_GSI_CH_k_SCRATCH_1_SCRATCH_BMSK 0xffffffff
-#define GSI_EE_n_GSI_CH_k_SCRATCH_1_SCRATCH_SHFT 0x0
-
-#define GSI_EE_n_GSI_CH_k_SCRATCH_2_OFFS(k, n) \
-	(GSI_GSI_REG_BASE_OFFS + 0x0001c068 + 0x4000 * (n) + 0x80 * (k))
-#define GSI_EE_n_GSI_CH_k_SCRATCH_2_SCRATCH_BMSK 0xffffffff
-#define GSI_EE_n_GSI_CH_k_SCRATCH_2_SCRATCH_SHFT 0x0
-
-#define GSI_EE_n_GSI_CH_k_SCRATCH_3_OFFS(k, n) \
-	(GSI_GSI_REG_BASE_OFFS + 0x0001c06c + 0x4000 * (n) + 0x80 * (k))
-#define GSI_EE_n_GSI_CH_k_SCRATCH_3_SCRATCH_BMSK 0xffffffff
-#define GSI_EE_n_GSI_CH_k_SCRATCH_3_SCRATCH_SHFT 0x0
-
-#define GSI_EE_n_EV_CH_k_CNTXT_0_OFFS(k, n) \
-	(GSI_GSI_REG_BASE_OFFS + 0x0001d000 + 0x4000 * (n) + 0x80 * (k))
-#define GSI_EE_n_EV_CH_k_CNTXT_0_ELEMENT_SIZE_BMSK 0xff000000
-#define GSI_EE_n_EV_CH_k_CNTXT_0_ELEMENT_SIZE_SHFT 0x18
-#define GSI_EE_n_EV_CH_k_CNTXT_0_CHSTATE_BMSK 0xf00000
-#define GSI_EE_n_EV_CH_k_CNTXT_0_CHSTATE_SHFT 0x14
-#define GSI_EE_n_EV_CH_k_CNTXT_0_INTYPE_BMSK 0x10000
-#define GSI_EE_n_EV_CH_k_CNTXT_0_INTYPE_SHFT 0x10
-#define GSI_EE_n_EV_CH_k_CNTXT_0_EVCHID_BMSK 0xff00
-#define GSI_EE_n_EV_CH_k_CNTXT_0_EVCHID_SHFT 0x8
-#define GSI_EE_n_EV_CH_k_CNTXT_0_EE_BMSK 0xf0
-#define GSI_EE_n_EV_CH_k_CNTXT_0_EE_SHFT 0x4
-#define GSI_EE_n_EV_CH_k_CNTXT_0_CHTYPE_BMSK 0xf
-#define GSI_EE_n_EV_CH_k_CNTXT_0_CHTYPE_SHFT 0x0
-
-#define GSI_EE_n_EV_CH_k_CNTXT_1_OFFS(k, n) \
-	(GSI_GSI_REG_BASE_OFFS + 0x0001d004 + 0x4000 * (n) + 0x80 * (k))
-#define GSI_EE_n_EV_CH_k_CNTXT_1_R_LENGTH_BMSK 0xffff
-#define GSI_EE_n_EV_CH_k_CNTXT_1_R_LENGTH_SHFT 0x0
-
-#define GSI_EE_n_EV_CH_k_CNTXT_2_OFFS(k, n) \
-	(GSI_GSI_REG_BASE_OFFS + 0x0001d008 + 0x4000 * (n) + 0x80 * (k))
-#define GSI_EE_n_EV_CH_k_CNTXT_2_R_BASE_ADDR_LSBS_BMSK 0xffffffff
-#define GSI_EE_n_EV_CH_k_CNTXT_2_R_BASE_ADDR_LSBS_SHFT 0x0
-
-#define GSI_EE_n_EV_CH_k_CNTXT_3_OFFS(k, n) \
-	(GSI_GSI_REG_BASE_OFFS + 0x0001d00c + 0x4000 * (n) + 0x80 * (k))
-#define GSI_EE_n_EV_CH_k_CNTXT_3_R_BASE_ADDR_MSBS_BMSK 0xffffffff
-#define GSI_EE_n_EV_CH_k_CNTXT_3_R_BASE_ADDR_MSBS_SHFT 0x0
-
-#define GSI_EE_n_EV_CH_k_CNTXT_4_OFFS(k, n) \
-	(GSI_GSI_REG_BASE_OFFS + 0x0001d010 + 0x4000 * (n) + 0x80 * (k))
-#define GSI_EE_n_EV_CH_k_CNTXT_4_READ_PTR_LSB_BMSK 0xffffffff
-#define GSI_EE_n_EV_CH_k_CNTXT_4_READ_PTR_LSB_SHFT 0x0
-
-#define GSI_EE_n_EV_CH_k_CNTXT_5_OFFS(k, n) \
-	(GSI_GSI_REG_BASE_OFFS + 0x0001d014 + 0x4000 * (n) + 0x80 * (k))
-#define GSI_EE_n_EV_CH_k_CNTXT_5_READ_PTR_MSB_BMSK 0xffffffff
-#define GSI_EE_n_EV_CH_k_CNTXT_5_READ_PTR_MSB_SHFT 0x0
-
-#define GSI_EE_n_EV_CH_k_CNTXT_6_OFFS(k, n) \
-	(GSI_GSI_REG_BASE_OFFS + 0x0001d018 + 0x4000 * (n) + 0x80 * (k))
-#define GSI_EE_n_EV_CH_k_CNTXT_6_WRITE_PTR_LSB_BMSK 0xffffffff
-#define GSI_EE_n_EV_CH_k_CNTXT_6_WRITE_PTR_LSB_SHFT 0x0
-
-#define GSI_EE_n_EV_CH_k_CNTXT_7_OFFS(k, n) \
-	(GSI_GSI_REG_BASE_OFFS + 0x0001d01c + 0x4000 * (n) + 0x80 * (k))
-#define GSI_EE_n_EV_CH_k_CNTXT_7_WRITE_PTR_MSB_BMSK 0xffffffff
-#define GSI_EE_n_EV_CH_k_CNTXT_7_WRITE_PTR_MSB_SHFT 0x0
-
-#define GSI_EE_n_EV_CH_k_CNTXT_8_OFFS(k, n) \
-	(GSI_GSI_REG_BASE_OFFS + 0x0001d020 + 0x4000 * (n) + 0x80 * (k))
-#define GSI_EE_n_EV_CH_k_CNTXT_8_INT_MOD_CNT_BMSK 0xff000000
-#define GSI_EE_n_EV_CH_k_CNTXT_8_INT_MOD_CNT_SHFT 0x18
-#define GSI_EE_n_EV_CH_k_CNTXT_8_INT_MODC_BMSK 0xff0000
-#define GSI_EE_n_EV_CH_k_CNTXT_8_INT_MODC_SHFT 0x10
-#define GSI_EE_n_EV_CH_k_CNTXT_8_INT_MODT_BMSK 0xffff
-#define GSI_EE_n_EV_CH_k_CNTXT_8_INT_MODT_SHFT 0x0
-
-#define GSI_EE_n_EV_CH_k_CNTXT_9_OFFS(k, n) \
-	(GSI_GSI_REG_BASE_OFFS + 0x0001d024 + 0x4000 * (n) + 0x80 * (k))
-#define GSI_EE_n_EV_CH_k_CNTXT_9_INTVEC_BMSK 0xffffffff
-#define GSI_EE_n_EV_CH_k_CNTXT_9_INTVEC_SHFT 0x0
-
-#define GSI_EE_n_EV_CH_k_CNTXT_10_OFFS(k, n) \
-	(GSI_GSI_REG_BASE_OFFS + 0x0001d028 + 0x4000 * (n) + 0x80 * (k))
-#define GSI_EE_n_EV_CH_k_CNTXT_10_MSI_ADDR_LSB_BMSK 0xffffffff
-#define GSI_EE_n_EV_CH_k_CNTXT_10_MSI_ADDR_LSB_SHFT 0x0
-
-#define GSI_EE_n_EV_CH_k_CNTXT_11_OFFS(k, n) \
-	(GSI_GSI_REG_BASE_OFFS + 0x0001d02c + 0x4000 * (n) + 0x80 * (k))
-#define GSI_EE_n_EV_CH_k_CNTXT_11_MSI_ADDR_MSB_BMSK 0xffffffff
-#define GSI_EE_n_EV_CH_k_CNTXT_11_MSI_ADDR_MSB_SHFT 0x0
-
-#define GSI_EE_n_EV_CH_k_CNTXT_12_OFFS(k, n) \
-	(GSI_GSI_REG_BASE_OFFS + 0x0001d030 + 0x4000 * (n) + 0x80 * (k))
-#define GSI_EE_n_EV_CH_k_CNTXT_12_RP_UPDATE_ADDR_LSB_BMSK 0xffffffff
-#define GSI_EE_n_EV_CH_k_CNTXT_12_RP_UPDATE_ADDR_LSB_SHFT 0x0
-
-#define GSI_EE_n_EV_CH_k_CNTXT_13_OFFS(k, n) \
-	(GSI_GSI_REG_BASE_OFFS + 0x0001d034 + 0x4000 * (n) + 0x80 * (k))
-#define GSI_EE_n_EV_CH_k_CNTXT_13_RP_UPDATE_ADDR_MSB_BMSK 0xffffffff
-#define GSI_EE_n_EV_CH_k_CNTXT_13_RP_UPDATE_ADDR_MSB_SHFT 0x0
-
-#define GSI_EE_n_EV_CH_k_SCRATCH_0_OFFS(k, n) \
-	(GSI_GSI_REG_BASE_OFFS + 0x0001d048 + 0x4000 * (n) + 0x80 * (k))
-#define GSI_EE_n_EV_CH_k_SCRATCH_0_SCRATCH_BMSK 0xffffffff
-#define GSI_EE_n_EV_CH_k_SCRATCH_0_SCRATCH_SHFT 0x0
-
-#define GSI_EE_n_EV_CH_k_SCRATCH_1_OFFS(k, n) \
-	(GSI_GSI_REG_BASE_OFFS + 0x0001d04c + 0x4000 * (n) + 0x80 * (k))
-#define GSI_EE_n_EV_CH_k_SCRATCH_1_SCRATCH_BMSK 0xffffffff
-#define GSI_EE_n_EV_CH_k_SCRATCH_1_SCRATCH_SHFT 0x0
-
-#define GSI_EE_n_GSI_CH_k_DOORBELL_0_OFFS(k, n) \
-	(GSI_GSI_REG_BASE_OFFS + 0x0001e000 + 0x4000 * (n) + 0x8 * (k))
-#define GSI_EE_n_GSI_CH_k_DOORBELL_0_WRITE_PTR_LSB_BMSK 0xffffffff
-#define GSI_EE_n_GSI_CH_k_DOORBELL_0_WRITE_PTR_LSB_SHFT 0x0
-
-#define GSI_EE_n_GSI_CH_k_DOORBELL_1_OFFS(k, n) \
-	(GSI_GSI_REG_BASE_OFFS + 0x0001e004 + 0x4000 * (n) + 0x8 * (k))
-#define GSI_EE_n_GSI_CH_k_DOORBELL_1_WRITE_PTR_MSB_BMSK 0xffffffff
-#define GSI_EE_n_GSI_CH_k_DOORBELL_1_WRITE_PTR_MSB_SHFT 0x0
-
-#define GSI_EE_n_EV_CH_k_DOORBELL_0_OFFS(k, n) \
-	(GSI_GSI_REG_BASE_OFFS + 0x0001e100 + 0x4000 * (n) + 0x8 * (k))
-#define GSI_EE_n_EV_CH_k_DOORBELL_0_WRITE_PTR_LSB_BMSK 0xffffffff
-#define GSI_EE_n_EV_CH_k_DOORBELL_0_WRITE_PTR_LSB_SHFT 0x0
-
-#define GSI_EE_n_EV_CH_k_DOORBELL_1_OFFS(k, n) \
-	(GSI_GSI_REG_BASE_OFFS + 0x0001e104 + 0x4000 * (n) + 0x8 * (k))
-#define GSI_EE_n_EV_CH_k_DOORBELL_1_WRITE_PTR_MSB_BMSK 0xffffffff
-#define GSI_EE_n_EV_CH_k_DOORBELL_1_WRITE_PTR_MSB_SHFT 0x0
-
-#define GSI_EE_n_GSI_STATUS_OFFS(n) \
-	(GSI_GSI_REG_BASE_OFFS + 0x0001f000 + 0x4000 * (n))
-#define GSI_EE_n_GSI_STATUS_ENABLED_BMSK 0x1
-#define GSI_EE_n_GSI_STATUS_ENABLED_SHFT 0x0
-
-#define GSI_EE_n_GSI_CH_CMD_OFFS(n) \
-	(GSI_GSI_REG_BASE_OFFS + 0x0001f008 + 0x4000 * (n))
-#define GSI_EE_n_GSI_CH_CMD_OPCODE_BMSK 0xff000000
-#define GSI_EE_n_GSI_CH_CMD_OPCODE_SHFT 0x18
-#define GSI_EE_n_GSI_CH_CMD_CHID_BMSK 0xff
-#define GSI_EE_n_GSI_CH_CMD_CHID_SHFT 0x0
-
-#define GSI_EE_n_EV_CH_CMD_OFFS(n) \
-	(GSI_GSI_REG_BASE_OFFS + 0x0001f010 + 0x4000 * (n))
-#define GSI_EE_n_EV_CH_CMD_OPCODE_BMSK 0xff000000
-#define GSI_EE_n_EV_CH_CMD_OPCODE_SHFT 0x18
-#define GSI_EE_n_EV_CH_CMD_CHID_BMSK 0xff
-#define GSI_EE_n_EV_CH_CMD_CHID_SHFT 0x0
-
-#define GSI_EE_n_GSI_EE_GENERIC_CMD_OFFS(n) \
-	(GSI_GSI_REG_BASE_OFFS + 0x0001f018 + 0x4000 * (n))
-#define GSI_EE_n_GSI_EE_GENERIC_CMD_OPCODE_BMSK 0x1f
-#define GSI_EE_n_GSI_EE_GENERIC_CMD_OPCODE_SHFT 0x0
-#define GSI_EE_n_GSI_EE_GENERIC_CMD_VIRT_CHAN_IDX_BMSK 0x3e0
-#define GSI_EE_n_GSI_EE_GENERIC_CMD_VIRT_CHAN_IDX_SHFT 0x5
-#define GSI_EE_n_GSI_EE_GENERIC_CMD_EE_BMSK 0x3c00
-#define GSI_EE_n_GSI_EE_GENERIC_CMD_EE_SHFT 0xa
-
-#define GSI_V1_0_EE_n_GSI_HW_PARAM_OFFS(n) \
-	(GSI_GSI_REG_BASE_OFFS + 0x0001f040 + 0x4000 * (n))
-#define GSI_V1_0_EE_n_GSI_HW_PARAM_PERIPH_SEC_GRP_BMSK 0x7c000000
-#define GSI_V1_0_EE_n_GSI_HW_PARAM_PERIPH_SEC_GRP_SHFT 0x1a
-#define GSI_V1_0_EE_n_GSI_HW_PARAM_USE_AXI_M_BMSK 0x2000000
-#define GSI_V1_0_EE_n_GSI_HW_PARAM_USE_AXI_M_SHFT 0x19
-#define GSI_V1_0_EE_n_GSI_HW_PARAM_PERIPH_CONF_ADDR_BUS_W_BMSK 0x1f00000
-#define GSI_V1_0_EE_n_GSI_HW_PARAM_PERIPH_CONF_ADDR_BUS_W_SHFT 0x14
-#define GSI_V1_0_EE_n_GSI_HW_PARAM_NUM_EES_BMSK 0xf0000
-#define GSI_V1_0_EE_n_GSI_HW_PARAM_NUM_EES_SHFT 0x10
-#define GSI_V1_0_EE_n_GSI_HW_PARAM_GSI_CH_NUM_BMSK 0xff00
-#define GSI_V1_0_EE_n_GSI_HW_PARAM_GSI_CH_NUM_SHFT 0x8
-#define GSI_V1_0_EE_n_GSI_HW_PARAM_GSI_EV_CH_NUM_BMSK 0xff
-#define GSI_V1_0_EE_n_GSI_HW_PARAM_GSI_EV_CH_NUM_SHFT 0x0
-
-#define GSI_V1_2_EE_n_GSI_HW_PARAM_0_OFFS(n) \
-	(GSI_GSI_REG_BASE_OFFS + 0x0001f038 + 0x4000 * (n))
-#define GSI_V1_2_EE_n_GSI_HW_PARAM_0_USE_AXI_M_BMSK 0x80000000
-#define GSI_V1_2_EE_n_GSI_HW_PARAM_0_USE_AXI_M_SHFT 0x1f
-#define GSI_V1_2_EE_n_GSI_HW_PARAM_0_PERIPH_SEC_GRP_BMSK 0x7c000000
-#define GSI_V1_2_EE_n_GSI_HW_PARAM_0_PERIPH_SEC_GRP_SHFT 0x1a
-#define GSI_V1_2_EE_n_GSI_HW_PARAM_0_PERIPH_CONF_ADDR_BUS_W_BMSK 0x3e00000
-#define GSI_V1_2_EE_n_GSI_HW_PARAM_0_PERIPH_CONF_ADDR_BUS_W_SHFT 0x15
-#define GSI_V1_2_EE_n_GSI_HW_PARAM_0_NUM_EES_BMSK 0x1f0000
-#define GSI_V1_2_EE_n_GSI_HW_PARAM_0_NUM_EES_SHFT 0x10
-#define GSI_V1_2_EE_n_GSI_HW_PARAM_0_GSI_CH_NUM_BMSK 0xff00
-#define GSI_V1_2_EE_n_GSI_HW_PARAM_0_GSI_CH_NUM_SHFT 0x8
-#define GSI_V1_2_EE_n_GSI_HW_PARAM_0_GSI_EV_CH_NUM_BMSK 0xff
-#define GSI_V1_2_EE_n_GSI_HW_PARAM_0_GSI_EV_CH_NUM_SHFT 0x0
-
-#define GSI_V1_3_EE_n_GSI_HW_PARAM_2_OFFS(n) \
-	(GSI_GSI_REG_BASE_OFFS + 0x0001f040 + 0x4000 * (n))
-#define GSI_V1_3_EE_n_GSI_HW_PARAM_2_RMSK 0x7fff
-#define GSI_V1_3_EE_n_GSI_HW_PARAM_2_MAXn 2
-#define GSI_V1_3_EE_n_GSI_HW_PARAM_2_GSI_CH_FULL_LOGIC_BMSK 0x4000
-#define GSI_V1_3_EE_n_GSI_HW_PARAM_2_GSI_CH_FULL_LOGIC_SHFT 0xe
-#define GSI_V1_3_EE_n_GSI_HW_PARAM_2_GSI_CH_PEND_TRANSLATE_BMSK 0x2000
-#define GSI_V1_3_EE_n_GSI_HW_PARAM_2_GSI_CH_PEND_TRANSLATE_SHFT 0xd
-#define GSI_V1_3_EE_n_GSI_HW_PARAM_2_GSI_NUM_EV_PER_EE_BMSK 0x1f00
-#define GSI_V1_3_EE_n_GSI_HW_PARAM_2_GSI_NUM_EV_PER_EE_SHFT 0x8
-#define GSI_V1_3_EE_n_GSI_HW_PARAM_2_GSI_NUM_CH_PER_EE_BMSK 0xf8
-#define GSI_V1_3_EE_n_GSI_HW_PARAM_2_GSI_NUM_CH_PER_EE_SHFT 0x3
-#define GSI_V1_3_EE_n_GSI_HW_PARAM_2_GSI_IRAM_SIZE_BMSK 0x7
-#define GSI_V1_3_EE_n_GSI_HW_PARAM_2_GSI_IRAM_SIZE_SHFT 0x0
-#define GSI_V1_3_EE_n_GSI_HW_PARAM_2_GSI_IRAM_SIZE_ONE_KB_FVAL 0x0
-#define GSI_V1_3_EE_n_GSI_HW_PARAM_2_GSI_IRAM_SIZE_TWO_KB_FVAL 0x1
-
-#define GSI_V2_0_EE_n_GSI_HW_PARAM_2_OFFS(n) \
-	(GSI_GSI_REG_BASE_OFFS + 0x0001f040 + 0x4000 * (n))
-#define GSI_V2_0_EE_n_GSI_HW_PARAM_2_RMSK 0x7fff
-#define GSI_V2_0_EE_n_GSI_HW_PARAM_2_MAXn 2
-#define GSI_V2_0_EE_n_GSI_HW_PARAM_2_GSI_SDMA_N_IOVEC_BMSK 0x38000000
-#define GSI_V2_0_EE_n_GSI_HW_PARAM_2_GSI_SDMA_N_IOVEC_SHFT 0x1b
-#define GSI_V2_0_EE_n_GSI_HW_PARAM_2_GSI_SDMA_MAX_BURST_BMSK 0x7F80000
-#define GSI_V2_0_EE_n_GSI_HW_PARAM_2_GSI_SDMA_MAX_BURST_SHFT 0x13
-#define GSI_V2_0_EE_n_GSI_HW_PARAM_2_GSI_SDMA_N_INT_BMSK 0x70000
-#define GSI_V2_0_EE_n_GSI_HW_PARAM_2_GSI_SDMA_N_INT_SHFT 0x10
-#define GSI_V2_0_EE_n_GSI_HW_PARAM_2_GSI_USE_SDMA_BMSK 0x8000
-#define GSI_V2_0_EE_n_GSI_HW_PARAM_2_GSI_USE_SDMA_SHFT 0xf
-#define GSI_V2_0_EE_n_GSI_HW_PARAM_2_GSI_CH_FULL_LOGIC_BMSK 0x4000
-#define GSI_V2_0_EE_n_GSI_HW_PARAM_2_GSI_CH_FULL_LOGIC_SHFT 0xe
-#define GSI_V2_0_EE_n_GSI_HW_PARAM_2_GSI_CH_PEND_TRANSLATE_BMSK 0x2000
-#define GSI_V2_0_EE_n_GSI_HW_PARAM_2_GSI_CH_PEND_TRANSLATE_SHFT 0xd
-#define GSI_V2_0_EE_n_GSI_HW_PARAM_2_GSI_NUM_EV_PER_EE_BMSK 0x1f00
-#define GSI_V2_0_EE_n_GSI_HW_PARAM_2_GSI_NUM_EV_PER_EE_SHFT 0x8
-#define GSI_V2_0_EE_n_GSI_HW_PARAM_2_GSI_NUM_CH_PER_EE_BMSK 0xf8
-#define GSI_V2_0_EE_n_GSI_HW_PARAM_2_GSI_NUM_CH_PER_EE_SHFT 0x3
-#define GSI_V2_0_EE_n_GSI_HW_PARAM_2_GSI_IRAM_SIZE_BMSK 0x7
-#define GSI_V2_0_EE_n_GSI_HW_PARAM_2_GSI_IRAM_SIZE_SHFT 0x0
-#define GSI_V2_0_EE_n_GSI_HW_PARAM_2_GSI_IRAM_SIZE_ONE_KB_FVAL 0x0
-#define GSI_V2_0_EE_n_GSI_HW_PARAM_2_GSI_IRAM_SIZE_TWO_KB_FVAL 0x1
-#define GSI_V2_0_EE_n_GSI_HW_PARAM_2_GSI_IRAM_SIZE_TWO_N_HALF_KB_FVAL 0x2
-#define GSI_V2_0_EE_n_GSI_HW_PARAM_2_GSI_IRAM_SIZE_THREE_KB_FVAL 0x3
-
-#define GSI_V2_2_EE_n_GSI_HW_PARAM_2_OFFS(n) \
-		(GSI_GSI_REG_BASE_OFFS + 0x0001f040 + 0x4000 * (n))
-#define GSI_V2_2_EE_n_GSI_HW_PARAM_2_GSI_USE_INTER_EE_BMSK 0x8000
-#define GSI_V2_2_EE_n_GSI_HW_PARAM_2_GSI_USE_INTER_EE_SHFT 0xf
-#define GSI_V2_2_EE_n_GSI_HW_PARAM_2_GSI_USE_RD_WR_ENG_BMSK 0x4000
-#define GSI_V2_2_EE_n_GSI_HW_PARAM_2_GSI_USE_RD_WR_ENG_SHFT 0xE
-#define GSI_V2_2_EE_n_GSI_HW_PARAM_2_RMSK 0x7fff
-#define GSI_V2_2_EE_n_GSI_HW_PARAM_2_MAXn 2
-#define GSI_V2_2_EE_n_GSI_HW_PARAM_2_GSI_SDMA_N_IOVEC_BMSK 0x38000000
-#define GSI_V2_2_EE_n_GSI_HW_PARAM_2_GSI_SDMA_N_IOVEC_SHFT 0x1b
-#define GSI_V2_2_EE_n_GSI_HW_PARAM_2_GSI_SDMA_MAX_BURST_BMSK 0x7F80000
-#define GSI_V2_2_EE_n_GSI_HW_PARAM_2_GSI_SDMA_MAX_BURST_SHFT 0x13
-#define GSI_V2_2_EE_n_GSI_HW_PARAM_2_GSI_SDMA_N_INT_BMSK 0x70000
-#define GSI_V2_2_EE_n_GSI_HW_PARAM_2_GSI_SDMA_N_INT_SHFT 0x10
-#define GSI_V2_2_EE_n_GSI_HW_PARAM_2_GSI_USE_SDMA_BMSK 0x8000
-#define GSI_V2_2_EE_n_GSI_HW_PARAM_2_GSI_USE_SDMA_SHFT 0xf
-#define GSI_V2_2_EE_n_GSI_HW_PARAM_2_GSI_CH_FULL_LOGIC_BMSK 0x4000
-#define GSI_V2_2_EE_n_GSI_HW_PARAM_2_GSI_CH_FULL_LOGIC_SHFT 0xe
-#define GSI_V2_2_EE_n_GSI_HW_PARAM_2_GSI_CH_PEND_TRANSLATE_BMSK 0x2000
-#define GSI_V2_2_EE_n_GSI_HW_PARAM_2_GSI_CH_PEND_TRANSLATE_SHFT 0xd
-#define GSI_V2_2_EE_n_GSI_HW_PARAM_2_GSI_NUM_EV_PER_EE_BMSK 0x1f00
-#define GSI_V2_2_EE_n_GSI_HW_PARAM_2_GSI_NUM_EV_PER_EE_SHFT 0x8
-#define GSI_V2_2_EE_n_GSI_HW_PARAM_2_GSI_NUM_CH_PER_EE_BMSK 0xf8
-#define GSI_V2_2_EE_n_GSI_HW_PARAM_2_GSI_NUM_CH_PER_EE_SHFT 0x3
-#define GSI_V2_2_EE_n_GSI_HW_PARAM_2_GSI_IRAM_SIZE_BMSK 0x7
-#define GSI_V2_2_EE_n_GSI_HW_PARAM_2_GSI_IRAM_SIZE_SHFT 0x0
-#define GSI_V2_2_EE_n_GSI_HW_PARAM_2_GSI_IRAM_SIZE_ONE_KB_FVAL 0x0
-#define GSI_V2_2_EE_n_GSI_HW_PARAM_2_GSI_IRAM_SIZE_TWO_KB_FVAL 0x1
-#define GSI_V2_2_EE_n_GSI_HW_PARAM_2_GSI_IRAM_SIZE_TWO_N_HALF_KB_FVAL 0x2
-#define GSI_V2_2_EE_n_GSI_HW_PARAM_2_GSI_IRAM_SIZE_THREE_KB_FVAL 0x3
-
-#define GSI_V2_5_EE_n_GSI_HW_PARAM_2_OFFS(n) \
-		(GSI_GSI_REG_BASE_OFFS + 0x00012040 + 0x4000 * (n))
-#define GSI_V2_5_EE_n_GSI_HW_PARAM_2_GSI_USE_INTER_EE_BMSK 0x8000
-#define GSI_V2_5_EE_n_GSI_HW_PARAM_2_GSI_USE_INTER_EE_SHFT 0xf
-#define GSI_V2_5_EE_n_GSI_HW_PARAM_2_GSI_USE_RD_WR_ENG_BMSK 0x4000
-#define GSI_V2_5_EE_n_GSI_HW_PARAM_2_GSI_USE_RD_WR_ENG_SHFT 0xE
-#define GSI_V2_5_EE_n_GSI_HW_PARAM_2_RMSK 0x7fff
-#define GSI_V2_5_EE_n_GSI_HW_PARAM_2_MAXn 2
-#define GSI_V2_5_EE_n_GSI_HW_PARAM_2_GSI_SDMA_N_IOVEC_BMSK 0x38000000
-#define GSI_V2_5_EE_n_GSI_HW_PARAM_2_GSI_SDMA_N_IOVEC_SHFT 0x1b
-#define GSI_V2_5_EE_n_GSI_HW_PARAM_2_GSI_SDMA_MAX_BURST_BMSK 0x7F80000
-#define GSI_V2_5_EE_n_GSI_HW_PARAM_2_GSI_SDMA_MAX_BURST_SHFT 0x13
-#define GSI_V2_5_EE_n_GSI_HW_PARAM_2_GSI_SDMA_N_INT_BMSK 0x70000
-#define GSI_V2_5_EE_n_GSI_HW_PARAM_2_GSI_SDMA_N_INT_SHFT 0x10
-#define GSI_V2_5_EE_n_GSI_HW_PARAM_2_GSI_USE_SDMA_BMSK 0x8000
-#define GSI_V2_5_EE_n_GSI_HW_PARAM_2_GSI_USE_SDMA_SHFT 0xf
-#define GSI_V2_5_EE_n_GSI_HW_PARAM_2_GSI_CH_FULL_LOGIC_BMSK 0x4000
-#define GSI_V2_5_EE_n_GSI_HW_PARAM_2_GSI_CH_FULL_LOGIC_SHFT 0xe
-#define GSI_V2_5_EE_n_GSI_HW_PARAM_2_GSI_CH_PEND_TRANSLATE_BMSK 0x2000
-#define GSI_V2_5_EE_n_GSI_HW_PARAM_2_GSI_CH_PEND_TRANSLATE_SHFT 0xd
-#define GSI_V2_5_EE_n_GSI_HW_PARAM_2_GSI_NUM_EV_PER_EE_BMSK 0x1f00
-#define GSI_V2_5_EE_n_GSI_HW_PARAM_2_GSI_NUM_EV_PER_EE_SHFT 0x8
-#define GSI_V2_5_EE_n_GSI_HW_PARAM_2_GSI_NUM_CH_PER_EE_BMSK 0xf8
-#define GSI_V2_5_EE_n_GSI_HW_PARAM_2_GSI_NUM_CH_PER_EE_SHFT 0x3
-#define GSI_V2_5_EE_n_GSI_HW_PARAM_2_GSI_IRAM_SIZE_BMSK 0x7
-#define GSI_V2_5_EE_n_GSI_HW_PARAM_2_GSI_IRAM_SIZE_SHFT 0x0
-#define GSI_V2_5_EE_n_GSI_HW_PARAM_2_GSI_IRAM_SIZE_ONE_KB_FVAL 0x0
-#define GSI_V2_5_EE_n_GSI_HW_PARAM_2_GSI_IRAM_SIZE_TWO_KB_FVAL 0x1
-#define GSI_V2_5_EE_n_GSI_HW_PARAM_2_GSI_IRAM_SIZE_TWO_N_HALF_KB_FVAL 0x2
-#define GSI_V2_5_EE_n_GSI_HW_PARAM_2_GSI_IRAM_SIZE_THREE_KB_FVAL 0x3
-#define GSI_V2_5_EE_n_GSI_HW_PARAM_2_GSI_IRAM_SIZE_THREE_N_HALF_KB_FVAL 0x4
-#define GSI_V2_5_EE_n_GSI_HW_PARAM_2_GSI_IRAM_SIZE_FOUR_KB_FVAL 0x5
-
-#define GSI_EE_n_GSI_SW_VERSION_OFFS(n) \
-	(GSI_GSI_REG_BASE_OFFS + 0x0001f044 + 0x4000 * (n))
-#define GSI_EE_n_GSI_SW_VERSION_MAJOR_BMSK 0xf0000000
-#define GSI_EE_n_GSI_SW_VERSION_MAJOR_SHFT 0x1c
-#define GSI_EE_n_GSI_SW_VERSION_MINOR_BMSK 0xfff0000
-#define GSI_EE_n_GSI_SW_VERSION_MINOR_SHFT 0x10
-#define GSI_EE_n_GSI_SW_VERSION_STEP_BMSK 0xffff
-#define GSI_EE_n_GSI_SW_VERSION_STEP_SHFT 0x0
-
-#define GSI_EE_n_CNTXT_TYPE_IRQ_OFFS(n) \
-	(GSI_GSI_REG_BASE_OFFS + 0x0001f080 + 0x4000 * (n))
-#define GSI_EE_n_CNTXT_TYPE_IRQ_GENERAL_BMSK 0x40
-#define GSI_EE_n_CNTXT_TYPE_IRQ_GENERAL_SHFT 0x6
-#define GSI_EE_n_CNTXT_TYPE_IRQ_INTER_EE_EV_CTRL_BMSK 0x20
-#define GSI_EE_n_CNTXT_TYPE_IRQ_INTER_EE_EV_CTRL_SHFT 0x5
-#define GSI_EE_n_CNTXT_TYPE_IRQ_INTER_EE_CH_CTRL_BMSK 0x10
-#define GSI_EE_n_CNTXT_TYPE_IRQ_INTER_EE_CH_CTRL_SHFT 0x4
-#define GSI_EE_n_CNTXT_TYPE_IRQ_IEOB_BMSK 0x8
-#define GSI_EE_n_CNTXT_TYPE_IRQ_IEOB_SHFT 0x3
-#define GSI_EE_n_CNTXT_TYPE_IRQ_GLOB_EE_BMSK 0x4
-#define GSI_EE_n_CNTXT_TYPE_IRQ_GLOB_EE_SHFT 0x2
-#define GSI_EE_n_CNTXT_TYPE_IRQ_EV_CTRL_BMSK 0x2
-#define GSI_EE_n_CNTXT_TYPE_IRQ_EV_CTRL_SHFT 0x1
-#define GSI_EE_n_CNTXT_TYPE_IRQ_CH_CTRL_BMSK 0x1
-#define GSI_EE_n_CNTXT_TYPE_IRQ_CH_CTRL_SHFT 0x0
-
-#define GSI_EE_n_CNTXT_TYPE_IRQ_MSK_OFFS(n) \
-	(GSI_GSI_REG_BASE_OFFS + 0x0001f088 + 0x4000 * (n))
-#define GSI_EE_n_CNTXT_TYPE_IRQ_MSK_GENERAL_BMSK 0x40
-#define GSI_EE_n_CNTXT_TYPE_IRQ_MSK_GENERAL_SHFT 0x6
-#define GSI_EE_n_CNTXT_TYPE_IRQ_MSK_INTER_EE_EV_CTRL_BMSK 0x20
-#define GSI_EE_n_CNTXT_TYPE_IRQ_MSK_INTER_EE_EV_CTRL_SHFT 0x5
-#define GSI_EE_n_CNTXT_TYPE_IRQ_MSK_INTER_EE_CH_CTRL_BMSK 0x10
-#define GSI_EE_n_CNTXT_TYPE_IRQ_MSK_INTER_EE_CH_CTRL_SHFT 0x4
-#define GSI_EE_n_CNTXT_TYPE_IRQ_MSK_IEOB_BMSK 0x8
-#define GSI_EE_n_CNTXT_TYPE_IRQ_MSK_IEOB_SHFT 0x3
-#define GSI_EE_n_CNTXT_TYPE_IRQ_MSK_GLOB_EE_BMSK 0x4
-#define GSI_EE_n_CNTXT_TYPE_IRQ_MSK_GLOB_EE_SHFT 0x2
-#define GSI_EE_n_CNTXT_TYPE_IRQ_MSK_EV_CTRL_BMSK 0x2
-#define GSI_EE_n_CNTXT_TYPE_IRQ_MSK_EV_CTRL_SHFT 0x1
-#define GSI_EE_n_CNTXT_TYPE_IRQ_MSK_CH_CTRL_BMSK 0x1
-#define GSI_EE_n_CNTXT_TYPE_IRQ_MSK_CH_CTRL_SHFT 0x0
-
-#define GSI_EE_n_CNTXT_SRC_GSI_CH_IRQ_OFFS(n) \
-	(GSI_GSI_REG_BASE_OFFS + 0x0001f090 + 0x4000 * (n))
-#define GSI_EE_n_CNTXT_SRC_GSI_CH_IRQ_GSI_CH_BIT_MAP_BMSK 0xffffffff
-#define GSI_EE_n_CNTXT_SRC_GSI_CH_IRQ_GSI_CH_BIT_MAP_SHFT 0x0
-
-#define GSI_EE_n_CNTXT_SRC_EV_CH_IRQ_OFFS(n) \
-	(GSI_GSI_REG_BASE_OFFS + 0x0001f094 + 0x4000 * (n))
-#define GSI_EE_n_CNTXT_SRC_EV_CH_IRQ_EV_CH_BIT_MAP_BMSK 0xffffffff
-#define GSI_EE_n_CNTXT_SRC_EV_CH_IRQ_EV_CH_BIT_MAP_SHFT 0x0
-
-#define GSI_EE_n_CNTXT_SRC_GSI_CH_IRQ_MSK_OFFS(n) \
-	(GSI_GSI_REG_BASE_OFFS + 0x0001f098 + 0x4000 * (n))
-#define GSI_EE_n_CNTXT_SRC_GSI_CH_IRQ_MSK_GSI_CH_BIT_MAP_MSK_BMSK 0x1ffff
-#define GSI_V2_5_EE_n_CNTXT_SRC_GSI_CH_IRQ_MSK_GSI_CH_BIT_MAP_MSK_BMSK 0x7fffff
-#define GSI_EE_n_CNTXT_SRC_GSI_CH_IRQ_MSK_GSI_CH_BIT_MAP_MSK_SHFT 0x0
-#define GSI_V2_5_EE_n_CNTXT_SRC_GSI_CH_IRQ_MSK_GSI_CH_BIT_MAP_MSK_SHFT 0x0
-
-#define GSI_EE_n_CNTXT_SRC_EV_CH_IRQ_MSK_OFFS(n) \
-	(GSI_GSI_REG_BASE_OFFS + 0x0001f09c + 0x4000 * (n))
-#define GSI_EE_n_CNTXT_SRC_EV_CH_IRQ_MSK_EV_CH_BIT_MAP_MSK_BMSK 0xfff
-#define GSI_V2_5_EE_n_CNTXT_SRC_EV_CH_IRQ_MSK_EV_CH_BIT_MAP_MSK_BMSK 0xfffff
-#define GSI_EE_n_CNTXT_SRC_EV_CH_IRQ_MSK_EV_CH_BIT_MAP_MSK_SHFT 0x0
-#define GSI_V2_5_EE_n_CNTXT_SRC_EV_CH_IRQ_MSK_EV_CH_BIT_MAP_MSK_SHFT 0x0
-
-#define GSI_EE_n_CNTXT_SRC_GSI_CH_IRQ_CLR_OFFS(n) \
-	(GSI_GSI_REG_BASE_OFFS + 0x0001f0a0 + 0x4000 * (n))
-#define GSI_EE_n_CNTXT_SRC_GSI_CH_IRQ_CLR_GSI_CH_BIT_MAP_BMSK 0xffffffff
-#define GSI_EE_n_CNTXT_SRC_GSI_CH_IRQ_CLR_GSI_CH_BIT_MAP_SHFT 0x0
-
-#define GSI_EE_n_CNTXT_SRC_EV_CH_IRQ_CLR_OFFS(n) \
-	(GSI_GSI_REG_BASE_OFFS + 0x0001f0a4 + 0x4000 * (n))
-#define GSI_EE_n_CNTXT_SRC_EV_CH_IRQ_CLR_EV_CH_BIT_MAP_BMSK 0xffffffff
-#define GSI_EE_n_CNTXT_SRC_EV_CH_IRQ_CLR_EV_CH_BIT_MAP_SHFT 0x0
-
-#define GSI_EE_n_CNTXT_SRC_IEOB_IRQ_OFFS(n) \
-	(GSI_GSI_REG_BASE_OFFS + 0x0001f0b0 + 0x4000 * (n))
-#define GSI_EE_n_CNTXT_SRC_IEOB_IRQ_EV_CH_BIT_MAP_BMSK 0xffffffff
-#define GSI_EE_n_CNTXT_SRC_IEOB_IRQ_EV_CH_BIT_MAP_SHFT 0x0
-
-#define GSI_EE_n_CNTXT_SRC_IEOB_IRQ_MSK_OFFS(n) \
-	(GSI_GSI_REG_BASE_OFFS + 0x0001f0b8 + 0x4000 * (n))
-#define GSI_EE_n_CNTXT_SRC_IEOB_IRQ_MSK_EV_CH_BIT_MAP_MSK_BMSK 0xfff
-#define GSI_V2_5_EE_n_CNTXT_SRC_IEOB_IRQ_MSK_EV_CH_BIT_MAP_MSK_BMSK 0xfffff
-#define GSI_EE_n_CNTXT_SRC_IEOB_IRQ_MSK_EV_CH_BIT_MAP_MSK_SHFT 0x0
-#define GSI_V2_5_EE_n_CNTXT_SRC_IEOB_IRQ_MSK_EV_CH_BIT_MAP_MSK_SHFT 0x0
-
-#define GSI_EE_n_CNTXT_SRC_IEOB_IRQ_CLR_OFFS(n) \
-	(GSI_GSI_REG_BASE_OFFS + 0x0001f0c0 + 0x4000 * (n))
-#define GSI_EE_n_CNTXT_SRC_IEOB_IRQ_CLR_EV_CH_BIT_MAP_BMSK 0xffffffff
-#define GSI_EE_n_CNTXT_SRC_IEOB_IRQ_CLR_EV_CH_BIT_MAP_SHFT 0x0
-
-#define GSI_EE_n_CNTXT_GLOB_IRQ_STTS_OFFS(n) \
-	(GSI_GSI_REG_BASE_OFFS + 0x0001f100 + 0x4000 * (n))
-#define GSI_EE_n_CNTXT_GLOB_IRQ_STTS_GP_INT3_BMSK 0x8
-#define GSI_EE_n_CNTXT_GLOB_IRQ_STTS_GP_INT3_SHFT 0x3
-#define GSI_EE_n_CNTXT_GLOB_IRQ_STTS_GP_INT2_BMSK 0x4
-#define GSI_EE_n_CNTXT_GLOB_IRQ_STTS_GP_INT2_SHFT 0x2
-#define GSI_EE_n_CNTXT_GLOB_IRQ_STTS_GP_INT1_BMSK 0x2
-#define GSI_EE_n_CNTXT_GLOB_IRQ_STTS_GP_INT1_SHFT 0x1
-#define GSI_EE_n_CNTXT_GLOB_IRQ_STTS_ERROR_INT_BMSK 0x1
-#define GSI_EE_n_CNTXT_GLOB_IRQ_STTS_ERROR_INT_SHFT 0x0
-
-#define GSI_EE_n_CNTXT_GLOB_IRQ_EN_OFFS(n) \
-	(GSI_GSI_REG_BASE_OFFS + 0x0001f108 + 0x4000 * (n))
-#define GSI_EE_n_CNTXT_GLOB_IRQ_EN_GP_INT3_BMSK 0x8
-#define GSI_EE_n_CNTXT_GLOB_IRQ_EN_GP_INT3_SHFT 0x3
-#define GSI_EE_n_CNTXT_GLOB_IRQ_EN_GP_INT2_BMSK 0x4
-#define GSI_EE_n_CNTXT_GLOB_IRQ_EN_GP_INT2_SHFT 0x2
-#define GSI_EE_n_CNTXT_GLOB_IRQ_EN_GP_INT1_BMSK 0x2
-#define GSI_EE_n_CNTXT_GLOB_IRQ_EN_GP_INT1_SHFT 0x1
-#define GSI_EE_n_CNTXT_GLOB_IRQ_EN_ERROR_INT_BMSK 0x1
-#define GSI_EE_n_CNTXT_GLOB_IRQ_EN_ERROR_INT_SHFT 0x0
-
-#define GSI_EE_n_CNTXT_GLOB_IRQ_CLR_OFFS(n) \
-	(GSI_GSI_REG_BASE_OFFS + 0x0001f110 + 0x4000 * (n))
-#define GSI_EE_n_CNTXT_GLOB_IRQ_CLR_GP_INT3_BMSK 0x8
-#define GSI_EE_n_CNTXT_GLOB_IRQ_CLR_GP_INT3_SHFT 0x3
-#define GSI_EE_n_CNTXT_GLOB_IRQ_CLR_GP_INT2_BMSK 0x4
-#define GSI_EE_n_CNTXT_GLOB_IRQ_CLR_GP_INT2_SHFT 0x2
-#define GSI_EE_n_CNTXT_GLOB_IRQ_CLR_GP_INT1_BMSK 0x2
-#define GSI_EE_n_CNTXT_GLOB_IRQ_CLR_GP_INT1_SHFT 0x1
-#define GSI_EE_n_CNTXT_GLOB_IRQ_CLR_ERROR_INT_BMSK 0x1
-#define GSI_EE_n_CNTXT_GLOB_IRQ_CLR_ERROR_INT_SHFT 0x0
-
-#define GSI_EE_n_CNTXT_GSI_IRQ_STTS_OFFS(n) \
-	(GSI_GSI_REG_BASE_OFFS + 0x0001f118 + 0x4000 * (n))
-#define GSI_EE_n_CNTXT_GSI_IRQ_STTS_GSI_MCS_STACK_OVRFLOW_BMSK 0x8
-#define GSI_EE_n_CNTXT_GSI_IRQ_STTS_GSI_MCS_STACK_OVRFLOW_SHFT 0x3
-#define GSI_EE_n_CNTXT_GSI_IRQ_STTS_GSI_CMD_FIFO_OVRFLOW_BMSK 0x4
-#define GSI_EE_n_CNTXT_GSI_IRQ_STTS_GSI_CMD_FIFO_OVRFLOW_SHFT 0x2
-#define GSI_EE_n_CNTXT_GSI_IRQ_STTS_GSI_BUS_ERROR_BMSK 0x2
-#define GSI_EE_n_CNTXT_GSI_IRQ_STTS_GSI_BUS_ERROR_SHFT 0x1
-#define GSI_EE_n_CNTXT_GSI_IRQ_STTS_GSI_BREAK_POINT_BMSK 0x1
-#define GSI_EE_n_CNTXT_GSI_IRQ_STTS_GSI_BREAK_POINT_SHFT 0x0
-
-#define GSI_EE_n_CNTXT_GSI_IRQ_EN_OFFS(n) \
-	(GSI_GSI_REG_BASE_OFFS + 0x0001f120 + 0x4000 * (n))
-#define GSI_EE_n_CNTXT_GSI_IRQ_EN_GSI_MCS_STACK_OVRFLOW_BMSK 0x8
-#define GSI_EE_n_CNTXT_GSI_IRQ_EN_GSI_MCS_STACK_OVRFLOW_SHFT 0x3
-#define GSI_EE_n_CNTXT_GSI_IRQ_EN_GSI_CMD_FIFO_OVRFLOW_BMSK 0x4
-#define GSI_EE_n_CNTXT_GSI_IRQ_EN_GSI_CMD_FIFO_OVRFLOW_SHFT 0x2
-#define GSI_EE_n_CNTXT_GSI_IRQ_EN_GSI_BUS_ERROR_BMSK 0x2
-#define GSI_EE_n_CNTXT_GSI_IRQ_EN_GSI_BUS_ERROR_SHFT 0x1
-#define GSI_EE_n_CNTXT_GSI_IRQ_EN_GSI_BREAK_POINT_BMSK 0x1
-#define GSI_EE_n_CNTXT_GSI_IRQ_EN_GSI_BREAK_POINT_SHFT 0x0
-
-#define GSI_EE_n_CNTXT_GSI_IRQ_CLR_OFFS(n) \
-	(GSI_GSI_REG_BASE_OFFS + 0x0001f128 + 0x4000 * (n))
-#define GSI_EE_n_CNTXT_GSI_IRQ_CLR_GSI_MCS_STACK_OVRFLOW_BMSK 0x8
-#define GSI_EE_n_CNTXT_GSI_IRQ_CLR_GSI_MCS_STACK_OVRFLOW_SHFT 0x3
-#define GSI_EE_n_CNTXT_GSI_IRQ_CLR_GSI_CMD_FIFO_OVRFLOW_BMSK 0x4
-#define GSI_EE_n_CNTXT_GSI_IRQ_CLR_GSI_CMD_FIFO_OVRFLOW_SHFT 0x2
-#define GSI_EE_n_CNTXT_GSI_IRQ_CLR_GSI_BUS_ERROR_BMSK 0x2
-#define GSI_EE_n_CNTXT_GSI_IRQ_CLR_GSI_BUS_ERROR_SHFT 0x1
-#define GSI_EE_n_CNTXT_GSI_IRQ_CLR_GSI_BREAK_POINT_BMSK 0x1
-#define GSI_EE_n_CNTXT_GSI_IRQ_CLR_GSI_BREAK_POINT_SHFT 0x0
-
-#define GSI_EE_n_CNTXT_MSI_BASE_LSB(n) \
-	(GSI_GSI_REG_BASE_OFFS + 0x0001f188 + 0x4000 * (n))
-#define GSI_EE_n_CNTXT_MSI_BASE_MSB(n) \
-	(GSI_GSI_REG_BASE_OFFS + 0x0001f18c + 0x4000 * (n))
-
-#define GSI_EE_n_CNTXT_INTSET_OFFS(n) \
-	(GSI_GSI_REG_BASE_OFFS + 0x0001f180 + 0x4000 * (n))
-#define GSI_EE_n_CNTXT_INTSET_INTYPE_BMSK 0x1
-#define GSI_EE_n_CNTXT_INTSET_INTYPE_SHFT 0x0
-
-#define GSI_EE_n_ERROR_LOG_OFFS(n) \
-	(GSI_GSI_REG_BASE_OFFS + 0x0001f200 + 0x4000 * (n))
-#define GSI_EE_n_ERROR_LOG_TODO_BMSK 0xffffffff
-#define GSI_EE_n_ERROR_LOG_TODO_SHFT 0x0
-
-#define GSI_EE_n_ERROR_LOG_CLR_OFFS(n) \
-	(GSI_GSI_REG_BASE_OFFS + 0x0001f210 + 0x4000 * (n))
-#define GSI_EE_n_ERROR_LOG_CLR_TODO_BMSK 0xffffffff
-#define GSI_EE_n_ERROR_LOG_CLR_TODO_SHFT 0x0
-
-#define GSI_EE_n_CNTXT_SCRATCH_0_OFFS(n) \
-	(GSI_GSI_REG_BASE_OFFS + 0x0001f400 + 0x4000 * (n))
-#define GSI_EE_n_CNTXT_SCRATCH_0_SCRATCH_BMSK 0xffffffff
-#define GSI_EE_n_CNTXT_SCRATCH_0_SCRATCH_SHFT 0x0
-
-#define GSI_INTER_EE_n_SRC_GSI_CH_IRQ_OFFS(n) \
-	(GSI_GSI_REG_BASE_OFFS + 0x0000c018 + 0x1000 * (n))
-#define GSI_INTER_EE_n_SRC_GSI_CH_IRQ_GSI_CH_BIT_MAP_BMSK 0xffffffff
-#define GSI_INTER_EE_n_SRC_GSI_CH_IRQ_GSI_CH_BIT_MAP_SHFT 0x0
-
-#define GSI_INTER_EE_n_SRC_EV_CH_IRQ_OFFS(n) \
-	(GSI_GSI_REG_BASE_OFFS + 0x0000c01c + 0x1000 * (n))
-#define GSI_INTER_EE_n_SRC_EV_CH_IRQ_EV_CH_BIT_MAP_BMSK 0xffffffff
-#define GSI_INTER_EE_n_SRC_EV_CH_IRQ_EV_CH_BIT_MAP_SHFT 0x0
-
-#define GSI_INTER_EE_n_SRC_GSI_CH_IRQ_CLR_OFFS(n) \
-	(GSI_GSI_REG_BASE_OFFS + 0x0000c028 + 0x1000 * (n))
-#define GSI_INTER_EE_n_SRC_GSI_CH_IRQ_CLR_GSI_CH_BIT_MAP_BMSK 0xffffffff
-#define GSI_INTER_EE_n_SRC_GSI_CH_IRQ_CLR_GSI_CH_BIT_MAP_SHFT 0x0
-
-#define GSI_INTER_EE_n_SRC_EV_CH_IRQ_CLR_OFFS(n) \
-	(GSI_GSI_REG_BASE_OFFS + 0x0000c02c + 0x1000 * (n))
-#define GSI_INTER_EE_n_SRC_EV_CH_IRQ_CLR_EV_CH_BIT_MAP_BMSK 0xffffffff
-#define GSI_INTER_EE_n_SRC_EV_CH_IRQ_CLR_EV_CH_BIT_MAP_SHFT 0x0
-
-#define GSI_V2_5_GSI_MAP_EE_n_CH_k_VP_TABLE_OFFS(k, n) \
-	(GSI_GSI_REG_BASE_OFFS + 0x00003800 + 0x80 * (n) + 0x4 * (k))
-#define GSI_V2_5_GSI_MAP_EE_n_CH_k_VP_TABLE_VALID_BMSK 0x20
-#define GSI_V2_5_GSI_MAP_EE_n_CH_k_VP_TABLE_VALID_SHFT 0x5
-#define GSI_V2_5_GSI_MAP_EE_n_CH_k_VP_TABLE_PHY_CH_BMSK 0x1f
-#define GSI_V2_5_GSI_MAP_EE_n_CH_k_VP_TABLE_PHY_CH_SHFT 0x0
-
-#define GSI_V2_7_EE_n_GSI_HW_PARAM_2_OFFS(n) \
-			(GSI_GSI_REG_BASE_OFFS + 0x00012040 + 0x4000 * (n))
-#define GSI_V2_7_EE_n_GSI_HW_PARAM_2_GSI_USE_INTER_EE_BMSK 0x8000
-#define GSI_V2_7_EE_n_GSI_HW_PARAM_2_GSI_USE_INTER_EE_SHFT 0xf
-#define GSI_V2_7_EE_n_GSI_HW_PARAM_2_GSI_USE_RD_WR_ENG_BMSK 0x4000
-#define GSI_V2_7_EE_n_GSI_HW_PARAM_2_GSI_USE_RD_WR_ENG_SHFT 0xE
-#define GSI_V2_7_EE_n_GSI_HW_PARAM_2_RMSK 0x7fff
-#define GSI_V2_7_EE_n_GSI_HW_PARAM_2_MAXn 2
-#define GSI_V2_7_EE_n_GSI_HW_PARAM_2_GSI_SDMA_N_IOVEC_BMSK 0x38000000
-#define GSI_V2_7_EE_n_GSI_HW_PARAM_2_GSI_SDMA_N_IOVEC_SHFT 0x1b
-#define GSI_V2_7_EE_n_GSI_HW_PARAM_2_GSI_SDMA_MAX_BURST_BMSK 0x7F80000
-#define GSI_V2_7_EE_n_GSI_HW_PARAM_2_GSI_SDMA_MAX_BURST_SHFT 0x13
-#define GSI_V2_7_EE_n_GSI_HW_PARAM_2_GSI_SDMA_N_INT_BMSK 0x70000
-#define GSI_V2_7_EE_n_GSI_HW_PARAM_2_GSI_SDMA_N_INT_SHFT 0x10
-#define GSI_V2_7_EE_n_GSI_HW_PARAM_2_GSI_USE_SDMA_BMSK 0x8000
-#define GSI_V2_7_EE_n_GSI_HW_PARAM_2_GSI_USE_SDMA_SHFT 0xf
-#define GSI_V2_7_EE_n_GSI_HW_PARAM_2_GSI_CH_FULL_LOGIC_BMSK 0x4000
-#define GSI_V2_7_EE_n_GSI_HW_PARAM_2_GSI_CH_FULL_LOGIC_SHFT 0xe
-#define GSI_V2_7_EE_n_GSI_HW_PARAM_2_GSI_CH_PEND_TRANSLATE_BMSK 0x2000
-#define GSI_V2_7_EE_n_GSI_HW_PARAM_2_GSI_CH_PEND_TRANSLATE_SHFT 0xd
-#define GSI_V2_7_EE_n_GSI_HW_PARAM_2_GSI_NUM_EV_PER_EE_BMSK 0x1f00
-#define GSI_V2_7_EE_n_GSI_HW_PARAM_2_GSI_NUM_EV_PER_EE_SHFT 0x8
-#define GSI_V2_7_EE_n_GSI_HW_PARAM_2_GSI_NUM_CH_PER_EE_BMSK 0xf8
-#define GSI_V2_7_EE_n_GSI_HW_PARAM_2_GSI_NUM_CH_PER_EE_SHFT 0x3
-#define GSI_V2_7_EE_n_GSI_HW_PARAM_2_GSI_IRAM_SIZE_BMSK 0x7
-#define GSI_V2_7_EE_n_GSI_HW_PARAM_2_GSI_IRAM_SIZE_SHFT 0x0
-#define GSI_V2_7_EE_n_GSI_HW_PARAM_2_GSI_IRAM_SIZE_ONE_KB_FVAL 0x0
-#define GSI_V2_7_EE_n_GSI_HW_PARAM_2_GSI_IRAM_SIZE_TWO_KB_FVAL 0x1
-#define GSI_V2_7_EE_n_GSI_HW_PARAM_2_GSI_IRAM_SIZE_TWO_N_HALF_KB_FVAL 0x2
-#define GSI_V2_7_EE_n_GSI_HW_PARAM_2_GSI_IRAM_SIZE_THREE_KB_FVAL 0x3
-#define GSI_V2_7_EE_n_GSI_HW_PARAM_2_GSI_IRAM_SIZE_THREE_N_HALF_KB_FVAL 0x4
-#define GSI_V2_7_EE_n_GSI_HW_PARAM_2_GSI_IRAM_SIZE_FOUR_KB_FVAL 0x5
-
-#endif /* __GSI_REG_V1_H__ */

+ 0 - 1197
drivers/platform/msm/gsi/gsi_reg_v2.h

@@ -1,1197 +0,0 @@
-/* SPDX-License-Identifier: GPL-2.0-only */
-/*
- * Copyright (c) 2015-2020, The Linux Foundation. All rights reserved.
- */
-
-#ifndef __GSI_REG_V2_H__
-#define __GSI_REG_V2_H__
-
-#define GSI_GSI_REG_BASE_OFFS 0
-
-#define GSI_GSI_CFG_OFFS \
-	(GSI_GSI_REG_BASE_OFFS + 0x00000000)
-#define GSI_V2_5_GSI_CFG_SLEEP_CLK_DIV_BMSK 0xf00
-#define GSI_V2_5_GSI_CFG_SLEEP_CLK_DIV_SHFT 0x8
-#define GSI_GSI_CFG_BP_MTRIX_DISABLE_BMSK 0x20
-#define GSI_GSI_CFG_BP_MTRIX_DISABLE_SHFT 0x5
-#define GSI_GSI_CFG_GSI_PWR_CLPS_BMSK 0x10
-#define GSI_GSI_CFG_GSI_PWR_CLPS_SHFT 0x4
-#define GSI_GSI_CFG_UC_IS_MCS_BMSK 0x8
-#define GSI_GSI_CFG_UC_IS_MCS_SHFT 0x3
-#define GSI_GSI_CFG_DOUBLE_MCS_CLK_FREQ_BMSK 0x4
-#define GSI_GSI_CFG_DOUBLE_MCS_CLK_FREQ_SHFT 0x2
-#define GSI_GSI_CFG_MCS_ENABLE_BMSK 0x2
-#define GSI_GSI_CFG_MCS_ENABLE_SHFT 0x1
-#define GSI_GSI_CFG_GSI_ENABLE_BMSK 0x1
-#define GSI_GSI_CFG_GSI_ENABLE_SHFT 0x0
-
-#define GSI_GSI_MCS_CFG_OFFS \
-	(GSI_GSI_REG_BASE_OFFS + 0x0000B000)
-#define GSI_GSI_MCS_CFG_MCS_ENABLE_BMSK 0x1
-#define GSI_GSI_MCS_CFG_MCS_ENABLE_SHFT 0x0
-
-#define GSI_GSI_PERIPH_BASE_ADDR_LSB_OFFS \
-	(GSI_GSI_REG_BASE_OFFS + 0x00000018)
-#define GSI_GSI_PERIPH_BASE_ADDR_LSB_RMSK 0xffffffff
-#define GSI_GSI_PERIPH_BASE_ADDR_LSB_BASE_ADDR_BMSK 0xffffffff
-#define GSI_GSI_PERIPH_BASE_ADDR_LSB_BASE_ADDR_SHFT 0x0
-
-#define GSI_GSI_PERIPH_BASE_ADDR_MSB_OFFS \
-	(GSI_GSI_REG_BASE_OFFS + 0x0000001c)
-#define GSI_GSI_PERIPH_BASE_ADDR_MSB_RMSK 0xffffffff
-#define GSI_GSI_PERIPH_BASE_ADDR_MSB_BASE_ADDR_BMSK 0xffffffff
-#define GSI_GSI_PERIPH_BASE_ADDR_MSB_BASE_ADDR_SHFT 0x0
-
-#define GSI_IC_DISABLE_CHNL_BCK_PRS_LSB_OFFS \
-	(GSI_GSI_REG_BASE_OFFS + 0x000000a0)
-#define GSI_IC_DISABLE_CHNL_BCK_PRS_LSB_RMSK 0x3ffc1047
-#define GSI_IC_DISABLE_CHNL_BCK_PRS_LSB_TLV_INT_BMSK 0x3f000000
-#define GSI_IC_DISABLE_CHNL_BCK_PRS_LSB_TLV_INT_SHFT 0x18
-#define GSI_IC_DISABLE_CHNL_BCK_PRS_LSB_CSR_INT_BMSK 0xfc0000
-#define GSI_IC_DISABLE_CHNL_BCK_PRS_LSB_CSR_INT_SHFT 0x12
-#define GSI_IC_DISABLE_CHNL_BCK_PRS_LSB_INT_END_INT_BMSK 0x1000
-#define GSI_IC_DISABLE_CHNL_BCK_PRS_LSB_INT_END_INT_SHFT 0xc
-#define GSI_IC_DISABLE_CHNL_BCK_PRS_LSB_EV_ENG_INT_BMSK 0x40
-#define GSI_IC_DISABLE_CHNL_BCK_PRS_LSB_EV_ENG_INT_SHFT 0x6
-#define GSI_IC_DISABLE_CHNL_BCK_PRS_LSB_REE_INT_BMSK 0x7
-#define GSI_IC_DISABLE_CHNL_BCK_PRS_LSB_REE_INT_SHFT 0x0
-
-#define GSI_IC_DISABLE_CHNL_BCK_PRS_MSB_OFFS \
-	(GSI_GSI_REG_BASE_OFFS + 0x000000a4)
-#define GSI_IC_DISABLE_CHNL_BCK_PRS_MSB_RMSK 0xfc3041
-#define GSI_IC_DISABLE_CHNL_BCK_PRS_MSB_UCONTROLLER_INT_BMSK 0xfc0000
-#define GSI_IC_DISABLE_CHNL_BCK_PRS_MSB_UCONTROLLER_INT_SHFT 0x12
-#define GSI_IC_DISABLE_CHNL_BCK_PRS_MSB_RD_WR_INT_BMSK 0x3000
-#define GSI_IC_DISABLE_CHNL_BCK_PRS_MSB_RD_WR_INT_SHFT 0xc
-#define GSI_IC_DISABLE_CHNL_BCK_PRS_MSB_DB_ENG_INT_BMSK 0x40
-#define GSI_IC_DISABLE_CHNL_BCK_PRS_MSB_DB_ENG_INT_SHFT 0x6
-#define GSI_IC_DISABLE_CHNL_BCK_PRS_MSB_TIMER_INT_BMSK 0x1
-#define GSI_IC_DISABLE_CHNL_BCK_PRS_MSB_TIMER_INT_SHFT 0x0
-
-#define GSI_IC_GEN_EVNT_BCK_PRS_LSB_OFFS \
-	(GSI_GSI_REG_BASE_OFFS + 0x000000a8)
-#define GSI_IC_GEN_EVNT_BCK_PRS_LSB_RMSK 0x3ffc1047
-#define GSI_IC_GEN_EVNT_BCK_PRS_LSB_TLV_INT_BMSK 0x3f000000
-#define GSI_IC_GEN_EVNT_BCK_PRS_LSB_TLV_INT_SHFT 0x18
-#define GSI_IC_GEN_EVNT_BCK_PRS_LSB_CSR_INT_BMSK 0xfc0000
-#define GSI_IC_GEN_EVNT_BCK_PRS_LSB_CSR_INT_SHFT 0x12
-#define GSI_IC_GEN_EVNT_BCK_PRS_LSB_INT_END_INT_BMSK 0x1000
-#define GSI_IC_GEN_EVNT_BCK_PRS_LSB_INT_END_INT_SHFT 0xc
-#define GSI_IC_GEN_EVNT_BCK_PRS_LSB_EV_ENG_INT_BMSK 0x40
-#define GSI_IC_GEN_EVNT_BCK_PRS_LSB_EV_ENG_INT_SHFT 0x6
-#define GSI_IC_GEN_EVNT_BCK_PRS_LSB_REE_INT_BMSK 0x7
-#define GSI_IC_GEN_EVNT_BCK_PRS_LSB_REE_INT_SHFT 0x0
-
-#define GSI_IC_GEN_EVNT_BCK_PRS_MSB_OFFS \
-	(GSI_GSI_REG_BASE_OFFS + 0x000000ac)
-#define GSI_IC_GEN_EVNT_BCK_PRS_MSB_RMSK 0xfc3041
-#define GSI_IC_GEN_EVNT_BCK_PRS_MSB_UCONTROLLER_INT_BMSK 0xfc0000
-#define GSI_IC_GEN_EVNT_BCK_PRS_MSB_UCONTROLLER_INT_SHFT 0x12
-#define GSI_IC_GEN_EVNT_BCK_PRS_MSB_RD_WR_INT_BMSK 0x3000
-#define GSI_IC_GEN_EVNT_BCK_PRS_MSB_RD_WR_INT_SHFT 0xc
-#define GSI_IC_GEN_EVNT_BCK_PRS_MSB_DB_ENG_INT_BMSK 0x40
-#define GSI_IC_GEN_EVNT_BCK_PRS_MSB_DB_ENG_INT_SHFT 0x6
-#define GSI_IC_GEN_EVNT_BCK_PRS_MSB_TIMER_INT_BMSK 0x1
-#define GSI_IC_GEN_EVNT_BCK_PRS_MSB_TIMER_INT_SHFT 0x0
-
-#define GSI_IC_GEN_INT_BCK_PRS_LSB_OFFS \
-	(GSI_GSI_REG_BASE_OFFS + 0x000000b0)
-#define GSI_IC_GEN_INT_BCK_PRS_LSB_RMSK 0x3ffc1047
-#define GSI_IC_GEN_INT_BCK_PRS_LSB_TLV_INT_BMSK 0x3f000000
-#define GSI_IC_GEN_INT_BCK_PRS_LSB_TLV_INT_SHFT 0x18
-#define GSI_IC_GEN_INT_BCK_PRS_LSB_CSR_INT_BMSK 0xfc0000
-#define GSI_IC_GEN_INT_BCK_PRS_LSB_CSR_INT_SHFT 0x12
-#define GSI_IC_GEN_INT_BCK_PRS_LSB_INT_END_INT_BMSK 0x1000
-#define GSI_IC_GEN_INT_BCK_PRS_LSB_INT_END_INT_SHFT 0xc
-#define GSI_IC_GEN_INT_BCK_PRS_LSB_EV_ENG_INT_BMSK 0x40
-#define GSI_IC_GEN_INT_BCK_PRS_LSB_EV_ENG_INT_SHFT 0x6
-#define GSI_IC_GEN_INT_BCK_PRS_LSB_REE_INT_BMSK 0x7
-#define GSI_IC_GEN_INT_BCK_PRS_LSB_REE_INT_SHFT 0x0
-
-#define GSI_IC_GEN_INT_BCK_PRS_MSB_OFFS \
-	(GSI_GSI_REG_BASE_OFFS + 0x000000b4)
-#define GSI_IC_GEN_INT_BCK_PRS_MSB_RMSK 0xfc3041
-#define GSI_IC_GEN_INT_BCK_PRS_MSB_UCONTROLLER_INT_BMSK 0xfc0000
-#define GSI_IC_GEN_INT_BCK_PRS_MSB_UCONTROLLER_INT_SHFT 0x12
-#define GSI_IC_GEN_INT_BCK_PRS_MSB_RD_WR_INT_BMSK 0x3000
-#define GSI_IC_GEN_INT_BCK_PRS_MSB_RD_WR_INT_SHFT 0xc
-#define GSI_IC_GEN_INT_BCK_PRS_MSB_DB_ENG_INT_BMSK 0x40
-#define GSI_IC_GEN_INT_BCK_PRS_MSB_DB_ENG_INT_SHFT 0x6
-#define GSI_IC_GEN_INT_BCK_PRS_MSB_TIMER_INT_BMSK 0x1
-#define GSI_IC_GEN_INT_BCK_PRS_MSB_TIMER_INT_SHFT 0x0
-
-#define GSI_IC_STOP_INT_MOD_BCK_PRS_LSB_OFFS \
-	(GSI_GSI_REG_BASE_OFFS + 0x000000b8)
-#define GSI_IC_STOP_INT_MOD_BCK_PRS_LSB_RMSK 0x3ffc1047
-#define GSI_IC_STOP_INT_MOD_BCK_PRS_LSB_TLV_INT_BMSK 0x3f000000
-#define GSI_IC_STOP_INT_MOD_BCK_PRS_LSB_TLV_INT_SHFT 0x18
-#define GSI_IC_STOP_INT_MOD_BCK_PRS_LSB_CSR_INT_BMSK 0xfc0000
-#define GSI_IC_STOP_INT_MOD_BCK_PRS_LSB_CSR_INT_SHFT 0x12
-#define GSI_IC_STOP_INT_MOD_BCK_PRS_LSB_INT_END_INT_BMSK 0x1000
-#define GSI_IC_STOP_INT_MOD_BCK_PRS_LSB_INT_END_INT_SHFT 0xc
-#define GSI_IC_STOP_INT_MOD_BCK_PRS_LSB_EV_ENG_INT_BMSK 0x40
-#define GSI_IC_STOP_INT_MOD_BCK_PRS_LSB_EV_ENG_INT_SHFT 0x6
-#define GSI_IC_STOP_INT_MOD_BCK_PRS_LSB_REE_INT_BMSK 0x7
-#define GSI_IC_STOP_INT_MOD_BCK_PRS_LSB_REE_INT_SHFT 0x0
-
-#define GSI_IC_STOP_INT_MOD_BCK_PRS_MSB_OFFS \
-	(GSI_GSI_REG_BASE_OFFS + 0x000000bc)
-#define GSI_IC_STOP_INT_MOD_BCK_PRS_MSB_RMSK 0xfc3041
-#define GSI_IC_STOP_INT_MOD_BCK_PRS_MSB_UCONTROLLER_INT_BMSK 0xfc0000
-#define GSI_IC_STOP_INT_MOD_BCK_PRS_MSB_UCONTROLLER_INT_SHFT 0x12
-#define GSI_IC_STOP_INT_MOD_BCK_PRS_MSB_RD_WR_INT_BMSK 0x3000
-#define GSI_IC_STOP_INT_MOD_BCK_PRS_MSB_RD_WR_INT_SHFT 0xc
-#define GSI_IC_STOP_INT_MOD_BCK_PRS_MSB_DB_ENG_INT_BMSK 0x40
-#define GSI_IC_STOP_INT_MOD_BCK_PRS_MSB_DB_ENG_INT_SHFT 0x6
-#define GSI_IC_STOP_INT_MOD_BCK_PRS_MSB_TIMER_INT_BMSK 0x1
-#define GSI_IC_STOP_INT_MOD_BCK_PRS_MSB_TIMER_INT_SHFT 0x0
-
-#define GSI_IC_PROCESS_DESC_BCK_PRS_LSB_OFFS \
-	(GSI_GSI_REG_BASE_OFFS + 0x000000c0)
-#define GSI_IC_PROCESS_DESC_BCK_PRS_LSB_RMSK 0x3ffc1047
-#define GSI_IC_PROCESS_DESC_BCK_PRS_LSB_TLV_INT_BMSK 0x3f000000
-#define GSI_IC_PROCESS_DESC_BCK_PRS_LSB_TLV_INT_SHFT 0x18
-#define GSI_IC_PROCESS_DESC_BCK_PRS_LSB_CSR_INT_BMSK 0xfc0000
-#define GSI_IC_PROCESS_DESC_BCK_PRS_LSB_CSR_INT_SHFT 0x12
-#define GSI_IC_PROCESS_DESC_BCK_PRS_LSB_INT_END_INT_BMSK 0x1000
-#define GSI_IC_PROCESS_DESC_BCK_PRS_LSB_INT_END_INT_SHFT 0xc
-#define GSI_IC_PROCESS_DESC_BCK_PRS_LSB_EV_ENG_INT_BMSK 0x40
-#define GSI_IC_PROCESS_DESC_BCK_PRS_LSB_EV_ENG_INT_SHFT 0x6
-#define GSI_IC_PROCESS_DESC_BCK_PRS_LSB_REE_INT_BMSK 0x7
-#define GSI_IC_PROCESS_DESC_BCK_PRS_LSB_REE_INT_SHFT 0x0
-
-#define GSI_IC_PROCESS_DESC_BCK_PRS_MSB_OFFS \
-	(GSI_GSI_REG_BASE_OFFS + 0x000000c4)
-#define GSI_IC_PROCESS_DESC_BCK_PRS_MSB_RMSK 0xfc3041
-#define GSI_IC_PROCESS_DESC_BCK_PRS_MSB_UCONTROLLER_INT_BMSK 0xfc0000
-#define GSI_IC_PROCESS_DESC_BCK_PRS_MSB_UCONTROLLER_INT_SHFT 0x12
-#define GSI_IC_PROCESS_DESC_BCK_PRS_MSB_RD_WR_INT_BMSK 0x3000
-#define GSI_IC_PROCESS_DESC_BCK_PRS_MSB_RD_WR_INT_SHFT 0xc
-#define GSI_IC_PROCESS_DESC_BCK_PRS_MSB_DB_ENG_INT_BMSK 0x40
-#define GSI_IC_PROCESS_DESC_BCK_PRS_MSB_DB_ENG_INT_SHFT 0x6
-#define GSI_IC_PROCESS_DESC_BCK_PRS_MSB_TIMER_INT_BMSK 0x1
-#define GSI_IC_PROCESS_DESC_BCK_PRS_MSB_TIMER_INT_SHFT 0x0
-
-#define GSI_IC_TLV_STOP_BCK_PRS_LSB_OFFS \
-	(GSI_GSI_REG_BASE_OFFS + 0x000000c8)
-#define GSI_IC_TLV_STOP_BCK_PRS_LSB_RMSK 0x3ffc1047
-#define GSI_IC_TLV_STOP_BCK_PRS_LSB_TLV_INT_BMSK 0x3f000000
-#define GSI_IC_TLV_STOP_BCK_PRS_LSB_TLV_INT_SHFT 0x18
-#define GSI_IC_TLV_STOP_BCK_PRS_LSB_CSR_INT_BMSK 0xfc0000
-#define GSI_IC_TLV_STOP_BCK_PRS_LSB_CSR_INT_SHFT 0x12
-#define GSI_IC_TLV_STOP_BCK_PRS_LSB_INT_END_INT_BMSK 0x1000
-#define GSI_IC_TLV_STOP_BCK_PRS_LSB_INT_END_INT_SHFT 0xc
-#define GSI_IC_TLV_STOP_BCK_PRS_LSB_EV_ENG_INT_BMSK 0x40
-#define GSI_IC_TLV_STOP_BCK_PRS_LSB_EV_ENG_INT_SHFT 0x6
-#define GSI_IC_TLV_STOP_BCK_PRS_LSB_REE_INT_BMSK 0x7
-#define GSI_IC_TLV_STOP_BCK_PRS_LSB_REE_INT_SHFT 0x0
-
-#define GSI_IC_TLV_STOP_BCK_PRS_MSB_OFFS \
-	(GSI_GSI_REG_BASE_OFFS + 0x000000cc)
-#define GSI_IC_TLV_STOP_BCK_PRS_MSB_RMSK 0xfc3041
-#define GSI_IC_TLV_STOP_BCK_PRS_MSB_UCONTROLLER_INT_BMSK 0xfc0000
-#define GSI_IC_TLV_STOP_BCK_PRS_MSB_UCONTROLLER_INT_SHFT 0x12
-#define GSI_IC_TLV_STOP_BCK_PRS_MSB_RD_WR_INT_BMSK 0x3000
-#define GSI_IC_TLV_STOP_BCK_PRS_MSB_RD_WR_INT_SHFT 0xc
-#define GSI_IC_TLV_STOP_BCK_PRS_MSB_DB_ENG_INT_BMSK 0x40
-#define GSI_IC_TLV_STOP_BCK_PRS_MSB_DB_ENG_INT_SHFT 0x6
-#define GSI_IC_TLV_STOP_BCK_PRS_MSB_TIMER_INT_BMSK 0x1
-#define GSI_IC_TLV_STOP_BCK_PRS_MSB_TIMER_INT_SHFT 0x0
-
-#define GSI_IC_TLV_RESET_BCK_PRS_LSB_OFFS \
-	(GSI_GSI_REG_BASE_OFFS + 0x000000d0)
-#define GSI_IC_TLV_RESET_BCK_PRS_LSB_RMSK 0x3ffc1047
-#define GSI_IC_TLV_RESET_BCK_PRS_LSB_TLV_INT_BMSK 0x3f000000
-#define GSI_IC_TLV_RESET_BCK_PRS_LSB_TLV_INT_SHFT 0x18
-#define GSI_IC_TLV_RESET_BCK_PRS_LSB_CSR_INT_BMSK 0xfc0000
-#define GSI_IC_TLV_RESET_BCK_PRS_LSB_CSR_INT_SHFT 0x12
-#define GSI_IC_TLV_RESET_BCK_PRS_LSB_INT_END_INT_BMSK 0x1000
-#define GSI_IC_TLV_RESET_BCK_PRS_LSB_INT_END_INT_SHFT 0xc
-#define GSI_IC_TLV_RESET_BCK_PRS_LSB_EV_ENG_INT_BMSK 0x40
-#define GSI_IC_TLV_RESET_BCK_PRS_LSB_EV_ENG_INT_SHFT 0x6
-#define GSI_IC_TLV_RESET_BCK_PRS_LSB_REE_INT_BMSK 0x7
-#define GSI_IC_TLV_RESET_BCK_PRS_LSB_REE_INT_SHFT 0x0
-
-#define GSI_IC_TLV_RESET_BCK_PRS_MSB_OFFS \
-	(GSI_GSI_REG_BASE_OFFS + 0x000000d4)
-#define GSI_IC_TLV_RESET_BCK_PRS_MSB_RMSK 0xfc3041
-#define GSI_IC_TLV_RESET_BCK_PRS_MSB_UCONTROLLER_INT_BMSK 0xfc0000
-#define GSI_IC_TLV_RESET_BCK_PRS_MSB_UCONTROLLER_INT_SHFT 0x12
-#define GSI_IC_TLV_RESET_BCK_PRS_MSB_RD_WR_INT_BMSK 0x3000
-#define GSI_IC_TLV_RESET_BCK_PRS_MSB_RD_WR_INT_SHFT 0xc
-#define GSI_IC_TLV_RESET_BCK_PRS_MSB_DB_ENG_INT_BMSK 0x40
-#define GSI_IC_TLV_RESET_BCK_PRS_MSB_DB_ENG_INT_SHFT 0x6
-#define GSI_IC_TLV_RESET_BCK_PRS_MSB_TIMER_INT_BMSK 0x1
-#define GSI_IC_TLV_RESET_BCK_PRS_MSB_TIMER_INT_SHFT 0x0
-
-#define GSI_IC_RGSTR_TIMER_BCK_PRS_LSB_OFFS \
-	(GSI_GSI_REG_BASE_OFFS + 0x000000d8)
-#define GSI_IC_RGSTR_TIMER_BCK_PRS_LSB_RMSK 0x3ffc1047
-#define GSI_IC_RGSTR_TIMER_BCK_PRS_LSB_TLV_INT_BMSK 0x3f000000
-#define GSI_IC_RGSTR_TIMER_BCK_PRS_LSB_TLV_INT_SHFT 0x18
-#define GSI_IC_RGSTR_TIMER_BCK_PRS_LSB_CSR_INT_BMSK 0xfc0000
-#define GSI_IC_RGSTR_TIMER_BCK_PRS_LSB_CSR_INT_SHFT 0x12
-#define GSI_IC_RGSTR_TIMER_BCK_PRS_LSB_INT_END_INT_BMSK 0x1000
-#define GSI_IC_RGSTR_TIMER_BCK_PRS_LSB_INT_END_INT_SHFT 0xc
-#define GSI_IC_RGSTR_TIMER_BCK_PRS_LSB_EV_ENG_INT_BMSK 0x40
-#define GSI_IC_RGSTR_TIMER_BCK_PRS_LSB_EV_ENG_INT_SHFT 0x6
-#define GSI_IC_RGSTR_TIMER_BCK_PRS_LSB_REE_INT_BMSK 0x7
-#define GSI_IC_RGSTR_TIMER_BCK_PRS_LSB_REE_INT_SHFT 0x0
-
-#define GSI_IC_RGSTR_TIMER_BCK_PRS_MSB_OFFS \
-	(GSI_GSI_REG_BASE_OFFS + 0x000000dc)
-#define GSI_IC_RGSTR_TIMER_BCK_PRS_MSB_RMSK 0xfc3041
-#define GSI_IC_RGSTR_TIMER_BCK_PRS_MSB_UCONTROLLER_INT_BMSK 0xfc0000
-#define GSI_IC_RGSTR_TIMER_BCK_PRS_MSB_UCONTROLLER_INT_SHFT 0x12
-#define GSI_IC_RGSTR_TIMER_BCK_PRS_MSB_RD_WR_INT_BMSK 0x3000
-#define GSI_IC_RGSTR_TIMER_BCK_PRS_MSB_RD_WR_INT_SHFT 0xc
-#define GSI_IC_RGSTR_TIMER_BCK_PRS_MSB_DB_ENG_INT_BMSK 0x40
-#define GSI_IC_RGSTR_TIMER_BCK_PRS_MSB_DB_ENG_INT_SHFT 0x6
-#define GSI_IC_RGSTR_TIMER_BCK_PRS_MSB_TIMER_INT_BMSK 0x1
-#define GSI_IC_RGSTR_TIMER_BCK_PRS_MSB_TIMER_INT_SHFT 0x0
-
-#define GSI_IC_READ_BCK_PRS_LSB_OFFS \
-	(GSI_GSI_REG_BASE_OFFS + 0x000000e0)
-#define GSI_IC_READ_BCK_PRS_LSB_RMSK 0x3ffc1047
-#define GSI_IC_READ_BCK_PRS_LSB_TLV_INT_BMSK 0x3f000000
-#define GSI_IC_READ_BCK_PRS_LSB_TLV_INT_SHFT 0x18
-#define GSI_IC_READ_BCK_PRS_LSB_CSR_INT_BMSK 0xfc0000
-#define GSI_IC_READ_BCK_PRS_LSB_CSR_INT_SHFT 0x12
-#define GSI_IC_READ_BCK_PRS_LSB_INT_END_INT_BMSK 0x1000
-#define GSI_IC_READ_BCK_PRS_LSB_INT_END_INT_SHFT 0xc
-#define GSI_IC_READ_BCK_PRS_LSB_EV_ENG_INT_BMSK 0x40
-#define GSI_IC_READ_BCK_PRS_LSB_EV_ENG_INT_SHFT 0x6
-#define GSI_IC_READ_BCK_PRS_LSB_REE_INT_BMSK 0x7
-#define GSI_IC_READ_BCK_PRS_LSB_REE_INT_SHFT 0x0
-
-#define GSI_IC_READ_BCK_PRS_MSB_OFFS \
-	(GSI_GSI_REG_BASE_OFFS + 0x000000e4)
-#define GSI_IC_READ_BCK_PRS_MSB_RMSK 0xfc3041
-#define GSI_IC_READ_BCK_PRS_MSB_UCONTROLLER_INT_BMSK 0xfc0000
-#define GSI_IC_READ_BCK_PRS_MSB_UCONTROLLER_INT_SHFT 0x12
-#define GSI_IC_READ_BCK_PRS_MSB_RD_WR_INT_BMSK 0x3000
-#define GSI_IC_READ_BCK_PRS_MSB_RD_WR_INT_SHFT 0xc
-#define GSI_IC_READ_BCK_PRS_MSB_DB_ENG_INT_BMSK 0x40
-#define GSI_IC_READ_BCK_PRS_MSB_DB_ENG_INT_SHFT 0x6
-#define GSI_IC_READ_BCK_PRS_MSB_TIMER_INT_BMSK 0x1
-#define GSI_IC_READ_BCK_PRS_MSB_TIMER_INT_SHFT 0x0
-
-#define GSI_IC_WRITE_BCK_PRS_LSB_OFFS \
-	(GSI_GSI_REG_BASE_OFFS + 0x000000e8)
-#define GSI_IC_WRITE_BCK_PRS_LSB_RMSK 0x3ffc1047
-#define GSI_IC_WRITE_BCK_PRS_LSB_TLV_INT_BMSK 0x3f000000
-#define GSI_IC_WRITE_BCK_PRS_LSB_TLV_INT_SHFT 0x18
-#define GSI_IC_WRITE_BCK_PRS_LSB_CSR_INT_BMSK 0xfc0000
-#define GSI_IC_WRITE_BCK_PRS_LSB_CSR_INT_SHFT 0x12
-#define GSI_IC_WRITE_BCK_PRS_LSB_INT_END_INT_BMSK 0x1000
-#define GSI_IC_WRITE_BCK_PRS_LSB_INT_END_INT_SHFT 0xc
-#define GSI_IC_WRITE_BCK_PRS_LSB_EV_ENG_INT_BMSK 0x40
-#define GSI_IC_WRITE_BCK_PRS_LSB_EV_ENG_INT_SHFT 0x6
-#define GSI_IC_WRITE_BCK_PRS_LSB_REE_INT_BMSK 0x7
-#define GSI_IC_WRITE_BCK_PRS_LSB_REE_INT_SHFT 0x0
-
-#define GSI_IC_WRITE_BCK_PRS_MSB_OFFS \
-	(GSI_GSI_REG_BASE_OFFS + 0x000000ec)
-#define GSI_IC_WRITE_BCK_PRS_MSB_RMSK 0xfc3041
-#define GSI_IC_WRITE_BCK_PRS_MSB_UCONTROLLER_INT_BMSK 0xfc0000
-#define GSI_IC_WRITE_BCK_PRS_MSB_UCONTROLLER_INT_SHFT 0x12
-#define GSI_IC_WRITE_BCK_PRS_MSB_RD_WR_INT_BMSK 0x3000
-#define GSI_IC_WRITE_BCK_PRS_MSB_RD_WR_INT_SHFT 0xc
-#define GSI_IC_WRITE_BCK_PRS_MSB_DB_ENG_INT_BMSK 0x40
-#define GSI_IC_WRITE_BCK_PRS_MSB_DB_ENG_INT_SHFT 0x6
-#define GSI_IC_WRITE_BCK_PRS_MSB_TIMER_INT_BMSK 0x1
-#define GSI_IC_WRITE_BCK_PRS_MSB_TIMER_INT_SHFT 0x0
-
-#define GSI_IC_UCONTROLLER_GPR_BCK_PRS_LSB_OFFS \
-	(GSI_GSI_REG_BASE_OFFS + 0x000000f0)
-#define GSI_IC_UCONTROLLER_GPR_BCK_PRS_LSB_RMSK 0x3ffc1047
-#define GSI_IC_UCONTROLLER_GPR_BCK_PRS_LSB_TLV_INT_BMSK 0x3f000000
-#define GSI_IC_UCONTROLLER_GPR_BCK_PRS_LSB_TLV_INT_SHFT 0x18
-#define GSI_IC_UCONTROLLER_GPR_BCK_PRS_LSB_CSR_INT_BMSK 0xfc0000
-#define GSI_IC_UCONTROLLER_GPR_BCK_PRS_LSB_CSR_INT_SHFT 0x12
-#define GSI_IC_UCONTROLLER_GPR_BCK_PRS_LSB_INT_END_INT_BMSK 0x1000
-#define GSI_IC_UCONTROLLER_GPR_BCK_PRS_LSB_INT_END_INT_SHFT 0xc
-#define GSI_IC_UCONTROLLER_GPR_BCK_PRS_LSB_EV_ENG_INT_BMSK 0x40
-#define GSI_IC_UCONTROLLER_GPR_BCK_PRS_LSB_EV_ENG_INT_SHFT 0x6
-#define GSI_IC_UCONTROLLER_GPR_BCK_PRS_LSB_REE_INT_BMSK 0x7
-#define GSI_IC_UCONTROLLER_GPR_BCK_PRS_LSB_REE_INT_SHFT 0x0
-
-#define GSI_IC_UCONTROLLER_GPR_BCK_PRS_MSB_OFFS \
-	(GSI_GSI_REG_BASE_OFFS + 0x000000f4)
-#define GSI_IC_UCONTROLLER_GPR_BCK_PRS_MSB_RMSK 0xfc3041
-#define GSI_IC_UCONTROLLER_GPR_BCK_PRS_MSB_UCONTROLLER_INT_BMSK 0xfc0000
-#define GSI_IC_UCONTROLLER_GPR_BCK_PRS_MSB_UCONTROLLER_INT_SHFT 0x12
-#define GSI_IC_UCONTROLLER_GPR_BCK_PRS_MSB_RD_WR_INT_BMSK 0x3000
-#define GSI_IC_UCONTROLLER_GPR_BCK_PRS_MSB_RD_WR_INT_SHFT 0xc
-#define GSI_IC_UCONTROLLER_GPR_BCK_PRS_MSB_DB_ENG_INT_BMSK 0x40
-#define GSI_IC_UCONTROLLER_GPR_BCK_PRS_MSB_DB_ENG_INT_SHFT 0x6
-#define GSI_IC_UCONTROLLER_GPR_BCK_PRS_MSB_TIMER_INT_BMSK 0x1
-#define GSI_IC_UCONTROLLER_GPR_BCK_PRS_MSB_TIMER_INT_SHFT 0x0
-
-#define GSI_GSI_IRAM_PTR_CH_CMD_OFFS \
-	(GSI_GSI_REG_BASE_OFFS + 0x00000400)
-#define GSI_GSI_IRAM_PTR_CH_CMD_RMSK 0xfff
-#define GSI_GSI_IRAM_PTR_CH_CMD_IRAM_PTR_BMSK 0xfff
-#define GSI_GSI_IRAM_PTR_CH_CMD_IRAM_PTR_SHFT 0x0
-
-#define GSI_GSI_IRAM_PTR_EE_GENERIC_CMD_OFFS \
-	(GSI_GSI_REG_BASE_OFFS + 0x00000404)
-#define GSI_GSI_IRAM_PTR_EE_GENERIC_CMD_RMSK 0xfff
-#define GSI_GSI_IRAM_PTR_EE_GENERIC_CMD_IRAM_PTR_BMSK 0xfff
-#define GSI_GSI_IRAM_PTR_EE_GENERIC_CMD_IRAM_PTR_SHFT 0x0
-
-#define GSI_V2_5_GSI_IRAM_PTR_TLV_CH_NOT_FULL_OFFS \
-	(GSI_GSI_REG_BASE_OFFS + 0x00000408)
-#define GSI_V2_5_GSI_IRAM_PTR_TLV_CH_NOT_FULL_RMSK 0xfff
-#define GSI_V2_5_GSI_IRAM_PTR_TLV_CH_NOT_FULL_IRAM_PTR_BMSK 0xfff
-#define GSI_V2_5_GSI_IRAM_PTR_TLV_CH_NOT_FULL_IRAM_PTR_SHFT 0x0
-
-#define GSI_GSI_IRAM_PTR_CH_DB_OFFS \
-	(GSI_GSI_REG_BASE_OFFS + 0x00000418)
-#define GSI_GSI_IRAM_PTR_CH_DB_RMSK 0xfff
-#define GSI_GSI_IRAM_PTR_CH_DB_IRAM_PTR_BMSK 0xfff
-#define GSI_GSI_IRAM_PTR_CH_DB_IRAM_PTR_SHFT 0x0
-
-#define GSI_GSI_IRAM_PTR_EV_DB_OFFS \
-	(GSI_GSI_REG_BASE_OFFS + 0x0000041c)
-#define GSI_GSI_IRAM_PTR_EV_DB_RMSK 0xfff
-#define GSI_GSI_IRAM_PTR_EV_DB_IRAM_PTR_BMSK 0xfff
-#define GSI_GSI_IRAM_PTR_EV_DB_IRAM_PTR_SHFT 0x0
-
-#define GSI_GSI_IRAM_PTR_NEW_RE_OFFS \
-	(GSI_GSI_REG_BASE_OFFS + 0x00000420)
-#define GSI_GSI_IRAM_PTR_NEW_RE_RMSK 0xfff
-#define GSI_GSI_IRAM_PTR_NEW_RE_IRAM_PTR_BMSK 0xfff
-#define GSI_GSI_IRAM_PTR_NEW_RE_IRAM_PTR_SHFT 0x0
-
-#define GSI_GSI_IRAM_PTR_CH_DIS_COMP_OFFS \
-	(GSI_GSI_REG_BASE_OFFS + 0x00000424)
-#define GSI_GSI_IRAM_PTR_CH_DIS_COMP_RMSK 0xfff
-#define GSI_GSI_IRAM_PTR_CH_DIS_COMP_IRAM_PTR_BMSK 0xfff
-#define GSI_GSI_IRAM_PTR_CH_DIS_COMP_IRAM_PTR_SHFT 0x0
-
-#define GSI_GSI_IRAM_PTR_CH_EMPTY_OFFS \
-	(GSI_GSI_REG_BASE_OFFS + 0x00000428)
-#define GSI_GSI_IRAM_PTR_CH_EMPTY_RMSK 0xfff
-#define GSI_GSI_IRAM_PTR_CH_EMPTY_IRAM_PTR_BMSK 0xfff
-#define GSI_GSI_IRAM_PTR_CH_EMPTY_IRAM_PTR_SHFT 0x0
-
-#define GSI_GSI_IRAM_PTR_EVENT_GEN_COMP_OFFS \
-	(GSI_GSI_REG_BASE_OFFS + 0x0000042c)
-#define GSI_GSI_IRAM_PTR_EVENT_GEN_COMP_RMSK 0xfff
-#define GSI_GSI_IRAM_PTR_EVENT_GEN_COMP_IRAM_PTR_BMSK 0xfff
-#define GSI_GSI_IRAM_PTR_EVENT_GEN_COMP_IRAM_PTR_SHFT 0x0
-
-#define GSI_GSI_IRAM_PTR_PERIPH_IF_TLV_IN_0_OFFS \
-	(GSI_GSI_REG_BASE_OFFS + 0x00000430)
-#define GSI_GSI_IRAM_PTR_PERIPH_IF_TLV_IN_0_RMSK 0xfff
-#define GSI_GSI_IRAM_PTR_PERIPH_IF_TLV_IN_0_IRAM_PTR_BMSK 0xfff
-#define GSI_GSI_IRAM_PTR_PERIPH_IF_TLV_IN_0_IRAM_PTR_SHFT 0x0
-
-#define GSI_GSI_IRAM_PTR_PERIPH_IF_TLV_IN_2_OFFS \
-	(GSI_GSI_REG_BASE_OFFS + 0x00000434)
-#define GSI_GSI_IRAM_PTR_PERIPH_IF_TLV_IN_2_RMSK 0xfff
-#define GSI_GSI_IRAM_PTR_PERIPH_IF_TLV_IN_2_IRAM_PTR_BMSK 0xfff
-#define GSI_GSI_IRAM_PTR_PERIPH_IF_TLV_IN_2_IRAM_PTR_SHFT 0x0
-
-#define GSI_GSI_IRAM_PTR_PERIPH_IF_TLV_IN_1_OFFS \
-	(GSI_GSI_REG_BASE_OFFS + 0x00000438)
-#define GSI_GSI_IRAM_PTR_PERIPH_IF_TLV_IN_1_RMSK 0xfff
-#define GSI_GSI_IRAM_PTR_PERIPH_IF_TLV_IN_1_IRAM_PTR_BMSK 0xfff
-#define GSI_GSI_IRAM_PTR_PERIPH_IF_TLV_IN_1_IRAM_PTR_SHFT 0x0
-
-#define GSI_GSI_IRAM_PTR_TIMER_EXPIRED_OFFS \
-	(GSI_GSI_REG_BASE_OFFS + 0x0000043c)
-#define GSI_GSI_IRAM_PTR_TIMER_EXPIRED_RMSK 0xfff
-#define GSI_GSI_IRAM_PTR_TIMER_EXPIRED_IRAM_PTR_BMSK 0xfff
-#define GSI_GSI_IRAM_PTR_TIMER_EXPIRED_IRAM_PTR_SHFT 0x0
-
-#define GSI_GSI_IRAM_PTR_WRITE_ENG_COMP_OFFS \
-	(GSI_GSI_REG_BASE_OFFS + 0x00000440)
-#define GSI_GSI_IRAM_PTR_WRITE_ENG_COMP_RMSK 0xfff
-#define GSI_GSI_IRAM_PTR_WRITE_ENG_COMP_IRAM_PTR_BMSK 0xfff
-#define GSI_GSI_IRAM_PTR_WRITE_ENG_COMP_IRAM_PTR_SHFT 0x0
-
-#define GSI_GSI_IRAM_PTR_READ_ENG_COMP_OFFS \
-	(GSI_GSI_REG_BASE_OFFS + 0x00000444)
-#define GSI_GSI_IRAM_PTR_READ_ENG_COMP_RMSK 0xfff
-#define GSI_GSI_IRAM_PTR_READ_ENG_COMP_IRAM_PTR_BMSK 0xfff
-#define GSI_GSI_IRAM_PTR_READ_ENG_COMP_IRAM_PTR_SHFT 0x0
-
-#define GSI_GSI_IRAM_PTR_UC_GP_INT_OFFS \
-	(GSI_GSI_REG_BASE_OFFS + 0x00000448)
-#define GSI_GSI_IRAM_PTR_UC_GP_INT_RMSK 0xfff
-#define GSI_GSI_IRAM_PTR_UC_GP_INT_IRAM_PTR_BMSK 0xfff
-#define GSI_GSI_IRAM_PTR_UC_GP_INT_IRAM_PTR_SHFT 0x0
-
-/* Real H/W register name is with STOPPED with single P */
-#define GSI_GSI_IRAM_PTR_INT_MOD_STOPPED_OFFS \
-	(GSI_GSI_REG_BASE_OFFS + 0x0000044c)
-#define GSI_GSI_IRAM_PTR_INT_MOD_STOPPED_RMSK 0xfff
-#define GSI_GSI_IRAM_PTR_INT_MOD_STOPPED_IRAM_PTR_BMSK 0xfff
-#define GSI_GSI_IRAM_PTR_INT_MOD_STOPPED_IRAM_PTR_SHFT 0x0
-
-#define GSI_GSI_INST_RAM_n_WORD_SZ 0x4
-#define GSI_GSI_INST_RAM_n_OFFS(n) \
-	(GSI_GSI_REG_BASE_OFFS + 0x00004000 + GSI_GSI_INST_RAM_n_WORD_SZ * (n))
-#define GSI_V2_5_GSI_INST_RAM_n_OFFS(n) \
-	(GSI_GSI_REG_BASE_OFFS + 0x0001b000 + GSI_GSI_INST_RAM_n_WORD_SZ * (n))
-#define GSI_GSI_INST_RAM_n_RMSK 0xffffffff
-#define GSI_GSI_INST_RAM_n_MAXn 4095
-#define GSI_V2_0_GSI_INST_RAM_n_MAXn 6143
-#define GSI_V2_2_GSI_INST_RAM_n_MAXn 4095
-#define GSI_V2_5_GSI_INST_RAM_n_MAXn 8191
-#define GSI_V2_7_GSI_INST_RAM_n_MAXn 5119
-#define GSI_V2_9_GSI_INST_RAM_n_MAXn 6143
-#define GSI_V2_11_GSI_INST_RAM_n_MAXn 5119
-
-
-#define GSI_GSI_INST_RAM_n_INST_BYTE_3_BMSK 0xff000000
-#define GSI_GSI_INST_RAM_n_INST_BYTE_3_SHFT 0x18
-#define GSI_GSI_INST_RAM_n_INST_BYTE_2_BMSK 0xff0000
-#define GSI_GSI_INST_RAM_n_INST_BYTE_2_SHFT 0x10
-#define GSI_GSI_INST_RAM_n_INST_BYTE_1_BMSK 0xff00
-#define GSI_GSI_INST_RAM_n_INST_BYTE_1_SHFT 0x8
-#define GSI_GSI_INST_RAM_n_INST_BYTE_0_BMSK 0xff
-#define GSI_GSI_INST_RAM_n_INST_BYTE_0_SHFT 0x0
-
-#define GSI_EE_n_GSI_CH_k_CNTXT_0_OFFS(k, n) \
-	(GSI_GSI_REG_BASE_OFFS + 0x0000f000 + 0x4000 * (n) + 0x80 * (k))
-#define GSI_EE_n_GSI_CH_k_CNTXT_0_ELEMENT_SIZE_BMSK 0xff000000
-#define GSI_EE_n_GSI_CH_k_CNTXT_0_ELEMENT_SIZE_SHFT 0x18
-#define GSI_EE_n_GSI_CH_k_CNTXT_0_CHSTATE_BMSK 0xf00000
-#define GSI_EE_n_GSI_CH_k_CNTXT_0_CHSTATE_SHFT 0x14
-#define GSI_EE_n_GSI_CH_k_CNTXT_0_ERINDEX_BMSK 0x7c000
-#define GSI_EE_n_GSI_CH_k_CNTXT_0_ERINDEX_SHFT 0xe
-#define GSI_V2_5_EE_n_GSI_CH_k_CNTXT_0_CHTYPE_PROTOCOL_MSB_BMSK 0x2000
-#define GSI_V2_5_EE_n_GSI_CH_k_CNTXT_0_CHTYPE_PROTOCOL_MSB_SHFT 0xd
-#define GSI_EE_n_GSI_CH_k_CNTXT_0_CHID_BMSK 0x1f00
-#define GSI_EE_n_GSI_CH_k_CNTXT_0_CHID_SHFT 0x8
-#define GSI_EE_n_GSI_CH_k_CNTXT_0_EE_BMSK 0xf0
-#define GSI_EE_n_GSI_CH_k_CNTXT_0_EE_SHFT 0x4
-#define GSI_EE_n_GSI_CH_k_CNTXT_0_CHTYPE_DIR_BMSK 0x8
-#define GSI_EE_n_GSI_CH_k_CNTXT_0_CHTYPE_DIR_SHFT 0x3
-#define GSI_EE_n_GSI_CH_k_CNTXT_0_CHTYPE_PROTOCOL_BMSK 0x7
-#define GSI_EE_n_GSI_CH_k_CNTXT_0_CHTYPE_PROTOCOL_SHFT 0x0
-
-#define GSI_EE_n_GSI_CH_k_CNTXT_1_OFFS(k, n) \
-	(GSI_GSI_REG_BASE_OFFS + 0x0000f004 + 0x4000 * (n) + 0x80 * (k))
-#define GSI_EE_n_GSI_CH_k_CNTXT_1_R_LENGTH_BMSK 0xffff
-#define GSI_EE_n_GSI_CH_k_CNTXT_1_R_LENGTH_SHFT 0x0
-
-#define GSI_V2_9_EE_n_GSI_CH_k_CNTXT_1_OFFS(k, n) \
-	(GSI_GSI_REG_BASE_OFFS + 0x0000f004 + 0x4000 * (n) + 0x80 * (k))
-#define GSI_V2_9_EE_n_GSI_CH_k_CNTXT_1_R_LENGTH_BMSK 0xfffff
-#define GSI_V2_9_EE_n_GSI_CH_k_CNTXT_1_R_LENGTH_SHFT 0x0
-
-#define GSI_EE_n_GSI_CH_k_CNTXT_2_OFFS(k, n) \
-	(GSI_GSI_REG_BASE_OFFS + 0x0000f008 + 0x4000 * (n) + 0x80 * (k))
-#define GSI_EE_n_GSI_CH_k_CNTXT_2_R_BASE_ADDR_LSBS_BMSK 0xffffffff
-#define GSI_EE_n_GSI_CH_k_CNTXT_2_R_BASE_ADDR_LSBS_SHFT 0x0
-
-#define GSI_EE_n_GSI_CH_k_CNTXT_3_OFFS(k, n) \
-	(GSI_GSI_REG_BASE_OFFS + 0x0000f00c + 0x4000 * (n) + 0x80 * (k))
-#define GSI_EE_n_GSI_CH_k_CNTXT_3_R_BASE_ADDR_MSBS_BMSK 0xffffffff
-#define GSI_EE_n_GSI_CH_k_CNTXT_3_R_BASE_ADDR_MSBS_SHFT 0x0
-
-#define GSI_EE_n_GSI_CH_k_CNTXT_4_OFFS(k, n) \
-	(GSI_GSI_REG_BASE_OFFS + 0x0000f010 + 0x4000 * (n) + 0x80 * (k))
-#define GSI_EE_n_GSI_CH_k_CNTXT_4_READ_PTR_LSB_BMSK 0xffffffff
-#define GSI_EE_n_GSI_CH_k_CNTXT_4_READ_PTR_LSB_SHFT 0x0
-
-#define GSI_EE_n_GSI_CH_k_CNTXT_5_OFFS(k, n) \
-	(GSI_GSI_REG_BASE_OFFS + 0x0000f014 + 0x4000 * (n) + 0x80 * (k))
-#define GSI_EE_n_GSI_CH_k_CNTXT_5_READ_PTR_MSB_BMSK 0xffffffff
-#define GSI_EE_n_GSI_CH_k_CNTXT_5_READ_PTR_MSB_SHFT 0x0
-
-#define GSI_EE_n_GSI_CH_k_CNTXT_6_OFFS(k, n) \
-	(GSI_GSI_REG_BASE_OFFS + 0x0000f018 + 0x4000 * (n) + 0x80 * (k))
-#define GSI_EE_n_GSI_CH_k_CNTXT_6_WRITE_PTR_LSB_BMSK 0xffffffff
-#define GSI_EE_n_GSI_CH_k_CNTXT_6_WRITE_PTR_LSB_SHFT 0x0
-
-#define GSI_EE_n_GSI_CH_k_CNTXT_7_OFFS(k, n) \
-	(GSI_GSI_REG_BASE_OFFS + 0x0000f01c + 0x4000 * (n) + 0x80 * (k))
-#define GSI_EE_n_GSI_CH_k_CNTXT_7_WRITE_PTR_MSB_BMSK 0xffffffff
-#define GSI_EE_n_GSI_CH_k_CNTXT_7_WRITE_PTR_MSB_SHFT 0x0
-
-#define GSI_EE_n_GSI_CH_k_RE_FETCH_READ_PTR_OFFS(k, n) \
-	(GSI_GSI_REG_BASE_OFFS + 0x0000f054 + 0x4000 * (n) + 0x80 * (k))
-#define GSI_EE_n_GSI_CH_k_RE_FETCH_READ_PTR_RMSK 0xffff
-#define GSI_EE_n_GSI_CH_k_RE_FETCH_READ_PTR_MAXk 30
-#define GSI_EE_n_GSI_CH_k_RE_FETCH_READ_PTR_MAXn 3
-#define GSI_EE_n_GSI_CH_k_RE_FETCH_READ_PTR_READ_PTR_BMSK 0xffff
-#define GSI_EE_n_GSI_CH_k_RE_FETCH_READ_PTR_READ_PTR_SHFT 0x0
-
-#define GSI_EE_n_GSI_CH_k_RE_FETCH_WRITE_PTR_OFFS(k, n) \
-	(GSI_GSI_REG_BASE_OFFS + 0x0000f058 + 0x4000 * (n) + 0x80 * (k))
-#define GSI_EE_n_GSI_CH_k_RE_FETCH_WRITE_PTR_RMSK 0xffff
-#define GSI_EE_n_GSI_CH_k_RE_FETCH_WRITE_PTR_MAXk 30
-#define GSI_EE_n_GSI_CH_k_RE_FETCH_WRITE_PTR_MAXn 3
-#define GSI_EE_n_GSI_CH_k_RE_FETCH_WRITE_PTR_RE_INTR_DB_BMSK 0xffff
-#define GSI_EE_n_GSI_CH_k_RE_FETCH_WRITE_PTR_RE_INTR_DB_SHFT 0x0
-
-#define GSI_EE_n_GSI_CH_k_QOS_OFFS(k, n) \
-	(GSI_GSI_REG_BASE_OFFS + 0x0001c05c + 0x4000 * (n) + 0x80 * (k))
-#define GSI_EE_n_GSI_CH_k_QOS_RMSK 0x303
-#define GSI_EE_n_GSI_CH_k_QOS_MAXk 30
-#define GSI_EE_n_GSI_CH_k_QOS_MAXn 3
-#define GSI_EE_n_GSI_CH_k_QOS_USE_ESCAPE_BUF_ONLY_BMSK 0x400
-#define GSI_EE_n_GSI_CH_k_QOS_USE_ESCAPE_BUF_ONLY_SHFT 0xa
-#define GSI_EE_n_GSI_CH_k_QOS_USE_DB_ENG_BMSK 0x200
-#define GSI_EE_n_GSI_CH_k_QOS_USE_DB_ENG_SHFT 0x9
-#define GSI_EE_n_GSI_CH_k_QOS_MAX_PREFETCH_BMSK 0x100
-#define GSI_EE_n_GSI_CH_k_QOS_MAX_PREFETCH_SHFT 0x8
-#define GSI_EE_n_GSI_CH_k_QOS_WRR_WEIGHT_BMSK 0xf
-#define GSI_EE_n_GSI_CH_k_QOS_WRR_WEIGHT_SHFT 0x0
-
-#define GSI_V2_5_EE_n_GSI_CH_k_QOS_OFFS(k, n) \
-	(GSI_GSI_REG_BASE_OFFS + 0x0000f05c + 0x4000 * (n) + 0x80 * (k))
-#define GSI_V2_5_EE_n_GSI_CH_k_QOS_EMPTY_LVL_THRSHOLD_BMSK 0xff0000
-#define GSI_V2_5_EE_n_GSI_CH_k_QOS_EMPTY_LVL_THRSHOLD_SHFT 0x10
-#define GSI_V2_5_EE_n_GSI_CH_k_QOS_PREFETCH_MODE_BMSK 0x3c00
-#define GSI_V2_5_EE_n_GSI_CH_k_QOS_PREFETCH_MODE_SHFT 0xa
-#define GSI_V2_5_EE_n_GSI_CH_k_QOS_USE_DB_ENG_BMSK 0x200
-#define GSI_V2_5_EE_n_GSI_CH_k_QOS_USE_DB_ENG_SHFT 0x9
-#define GSI_V2_5_EE_n_GSI_CH_k_QOS_MAX_PREFETCH_BMSK 0x100
-#define GSI_V2_5_EE_n_GSI_CH_k_QOS_MAX_PREFETCH_SHFT 0x8
-#define GSI_V2_5_EE_n_GSI_CH_k_QOS_WRR_WEIGHT_BMSK 0xf
-#define GSI_V2_5_EE_n_GSI_CH_k_QOS_WRR_WEIGHT_SHFT 0x0
-
-#define GSI_V2_9_EE_n_GSI_CH_k_QOS_OFFS(k, n) \
-	(GSI_GSI_REG_BASE_OFFS + 0x0000f05c + 0x4000 * (n) + 0x80 * (k))
-#define GSI_V2_9_EE_n_GSI_CH_k_QOS_DB_IN_BYTES_BMSK 0x1000000
-#define GSI_V2_9_EE_n_GSI_CH_k_QOS_DB_IN_BYTES_SHFT 0x18
-#define GSI_V2_9_EE_n_GSI_CH_k_QOS_EMPTY_LVL_THRSHOLD_BMSK 0xff0000
-#define GSI_V2_9_EE_n_GSI_CH_k_QOS_EMPTY_LVL_THRSHOLD_SHFT 0x10
-#define GSI_V2_9_EE_n_GSI_CH_k_QOS_PREFETCH_MODE_BMSK 0x3c00
-#define GSI_V2_9_EE_n_GSI_CH_k_QOS_PREFETCH_MODE_SHFT 0xa
-#define GSI_V2_9_EE_n_GSI_CH_k_QOS_USE_DB_ENG_BMSK 0x200
-#define GSI_V2_9_EE_n_GSI_CH_k_QOS_USE_DB_ENG_SHFT 0x9
-#define GSI_V2_9_EE_n_GSI_CH_k_QOS_MAX_PREFETCH_BMSK 0x100
-#define GSI_V2_9_EE_n_GSI_CH_k_QOS_MAX_PREFETCH_SHFT 0x8
-#define GSI_V2_9_EE_n_GSI_CH_k_QOS_WRR_WEIGHT_BMSK 0xf
-#define GSI_V2_9_EE_n_GSI_CH_k_QOS_WRR_WEIGHT_SHFT 0x0
-
-#define GSI_EE_n_GSI_CH_k_SCRATCH_0_OFFS(k, n) \
-	(GSI_GSI_REG_BASE_OFFS + 0x0000f060 + 0x4000 * (n) + 0x80 * (k))
-#define GSI_EE_n_GSI_CH_k_SCRATCH_0_SCRATCH_BMSK 0xffffffff
-#define GSI_EE_n_GSI_CH_k_SCRATCH_0_SCRATCH_SHFT 0x0
-
-#define GSI_EE_n_GSI_CH_k_SCRATCH_1_OFFS(k, n) \
-	(GSI_GSI_REG_BASE_OFFS + 0x0000f064 + 0x4000 * (n) + 0x80 * (k))
-#define GSI_EE_n_GSI_CH_k_SCRATCH_1_SCRATCH_BMSK 0xffffffff
-#define GSI_EE_n_GSI_CH_k_SCRATCH_1_SCRATCH_SHFT 0x0
-
-#define GSI_EE_n_GSI_CH_k_SCRATCH_2_OFFS(k, n) \
-	(GSI_GSI_REG_BASE_OFFS + 0x0000f068 + 0x4000 * (n) + 0x80 * (k))
-#define GSI_EE_n_GSI_CH_k_SCRATCH_2_SCRATCH_BMSK 0xffffffff
-#define GSI_EE_n_GSI_CH_k_SCRATCH_2_SCRATCH_SHFT 0x0
-
-#define GSI_EE_n_GSI_CH_k_SCRATCH_3_OFFS(k, n) \
-	(GSI_GSI_REG_BASE_OFFS + 0x0000f06c + 0x4000 * (n) + 0x80 * (k))
-#define GSI_EE_n_GSI_CH_k_SCRATCH_3_SCRATCH_BMSK 0xffffffff
-#define GSI_EE_n_GSI_CH_k_SCRATCH_3_SCRATCH_SHFT 0x0
-
-#define GSI_EE_n_EV_CH_k_CNTXT_0_OFFS(k, n) \
-	(GSI_GSI_REG_BASE_OFFS + 0x00010000 + 0x4000 * (n) + 0x80 * (k))
-#define GSI_EE_n_EV_CH_k_CNTXT_0_ELEMENT_SIZE_BMSK 0xff000000
-#define GSI_EE_n_EV_CH_k_CNTXT_0_ELEMENT_SIZE_SHFT 0x18
-#define GSI_EE_n_EV_CH_k_CNTXT_0_CHSTATE_BMSK 0xf00000
-#define GSI_EE_n_EV_CH_k_CNTXT_0_CHSTATE_SHFT 0x14
-#define GSI_EE_n_EV_CH_k_CNTXT_0_INTYPE_BMSK 0x10000
-#define GSI_EE_n_EV_CH_k_CNTXT_0_INTYPE_SHFT 0x10
-#define GSI_EE_n_EV_CH_k_CNTXT_0_EVCHID_BMSK 0xff00
-#define GSI_EE_n_EV_CH_k_CNTXT_0_EVCHID_SHFT 0x8
-#define GSI_EE_n_EV_CH_k_CNTXT_0_EE_BMSK 0xf0
-#define GSI_EE_n_EV_CH_k_CNTXT_0_EE_SHFT 0x4
-#define GSI_EE_n_EV_CH_k_CNTXT_0_CHTYPE_BMSK 0xf
-#define GSI_EE_n_EV_CH_k_CNTXT_0_CHTYPE_SHFT 0x0
-
-#define GSI_EE_n_EV_CH_k_CNTXT_1_OFFS(k, n) \
-	(GSI_GSI_REG_BASE_OFFS + 0x00010004 + 0x4000 * (n) + 0x80 * (k))
-#define GSI_EE_n_EV_CH_k_CNTXT_1_R_LENGTH_BMSK 0xffff
-#define GSI_EE_n_EV_CH_k_CNTXT_1_R_LENGTH_SHFT 0x0
-
-#define GSI_V2_9_EE_n_EV_CH_k_CNTXT_1_OFFS(k, n) \
-	(GSI_GSI_REG_BASE_OFFS + 0x00010004 + 0x4000 * (n) + 0x80 * (k))
-#define GSI_V2_9_EE_n_EV_CH_k_CNTXT_1_R_LENGTH_BMSK 0xfffff
-#define GSI_V2_9_EE_n_EV_CH_k_CNTXT_1_R_LENGTH_SHFT 0x0
-
-#define GSI_EE_n_EV_CH_k_CNTXT_2_OFFS(k, n) \
-	(GSI_GSI_REG_BASE_OFFS + 0x00010008 + 0x4000 * (n) + 0x80 * (k))
-#define GSI_EE_n_EV_CH_k_CNTXT_2_R_BASE_ADDR_LSBS_BMSK 0xffffffff
-#define GSI_EE_n_EV_CH_k_CNTXT_2_R_BASE_ADDR_LSBS_SHFT 0x0
-
-#define GSI_EE_n_EV_CH_k_CNTXT_3_OFFS(k, n) \
-	(GSI_GSI_REG_BASE_OFFS + 0x0001000c + 0x4000 * (n) + 0x80 * (k))
-#define GSI_EE_n_EV_CH_k_CNTXT_3_R_BASE_ADDR_MSBS_BMSK 0xffffffff
-#define GSI_EE_n_EV_CH_k_CNTXT_3_R_BASE_ADDR_MSBS_SHFT 0x0
-
-#define GSI_EE_n_EV_CH_k_CNTXT_4_OFFS(k, n) \
-	(GSI_GSI_REG_BASE_OFFS + 0x00010010 + 0x4000 * (n) + 0x80 * (k))
-#define GSI_EE_n_EV_CH_k_CNTXT_4_READ_PTR_LSB_BMSK 0xffffffff
-#define GSI_EE_n_EV_CH_k_CNTXT_4_READ_PTR_LSB_SHFT 0x0
-
-#define GSI_EE_n_EV_CH_k_CNTXT_5_OFFS(k, n) \
-	(GSI_GSI_REG_BASE_OFFS + 0x00010014 + 0x4000 * (n) + 0x80 * (k))
-#define GSI_EE_n_EV_CH_k_CNTXT_5_READ_PTR_MSB_BMSK 0xffffffff
-#define GSI_EE_n_EV_CH_k_CNTXT_5_READ_PTR_MSB_SHFT 0x0
-
-#define GSI_EE_n_EV_CH_k_CNTXT_6_OFFS(k, n) \
-	(GSI_GSI_REG_BASE_OFFS + 0x00010018 + 0x4000 * (n) + 0x80 * (k))
-#define GSI_EE_n_EV_CH_k_CNTXT_6_WRITE_PTR_LSB_BMSK 0xffffffff
-#define GSI_EE_n_EV_CH_k_CNTXT_6_WRITE_PTR_LSB_SHFT 0x0
-
-#define GSI_EE_n_EV_CH_k_CNTXT_7_OFFS(k, n) \
-	(GSI_GSI_REG_BASE_OFFS + 0x0001001c + 0x4000 * (n) + 0x80 * (k))
-#define GSI_EE_n_EV_CH_k_CNTXT_7_WRITE_PTR_MSB_BMSK 0xffffffff
-#define GSI_EE_n_EV_CH_k_CNTXT_7_WRITE_PTR_MSB_SHFT 0x0
-
-#define GSI_EE_n_EV_CH_k_CNTXT_8_OFFS(k, n) \
-	(GSI_GSI_REG_BASE_OFFS + 0x00010020 + 0x4000 * (n) + 0x80 * (k))
-#define GSI_EE_n_EV_CH_k_CNTXT_8_INT_MOD_CNT_BMSK 0xff000000
-#define GSI_EE_n_EV_CH_k_CNTXT_8_INT_MOD_CNT_SHFT 0x18
-#define GSI_EE_n_EV_CH_k_CNTXT_8_INT_MODC_BMSK 0xff0000
-#define GSI_EE_n_EV_CH_k_CNTXT_8_INT_MODC_SHFT 0x10
-#define GSI_EE_n_EV_CH_k_CNTXT_8_INT_MODT_BMSK 0xffff
-#define GSI_EE_n_EV_CH_k_CNTXT_8_INT_MODT_SHFT 0x0
-
-#define GSI_EE_n_EV_CH_k_CNTXT_9_OFFS(k, n) \
-	(GSI_GSI_REG_BASE_OFFS + 0x00010024 + 0x4000 * (n) + 0x80 * (k))
-#define GSI_EE_n_EV_CH_k_CNTXT_9_INTVEC_BMSK 0xffffffff
-#define GSI_EE_n_EV_CH_k_CNTXT_9_INTVEC_SHFT 0x0
-
-#define GSI_EE_n_EV_CH_k_CNTXT_10_OFFS(k, n) \
-	(GSI_GSI_REG_BASE_OFFS + 0x00010028 + 0x4000 * (n) + 0x80 * (k))
-#define GSI_EE_n_EV_CH_k_CNTXT_10_MSI_ADDR_LSB_BMSK 0xffffffff
-#define GSI_EE_n_EV_CH_k_CNTXT_10_MSI_ADDR_LSB_SHFT 0x0
-
-#define GSI_EE_n_EV_CH_k_CNTXT_11_OFFS(k, n) \
-	(GSI_GSI_REG_BASE_OFFS + 0x0001002c + 0x4000 * (n) + 0x80 * (k))
-#define GSI_EE_n_EV_CH_k_CNTXT_11_MSI_ADDR_MSB_BMSK 0xffffffff
-#define GSI_EE_n_EV_CH_k_CNTXT_11_MSI_ADDR_MSB_SHFT 0x0
-
-#define GSI_EE_n_EV_CH_k_CNTXT_12_OFFS(k, n) \
-	(GSI_GSI_REG_BASE_OFFS + 0x00010030 + 0x4000 * (n) + 0x80 * (k))
-#define GSI_EE_n_EV_CH_k_CNTXT_12_RP_UPDATE_ADDR_LSB_BMSK 0xffffffff
-#define GSI_EE_n_EV_CH_k_CNTXT_12_RP_UPDATE_ADDR_LSB_SHFT 0x0
-
-#define GSI_EE_n_EV_CH_k_CNTXT_13_OFFS(k, n) \
-	(GSI_GSI_REG_BASE_OFFS + 0x00010034 + 0x4000 * (n) + 0x80 * (k))
-#define GSI_EE_n_EV_CH_k_CNTXT_13_RP_UPDATE_ADDR_MSB_BMSK 0xffffffff
-#define GSI_EE_n_EV_CH_k_CNTXT_13_RP_UPDATE_ADDR_MSB_SHFT 0x0
-
-#define GSI_EE_n_EV_CH_k_SCRATCH_0_OFFS(k, n) \
-	(GSI_GSI_REG_BASE_OFFS + 0x00010048 + 0x4000 * (n) + 0x80 * (k))
-#define GSI_EE_n_EV_CH_k_SCRATCH_0_SCRATCH_BMSK 0xffffffff
-#define GSI_EE_n_EV_CH_k_SCRATCH_0_SCRATCH_SHFT 0x0
-
-#define GSI_EE_n_EV_CH_k_SCRATCH_1_OFFS(k, n) \
-	(GSI_GSI_REG_BASE_OFFS + 0x0001004c + 0x4000 * (n) + 0x80 * (k))
-#define GSI_EE_n_EV_CH_k_SCRATCH_1_SCRATCH_BMSK 0xffffffff
-#define GSI_EE_n_EV_CH_k_SCRATCH_1_SCRATCH_SHFT 0x0
-
-#define GSI_EE_n_GSI_CH_k_DOORBELL_0_OFFS(k, n) \
-	(GSI_GSI_REG_BASE_OFFS + 0x00011000 + 0x4000 * (n) + 0x8 * (k))
-#define GSI_EE_n_GSI_CH_k_DOORBELL_0_WRITE_PTR_LSB_BMSK 0xffffffff
-#define GSI_EE_n_GSI_CH_k_DOORBELL_0_WRITE_PTR_LSB_SHFT 0x0
-
-#define GSI_EE_n_GSI_CH_k_DOORBELL_1_OFFS(k, n) \
-	(GSI_GSI_REG_BASE_OFFS + 0x00011004 + 0x4000 * (n) + 0x8 * (k))
-#define GSI_EE_n_GSI_CH_k_DOORBELL_1_WRITE_PTR_MSB_BMSK 0xffffffff
-#define GSI_EE_n_GSI_CH_k_DOORBELL_1_WRITE_PTR_MSB_SHFT 0x0
-
-#define GSI_EE_n_EV_CH_k_DOORBELL_0_OFFS(k, n) \
-	(GSI_GSI_REG_BASE_OFFS + 0x00011100 + 0x4000 * (n) + 0x8 * (k))
-#define GSI_EE_n_EV_CH_k_DOORBELL_0_WRITE_PTR_LSB_BMSK 0xffffffff
-#define GSI_EE_n_EV_CH_k_DOORBELL_0_WRITE_PTR_LSB_SHFT 0x0
-
-#define GSI_EE_n_EV_CH_k_DOORBELL_1_OFFS(k, n) \
-	(GSI_GSI_REG_BASE_OFFS + 0x00011104 + 0x4000 * (n) + 0x8 * (k))
-#define GSI_EE_n_EV_CH_k_DOORBELL_1_WRITE_PTR_MSB_BMSK 0xffffffff
-#define GSI_EE_n_EV_CH_k_DOORBELL_1_WRITE_PTR_MSB_SHFT 0x0
-
-#define GSI_EE_n_GSI_STATUS_OFFS(n) \
-	(GSI_GSI_REG_BASE_OFFS + 0x00012000 + 0x4000 * (n))
-#define GSI_EE_n_GSI_STATUS_ENABLED_BMSK 0x1
-#define GSI_EE_n_GSI_STATUS_ENABLED_SHFT 0x0
-
-#define GSI_EE_n_GSI_CH_CMD_OFFS(n) \
-	(GSI_GSI_REG_BASE_OFFS + 0x00012008 + 0x4000 * (n))
-#define GSI_EE_n_GSI_CH_CMD_OPCODE_BMSK 0xff000000
-#define GSI_EE_n_GSI_CH_CMD_OPCODE_SHFT 0x18
-#define GSI_EE_n_GSI_CH_CMD_CHID_BMSK 0xff
-#define GSI_EE_n_GSI_CH_CMD_CHID_SHFT 0x0
-
-#define GSI_EE_n_EV_CH_CMD_OFFS(n) \
-	(GSI_GSI_REG_BASE_OFFS + 0x00012010 + 0x4000 * (n))
-#define GSI_EE_n_EV_CH_CMD_OPCODE_BMSK 0xff000000
-#define GSI_EE_n_EV_CH_CMD_OPCODE_SHFT 0x18
-#define GSI_EE_n_EV_CH_CMD_CHID_BMSK 0xff
-#define GSI_EE_n_EV_CH_CMD_CHID_SHFT 0x0
-
-#define GSI_EE_n_GSI_EE_GENERIC_CMD_OFFS(n) \
-	(GSI_GSI_REG_BASE_OFFS + 0x00012018 + 0x4000 * (n))
-#define GSI_EE_n_GSI_EE_GENERIC_CMD_OPCODE_BMSK 0x1f
-#define GSI_EE_n_GSI_EE_GENERIC_CMD_OPCODE_SHFT 0x0
-#define GSI_EE_n_GSI_EE_GENERIC_CMD_VIRT_CHAN_IDX_BMSK 0x3e0
-#define GSI_EE_n_GSI_EE_GENERIC_CMD_VIRT_CHAN_IDX_SHFT 0x5
-#define GSI_EE_n_GSI_EE_GENERIC_CMD_EE_BMSK 0x3c00
-#define GSI_EE_n_GSI_EE_GENERIC_CMD_EE_SHFT 0xa
-
-#define GSI_V1_0_EE_n_GSI_HW_PARAM_OFFS(n) \
-	(GSI_GSI_REG_BASE_OFFS + 0x0001f040 + 0x4000 * (n))
-#define GSI_V1_0_EE_n_GSI_HW_PARAM_PERIPH_SEC_GRP_BMSK 0x7c000000
-#define GSI_V1_0_EE_n_GSI_HW_PARAM_PERIPH_SEC_GRP_SHFT 0x1a
-#define GSI_V1_0_EE_n_GSI_HW_PARAM_USE_AXI_M_BMSK 0x2000000
-#define GSI_V1_0_EE_n_GSI_HW_PARAM_USE_AXI_M_SHFT 0x19
-#define GSI_V1_0_EE_n_GSI_HW_PARAM_PERIPH_CONF_ADDR_BUS_W_BMSK 0x1f00000
-#define GSI_V1_0_EE_n_GSI_HW_PARAM_PERIPH_CONF_ADDR_BUS_W_SHFT 0x14
-#define GSI_V1_0_EE_n_GSI_HW_PARAM_NUM_EES_BMSK 0xf0000
-#define GSI_V1_0_EE_n_GSI_HW_PARAM_NUM_EES_SHFT 0x10
-#define GSI_V1_0_EE_n_GSI_HW_PARAM_GSI_CH_NUM_BMSK 0xff00
-#define GSI_V1_0_EE_n_GSI_HW_PARAM_GSI_CH_NUM_SHFT 0x8
-#define GSI_V1_0_EE_n_GSI_HW_PARAM_GSI_EV_CH_NUM_BMSK 0xff
-#define GSI_V1_0_EE_n_GSI_HW_PARAM_GSI_EV_CH_NUM_SHFT 0x0
-
-#define GSI_V1_2_EE_n_GSI_HW_PARAM_0_OFFS(n) \
-	(GSI_GSI_REG_BASE_OFFS + 0x0001f038 + 0x4000 * (n))
-#define GSI_V1_2_EE_n_GSI_HW_PARAM_0_USE_AXI_M_BMSK 0x80000000
-#define GSI_V1_2_EE_n_GSI_HW_PARAM_0_USE_AXI_M_SHFT 0x1f
-#define GSI_V1_2_EE_n_GSI_HW_PARAM_0_PERIPH_SEC_GRP_BMSK 0x7c000000
-#define GSI_V1_2_EE_n_GSI_HW_PARAM_0_PERIPH_SEC_GRP_SHFT 0x1a
-#define GSI_V1_2_EE_n_GSI_HW_PARAM_0_PERIPH_CONF_ADDR_BUS_W_BMSK 0x3e00000
-#define GSI_V1_2_EE_n_GSI_HW_PARAM_0_PERIPH_CONF_ADDR_BUS_W_SHFT 0x15
-#define GSI_V1_2_EE_n_GSI_HW_PARAM_0_NUM_EES_BMSK 0x1f0000
-#define GSI_V1_2_EE_n_GSI_HW_PARAM_0_NUM_EES_SHFT 0x10
-#define GSI_V1_2_EE_n_GSI_HW_PARAM_0_GSI_CH_NUM_BMSK 0xff00
-#define GSI_V1_2_EE_n_GSI_HW_PARAM_0_GSI_CH_NUM_SHFT 0x8
-#define GSI_V1_2_EE_n_GSI_HW_PARAM_0_GSI_EV_CH_NUM_BMSK 0xff
-#define GSI_V1_2_EE_n_GSI_HW_PARAM_0_GSI_EV_CH_NUM_SHFT 0x0
-
-#define GSI_V1_3_EE_n_GSI_HW_PARAM_2_OFFS(n) \
-	(GSI_GSI_REG_BASE_OFFS + 0x0001f040 + 0x4000 * (n))
-#define GSI_V1_3_EE_n_GSI_HW_PARAM_2_RMSK 0x7fff
-#define GSI_V1_3_EE_n_GSI_HW_PARAM_2_MAXn 2
-#define GSI_V1_3_EE_n_GSI_HW_PARAM_2_GSI_CH_FULL_LOGIC_BMSK 0x4000
-#define GSI_V1_3_EE_n_GSI_HW_PARAM_2_GSI_CH_FULL_LOGIC_SHFT 0xe
-#define GSI_V1_3_EE_n_GSI_HW_PARAM_2_GSI_CH_PEND_TRANSLATE_BMSK 0x2000
-#define GSI_V1_3_EE_n_GSI_HW_PARAM_2_GSI_CH_PEND_TRANSLATE_SHFT 0xd
-#define GSI_V1_3_EE_n_GSI_HW_PARAM_2_GSI_NUM_EV_PER_EE_BMSK 0x1f00
-#define GSI_V1_3_EE_n_GSI_HW_PARAM_2_GSI_NUM_EV_PER_EE_SHFT 0x8
-#define GSI_V1_3_EE_n_GSI_HW_PARAM_2_GSI_NUM_CH_PER_EE_BMSK 0xf8
-#define GSI_V1_3_EE_n_GSI_HW_PARAM_2_GSI_NUM_CH_PER_EE_SHFT 0x3
-#define GSI_V1_3_EE_n_GSI_HW_PARAM_2_GSI_IRAM_SIZE_BMSK 0x7
-#define GSI_V1_3_EE_n_GSI_HW_PARAM_2_GSI_IRAM_SIZE_SHFT 0x0
-#define GSI_V1_3_EE_n_GSI_HW_PARAM_2_GSI_IRAM_SIZE_ONE_KB_FVAL 0x0
-#define GSI_V1_3_EE_n_GSI_HW_PARAM_2_GSI_IRAM_SIZE_TWO_KB_FVAL 0x1
-
-#define GSI_V2_0_EE_n_GSI_HW_PARAM_2_OFFS(n) \
-	(GSI_GSI_REG_BASE_OFFS + 0x0001f040 + 0x4000 * (n))
-#define GSI_V2_0_EE_n_GSI_HW_PARAM_2_RMSK 0x7fff
-#define GSI_V2_0_EE_n_GSI_HW_PARAM_2_MAXn 2
-#define GSI_V2_0_EE_n_GSI_HW_PARAM_2_GSI_SDMA_N_IOVEC_BMSK 0x38000000
-#define GSI_V2_0_EE_n_GSI_HW_PARAM_2_GSI_SDMA_N_IOVEC_SHFT 0x1b
-#define GSI_V2_0_EE_n_GSI_HW_PARAM_2_GSI_SDMA_MAX_BURST_BMSK 0x7F80000
-#define GSI_V2_0_EE_n_GSI_HW_PARAM_2_GSI_SDMA_MAX_BURST_SHFT 0x13
-#define GSI_V2_0_EE_n_GSI_HW_PARAM_2_GSI_SDMA_N_INT_BMSK 0x70000
-#define GSI_V2_0_EE_n_GSI_HW_PARAM_2_GSI_SDMA_N_INT_SHFT 0x10
-#define GSI_V2_0_EE_n_GSI_HW_PARAM_2_GSI_USE_SDMA_BMSK 0x8000
-#define GSI_V2_0_EE_n_GSI_HW_PARAM_2_GSI_USE_SDMA_SHFT 0xf
-#define GSI_V2_0_EE_n_GSI_HW_PARAM_2_GSI_CH_FULL_LOGIC_BMSK 0x4000
-#define GSI_V2_0_EE_n_GSI_HW_PARAM_2_GSI_CH_FULL_LOGIC_SHFT 0xe
-#define GSI_V2_0_EE_n_GSI_HW_PARAM_2_GSI_CH_PEND_TRANSLATE_BMSK 0x2000
-#define GSI_V2_0_EE_n_GSI_HW_PARAM_2_GSI_CH_PEND_TRANSLATE_SHFT 0xd
-#define GSI_V2_0_EE_n_GSI_HW_PARAM_2_GSI_NUM_EV_PER_EE_BMSK 0x1f00
-#define GSI_V2_0_EE_n_GSI_HW_PARAM_2_GSI_NUM_EV_PER_EE_SHFT 0x8
-#define GSI_V2_0_EE_n_GSI_HW_PARAM_2_GSI_NUM_CH_PER_EE_BMSK 0xf8
-#define GSI_V2_0_EE_n_GSI_HW_PARAM_2_GSI_NUM_CH_PER_EE_SHFT 0x3
-#define GSI_V2_0_EE_n_GSI_HW_PARAM_2_GSI_IRAM_SIZE_BMSK 0x7
-#define GSI_V2_0_EE_n_GSI_HW_PARAM_2_GSI_IRAM_SIZE_SHFT 0x0
-#define GSI_V2_0_EE_n_GSI_HW_PARAM_2_GSI_IRAM_SIZE_ONE_KB_FVAL 0x0
-#define GSI_V2_0_EE_n_GSI_HW_PARAM_2_GSI_IRAM_SIZE_TWO_KB_FVAL 0x1
-#define GSI_V2_0_EE_n_GSI_HW_PARAM_2_GSI_IRAM_SIZE_TWO_N_HALF_KB_FVAL 0x2
-#define GSI_V2_0_EE_n_GSI_HW_PARAM_2_GSI_IRAM_SIZE_THREE_KB_FVAL 0x3
-
-#define GSI_V2_2_EE_n_GSI_HW_PARAM_2_OFFS(n) \
-		(GSI_GSI_REG_BASE_OFFS + 0x0001f040 + 0x4000 * (n))
-#define GSI_V2_2_EE_n_GSI_HW_PARAM_2_GSI_USE_INTER_EE_BMSK 0x8000
-#define GSI_V2_2_EE_n_GSI_HW_PARAM_2_GSI_USE_INTER_EE_SHFT 0xf
-#define GSI_V2_2_EE_n_GSI_HW_PARAM_2_GSI_USE_RD_WR_ENG_BMSK 0x4000
-#define GSI_V2_2_EE_n_GSI_HW_PARAM_2_GSI_USE_RD_WR_ENG_SHFT 0xE
-#define GSI_V2_2_EE_n_GSI_HW_PARAM_2_RMSK 0x7fff
-#define GSI_V2_2_EE_n_GSI_HW_PARAM_2_MAXn 2
-#define GSI_V2_2_EE_n_GSI_HW_PARAM_2_GSI_SDMA_N_IOVEC_BMSK 0x38000000
-#define GSI_V2_2_EE_n_GSI_HW_PARAM_2_GSI_SDMA_N_IOVEC_SHFT 0x1b
-#define GSI_V2_2_EE_n_GSI_HW_PARAM_2_GSI_SDMA_MAX_BURST_BMSK 0x7F80000
-#define GSI_V2_2_EE_n_GSI_HW_PARAM_2_GSI_SDMA_MAX_BURST_SHFT 0x13
-#define GSI_V2_2_EE_n_GSI_HW_PARAM_2_GSI_SDMA_N_INT_BMSK 0x70000
-#define GSI_V2_2_EE_n_GSI_HW_PARAM_2_GSI_SDMA_N_INT_SHFT 0x10
-#define GSI_V2_2_EE_n_GSI_HW_PARAM_2_GSI_USE_SDMA_BMSK 0x8000
-#define GSI_V2_2_EE_n_GSI_HW_PARAM_2_GSI_USE_SDMA_SHFT 0xf
-#define GSI_V2_2_EE_n_GSI_HW_PARAM_2_GSI_CH_FULL_LOGIC_BMSK 0x4000
-#define GSI_V2_2_EE_n_GSI_HW_PARAM_2_GSI_CH_FULL_LOGIC_SHFT 0xe
-#define GSI_V2_2_EE_n_GSI_HW_PARAM_2_GSI_CH_PEND_TRANSLATE_BMSK 0x2000
-#define GSI_V2_2_EE_n_GSI_HW_PARAM_2_GSI_CH_PEND_TRANSLATE_SHFT 0xd
-#define GSI_V2_2_EE_n_GSI_HW_PARAM_2_GSI_NUM_EV_PER_EE_BMSK 0x1f00
-#define GSI_V2_2_EE_n_GSI_HW_PARAM_2_GSI_NUM_EV_PER_EE_SHFT 0x8
-#define GSI_V2_2_EE_n_GSI_HW_PARAM_2_GSI_NUM_CH_PER_EE_BMSK 0xf8
-#define GSI_V2_2_EE_n_GSI_HW_PARAM_2_GSI_NUM_CH_PER_EE_SHFT 0x3
-#define GSI_V2_2_EE_n_GSI_HW_PARAM_2_GSI_IRAM_SIZE_BMSK 0x7
-#define GSI_V2_2_EE_n_GSI_HW_PARAM_2_GSI_IRAM_SIZE_SHFT 0x0
-#define GSI_V2_2_EE_n_GSI_HW_PARAM_2_GSI_IRAM_SIZE_ONE_KB_FVAL 0x0
-#define GSI_V2_2_EE_n_GSI_HW_PARAM_2_GSI_IRAM_SIZE_TWO_KB_FVAL 0x1
-#define GSI_V2_2_EE_n_GSI_HW_PARAM_2_GSI_IRAM_SIZE_TWO_N_HALF_KB_FVAL 0x2
-#define GSI_V2_2_EE_n_GSI_HW_PARAM_2_GSI_IRAM_SIZE_THREE_KB_FVAL 0x3
-
-#define GSI_V2_5_EE_n_GSI_HW_PARAM_2_OFFS(n) \
-		(GSI_GSI_REG_BASE_OFFS + 0x00012040 + 0x4000 * (n))
-#define GSI_V2_5_EE_n_GSI_HW_PARAM_2_GSI_USE_INTER_EE_BMSK 0x8000
-#define GSI_V2_5_EE_n_GSI_HW_PARAM_2_GSI_USE_INTER_EE_SHFT 0xf
-#define GSI_V2_5_EE_n_GSI_HW_PARAM_2_GSI_USE_RD_WR_ENG_BMSK 0x4000
-#define GSI_V2_5_EE_n_GSI_HW_PARAM_2_GSI_USE_RD_WR_ENG_SHFT 0xE
-#define GSI_V2_5_EE_n_GSI_HW_PARAM_2_RMSK 0x7fff
-#define GSI_V2_5_EE_n_GSI_HW_PARAM_2_MAXn 2
-#define GSI_V2_5_EE_n_GSI_HW_PARAM_2_GSI_SDMA_N_IOVEC_BMSK 0x38000000
-#define GSI_V2_5_EE_n_GSI_HW_PARAM_2_GSI_SDMA_N_IOVEC_SHFT 0x1b
-#define GSI_V2_5_EE_n_GSI_HW_PARAM_2_GSI_SDMA_MAX_BURST_BMSK 0x7F80000
-#define GSI_V2_5_EE_n_GSI_HW_PARAM_2_GSI_SDMA_MAX_BURST_SHFT 0x13
-#define GSI_V2_5_EE_n_GSI_HW_PARAM_2_GSI_SDMA_N_INT_BMSK 0x70000
-#define GSI_V2_5_EE_n_GSI_HW_PARAM_2_GSI_SDMA_N_INT_SHFT 0x10
-#define GSI_V2_5_EE_n_GSI_HW_PARAM_2_GSI_USE_SDMA_BMSK 0x8000
-#define GSI_V2_5_EE_n_GSI_HW_PARAM_2_GSI_USE_SDMA_SHFT 0xf
-#define GSI_V2_5_EE_n_GSI_HW_PARAM_2_GSI_CH_FULL_LOGIC_BMSK 0x4000
-#define GSI_V2_5_EE_n_GSI_HW_PARAM_2_GSI_CH_FULL_LOGIC_SHFT 0xe
-#define GSI_V2_5_EE_n_GSI_HW_PARAM_2_GSI_CH_PEND_TRANSLATE_BMSK 0x2000
-#define GSI_V2_5_EE_n_GSI_HW_PARAM_2_GSI_CH_PEND_TRANSLATE_SHFT 0xd
-#define GSI_V2_5_EE_n_GSI_HW_PARAM_2_GSI_NUM_EV_PER_EE_BMSK 0x1f00
-#define GSI_V2_5_EE_n_GSI_HW_PARAM_2_GSI_NUM_EV_PER_EE_SHFT 0x8
-#define GSI_V2_5_EE_n_GSI_HW_PARAM_2_GSI_NUM_CH_PER_EE_BMSK 0xf8
-#define GSI_V2_5_EE_n_GSI_HW_PARAM_2_GSI_NUM_CH_PER_EE_SHFT 0x3
-#define GSI_V2_5_EE_n_GSI_HW_PARAM_2_GSI_IRAM_SIZE_BMSK 0x7
-#define GSI_V2_5_EE_n_GSI_HW_PARAM_2_GSI_IRAM_SIZE_SHFT 0x0
-#define GSI_V2_5_EE_n_GSI_HW_PARAM_2_GSI_IRAM_SIZE_ONE_KB_FVAL 0x0
-#define GSI_V2_5_EE_n_GSI_HW_PARAM_2_GSI_IRAM_SIZE_TWO_KB_FVAL 0x1
-#define GSI_V2_5_EE_n_GSI_HW_PARAM_2_GSI_IRAM_SIZE_TWO_N_HALF_KB_FVAL 0x2
-#define GSI_V2_5_EE_n_GSI_HW_PARAM_2_GSI_IRAM_SIZE_THREE_KB_FVAL 0x3
-#define GSI_V2_5_EE_n_GSI_HW_PARAM_2_GSI_IRAM_SIZE_THREE_N_HALF_KB_FVAL 0x4
-#define GSI_V2_5_EE_n_GSI_HW_PARAM_2_GSI_IRAM_SIZE_FOUR_KB_FVAL 0x5
-
-
-#define GSI_V2_7_EE_n_GSI_HW_PARAM_2_OFFS(n) \
-			(GSI_GSI_REG_BASE_OFFS + 0x00012040 + 0x4000 * (n))
-#define GSI_V2_7_EE_n_GSI_HW_PARAM_2_GSI_USE_INTER_EE_BMSK 0x8000
-#define GSI_V2_7_EE_n_GSI_HW_PARAM_2_GSI_USE_INTER_EE_SHFT 0xf
-#define GSI_V2_7_EE_n_GSI_HW_PARAM_2_GSI_USE_RD_WR_ENG_BMSK 0x4000
-#define GSI_V2_7_EE_n_GSI_HW_PARAM_2_GSI_USE_RD_WR_ENG_SHFT 0xE
-#define GSI_V2_7_EE_n_GSI_HW_PARAM_2_RMSK 0x7fff
-#define GSI_V2_7_EE_n_GSI_HW_PARAM_2_MAXn 2
-#define GSI_V2_7_EE_n_GSI_HW_PARAM_2_GSI_SDMA_N_IOVEC_BMSK 0x38000000
-#define GSI_V2_7_EE_n_GSI_HW_PARAM_2_GSI_SDMA_N_IOVEC_SHFT 0x1b
-#define GSI_V2_7_EE_n_GSI_HW_PARAM_2_GSI_SDMA_MAX_BURST_BMSK 0x7F80000
-#define GSI_V2_7_EE_n_GSI_HW_PARAM_2_GSI_SDMA_MAX_BURST_SHFT 0x13
-#define GSI_V2_7_EE_n_GSI_HW_PARAM_2_GSI_SDMA_N_INT_BMSK 0x70000
-#define GSI_V2_7_EE_n_GSI_HW_PARAM_2_GSI_SDMA_N_INT_SHFT 0x10
-#define GSI_V2_7_EE_n_GSI_HW_PARAM_2_GSI_USE_SDMA_BMSK 0x8000
-#define GSI_V2_7_EE_n_GSI_HW_PARAM_2_GSI_USE_SDMA_SHFT 0xf
-#define GSI_V2_7_EE_n_GSI_HW_PARAM_2_GSI_CH_FULL_LOGIC_BMSK 0x4000
-#define GSI_V2_7_EE_n_GSI_HW_PARAM_2_GSI_CH_FULL_LOGIC_SHFT 0xe
-#define GSI_V2_7_EE_n_GSI_HW_PARAM_2_GSI_CH_PEND_TRANSLATE_BMSK 0x2000
-#define GSI_V2_7_EE_n_GSI_HW_PARAM_2_GSI_CH_PEND_TRANSLATE_SHFT 0xd
-#define GSI_V2_7_EE_n_GSI_HW_PARAM_2_GSI_NUM_EV_PER_EE_BMSK 0x1f00
-#define GSI_V2_7_EE_n_GSI_HW_PARAM_2_GSI_NUM_EV_PER_EE_SHFT 0x8
-#define GSI_V2_7_EE_n_GSI_HW_PARAM_2_GSI_NUM_CH_PER_EE_BMSK 0xf8
-#define GSI_V2_7_EE_n_GSI_HW_PARAM_2_GSI_NUM_CH_PER_EE_SHFT 0x3
-#define GSI_V2_7_EE_n_GSI_HW_PARAM_2_GSI_IRAM_SIZE_BMSK 0x7
-#define GSI_V2_7_EE_n_GSI_HW_PARAM_2_GSI_IRAM_SIZE_SHFT 0x0
-#define GSI_V2_7_EE_n_GSI_HW_PARAM_2_GSI_IRAM_SIZE_ONE_KB_FVAL 0x0
-#define GSI_V2_7_EE_n_GSI_HW_PARAM_2_GSI_IRAM_SIZE_TWO_KB_FVAL 0x1
-#define GSI_V2_7_EE_n_GSI_HW_PARAM_2_GSI_IRAM_SIZE_TWO_N_HALF_KB_FVAL 0x2
-#define GSI_V2_7_EE_n_GSI_HW_PARAM_2_GSI_IRAM_SIZE_THREE_KB_FVAL 0x3
-#define GSI_V2_7_EE_n_GSI_HW_PARAM_2_GSI_IRAM_SIZE_THREE_N_HALF_KB_FVAL 0x4
-#define GSI_V2_7_EE_n_GSI_HW_PARAM_2_GSI_IRAM_SIZE_FOUR_KB_FVAL 0x5
-
-#define GSI_V2_9_EE_n_GSI_HW_PARAM_2_OFFS(n) \
-			(GSI_GSI_REG_BASE_OFFS + 0x00012040 + 0x4000 * (n))
-#define GSI_V2_9_EE_n_GSI_HW_PARAM_2_RMSK 0xffffffff
-#define GSI_V2_9_EE_n_GSI_HW_PARAM_2_MAXn 2
-#define GSI_V2_9_EE_n_GSI_HW_PARAM_2_INI(n) \
-			in_dword_masked(GSI_V2_9_EE_n_GSI_HW_PARAM_2_OFFS(n), \
-				GSI_V2_9_EE_n_GSI_HW_PARAM_2_RMSK)
-#define GSI_V2_9_EE_n_GSI_HW_PARAM_2_INMI(n, mask) \
-			in_dword_masked(GSI_V2_9_EE_n_GSI_HW_PARAM_2_OFFS(n), \
-				mask)
-#define GSI_V2_9_EE_n_GSI_HW_PARAM_2_GSI_USE_INTER_EE_BMSK 0x80000000
-#define GSI_V2_9_EE_n_GSI_HW_PARAM_2_GSI_USE_INTER_EE_SHFT 0x1f
-#define GSI_V2_9_EE_n_GSI_HW_PARAM_2_GSI_USE_RD_WR_ENG_BMSK 0x40000000
-#define GSI_V2_9_EE_n_GSI_HW_PARAM_2_GSI_USE_RD_WR_ENG_SHFT 0x1e
-#define GSI_V2_9_EE_n_GSI_HW_PARAM_2_GSI_SDMA_N_IOVEC_BMSK 0x38000000
-#define GSI_V2_9_EE_n_GSI_HW_PARAM_2_GSI_SDMA_N_IOVEC_SHFT 0x1b
-#define GSI_V2_9_EE_n_GSI_HW_PARAM_2_GSI_SDMA_MAX_BURST_BMSK 0x7f80000
-#define GSI_V2_9_EE_n_GSI_HW_PARAM_2_GSI_SDMA_MAX_BURST_SHFT 0x13
-#define GSI_V2_9_EE_n_GSI_HW_PARAM_2_GSI_SDMA_N_INT_BMSK 0x70000
-#define GSI_V2_9_EE_n_GSI_HW_PARAM_2_GSI_SDMA_N_INT_SHFT 0x10
-#define GSI_V2_9_EE_n_GSI_HW_PARAM_2_GSI_USE_SDMA_BMSK 0x8000
-#define GSI_V2_9_EE_n_GSI_HW_PARAM_2_GSI_USE_SDMA_SHFT 0xf
-#define GSI_V2_9_EE_n_GSI_HW_PARAM_2_GSI_CH_FULL_LOGIC_BMSK 0x4000
-#define GSI_V2_9_EE_n_GSI_HW_PARAM_2_GSI_CH_FULL_LOGIC_SHFT 0xe
-#define GSI_V2_9_EE_n_GSI_HW_PARAM_2_GSI_CH_PEND_TRANSLATE_BMSK 0x2000
-#define GSI_V2_9_EE_n_GSI_HW_PARAM_2_GSI_CH_PEND_TRANSLATE_SHFT 0xd
-#define GSI_V2_9_EE_n_GSI_HW_PARAM_2_GSI_NUM_EV_PER_EE_BMSK 0x1f00
-#define GSI_V2_9_EE_n_GSI_HW_PARAM_2_GSI_NUM_EV_PER_EE_SHFT 0x8
-#define GSI_V2_9_EE_n_GSI_HW_PARAM_2_GSI_NUM_CH_PER_EE_BMSK 0xf8
-#define GSI_V2_9_EE_n_GSI_HW_PARAM_2_GSI_NUM_CH_PER_EE_SHFT 0x3
-#define GSI_V2_9_EE_n_GSI_HW_PARAM_2_GSI_IRAM_SIZE_BMSK 0x7
-#define GSI_V2_9_EE_n_GSI_HW_PARAM_2_GSI_IRAM_SIZE_SHFT 0x0
-
-#define GSI_V2_11_EE_n_GSI_HW_PARAM_2_OFFS(n) \
-				(GSI_GSI_REG_BASE_OFFS + 0x00012040 + 0x4000 * (n))
-#define GSI_V2_11_EE_n_GSI_HW_PARAM_2_GSI_USE_INTER_EE_BMSK 0x80000000
-#define GSI_V2_11_EE_n_GSI_HW_PARAM_2_GSI_USE_INTER_EE_SHFT 0x1f
-#define GSI_V2_11_EE_n_GSI_HW_PARAM_2_GSI_USE_RD_WR_ENG_BMSK 0x40000000
-#define GSI_V2_11_EE_n_GSI_HW_PARAM_2_GSI_USE_RD_WR_ENG_SHFT 0x1e
-#define GSI_V2_11_EE_n_GSI_HW_PARAM_2_RMSK 0xffffffff
-#define GSI_V2_11_EE_n_GSI_HW_PARAM_2_MAXn 2
-#define GSI_V2_11_EE_n_GSI_HW_PARAM_2_GSI_SDMA_N_IOVEC_BMSK 0x38000000
-#define GSI_V2_11_EE_n_GSI_HW_PARAM_2_GSI_SDMA_N_IOVEC_SHFT 0x1b
-#define GSI_V2_11_EE_n_GSI_HW_PARAM_2_GSI_SDMA_MAX_BURST_BMSK 0x7F80000
-#define GSI_V2_11_EE_n_GSI_HW_PARAM_2_GSI_SDMA_MAX_BURST_SHFT 0x13
-#define GSI_V2_11_EE_n_GSI_HW_PARAM_2_GSI_SDMA_N_INT_BMSK 0x70000
-#define GSI_V2_11_EE_n_GSI_HW_PARAM_2_GSI_SDMA_N_INT_SHFT 0x10
-#define GSI_V2_11_EE_n_GSI_HW_PARAM_2_GSI_USE_SDMA_BMSK 0x8000
-#define GSI_V2_11_EE_n_GSI_HW_PARAM_2_GSI_USE_SDMA_SHFT 0xf
-#define GSI_V2_11_EE_n_GSI_HW_PARAM_2_GSI_CH_FULL_LOGIC_BMSK 0x4000
-#define GSI_V2_11_EE_n_GSI_HW_PARAM_2_GSI_CH_FULL_LOGIC_SHFT 0xe
-#define GSI_V2_11_EE_n_GSI_HW_PARAM_2_GSI_CH_PEND_TRANSLATE_BMSK 0x2000
-#define GSI_V2_11_EE_n_GSI_HW_PARAM_2_GSI_CH_PEND_TRANSLATE_SHFT 0xd
-#define GSI_V2_11_EE_n_GSI_HW_PARAM_2_GSI_NUM_EV_PER_EE_BMSK 0x1f00
-#define GSI_V2_11_EE_n_GSI_HW_PARAM_2_GSI_NUM_EV_PER_EE_SHFT 0x8
-#define GSI_V2_11_EE_n_GSI_HW_PARAM_2_GSI_NUM_CH_PER_EE_BMSK 0xf8
-#define GSI_V2_11_EE_n_GSI_HW_PARAM_2_GSI_NUM_CH_PER_EE_SHFT 0x3
-#define GSI_V2_11_EE_n_GSI_HW_PARAM_2_GSI_IRAM_SIZE_BMSK 0x7
-#define GSI_V2_11_EE_n_GSI_HW_PARAM_2_GSI_IRAM_SIZE_SHFT 0x0
-#define GSI_V2_11_EE_n_GSI_HW_PARAM_2_GSI_IRAM_SIZE_ONE_KB_FVAL 0x0
-#define GSI_V2_11_EE_n_GSI_HW_PARAM_2_GSI_IRAM_SIZE_TWO_KB_FVAL 0x1
-#define GSI_V2_11_EE_n_GSI_HW_PARAM_2_GSI_IRAM_SIZE_TWO_N_HALF_KB_FVAL 0x2
-#define GSI_V2_11_EE_n_GSI_HW_PARAM_2_GSI_IRAM_SIZE_THREE_KB_FVAL 0x3
-#define GSI_V2_11_EE_n_GSI_HW_PARAM_2_GSI_IRAM_SIZE_THREE_N_HALF_KB_FVAL 0x4
-#define GSI_V2_11_EE_n_GSI_HW_PARAM_2_GSI_IRAM_SIZE_FOUR_KB_FVAL 0x5
-#define GSI_GSI_IRAM_PTR_MSI_DB_OFFS \
-		(GSI_GSI_REG_BASE_OFFS + 0x00000414)
-#define GSI_GSI_IRAM_PTR_MSI_DB_FULL_RMSK 0xfff
-#define GSI_GSI_IRAM_PTR_MSI_DB_FULL_IRAM_PTR_BMSK 0xfff
-#define GSI_GSI_IRAM_PTR_MSI_DB_FULL_IRAM_PTR_SHFT 0x0
-
-#define GSI_EE_n_GSI_SW_VERSION_OFFS(n) \
-	(GSI_GSI_REG_BASE_OFFS + 0x00012044 + 0x4000 * (n))
-#define GSI_EE_n_GSI_SW_VERSION_MAJOR_BMSK 0xf0000000
-#define GSI_EE_n_GSI_SW_VERSION_MAJOR_SHFT 0x1c
-#define GSI_EE_n_GSI_SW_VERSION_MINOR_BMSK 0xfff0000
-#define GSI_EE_n_GSI_SW_VERSION_MINOR_SHFT 0x10
-#define GSI_EE_n_GSI_SW_VERSION_STEP_BMSK 0xffff
-#define GSI_EE_n_GSI_SW_VERSION_STEP_SHFT 0x0
-
-#define GSI_EE_n_CNTXT_TYPE_IRQ_OFFS(n) \
-	(GSI_GSI_REG_BASE_OFFS + 0x00012080 + 0x4000 * (n))
-#define GSI_EE_n_CNTXT_TYPE_IRQ_GENERAL_BMSK 0x40
-#define GSI_EE_n_CNTXT_TYPE_IRQ_GENERAL_SHFT 0x6
-#define GSI_EE_n_CNTXT_TYPE_IRQ_INTER_EE_EV_CTRL_BMSK 0x20
-#define GSI_EE_n_CNTXT_TYPE_IRQ_INTER_EE_EV_CTRL_SHFT 0x5
-#define GSI_EE_n_CNTXT_TYPE_IRQ_INTER_EE_CH_CTRL_BMSK 0x10
-#define GSI_EE_n_CNTXT_TYPE_IRQ_INTER_EE_CH_CTRL_SHFT 0x4
-#define GSI_EE_n_CNTXT_TYPE_IRQ_IEOB_BMSK 0x8
-#define GSI_EE_n_CNTXT_TYPE_IRQ_IEOB_SHFT 0x3
-#define GSI_EE_n_CNTXT_TYPE_IRQ_GLOB_EE_BMSK 0x4
-#define GSI_EE_n_CNTXT_TYPE_IRQ_GLOB_EE_SHFT 0x2
-#define GSI_EE_n_CNTXT_TYPE_IRQ_EV_CTRL_BMSK 0x2
-#define GSI_EE_n_CNTXT_TYPE_IRQ_EV_CTRL_SHFT 0x1
-#define GSI_EE_n_CNTXT_TYPE_IRQ_CH_CTRL_BMSK 0x1
-#define GSI_EE_n_CNTXT_TYPE_IRQ_CH_CTRL_SHFT 0x0
-
-#define GSI_EE_n_CNTXT_TYPE_IRQ_MSK_OFFS(n) \
-	(GSI_GSI_REG_BASE_OFFS + 0x00012088 + 0x4000 * (n))
-#define GSI_EE_n_CNTXT_TYPE_IRQ_MSK_GENERAL_BMSK 0x40
-#define GSI_EE_n_CNTXT_TYPE_IRQ_MSK_GENERAL_SHFT 0x6
-#define GSI_EE_n_CNTXT_TYPE_IRQ_MSK_INTER_EE_EV_CTRL_BMSK 0x20
-#define GSI_EE_n_CNTXT_TYPE_IRQ_MSK_INTER_EE_EV_CTRL_SHFT 0x5
-#define GSI_EE_n_CNTXT_TYPE_IRQ_MSK_INTER_EE_CH_CTRL_BMSK 0x10
-#define GSI_EE_n_CNTXT_TYPE_IRQ_MSK_INTER_EE_CH_CTRL_SHFT 0x4
-#define GSI_EE_n_CNTXT_TYPE_IRQ_MSK_IEOB_BMSK 0x8
-#define GSI_EE_n_CNTXT_TYPE_IRQ_MSK_IEOB_SHFT 0x3
-#define GSI_EE_n_CNTXT_TYPE_IRQ_MSK_GLOB_EE_BMSK 0x4
-#define GSI_EE_n_CNTXT_TYPE_IRQ_MSK_GLOB_EE_SHFT 0x2
-#define GSI_EE_n_CNTXT_TYPE_IRQ_MSK_EV_CTRL_BMSK 0x2
-#define GSI_EE_n_CNTXT_TYPE_IRQ_MSK_EV_CTRL_SHFT 0x1
-#define GSI_EE_n_CNTXT_TYPE_IRQ_MSK_CH_CTRL_BMSK 0x1
-#define GSI_EE_n_CNTXT_TYPE_IRQ_MSK_CH_CTRL_SHFT 0x0
-
-#define GSI_EE_n_CNTXT_SRC_GSI_CH_IRQ_OFFS(n) \
-	(GSI_GSI_REG_BASE_OFFS + 0x00012090 + 0x4000 * (n))
-#define GSI_EE_n_CNTXT_SRC_GSI_CH_IRQ_GSI_CH_BIT_MAP_BMSK 0xffffffff
-#define GSI_EE_n_CNTXT_SRC_GSI_CH_IRQ_GSI_CH_BIT_MAP_SHFT 0x0
-
-#define GSI_EE_n_CNTXT_SRC_EV_CH_IRQ_OFFS(n) \
-	(GSI_GSI_REG_BASE_OFFS + 0x00012094 + 0x4000 * (n))
-#define GSI_EE_n_CNTXT_SRC_EV_CH_IRQ_EV_CH_BIT_MAP_BMSK 0xffffffff
-#define GSI_EE_n_CNTXT_SRC_EV_CH_IRQ_EV_CH_BIT_MAP_SHFT 0x0
-
-#define GSI_EE_n_CNTXT_SRC_GSI_CH_IRQ_MSK_OFFS(n) \
-	(GSI_GSI_REG_BASE_OFFS + 0x00012098 + 0x4000 * (n))
-#define GSI_EE_n_CNTXT_SRC_GSI_CH_IRQ_MSK_GSI_CH_BIT_MAP_MSK_BMSK 0x1ffff
-#define GSI_V2_5_EE_n_CNTXT_SRC_GSI_CH_IRQ_MSK_GSI_CH_BIT_MAP_MSK_BMSK 0x7fffff
-#define GSI_EE_n_CNTXT_SRC_GSI_CH_IRQ_MSK_GSI_CH_BIT_MAP_MSK_SHFT 0x0
-#define GSI_V2_5_EE_n_CNTXT_SRC_GSI_CH_IRQ_MSK_GSI_CH_BIT_MAP_MSK_SHFT 0x0
-
-#define GSI_EE_n_CNTXT_SRC_EV_CH_IRQ_MSK_OFFS(n) \
-	(GSI_GSI_REG_BASE_OFFS + 0x0001209c + 0x4000 * (n))
-#define GSI_EE_n_CNTXT_SRC_EV_CH_IRQ_MSK_EV_CH_BIT_MAP_MSK_BMSK 0xfff
-#define GSI_V2_5_EE_n_CNTXT_SRC_EV_CH_IRQ_MSK_EV_CH_BIT_MAP_MSK_BMSK 0xfffff
-#define GSI_EE_n_CNTXT_SRC_EV_CH_IRQ_MSK_EV_CH_BIT_MAP_MSK_SHFT 0x0
-#define GSI_V2_5_EE_n_CNTXT_SRC_EV_CH_IRQ_MSK_EV_CH_BIT_MAP_MSK_SHFT 0x0
-
-#define GSI_EE_n_CNTXT_SRC_GSI_CH_IRQ_CLR_OFFS(n) \
-	(GSI_GSI_REG_BASE_OFFS + 0x000120a0 + 0x4000 * (n))
-#define GSI_EE_n_CNTXT_SRC_GSI_CH_IRQ_CLR_GSI_CH_BIT_MAP_BMSK 0xffffffff
-#define GSI_EE_n_CNTXT_SRC_GSI_CH_IRQ_CLR_GSI_CH_BIT_MAP_SHFT 0x0
-
-#define GSI_EE_n_CNTXT_SRC_EV_CH_IRQ_CLR_OFFS(n) \
-	(GSI_GSI_REG_BASE_OFFS + 0x000120a4 + 0x4000 * (n))
-#define GSI_EE_n_CNTXT_SRC_EV_CH_IRQ_CLR_EV_CH_BIT_MAP_BMSK 0xffffffff
-#define GSI_EE_n_CNTXT_SRC_EV_CH_IRQ_CLR_EV_CH_BIT_MAP_SHFT 0x0
-
-#define GSI_EE_n_CNTXT_SRC_IEOB_IRQ_OFFS(n) \
-	(GSI_GSI_REG_BASE_OFFS + 0x000120b0 + 0x4000 * (n))
-#define GSI_EE_n_CNTXT_SRC_IEOB_IRQ_EV_CH_BIT_MAP_BMSK 0xffffffff
-#define GSI_EE_n_CNTXT_SRC_IEOB_IRQ_EV_CH_BIT_MAP_SHFT 0x0
-
-#define GSI_EE_n_CNTXT_SRC_IEOB_IRQ_MSK_OFFS(n) \
-	(GSI_GSI_REG_BASE_OFFS + 0x000120b8 + 0x4000 * (n))
-#define GSI_EE_n_CNTXT_SRC_IEOB_IRQ_MSK_EV_CH_BIT_MAP_MSK_BMSK 0xfff
-#define GSI_V2_5_EE_n_CNTXT_SRC_IEOB_IRQ_MSK_EV_CH_BIT_MAP_MSK_BMSK 0xfffff
-#define GSI_EE_n_CNTXT_SRC_IEOB_IRQ_MSK_EV_CH_BIT_MAP_MSK_SHFT 0x0
-#define GSI_V2_5_EE_n_CNTXT_SRC_IEOB_IRQ_MSK_EV_CH_BIT_MAP_MSK_SHFT 0x0
-
-#define GSI_EE_n_CNTXT_SRC_IEOB_IRQ_CLR_OFFS(n) \
-	(GSI_GSI_REG_BASE_OFFS + 0x000120c0 + 0x4000 * (n))
-#define GSI_EE_n_CNTXT_SRC_IEOB_IRQ_CLR_EV_CH_BIT_MAP_BMSK 0xffffffff
-#define GSI_EE_n_CNTXT_SRC_IEOB_IRQ_CLR_EV_CH_BIT_MAP_SHFT 0x0
-
-#define GSI_EE_n_CNTXT_GLOB_IRQ_STTS_OFFS(n) \
-	(GSI_GSI_REG_BASE_OFFS + 0x00012100 + 0x4000 * (n))
-#define GSI_EE_n_CNTXT_GLOB_IRQ_STTS_GP_INT3_BMSK 0x8
-#define GSI_EE_n_CNTXT_GLOB_IRQ_STTS_GP_INT3_SHFT 0x3
-#define GSI_EE_n_CNTXT_GLOB_IRQ_STTS_GP_INT2_BMSK 0x4
-#define GSI_EE_n_CNTXT_GLOB_IRQ_STTS_GP_INT2_SHFT 0x2
-#define GSI_EE_n_CNTXT_GLOB_IRQ_STTS_GP_INT1_BMSK 0x2
-#define GSI_EE_n_CNTXT_GLOB_IRQ_STTS_GP_INT1_SHFT 0x1
-#define GSI_EE_n_CNTXT_GLOB_IRQ_STTS_ERROR_INT_BMSK 0x1
-#define GSI_EE_n_CNTXT_GLOB_IRQ_STTS_ERROR_INT_SHFT 0x0
-
-#define GSI_EE_n_CNTXT_GLOB_IRQ_EN_OFFS(n) \
-	(GSI_GSI_REG_BASE_OFFS + 0x00012108 + 0x4000 * (n))
-#define GSI_EE_n_CNTXT_GLOB_IRQ_EN_GP_INT3_BMSK 0x8
-#define GSI_EE_n_CNTXT_GLOB_IRQ_EN_GP_INT3_SHFT 0x3
-#define GSI_EE_n_CNTXT_GLOB_IRQ_EN_GP_INT2_BMSK 0x4
-#define GSI_EE_n_CNTXT_GLOB_IRQ_EN_GP_INT2_SHFT 0x2
-#define GSI_EE_n_CNTXT_GLOB_IRQ_EN_GP_INT1_BMSK 0x2
-#define GSI_EE_n_CNTXT_GLOB_IRQ_EN_GP_INT1_SHFT 0x1
-#define GSI_EE_n_CNTXT_GLOB_IRQ_EN_ERROR_INT_BMSK 0x1
-#define GSI_EE_n_CNTXT_GLOB_IRQ_EN_ERROR_INT_SHFT 0x0
-
-#define GSI_EE_n_CNTXT_GLOB_IRQ_CLR_OFFS(n) \
-	(GSI_GSI_REG_BASE_OFFS + 0x00012110 + 0x4000 * (n))
-#define GSI_EE_n_CNTXT_GLOB_IRQ_CLR_GP_INT3_BMSK 0x8
-#define GSI_EE_n_CNTXT_GLOB_IRQ_CLR_GP_INT3_SHFT 0x3
-#define GSI_EE_n_CNTXT_GLOB_IRQ_CLR_GP_INT2_BMSK 0x4
-#define GSI_EE_n_CNTXT_GLOB_IRQ_CLR_GP_INT2_SHFT 0x2
-#define GSI_EE_n_CNTXT_GLOB_IRQ_CLR_GP_INT1_BMSK 0x2
-#define GSI_EE_n_CNTXT_GLOB_IRQ_CLR_GP_INT1_SHFT 0x1
-#define GSI_EE_n_CNTXT_GLOB_IRQ_CLR_ERROR_INT_BMSK 0x1
-#define GSI_EE_n_CNTXT_GLOB_IRQ_CLR_ERROR_INT_SHFT 0x0
-
-#define GSI_EE_n_CNTXT_GSI_IRQ_STTS_OFFS(n) \
-	(GSI_GSI_REG_BASE_OFFS + 0x00012118 + 0x4000 * (n))
-#define GSI_EE_n_CNTXT_GSI_IRQ_STTS_GSI_MCS_STACK_OVRFLOW_BMSK 0x8
-#define GSI_EE_n_CNTXT_GSI_IRQ_STTS_GSI_MCS_STACK_OVRFLOW_SHFT 0x3
-#define GSI_EE_n_CNTXT_GSI_IRQ_STTS_GSI_CMD_FIFO_OVRFLOW_BMSK 0x4
-#define GSI_EE_n_CNTXT_GSI_IRQ_STTS_GSI_CMD_FIFO_OVRFLOW_SHFT 0x2
-#define GSI_EE_n_CNTXT_GSI_IRQ_STTS_GSI_BUS_ERROR_BMSK 0x2
-#define GSI_EE_n_CNTXT_GSI_IRQ_STTS_GSI_BUS_ERROR_SHFT 0x1
-#define GSI_EE_n_CNTXT_GSI_IRQ_STTS_GSI_BREAK_POINT_BMSK 0x1
-#define GSI_EE_n_CNTXT_GSI_IRQ_STTS_GSI_BREAK_POINT_SHFT 0x0
-
-#define GSI_EE_n_CNTXT_GSI_IRQ_EN_OFFS(n) \
-	(GSI_GSI_REG_BASE_OFFS + 0x00012120 + 0x4000 * (n))
-#define GSI_EE_n_CNTXT_GSI_IRQ_EN_GSI_MCS_STACK_OVRFLOW_BMSK 0x8
-#define GSI_EE_n_CNTXT_GSI_IRQ_EN_GSI_MCS_STACK_OVRFLOW_SHFT 0x3
-#define GSI_EE_n_CNTXT_GSI_IRQ_EN_GSI_CMD_FIFO_OVRFLOW_BMSK 0x4
-#define GSI_EE_n_CNTXT_GSI_IRQ_EN_GSI_CMD_FIFO_OVRFLOW_SHFT 0x2
-#define GSI_EE_n_CNTXT_GSI_IRQ_EN_GSI_BUS_ERROR_BMSK 0x2
-#define GSI_EE_n_CNTXT_GSI_IRQ_EN_GSI_BUS_ERROR_SHFT 0x1
-#define GSI_EE_n_CNTXT_GSI_IRQ_EN_GSI_BREAK_POINT_BMSK 0x1
-#define GSI_EE_n_CNTXT_GSI_IRQ_EN_GSI_BREAK_POINT_SHFT 0x0
-
-#define GSI_EE_n_CNTXT_GSI_IRQ_CLR_OFFS(n) \
-	(GSI_GSI_REG_BASE_OFFS + 0x00012128 + 0x4000 * (n))
-#define GSI_EE_n_CNTXT_GSI_IRQ_CLR_GSI_MCS_STACK_OVRFLOW_BMSK 0x8
-#define GSI_EE_n_CNTXT_GSI_IRQ_CLR_GSI_MCS_STACK_OVRFLOW_SHFT 0x3
-#define GSI_EE_n_CNTXT_GSI_IRQ_CLR_GSI_CMD_FIFO_OVRFLOW_BMSK 0x4
-#define GSI_EE_n_CNTXT_GSI_IRQ_CLR_GSI_CMD_FIFO_OVRFLOW_SHFT 0x2
-#define GSI_EE_n_CNTXT_GSI_IRQ_CLR_GSI_BUS_ERROR_BMSK 0x2
-#define GSI_EE_n_CNTXT_GSI_IRQ_CLR_GSI_BUS_ERROR_SHFT 0x1
-#define GSI_EE_n_CNTXT_GSI_IRQ_CLR_GSI_BREAK_POINT_BMSK 0x1
-#define GSI_EE_n_CNTXT_GSI_IRQ_CLR_GSI_BREAK_POINT_SHFT 0x0
-
-#define GSI_EE_n_CNTXT_MSI_BASE_LSB(n) \
-	(GSI_GSI_REG_BASE_OFFS + 0x00012188 + 0x4000 * (n))
-#define GSI_EE_n_CNTXT_MSI_BASE_MSB(n) \
-	(GSI_GSI_REG_BASE_OFFS + 0x0001218c + 0x4000 * (n))
-
-#define GSI_EE_n_CNTXT_INTSET_OFFS(n) \
-	(GSI_GSI_REG_BASE_OFFS + 0x00012180 + 0x4000 * (n))
-#define GSI_EE_n_CNTXT_INTSET_INTYPE_BMSK 0x1
-#define GSI_EE_n_CNTXT_INTSET_INTYPE_SHFT 0x0
-
-#define GSI_EE_n_ERROR_LOG_OFFS(n) \
-	(GSI_GSI_REG_BASE_OFFS + 0x00012200 + 0x4000 * (n))
-#define GSI_EE_n_ERROR_LOG_TODO_BMSK 0xffffffff
-#define GSI_EE_n_ERROR_LOG_TODO_SHFT 0x0
-
-#define GSI_EE_n_ERROR_LOG_CLR_OFFS(n) \
-	(GSI_GSI_REG_BASE_OFFS + 0x00012210 + 0x4000 * (n))
-#define GSI_EE_n_ERROR_LOG_CLR_TODO_BMSK 0xffffffff
-#define GSI_EE_n_ERROR_LOG_CLR_TODO_SHFT 0x0
-
-#define GSI_EE_n_CNTXT_SCRATCH_0_OFFS(n) \
-	(GSI_GSI_REG_BASE_OFFS + 0x00012400 + 0x4000 * (n))
-#define GSI_EE_n_CNTXT_SCRATCH_0_SCRATCH_BMSK 0xffffffff
-#define GSI_EE_n_CNTXT_SCRATCH_0_SCRATCH_SHFT 0x0
-
-#define GSI_INTER_EE_n_SRC_GSI_CH_IRQ_OFFS(n) \
-	(GSI_GSI_REG_BASE_OFFS + 0x0000c018 + 0x1000 * (n))
-#define GSI_INTER_EE_n_SRC_GSI_CH_IRQ_GSI_CH_BIT_MAP_BMSK 0xffffffff
-#define GSI_INTER_EE_n_SRC_GSI_CH_IRQ_GSI_CH_BIT_MAP_SHFT 0x0
-
-#define GSI_INTER_EE_n_SRC_EV_CH_IRQ_OFFS(n) \
-	(GSI_GSI_REG_BASE_OFFS + 0x0000c01c + 0x1000 * (n))
-#define GSI_INTER_EE_n_SRC_EV_CH_IRQ_EV_CH_BIT_MAP_BMSK 0xffffffff
-#define GSI_INTER_EE_n_SRC_EV_CH_IRQ_EV_CH_BIT_MAP_SHFT 0x0
-
-#define GSI_INTER_EE_n_SRC_GSI_CH_IRQ_CLR_OFFS(n) \
-	(GSI_GSI_REG_BASE_OFFS + 0x0000c028 + 0x1000 * (n))
-#define GSI_INTER_EE_n_SRC_GSI_CH_IRQ_CLR_GSI_CH_BIT_MAP_BMSK 0xffffffff
-#define GSI_INTER_EE_n_SRC_GSI_CH_IRQ_CLR_GSI_CH_BIT_MAP_SHFT 0x0
-
-#define GSI_INTER_EE_n_SRC_EV_CH_IRQ_CLR_OFFS(n) \
-	(GSI_GSI_REG_BASE_OFFS + 0x0000c02c + 0x1000 * (n))
-#define GSI_INTER_EE_n_SRC_EV_CH_IRQ_CLR_EV_CH_BIT_MAP_BMSK 0xffffffff
-#define GSI_INTER_EE_n_SRC_EV_CH_IRQ_CLR_EV_CH_BIT_MAP_SHFT 0x0
-
-#define GSI_V2_5_GSI_MAP_EE_n_CH_k_VP_TABLE_OFFS(k, n) \
-	(GSI_GSI_REG_BASE_OFFS + 0x00003800 + 0x80 * (n) + 0x4 * (k))
-#define GSI_V2_5_GSI_MAP_EE_n_CH_k_VP_TABLE_VALID_BMSK 0x20
-#define GSI_V2_5_GSI_MAP_EE_n_CH_k_VP_TABLE_VALID_SHFT 0x5
-#define GSI_V2_5_GSI_MAP_EE_n_CH_k_VP_TABLE_PHY_CH_BMSK 0x1f
-#define GSI_V2_5_GSI_MAP_EE_n_CH_k_VP_TABLE_PHY_CH_SHFT 0x0
-
-#endif /* __GSI_REG_V2_H__ */

+ 71 - 0
drivers/platform/msm/gsi/gsihal/gsihal.c

@@ -0,0 +1,71 @@
+// SPDX-License-Identifier: GPL-2.0-only
+/*
+* Copyright (c) 2020, The Linux Foundation. All rights reserved.
+*/
+
+#include "gsihal_i.h"
+#include "gsihal_reg.h"
+
+struct gsihal_context *gsihal_ctx;
+
+int gsihal_init(enum gsi_ver gsi_ver, void __iomem *base)
+{
+	int result = 0;
+
+	GSIDBG("initializing GSI HAL, GSI ver %d, base = %pK\n",
+		gsi_ver, base);
+
+	if (gsihal_ctx) {
+		GSIDBG("gsihal already initialized\n");
+		if (base != gsihal_ctx->base) {
+			GSIERR(
+				"base address of early init is differnet (%pK - %pK)\n"
+			);
+			WARN_ON(1);
+		}
+		result = -EEXIST;
+		goto bail_err_exit;
+	}
+
+	if (gsi_ver < GSI_VER_1_0 || gsi_ver >= GSI_VER_MAX) {
+		GSIERR("invalid GSI version %d\n", gsi_ver);
+		result = -EINVAL;
+		goto bail_err_exit;
+	}
+
+	if (!base) {
+		GSIERR("invalid memory io mapping addr\n");
+		result = -EINVAL;
+		goto bail_err_exit;
+	}
+
+	gsihal_ctx = kzalloc(sizeof(*gsihal_ctx), GFP_KERNEL);
+	if (!gsihal_ctx) {
+		GSIERR("kzalloc err for gsihal_ctx\n");
+		result = -ENOMEM;
+		goto bail_err_exit;
+	}
+
+	gsihal_ctx->gsi_ver = gsi_ver;
+	gsihal_ctx->base = base;
+
+	if (gsihal_reg_init(gsi_ver)) {
+		GSIERR("failed to initialize gsihal regs\n");
+		result = -EINVAL;
+		goto bail_free_ctx;
+	}
+
+	return 0;
+bail_free_ctx:
+	kfree(gsihal_ctx);
+	gsihal_ctx = NULL;
+bail_err_exit:
+	return result;
+}
+
+void gsihal_destroy(void)
+{
+	GSIDBG("Entry\n");
+	kfree(gsihal_ctx);
+	gsihal_ctx = NULL;
+}

+ 14 - 0
drivers/platform/msm/gsi/gsihal/gsihal.h

@@ -0,0 +1,14 @@
+/* SPDX-License-Identifier: GPL-2.0-only */
+/*
+* Copyright (c) 2030, The Linux Foundation. All rights reserved.
+*/
+
+#ifndef _GSIHAL_H_
+#define _GSIHAL_H_
+
+#include "gsihal_reg.h"
+
+int gsihal_init(enum gsi_ver gsi_ver, void __iomem *base);
+void gsihal_destroy(void);
+
+#endif /* _GSIHAL_H_ */

+ 19 - 0
drivers/platform/msm/gsi/gsihal/gsihal_i.h

@@ -0,0 +1,19 @@
+/* SPDX-License-Identifier: GPL-2.0-only */
+/*
+* Copyright (c) 2020, The Linux Foundation. All rights reserved.
+*/
+
+#ifndef _GSIHAL_I_H_
+#define _GSIHAL_I_H_
+
+#include "../gsi.h"
+#include <linux/slab.h>
+#include <linux/io.h>
+
+struct gsihal_context {
+	enum gsi_ver gsi_ver;
+	void __iomem *base;
+};
+
+extern struct gsihal_context *gsihal_ctx;
+#endif /* _GSIHAL_I_H_ */

+ 1811 - 0
drivers/platform/msm/gsi/gsihal/gsihal_reg.c

@@ -0,0 +1,1811 @@
+// SPDX-License-Identifier: GPL-2.0-only
+/*
+* Copyright (c) 2020, The Linux Foundation. All rights reserved.
+*/
+
+#include "gsihal_i.h"
+#include "gsihal_reg_i.h"
+#include "gsihal_reg.h"
+
+#define gsi_readl(c)	(readl_relaxed(c))
+#define gsi_writel(v, c)	({ __iowmb(); writel_relaxed((v), (c)); })
+
+static const char *gsireg_name_to_str[GSI_REG_MAX] = {
+	__stringify(GSI_EE_n_CNTXT_TYPE_IRQ_MSK),
+	__stringify(GSI_EE_n_CNTXT_SRC_GSI_CH_IRQ_MSK),
+	__stringify(GSI_EE_n_CNTXT_SRC_EV_CH_IRQ_MSK),
+	__stringify(GSI_EE_n_CNTXT_SRC_IEOB_IRQ_MSK),
+	__stringify(GSI_EE_n_CNTXT_GLOB_IRQ_EN),
+	__stringify(GSI_EE_n_CNTXT_GSI_IRQ_EN),
+	__stringify(GSI_EE_n_CNTXT_TYPE_IRQ),
+	__stringify(GSI_EE_n_CNTXT_SRC_GSI_CH_IRQ),
+	__stringify(GSI_EE_n_GSI_CH_k_CNTXT_0),
+	__stringify(GSI_EE_n_CNTXT_SRC_GSI_CH_IRQ_CLR),
+	__stringify(GSI_EE_n_CNTXT_SRC_EV_CH_IRQ),
+	__stringify(GSI_EE_n_CNTXT_SRC_EV_CH_IRQ_CLR),
+	__stringify(GSI_EE_n_EV_CH_k_CNTXT_0),
+	__stringify(GSI_EE_n_CNTXT_GLOB_IRQ_STTS),
+	__stringify(GSI_EE_n_ERROR_LOG),
+	__stringify(GSI_EE_n_ERROR_LOG_CLR),
+	__stringify(GSI_EE_n_CNTXT_GLOB_IRQ_CLR),
+	__stringify(GSI_EE_n_EV_CH_k_DOORBELL_0),
+	__stringify(GSI_EE_n_GSI_CH_k_DOORBELL_0),
+	__stringify(GSI_EE_n_CNTXT_SRC_IEOB_IRQ),
+	__stringify(GSI_EE_n_CNTXT_SRC_IEOB_IRQ_CLR),
+	__stringify(GSI_INTER_EE_n_SRC_GSI_CH_IRQ),
+	__stringify(GSI_INTER_EE_n_SRC_GSI_CH_IRQ_CLR),
+	__stringify(GSI_INTER_EE_n_SRC_EV_CH_IRQ),
+	__stringify(GSI_INTER_EE_n_SRC_EV_CH_IRQ_CLR),
+	__stringify(GSI_EE_n_CNTXT_GSI_IRQ_STTS),
+	__stringify(GSI_EE_n_CNTXT_GSI_IRQ_CLR),
+	__stringify(GSI_EE_n_GSI_HW_PARAM),
+	__stringify(GSI_EE_n_GSI_HW_PARAM_0),
+	__stringify(GSI_EE_n_GSI_HW_PARAM_2),
+	__stringify(GSI_EE_n_GSI_SW_VERSION),
+	__stringify(GSI_EE_n_CNTXT_INTSET),
+	__stringify(GSI_EE_n_CNTXT_MSI_BASE_LSB),
+	__stringify(GSI_EE_n_CNTXT_MSI_BASE_MSB),
+	__stringify(GSI_EE_n_GSI_STATUS),
+	__stringify(GSI_EE_n_CNTXT_SCRATCH_0),
+	__stringify(GSI_EE_n_EV_CH_k_CNTXT_1),
+	__stringify(GSI_EE_n_EV_CH_k_CNTXT_2),
+	__stringify(GSI_EE_n_EV_CH_k_CNTXT_3),
+	__stringify(GSI_EE_n_EV_CH_k_CNTXT_8),
+	__stringify(GSI_EE_n_EV_CH_k_CNTXT_9),
+	__stringify(GSI_EE_n_EV_CH_k_CNTXT_10),
+	__stringify(GSI_EE_n_EV_CH_k_CNTXT_11),
+	__stringify(GSI_EE_n_EV_CH_k_CNTXT_12),
+	__stringify(GSI_EE_n_EV_CH_k_CNTXT_13),
+	__stringify(GSI_EE_n_EV_CH_k_DOORBELL_1),
+	__stringify(GSI_EE_n_EV_CH_CMD),
+	__stringify(GSI_EE_n_EV_CH_k_SCRATCH_0),
+	__stringify(GSI_EE_n_EV_CH_k_SCRATCH_1),
+	__stringify(GSI_EE_n_GSI_CH_k_DOORBELL_1),
+	__stringify(GSI_EE_n_GSI_CH_k_QOS),
+	__stringify(GSI_EE_n_GSI_CH_k_CNTXT_1),
+	__stringify(GSI_EE_n_GSI_CH_k_CNTXT_2),
+	__stringify(GSI_EE_n_GSI_CH_k_CNTXT_3),
+	__stringify(GSI_EE_n_GSI_CH_CMD),
+	__stringify(GSI_EE_n_GSI_CH_k_SCRATCH_0),
+	__stringify(GSI_EE_n_GSI_CH_k_SCRATCH_1),
+	__stringify(GSI_EE_n_GSI_CH_k_SCRATCH_2),
+	__stringify(GSI_EE_n_GSI_CH_k_SCRATCH_3),
+	__stringify(GSI_EE_n_GSI_CH_k_CNTXT_4),
+	__stringify(GSI_EE_n_GSI_CH_k_CNTXT_5),
+	__stringify(GSI_EE_n_GSI_CH_k_CNTXT_6),
+	__stringify(GSI_EE_n_GSI_CH_k_CNTXT_7),
+	__stringify(GSI_EE_n_EV_CH_k_CNTXT_4),
+	__stringify(GSI_EE_n_EV_CH_k_CNTXT_5),
+	__stringify(GSI_EE_n_EV_CH_k_CNTXT_6),
+	__stringify(GSI_EE_n_EV_CH_k_CNTXT_7),
+	__stringify(GSI_GSI_IRAM_PTR_CH_CMD),
+	__stringify(GSI_GSI_IRAM_PTR_CH_DB),
+	__stringify(GSI_GSI_IRAM_PTR_CH_DIS_COMP),
+	__stringify(GSI_GSI_IRAM_PTR_CH_EMPTY),
+	__stringify(GSI_GSI_IRAM_PTR_EE_GENERIC_CMD),
+	__stringify(GSI_GSI_IRAM_PTR_EVENT_GEN_COMP),
+	__stringify(GSI_GSI_IRAM_PTR_INT_MOD_STOPPED),
+	__stringify(GSI_GSI_IRAM_PTR_PERIPH_IF_TLV_IN_0),
+	__stringify(GSI_GSI_IRAM_PTR_PERIPH_IF_TLV_IN_2),
+	__stringify(GSI_GSI_IRAM_PTR_PERIPH_IF_TLV_IN_1),
+	__stringify(GSI_GSI_IRAM_PTR_NEW_RE),
+	__stringify(GSI_GSI_IRAM_PTR_READ_ENG_COMP),
+	__stringify(GSI_GSI_IRAM_PTR_TIMER_EXPIRED),
+	__stringify(GSI_GSI_IRAM_PTR_EV_DB),
+	__stringify(GSI_GSI_IRAM_PTR_UC_GP_INT),
+	__stringify(GSI_GSI_IRAM_PTR_WRITE_ENG_COMP),
+	__stringify(GSI_GSI_IRAM_PTR_TLV_CH_NOT_FULL),
+	__stringify(GSI_IC_DISABLE_CHNL_BCK_PRS_LSB),
+	__stringify(GSI_IC_DISABLE_CHNL_BCK_PRS_MSB),
+	__stringify(GSI_IC_GEN_EVNT_BCK_PRS_LSB),
+	__stringify(GSI_IC_GEN_EVNT_BCK_PRS_MSB),
+	__stringify(GSI_IC_GEN_INT_BCK_PRS_LSB),
+	__stringify(GSI_IC_GEN_INT_BCK_PRS_MSB),
+	__stringify(GSI_IC_STOP_INT_MOD_BCK_PRS_LSB),
+	__stringify(GSI_IC_STOP_INT_MOD_BCK_PRS_MSB),
+	__stringify(GSI_IC_PROCESS_DESC_BCK_PRS_LSB),
+	__stringify(GSI_IC_PROCESS_DESC_BCK_PRS_MSB),
+	__stringify(GSI_IC_TLV_STOP_BCK_PRS_LSB),
+	__stringify(GSI_IC_TLV_STOP_BCK_PRS_MSB),
+	__stringify(GSI_IC_TLV_RESET_BCK_PRS_LSB),
+	__stringify(GSI_IC_TLV_RESET_BCK_PRS_MSB),
+	__stringify(GSI_IC_RGSTR_TIMER_BCK_PRS_LSB),
+	__stringify(GSI_IC_RGSTR_TIMER_BCK_PRS_MSB),
+	__stringify(GSI_IC_READ_BCK_PRS_LSB),
+	__stringify(GSI_IC_READ_BCK_PRS_MSB),
+	__stringify(GSI_IC_WRITE_BCK_PRS_LSB),
+	__stringify(GSI_IC_WRITE_BCK_PRS_MSB),
+	__stringify(GSI_IC_UCONTROLLER_GPR_BCK_PRS_LSB),
+	__stringify(GSI_IC_UCONTROLLER_GPR_BCK_PRS_MSB),
+	__stringify(GSI_GSI_PERIPH_BASE_ADDR_MSB),
+	__stringify(GSI_GSI_PERIPH_BASE_ADDR_LSB),
+	__stringify(GSI_GSI_MCS_CFG),
+	__stringify(GSI_GSI_CFG),
+	__stringify(GSI_EE_n_GSI_EE_GENERIC_CMD),
+	__stringify(GSI_MAP_EE_n_CH_k_VP_TABLE),
+	__stringify(GSI_EE_n_GSI_CH_k_RE_FETCH_READ_PTR),
+	__stringify(GSI_EE_n_GSI_CH_k_RE_FETCH_WRITE_PTR),
+	__stringify(GSI_GSI_INST_RAM_n),
+	__stringify(GSI_GSI_IRAM_PTR_MSI_DB),
+};
+
+/*
+* gsihal_reg_name_str() - returns string that represent the register
+* @reg_name: [in] register name
+*/
+const char *gsihal_reg_name_str(enum gsihal_reg_name reg_name)
+{
+	if (reg_name < 0 || reg_name >= GSI_REG_MAX) {
+		GSIERR("requested name of invalid reg=%d\n", reg_name);
+		return "Invalid Register";
+	}
+
+	return gsireg_name_to_str[reg_name];
+}
+
+static void gsireg_construct_dummy(enum gsihal_reg_name reg,
+	const void *fields, u32 *val)
+{
+	GSIERR("No construct function for %s\n",
+		gsihal_reg_name_str(reg));
+	WARN(1, "invalid register operation");
+}
+
+static void gsireg_parse_dummy(enum gsihal_reg_name reg,
+	void *fields, u32 val)
+{
+	GSIERR("No parse function for %s\n",
+		gsihal_reg_name_str(reg));
+	WARN(1, "invalid register operation");
+
+}
+
+/*
+* struct gsihal_reg_obj - Register H/W information for specific GSI version
+* @construct - CB to construct register value from abstracted structure
+* @parse - CB to parse register value to abstracted structure
+* @offset - register offset relative to base address
+* @n_ofst - N parameterized register sub-offset
+* @k_ofst - K parameterized register sub-offset
+*/
+struct gsihal_reg_obj {
+	void(*construct)(enum gsihal_reg_name reg, const void *fields,
+		u32 *val);
+	void(*parse)(enum gsihal_reg_name reg, void *fields,
+		u32 val);
+	u32 offset;
+	u32 n_ofst;
+	u32 k_ofst;
+};
+
+static void gsireg_parse_ctx_type_irq(enum gsihal_reg_name reg, void *fields,
+	u32 val)
+{
+	struct gsihal_reg_ctx_type_irq *ctx = (struct gsihal_reg_ctx_type_irq *)fields;
+
+	ctx->ch_ctrl = GSI_GETFIELD_FROM_REG(val,
+		GSI_EE_n_CNTXT_TYPE_IRQ_CH_CTRL_SHFT,
+		GSI_EE_n_CNTXT_TYPE_IRQ_CH_CTRL_BMSK);
+	ctx->ev_ctrl = GSI_GETFIELD_FROM_REG(val,
+		GSI_EE_n_CNTXT_TYPE_IRQ_EV_CTRL_SHFT,
+		GSI_EE_n_CNTXT_TYPE_IRQ_EV_CTRL_BMSK);
+	ctx->glob_ee = GSI_GETFIELD_FROM_REG(val,
+		GSI_EE_n_CNTXT_TYPE_IRQ_GLOB_EE_SHFT,
+		GSI_EE_n_CNTXT_TYPE_IRQ_GLOB_EE_BMSK);
+	ctx->ieob = GSI_GETFIELD_FROM_REG(val,
+		GSI_EE_n_CNTXT_TYPE_IRQ_IEOB_SHFT,
+		GSI_EE_n_CNTXT_TYPE_IRQ_IEOB_BMSK);
+	ctx->inter_ee_ch_ctrl = GSI_GETFIELD_FROM_REG(val,
+		GSI_EE_n_CNTXT_TYPE_IRQ_INTER_EE_CH_CTRL_SHFT,
+		GSI_EE_n_CNTXT_TYPE_IRQ_INTER_EE_CH_CTRL_BMSK);
+	ctx->inter_ee_ev_ctrl = GSI_GETFIELD_FROM_REG(val,
+		GSI_EE_n_CNTXT_TYPE_IRQ_INTER_EE_EV_CTRL_SHFT,
+		GSI_EE_n_CNTXT_TYPE_IRQ_INTER_EE_EV_CTRL_BMSK);
+	ctx->general = GSI_GETFIELD_FROM_REG(val,
+		GSI_EE_n_CNTXT_TYPE_IRQ_GENERAL_SHFT,
+		GSI_EE_n_CNTXT_TYPE_IRQ_GENERAL_BMSK);
+}
+
+static void gsireg_parse_ch_k_cntxt_0(enum gsihal_reg_name reg, void *fields,
+	u32 val)
+{
+	struct gsihal_reg_ch_k_cntxt_0 *ch_k_ctxt =
+		(struct gsihal_reg_ch_k_cntxt_0 *) fields;
+
+	ch_k_ctxt->element_size = GSI_GETFIELD_FROM_REG(val,
+		GSI_EE_n_GSI_CH_k_CNTXT_0_ELEMENT_SIZE_SHFT,
+		GSI_EE_n_GSI_CH_k_CNTXT_0_ELEMENT_SIZE_BMSK);
+	ch_k_ctxt->chstate = GSI_GETFIELD_FROM_REG(val,
+		GSI_EE_n_GSI_CH_k_CNTXT_0_CHSTATE_SHFT,
+		GSI_EE_n_GSI_CH_k_CNTXT_0_CHSTATE_BMSK);
+	ch_k_ctxt->erindex = GSI_GETFIELD_FROM_REG(val,
+		GSI_EE_n_GSI_CH_k_CNTXT_0_ERINDEX_SHFT,
+		GSI_EE_n_GSI_CH_k_CNTXT_0_ERINDEX_BMSK);
+	ch_k_ctxt->chid = GSI_GETFIELD_FROM_REG(val,
+		GSI_EE_n_GSI_CH_k_CNTXT_0_CHID_SHFT,
+		GSI_EE_n_GSI_CH_k_CNTXT_0_CHID_BMSK);
+	ch_k_ctxt->ee = GSI_GETFIELD_FROM_REG(val,
+		GSI_EE_n_GSI_CH_k_CNTXT_0_EE_SHFT,
+		GSI_EE_n_GSI_CH_k_CNTXT_0_EE_BMSK);
+	ch_k_ctxt->chtype_dir = GSI_GETFIELD_FROM_REG(val,
+		GSI_EE_n_GSI_CH_k_CNTXT_0_CHTYPE_DIR_SHFT,
+		GSI_EE_n_GSI_CH_k_CNTXT_0_CHTYPE_DIR_BMSK);
+	ch_k_ctxt->chtype_protocol = GSI_GETFIELD_FROM_REG(val,
+		GSI_EE_n_GSI_CH_k_CNTXT_0_CHTYPE_PROTOCOL_SHFT,
+		GSI_EE_n_GSI_CH_k_CNTXT_0_CHTYPE_PROTOCOL_BMSK);
+}
+
+static void gsireg_parse_ch_k_cntxt_0_v2_5(enum gsihal_reg_name reg,
+	void *fields, u32 val)
+{
+	struct gsihal_reg_ch_k_cntxt_0 *ch_k_ctxt =
+		(struct gsihal_reg_ch_k_cntxt_0 *) fields;
+
+	gsireg_parse_ch_k_cntxt_0(reg, fields, val);
+	ch_k_ctxt->chtype_protocol_msb = GSI_GETFIELD_FROM_REG(val,
+		GSI_V2_5_EE_n_GSI_CH_k_CNTXT_0_CHTYPE_PROTOCOL_MSB_SHFT,
+		GSI_V2_5_EE_n_GSI_CH_k_CNTXT_0_CHTYPE_PROTOCOL_MSB_BMSK);
+}
+
+static void gsireg_parse_ev_ch_k_cntxt_0(enum gsihal_reg_name reg, void *fields,
+	u32 val)
+{
+	struct gsihal_reg_ev_ch_k_cntxt_0 *ev_ch_k_ctxt =
+		(struct gsihal_reg_ev_ch_k_cntxt_0 *) fields;
+
+	ev_ch_k_ctxt->element_size = GSI_GETFIELD_FROM_REG(val,
+		GSI_EE_n_EV_CH_k_CNTXT_0_ELEMENT_SIZE_SHFT,
+		GSI_EE_n_EV_CH_k_CNTXT_0_ELEMENT_SIZE_BMSK);
+	ev_ch_k_ctxt->chstate = GSI_GETFIELD_FROM_REG(val,
+		GSI_EE_n_EV_CH_k_CNTXT_0_CHSTATE_SHFT,
+		GSI_EE_n_EV_CH_k_CNTXT_0_CHSTATE_BMSK);
+	ev_ch_k_ctxt->intype = GSI_GETFIELD_FROM_REG(val,
+		GSI_EE_n_EV_CH_k_CNTXT_0_INTYPE_SHFT,
+		GSI_EE_n_EV_CH_k_CNTXT_0_INTYPE_BMSK);
+	ev_ch_k_ctxt->evchid = GSI_GETFIELD_FROM_REG(val,
+		GSI_EE_n_EV_CH_k_CNTXT_0_EVCHID_SHFT,
+		GSI_EE_n_EV_CH_k_CNTXT_0_EVCHID_BMSK);
+	ev_ch_k_ctxt->ee = GSI_GETFIELD_FROM_REG(val,
+		GSI_EE_n_EV_CH_k_CNTXT_0_EE_SHFT,
+		GSI_EE_n_EV_CH_k_CNTXT_0_EE_BMSK);
+	ev_ch_k_ctxt->chtype = GSI_GETFIELD_FROM_REG(val,
+		GSI_EE_n_EV_CH_k_CNTXT_0_CHTYPE_SHFT,
+		GSI_EE_n_EV_CH_k_CNTXT_0_CHTYPE_BMSK);
+}
+
+static void gsireg_construct_ev_ch_k_cntxt_0(enum gsihal_reg_name reg,
+	const void *fields, u32 *val)
+{
+	struct gsihal_reg_ev_ch_k_cntxt_0 *ctxt =
+		(struct gsihal_reg_ev_ch_k_cntxt_0 *)fields;
+
+	GSI_SETFIELD_IN_REG(*val, ctxt->element_size,
+		GSI_EE_n_EV_CH_k_CNTXT_0_ELEMENT_SIZE_SHFT,
+		GSI_EE_n_EV_CH_k_CNTXT_0_ELEMENT_SIZE_BMSK);
+	GSI_SETFIELD_IN_REG(*val, ctxt->chstate,
+		GSI_EE_n_EV_CH_k_CNTXT_0_CHSTATE_SHFT,
+		GSI_EE_n_EV_CH_k_CNTXT_0_CHSTATE_BMSK);
+	GSI_SETFIELD_IN_REG(*val, ctxt->intype,
+		GSI_EE_n_EV_CH_k_CNTXT_0_INTYPE_SHFT,
+		GSI_EE_n_EV_CH_k_CNTXT_0_INTYPE_BMSK);
+	GSI_SETFIELD_IN_REG(*val, ctxt->evchid,
+		GSI_EE_n_EV_CH_k_CNTXT_0_EVCHID_SHFT,
+		GSI_EE_n_EV_CH_k_CNTXT_0_EVCHID_BMSK);
+	GSI_SETFIELD_IN_REG(*val, ctxt->ee,
+		GSI_EE_n_EV_CH_k_CNTXT_0_EE_SHFT,
+		GSI_EE_n_EV_CH_k_CNTXT_0_EE_BMSK);
+	GSI_SETFIELD_IN_REG(*val, ctxt->chtype,
+		GSI_EE_n_EV_CH_k_CNTXT_0_CHTYPE_SHFT,
+		GSI_EE_n_EV_CH_k_CNTXT_0_CHTYPE_BMSK);
+}
+
+static void gsireg_parse_cntxt_glob_irq_stts(enum gsihal_reg_name reg,
+	void *fields, u32 val)
+{
+	struct gsihal_reg_cntxt_glob_irq_stts *glob_irq_stts =
+		(struct gsihal_reg_cntxt_glob_irq_stts *) fields;
+
+	glob_irq_stts->gp_int3 = GSI_GETFIELD_FROM_REG(val,
+		GSI_EE_n_CNTXT_GLOB_IRQ_STTS_GP_INT3_SHFT,
+		GSI_EE_n_CNTXT_GLOB_IRQ_STTS_GP_INT3_BMSK);
+	glob_irq_stts->gp_int2 = GSI_GETFIELD_FROM_REG(val,
+		GSI_EE_n_CNTXT_GLOB_IRQ_STTS_GP_INT2_SHFT,
+		GSI_EE_n_CNTXT_GLOB_IRQ_STTS_GP_INT2_BMSK);
+	glob_irq_stts->gp_int1 = GSI_GETFIELD_FROM_REG(val,
+		GSI_EE_n_CNTXT_GLOB_IRQ_STTS_GP_INT1_SHFT,
+		GSI_EE_n_CNTXT_GLOB_IRQ_STTS_GP_INT1_BMSK);
+	glob_irq_stts->error_int = GSI_GETFIELD_FROM_REG(val,
+		GSI_EE_n_CNTXT_GLOB_IRQ_STTS_ERROR_INT_SHFT,
+		GSI_EE_n_CNTXT_GLOB_IRQ_STTS_ERROR_INT_BMSK);
+}
+
+static void gsireg_parse_cntxt_gsi_irq_stts(enum gsihal_reg_name reg,
+	void *fields, u32 val)
+{
+	struct gsihal_reg_cntxt_gsi_irq_stts *gsi_irq_stts =
+		(struct gsihal_reg_cntxt_gsi_irq_stts *) fields;
+
+	gsi_irq_stts->gsi_mcs_stack_ovrflow = GSI_GETFIELD_FROM_REG(val,
+		GSI_EE_n_CNTXT_GSI_IRQ_STTS_GSI_MCS_STACK_OVRFLOW_SHFT,
+		GSI_EE_n_CNTXT_GSI_IRQ_STTS_GSI_MCS_STACK_OVRFLOW_BMSK);
+	gsi_irq_stts->gsi_cmd_fifo_ovrflow = GSI_GETFIELD_FROM_REG(val,
+		GSI_EE_n_CNTXT_GSI_IRQ_STTS_GSI_CMD_FIFO_OVRFLOW_SHFT,
+		GSI_EE_n_CNTXT_GSI_IRQ_STTS_GSI_CMD_FIFO_OVRFLOW_BMSK);
+	gsi_irq_stts->gsi_bus_error = GSI_GETFIELD_FROM_REG(val,
+		GSI_EE_n_CNTXT_GSI_IRQ_STTS_GSI_BUS_ERROR_SHFT,
+		GSI_EE_n_CNTXT_GSI_IRQ_STTS_GSI_BUS_ERROR_BMSK);
+	gsi_irq_stts->gsi_break_point = GSI_GETFIELD_FROM_REG(val,
+		GSI_EE_n_CNTXT_GSI_IRQ_STTS_GSI_BREAK_POINT_SHFT,
+		GSI_EE_n_CNTXT_GSI_IRQ_STTS_GSI_BREAK_POINT_BMSK);
+}
+
+static void gsireg_parse_hw_param(enum gsihal_reg_name reg,
+	void *fields, u32 val)
+{
+	struct gsihal_reg_hw_param *hw_param =
+		(struct gsihal_reg_hw_param *) fields;
+
+	hw_param->periph_sec_grp = GSI_GETFIELD_FROM_REG(val,
+		GSI_V1_0_EE_n_GSI_HW_PARAM_PERIPH_SEC_GRP_SHFT,
+		GSI_V1_0_EE_n_GSI_HW_PARAM_PERIPH_SEC_GRP_BMSK);
+	hw_param->use_axi_m = GSI_GETFIELD_FROM_REG(val,
+		GSI_V1_0_EE_n_GSI_HW_PARAM_USE_AXI_M_SHFT,
+		GSI_V1_0_EE_n_GSI_HW_PARAM_USE_AXI_M_BMSK);
+	hw_param->periph_conf_addr_bus_w = GSI_GETFIELD_FROM_REG(val,
+		GSI_V1_0_EE_n_GSI_HW_PARAM_PERIPH_CONF_ADDR_BUS_W_SHFT,
+		GSI_V1_0_EE_n_GSI_HW_PARAM_PERIPH_CONF_ADDR_BUS_W_BMSK);
+	hw_param->num_ees = GSI_GETFIELD_FROM_REG(val,
+		GSI_V1_0_EE_n_GSI_HW_PARAM_NUM_EES_SHFT,
+		GSI_V1_0_EE_n_GSI_HW_PARAM_NUM_EES_BMSK);
+	hw_param->gsi_ch_num = GSI_GETFIELD_FROM_REG(val,
+		GSI_V1_0_EE_n_GSI_HW_PARAM_GSI_CH_NUM_SHFT,
+		GSI_V1_0_EE_n_GSI_HW_PARAM_GSI_CH_NUM_BMSK);
+	hw_param->gsi_ev_ch_num = GSI_GETFIELD_FROM_REG(val,
+		GSI_V1_0_EE_n_GSI_HW_PARAM_GSI_EV_CH_NUM_SHFT,
+		GSI_V1_0_EE_n_GSI_HW_PARAM_GSI_EV_CH_NUM_BMSK);
+}
+
+static void gsireg_parse_hw_param0(enum gsihal_reg_name reg,
+	void *fields, u32 val)
+{
+	struct gsihal_reg_hw_param *hw_param =
+		(struct gsihal_reg_hw_param *) fields;
+
+	hw_param->periph_sec_grp = GSI_GETFIELD_FROM_REG(val,
+		GSI_V1_2_EE_n_GSI_HW_PARAM_0_PERIPH_SEC_GRP_SHFT,
+		GSI_V1_2_EE_n_GSI_HW_PARAM_0_PERIPH_SEC_GRP_BMSK);
+	hw_param->use_axi_m = GSI_GETFIELD_FROM_REG(val,
+		GSI_V1_2_EE_n_GSI_HW_PARAM_0_USE_AXI_M_SHFT,
+		GSI_V1_2_EE_n_GSI_HW_PARAM_0_USE_AXI_M_BMSK);
+	hw_param->periph_conf_addr_bus_w = GSI_GETFIELD_FROM_REG(val,
+		GSI_V1_2_EE_n_GSI_HW_PARAM_0_PERIPH_CONF_ADDR_BUS_W_SHFT,
+		GSI_V1_2_EE_n_GSI_HW_PARAM_0_PERIPH_CONF_ADDR_BUS_W_BMSK);
+	hw_param->num_ees = GSI_GETFIELD_FROM_REG(val,
+		GSI_V1_2_EE_n_GSI_HW_PARAM_0_NUM_EES_SHFT,
+		GSI_V1_2_EE_n_GSI_HW_PARAM_0_NUM_EES_BMSK);
+	hw_param->gsi_ch_num = GSI_GETFIELD_FROM_REG(val,
+		GSI_V1_2_EE_n_GSI_HW_PARAM_0_GSI_CH_NUM_SHFT,
+		GSI_V1_2_EE_n_GSI_HW_PARAM_0_GSI_CH_NUM_BMSK);
+	hw_param->gsi_ev_ch_num = GSI_GETFIELD_FROM_REG(val,
+		GSI_V1_2_EE_n_GSI_HW_PARAM_0_GSI_EV_CH_NUM_SHFT,
+		GSI_V1_2_EE_n_GSI_HW_PARAM_0_GSI_EV_CH_NUM_BMSK);
+}
+
+static void gsireg_parse_hw_param2(enum gsihal_reg_name reg,
+	void *fields, u32 val)
+{
+	struct gsihal_reg_hw_param2 *hw_param =
+		(struct gsihal_reg_hw_param2 *) fields;
+
+	hw_param->gsi_ch_full_logic = GSI_GETFIELD_FROM_REG(val,
+		GSI_V1_3_EE_n_GSI_HW_PARAM_2_GSI_CH_FULL_LOGIC_SHFT,
+		GSI_V1_3_EE_n_GSI_HW_PARAM_2_GSI_CH_FULL_LOGIC_BMSK);
+	hw_param->gsi_ch_pend_translate = GSI_GETFIELD_FROM_REG(val,
+		GSI_V1_3_EE_n_GSI_HW_PARAM_2_GSI_CH_PEND_TRANSLATE_SHFT,
+		GSI_V1_3_EE_n_GSI_HW_PARAM_2_GSI_CH_PEND_TRANSLATE_BMSK);
+	hw_param->gsi_num_ev_per_ee = GSI_GETFIELD_FROM_REG(val,
+		GSI_V1_3_EE_n_GSI_HW_PARAM_2_GSI_NUM_EV_PER_EE_SHFT,
+		GSI_V1_3_EE_n_GSI_HW_PARAM_2_GSI_NUM_EV_PER_EE_BMSK);
+	hw_param->gsi_num_ch_per_ee = GSI_GETFIELD_FROM_REG(val,
+		GSI_V1_3_EE_n_GSI_HW_PARAM_2_GSI_NUM_CH_PER_EE_SHFT,
+		GSI_V1_3_EE_n_GSI_HW_PARAM_2_GSI_NUM_CH_PER_EE_BMSK);
+	hw_param->gsi_iram_size = GSI_GETFIELD_FROM_REG(val,
+		GSI_V1_3_EE_n_GSI_HW_PARAM_2_GSI_IRAM_SIZE_SHFT,
+		GSI_V1_3_EE_n_GSI_HW_PARAM_2_GSI_IRAM_SIZE_BMSK);
+}
+
+static void gsireg_parse_hw_param2_v2_0(enum gsihal_reg_name reg,
+	void *fields, u32 val)
+{
+	struct gsihal_reg_hw_param2 *hw_param =
+		(struct gsihal_reg_hw_param2 *) fields;
+
+	gsireg_parse_hw_param2(reg, fields, val);
+
+	hw_param->gsi_sdma_n_iovec = GSI_GETFIELD_FROM_REG(val,
+		GSI_V2_0_EE_n_GSI_HW_PARAM_2_GSI_SDMA_N_IOVEC_SHFT,
+		GSI_V2_0_EE_n_GSI_HW_PARAM_2_GSI_SDMA_N_IOVEC_BMSK);
+	hw_param->gsi_sdma_max_burst = GSI_GETFIELD_FROM_REG(val,
+		GSI_V2_0_EE_n_GSI_HW_PARAM_2_GSI_SDMA_MAX_BURST_SHFT,
+		GSI_V2_0_EE_n_GSI_HW_PARAM_2_GSI_SDMA_MAX_BURST_BMSK);
+	hw_param->gsi_sdma_n_int = GSI_GETFIELD_FROM_REG(val,
+		GSI_V2_0_EE_n_GSI_HW_PARAM_2_GSI_SDMA_N_INT_SHFT,
+		GSI_V2_0_EE_n_GSI_HW_PARAM_2_GSI_SDMA_N_INT_BMSK);
+	hw_param->gsi_use_sdma = GSI_GETFIELD_FROM_REG(val,
+		GSI_V2_0_EE_n_GSI_HW_PARAM_2_GSI_USE_SDMA_SHFT,
+		GSI_V2_0_EE_n_GSI_HW_PARAM_2_GSI_USE_SDMA_BMSK);
+
+}
+
+static void gsireg_parse_hw_param2_v2_2(enum gsihal_reg_name reg,
+	void *fields, u32 val)
+{
+	struct gsihal_reg_hw_param2 *hw_param =
+		(struct gsihal_reg_hw_param2 *) fields;
+
+	gsireg_parse_hw_param2_v2_0(reg, fields, val);
+
+	hw_param->gsi_use_inter_ee = GSI_GETFIELD_FROM_REG(val,
+		GSI_V2_2_EE_n_GSI_HW_PARAM_2_GSI_USE_INTER_EE_SHFT,
+		GSI_V2_2_EE_n_GSI_HW_PARAM_2_GSI_USE_INTER_EE_BMSK);
+	hw_param->gsi_use_rd_wr_eng = GSI_GETFIELD_FROM_REG(val,
+		GSI_V2_2_EE_n_GSI_HW_PARAM_2_GSI_USE_RD_WR_ENG_SHFT,
+		GSI_V2_2_EE_n_GSI_HW_PARAM_2_GSI_USE_RD_WR_ENG_BMSK);
+}
+
+static void gsireg_parse_gsi_status(enum gsihal_reg_name reg,
+	void *fields, u32 val)
+{
+	struct gsihal_reg_gsi_status *gsi_status =
+		(struct gsihal_reg_gsi_status *) fields;
+
+	gsi_status->enabled = GSI_GETFIELD_FROM_REG(val,
+		GSI_EE_n_GSI_STATUS_ENABLED_SHFT,
+		GSI_EE_n_GSI_STATUS_ENABLED_BMSK);
+}
+
+static void gsireg_construct_ev_ch_k_cntxt_1(enum gsihal_reg_name reg,
+	const void *fields, u32 *val)
+{
+	struct gsihal_reg_ev_ch_k_cntxt_1 *ctxt =
+		(struct gsihal_reg_ev_ch_k_cntxt_1 *)fields;
+
+	GSI_SETFIELD_IN_REG(*val, ctxt->r_length,
+		GSI_EE_n_EV_CH_k_CNTXT_1_R_LENGTH_SHFT,
+		GSI_EE_n_EV_CH_k_CNTXT_1_R_LENGTH_BMSK);
+}
+
+static void gsireg_construct_ev_ch_k_cntxt_1_v2_9(enum gsihal_reg_name reg,
+	const void *fields, u32 *val)
+{
+	struct gsihal_reg_ev_ch_k_cntxt_1 *ctxt =
+		(struct gsihal_reg_ev_ch_k_cntxt_1 *)fields;
+
+	GSI_SETFIELD_IN_REG(*val, ctxt->r_length,
+		GSI_V2_9_EE_n_EV_CH_k_CNTXT_1_R_LENGTH_SHFT,
+		GSI_V2_9_EE_n_EV_CH_k_CNTXT_1_R_LENGTH_BMSK);
+}
+
+static void gsireg_construct_ev_ch_k_cntxt_2(enum gsihal_reg_name reg,
+	const void *fields, u32 *val)
+{
+	struct gsihal_reg_ev_ch_k_cntxt_2 *ctxt =
+		(struct gsihal_reg_ev_ch_k_cntxt_2 *)fields;
+
+	GSI_SETFIELD_IN_REG(*val, ctxt->r_base_addr_lsbs,
+		GSI_EE_n_EV_CH_k_CNTXT_2_R_BASE_ADDR_LSBS_SHFT,
+		GSI_EE_n_EV_CH_k_CNTXT_2_R_BASE_ADDR_LSBS_BMSK);
+}
+
+static void gsireg_construct_ev_ch_k_cntxt_3(enum gsihal_reg_name reg,
+	const void *fields, u32 *val)
+{
+	struct gsihal_reg_ev_ch_k_cntxt_3 *ctxt =
+		(struct gsihal_reg_ev_ch_k_cntxt_3 *)fields;
+
+	GSI_SETFIELD_IN_REG(*val, ctxt->r_base_addr_msbs,
+		GSI_EE_n_EV_CH_k_CNTXT_3_R_BASE_ADDR_MSBS_SHFT,
+		GSI_EE_n_EV_CH_k_CNTXT_3_R_BASE_ADDR_MSBS_BMSK);
+}
+
+static void gsireg_construct_ev_ch_k_cntxt_8(enum gsihal_reg_name reg,
+	const void *fields, u32 *val)
+{
+	struct gsihal_reg_ev_ch_k_cntxt_8 *ctxt =
+		(struct gsihal_reg_ev_ch_k_cntxt_8 *)fields;
+
+	GSI_SETFIELD_IN_REG(*val, ctxt->int_mod_cnt,
+		GSI_EE_n_EV_CH_k_CNTXT_8_INT_MOD_CNT_SHFT,
+		GSI_EE_n_EV_CH_k_CNTXT_8_INT_MOD_CNT_BMSK);
+	GSI_SETFIELD_IN_REG(*val, ctxt->int_modc,
+		GSI_EE_n_EV_CH_k_CNTXT_8_INT_MODC_SHFT,
+		GSI_EE_n_EV_CH_k_CNTXT_8_INT_MODC_BMSK);
+	GSI_SETFIELD_IN_REG(*val, ctxt->int_modt,
+		GSI_EE_n_EV_CH_k_CNTXT_8_INT_MODT_SHFT,
+		GSI_EE_n_EV_CH_k_CNTXT_8_INT_MODT_BMSK);
+}
+
+static void gsireg_construct_ev_ch_k_cntxt_9(enum gsihal_reg_name reg,
+	const void *fields, u32 *val)
+{
+	struct gsihal_reg_ev_ch_k_cntxt_9 *ctxt =
+		(struct gsihal_reg_ev_ch_k_cntxt_9 *)fields;
+
+	GSI_SETFIELD_IN_REG(*val, ctxt->intvec,
+		GSI_EE_n_EV_CH_k_CNTXT_9_INTVEC_SHFT,
+		GSI_EE_n_EV_CH_k_CNTXT_9_INTVEC_BMSK);
+}
+
+static void gsireg_construct_ev_ch_k_cntxt_10(enum gsihal_reg_name reg,
+	const void *fields, u32 *val)
+{
+	struct gsihal_reg_ev_ch_k_cntxt_10 *ctxt =
+		(struct gsihal_reg_ev_ch_k_cntxt_10 *)fields;
+
+	GSI_SETFIELD_IN_REG(*val, ctxt->msi_addr_lsb,
+		GSI_EE_n_EV_CH_k_CNTXT_10_MSI_ADDR_LSB_SHFT,
+		GSI_EE_n_EV_CH_k_CNTXT_10_MSI_ADDR_LSB_BMSK);
+}
+
+static void gsireg_construct_ev_ch_k_cntxt_11(enum gsihal_reg_name reg,
+	const void *fields, u32 *val)
+{
+	struct gsihal_reg_ev_ch_k_cntxt_11 *ctxt =
+		(struct gsihal_reg_ev_ch_k_cntxt_11 *)fields;
+
+	GSI_SETFIELD_IN_REG(*val, ctxt->msi_addr_msb,
+		GSI_EE_n_EV_CH_k_CNTXT_11_MSI_ADDR_MSB_SHFT,
+		GSI_EE_n_EV_CH_k_CNTXT_11_MSI_ADDR_MSB_BMSK);
+}
+
+static void gsireg_construct_ev_ch_k_cntxt_12(enum gsihal_reg_name reg,
+	const void *fields, u32 *val)
+{
+	struct gsihal_reg_ev_ch_k_cntxt_12 *ctxt =
+		(struct gsihal_reg_ev_ch_k_cntxt_12 *)fields;
+
+	GSI_SETFIELD_IN_REG(*val, ctxt->rp_update_addr_lsb,
+		GSI_EE_n_EV_CH_k_CNTXT_12_RP_UPDATE_ADDR_LSB_SHFT,
+		GSI_EE_n_EV_CH_k_CNTXT_12_RP_UPDATE_ADDR_LSB_BMSK);
+}
+
+static void gsireg_construct_ev_ch_k_cntxt_13(enum gsihal_reg_name reg,
+	const void *fields, u32 *val)
+{
+	struct gsihal_reg_ev_ch_k_cntxt_13 *ctxt =
+		(struct gsihal_reg_ev_ch_k_cntxt_13 *)fields;
+
+	GSI_SETFIELD_IN_REG(*val, ctxt->rp_update_addr_msb,
+		GSI_EE_n_EV_CH_k_CNTXT_13_RP_UPDATE_ADDR_MSB_SHFT,
+		GSI_EE_n_EV_CH_k_CNTXT_13_RP_UPDATE_ADDR_MSB_BMSK);
+}
+
+static void gsireg_construct_ev_ch_k_doorbell_1(enum gsihal_reg_name reg,
+	const void *fields, u32 *val)
+{
+	struct gsihal_reg_gsi_ee_n_ev_ch_k_doorbell_1 *db =
+		(struct gsihal_reg_gsi_ee_n_ev_ch_k_doorbell_1 *)fields;
+
+	GSI_SETFIELD_IN_REG(*val, db->write_ptr_msb,
+		GSI_EE_n_EV_CH_k_DOORBELL_1_WRITE_PTR_MSB_SHFT,
+		GSI_EE_n_EV_CH_k_DOORBELL_1_WRITE_PTR_MSB_BMSK);
+}
+
+static void gsireg_construct_ee_n_ev_ch_cmd(enum gsihal_reg_name reg,
+	const void *fields, u32 *val)
+{
+	struct gsihal_reg_ee_n_ev_ch_cmd *ev_ch_cmd =
+		(struct gsihal_reg_ee_n_ev_ch_cmd *)fields;
+
+	GSI_SETFIELD_IN_REG(*val, ev_ch_cmd->opcode,
+		GSI_EE_n_EV_CH_CMD_OPCODE_SHFT,
+		GSI_EE_n_EV_CH_CMD_OPCODE_BMSK);
+	GSI_SETFIELD_IN_REG(*val, ev_ch_cmd->chid,
+		GSI_EE_n_EV_CH_CMD_CHID_SHFT,
+		GSI_EE_n_EV_CH_CMD_CHID_BMSK);
+}
+
+static void gsireg_construct_ee_n_gsi_ch_k_qos(enum gsihal_reg_name reg,
+	const void *fields, u32 *val)
+{
+	struct gsihal_reg_gsi_ee_n_gsi_ch_k_qos *ch_qos =
+		(struct gsihal_reg_gsi_ee_n_gsi_ch_k_qos *)fields;
+
+	GSI_SETFIELD_IN_REG(*val, !!ch_qos->use_db_eng,
+		GSI_EE_n_GSI_CH_k_QOS_USE_DB_ENG_SHFT,
+		GSI_EE_n_GSI_CH_k_QOS_USE_DB_ENG_BMSK);
+	GSI_SETFIELD_IN_REG(*val, !!ch_qos->max_prefetch,
+		GSI_EE_n_GSI_CH_k_QOS_MAX_PREFETCH_SHFT,
+		GSI_EE_n_GSI_CH_k_QOS_MAX_PREFETCH_BMSK);
+	GSI_SETFIELD_IN_REG(*val, ch_qos->wrr_weight,
+		GSI_EE_n_GSI_CH_k_QOS_WRR_WEIGHT_SHFT,
+		GSI_EE_n_GSI_CH_k_QOS_WRR_WEIGHT_BMSK);
+}
+
+static void gsireg_construct_ee_n_gsi_ch_k_qos_v1_2(enum gsihal_reg_name reg,
+	const void *fields, u32 *val)
+{
+	struct gsihal_reg_gsi_ee_n_gsi_ch_k_qos *ch_qos =
+		(struct gsihal_reg_gsi_ee_n_gsi_ch_k_qos *)fields;
+
+	gsireg_construct_ee_n_gsi_ch_k_qos(reg, fields, val);
+
+	GSI_SETFIELD_IN_REG(*val, !!ch_qos->use_escape_buf_only,
+		GSI_V2_0_EE_n_GSI_CH_k_QOS_USE_ESCAPE_BUF_ONLY_SHFT,
+		GSI_V2_0_EE_n_GSI_CH_k_QOS_USE_ESCAPE_BUF_ONLY_BMSK);
+}
+
+static void gsireg_construct_ee_n_gsi_ch_k_qos_v2_5(enum gsihal_reg_name reg,
+	const void *fields, u32 *val)
+{
+	struct gsihal_reg_gsi_ee_n_gsi_ch_k_qos *ch_qos =
+		(struct gsihal_reg_gsi_ee_n_gsi_ch_k_qos *)fields;
+
+	gsireg_construct_ee_n_gsi_ch_k_qos(reg, fields, val);
+
+	GSI_SETFIELD_IN_REG(*val, ch_qos->empty_lvl_thrshold,
+		GSI_V2_5_EE_n_GSI_CH_k_QOS_EMPTY_LVL_THRSHOLD_SHFT,
+		GSI_V2_9_EE_n_GSI_CH_k_QOS_EMPTY_LVL_THRSHOLD_BMSK);
+
+	GSI_SETFIELD_IN_REG(*val, ch_qos->prefetch_mode,
+		GSI_V2_5_EE_n_GSI_CH_k_QOS_PREFETCH_MODE_SHFT,
+		GSI_V2_5_EE_n_GSI_CH_k_QOS_PREFETCH_MODE_BMSK);
+}
+
+static void gsireg_construct_ee_n_gsi_ch_k_qos_v2_9(enum gsihal_reg_name reg,
+	const void *fields, u32 *val)
+{
+	struct gsihal_reg_gsi_ee_n_gsi_ch_k_qos *ch_qos =
+		(struct gsihal_reg_gsi_ee_n_gsi_ch_k_qos *)fields;
+
+	gsireg_construct_ee_n_gsi_ch_k_qos_v2_5(reg, fields, val);
+
+	GSI_SETFIELD_IN_REG(*val, !!ch_qos->db_in_bytes,
+		GSI_V2_9_EE_n_GSI_CH_k_QOS_DB_IN_BYTES_SHFT,
+		GSI_V2_9_EE_n_GSI_CH_k_QOS_DB_IN_BYTES_BMSK);
+}
+
+static void gsireg_construct_ch_k_cntxt_0(enum gsihal_reg_name reg,
+	const void *fields, u32 *val)
+{
+	struct gsihal_reg_ch_k_cntxt_0 *ch_cntxt =
+		(struct gsihal_reg_ch_k_cntxt_0 *)fields;
+
+	GSI_SETFIELD_IN_REG(*val, ch_cntxt->element_size,
+		GSI_EE_n_GSI_CH_k_CNTXT_0_ELEMENT_SIZE_SHFT,
+		GSI_EE_n_GSI_CH_k_CNTXT_0_ELEMENT_SIZE_BMSK);
+	GSI_SETFIELD_IN_REG(*val, ch_cntxt->chstate,
+		GSI_EE_n_GSI_CH_k_CNTXT_0_CHSTATE_SHFT,
+		GSI_EE_n_GSI_CH_k_CNTXT_0_CHSTATE_BMSK);
+	GSI_SETFIELD_IN_REG(*val, ch_cntxt->erindex,
+		GSI_EE_n_GSI_CH_k_CNTXT_0_ERINDEX_SHFT,
+		GSI_EE_n_GSI_CH_k_CNTXT_0_ERINDEX_BMSK);
+	GSI_SETFIELD_IN_REG(*val, ch_cntxt->chid,
+		GSI_EE_n_GSI_CH_k_CNTXT_0_CHID_SHFT,
+		GSI_EE_n_GSI_CH_k_CNTXT_0_CHID_BMSK);
+	GSI_SETFIELD_IN_REG(*val, ch_cntxt->ee,
+		GSI_EE_n_GSI_CH_k_CNTXT_0_EE_SHFT,
+		GSI_EE_n_GSI_CH_k_CNTXT_0_EE_BMSK);
+	GSI_SETFIELD_IN_REG(*val, !!ch_cntxt->chtype_dir,
+		GSI_EE_n_GSI_CH_k_CNTXT_0_CHTYPE_DIR_SHFT,
+		GSI_EE_n_GSI_CH_k_CNTXT_0_CHTYPE_DIR_BMSK);
+	GSI_SETFIELD_IN_REG(*val, ch_cntxt->chtype_protocol,
+		GSI_EE_n_GSI_CH_k_CNTXT_0_CHTYPE_PROTOCOL_SHFT,
+		GSI_EE_n_GSI_CH_k_CNTXT_0_CHTYPE_PROTOCOL_BMSK);
+}
+
+static void gsireg_construct_ch_k_cntxt_0_v2_5(enum gsihal_reg_name reg,
+	const void *fields, u32 *val)
+{
+	struct gsihal_reg_ch_k_cntxt_0 *ch_cntxt =
+		(struct gsihal_reg_ch_k_cntxt_0 *)fields;
+
+	gsireg_construct_ch_k_cntxt_0(reg, fields, val);
+
+	GSI_SETFIELD_IN_REG(*val, !!ch_cntxt->chtype_protocol_msb,
+		GSI_V2_5_EE_n_GSI_CH_k_CNTXT_0_CHTYPE_PROTOCOL_MSB_SHFT,
+		GSI_V2_5_EE_n_GSI_CH_k_CNTXT_0_CHTYPE_PROTOCOL_MSB_BMSK);
+}
+
+static void gsireg_construct_ch_k_cntxt_1(enum gsihal_reg_name reg,
+	const void *fields, u32 *val)
+{
+	struct gsihal_reg_ch_k_cntxt_1 *ch_cntxt =
+		(struct gsihal_reg_ch_k_cntxt_1 *)fields;
+
+	GSI_SETFIELD_IN_REG(*val, ch_cntxt->r_length,
+		GSI_EE_n_GSI_CH_k_CNTXT_1_R_LENGTH_SHFT,
+		GSI_EE_n_GSI_CH_k_CNTXT_1_R_LENGTH_BMSK);
+}
+
+static void gsireg_construct_ch_k_cntxt_1_v2_9(enum gsihal_reg_name reg,
+	const void *fields, u32 *val)
+{
+	struct gsihal_reg_ch_k_cntxt_1 *ch_cntxt =
+		(struct gsihal_reg_ch_k_cntxt_1 *)fields;
+
+	GSI_SETFIELD_IN_REG(*val, ch_cntxt->r_length,
+		GSI_V2_9_EE_n_GSI_CH_k_CNTXT_1_R_LENGTH_SHFT,
+		GSI_V2_9_EE_n_GSI_CH_k_CNTXT_1_R_LENGTH_BMSK);
+}
+
+static void gsireg_construct_ee_n_gsi_ch_cmd(enum gsihal_reg_name reg,
+	const void *fields, u32 *val)
+{
+	struct gsihal_reg_ee_n_gsi_ch_cmd *ev_ch_cmd =
+		(struct gsihal_reg_ee_n_gsi_ch_cmd *)fields;
+
+	GSI_SETFIELD_IN_REG(*val, ev_ch_cmd->opcode,
+		GSI_EE_n_GSI_CH_CMD_OPCODE_SHFT,
+		GSI_EE_n_GSI_CH_CMD_OPCODE_BMSK);
+	GSI_SETFIELD_IN_REG(*val, ev_ch_cmd->chid,
+		GSI_EE_n_GSI_CH_CMD_CHID_SHFT,
+		GSI_EE_n_GSI_CH_CMD_CHID_BMSK);
+}
+
+static void gsireg_construct_gsi_cfg(enum gsihal_reg_name reg,
+	const void *fields, u32 *val)
+{
+	struct gsihal_reg_gsi_cfg *gsi_cfg =
+		(struct gsihal_reg_gsi_cfg *)fields;
+
+	GSI_SETFIELD_IN_REG(*val, !!gsi_cfg->bp_mtrix_disable,
+		GSI_GSI_CFG_BP_MTRIX_DISABLE_SHFT,
+		GSI_GSI_CFG_BP_MTRIX_DISABLE_BMSK);
+	GSI_SETFIELD_IN_REG(*val, !!gsi_cfg->gsi_pwr_clps,
+		GSI_GSI_CFG_GSI_PWR_CLPS_SHFT,
+		GSI_GSI_CFG_GSI_PWR_CLPS_BMSK);
+	GSI_SETFIELD_IN_REG(*val, !!gsi_cfg->uc_is_mcs,
+		GSI_GSI_CFG_UC_IS_MCS_SHFT,
+		GSI_GSI_CFG_UC_IS_MCS_BMSK);
+	GSI_SETFIELD_IN_REG(*val, !!gsi_cfg->double_mcs_clk_freq,
+		GSI_GSI_CFG_DOUBLE_MCS_CLK_FREQ_SHFT,
+		GSI_GSI_CFG_DOUBLE_MCS_CLK_FREQ_BMSK);
+	GSI_SETFIELD_IN_REG(*val, !!gsi_cfg->mcs_enable,
+		GSI_GSI_CFG_MCS_ENABLE_SHFT,
+		GSI_GSI_CFG_MCS_ENABLE_BMSK);
+	GSI_SETFIELD_IN_REG(*val, !!gsi_cfg->gsi_enable,
+		GSI_GSI_CFG_GSI_ENABLE_SHFT,
+		GSI_GSI_CFG_GSI_ENABLE_BMSK);
+}
+
+static void gsireg_construct_gsi_cfg_v2_5(enum gsihal_reg_name reg,
+	const void *fields, u32 *val)
+{
+	struct gsihal_reg_gsi_cfg *gsi_cfg =
+		(struct gsihal_reg_gsi_cfg *)fields;
+
+	gsireg_construct_gsi_cfg(reg, fields, val);
+	GSI_SETFIELD_IN_REG(*val, gsi_cfg->sleep_clk_div,
+		GSI_V2_5_GSI_CFG_SLEEP_CLK_DIV_SHFT,
+		GSI_V2_5_GSI_CFG_SLEEP_CLK_DIV_BMSK);
+}
+
+static void gsireg_construct_gsi_ee_generic_cmd(enum gsihal_reg_name reg,
+	const void *fields, u32 *val)
+{
+	struct gsihal_reg_gsi_ee_generic_cmd *cmd =
+		(struct gsihal_reg_gsi_ee_generic_cmd *)fields;
+
+	GSI_SETFIELD_IN_REG(*val, cmd->opcode,
+		GSI_EE_n_GSI_EE_GENERIC_CMD_OPCODE_SHFT,
+		GSI_EE_n_GSI_EE_GENERIC_CMD_OPCODE_BMSK);
+	GSI_SETFIELD_IN_REG(*val, cmd->virt_chan_idx,
+		GSI_EE_n_GSI_EE_GENERIC_CMD_VIRT_CHAN_IDX_SHFT,
+		GSI_EE_n_GSI_EE_GENERIC_CMD_VIRT_CHAN_IDX_BMSK);
+	GSI_SETFIELD_IN_REG(*val, cmd->ee,
+		GSI_EE_n_GSI_EE_GENERIC_CMD_EE_SHFT,
+		GSI_EE_n_GSI_EE_GENERIC_CMD_EE_BMSK);
+}
+
+static void gsireg_construct_cntxt_gsi_irq_en(enum gsihal_reg_name reg,
+	const void *fields, u32 *val)
+{
+	struct gsihal_reg_gsi_ee_n_cntxt_gsi_irq *irq =
+		(struct gsihal_reg_gsi_ee_n_cntxt_gsi_irq *)fields;
+
+	GSI_SETFIELD_IN_REG(*val, !!irq->gsi_mcs_stack_ovrflow,
+		GSI_EE_n_CNTXT_GSI_IRQ_EN_GSI_MCS_STACK_OVRFLOW_SHFT,
+		GSI_EE_n_CNTXT_GSI_IRQ_EN_GSI_MCS_STACK_OVRFLOW_BMSK);
+	GSI_SETFIELD_IN_REG(*val, !!irq->gsi_cmd_fifo_ovrflow,
+		GSI_EE_n_CNTXT_GSI_IRQ_EN_GSI_CMD_FIFO_OVRFLOW_SHFT,
+		GSI_EE_n_CNTXT_GSI_IRQ_EN_GSI_CMD_FIFO_OVRFLOW_BMSK);
+	GSI_SETFIELD_IN_REG(*val, !!irq->gsi_bus_error,
+		GSI_EE_n_CNTXT_GSI_IRQ_EN_GSI_BUS_ERROR_SHFT,
+		GSI_EE_n_CNTXT_GSI_IRQ_EN_GSI_BUS_ERROR_BMSK);
+	GSI_SETFIELD_IN_REG(*val, !!irq->gsi_break_point,
+		GSI_EE_n_CNTXT_GSI_IRQ_EN_GSI_BREAK_POINT_SHFT,
+		GSI_EE_n_CNTXT_GSI_IRQ_EN_GSI_BREAK_POINT_BMSK);
+}
+
+/*
+* This table contains the info regarding each register for GSI1.0 and later.
+* Information like: offset and construct/parse functions.
+* All the information on the register on GSI are statically defined below.
+* If information is missing regarding some register on some GSI version,
+*  the init function will fill it with the information from the previous
+*  GSI version.
+* Information is considered missing if all of the fields are 0.
+* If offset is -1, this means that the register is removed on the
+*  specific version.
+*/
+static struct gsihal_reg_obj gsihal_reg_objs[GSI_VER_MAX][GSI_REG_MAX] = {
+	/* GSIv1_0 */
+	[GSI_VER_1_0][GSI_EE_n_CNTXT_TYPE_IRQ_MSK] = {
+	gsireg_construct_dummy, gsireg_parse_dummy,
+	0x0001f088, 0x4000, 0},
+	[GSI_VER_1_0][GSI_EE_n_CNTXT_SRC_GSI_CH_IRQ_MSK] = {
+	gsireg_construct_dummy, gsireg_parse_dummy,
+	0x0001f098, 0x4000, 0},
+	[GSI_VER_1_0][GSI_EE_n_CNTXT_SRC_EV_CH_IRQ_MSK] = {
+	gsireg_construct_dummy, gsireg_parse_dummy,
+	0x0001f09c, 0x4000, 0},
+	[GSI_VER_1_0][GSI_EE_n_CNTXT_SRC_IEOB_IRQ_MSK] = {
+	gsireg_construct_dummy, gsireg_parse_dummy,
+	0x0001f0b8, 0x4000, 0},
+	[GSI_VER_1_0][GSI_EE_n_CNTXT_GLOB_IRQ_EN] = {
+	gsireg_construct_dummy, gsireg_parse_dummy,
+	0x0001f108, 0x4000, 0},
+	[GSI_VER_1_0][GSI_EE_n_CNTXT_GSI_IRQ_EN] = {
+	gsireg_construct_cntxt_gsi_irq_en, gsireg_parse_dummy,
+	0x0001f120, 0x4000, 0},
+	[GSI_VER_1_0][GSI_EE_n_CNTXT_TYPE_IRQ] = {
+	gsireg_construct_dummy, gsireg_parse_ctx_type_irq,
+	0x0001f080, 0x4000, 0},
+	[GSI_VER_1_0][GSI_EE_n_CNTXT_SRC_GSI_CH_IRQ] = {
+	gsireg_construct_dummy, gsireg_parse_dummy,
+	0x0001f090, 0x4000, 0},
+	[GSI_VER_1_0][GSI_EE_n_GSI_CH_k_CNTXT_0] = {
+	gsireg_construct_ch_k_cntxt_0, gsireg_parse_ch_k_cntxt_0,
+	0x0001c000, 0x4000, 0x80},
+	[GSI_VER_1_0][GSI_EE_n_CNTXT_SRC_GSI_CH_IRQ_CLR] = {
+	gsireg_construct_dummy, gsireg_parse_dummy,
+	0x0001f0a0, 0x4000, 0},
+	[GSI_VER_1_0][GSI_EE_n_CNTXT_SRC_EV_CH_IRQ] = {
+	gsireg_construct_dummy, gsireg_parse_dummy,
+	0x0001f094, 0x4000, 0},
+	[GSI_VER_1_0][GSI_EE_n_CNTXT_SRC_EV_CH_IRQ_CLR] = {
+	gsireg_construct_dummy, gsireg_parse_dummy,
+	0x0001f0a4, 0x4000, 0},
+	[GSI_VER_1_0][GSI_EE_n_EV_CH_k_CNTXT_0] = {
+	gsireg_construct_ev_ch_k_cntxt_0, gsireg_parse_ev_ch_k_cntxt_0,
+	0x0001d000, 0x4000, 0x80},
+	[GSI_VER_1_0][GSI_EE_n_CNTXT_GLOB_IRQ_STTS] = {
+	gsireg_construct_dummy, gsireg_parse_cntxt_glob_irq_stts,
+	0x0001f100, 0x4000, 0},
+	[GSI_VER_1_0][GSI_EE_n_ERROR_LOG] = {
+	gsireg_construct_dummy, gsireg_parse_dummy,
+	0x0001f200, 0x4000, 0},
+	[GSI_VER_1_0][GSI_EE_n_ERROR_LOG_CLR] = {
+	gsireg_construct_dummy, gsireg_parse_dummy,
+	0x0001f210, 0x4000, 0},
+	[GSI_VER_1_0][GSI_EE_n_CNTXT_GLOB_IRQ_CLR] = {
+	gsireg_construct_dummy, gsireg_parse_dummy,
+	0x0001f110, 0x4000, 0},
+	[GSI_VER_1_0][GSI_EE_n_EV_CH_k_DOORBELL_0] = {
+	gsireg_construct_dummy, gsireg_parse_dummy,
+	0x0001e100, 0x4000, 0x8},
+	[GSI_VER_1_0][GSI_EE_n_GSI_CH_k_DOORBELL_0] = {
+	gsireg_construct_dummy, gsireg_parse_dummy,
+	0x0001e000, 0x4000, 0x8 },
+	[GSI_VER_1_0][GSI_EE_n_CNTXT_SRC_IEOB_IRQ] = {
+	gsireg_construct_dummy, gsireg_parse_dummy,
+	0x0001f0b0, 0x4000, 0},
+	[GSI_VER_1_0][GSI_EE_n_CNTXT_SRC_IEOB_IRQ_CLR] = {
+	gsireg_construct_dummy, gsireg_parse_dummy,
+	0x0001f0c0, 0x4000, 0},
+	[GSI_VER_1_0][GSI_INTER_EE_n_SRC_GSI_CH_IRQ] = {
+	gsireg_construct_dummy, gsireg_parse_dummy,
+	0x0000c018, 0x1000, 0},
+	[GSI_VER_1_0][GSI_INTER_EE_n_SRC_GSI_CH_IRQ_CLR] = {
+	gsireg_construct_dummy, gsireg_parse_dummy,
+	0x0000c028, 0x1000, 0},
+	[GSI_VER_1_0][GSI_INTER_EE_n_SRC_EV_CH_IRQ] = {
+	gsireg_construct_dummy, gsireg_parse_dummy,
+	0x0000c01c, 0x1000, 0},
+	[GSI_VER_1_0][GSI_INTER_EE_n_SRC_EV_CH_IRQ_CLR] = {
+	gsireg_construct_dummy, gsireg_parse_dummy,
+	0x0000c02c, 0x1000, 0},
+	[GSI_VER_1_0][GSI_EE_n_CNTXT_GSI_IRQ_STTS] = {
+	gsireg_construct_dummy, gsireg_parse_cntxt_gsi_irq_stts,
+	0x0001f118, 0x4000, 0},
+	[GSI_VER_1_0][GSI_EE_n_CNTXT_GSI_IRQ_CLR] = {
+	gsireg_construct_dummy, gsireg_parse_dummy,
+	0x0001f128, 0x4000, 0},
+	[GSI_VER_1_0][GSI_EE_n_GSI_HW_PARAM] = {
+	gsireg_construct_dummy, gsireg_parse_hw_param,
+	0x0001f040, 0x4000, 0},
+	[GSI_VER_1_0][GSI_EE_n_GSI_SW_VERSION] = {
+	gsireg_construct_dummy, gsireg_parse_dummy,
+	0x0001f044, 0x4000, 0},
+	[GSI_VER_1_0][GSI_EE_n_CNTXT_INTSET] = {
+	gsireg_construct_dummy, gsireg_parse_dummy,
+	0x0001f180, 0x4000, 0},
+	[GSI_VER_1_0][GSI_EE_n_CNTXT_MSI_BASE_LSB] = {
+	gsireg_construct_dummy, gsireg_parse_dummy,
+	0x0001f180, 0x4000, 0},
+	[GSI_VER_1_0][GSI_EE_n_CNTXT_MSI_BASE_MSB] = {
+	gsireg_construct_dummy, gsireg_parse_dummy,
+	0x0001f180, 0x4000, 0},
+	[GSI_VER_1_0][GSI_EE_n_GSI_STATUS] = {
+	gsireg_construct_dummy, gsireg_parse_gsi_status,
+	0x0001f000, 0x4000, 0},
+	[GSI_VER_1_0][GSI_EE_n_CNTXT_SCRATCH_0] = {
+	gsireg_construct_dummy, gsireg_parse_dummy,
+	0x0001f400, 0x4000, 0},
+	[GSI_VER_1_0][GSI_EE_n_EV_CH_k_CNTXT_1] = {
+	gsireg_construct_ev_ch_k_cntxt_1, gsireg_parse_dummy,
+	0x0001d004, 0x4000, 0x80},
+	[GSI_VER_1_0][GSI_EE_n_EV_CH_k_CNTXT_2] = {
+	gsireg_construct_ev_ch_k_cntxt_2, gsireg_parse_dummy,
+	0x0001d008, 0x4000, 0x80},
+	[GSI_VER_1_0][GSI_EE_n_EV_CH_k_CNTXT_3] = {
+	gsireg_construct_ev_ch_k_cntxt_3, gsireg_parse_dummy,
+	0x0001d00c, 0x4000, 0x80},
+	[GSI_VER_1_0][GSI_EE_n_EV_CH_k_CNTXT_8] = {
+	gsireg_construct_ev_ch_k_cntxt_8, gsireg_parse_dummy,
+	0x0001d020, 0x4000, 0x80},
+	[GSI_VER_1_0][GSI_EE_n_EV_CH_k_CNTXT_9] = {
+	gsireg_construct_ev_ch_k_cntxt_9, gsireg_parse_dummy,
+	0x0001d024, 0x4000, 0x80},
+	[GSI_VER_1_0][GSI_EE_n_EV_CH_k_CNTXT_10] = {
+	gsireg_construct_ev_ch_k_cntxt_10, gsireg_parse_dummy,
+	0x0001d028, 0x4000, 0x80},
+	[GSI_VER_1_0][GSI_EE_n_EV_CH_k_CNTXT_11] = {
+	gsireg_construct_ev_ch_k_cntxt_11, gsireg_parse_dummy,
+	0x0001d02c, 0x4000, 0x80},
+	[GSI_VER_1_0][GSI_EE_n_EV_CH_k_CNTXT_12] = {
+	gsireg_construct_ev_ch_k_cntxt_12, gsireg_parse_dummy,
+	0x0001d030, 0x4000, 0x80},
+	[GSI_VER_1_0][GSI_EE_n_EV_CH_k_CNTXT_13] = {
+	gsireg_construct_ev_ch_k_cntxt_13, gsireg_parse_dummy,
+	0x0001d034, 0x4000, 0x80},
+	[GSI_VER_1_0][GSI_EE_n_EV_CH_k_DOORBELL_1] = {
+	gsireg_construct_ev_ch_k_doorbell_1, gsireg_parse_dummy,
+	0x0001e104, 0x4000, 0x8},
+	[GSI_VER_1_0][GSI_EE_n_EV_CH_CMD] = {
+	gsireg_construct_ee_n_ev_ch_cmd, gsireg_parse_dummy,
+	0x0001f010, 0x4000, 0},
+	[GSI_VER_1_0][GSI_EE_n_EV_CH_k_SCRATCH_0] = {
+	gsireg_construct_dummy, gsireg_parse_dummy,
+	0x0001d048, 0x4000, 0x80},
+	[GSI_VER_1_0][GSI_EE_n_EV_CH_k_SCRATCH_1] = {
+	gsireg_construct_dummy, gsireg_parse_dummy,
+	0x0001d04c, 0x4000, 0x80},
+	[GSI_VER_1_0][GSI_EE_n_GSI_CH_k_DOORBELL_1] = {
+	gsireg_construct_dummy, gsireg_parse_dummy,
+	0x0001e004, 0x4000, 0x8},
+	[GSI_VER_1_0][GSI_EE_n_GSI_CH_k_QOS] = {
+	gsireg_construct_ee_n_gsi_ch_k_qos, gsireg_parse_dummy,
+	0x0001c05c, 0x4000, 0x80},
+	[GSI_VER_1_0][GSI_EE_n_GSI_CH_k_CNTXT_1] = {
+	gsireg_construct_ch_k_cntxt_1, gsireg_parse_dummy,
+	0x0001c004, 0x4000, 0x80},
+	[GSI_VER_1_0][GSI_EE_n_GSI_CH_k_CNTXT_2] = {
+	gsireg_construct_dummy, gsireg_parse_dummy,
+	0x0001c008, 0x4000, 0x80},
+	[GSI_VER_1_0][GSI_EE_n_GSI_CH_k_CNTXT_3] = {
+	gsireg_construct_dummy, gsireg_parse_dummy,
+	0x0001c00c, 0x4000, 0x80},
+	[GSI_VER_1_0][GSI_EE_n_GSI_CH_CMD] = {
+	gsireg_construct_ee_n_gsi_ch_cmd, gsireg_parse_dummy,
+	0x0001f008, 0x4000, 0},
+	[GSI_VER_1_0][GSI_EE_n_GSI_CH_k_SCRATCH_0] = {
+	gsireg_construct_dummy, gsireg_parse_dummy,
+	0x0001c060, 0x4000, 0x80},
+	[GSI_VER_1_0][GSI_EE_n_GSI_CH_k_SCRATCH_1] = {
+	gsireg_construct_dummy, gsireg_parse_dummy,
+	0x0001c064, 0x4000, 0x80},
+	[GSI_VER_1_0][GSI_EE_n_GSI_CH_k_SCRATCH_2] = {
+	gsireg_construct_dummy, gsireg_parse_dummy,
+	0x0001c068, 0x4000, 0x80},
+	[GSI_VER_1_0][GSI_EE_n_GSI_CH_k_SCRATCH_3] = {
+	gsireg_construct_dummy, gsireg_parse_dummy,
+	0x0001c06c, 0x4000, 0x80},
+	[GSI_VER_1_0][GSI_EE_n_GSI_CH_k_CNTXT_4] = {
+	gsireg_construct_dummy, gsireg_parse_dummy,
+	0x0001c010, 0x4000, 0x80},
+	[GSI_VER_1_0][GSI_EE_n_GSI_CH_k_CNTXT_5] = {
+	gsireg_construct_dummy, gsireg_parse_dummy,
+	0x0001c014, 0x4000, 0x80},
+	[GSI_VER_1_0][GSI_EE_n_GSI_CH_k_CNTXT_6] = {
+	gsireg_construct_dummy, gsireg_parse_dummy,
+	0x0001c018, 0x4000, 0x80},
+	[GSI_VER_1_0][GSI_EE_n_GSI_CH_k_CNTXT_7] = {
+	gsireg_construct_dummy, gsireg_parse_dummy,
+	0x0001c01c, 0x4000, 0x80},
+	[GSI_VER_1_0][GSI_EE_n_EV_CH_k_CNTXT_4] = {
+	gsireg_construct_dummy, gsireg_parse_dummy,
+	0x0001d010, 0x4000, 0x80},
+	[GSI_VER_1_0][GSI_EE_n_EV_CH_k_CNTXT_5] = {
+	gsireg_construct_dummy, gsireg_parse_dummy,
+	0x0001d014, 0x4000, 0x80},
+	[GSI_VER_1_0][GSI_EE_n_EV_CH_k_CNTXT_6] = {
+	gsireg_construct_dummy, gsireg_parse_dummy,
+	0x0001d018, 0x4000, 0x80},
+	[GSI_VER_1_0][GSI_EE_n_EV_CH_k_CNTXT_7] = {
+	gsireg_construct_dummy, gsireg_parse_dummy,
+	0x0001d01c, 0x4000, 0x80},
+	[GSI_VER_1_0][GSI_GSI_IRAM_PTR_CH_CMD] = {
+	gsireg_construct_dummy, gsireg_parse_dummy,
+	0x00000400, 0, 0},
+	[GSI_VER_1_0][GSI_GSI_IRAM_PTR_CH_DB] = {
+	gsireg_construct_dummy, gsireg_parse_dummy,
+	0x00000418, 0, 0},
+	[GSI_VER_1_0][GSI_GSI_IRAM_PTR_CH_DIS_COMP] = {
+	gsireg_construct_dummy, gsireg_parse_dummy,
+	0x00000424, 0, 0},
+	[GSI_VER_1_0][GSI_GSI_IRAM_PTR_CH_EMPTY] = {
+	gsireg_construct_dummy, gsireg_parse_dummy,
+	0x00000428, 0, 0},
+	[GSI_VER_1_0][GSI_GSI_IRAM_PTR_EE_GENERIC_CMD] = {
+	gsireg_construct_dummy, gsireg_parse_dummy,
+	0x00000404, 0, 0},
+	[GSI_VER_1_0][GSI_GSI_IRAM_PTR_EVENT_GEN_COMP] = {
+	gsireg_construct_dummy, gsireg_parse_dummy,
+	0x0000042c, 0, 0},
+	[GSI_VER_1_0][GSI_GSI_IRAM_PTR_INT_MOD_STOPPED] = {
+	gsireg_construct_dummy, gsireg_parse_dummy,
+	0x0000044c, 0, 0},
+	[GSI_VER_1_0][GSI_GSI_IRAM_PTR_PERIPH_IF_TLV_IN_0] = {
+	gsireg_construct_dummy, gsireg_parse_dummy,
+	0x00000430, 0, 0},
+	[GSI_VER_1_0][GSI_GSI_IRAM_PTR_PERIPH_IF_TLV_IN_2] = {
+	gsireg_construct_dummy, gsireg_parse_dummy,
+	0x00000434, 0, 0},
+	[GSI_VER_1_0][GSI_GSI_IRAM_PTR_PERIPH_IF_TLV_IN_1] = {
+	gsireg_construct_dummy, gsireg_parse_dummy,
+	0x00000438, 0, 0},
+	[GSI_VER_1_0][GSI_GSI_IRAM_PTR_NEW_RE] = {
+	gsireg_construct_dummy, gsireg_parse_dummy,
+	0x00000420, 0, 0},
+	[GSI_VER_1_0][GSI_GSI_IRAM_PTR_READ_ENG_COMP] = {
+	gsireg_construct_dummy, gsireg_parse_dummy,
+	0x00000444, 0, 0},
+	[GSI_VER_1_0][GSI_GSI_IRAM_PTR_TIMER_EXPIRED] = {
+	gsireg_construct_dummy, gsireg_parse_dummy,
+	0x0000043c, 0, 0},
+	[GSI_VER_1_0][GSI_GSI_IRAM_PTR_EV_DB] = {
+	gsireg_construct_dummy, gsireg_parse_dummy,
+	0x0000041c, 0, 0},
+	[GSI_VER_1_0][GSI_GSI_IRAM_PTR_UC_GP_INT] = {
+	gsireg_construct_dummy, gsireg_parse_dummy,
+	0x00000448, 0, 0},
+	[GSI_VER_1_0][GSI_GSI_IRAM_PTR_WRITE_ENG_COMP] = {
+	gsireg_construct_dummy, gsireg_parse_dummy,
+	0x00000440, 0, 0},
+	[GSI_VER_1_0][GSI_IC_DISABLE_CHNL_BCK_PRS_LSB] = {
+	gsireg_construct_dummy, gsireg_parse_dummy,
+	0x000000a0, 0, 0},
+	[GSI_VER_1_0][GSI_IC_DISABLE_CHNL_BCK_PRS_MSB] = {
+	gsireg_construct_dummy, gsireg_parse_dummy,
+	0x000000a4, 0, 0},
+	[GSI_VER_1_0][GSI_IC_GEN_EVNT_BCK_PRS_LSB] = {
+	gsireg_construct_dummy, gsireg_parse_dummy,
+	0x000000a8, 0, 0},
+	[GSI_VER_1_0][GSI_IC_GEN_EVNT_BCK_PRS_MSB] = {
+	gsireg_construct_dummy, gsireg_parse_dummy,
+	0x000000ac, 0, 0},
+	[GSI_VER_1_0][GSI_IC_GEN_INT_BCK_PRS_LSB] = {
+	gsireg_construct_dummy, gsireg_parse_dummy,
+	0x000000b0, 0, 0},
+	[GSI_VER_1_0][GSI_IC_GEN_INT_BCK_PRS_MSB] = {
+	gsireg_construct_dummy, gsireg_parse_dummy,
+	0x000000b4, 0, 0},
+	[GSI_VER_1_0][GSI_IC_STOP_INT_MOD_BCK_PRS_LSB] = {
+	gsireg_construct_dummy, gsireg_parse_dummy,
+	0x000000b8, 0, 0 },
+	[GSI_VER_1_0][GSI_IC_STOP_INT_MOD_BCK_PRS_MSB] = {
+	gsireg_construct_dummy, gsireg_parse_dummy,
+	0x000000bc, 0, 0},
+	[GSI_VER_1_0][GSI_IC_PROCESS_DESC_BCK_PRS_LSB] = {
+	gsireg_construct_dummy, gsireg_parse_dummy,
+	0x000000c0, 0, 0},
+	[GSI_VER_1_0][GSI_IC_PROCESS_DESC_BCK_PRS_MSB] = {
+	gsireg_construct_dummy, gsireg_parse_dummy,
+	0x000000c4, 0, 0},
+	[GSI_VER_1_0][GSI_IC_TLV_STOP_BCK_PRS_LSB] = {
+	gsireg_construct_dummy, gsireg_parse_dummy,
+	0x000000c8, 0, 0},
+	[GSI_VER_1_0][GSI_IC_TLV_STOP_BCK_PRS_MSB] = {
+	gsireg_construct_dummy, gsireg_parse_dummy,
+	0x000000cc, 0, 0},
+	[GSI_VER_1_0][GSI_IC_TLV_RESET_BCK_PRS_LSB] = {
+	gsireg_construct_dummy, gsireg_parse_dummy,
+	0x000000d0, 0, 0},
+	[GSI_VER_1_0][GSI_IC_TLV_RESET_BCK_PRS_MSB] = {
+	gsireg_construct_dummy, gsireg_parse_dummy,
+	0x000000d4, 0, 0},
+	[GSI_VER_1_0][GSI_IC_RGSTR_TIMER_BCK_PRS_LSB] = {
+	gsireg_construct_dummy, gsireg_parse_dummy,
+	0x000000d8, 0, 0},
+	[GSI_VER_1_0][GSI_IC_RGSTR_TIMER_BCK_PRS_MSB] = {
+	gsireg_construct_dummy, gsireg_parse_dummy,
+	0x000000dc, 0, 0},
+	[GSI_VER_1_0][GSI_IC_READ_BCK_PRS_LSB] = {
+	gsireg_construct_dummy, gsireg_parse_dummy,
+	0x000000e0, 0, 0},
+	[GSI_VER_1_0][GSI_IC_READ_BCK_PRS_MSB] = {
+	gsireg_construct_dummy, gsireg_parse_dummy,
+	0x000000e4, 0, 0},
+	[GSI_VER_1_0][GSI_IC_WRITE_BCK_PRS_LSB] = {
+	gsireg_construct_dummy, gsireg_parse_dummy,
+	0x000000e8, 0, 0},
+	[GSI_VER_1_0][GSI_IC_WRITE_BCK_PRS_MSB] = {
+	gsireg_construct_dummy, gsireg_parse_dummy,
+	0x000000ec, 0, 0},
+	[GSI_VER_1_0][GSI_IC_UCONTROLLER_GPR_BCK_PRS_LSB] = {
+	gsireg_construct_dummy, gsireg_parse_dummy,
+	0x000000f0, 0, 0},
+	[GSI_VER_1_0][GSI_IC_UCONTROLLER_GPR_BCK_PRS_MSB] = {
+	gsireg_construct_dummy, gsireg_parse_dummy,
+	0x000000f4, 0, 0},
+	[GSI_VER_1_0][GSI_GSI_PERIPH_BASE_ADDR_MSB] = {
+	gsireg_construct_dummy, gsireg_parse_dummy,
+	0x0000001c, 0, 0},
+	[GSI_VER_1_0][GSI_GSI_PERIPH_BASE_ADDR_LSB] = {
+	gsireg_construct_dummy, gsireg_parse_dummy,
+	0x00000018, 0, 0},
+	[GSI_VER_1_0][GSI_GSI_CFG] = {
+	gsireg_construct_gsi_cfg, gsireg_parse_dummy,
+	0x00000000, 0, 0},
+	[GSI_VER_1_0][GSI_EE_n_GSI_EE_GENERIC_CMD] = {
+	gsireg_construct_gsi_ee_generic_cmd, gsireg_parse_dummy,
+	0x0001f018, 0x4000, 0},
+	[GSI_VER_1_0][GSI_EE_n_GSI_CH_k_RE_FETCH_READ_PTR] = {
+	gsireg_construct_dummy, gsireg_parse_dummy,
+	0x0001c054, 0x4000, 0x80},
+	[GSI_VER_1_0][GSI_EE_n_GSI_CH_k_RE_FETCH_WRITE_PTR] = {
+	gsireg_construct_dummy, gsireg_parse_dummy,
+	0x0001c058, 0x4000, 0x80},
+	[GSI_VER_1_0][GSI_GSI_INST_RAM_n] = {
+	gsireg_construct_dummy, gsireg_parse_dummy,
+	0x00004000, GSI_GSI_INST_RAM_n_WORD_SZ, 0},
+
+	/* GSIv1_2 */
+	[GSI_VER_1_2][GSI_EE_n_GSI_HW_PARAM] = {
+	gsireg_construct_dummy, gsireg_parse_dummy,
+	-1, 0, 0},
+	[GSI_VER_1_2][GSI_EE_n_GSI_HW_PARAM_0] = {
+	gsireg_construct_dummy, gsireg_parse_hw_param0,
+	0x0001f038, 0x4000, 0},
+	[GSI_VER_1_2][GSI_EE_n_GSI_CH_k_QOS] = {
+	gsireg_construct_ee_n_gsi_ch_k_qos_v1_2, gsireg_parse_dummy,
+	0x0001c05c, 0x4000, 0x80},
+	[GSI_VER_1_2][GSI_GSI_MCS_CFG] = {
+	gsireg_construct_dummy, gsireg_parse_dummy,
+	0x0000B000, 0, 0},
+
+	/* GSIv1_3 */
+	[GSI_VER_1_3][GSI_EE_n_GSI_HW_PARAM_2] = {
+	gsireg_construct_dummy, gsireg_parse_hw_param2,
+	0x0001f040, 0x4000, 0},
+
+	/* GSIv2_0 */
+	[GSI_VER_2_0][GSI_EE_n_GSI_HW_PARAM_2] = {
+	gsireg_construct_dummy, gsireg_parse_hw_param2_v2_0,
+	0x0001f040, 0x4000, 0},
+
+	/* GSIv2_2 */
+	[GSI_VER_2_2][GSI_EE_n_GSI_HW_PARAM_2] = {
+	gsireg_construct_dummy, gsireg_parse_hw_param2_v2_2,
+	0x0001f040, 0x4000, 0 },
+	
+	/* GSIv2_5 */
+	[GSI_VER_2_5][GSI_EE_n_CNTXT_TYPE_IRQ_MSK] = {
+	gsireg_construct_dummy, gsireg_parse_dummy,
+	0x00012088, 0x4000, 0},
+	[GSI_VER_2_5][GSI_EE_n_CNTXT_SRC_GSI_CH_IRQ_MSK] = {
+	gsireg_construct_dummy, gsireg_parse_dummy,
+	0x00012098, 0x4000, 0},
+	[GSI_VER_2_5][GSI_EE_n_CNTXT_SRC_EV_CH_IRQ_MSK] = {
+	gsireg_construct_dummy, gsireg_parse_dummy,
+	0x0001209c, 0x4000, 0},
+	[GSI_VER_2_5][GSI_EE_n_CNTXT_SRC_IEOB_IRQ_MSK] = {
+	gsireg_construct_dummy, gsireg_parse_dummy,
+	0x000120b8, 0x4000, 0},
+	[GSI_VER_2_5][GSI_EE_n_CNTXT_GLOB_IRQ_EN] = {
+	gsireg_construct_dummy, gsireg_parse_dummy,
+	0x00012108, 0x4000, 0},
+	[GSI_VER_2_5][GSI_EE_n_CNTXT_GSI_IRQ_EN] = {
+	gsireg_construct_cntxt_gsi_irq_en, gsireg_parse_dummy,
+	0x00012120, 0x4000, 0},
+	[GSI_VER_2_5][GSI_EE_n_CNTXT_TYPE_IRQ] = {
+	gsireg_construct_dummy, gsireg_parse_ctx_type_irq,
+	0x00012080, 0x4000, 0},
+	[GSI_VER_2_5][GSI_EE_n_CNTXT_SRC_GSI_CH_IRQ] = {
+	gsireg_construct_dummy, gsireg_parse_dummy,
+	0x00012090, 0x4000, 0},
+	[GSI_VER_2_5][GSI_EE_n_GSI_CH_k_CNTXT_0] = {
+	gsireg_construct_ch_k_cntxt_0_v2_5, gsireg_parse_ch_k_cntxt_0_v2_5,
+	0x0000f000, 0x4000, 0x80},
+	[GSI_VER_2_5][GSI_EE_n_CNTXT_SRC_GSI_CH_IRQ_CLR] = {
+	gsireg_construct_dummy, gsireg_parse_dummy,
+	0x000120a0, 0x4000, 0},
+	[GSI_VER_2_5][GSI_EE_n_CNTXT_SRC_EV_CH_IRQ] = {
+	gsireg_construct_dummy, gsireg_parse_dummy,
+	0x00012094, 0x4000, 0},
+	[GSI_VER_2_5][GSI_EE_n_CNTXT_SRC_EV_CH_IRQ_CLR] = {
+	gsireg_construct_dummy, gsireg_parse_dummy,
+	0x000120a4, 0x4000, 0},
+	[GSI_VER_2_5][GSI_EE_n_EV_CH_k_CNTXT_0] = {
+	gsireg_construct_ev_ch_k_cntxt_0, gsireg_parse_ev_ch_k_cntxt_0,
+	0x00010000, 0x4000, 0x80},
+	[GSI_VER_2_5][GSI_EE_n_CNTXT_GLOB_IRQ_STTS] = {
+	gsireg_construct_dummy, gsireg_parse_cntxt_glob_irq_stts,
+	0x00012100, 0x4000, 0},
+	[GSI_VER_2_5][GSI_EE_n_ERROR_LOG] = {
+	gsireg_construct_dummy, gsireg_parse_dummy,
+	0x00012200, 0x4000, 0},
+	[GSI_VER_2_5][GSI_EE_n_ERROR_LOG_CLR] = {
+	gsireg_construct_dummy, gsireg_parse_dummy,
+	0x00012210, 0x4000, 0},
+	[GSI_VER_2_5][GSI_EE_n_CNTXT_GLOB_IRQ_CLR] = {
+	gsireg_construct_dummy, gsireg_parse_dummy,
+	0x00012110, 0x4000, 0},
+	[GSI_VER_2_5][GSI_EE_n_EV_CH_k_DOORBELL_0] = {
+	gsireg_construct_dummy, gsireg_parse_dummy,
+	0x00011100, 0x4000, 0x8},
+	[GSI_VER_2_5][GSI_EE_n_GSI_CH_k_DOORBELL_0] = {
+	gsireg_construct_dummy, gsireg_parse_dummy,
+	0x00011000, 0x4000, 0x8},
+	[GSI_VER_2_5][GSI_EE_n_CNTXT_SRC_IEOB_IRQ] = {
+	gsireg_construct_dummy, gsireg_parse_dummy,
+	0x000120b0, 0x4000, 0},
+	[GSI_VER_2_5][GSI_EE_n_CNTXT_SRC_IEOB_IRQ_CLR] = {
+	gsireg_construct_dummy, gsireg_parse_dummy,
+	0x000120c0, 0x4000, 0},
+	[GSI_VER_2_5][GSI_EE_n_CNTXT_GSI_IRQ_STTS] = {
+	gsireg_construct_dummy, gsireg_parse_dummy,
+	0x00012118, 0x4000, 0},
+	[GSI_VER_2_5][GSI_EE_n_CNTXT_GSI_IRQ_CLR] = {
+	gsireg_construct_dummy, gsireg_parse_dummy,
+	0x00012128, 0x4000, 0},
+	[GSI_VER_2_5][GSI_EE_n_GSI_HW_PARAM_2] = {
+	gsireg_construct_dummy, gsireg_parse_hw_param2_v2_2,
+	0x00012040, 0x4000, 0},
+	[GSI_VER_2_5][GSI_EE_n_GSI_SW_VERSION] = {
+	gsireg_construct_dummy, gsireg_parse_dummy,
+	0x00012044, 0x4000, 0 },
+	[GSI_VER_2_5][GSI_EE_n_CNTXT_INTSET] = {
+	gsireg_construct_dummy, gsireg_parse_dummy,
+	0x00012180, 0x4000, 0},
+	[GSI_VER_2_5][GSI_EE_n_CNTXT_MSI_BASE_LSB] = {
+	gsireg_construct_dummy, gsireg_parse_dummy,
+	0x00012188, 0x4000, 0},
+	[GSI_VER_2_5][GSI_EE_n_CNTXT_MSI_BASE_MSB] = {
+	gsireg_construct_dummy, gsireg_parse_dummy,
+	0x0001218c, 0x4000, 0},
+	[GSI_VER_2_5][GSI_EE_n_GSI_STATUS] = {
+	gsireg_construct_dummy, gsireg_parse_gsi_status,
+	0x00012000, 0x4000, 0},
+	[GSI_VER_2_5][GSI_EE_n_CNTXT_SCRATCH_0] = {
+	gsireg_construct_dummy, gsireg_parse_dummy,
+	0x00012400, 0x4000, 0},
+	[GSI_VER_2_5][GSI_EE_n_EV_CH_k_CNTXT_1] = {
+	gsireg_construct_ev_ch_k_cntxt_1, gsireg_parse_dummy,
+	0x00010004, 0x4000, 0x80},
+	[GSI_VER_2_5][GSI_EE_n_EV_CH_k_CNTXT_2] = {
+	gsireg_construct_ev_ch_k_cntxt_2, gsireg_parse_dummy,
+	0x00010008, 0x4000, 0x80 },
+	[GSI_VER_2_5][GSI_EE_n_EV_CH_k_CNTXT_3] = {
+	gsireg_construct_ev_ch_k_cntxt_3, gsireg_parse_dummy,
+	0x0001000c, 0x4000, 0x80 },
+	[GSI_VER_2_5][GSI_EE_n_EV_CH_k_CNTXT_8] = {
+	gsireg_construct_ev_ch_k_cntxt_8, gsireg_parse_dummy,
+	0x00010020, 0x4000, 0x80 },
+	[GSI_VER_2_5][GSI_EE_n_EV_CH_k_CNTXT_9] = {
+	gsireg_construct_ev_ch_k_cntxt_9, gsireg_parse_dummy,
+	0x00010024, 0x4000, 0x80 },
+	[GSI_VER_2_5][GSI_EE_n_EV_CH_k_CNTXT_10] = {
+	gsireg_construct_ev_ch_k_cntxt_10, gsireg_parse_dummy,
+	0x00010028, 0x4000, 0x80 },
+	[GSI_VER_2_5][GSI_EE_n_EV_CH_k_CNTXT_11] = {
+	gsireg_construct_ev_ch_k_cntxt_11, gsireg_parse_dummy,
+	0x0001002c, 0x4000, 0x80 },
+	[GSI_VER_2_5][GSI_EE_n_EV_CH_k_CNTXT_12] = {
+	gsireg_construct_ev_ch_k_cntxt_12, gsireg_parse_dummy,
+	0x00010030, 0x4000, 0x80 },
+	[GSI_VER_2_5][GSI_EE_n_EV_CH_k_CNTXT_13] = {
+	gsireg_construct_ev_ch_k_cntxt_13, gsireg_parse_dummy,
+	0x00010034, 0x4000, 0x80 },
+	[GSI_VER_2_5][GSI_EE_n_EV_CH_k_DOORBELL_1] = {
+	gsireg_construct_ev_ch_k_doorbell_1, gsireg_parse_dummy,
+	0x00011104, 0x4000, 0x8},
+	[GSI_VER_2_5][GSI_EE_n_EV_CH_CMD] = {
+	gsireg_construct_ee_n_ev_ch_cmd, gsireg_parse_dummy,
+	0x00012010, 0x4000, 0},
+	[GSI_VER_2_5][GSI_EE_n_EV_CH_k_SCRATCH_0] = {
+	gsireg_construct_dummy, gsireg_parse_dummy,
+	0x00010048, 0x4000, 0x80},
+	[GSI_VER_2_5][GSI_EE_n_EV_CH_k_SCRATCH_1] = {
+	gsireg_construct_dummy, gsireg_parse_dummy,
+	0x0001004c, 0x4000, 0x80},
+	[GSI_VER_2_5][GSI_EE_n_GSI_CH_k_DOORBELL_1] = {
+	gsireg_construct_dummy, gsireg_parse_dummy,
+	0x00011004, 0x4000, 0x8},
+	[GSI_VER_2_5][GSI_EE_n_GSI_CH_k_QOS] = {
+	gsireg_construct_ee_n_gsi_ch_k_qos_v2_5, gsireg_parse_dummy,
+	0x0000f05c, 0x4000, 0x80},
+	[GSI_VER_2_5][GSI_EE_n_GSI_CH_k_CNTXT_1] = {
+	gsireg_construct_ch_k_cntxt_1, gsireg_parse_dummy,
+	0x0000f004, 0x4000, 0x80},
+	[GSI_VER_2_5][GSI_EE_n_GSI_CH_k_CNTXT_2] = {
+	gsireg_construct_dummy, gsireg_parse_dummy,
+	0x0000f008, 0x4000, 0x80},
+	[GSI_VER_2_5][GSI_EE_n_GSI_CH_k_CNTXT_3] = {
+	gsireg_construct_dummy, gsireg_parse_dummy,
+	0x0000f00c, 0x4000, 0x80},
+	[GSI_VER_2_5][GSI_EE_n_GSI_CH_CMD] = {
+	gsireg_construct_ee_n_gsi_ch_cmd, gsireg_parse_dummy,
+	0x00012008, 0x4000, 0},
+	[GSI_VER_2_5][GSI_EE_n_GSI_CH_k_SCRATCH_0] = {
+	gsireg_construct_dummy, gsireg_parse_dummy,
+	0x0000f060, 0x4000, 0x80},
+	[GSI_VER_2_5][GSI_EE_n_GSI_CH_k_SCRATCH_1] = {
+	gsireg_construct_dummy, gsireg_parse_dummy,
+	0x0000f064, 0x4000, 0x80},
+	[GSI_VER_2_5][GSI_EE_n_GSI_CH_k_SCRATCH_2] = {
+	gsireg_construct_dummy, gsireg_parse_dummy,
+	0x0000f068, 0x4000, 0x80},
+	[GSI_VER_2_5][GSI_EE_n_GSI_CH_k_SCRATCH_3] = {
+	gsireg_construct_dummy, gsireg_parse_dummy,
+	0x0000f06c, 0x4000, 0x80},
+	[GSI_VER_2_5][GSI_EE_n_GSI_CH_k_CNTXT_4] = {
+	gsireg_construct_dummy, gsireg_parse_dummy,
+	0x0000f010, 0x4000, 0x80},
+	[GSI_VER_2_5][GSI_EE_n_GSI_CH_k_CNTXT_5] = {
+	gsireg_construct_dummy, gsireg_parse_dummy,
+	0x0000f014, 0x4000, 0x80},
+	[GSI_VER_2_5][GSI_EE_n_GSI_CH_k_CNTXT_6] = {
+	gsireg_construct_dummy, gsireg_parse_dummy,
+	0x0000f018, 0x4000, 0x80},
+	[GSI_VER_2_5][GSI_EE_n_GSI_CH_k_CNTXT_7] = {
+	gsireg_construct_dummy, gsireg_parse_dummy,
+	0x0000f01c, 0x4000, 0x80},
+	[GSI_VER_2_5][GSI_EE_n_EV_CH_k_CNTXT_4] = {
+	gsireg_construct_dummy, gsireg_parse_dummy,
+	0x00010010, 0x4000, 0x80},
+	[GSI_VER_2_5][GSI_EE_n_EV_CH_k_CNTXT_5] = {
+	gsireg_construct_dummy, gsireg_parse_dummy,
+	0x00010014, 0x4000, 0x80},
+	[GSI_VER_2_5][GSI_EE_n_EV_CH_k_CNTXT_6] = {
+	gsireg_construct_dummy, gsireg_parse_dummy,
+	0x00010018, 0x4000, 0x80},
+	[GSI_VER_2_5][GSI_EE_n_EV_CH_k_CNTXT_7] = {
+	gsireg_construct_dummy, gsireg_parse_dummy,
+	0x0001001c, 0x4000, 0x80},
+	[GSI_VER_2_5][GSI_GSI_IRAM_PTR_TLV_CH_NOT_FULL] = {
+	gsireg_construct_dummy, gsireg_parse_dummy,
+	0x00000408, 0, 0},
+	[GSI_VER_2_5][GSI_GSI_CFG] = {
+	gsireg_construct_gsi_cfg_v2_5, gsireg_parse_dummy,
+	0x00000000, 0, 0},
+	[GSI_VER_2_5][GSI_EE_n_GSI_EE_GENERIC_CMD] = {
+	gsireg_construct_gsi_ee_generic_cmd, gsireg_parse_dummy,
+	0x00012018, 0x4000, 0},
+	[GSI_VER_2_5][GSI_MAP_EE_n_CH_k_VP_TABLE] = {
+	gsireg_construct_dummy, gsireg_parse_dummy,
+	0x00003800, 0x80, 0x4 },
+	[GSI_VER_2_5][GSI_GSI_INST_RAM_n] = {
+	gsireg_construct_dummy, gsireg_parse_dummy,
+	0x0001b000, GSI_GSI_INST_RAM_n_WORD_SZ, 0},
+
+	/* GSIv2_9 */
+	[GSI_VER_2_9][GSI_EE_n_EV_CH_k_CNTXT_1] = {
+	gsireg_construct_ev_ch_k_cntxt_1_v2_9, gsireg_parse_dummy,
+	0x00010004, 0x4000, 0x80},
+	[GSI_VER_2_9][GSI_EE_n_GSI_CH_k_QOS] = {
+	gsireg_construct_ee_n_gsi_ch_k_qos_v2_9, gsireg_parse_dummy,
+	0x0000f05c, 0x4000, 0x80},
+	[GSI_VER_2_9][GSI_EE_n_GSI_CH_k_CNTXT_1] = {
+	gsireg_construct_ch_k_cntxt_1_v2_9, gsireg_parse_dummy,
+	0x0000f004, 0x4000, 0x80},
+
+	/* GSIv2_11 */
+	[GSI_VER_2_11][GSI_GSI_IRAM_PTR_MSI_DB] = {
+	gsireg_construct_dummy, gsireg_parse_dummy,
+	0x00000414, 0, 0 },
+};
+
+/*
+ * gsihal_read_reg_nk() - Get nk parameterized reg value
+ */
+u32 gsihal_read_reg_nk(enum gsihal_reg_name reg, u32 n, u32 k)
+{
+	u32 offset;
+
+	if (reg >= GSI_REG_MAX) {
+		GSIERR("Invalid register reg=%u\n", reg);
+		WARN_ON(1);
+		return -EINVAL;
+	}
+
+	GSIDBG_LOW("read %s k=%u n=%u\n",
+		gsihal_reg_name_str(reg), k, n);
+	offset = gsihal_reg_objs[gsihal_ctx->gsi_ver][reg].offset;
+	if (offset == -1) {
+		GSIERR("Read access to obsolete reg=%s\n",
+			gsihal_reg_name_str(reg));
+		WARN_ON_ONCE(1);
+		return -EPERM;
+	}
+
+	offset += gsihal_reg_objs[gsihal_ctx->gsi_ver][reg].k_ofst * k;
+	offset += gsihal_reg_objs[gsihal_ctx->gsi_ver][reg].n_ofst * n;
+	return gsi_readl(gsihal_ctx->base + offset);
+}
+
+/*
+* gsihal_write_reg_nk() - Write to n/k parameterized reg a raw value
+*/
+void gsihal_write_reg_nk(enum gsihal_reg_name reg, u32 n, u32 k, u32 val)
+{
+	u32 offset;
+
+	if (reg >= GSI_REG_MAX) {
+		GSIERR("Invalid register reg=%u\n", reg);
+		WARN_ON(1);
+		return;
+	}
+
+	GSIDBG_LOW("write to %s k=%u n=%u val=%u\n",
+		gsihal_reg_name_str(reg), k, n, val);
+	offset = gsihal_reg_objs[gsihal_ctx->gsi_ver][reg].offset;
+	if (offset == -1) {
+		GSIERR("Write access to obsolete reg=%s\n",
+			gsihal_reg_name_str(reg));
+		WARN_ON(1);
+		return;
+	}
+
+	offset += gsihal_reg_objs[gsihal_ctx->gsi_ver][reg].k_ofst * k;
+	offset += gsihal_reg_objs[gsihal_ctx->gsi_ver][reg].n_ofst * n;
+	gsi_writel(val, gsihal_ctx->base + offset);
+}
+
+/*
+ * gsihal_write_reg_fields() - Write to reg a prased value
+ */
+void gsihal_write_reg_fields(enum gsihal_reg_name reg, const void *fields)
+{
+	u32 val = 0;
+	u32 offset;
+
+	if (!fields) {
+		GSIERR("Input error fields=%pK\n", fields);
+		WARN_ON(1);
+		return;
+	}
+
+	if (reg >= GSI_REG_MAX) {
+		GSIERR("Invalid register reg=%u\n", reg);
+		WARN_ON(1);
+		return;
+	}
+
+	GSIDBG_LOW("write to %s after constructing it\n",
+		gsihal_reg_name_str(reg));
+	offset = gsihal_reg_objs[gsihal_ctx->gsi_ver][reg].offset;
+	if (offset == -1) {
+		GSIERR("Write access to obsolete reg=%s\n",
+			gsihal_reg_name_str(reg));
+		WARN_ON(1);
+		return;
+	}
+	gsihal_reg_objs[gsihal_ctx->gsi_ver][reg].construct(reg, fields, &val);
+
+	gsi_writel(val, gsihal_ctx->base + offset);
+}
+
+/*
+ * gsihal_read_reg_fields() - Get the parsed value of reg
+ */
+u32 gsihal_read_reg_fields(enum gsihal_reg_name reg, void *fields)
+{
+	u32 val = 0;
+	u32 offset;
+
+	if (!fields) {
+		GSIERR("Input error fields\n");
+		WARN_ON(1);
+		return -EINVAL;
+	}
+
+	if (reg >= GSI_REG_MAX) {
+		GSIERR("Invalid register reg=%u\n", reg);
+		WARN_ON(1);
+		return -EINVAL;
+	}
+
+	GSIDBG_LOW("read from %s and parse it\n",
+		gsihal_reg_name_str(reg));
+	offset = gsihal_reg_objs[gsihal_ctx->gsi_ver][reg].offset;
+	if (offset == -1) {
+		GSIERR("Read access to obsolete reg=%s\n",
+			gsihal_reg_name_str(reg));
+		WARN_ON(1);
+		return -EPERM;
+	}
+	val = gsi_readl(gsihal_ctx->base + offset);
+	gsihal_reg_objs[gsihal_ctx->gsi_ver][reg].parse(reg, fields, val);
+
+	return val;
+}
+
+/*
+ * gsihal_write_reg_n_fields() - Write to n parameterized reg a prased value
+ */
+void gsihal_write_reg_n_fields(enum gsihal_reg_name reg, u32 n,
+	const void *fields)
+{
+	u32 val = 0;
+	u32 offset;
+
+	if (!fields) {
+		GSIERR("Input error fields=%pK\n", fields);
+		WARN_ON(1);
+		return;
+	}
+
+	if (reg >= GSI_REG_MAX) {
+		GSIERR("Invalid register reg=%u\n", reg);
+		WARN_ON(1);
+		return;
+	}
+
+	GSIDBG_LOW("write to %s n=%u after constructing it\n",
+		gsihal_reg_name_str(reg), n);
+	offset = gsihal_reg_objs[gsihal_ctx->gsi_ver][reg].offset;
+	if (offset == -1) {
+		GSIERR("Write access to obsolete reg=%s\n",
+			gsihal_reg_name_str(reg));
+		WARN_ON(1);
+		return;
+	}
+	offset += gsihal_reg_objs[gsihal_ctx->gsi_ver][reg].n_ofst * n;
+	gsihal_reg_objs[gsihal_ctx->gsi_ver][reg].construct(reg, fields, &val);
+
+	gsi_writel(val, gsihal_ctx->base + offset);
+}
+
+/*
+ * gsihal_read_reg_n_fields() - Get the parsed value of n parameterized reg
+ */
+u32 gsihal_read_reg_n_fields(enum gsihal_reg_name reg, u32 n, void *fields)
+{
+	u32 val = 0;
+	u32 offset;
+
+	if (!fields) {
+		GSIERR("Input error fields\n");
+		WARN_ON(1);
+		return -EINVAL;
+	}
+
+	if (reg >= GSI_REG_MAX) {
+		GSIERR("Invalid register reg=%u\n", reg);
+		WARN_ON(1);
+		return -EINVAL;
+	}
+
+	GSIDBG_LOW("read from %s n=%u and parse it\n",
+		gsihal_reg_name_str(reg), n);
+	offset = gsihal_reg_objs[gsihal_ctx->gsi_ver][reg].offset;
+	if (offset == -1) {
+		GSIERR("Read access to obsolete reg=%s\n",
+			gsihal_reg_name_str(reg));
+		WARN_ON(1);
+		return -EPERM;
+	}
+	offset += gsihal_reg_objs[gsihal_ctx->gsi_ver][reg].n_ofst * n;
+	val = gsi_readl(gsihal_ctx->base + offset);
+	gsihal_reg_objs[gsihal_ctx->gsi_ver][reg].parse(reg, fields, val);
+
+	return val;
+}
+
+/*
+ * gsihal_read_reg_nk_fields() - Get the parsed value of nk parameterized reg
+ */
+u32 gsihal_read_reg_nk_fields(enum gsihal_reg_name reg,
+	u32 n, u32 k, void *fields)
+{
+	u32 val = 0;
+	u32 offset;
+
+	if (!fields) {
+		GSIERR("Input error fields\n");
+		WARN_ON(1);
+		return -EINVAL;
+	}
+
+	if (reg >= GSI_REG_MAX) {
+		GSIERR("Invalid register reg=%u\n", reg);
+		WARN_ON(1);
+		return -EINVAL;
+	}
+
+	GSIDBG_LOW("read from %s n=%u k= %u and parse it\n",
+		gsihal_reg_name_str(reg), n, k);
+	offset = gsihal_reg_objs[gsihal_ctx->gsi_ver][reg].offset;
+	if (offset == -1) {
+		GSIERR("Read access to obsolete reg=%s\n",
+			gsihal_reg_name_str(reg));
+		WARN_ON(1);
+		return -EPERM;
+	}
+	offset += gsihal_reg_objs[gsihal_ctx->gsi_ver][reg].n_ofst * n;
+	offset += gsihal_reg_objs[gsihal_ctx->gsi_ver][reg].k_ofst * k;
+	val = gsi_readl(gsihal_ctx->base + offset);
+	gsihal_reg_objs[gsihal_ctx->gsi_ver][reg].parse(reg, fields, val);
+
+	return val;
+}
+
+/*
+ * gsihal_write_reg_nk_fields() - Write to nk parameterized reg a prased value
+ */
+void gsihal_write_reg_nk_fields(enum gsihal_reg_name reg, u32 n, u32 k,
+	const void *fields)
+{
+	u32 val = 0;
+	u32 offset;
+
+	if (!fields) {
+		GSIERR("Input error fields=%pK\n", fields);
+		WARN_ON(1);
+		return;
+	}
+
+	if (reg >= GSI_REG_MAX) {
+		GSIERR("Invalid register reg=%u\n", reg);
+		WARN_ON(1);
+		return;
+	}
+
+	GSIDBG_LOW("write to %s n=%u after constructing it\n",
+		gsihal_reg_name_str(reg), n);
+	offset = gsihal_reg_objs[gsihal_ctx->gsi_ver][reg].offset;
+	if (offset == -1) {
+		GSIERR("Write access to obsolete reg=%s\n",
+			gsihal_reg_name_str(reg));
+		WARN_ON(1);
+		return;
+	}
+	offset += gsihal_reg_objs[gsihal_ctx->gsi_ver][reg].n_ofst * n;
+	offset += gsihal_reg_objs[gsihal_ctx->gsi_ver][reg].k_ofst * k;
+	gsihal_reg_objs[gsihal_ctx->gsi_ver][reg].construct(reg, fields, &val);
+
+	gsi_writel(val, gsihal_ctx->base + offset);
+}
+
+/*
+ * Get the offset of a nk parameterized register
+ */
+u32 gsihal_get_reg_nk_ofst(enum gsihal_reg_name reg, u32 n, u32 k)
+{
+	u32 offset;
+
+	if (reg >= GSI_REG_MAX) {
+		GSIERR("Invalid register reg=%u\n", reg);
+		WARN_ON(1);
+		return -EINVAL;
+	}
+
+	GSIDBG_LOW("get offset of %s k=%u n=%u\n",
+		gsihal_reg_name_str(reg), k, n);
+	offset = gsihal_reg_objs[gsihal_ctx->gsi_ver][reg].offset;
+	if (offset == -1) {
+		GSIERR("Access to obsolete reg=%s\n",
+			gsihal_reg_name_str(reg));
+		WARN_ON(1);
+		return -EPERM;
+	}
+
+	offset += gsihal_reg_objs[gsihal_ctx->gsi_ver][reg].n_ofst * n;
+	offset += gsihal_reg_objs[gsihal_ctx->gsi_ver][reg].k_ofst * k;
+
+	return offset;
+}
+
+
+/*
+ * Get GSI instruction ram MAX size
+ */
+unsigned long gsihal_get_inst_ram_size(void)
+{
+	unsigned long maxn;
+	unsigned long size;
+
+	switch (gsihal_ctx->gsi_ver) {
+	case GSI_VER_1_0:
+	case GSI_VER_1_2:
+	case GSI_VER_1_3:
+		maxn = GSI_GSI_INST_RAM_n_MAXn;
+		break;
+	case GSI_VER_2_0:
+		maxn = GSI_V2_0_GSI_INST_RAM_n_MAXn;
+		break;
+	case GSI_VER_2_2:
+		maxn = GSI_V2_2_GSI_INST_RAM_n_MAXn;
+		break;
+	case GSI_VER_2_5:
+		maxn = GSI_V2_5_GSI_INST_RAM_n_MAXn;
+		break;
+	case GSI_VER_2_7:
+		maxn = GSI_V2_7_GSI_INST_RAM_n_MAXn;
+		break;
+	case GSI_VER_2_9:
+		maxn = GSI_V2_9_GSI_INST_RAM_n_MAXn;
+		break;
+	case GSI_VER_ERR:
+	case GSI_VER_MAX:
+	default:
+		GSIERR("GSI version is not supported %d\n",
+			gsihal_ctx->gsi_ver);
+		WARN_ON(1);
+		return 0;
+	}
+	size = GSI_GSI_INST_RAM_n_WORD_SZ * (maxn + 1);
+
+	return size;
+}
+
+int gsihal_reg_init(enum gsi_ver gsi_ver)
+{
+	int i;
+	int j;
+	struct gsihal_reg_obj zero_obj;
+
+	GSIDBG_LOW("Entry - GSI ver = %d\n", gsi_ver);
+
+	if ((gsi_ver < GSI_VER_1_0) || (gsi_ver >= GSI_VER_MAX)) {
+		GSIERR("invalid GSI HW type (%d)\n", gsi_ver);
+		return -EINVAL;
+	}
+
+	memset(&zero_obj, 0, sizeof(zero_obj));
+	for (i = GSI_VER_1_0; i < gsi_ver; i++) {
+		for (j = 0; j < GSI_REG_MAX; j++) {
+			if (!memcmp(&gsihal_reg_objs[i + 1][j], &zero_obj,
+				sizeof(struct gsihal_reg_obj))) {
+				memcpy(&gsihal_reg_objs[i + 1][j],
+					&gsihal_reg_objs[i][j],
+					sizeof(struct gsihal_reg_obj));
+			} else {
+				/*
+				* explicitly overridden register.
+				* Check validity
+				*/
+				if (!gsihal_reg_objs[i + 1][j].offset) {
+					GSIERR(
+						"reg=%s with zero offset gsi_ver=%d\n",
+						gsihal_reg_name_str(j), i + 1);
+					WARN_ON(1);
+				}
+				if (!gsihal_reg_objs[i + 1][j].construct) {
+					GSIERR(
+						"reg=%s with NULL construct func gsi_ver=%d\n",
+						gsihal_reg_name_str(j), i + 1);
+					WARN_ON(1);
+				}
+				if (!gsihal_reg_objs[i + 1][j].parse) {
+					GSIERR(
+						"reg=%s with NULL parse func gsi_ver=%d\n",
+						gsihal_reg_name_str(j), i + 1);
+					WARN_ON(1);
+				}
+			}
+		}
+	}
+	return 0;
+}
+
+/*
+ * Get mask for GP_int1
+ */
+u32 gsihal_get_glob_irq_en_gp_int1_mask()
+{
+	return GSI_EE_n_CNTXT_GLOB_IRQ_EN_GP_INT1_BMSK;
+}

+ 406 - 0
drivers/platform/msm/gsi/gsihal/gsihal_reg.h

@@ -0,0 +1,406 @@
+/* SPDX-License-Identifier: GPL-2.0-only */
+/*
+* Copyright (c) 2030, The Linux Foundation. All rights reserved.
+*/
+
+#ifndef _GSIHAL_REG_H_
+#define _GSIHAL_REG_H_
+
+/*
+ * Registers names
+ *
+ * NOTE:: Any change to this enum, need to change to gsireg_name_to_str
+ *	array as well.
+ */
+enum gsihal_reg_name {
+	GSI_EE_n_CNTXT_TYPE_IRQ_MSK,
+	GSI_EE_n_CNTXT_SRC_GSI_CH_IRQ_MSK,
+	GSI_EE_n_CNTXT_SRC_EV_CH_IRQ_MSK,
+	GSI_EE_n_CNTXT_SRC_IEOB_IRQ_MSK,
+	GSI_EE_n_CNTXT_GLOB_IRQ_EN,
+	GSI_EE_n_CNTXT_GSI_IRQ_EN,
+	GSI_EE_n_CNTXT_TYPE_IRQ,
+	GSI_EE_n_CNTXT_SRC_GSI_CH_IRQ,
+	GSI_EE_n_GSI_CH_k_CNTXT_0,
+	GSI_EE_n_CNTXT_SRC_GSI_CH_IRQ_CLR,
+	GSI_EE_n_CNTXT_SRC_EV_CH_IRQ,
+	GSI_EE_n_CNTXT_SRC_EV_CH_IRQ_CLR,
+	GSI_EE_n_EV_CH_k_CNTXT_0,
+	GSI_EE_n_CNTXT_GLOB_IRQ_STTS,
+	GSI_EE_n_ERROR_LOG,
+	GSI_EE_n_ERROR_LOG_CLR,
+	GSI_EE_n_CNTXT_GLOB_IRQ_CLR,
+	GSI_EE_n_EV_CH_k_DOORBELL_0,
+	GSI_EE_n_GSI_CH_k_DOORBELL_0,
+	GSI_EE_n_CNTXT_SRC_IEOB_IRQ,
+	GSI_EE_n_CNTXT_SRC_IEOB_IRQ_CLR,
+	GSI_INTER_EE_n_SRC_GSI_CH_IRQ,
+	GSI_INTER_EE_n_SRC_GSI_CH_IRQ_CLR,
+	GSI_INTER_EE_n_SRC_EV_CH_IRQ,
+	GSI_INTER_EE_n_SRC_EV_CH_IRQ_CLR,
+	GSI_EE_n_CNTXT_GSI_IRQ_STTS,
+	GSI_EE_n_CNTXT_GSI_IRQ_CLR,
+	GSI_EE_n_GSI_HW_PARAM,
+	GSI_EE_n_GSI_HW_PARAM_0,
+	GSI_EE_n_GSI_HW_PARAM_2,
+	GSI_EE_n_GSI_SW_VERSION,
+	GSI_EE_n_CNTXT_INTSET,
+	GSI_EE_n_CNTXT_MSI_BASE_LSB,
+	GSI_EE_n_CNTXT_MSI_BASE_MSB,
+	GSI_EE_n_GSI_STATUS,
+	GSI_EE_n_CNTXT_SCRATCH_0,
+	GSI_EE_n_EV_CH_k_CNTXT_1,
+	GSI_EE_n_EV_CH_k_CNTXT_2,
+	GSI_EE_n_EV_CH_k_CNTXT_3,
+	GSI_EE_n_EV_CH_k_CNTXT_8,
+	GSI_EE_n_EV_CH_k_CNTXT_9,
+	GSI_EE_n_EV_CH_k_CNTXT_10,
+	GSI_EE_n_EV_CH_k_CNTXT_11,
+	GSI_EE_n_EV_CH_k_CNTXT_12,
+	GSI_EE_n_EV_CH_k_CNTXT_13,
+	GSI_EE_n_EV_CH_k_DOORBELL_1,
+	GSI_EE_n_EV_CH_CMD,
+	GSI_EE_n_EV_CH_k_SCRATCH_0,
+	GSI_EE_n_EV_CH_k_SCRATCH_1,
+	GSI_EE_n_GSI_CH_k_DOORBELL_1,
+	GSI_EE_n_GSI_CH_k_QOS,
+	GSI_EE_n_GSI_CH_k_CNTXT_1,
+	GSI_EE_n_GSI_CH_k_CNTXT_2,
+	GSI_EE_n_GSI_CH_k_CNTXT_3,
+	GSI_EE_n_GSI_CH_CMD,
+	GSI_EE_n_GSI_CH_k_SCRATCH_0,
+	GSI_EE_n_GSI_CH_k_SCRATCH_1,
+	GSI_EE_n_GSI_CH_k_SCRATCH_2,
+	GSI_EE_n_GSI_CH_k_SCRATCH_3,
+	GSI_EE_n_GSI_CH_k_CNTXT_4,
+	GSI_EE_n_GSI_CH_k_CNTXT_5,
+	GSI_EE_n_GSI_CH_k_CNTXT_6,
+	GSI_EE_n_GSI_CH_k_CNTXT_7,
+	GSI_EE_n_EV_CH_k_CNTXT_4,
+	GSI_EE_n_EV_CH_k_CNTXT_5,
+	GSI_EE_n_EV_CH_k_CNTXT_6,
+	GSI_EE_n_EV_CH_k_CNTXT_7,
+	GSI_GSI_IRAM_PTR_CH_CMD,
+	GSI_GSI_IRAM_PTR_CH_DB,
+	GSI_GSI_IRAM_PTR_CH_DIS_COMP,
+	GSI_GSI_IRAM_PTR_CH_EMPTY,
+	GSI_GSI_IRAM_PTR_EE_GENERIC_CMD,
+	GSI_GSI_IRAM_PTR_EVENT_GEN_COMP,
+	GSI_GSI_IRAM_PTR_INT_MOD_STOPPED,
+	GSI_GSI_IRAM_PTR_PERIPH_IF_TLV_IN_0,
+	GSI_GSI_IRAM_PTR_PERIPH_IF_TLV_IN_2,
+	GSI_GSI_IRAM_PTR_PERIPH_IF_TLV_IN_1,
+	GSI_GSI_IRAM_PTR_NEW_RE,
+	GSI_GSI_IRAM_PTR_READ_ENG_COMP,
+	GSI_GSI_IRAM_PTR_TIMER_EXPIRED,
+	GSI_GSI_IRAM_PTR_EV_DB,
+	GSI_GSI_IRAM_PTR_UC_GP_INT,
+	GSI_GSI_IRAM_PTR_WRITE_ENG_COMP,
+	GSI_GSI_IRAM_PTR_TLV_CH_NOT_FULL,
+	GSI_IC_DISABLE_CHNL_BCK_PRS_LSB,
+	GSI_IC_DISABLE_CHNL_BCK_PRS_MSB,
+	GSI_IC_GEN_EVNT_BCK_PRS_LSB,
+	GSI_IC_GEN_EVNT_BCK_PRS_MSB,
+	GSI_IC_GEN_INT_BCK_PRS_LSB,
+	GSI_IC_GEN_INT_BCK_PRS_MSB,
+	GSI_IC_STOP_INT_MOD_BCK_PRS_LSB,
+	GSI_IC_STOP_INT_MOD_BCK_PRS_MSB,
+	GSI_IC_PROCESS_DESC_BCK_PRS_LSB,
+	GSI_IC_PROCESS_DESC_BCK_PRS_MSB,
+	GSI_IC_TLV_STOP_BCK_PRS_LSB,
+	GSI_IC_TLV_STOP_BCK_PRS_MSB,
+	GSI_IC_TLV_RESET_BCK_PRS_LSB,
+	GSI_IC_TLV_RESET_BCK_PRS_MSB,
+	GSI_IC_RGSTR_TIMER_BCK_PRS_LSB,
+	GSI_IC_RGSTR_TIMER_BCK_PRS_MSB,
+	GSI_IC_READ_BCK_PRS_LSB,
+	GSI_IC_READ_BCK_PRS_MSB,
+	GSI_IC_WRITE_BCK_PRS_LSB,
+	GSI_IC_WRITE_BCK_PRS_MSB,
+	GSI_IC_UCONTROLLER_GPR_BCK_PRS_LSB,
+	GSI_IC_UCONTROLLER_GPR_BCK_PRS_MSB,
+	GSI_GSI_PERIPH_BASE_ADDR_MSB,
+	GSI_GSI_PERIPH_BASE_ADDR_LSB,
+	GSI_GSI_MCS_CFG,
+	GSI_GSI_CFG,
+	GSI_EE_n_GSI_EE_GENERIC_CMD,
+	GSI_MAP_EE_n_CH_k_VP_TABLE,
+	GSI_EE_n_GSI_CH_k_RE_FETCH_READ_PTR,
+	GSI_EE_n_GSI_CH_k_RE_FETCH_WRITE_PTR,
+	GSI_GSI_INST_RAM_n,
+	GSI_GSI_IRAM_PTR_MSI_DB,
+	GSI_REG_MAX
+};
+
+struct gsihal_reg_ctx_type_irq {
+	uint32_t general;
+	uint32_t inter_ee_ev_ctrl;
+	uint32_t inter_ee_ch_ctrl;
+	uint32_t ieob;
+	uint32_t glob_ee;
+	uint32_t ev_ctrl;
+	uint32_t ch_ctrl;
+};
+
+struct gsihal_reg_ch_k_cntxt_0 {
+	uint32_t element_size;
+	uint32_t chstate;
+	uint32_t erindex;
+	uint32_t chtype_protocol_msb;
+	uint32_t chid;
+	uint32_t ee;
+	uint32_t chtype_dir;
+	uint32_t chtype_protocol;
+};
+
+struct gsihal_reg_cntxt_glob_irq_stts {
+	uint8_t gp_int3;
+	uint8_t gp_int2;
+	uint8_t gp_int1;
+	uint8_t error_int;
+};
+
+struct gsihal_reg_cntxt_gsi_irq_stts {
+	uint8_t gsi_mcs_stack_ovrflow;
+	uint8_t gsi_cmd_fifo_ovrflow;
+	uint8_t gsi_bus_error;
+	uint8_t gsi_break_point;
+};
+
+struct gsihal_reg_hw_param {
+	uint32_t periph_sec_grp;
+	uint32_t use_axi_m;
+	uint32_t periph_conf_addr_bus_w;
+	uint32_t num_ees;
+	uint32_t gsi_ch_num;
+	uint32_t gsi_ev_ch_num;
+};
+
+struct gsihal_reg_hw_param2 {
+	uint32_t gsi_use_inter_ee;
+	uint32_t gsi_use_rd_wr_eng;
+	uint32_t gsi_sdma_n_iovec;
+	uint32_t gsi_sdma_max_burst;
+	uint32_t gsi_sdma_n_int;
+	uint32_t gsi_use_sdma;
+	uint32_t gsi_ch_full_logic;
+	uint32_t gsi_ch_pend_translate;
+	uint32_t gsi_num_ev_per_ee;
+	uint32_t gsi_num_ch_per_ee;
+	uint32_t gsi_iram_size;
+};
+
+struct gsihal_reg_gsi_status {
+	uint8_t enabled;
+};
+
+struct gsihal_reg_ev_ch_k_cntxt_0 {
+	uint32_t element_size;
+	uint32_t chstate;
+	uint32_t intype;
+	uint32_t evchid;
+	uint32_t ee;
+	uint32_t chtype;
+
+};
+struct gsihal_reg_ev_ch_k_cntxt_1 {
+	uint32_t r_length;
+};
+
+struct gsihal_reg_ev_ch_k_cntxt_2 {
+	uint32_t r_base_addr_lsbs;
+};
+
+struct gsihal_reg_ev_ch_k_cntxt_3 {
+	uint32_t r_base_addr_msbs;
+};
+
+struct gsihal_reg_ev_ch_k_cntxt_8 {
+	uint32_t int_mod_cnt;
+	uint32_t int_modc;
+	uint32_t int_modt;
+};
+
+struct gsihal_reg_ev_ch_k_cntxt_9 {
+	uint32_t intvec;
+};
+
+struct gsihal_reg_ev_ch_k_cntxt_10 {
+	uint32_t msi_addr_lsb;
+};
+
+struct gsihal_reg_ev_ch_k_cntxt_11 {
+	uint32_t msi_addr_msb;
+};
+
+struct gsihal_reg_ev_ch_k_cntxt_12 {
+	uint32_t rp_update_addr_lsb;
+};
+
+struct gsihal_reg_ev_ch_k_cntxt_13 {
+	uint32_t rp_update_addr_msb;
+};
+
+struct gsihal_reg_gsi_ee_n_ev_ch_k_doorbell_1 {
+	uint32_t write_ptr_msb;
+};
+
+struct gsihal_reg_ee_n_ev_ch_cmd {
+	uint32_t opcode;
+	uint32_t chid;
+};
+
+struct gsihal_reg_ee_n_gsi_ch_cmd {
+	uint32_t opcode;
+	uint32_t chid;
+};
+
+struct gsihal_reg_gsi_ee_n_gsi_ch_k_qos {
+	uint32_t db_in_bytes; //2.9
+	uint32_t empty_lvl_thrshold;
+	uint32_t prefetch_mode;
+	uint32_t use_escape_buf_only; //stringray
+	uint32_t use_db_eng; //mclaren
+	uint32_t max_prefetch;
+	uint32_t wrr_weight;
+};
+
+struct gsihal_reg_ch_k_cntxt_1 {
+	uint32_t r_length;
+};
+
+struct gsihal_reg_gsi_cfg {
+	uint32_t sleep_clk_div;
+	uint32_t bp_mtrix_disable;
+	uint32_t gsi_pwr_clps;
+	uint32_t uc_is_mcs;
+	uint32_t double_mcs_clk_freq;
+	uint32_t mcs_enable;
+	uint32_t gsi_enable;
+};
+
+struct gsihal_reg_gsi_ee_generic_cmd {
+	uint32_t opcode;
+	uint32_t virt_chan_idx;
+	uint32_t ee;
+};
+
+struct gsihal_reg_gsi_ee_n_cntxt_gsi_irq {
+	uint8_t gsi_mcs_stack_ovrflow;
+	uint8_t gsi_cmd_fifo_ovrflow;
+	uint8_t gsi_bus_error;
+	uint8_t gsi_break_point;
+};
+
+/*
+ * gsihal_reg_init() - intialize gsihal regsiters module
+ */
+int gsihal_reg_init(enum gsi_ver gsi_ver);
+
+/*
+ * gsihal_read_reg_nk() - Get nk parameterized reg value
+ */
+u32 gsihal_read_reg_nk(enum gsihal_reg_name reg, u32 n, u32 k);
+
+/*
+ * gsihal_read_reg_n() - Get n parameterized reg value
+ */
+static inline u32 gsihal_read_reg_n(enum gsihal_reg_name reg, u32 n)
+{
+	return gsihal_read_reg_nk(reg, n, 0);
+}
+
+/*
+ * gsihal_read_reg() - Get reg value
+ */
+static inline u32 gsihal_read_reg(enum gsihal_reg_name reg)
+{
+	return gsihal_read_reg_nk(reg, 0, 0);
+}
+
+/*
+ * gsihal_write_reg_nk() - Write to n/k parameterized reg a raw value
+ */
+void gsihal_write_reg_nk(enum gsihal_reg_name reg, u32 n, u32 k, u32 val);
+
+/*
+ * gsihal_write_reg_n() - Write to n parameterized reg a raw value
+ */
+static inline void gsihal_write_reg_n(enum gsihal_reg_name reg, u32 n, u32 val)
+{
+	gsihal_write_reg_nk(reg, n, 0, val);
+}
+
+/*
+ * gsihal_write_reg() - Write to reg a raw value
+ */
+static inline void gsihal_write_reg(enum gsihal_reg_name reg, u32 val)
+{
+	gsihal_write_reg_nk(reg, 0, 0, val);
+}
+
+/*
+ * gsihal_read_reg_nk_fields() - Get the parsed value of nk parameterized reg
+ */
+u32 gsihal_read_reg_nk_fields(enum gsihal_reg_name reg,
+	u32 n, u32 k, void *fields);
+
+/*
+ * gsihal_write_reg_nk_fields() - Write to nk parameterized reg a prased value
+ */
+void gsihal_write_reg_nk_fields(enum gsihal_reg_name reg, u32 n, u32 k,
+	const void *fields);
+
+/*
+* gsihal_read_reg_n_fields() - Get the parsed value of n parameterized reg
+*/
+u32 gsihal_read_reg_n_fields(enum gsihal_reg_name reg, u32 n, void *fields);
+
+/*
+ * gsihal_write_reg_n_fields() - Write to n parameterized reg a prased value
+ */
+void gsihal_write_reg_n_fields(enum gsihal_reg_name reg, u32 n,
+	const void *fields);
+
+/*
+ * gsihal_write_reg_fields() - Write to reg a prased value
+ */
+void gsihal_write_reg_fields(enum gsihal_reg_name reg, const void *fields);
+
+/*
+ * gsihal_read_reg_fields() - Get the parsed value of reg
+ */
+u32 gsihal_read_reg_fields(enum gsihal_reg_name reg, void *fields);
+
+/*
+ * Get the offset of a nk parameterized register
+ */
+u32 gsihal_get_reg_nk_ofst(enum gsihal_reg_name reg, u32 n, u32 k);
+
+/*
+ * Get the offset of a n parameterized register
+ */
+static inline u32 gsihal_get_reg_n_ofst(enum gsihal_reg_name reg, u32 n)
+{
+	return gsihal_get_reg_nk_ofst(reg, n, 0);
+}
+
+/*
+ * Get the offset of a register
+ */
+static inline u32 gsihal_get_reg_ofst(enum gsihal_reg_name reg)
+{
+	return gsihal_get_reg_nk_ofst(reg, 0, 0);
+}
+
+/*
+ * Get GSI instruction ram MAX size
+ */
+unsigned long gsihal_get_inst_ram_size(void);
+
+/*
+ * Get mask for GP_int1
+ */
+u32 gsihal_get_glob_irq_en_gp_int1_mask(void);
+
+#endif /* _GSIHAL_REG_H_ */

+ 298 - 0
drivers/platform/msm/gsi/gsihal/gsihal_reg_i.h

@@ -0,0 +1,298 @@
+/* SPDX-License-Identifier: GPL-2.0-only */
+/*
+* Copyright (c) 2020, The Linux Foundation. All rights reserved.
+*/
+
+#ifndef _GSIHAL_REG_I_H_
+#define _GSIHAL_REG_I_H_
+
+#define GSI_SETFIELD(val, shift, mask) (((val) << (shift)) & (mask))
+#define GSI_SETFIELD_IN_REG(reg, val, shift, mask) \
+			(reg |= ((val) << (shift)) & (mask))
+#define GSI_GETFIELD_FROM_REG(reg, shift, mask) \
+		(((reg) & (mask)) >> (shift))
+
+/* GSI_GSI_INST_RAM_n */
+#define GSI_GSI_INST_RAM_n_WORD_SZ 0x4
+
+#define GSI_GSI_INST_RAM_n_MAXn 4095
+#define GSI_V2_0_GSI_INST_RAM_n_MAXn 6143
+#define GSI_V2_2_GSI_INST_RAM_n_MAXn 4095
+#define GSI_V2_5_GSI_INST_RAM_n_MAXn 8191
+#define GSI_V2_7_GSI_INST_RAM_n_MAXn 5119
+#define GSI_V2_9_GSI_INST_RAM_n_MAXn 6143
+
+/* GSI_EE_n_CNTXT_TYPE_IRQ */
+#define GSI_EE_n_CNTXT_TYPE_IRQ_GENERAL_BMSK 0x40
+#define GSI_EE_n_CNTXT_TYPE_IRQ_GENERAL_SHFT 0x6
+#define GSI_EE_n_CNTXT_TYPE_IRQ_INTER_EE_EV_CTRL_BMSK 0x20
+#define GSI_EE_n_CNTXT_TYPE_IRQ_INTER_EE_EV_CTRL_SHFT 0x5
+#define GSI_EE_n_CNTXT_TYPE_IRQ_INTER_EE_CH_CTRL_BMSK 0x10
+#define GSI_EE_n_CNTXT_TYPE_IRQ_INTER_EE_CH_CTRL_SHFT 0x4
+#define GSI_EE_n_CNTXT_TYPE_IRQ_IEOB_BMSK 0x8
+#define GSI_EE_n_CNTXT_TYPE_IRQ_IEOB_SHFT 0x3
+#define GSI_EE_n_CNTXT_TYPE_IRQ_GLOB_EE_BMSK 0x4
+#define GSI_EE_n_CNTXT_TYPE_IRQ_GLOB_EE_SHFT 0x2
+#define GSI_EE_n_CNTXT_TYPE_IRQ_EV_CTRL_BMSK 0x2
+#define GSI_EE_n_CNTXT_TYPE_IRQ_EV_CTRL_SHFT 0x1
+#define GSI_EE_n_CNTXT_TYPE_IRQ_CH_CTRL_BMSK 0x1
+#define GSI_EE_n_CNTXT_TYPE_IRQ_CH_CTRL_SHFT 0x0
+
+/* GSI_EE_n_GSI_CH_k_CNTXT_0 */
+#define GSI_EE_n_GSI_CH_k_CNTXT_0_ELEMENT_SIZE_BMSK 0xff000000
+#define GSI_EE_n_GSI_CH_k_CNTXT_0_ELEMENT_SIZE_SHFT 0x18
+#define GSI_EE_n_GSI_CH_k_CNTXT_0_CHSTATE_BMSK 0xf00000
+#define GSI_EE_n_GSI_CH_k_CNTXT_0_CHSTATE_SHFT 0x14
+#define GSI_EE_n_GSI_CH_k_CNTXT_0_ERINDEX_BMSK 0x7c000
+#define GSI_EE_n_GSI_CH_k_CNTXT_0_ERINDEX_SHFT 0xe
+#define GSI_EE_n_GSI_CH_k_CNTXT_0_CHID_BMSK 0x1f00
+#define GSI_EE_n_GSI_CH_k_CNTXT_0_CHID_SHFT 0x8
+#define GSI_EE_n_GSI_CH_k_CNTXT_0_EE_BMSK 0xf0
+#define GSI_EE_n_GSI_CH_k_CNTXT_0_EE_SHFT 0x4
+#define GSI_EE_n_GSI_CH_k_CNTXT_0_CHTYPE_DIR_BMSK 0x8
+#define GSI_EE_n_GSI_CH_k_CNTXT_0_CHTYPE_DIR_SHFT 0x3
+#define GSI_EE_n_GSI_CH_k_CNTXT_0_CHTYPE_PROTOCOL_BMSK 0x7
+#define GSI_EE_n_GSI_CH_k_CNTXT_0_CHTYPE_PROTOCOL_SHFT 0x0
+
+#define GSI_V2_5_EE_n_GSI_CH_k_CNTXT_0_CHTYPE_PROTOCOL_MSB_BMSK 0x2000
+#define GSI_V2_5_EE_n_GSI_CH_k_CNTXT_0_CHTYPE_PROTOCOL_MSB_SHFT 0xd
+
+/* GSI_EE_n_EV_CH_k_CNTXT_0 */
+#define GSI_EE_n_EV_CH_k_CNTXT_0_ELEMENT_SIZE_BMSK 0xff000000
+#define GSI_EE_n_EV_CH_k_CNTXT_0_ELEMENT_SIZE_SHFT 0x18
+#define GSI_EE_n_EV_CH_k_CNTXT_0_CHSTATE_BMSK 0xf00000
+#define GSI_EE_n_EV_CH_k_CNTXT_0_CHSTATE_SHFT 0x14
+#define GSI_EE_n_EV_CH_k_CNTXT_0_INTYPE_BMSK 0x10000
+#define GSI_EE_n_EV_CH_k_CNTXT_0_INTYPE_SHFT 0x10
+#define GSI_EE_n_EV_CH_k_CNTXT_0_EVCHID_BMSK 0xff00
+#define GSI_EE_n_EV_CH_k_CNTXT_0_EVCHID_SHFT 0x8
+#define GSI_EE_n_EV_CH_k_CNTXT_0_EE_BMSK 0xf0
+#define GSI_EE_n_EV_CH_k_CNTXT_0_EE_SHFT 0x4
+#define GSI_EE_n_EV_CH_k_CNTXT_0_CHTYPE_BMSK 0xf
+#define GSI_EE_n_EV_CH_k_CNTXT_0_CHTYPE_SHFT 0x0
+
+/* GSI_EE_n_CNTXT_GLOB_IRQ_STTS */
+#define GSI_EE_n_CNTXT_GLOB_IRQ_STTS_GP_INT3_BMSK 0x8
+#define GSI_EE_n_CNTXT_GLOB_IRQ_STTS_GP_INT3_SHFT 0x3
+#define GSI_EE_n_CNTXT_GLOB_IRQ_STTS_GP_INT2_BMSK 0x4
+#define GSI_EE_n_CNTXT_GLOB_IRQ_STTS_GP_INT2_SHFT 0x2
+#define GSI_EE_n_CNTXT_GLOB_IRQ_STTS_GP_INT1_BMSK 0x2
+#define GSI_EE_n_CNTXT_GLOB_IRQ_STTS_GP_INT1_SHFT 0x1
+#define GSI_EE_n_CNTXT_GLOB_IRQ_STTS_ERROR_INT_BMSK 0x1
+#define GSI_EE_n_CNTXT_GLOB_IRQ_STTS_ERROR_INT_SHFT 0x0
+
+/* GSI_EE_n_CNTXT_GLOB_IRQ_EN */
+#define GSI_EE_n_CNTXT_GLOB_IRQ_EN_GP_INT3_BMSK 0x8
+#define GSI_EE_n_CNTXT_GLOB_IRQ_EN_GP_INT3_SHFT 0x3
+#define GSI_EE_n_CNTXT_GLOB_IRQ_EN_GP_INT2_BMSK 0x4
+#define GSI_EE_n_CNTXT_GLOB_IRQ_EN_GP_INT2_SHFT 0x2
+#define GSI_EE_n_CNTXT_GLOB_IRQ_EN_GP_INT1_BMSK 0x2
+#define GSI_EE_n_CNTXT_GLOB_IRQ_EN_GP_INT1_SHFT 0x1
+#define GSI_EE_n_CNTXT_GLOB_IRQ_EN_ERROR_INT_BMSK 0x1
+#define GSI_EE_n_CNTXT_GLOB_IRQ_EN_ERROR_INT_SHFT 0x0
+
+/* GSI_EE_n_CNTXT_GSI_IRQ_STTS */
+#define GSI_EE_n_CNTXT_GSI_IRQ_STTS_GSI_MCS_STACK_OVRFLOW_BMSK 0x8
+#define GSI_EE_n_CNTXT_GSI_IRQ_STTS_GSI_MCS_STACK_OVRFLOW_SHFT 0x3
+#define GSI_EE_n_CNTXT_GSI_IRQ_STTS_GSI_CMD_FIFO_OVRFLOW_BMSK 0x4
+#define GSI_EE_n_CNTXT_GSI_IRQ_STTS_GSI_CMD_FIFO_OVRFLOW_SHFT 0x2
+#define GSI_EE_n_CNTXT_GSI_IRQ_STTS_GSI_BUS_ERROR_BMSK 0x2
+#define GSI_EE_n_CNTXT_GSI_IRQ_STTS_GSI_BUS_ERROR_SHFT 0x1
+#define GSI_EE_n_CNTXT_GSI_IRQ_STTS_GSI_BREAK_POINT_BMSK 0x1
+#define GSI_EE_n_CNTXT_GSI_IRQ_STTS_GSI_BREAK_POINT_SHFT 0x0
+
+/* GSI_EE_n_CNTXT_TYPE_IRQ */
+#define GSI_EE_n_CNTXT_TYPE_IRQ_GENERAL_BMSK 0x40
+#define GSI_EE_n_CNTXT_TYPE_IRQ_GENERAL_SHFT 0x6
+#define GSI_EE_n_CNTXT_TYPE_IRQ_INTER_EE_EV_CTRL_BMSK 0x20
+#define GSI_EE_n_CNTXT_TYPE_IRQ_INTER_EE_EV_CTRL_SHFT 0x5
+#define GSI_EE_n_CNTXT_TYPE_IRQ_INTER_EE_CH_CTRL_BMSK 0x10
+#define GSI_EE_n_CNTXT_TYPE_IRQ_INTER_EE_CH_CTRL_SHFT 0x4
+#define GSI_EE_n_CNTXT_TYPE_IRQ_IEOB_BMSK 0x8
+#define GSI_EE_n_CNTXT_TYPE_IRQ_IEOB_SHFT 0x3
+#define GSI_EE_n_CNTXT_TYPE_IRQ_GLOB_EE_BMSK 0x4
+#define GSI_EE_n_CNTXT_TYPE_IRQ_GLOB_EE_SHFT 0x2
+#define GSI_EE_n_CNTXT_TYPE_IRQ_EV_CTRL_BMSK 0x2
+#define GSI_EE_n_CNTXT_TYPE_IRQ_EV_CTRL_SHFT 0x1
+#define GSI_EE_n_CNTXT_TYPE_IRQ_CH_CTRL_BMSK 0x1
+#define GSI_EE_n_CNTXT_TYPE_IRQ_CH_CTRL_SHFT 0x0
+
+/* GSI_EE_n_GSI_HW_PARAM */
+#define GSI_V1_0_EE_n_GSI_HW_PARAM_PERIPH_SEC_GRP_BMSK 0x7c000000
+#define GSI_V1_0_EE_n_GSI_HW_PARAM_PERIPH_SEC_GRP_SHFT 0x1a
+#define GSI_V1_0_EE_n_GSI_HW_PARAM_USE_AXI_M_BMSK 0x2000000
+#define GSI_V1_0_EE_n_GSI_HW_PARAM_USE_AXI_M_SHFT 0x19
+#define GSI_V1_0_EE_n_GSI_HW_PARAM_PERIPH_CONF_ADDR_BUS_W_BMSK 0x1f00000
+#define GSI_V1_0_EE_n_GSI_HW_PARAM_PERIPH_CONF_ADDR_BUS_W_SHFT 0x14
+#define GSI_V1_0_EE_n_GSI_HW_PARAM_NUM_EES_BMSK 0xf0000
+#define GSI_V1_0_EE_n_GSI_HW_PARAM_NUM_EES_SHFT 0x10
+#define GSI_V1_0_EE_n_GSI_HW_PARAM_GSI_CH_NUM_BMSK 0xff00
+#define GSI_V1_0_EE_n_GSI_HW_PARAM_GSI_CH_NUM_SHFT 0x8
+#define GSI_V1_0_EE_n_GSI_HW_PARAM_GSI_EV_CH_NUM_BMSK 0xff
+#define GSI_V1_0_EE_n_GSI_HW_PARAM_GSI_EV_CH_NUM_SHFT 0x0
+
+/* GSI_EE_n_GSI_HW_PARAM_0 */
+#define GSI_V1_2_EE_n_GSI_HW_PARAM_0_USE_AXI_M_BMSK 0x80000000
+#define GSI_V1_2_EE_n_GSI_HW_PARAM_0_USE_AXI_M_SHFT 0x1f
+#define GSI_V1_2_EE_n_GSI_HW_PARAM_0_PERIPH_SEC_GRP_BMSK 0x7c000000
+#define GSI_V1_2_EE_n_GSI_HW_PARAM_0_PERIPH_SEC_GRP_SHFT 0x1a
+#define GSI_V1_2_EE_n_GSI_HW_PARAM_0_PERIPH_CONF_ADDR_BUS_W_BMSK 0x3e00000
+#define GSI_V1_2_EE_n_GSI_HW_PARAM_0_PERIPH_CONF_ADDR_BUS_W_SHFT 0x15
+#define GSI_V1_2_EE_n_GSI_HW_PARAM_0_NUM_EES_BMSK 0x1f0000
+#define GSI_V1_2_EE_n_GSI_HW_PARAM_0_NUM_EES_SHFT 0x10
+#define GSI_V1_2_EE_n_GSI_HW_PARAM_0_GSI_CH_NUM_BMSK 0xff00
+#define GSI_V1_2_EE_n_GSI_HW_PARAM_0_GSI_CH_NUM_SHFT 0x8
+#define GSI_V1_2_EE_n_GSI_HW_PARAM_0_GSI_EV_CH_NUM_BMSK 0xff
+#define GSI_V1_2_EE_n_GSI_HW_PARAM_0_GSI_EV_CH_NUM_SHFT 0x0
+
+/* GSI_EE_n_GSI_HW_PARAM_2 */
+#define GSI_V1_3_EE_n_GSI_HW_PARAM_2_GSI_CH_FULL_LOGIC_BMSK 0x4000
+#define GSI_V1_3_EE_n_GSI_HW_PARAM_2_GSI_CH_FULL_LOGIC_SHFT 0xe
+#define GSI_V1_3_EE_n_GSI_HW_PARAM_2_GSI_CH_PEND_TRANSLATE_BMSK 0x2000
+#define GSI_V1_3_EE_n_GSI_HW_PARAM_2_GSI_CH_PEND_TRANSLATE_SHFT 0xd
+#define GSI_V1_3_EE_n_GSI_HW_PARAM_2_GSI_NUM_EV_PER_EE_BMSK 0x1f00
+#define GSI_V1_3_EE_n_GSI_HW_PARAM_2_GSI_NUM_EV_PER_EE_SHFT 0x8
+#define GSI_V1_3_EE_n_GSI_HW_PARAM_2_GSI_NUM_CH_PER_EE_BMSK 0xf8
+#define GSI_V1_3_EE_n_GSI_HW_PARAM_2_GSI_NUM_CH_PER_EE_SHFT 0x3
+#define GSI_V1_3_EE_n_GSI_HW_PARAM_2_GSI_IRAM_SIZE_BMSK 0x7
+#define GSI_V1_3_EE_n_GSI_HW_PARAM_2_GSI_IRAM_SIZE_SHFT 0x0
+
+#define GSI_V2_0_EE_n_GSI_HW_PARAM_2_GSI_SDMA_N_IOVEC_BMSK 0x38000000
+#define GSI_V2_0_EE_n_GSI_HW_PARAM_2_GSI_SDMA_N_IOVEC_SHFT 0x1b
+#define GSI_V2_0_EE_n_GSI_HW_PARAM_2_GSI_SDMA_MAX_BURST_BMSK 0x7F80000
+#define GSI_V2_0_EE_n_GSI_HW_PARAM_2_GSI_SDMA_MAX_BURST_SHFT 0x13
+#define GSI_V2_0_EE_n_GSI_HW_PARAM_2_GSI_SDMA_N_INT_BMSK 0x70000
+#define GSI_V2_0_EE_n_GSI_HW_PARAM_2_GSI_SDMA_N_INT_SHFT 0x10
+#define GSI_V2_0_EE_n_GSI_HW_PARAM_2_GSI_USE_SDMA_BMSK 0x8000
+#define GSI_V2_0_EE_n_GSI_HW_PARAM_2_GSI_USE_SDMA_SHFT 0xf
+
+#define GSI_V2_2_EE_n_GSI_HW_PARAM_2_GSI_USE_INTER_EE_BMSK 0x80000000
+#define GSI_V2_2_EE_n_GSI_HW_PARAM_2_GSI_USE_INTER_EE_SHFT 0x1f
+#define GSI_V2_2_EE_n_GSI_HW_PARAM_2_GSI_USE_RD_WR_ENG_BMSK 0x40000000
+#define GSI_V2_2_EE_n_GSI_HW_PARAM_2_GSI_USE_RD_WR_ENG_SHFT 0x1E
+
+/* GSI_EE_n_GSI_STATUS */
+#define GSI_EE_n_GSI_STATUS_ENABLED_BMSK 0x1
+#define GSI_EE_n_GSI_STATUS_ENABLED_SHFT 0x0
+
+/* GSI_EE_n_EV_CH_k_CNTXT_1 */
+#define GSI_EE_n_EV_CH_k_CNTXT_1_R_LENGTH_BMSK 0xffff
+#define GSI_EE_n_EV_CH_k_CNTXT_1_R_LENGTH_SHFT 0x0
+
+#define GSI_V2_9_EE_n_EV_CH_k_CNTXT_1_R_LENGTH_BMSK 0xfffff
+#define GSI_V2_9_EE_n_EV_CH_k_CNTXT_1_R_LENGTH_SHFT 0x0
+
+/* GSI_EE_n_EV_CH_k_CNTXT_2 */
+#define GSI_EE_n_EV_CH_k_CNTXT_2_R_BASE_ADDR_LSBS_BMSK 0xffffffff
+#define GSI_EE_n_EV_CH_k_CNTXT_2_R_BASE_ADDR_LSBS_SHFT 0x0
+
+/* GSI_EE_n_EV_CH_k_CNTXT_3 */
+#define GSI_EE_n_EV_CH_k_CNTXT_3_R_BASE_ADDR_MSBS_BMSK 0xffffffff
+#define GSI_EE_n_EV_CH_k_CNTXT_3_R_BASE_ADDR_MSBS_SHFT 0x0
+
+/* GSI_EE_n_EV_CH_k_CNTXT_8 */
+#define GSI_EE_n_EV_CH_k_CNTXT_8_INT_MOD_CNT_BMSK 0xff000000
+#define GSI_EE_n_EV_CH_k_CNTXT_8_INT_MOD_CNT_SHFT 0x18
+#define GSI_EE_n_EV_CH_k_CNTXT_8_INT_MODC_BMSK 0xff0000
+#define GSI_EE_n_EV_CH_k_CNTXT_8_INT_MODC_SHFT 0x10
+#define GSI_EE_n_EV_CH_k_CNTXT_8_INT_MODT_BMSK 0xffff
+#define GSI_EE_n_EV_CH_k_CNTXT_8_INT_MODT_SHFT 0x0
+
+/* GSI_EE_n_EV_CH_k_CNTXT_9 */
+#define GSI_EE_n_EV_CH_k_CNTXT_9_INTVEC_BMSK 0xffffffff
+#define GSI_EE_n_EV_CH_k_CNTXT_9_INTVEC_SHFT 0x0
+
+/* GSI_EE_n_EV_CH_k_CNTXT_10 */
+#define GSI_EE_n_EV_CH_k_CNTXT_10_MSI_ADDR_LSB_BMSK 0xffffffff
+#define GSI_EE_n_EV_CH_k_CNTXT_10_MSI_ADDR_LSB_SHFT 0x0
+
+/* GSI_EE_n_EV_CH_k_CNTXT_11 */
+#define GSI_EE_n_EV_CH_k_CNTXT_11_MSI_ADDR_MSB_BMSK 0xffffffff
+#define GSI_EE_n_EV_CH_k_CNTXT_11_MSI_ADDR_MSB_SHFT 0x0
+
+/* GSI_EE_n_EV_CH_k_CNTXT_12 */
+#define GSI_EE_n_EV_CH_k_CNTXT_12_RP_UPDATE_ADDR_LSB_BMSK 0xffffffff
+#define GSI_EE_n_EV_CH_k_CNTXT_12_RP_UPDATE_ADDR_LSB_SHFT 0x0
+
+/* GSI_EE_n_EV_CH_k_CNTXT_13 */
+#define GSI_EE_n_EV_CH_k_CNTXT_13_RP_UPDATE_ADDR_MSB_BMSK 0xffffffff
+#define GSI_EE_n_EV_CH_k_CNTXT_13_RP_UPDATE_ADDR_MSB_SHFT 0x0
+
+/* GSI_EE_n_EV_CH_k_DOORBELL_1 */
+#define GSI_EE_n_EV_CH_k_DOORBELL_1_WRITE_PTR_MSB_BMSK 0xffffffff
+#define GSI_EE_n_EV_CH_k_DOORBELL_1_WRITE_PTR_MSB_SHFT 0x0
+
+/* GSI_EE_n_EV_CH_CMD */
+#define GSI_EE_n_EV_CH_CMD_OPCODE_BMSK 0xff000000
+#define GSI_EE_n_EV_CH_CMD_OPCODE_SHFT 0x18
+#define GSI_EE_n_EV_CH_CMD_CHID_BMSK 0xff
+#define GSI_EE_n_EV_CH_CMD_CHID_SHFT 0x0
+
+/* GSI_EE_n_GSI_CH_k_QOS */
+#define GSI_EE_n_GSI_CH_k_QOS_USE_DB_ENG_BMSK 0x200
+#define GSI_EE_n_GSI_CH_k_QOS_USE_DB_ENG_SHFT 0x9
+#define GSI_EE_n_GSI_CH_k_QOS_MAX_PREFETCH_BMSK 0x100
+#define GSI_EE_n_GSI_CH_k_QOS_MAX_PREFETCH_SHFT 0x8
+#define GSI_EE_n_GSI_CH_k_QOS_WRR_WEIGHT_BMSK 0xf
+#define GSI_EE_n_GSI_CH_k_QOS_WRR_WEIGHT_SHFT 0x0
+
+#define GSI_V2_0_EE_n_GSI_CH_k_QOS_USE_ESCAPE_BUF_ONLY_BMSK 0x400
+#define GSI_V2_0_EE_n_GSI_CH_k_QOS_USE_ESCAPE_BUF_ONLY_SHFT 0xa
+
+#define GSI_V2_5_EE_n_GSI_CH_k_QOS_EMPTY_LVL_THRSHOLD_SHFT 0x10
+#define GSI_V2_9_EE_n_GSI_CH_k_QOS_EMPTY_LVL_THRSHOLD_BMSK 0xff0000
+#define GSI_V2_5_EE_n_GSI_CH_k_QOS_PREFETCH_MODE_BMSK 0x3c00
+#define GSI_V2_5_EE_n_GSI_CH_k_QOS_PREFETCH_MODE_SHFT 0xa
+
+#define GSI_V2_9_EE_n_GSI_CH_k_QOS_DB_IN_BYTES_BMSK 0x1000000
+#define GSI_V2_9_EE_n_GSI_CH_k_QOS_DB_IN_BYTES_SHFT 0x18
+
+/* GSI_EE_n_GSI_CH_k_CNTXT_1 */
+#define GSI_EE_n_GSI_CH_k_CNTXT_1_R_LENGTH_BMSK 0xffff
+#define GSI_EE_n_GSI_CH_k_CNTXT_1_R_LENGTH_SHFT 0x0
+
+#define GSI_V2_9_EE_n_GSI_CH_k_CNTXT_1_R_LENGTH_BMSK 0xfffff
+#define GSI_V2_9_EE_n_GSI_CH_k_CNTXT_1_R_LENGTH_SHFT 0x0
+
+/* GSI_EE_n_GSI_CH_CMD */
+#define GSI_EE_n_GSI_CH_CMD_OPCODE_BMSK 0xff000000
+#define GSI_EE_n_GSI_CH_CMD_OPCODE_SHFT 0x18
+#define GSI_EE_n_GSI_CH_CMD_CHID_BMSK 0xff
+#define GSI_EE_n_GSI_CH_CMD_CHID_SHFT 0x0
+
+/* GSI_GSI_CFG */
+#define GSI_GSI_CFG_BP_MTRIX_DISABLE_BMSK 0x20
+#define GSI_GSI_CFG_BP_MTRIX_DISABLE_SHFT 0x5
+#define GSI_GSI_CFG_GSI_PWR_CLPS_BMSK 0x10
+#define GSI_GSI_CFG_GSI_PWR_CLPS_SHFT 0x4
+#define GSI_GSI_CFG_UC_IS_MCS_BMSK 0x8
+#define GSI_GSI_CFG_UC_IS_MCS_SHFT 0x3
+#define GSI_GSI_CFG_DOUBLE_MCS_CLK_FREQ_BMSK 0x4
+#define GSI_GSI_CFG_DOUBLE_MCS_CLK_FREQ_SHFT 0x2
+#define GSI_GSI_CFG_MCS_ENABLE_BMSK 0x2
+#define GSI_GSI_CFG_MCS_ENABLE_SHFT 0x1
+#define GSI_GSI_CFG_GSI_ENABLE_BMSK 0x1
+#define GSI_GSI_CFG_GSI_ENABLE_SHFT 0x0
+
+#define GSI_V2_5_GSI_CFG_SLEEP_CLK_DIV_BMSK 0xf00
+#define GSI_V2_5_GSI_CFG_SLEEP_CLK_DIV_SHFT 0x8
+
+/* GSI_EE_n_GSI_EE_GENERIC_CMD */
+#define GSI_EE_n_GSI_EE_GENERIC_CMD_OPCODE_BMSK 0x1f
+#define GSI_EE_n_GSI_EE_GENERIC_CMD_OPCODE_SHFT 0x0
+#define GSI_EE_n_GSI_EE_GENERIC_CMD_VIRT_CHAN_IDX_BMSK 0x3e0
+#define GSI_EE_n_GSI_EE_GENERIC_CMD_VIRT_CHAN_IDX_SHFT 0x5
+#define GSI_EE_n_GSI_EE_GENERIC_CMD_EE_BMSK 0x3c00
+#define GSI_EE_n_GSI_EE_GENERIC_CMD_EE_SHFT 0xa
+
+/* GSI_EE_n_CNTXT_GSI_IRQ_EN */
+#define GSI_EE_n_CNTXT_GSI_IRQ_EN_GSI_MCS_STACK_OVRFLOW_BMSK 0x8
+#define GSI_EE_n_CNTXT_GSI_IRQ_EN_GSI_MCS_STACK_OVRFLOW_SHFT 0x3
+#define GSI_EE_n_CNTXT_GSI_IRQ_EN_GSI_CMD_FIFO_OVRFLOW_BMSK 0x4
+#define GSI_EE_n_CNTXT_GSI_IRQ_EN_GSI_CMD_FIFO_OVRFLOW_SHFT 0x2
+#define GSI_EE_n_CNTXT_GSI_IRQ_EN_GSI_BUS_ERROR_BMSK 0x2
+#define GSI_EE_n_CNTXT_GSI_IRQ_EN_GSI_BUS_ERROR_SHFT 0x1
+#define GSI_EE_n_CNTXT_GSI_IRQ_EN_GSI_BREAK_POINT_BMSK 0x1
+#define GSI_EE_n_CNTXT_GSI_IRQ_EN_GSI_BREAK_POINT_SHFT 0x0
+
+#endif /* _GSIHAL_REG_I_H_ */

+ 14 - 17
drivers/platform/msm/ipa/ipa_v3/ipa.c

@@ -6050,9 +6050,6 @@ static enum gsi_ver ipa3_get_gsi_ver(enum ipa_hw_type ipa_hw_type)
 	case IPA_HW_v4_11:
 		gsi_ver = GSI_VER_2_11;
 		break;
-	case IPA_HW_v5_0:
-		gsi_ver = GSI_VER_3_0;
-		break;
 	default:
 		IPAERR("No GSI version for ipa type %d\n", ipa_hw_type);
 		WARN_ON(1);
@@ -7288,20 +7285,6 @@ static int ipa3_pre_init(const struct ipa3_plat_drv_res *resource_p,
 		goto fail_gsi_map;
 	}
 
-	/*
-	 * Since we now know where the transport's registers live,
-	 * let's set up access to them.  This is done since subseqent
-	 * functions, that deal with the transport, require the
-	 * access.
-	 */
-	if (gsi_map_base(
-		ipa3_res.transport_mem_base,
-		ipa3_res.transport_mem_size) != 0) {
-		IPAERR("Allocation of gsi base failed\n");
-		result = -EFAULT;
-		goto fail_gsi_map;
-	}
-
 	mutex_init(&ipa3_ctx->ipa3_active_clients.mutex);
 
 	IPA_ACTIVE_CLIENTS_PREP_SPECIAL(log_info, "PROXY_CLK_VOTE");
@@ -9014,6 +8997,20 @@ int ipa3_plat_drv_probe(struct platform_device *pdev_p)
 		return result;
 	}
 
+	/*
+	* Since we now know where the transport's registers live,
+	* let's set up access to them.  This is done since subsequent
+	* functions, that deal with the transport, require the
+	* access.
+	*/
+	if (gsi_map_base(
+		ipa3_res.transport_mem_base,
+		ipa3_res.transport_mem_size,
+		ipa3_get_gsi_ver(ipa3_res.ipa_hw_type)) != 0) {
+		IPAERR("Allocation of gsi base failed\n");
+		return -EFAULT;
+	}
+
 	/* Get GSI version */
 	ipa3_ctx->gsi_ver = ipa3_get_gsi_ver(ipa3_res.ipa_hw_type);
 

+ 14 - 28
drivers/platform/msm/ipa/test/ipa_test_mhi.c

@@ -8,7 +8,7 @@
 #include <linux/ipa.h>
 #include "ipa_i.h"
 #include "gsi.h"
-#include "gsi_reg.h"
+#include "gsihal.h"
 #include "ipa_ut_framework.h"
 
 #define IPA_MHI_TEST_NUM_CHANNELS		8
@@ -322,7 +322,6 @@ struct ipa_mhi_transfer_ring_element {
  * struct ipa_test_mhi_context - MHI test context
  */
 struct ipa_test_mhi_context {
-	void __iomem *gsi_mmio;
 	struct ipa_mem_buffer msi;
 	struct ipa_mem_buffer ch_ctx_array;
 	struct ipa_mem_buffer ev_ctx_array;
@@ -809,20 +808,10 @@ static int ipa_test_mhi_suite_setup(void **ppriv)
 		goto fail_free_ctx;
 	}
 
-	test_mhi_ctx->gsi_mmio =
-	    ioremap(test_mhi_ctx->transport_phys_addr,
-			    test_mhi_ctx->transport_size);
-	if (!test_mhi_ctx->gsi_mmio) {
-		IPA_UT_ERR("failed to remap GSI HW size=%lu\n",
-			   test_mhi_ctx->transport_size);
-		rc = -EFAULT;
-		goto fail_free_ctx;
-	}
-
 	rc = ipa_test_mhi_alloc_mmio_space();
 	if (rc) {
 		IPA_UT_ERR("failed to alloc mmio space");
-		goto fail_iounmap;
+		goto fail_free_ctx;
 	}
 
 	rc = ipa_mhi_test_setup_data_structures();
@@ -849,8 +838,6 @@ fail_destroy_data_structures:
 	ipa_mhi_test_destroy_data_structures();
 fail_free_mmio_spc:
 	ipa_test_mhi_free_mmio_space();
-fail_iounmap:
-	iounmap(test_mhi_ctx->gsi_mmio);
 fail_free_ctx:
 	kfree(test_mhi_ctx);
 	test_mhi_ctx = NULL;
@@ -870,7 +857,6 @@ static int ipa_test_mhi_suite_teardown(void *priv)
 	ipa_teardown_sys_pipe(test_mhi_ctx->test_prod_hdl);
 	ipa_mhi_test_destroy_data_structures();
 	ipa_test_mhi_free_mmio_space();
-	iounmap(test_mhi_ctx->gsi_mmio);
 	kfree(test_mhi_ctx);
 	test_mhi_ctx = NULL;
 
@@ -1399,12 +1385,11 @@ static int ipa_mhi_test_q_transfer_re(struct ipa_mem_buffer *mmio,
 		IPA_UT_LOG("DB to event 0x%llx: base %pa ofst 0x%x\n",
 			p_events[event_ring_index].wp,
 			&(test_mhi_ctx->transport_phys_addr),
-			GSI_EE_n_EV_CH_k_DOORBELL_0_OFFS(
-			event_ring_index + ipa3_ctx->mhi_evid_limits[0], 0));
-		iowrite32(p_events[event_ring_index].wp,
-			test_mhi_ctx->gsi_mmio +
-			GSI_EE_n_EV_CH_k_DOORBELL_0_OFFS(
-			event_ring_index + ipa3_ctx->mhi_evid_limits[0], 0));
+			gsihal_get_reg_nk_ofst(GSI_EE_n_EV_CH_k_DOORBELL_0, 0,
+			event_ring_index + ipa3_ctx->mhi_evid_limits[0]));
+		gsihal_write_reg_nk(GSI_EE_n_EV_CH_k_DOORBELL_0, 0,
+			event_ring_index + ipa3_ctx->mhi_evid_limits[0],
+			p_events[event_ring_index].wp);
 	}
 
 	for (i = 0; i < buf_array_size; i++) {
@@ -1446,12 +1431,13 @@ static int ipa_mhi_test_q_transfer_re(struct ipa_mem_buffer *mmio,
 					"DB to channel 0x%llx: base %pa ofst 0x%x\n"
 					, p_channels[channel_idx].wp
 					, &(test_mhi_ctx->transport_phys_addr)
-					, GSI_EE_n_GSI_CH_k_DOORBELL_0_OFFS(
-						channel_idx, 0));
-				iowrite32(p_channels[channel_idx].wp,
-					test_mhi_ctx->gsi_mmio +
-					GSI_EE_n_GSI_CH_k_DOORBELL_0_OFFS(
-					channel_idx, 0));
+					, gsihal_get_reg_nk_ofst(
+						GSI_EE_n_GSI_CH_k_DOORBELL_0,
+						0, channel_idx));
+				gsihal_write_reg_nk(
+					GSI_EE_n_GSI_CH_k_DOORBELL_0,
+					0, channel_idx,
+					p_channels[channel_idx].wp);
 			}
 		} else {
 			curr_re->word_C.bits.chain = 1;

Bu fark içinde çok fazla dosya değişikliği olduğu için bazı dosyalar gösterilmiyor