diff options
| author | Lloyd Atkinson <latkinso@codeaurora.org> | 2016-05-30 13:46:55 -0400 |
|---|---|---|
| committer | Dhaval Patel <pdhaval@codeaurora.org> | 2016-08-01 12:35:44 -0700 |
| commit | e15f949d09fd7e8badd39e271c084e680a5940e5 (patch) | |
| tree | e7b54f80becf176f13af2f8b0673edaf0d29d9d9 | |
| parent | 7af89afb0d9b84bfb40a7b7ea53fe6994b3808c6 (diff) | |
drm/msm/sde: fix reading of the pingpong counters
Correct register enum and masks used for reading out the
pingpong vsync and line count values.
Change-Id: Iaa2a1034d38ad9f741c5201de2de7c5f39aeaaf5
Signed-off-by: Lloyd Atkinson <latkinso@codeaurora.org>
| -rw-r--r-- | drivers/gpu/drm/msm/sde/sde_hw_pingpong.c | 14 | ||||
| -rw-r--r-- | drivers/gpu/drm/msm/sde/sde_hw_pingpong.h | 18 |
2 files changed, 24 insertions, 8 deletions
diff --git a/drivers/gpu/drm/msm/sde/sde_hw_pingpong.c b/drivers/gpu/drm/msm/sde/sde_hw_pingpong.c index 49a98bea5386..837edeeba4c6 100644 --- a/drivers/gpu/drm/msm/sde/sde_hw_pingpong.c +++ b/drivers/gpu/drm/msm/sde/sde_hw_pingpong.c @@ -116,10 +116,14 @@ int sde_hw_pp_get_vsync_info(struct sde_hw_pingpong *pp, struct sde_hw_pp_vsync_info *info) { struct sde_hw_blk_reg_map *c = &pp->hw; + u32 val; - info->init_val = SDE_REG_READ(c, PP_VSYNC_INIT_VAL) & 0xffff; - info->vsync_count = SDE_REG_READ(c, PP_SYNC_CONFIG_HEIGHT) & 0xffff; - info->line_count = SDE_REG_READ(c, PP_INT_COUNT_VAL) & 0xffff; + val = SDE_REG_READ(c, PP_VSYNC_INIT_VAL); + info->init_val = val & 0xffff; + + val = SDE_REG_READ(c, PP_INT_COUNT_VAL); + info->vsync_count = (val & 0xffff0000) >> 16; + info->line_count = val & 0xffff; return 0; } @@ -158,3 +162,7 @@ struct sde_hw_pingpong *sde_hw_pingpong_init(enum sde_pingpong idx, return c; } +void sde_hw_pingpong_destroy(struct sde_hw_pingpong *pp) +{ + kfree(pp); +} diff --git a/drivers/gpu/drm/msm/sde/sde_hw_pingpong.h b/drivers/gpu/drm/msm/sde/sde_hw_pingpong.h index a2bf86fb98f7..fc3bea54b485 100644 --- a/drivers/gpu/drm/msm/sde/sde_hw_pingpong.h +++ b/drivers/gpu/drm/msm/sde/sde_hw_pingpong.h @@ -102,14 +102,22 @@ struct sde_hw_pingpong { }; /** - * sde_hw_pingpong_init(): Initializes the pingpong driver for the passed - * pingpong idx. - * @idx: pingpong index for which driver object is required - * @addr: mapped register io address of MDP - * @m : pointer to mdss catalog data + * sde_hw_pingpong_init - initializes the pingpong driver for the passed + * pingpong idx. + * @idx: Pingpong index for which driver object is required + * @addr: Mapped register io address of MDP + * @m: Pointer to mdss catalog data + * Returns: Error code or allocated sde_hw_pingpong context */ struct sde_hw_pingpong *sde_hw_pingpong_init(enum sde_pingpong idx, void __iomem *addr, struct sde_mdss_cfg *m); +/** + * sde_hw_pingpong_destroy - destroys pingpong driver context + * should be called to free the context + * @pp: Pointer to PP driver context returned by sde_hw_pingpong_init + */ +void sde_hw_pingpong_destroy(struct sde_hw_pingpong *pp); + #endif /*_SDE_HW_PINGPONG_H */ |
