Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 04a3c0bc authored by Perry Randise's avatar Perry Randise
Browse files

msm: ipa3: add additional register captures to IPA dump



The following registers were added: "qsb log", "src rsrc grp 45 rsrc
type", "src rsrc grp 4567 rsrc type cnt", "dst rsrc grp 45 rsrc type",
and "dst rsrc grp 4567 rsrc type cnt"

Array under and over runs were also fixed.

Change-Id: I04902ec7da93c56b9563fa37da11fd29c0107992
CRs-Fixed: 2453375
Signed-off-by: default avatarPerry Randise <prandise@codeaurora.org>
parent eedfb960
Loading
Loading
Loading
Loading
+10 −0
Original line number Diff line number Diff line
@@ -83,6 +83,16 @@ union gsi_hwio_def_gsi_debug_countern_u {
	struct gsi_hwio_def_gsi_debug_countern_s	def;
	u32						value;
};
struct gsi_hwio_def_gsi_debug_qsb_log_last_misc_idn_s {
	u32 addr_20_0 : 21;
	u32 write : 1;
	u32 tid : 5;
	u32 mid : 5;
};
union gsi_hwio_def_gsi_debug_qsb_log_last_misc_idn_u {
	struct gsi_hwio_def_gsi_debug_qsb_log_last_misc_idn_s   def;
	u32						value;
};
struct gsi_hwio_def_gsi_debug_sw_rf_n_read_s {
	u32 rf_reg : 32;
};
+2 −2
Original line number Diff line number Diff line
@@ -112,8 +112,8 @@
#define IPA_HW_DMA_SRC_RSRP_GRP                      IPA_HW_RSRP_GRP_2
#define IPA_HW_DMA_DEST_RSRP_GRP                     IPA_HW_RSRP_GRP_2

#define IPA_HW_SRC_RSRP_TYPE_MAX HWIO_IPA_SRC_RSRC_GRP_01_RSRC_TYPE_n_MAXn
#define IPA_HW_DST_RSRP_TYPE_MAX HWIO_IPA_DST_RSRC_GRP_01_RSRC_TYPE_n_MAXn
#define IPA_HW_SRC_RSRP_TYPE_MAX 0x05
#define IPA_HW_DST_RSRP_TYPE_MAX 0x02

#define GSI_HW_QSB_LOG_MISC_MAX 0x4

+82 −0
Original line number Diff line number Diff line
@@ -5082,6 +5082,32 @@
		IPA_CFG_REG_BASE_PHYS + 0x00000408 + 0x20 * (n))
#define HWIO_IPA_SRC_RSRC_GRP_45_RSRC_TYPE_n_OFFS(n) ( \
		IPA_CFG_REG_BASE_OFFS + 0x00000408 + 0x20 * (n))
#define HWIO_IPA_SRC_RSRC_GRP_45_RSRC_TYPE_n_RMSK 0x3f3f
#define HWIO_IPA_SRC_RSRC_GRP_45_RSRC_TYPE_n_MAXn 4
#define HWIO_IPA_SRC_RSRC_GRP_45_RSRC_TYPE_n_ATTR 0x3
#define HWIO_IPA_SRC_RSRC_GRP_45_RSRC_TYPE_n_INI(n) in_dword_masked( \
		HWIO_IPA_SRC_RSRC_GRP_45_RSRC_TYPE_n_ADDR(n), \
		HWIO_IPA_SRC_RSRC_GRP_45_RSRC_TYPE_n_RMSK)
#define HWIO_IPA_SRC_RSRC_GRP_45_RSRC_TYPE_n_INMI(n, mask) in_dword_masked( \
		HWIO_IPA_SRC_RSRC_GRP_45_RSRC_TYPE_n_ADDR(n), \
		mask)
#define HWIO_IPA_SRC_RSRC_GRP_45_RSRC_TYPE_n_OUTI(n, val) out_dword( \
		HWIO_IPA_SRC_RSRC_GRP_45_RSRC_TYPE_n_ADDR(n), \
		val)
#define HWIO_IPA_SRC_RSRC_GRP_45_RSRC_TYPE_n_OUTMI(n, mask, \
						   val)	\
	out_dword_masked_ns(HWIO_IPA_SRC_RSRC_GRP_45_RSRC_TYPE_n_ADDR( \
				    n),	\
			    mask, val, \
			    HWIO_IPA_SRC_RSRC_GRP_45_RSRC_TYPE_n_INI(n))
