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

Commit eb33cd64 authored by qctecmdr's avatar qctecmdr Committed by Gerrit - the friendly Code Review server
Browse files

Merge "msm: ipa3: add additional register captures to IPA dump"

parents fa425372 04a3c0bc
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