[Freedreno] [PATCH 09/14] drm/msm/dpu: make crtc get_mixer_width helper static
Sean Paul
sean at poorly.run
Fri Aug 31 14:40:05 UTC 2018
On Tue, Aug 28, 2018 at 05:39:58PM -0700, Jeykumar Sankaran wrote:
> Mark CRTC get_mixer_width helper API static as it is
> not used outside the file.
>
> Signed-off-by: Jeykumar Sankaran <jsanka at codeaurora.org>
> ---
> drivers/gpu/drm/msm/disp/dpu1/dpu_crtc.c | 21 ++++++++++++++++++---
> drivers/gpu/drm/msm/disp/dpu1/dpu_crtc.h | 18 ------------------
> 2 files changed, 18 insertions(+), 21 deletions(-)
>
> diff --git a/drivers/gpu/drm/msm/disp/dpu1/dpu_crtc.c b/drivers/gpu/drm/msm/disp/dpu1/dpu_crtc.c
> index 92eda3e..e061847 100644
> --- a/drivers/gpu/drm/msm/disp/dpu1/dpu_crtc.c
> +++ b/drivers/gpu/drm/msm/disp/dpu1/dpu_crtc.c
> @@ -47,6 +47,20 @@
> #define LEFT_MIXER 0
> #define RIGHT_MIXER 1
>
> +static inline int _dpu_crtc_get_mixer_width(struct dpu_crtc *dpu_crtc,
> + struct dpu_crtc_state *cstate, struct drm_display_mode *mode)
> +{
> + u32 mixer_width;
> +
> + if (!dpu_crtc || !cstate || !mode)
> + return 0;
> +
> + mixer_width = (cstate->num_mixers == CRTC_DUAL_MIXERS ?
> + mode->hdisplay / CRTC_DUAL_MIXERS : mode->hdisplay);
> +
> + return mixer_width;
> +}
This function feels a little too beefy to be inline.
However(!!):
- None of the NULL checks are needed
- the mixer_width local variable isn't needed
- dpu_crtc isn't even used
- the divisor is always == cstate->num_mixers
So you can actually get an inline-worth function out of this, all of that
simplifies down to:
static inline int dpu_crtc_get_mixer_width(struct dpu_crtc_state *cstate,
struct drm_display_mode *mode)
{
return mode->hdisplay / cstate->num_mixers;
}
> +
> static inline struct dpu_kms *_dpu_crtc_get_kms(struct drm_crtc *crtc)
> {
> struct msm_drm_private *priv;
> @@ -601,7 +615,8 @@ static void _dpu_crtc_setup_lm_bounds(struct drm_crtc *crtc,
> cstate = to_dpu_crtc_state(state);
>
> adj_mode = &state->adjusted_mode;
> - crtc_split_width = dpu_crtc_get_mixer_width(dpu_crtc, cstate, adj_mode);
> + crtc_split_width = _dpu_crtc_get_mixer_width(dpu_crtc, cstate,
> + adj_mode);
>
> for (i = 0; i < dpu_crtc->num_mixers; i++) {
> struct drm_rect *r = &cstate->lm_bounds[i];
> @@ -1299,7 +1314,7 @@ static int dpu_crtc_atomic_check(struct drm_crtc *crtc,
>
> memset(pipe_staged, 0, sizeof(pipe_staged));
>
> - mixer_width = dpu_crtc_get_mixer_width(dpu_crtc, cstate, mode);
> + mixer_width = _dpu_crtc_get_mixer_width(dpu_crtc, cstate, mode);
>
> _dpu_crtc_setup_lm_bounds(crtc, state);
>
> @@ -1536,7 +1551,7 @@ static int _dpu_debugfs_status_show(struct seq_file *s, void *data)
>
> mutex_lock(&dpu_crtc->crtc_lock);
> mode = &crtc->state->adjusted_mode;
> - out_width = dpu_crtc_get_mixer_width(dpu_crtc, cstate, mode);
> + out_width = _dpu_crtc_get_mixer_width(dpu_crtc, cstate, mode);
>
> seq_printf(s, "crtc:%d width:%d height:%d\n", crtc->base.id,
> mode->hdisplay, mode->vdisplay);
> diff --git a/drivers/gpu/drm/msm/disp/dpu1/dpu_crtc.h b/drivers/gpu/drm/msm/disp/dpu1/dpu_crtc.h
> index ec9c538..5e4dc5c 100644
> --- a/drivers/gpu/drm/msm/disp/dpu1/dpu_crtc.h
> +++ b/drivers/gpu/drm/msm/disp/dpu1/dpu_crtc.h
> @@ -238,24 +238,6 @@ struct dpu_crtc_state {
> container_of(x, struct dpu_crtc_state, base)
>
> /**
> - * dpu_crtc_get_mixer_width - get the mixer width
> - * Mixer width will be same as panel width(/2 for split)
> - */
> -static inline int dpu_crtc_get_mixer_width(struct dpu_crtc *dpu_crtc,
> - struct dpu_crtc_state *cstate, struct drm_display_mode *mode)
> -{
> - u32 mixer_width;
> -
> - if (!dpu_crtc || !cstate || !mode)
> - return 0;
> -
> - mixer_width = (dpu_crtc->num_mixers == CRTC_DUAL_MIXERS ?
> - mode->hdisplay / CRTC_DUAL_MIXERS : mode->hdisplay);
> -
> - return mixer_width;
> -}
> -
> -/**
> * dpu_crtc_get_mixer_height - get the mixer height
> * Mixer height will be same as panel height
> */
> --
> The Qualcomm Innovation Center, Inc. is a member of the Code Aurora Forum,
> a Linux Foundation Collaborative Project
>
--
Sean Paul, Software Engineer, Google / Chromium OS
More information about the Freedreno
mailing list