Loading msm/sde/sde_encoder_phys_cmd.c +4 −2 Original line number Original line Diff line number Diff line Loading @@ -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_encoder_helper_get_pp_line_count(phys_enc->parent, info); SDE_EVT32_IRQ(DRMID(phys_enc->parent), SDE_EVT32_IRQ(DRMID(phys_enc->parent), info[0].pp_idx, info[0].intf_idx, info[0].wr_ptr_line_count, info[0].pp_idx, info[0].intf_idx, info[1].pp_idx, info[1].intf_idx, info[1].wr_ptr_line_count, 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); scheduler_status); if (phys_enc->parent_ops.handle_vblank_virt) if (phys_enc->parent_ops.handle_vblank_virt) Loading msm/sde/sde_encoder_phys_vid.c +7 −1 Original line number Original line Diff line number Diff line Loading @@ -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_encoder_phys *phys_enc = arg; struct sde_hw_ctl *hw_ctl; struct sde_hw_ctl *hw_ctl; struct intf_status intf_status = {0}; unsigned long lock_flags; unsigned long lock_flags; u32 flush_register = ~0; u32 flush_register = ~0; u32 reset_status = 0; u32 reset_status = 0; Loading Loading @@ -530,11 +531,16 @@ static void sde_encoder_phys_vid_vblank_irq(void *arg, int irq_idx) phys_enc->parent_ops.handle_vblank_virt(phys_enc->parent, phys_enc->parent_ops.handle_vblank_virt(phys_enc->parent, phys_enc); 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, SDE_EVT32_IRQ(DRMID(phys_enc->parent), phys_enc->hw_intf->idx - INTF_0, old_cnt, atomic_read(&phys_enc->pending_kickoff_cnt), old_cnt, atomic_read(&phys_enc->pending_kickoff_cnt), reset_status ? SDE_EVTLOG_ERROR : 0, reset_status ? SDE_EVTLOG_ERROR : 0, flush_register, event, 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 */ /* Signal any waiting atomic commit thread */ wake_up_all(&phys_enc->pending_kickoff_wq); wake_up_all(&phys_enc->pending_kickoff_wq); Loading msm/sde/sde_hw_intf.c +3 −0 Original line number Original line Diff line number Diff line Loading @@ -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); val = SDE_REG_READ(c, INTF_TEAR_LINE_COUNT); info->wr_ptr_line_count = val & 0xffff; info->wr_ptr_line_count = val & 0xffff; val = SDE_REG_READ(c, INTF_FRAME_COUNT); info->intf_frame_count = val; return 0; return 0; } } Loading msm/sde/sde_hw_mdss.h +2 −0 Original line number Original line Diff line number Diff line Loading @@ -680,6 +680,7 @@ struct sde_hw_autorefresh { * @rd_ptr_frame_count: num frames sent since enabling interface * @rd_ptr_frame_count: num frames sent since enabling interface * @rd_ptr_line_count: current line on panel (rd ptr) * @rd_ptr_line_count: current line on panel (rd ptr) * @wr_ptr_line_count: current line within pp fifo (wr 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 { struct sde_hw_pp_vsync_info { u32 pp_idx; u32 pp_idx; Loading @@ -688,6 +689,7 @@ struct sde_hw_pp_vsync_info { u32 rd_ptr_frame_count; u32 rd_ptr_frame_count; u32 rd_ptr_line_count; u32 rd_ptr_line_count; u32 wr_ptr_line_count; u32 wr_ptr_line_count; u32 intf_frame_count; }; }; #endif /* _SDE_HW_MDSS_H */ #endif /* _SDE_HW_MDSS_H */ Loading
msm/sde/sde_encoder_phys_cmd.c +4 −2 Original line number Original line Diff line number Diff line Loading @@ -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_encoder_helper_get_pp_line_count(phys_enc->parent, info); SDE_EVT32_IRQ(DRMID(phys_enc->parent), SDE_EVT32_IRQ(DRMID(phys_enc->parent), info[0].pp_idx, info[0].intf_idx, info[0].wr_ptr_line_count, info[0].pp_idx, info[0].intf_idx, info[1].pp_idx, info[1].intf_idx, info[1].wr_ptr_line_count, 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); scheduler_status); if (phys_enc->parent_ops.handle_vblank_virt) if (phys_enc->parent_ops.handle_vblank_virt) Loading
msm/sde/sde_encoder_phys_vid.c +7 −1 Original line number Original line Diff line number Diff line Loading @@ -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_encoder_phys *phys_enc = arg; struct sde_hw_ctl *hw_ctl; struct sde_hw_ctl *hw_ctl; struct intf_status intf_status = {0}; unsigned long lock_flags; unsigned long lock_flags; u32 flush_register = ~0; u32 flush_register = ~0; u32 reset_status = 0; u32 reset_status = 0; Loading Loading @@ -530,11 +531,16 @@ static void sde_encoder_phys_vid_vblank_irq(void *arg, int irq_idx) phys_enc->parent_ops.handle_vblank_virt(phys_enc->parent, phys_enc->parent_ops.handle_vblank_virt(phys_enc->parent, phys_enc); 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, SDE_EVT32_IRQ(DRMID(phys_enc->parent), phys_enc->hw_intf->idx - INTF_0, old_cnt, atomic_read(&phys_enc->pending_kickoff_cnt), old_cnt, atomic_read(&phys_enc->pending_kickoff_cnt), reset_status ? SDE_EVTLOG_ERROR : 0, reset_status ? SDE_EVTLOG_ERROR : 0, flush_register, event, 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 */ /* Signal any waiting atomic commit thread */ wake_up_all(&phys_enc->pending_kickoff_wq); wake_up_all(&phys_enc->pending_kickoff_wq); Loading
msm/sde/sde_hw_intf.c +3 −0 Original line number Original line Diff line number Diff line Loading @@ -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); val = SDE_REG_READ(c, INTF_TEAR_LINE_COUNT); info->wr_ptr_line_count = val & 0xffff; info->wr_ptr_line_count = val & 0xffff; val = SDE_REG_READ(c, INTF_FRAME_COUNT); info->intf_frame_count = val; return 0; return 0; } } Loading
msm/sde/sde_hw_mdss.h +2 −0 Original line number Original line Diff line number Diff line Loading @@ -680,6 +680,7 @@ struct sde_hw_autorefresh { * @rd_ptr_frame_count: num frames sent since enabling interface * @rd_ptr_frame_count: num frames sent since enabling interface * @rd_ptr_line_count: current line on panel (rd ptr) * @rd_ptr_line_count: current line on panel (rd ptr) * @wr_ptr_line_count: current line within pp fifo (wr 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 { struct sde_hw_pp_vsync_info { u32 pp_idx; u32 pp_idx; Loading @@ -688,6 +689,7 @@ struct sde_hw_pp_vsync_info { u32 rd_ptr_frame_count; u32 rd_ptr_frame_count; u32 rd_ptr_line_count; u32 rd_ptr_line_count; u32 wr_ptr_line_count; u32 wr_ptr_line_count; u32 intf_frame_count; }; }; #endif /* _SDE_HW_MDSS_H */ #endif /* _SDE_HW_MDSS_H */