#define HWIO_IPA_SRC_RSRC_GRP_45_RSRC_TYPE_n_SRC_RSRC_GRP_4_MAX_LIMIT_BMSK \
	0x3f00
#define HWIO_IPA_SRC_RSRC_GRP_45_RSRC_TYPE_n_SRC_RSRC_GRP_4_MAX_LIMIT_SHFT \
	0x8
#define HWIO_IPA_SRC_RSRC_GRP_45_RSRC_TYPE_n_SRC_RSRC_GRP_4_MIN_LIMIT_BMSK \
	0x3f
#define HWIO_IPA_SRC_RSRC_GRP_45_RSRC_TYPE_n_SRC_RSRC_GRP_4_MIN_LIMIT_SHFT \
	0x0
#define HWIO_IPA_SRC_RSRC_GRP_0123_RSRC_TYPE_CNT_n_ADDR(n) ( \
		IPA_CFG_REG_BASE + 0x00000410 + 0x20 * (n))
#define HWIO_IPA_SRC_RSRC_GRP_0123_RSRC_TYPE_CNT_n_PHYS(n) ( \
@@ -5121,6 +5147,21 @@
		IPA_CFG_REG_BASE_PHYS + 0x00000414 + 0x20 * (n))
#define HWIO_IPA_SRC_RSRC_GRP_4567_RSRC_TYPE_CNT_n_OFFS(n) ( \
		IPA_CFG_REG_BASE_OFFS + 0x00000414 + 0x20 * (n))
#define HWIO_IPA_SRC_RSRC_GRP_4567_RSRC_TYPE_CNT_n_RMSK 0x3f
#define HWIO_IPA_SRC_RSRC_GRP_4567_RSRC_TYPE_CNT_n_MAXn 4
#define HWIO_IPA_SRC_RSRC_GRP_4567_RSRC_TYPE_CNT_n_ATTR 0x1
#define HWIO_IPA_SRC_RSRC_GRP_4567_RSRC_TYPE_CNT_n_INI(n) in_dword_masked( \
		HWIO_IPA_SRC_RSRC_GRP_4567_RSRC_TYPE_CNT_n_ADDR(n), \
		HWIO_IPA_SRC_RSRC_GRP_4567_RSRC_TYPE_CNT_n_RMSK)
#define HWIO_IPA_SRC_RSRC_GRP_4567_RSRC_TYPE_CNT_n_INMI(n, \
							mask) \
	in_dword_masked( \
		HWIO_IPA_SRC_RSRC_GRP_4567_RSRC_TYPE_CNT_n_ADDR(n), \
		mask)
#define HWIO_IPA_SRC_RSRC_GRP_4567_RSRC_TYPE_CNT_n_SRC_RSRC_GRP_4_CNT_BMSK \
	0x3f
#define HWIO_IPA_SRC_RSRC_GRP_4567_RSRC_TYPE_CNT_n_SRC_RSRC_GRP_4_CNT_SHFT \
	0x0
#define HWIO_IPA_SRC_RSRC_TYPE_AMOUNT_n_ADDR(n) (IPA_CFG_REG_BASE + \
						 0x00000418 + 0x20 * (n))
#define HWIO_IPA_SRC_RSRC_TYPE_AMOUNT_n_PHYS(n) (IPA_CFG_REG_BASE_PHYS + \
@@ -5216,6 +5257,32 @@
		IPA_CFG_REG_BASE_PHYS + 0x00000508 + 0x20 * (n))
#define HWIO_IPA_DST_RSRC_GRP_45_RSRC_TYPE_n_OFFS(n) ( \
		IPA_CFG_REG_BASE_OFFS + 0x00000508 + 0x20 * (n))
#define HWIO_IPA_DST_RSRC_GRP_45_RSRC_TYPE_n_RMSK 0x3f3f
#define HWIO_IPA_DST_RSRC_GRP_45_RSRC_TYPE_n_MAXn 1
#define HWIO_IPA_DST_RSRC_GRP_45_RSRC_TYPE_n_ATTR 0x3
#define HWIO_IPA_DST_RSRC_GRP_45_RSRC_TYPE_n_INI(n) in_dword_masked( \
		HWIO_IPA_DST_RSRC_GRP_45_RSRC_TYPE_n_ADDR(n), \
		HWIO_IPA_DST_RSRC_GRP_45_RSRC_TYPE_n_RMSK)
