فهرست منبع

Merge "disp: msm: sde: log intf framecount in event logs"

qctecmdr 6 سال پیش
والد
کامیت
40e4d191d3
4فایلهای تغییر یافته به همراه16 افزوده شده و 3 حذف شده
  1. 4 2
      msm/sde/sde_encoder_phys_cmd.c
  2. 7 1
      msm/sde/sde_encoder_phys_vid.c
  3. 3 0
      msm/sde/sde_hw_intf.c
  4. 2 0
      msm/sde/sde_hw_mdss.h

+ 4 - 2
msm/sde/sde_encoder_phys_cmd.c

@@ -243,8 +243,10 @@ static void sde_encoder_phys_cmd_te_rd_ptr_irq(void *arg, int irq_idx)
 
 	sde_encoder_helper_get_pp_line_count(phys_enc->parent, info);
 	SDE_EVT32_IRQ(DRMID(phys_enc->parent),
-		info[0].pp_idx, info[0].intf_idx, info[0].wr_ptr_line_count,
-		info[1].pp_idx, info[1].intf_idx, info[1].wr_ptr_line_count,
+		info[0].pp_idx, info[0].intf_idx,
+		info[0].wr_ptr_line_count, info[0].intf_frame_count,
+		info[1].pp_idx, info[1].intf_idx,
+		info[1].wr_ptr_line_count, info[1].intf_frame_count,
 		scheduler_status);
 
 	if (phys_enc->parent_ops.handle_vblank_virt)

+ 7 - 1
msm/sde/sde_encoder_phys_vid.c

@@ -474,6 +474,7 @@ static void sde_encoder_phys_vid_vblank_irq(void *arg, int irq_idx)
 {
 	struct sde_encoder_phys *phys_enc = arg;
 	struct sde_hw_ctl *hw_ctl;
+	struct intf_status intf_status = {0};
 	unsigned long lock_flags;
 	u32 flush_register = ~0;
 	u32 reset_status = 0;
@@ -530,11 +531,16 @@ not_flushed:
 		phys_enc->parent_ops.handle_vblank_virt(phys_enc->parent,
 				phys_enc);
 
+	if (phys_enc->hw_intf->ops.get_status)
+		phys_enc->hw_intf->ops.get_status(phys_enc->hw_intf,
+			&intf_status);
+
 	SDE_EVT32_IRQ(DRMID(phys_enc->parent), phys_enc->hw_intf->idx - INTF_0,
 			old_cnt, atomic_read(&phys_enc->pending_kickoff_cnt),
 			reset_status ? SDE_EVTLOG_ERROR : 0,
 			flush_register, event,
-			atomic_read(&phys_enc->pending_retire_fence_cnt));
+			atomic_read(&phys_enc->pending_retire_fence_cnt),
+			intf_status.frame_count);
 
 	/* Signal any waiting atomic commit thread */
 	wake_up_all(&phys_enc->pending_kickoff_wq);

+ 3 - 0
msm/sde/sde_hw_intf.c

@@ -628,6 +628,9 @@ static int sde_hw_intf_get_vsync_info(struct sde_hw_intf *intf,
 	val = SDE_REG_READ(c, INTF_TEAR_LINE_COUNT);
 	info->wr_ptr_line_count = val & 0xffff;
 
+	val = SDE_REG_READ(c, INTF_FRAME_COUNT);
+	info->intf_frame_count = val;
+
 	return 0;
 }
 

+ 2 - 0
msm/sde/sde_hw_mdss.h

@@ -680,6 +680,7 @@ struct sde_hw_autorefresh {
  * @rd_ptr_frame_count:	num frames sent since enabling interface
  * @rd_ptr_line_count:	current line on panel (rd ptr)
  * @wr_ptr_line_count:	current line within pp fifo (wr ptr)
+ * @intf_frame_count:	num frames read from intf
  */
 struct sde_hw_pp_vsync_info {
 	u32 pp_idx;
@@ -688,6 +689,7 @@ struct sde_hw_pp_vsync_info {
 	u32 rd_ptr_frame_count;
 	u32 rd_ptr_line_count;
 	u32 wr_ptr_line_count;
+	u32 intf_frame_count;
 };
 
 #endif  /* _SDE_HW_MDSS_H */