#define HWIO_IPA_DST_RSRC_GRP_45_RSRC_TYPE_n_INMI(n, mask) in_dword_masked( \
		HWIO_IPA_DST_RSRC_GRP_45_RSRC_TYPE_n_ADDR(n), \
		mask)
#define HWIO_IPA_DST_RSRC_GRP_45_RSRC_TYPE_n_OUTI(n, val) out_dword( \
		HWIO_IPA_DST_RSRC_GRP_45_RSRC_TYPE_n_ADDR(n), \
		val)
#define HWIO_IPA_DST_RSRC_GRP_45_RSRC_TYPE_n_OUTMI(n, mask, \
						   val)	\
	out_dword_masked_ns(HWIO_IPA_DST_RSRC_GRP_45_RSRC_TYPE_n_ADDR( \
				    n),	\
			    mask, val, \
			    HWIO_IPA_DST_RSRC_GRP_45_RSRC_TYPE_n_INI(n))
#define HWIO_IPA_DST_RSRC_GRP_45_RSRC_TYPE_n_DST_RSRC_GRP_4_MAX_LIMIT_BMSK \
	0x3f00
#define HWIO_IPA_DST_RSRC_GRP_45_RSRC_TYPE_n_DST_RSRC_GRP_4_MAX_LIMIT_SHFT \
	0x8
#define HWIO_IPA_DST_RSRC_GRP_45_RSRC_TYPE_n_DST_RSRC_GRP_4_MIN_LIMIT_BMSK \
	0x3f
#define HWIO_IPA_DST_RSRC_GRP_45_RSRC_TYPE_n_DST_RSRC_GRP_4_MIN_LIMIT_SHFT \
	0x0
#define HWIO_IPA_DST_RSRC_GRP_0123_RSRC_TYPE_CNT_n_ADDR(n) ( \
		IPA_CFG_REG_BASE + 0x00000510 + 0x20 * (n))
#define HWIO_IPA_DST_RSRC_GRP_0123_RSRC_TYPE_CNT_n_PHYS(n) ( \
@@ -5255,6 +5322,21 @@
		IPA_CFG_REG_BASE_PHYS + 0x00000514 + 0x20 * (n))
#define HWIO_IPA_DST_RSRC_GRP_4567_RSRC_TYPE_CNT_n_OFFS(n) ( \
		IPA_CFG_REG_BASE_OFFS + 0x00000514 + 0x20 * (n))
#define HWIO_IPA_DST_RSRC_GRP_4567_RSRC_TYPE_CNT_n_RMSK 0xff
#define HWIO_IPA_DST_RSRC_GRP_4567_RSRC_TYPE_CNT_n_MAXn 1
#define HWIO_IPA_DST_RSRC_GRP_4567_RSRC_TYPE_CNT_n_ATTR 0x1
#define HWIO_IPA_DST_RSRC_GRP_4567_RSRC_TYPE_CNT_n_INI(n) in_dword_masked( \
		HWIO_IPA_DST_RSRC_GRP_4567_RSRC_TYPE_CNT_n_ADDR(n), \
		HWIO_IPA_DST_RSRC_GRP_4567_RSRC_TYPE_CNT_n_RMSK)
#define HWIO_IPA_DST_RSRC_GRP_4567_RSRC_TYPE_CNT_n_INMI(n, \
							mask) \
	in_dword_masked( \
		HWIO_IPA_DST_RSRC_GRP_4567_RSRC_TYPE_CNT_n_ADDR(n), \
		mask)
#define HWIO_IPA_DST_RSRC_GRP_4567_RSRC_TYPE_CNT_n_DST_RSRC_GRP_4_CNT_BMSK \
	0xff
#define HWIO_IPA_DST_RSRC_GRP_4567_RSRC_TYPE_CNT_n_DST_RSRC_GRP_4_CNT_SHFT \
	0x0
#define HWIO_IPA_DST_RSRC_TYPE_AMOUNT_n_ADDR(n) (IPA_CFG_REG_BASE + \
						 0x00000518 + 0x20 * (n))
#define HWIO_IPA_DST_RSRC_TYPE_AMOUNT_n_PHYS(n) (IPA_CFG_REG_BASE_PHYS + \
+38 −0
Original line number Diff line number Diff line
@@ -1312,6 +1312,16 @@ union ipa_hwio_def_ipa_src_rsrc_grp_23_rsrc_type_n_u {
	struct ipa_hwio_def_ipa_src_rsrc_grp_23_rsrc_type_n_s	def;
	u32							value;
};
struct ipa_hwio_def_ipa_src_rsrc_grp_45_rsrc_type_n_s {
	u32 src_rsrc_grp_4_min_limit : 6;
	u32 reserved0 : 2;
	u32 src_rsrc_grp_4_max_limit : 6;
	u32 reserved1 : 18;
};
union ipa_hwio_def_ipa_src_rsrc_grp_45_rsrc_type_n_u {
	struct ipa_hwio_def_ipa_src_rsrc_grp_45_rsrc_type_n_s	def;
	u32 value;
};
struct ipa_hwio_def_ipa_src_rsrc_grp_0123_rsrc_type_cnt_n_s {
	u32	src_rsrc_grp_0_cnt : 6;
	u32	reserved0 : 2;
@@ -1327,6 +1337,15 @@ union ipa_hwio_def_ipa_src_rsrc_grp_0123_rsrc_type_cnt_n_u {
		def;
	u32 value;
};
struct ipa_hwio_def_ipa_src_rsrc_grp_4567_rsrc_type_cnt_n_s {
	u32 src_rsrc_grp_4_cnt : 6;
	u32 reserved0 : 26;
};
union ipa_hwio_def_ipa_src_rsrc_grp_4567_rsrc_type_cnt_n_u {
	struct ipa_hwio_def_ipa_src_rsrc_grp_4567_rsrc_type_cnt_n_s
		def;
	u32 value;
};
struct ipa_hwio_def_ipa_dst_rsrc_grp_01_rsrc_type_n_s {
	u32	dst_rsrc_grp_0_min_limit : 6;
	u32	reserved0 : 2;
@@ -1355,6 +1374,16 @@ union ipa_hwio_def_ipa_dst_rsrc_grp_23_rsrc_type_n_u {
	struct ipa_hwio_def_ipa_dst_rsrc_grp_23_rsrc_type_n_s	def;
	u32							value;
};
struct ipa_hwio_def_ipa_dst_rsrc_grp_45_rsrc_type_n_s {
	u32 dst_rsrc_grp_4_min_limit : 6;
	u32 reserved0 : 2;
	u32 dst_rsrc_grp_4_max_limit : 6;
	u32 reserved1 : 18;
};
union ipa_hwio_def_ipa_dst_rsrc_grp_45_rsrc_type_n_u {
	struct ipa_hwio_def_ipa_dst_rsrc_grp_45_rsrc_type_n_s	def;
	u32 value;
};
struct ipa_hwio_def_ipa_dst_rsrc_grp_0123_rsrc_type_cnt_n_s {
	u32	dst_rsrc_grp_0_cnt : 6;
	u32	reserved0 : 2;
@@ -1370,6 +1399,15 @@ union ipa_hwio_def_ipa_dst_rsrc_grp_0123_rsrc_type_cnt_n_u {
		def;
	u32 value;
};
struct ipa_hwio_def_ipa_dst_rsrc_grp_4567_rsrc_type_cnt_n_s {
	u32 dst_rsrc_grp_4_cnt : 8;
	u32 reserved0 : 24;
};
union ipa_hwio_def_ipa_dst_rsrc_grp_4567_rsrc_type_cnt_n_u {
	struct ipa_hwio_def_ipa_dst_rsrc_grp_4567_rsrc_type_cnt_n_s
		def;
	u32 value;
};
struct ipa_hwio_def_ipa_rsrc_grp_cfg_s {
	u32	src_grp_special_valid : 1;
	u32	reserved0 : 3;
+22 −2
Original line number Diff line number Diff line
@@ -352,22 +352,32 @@ static struct map_src_dst_addr_s ipa_regs_to_save_array[] = {
					    ipa_src_rsrc_grp_01_rsrc_type_n),
	IPA_REG_SAVE_CFG_ENTRY_SRC_RSRC_GRP(IPA_SRC_RSRC_GRP_23_RSRC_TYPE_n,
					    ipa_src_rsrc_grp_23_rsrc_type_n),
	IPA_REG_SAVE_CFG_ENTRY_SRC_RSRC_GRP(IPA_SRC_RSRC_GRP_45_RSRC_TYPE_n,
					    ipa_src_rsrc_grp_45_rsrc_type_n),

	/* Destination Resource Group Config Registers */
	IPA_REG_SAVE_CFG_ENTRY_DST_RSRC_GRP(IPA_DST_RSRC_GRP_01_RSRC_TYPE_n,
					    ipa_dst_rsrc_grp_01_rsrc_type_n),
	IPA_REG_SAVE_CFG_ENTRY_DST_RSRC_GRP(IPA_DST_RSRC_GRP_23_RSRC_TYPE_n,
					    ipa_dst_rsrc_grp_23_rsrc_type_n),
	IPA_REG_SAVE_CFG_ENTRY_DST_RSRC_GRP(IPA_DST_RSRC_GRP_45_RSRC_TYPE_n,
					    ipa_dst_rsrc_grp_45_rsrc_type_n),

	/* Source Resource Group Count Registers */
	IPA_REG_SAVE_CFG_ENTRY_SRC_RSRC_CNT_GRP(
		IPA_SRC_RSRC_GRP_0123_RSRC_TYPE_CNT_n,
		ipa_src_rsrc_grp_0123_rsrc_type_cnt_n),
	IPA_REG_SAVE_CFG_ENTRY_SRC_RSRC_CNT_GRP(
		IPA_SRC_RSRC_GRP_4567_RSRC_TYPE_CNT_n,
		ipa_src_rsrc_grp_4567_rsrc_type_cnt_n),

	/* Destination Resource Group Count Registers */
	IPA_REG_SAVE_CFG_ENTRY_DST_RSRC_CNT_GRP(
		IPA_DST_RSRC_GRP_0123_RSRC_TYPE_CNT_n,
		ipa_dst_rsrc_grp_0123_rsrc_type_cnt_n),
	IPA_REG_SAVE_CFG_ENTRY_DST_RSRC_CNT_GRP(
		IPA_DST_RSRC_GRP_4567_RSRC_TYPE_CNT_n,
		ipa_dst_rsrc_grp_4567_rsrc_type_cnt_n),

	/*
	 * =====================================================================
@@ -412,6 +422,9 @@ static struct map_src_dst_addr_s ipa_regs_to_save_array[] = {
			     gsi.debug,
			     ipa_gsi_top_gsi_debug_qsb_log_err_trns_id),

	IPA_REG_SAVE_CFG_ENTRY_GSI_QSB_DEBUG(
		GSI_DEBUG_QSB_LOG_LAST_MISC_IDn, qsb_log_last_misc),

	/* GSI IRAM pointers Registers */
	GEN_SRC_DST_ADDR_MAP(IPA_GSI_TOP_GSI_IRAM_PTR_CH_CMD,
			     gsi.debug.gsi_iram_ptrs,
@@ -831,10 +844,13 @@ void ipa_save_registers(void)
			ipa_hal_save_regs_save_ipa_testbus();
	}

	/* GSI test bus and QSB log */
	/* GSI test bus */
	for (i = 0;
	     i < ARRAY_SIZE(ipa_reg_save_gsi_ch_test_bus_selector_array);
	     i++) {
		ipa_reg_save.gsi.debug.gsi_test_bus.test_bus_selector[i] =
			ipa_reg_save_gsi_ch_test_bus_selector_array[i];

		/* Write test bus selector */
		IPA_WRITE_SCALER_REG(
			GSI_TEST_BUS_SEL,
@@ -1346,6 +1362,8 @@ static void ipa_hal_save_regs_save_ipa_testbus(void)
			 sel_internal <= IPA_TESTBUS_SEL_INTERNAL_MAX;
			 sel_internal++) {

			testbus_sel.value = 0;

			testbus_sel.def.pipe_select = 0;
			testbus_sel.def.external_block_select =
				sel_external;
@@ -1381,6 +1399,8 @@ static void ipa_hal_save_regs_save_ipa_testbus(void)
					 IPA_TESTBUS_SEL_INTERNAL_PIPE_MAX;
				 sel_internal++) {

				testbus_sel.value = 0;

				testbus_sel.def.pipe_select = sel_ep;
				testbus_sel.def.external_block_select =
					sel_external;
@@ -1445,7 +1465,7 @@ int ipa_reg_save_init(u32 value)
	       ipa3_ctx->ipa_wrapper_base);

	ipa3_ctx->reg_collection_base =
		ioremap(ipa3_ctx->ipa_wrapper_base,
		ioremap_nocache(ipa3_ctx->ipa_wrapper_base,
			ipa3_ctx->entire_ipa_block_size);

	if (!ipa3_ctx->reg_collection_base) {
Loading