[Intel-gfx] [PATCH 4/9] drm/i915: Move LPT PCH readout code
David Airlie
airlied at redhat.com
Mon Oct 18 00:19:31 UTC 2021
On Fri, Oct 15, 2021 at 5:16 PM Ville Syrjala
<ville.syrjala at linux.intel.com> wrote:
>
> From: Ville Syrjälä <ville.syrjala at linux.intel.com>
>
> Nuke the hsw_get_ddi_port_state() eyesore by putting the
> readout code into intel_pch_display.c, and calling it directly
> from hsw_crt_get_config().
>
> Cc: Dave Airlie <airlied at redhat.com>
> Cc: Jani Nikula <jani.nikula at intel.com>
> Signed-off-by: Ville Syrjälä <ville.syrjala at linux.intel.com>
> ---
> drivers/gpu/drm/i915/display/intel_crt.c | 2 +
> drivers/gpu/drm/i915/display/intel_display.c | 46 ++-----------------
> drivers/gpu/drm/i915/display/intel_display.h | 2 +
> .../gpu/drm/i915/display/intel_pch_display.c | 18 ++++++++
> .../gpu/drm/i915/display/intel_pch_display.h | 1 +
> 5 files changed, 26 insertions(+), 43 deletions(-)
>
> diff --git a/drivers/gpu/drm/i915/display/intel_crt.c b/drivers/gpu/drm/i915/display/intel_crt.c
> index 4038ae342ea1..03cfae46f92f 100644
> --- a/drivers/gpu/drm/i915/display/intel_crt.c
> +++ b/drivers/gpu/drm/i915/display/intel_crt.c
> @@ -147,6 +147,8 @@ static void hsw_crt_get_config(struct intel_encoder *encoder,
> {
> struct drm_i915_private *dev_priv = to_i915(encoder->base.dev);
>
> + lpt_pch_get_config(pipe_config);
> +
> hsw_ddi_get_config(encoder, pipe_config);
>
> pipe_config->hw.adjusted_mode.flags &= ~(DRM_MODE_FLAG_PHSYNC |
> diff --git a/drivers/gpu/drm/i915/display/intel_display.c b/drivers/gpu/drm/i915/display/intel_display.c
> index 2ee02c16bd1c..8f65b8b6a306 100644
> --- a/drivers/gpu/drm/i915/display/intel_display.c
> +++ b/drivers/gpu/drm/i915/display/intel_display.c
> @@ -4090,8 +4090,8 @@ void intel_dp_get_m_n(struct intel_crtc *crtc,
> &pipe_config->dp_m2_n2);
> }
>
> -static void ilk_get_fdi_m_n_config(struct intel_crtc *crtc,
> - struct intel_crtc_state *pipe_config)
> +void ilk_get_fdi_m_n_config(struct intel_crtc *crtc,
> + struct intel_crtc_state *pipe_config)
> {
> intel_cpu_transcoder_get_m_n(crtc, pipe_config->cpu_transcoder,
> &pipe_config->fdi_m_n, NULL);
> @@ -4486,45 +4486,6 @@ static bool bxt_get_dsi_transcoder_state(struct intel_crtc *crtc,
> return transcoder_is_dsi(pipe_config->cpu_transcoder);
> }
>
> -static void hsw_get_ddi_port_state(struct intel_crtc *crtc,
> - struct intel_crtc_state *pipe_config)
> -{
> - struct drm_i915_private *dev_priv = to_i915(crtc->base.dev);
> - enum transcoder cpu_transcoder = pipe_config->cpu_transcoder;
> - enum port port;
> - u32 tmp;
> -
> - if (transcoder_is_dsi(cpu_transcoder)) {
> - port = (cpu_transcoder == TRANSCODER_DSI_A) ?
> - PORT_A : PORT_B;
> - } else {
> - tmp = intel_de_read(dev_priv,
> - TRANS_DDI_FUNC_CTL(cpu_transcoder));
> - if (!(tmp & TRANS_DDI_FUNC_ENABLE))
> - return;
> - if (DISPLAY_VER(dev_priv) >= 12)
> - port = TGL_TRANS_DDI_FUNC_CTL_VAL_TO_PORT(tmp);
> - else
> - port = TRANS_DDI_FUNC_CTL_VAL_TO_PORT(tmp);
> - }
Where does thie code go? is it necessary, maybe make a precursor patch
showing why this isn't needed?
or just more commentary on why it's not needed anymore, since PORT_E
is hardcoded to the crt?
This is also the only use of those two macros
*DDI_FUNC_CTL_VAL_TO_PORT(tmp), should those be nuked as well?
Dave.
> -
> - /*
> - * Haswell has only FDI/PCH transcoder A. It is which is connected to
> - * DDI E. So just check whether this pipe is wired to DDI E and whether
> - * the PCH transcoder is on.
> - */
> - if (DISPLAY_VER(dev_priv) < 9 &&
> - (port == PORT_E) && intel_de_read(dev_priv, LPT_TRANSCONF) & TRANS_ENABLE) {
> - pipe_config->has_pch_encoder = true;
> -
> - tmp = intel_de_read(dev_priv, FDI_RX_CTL(PIPE_A));
> - pipe_config->fdi_lanes = ((FDI_DP_PORT_WIDTH_MASK & tmp) >>
> - FDI_DP_PORT_WIDTH_SHIFT) + 1;
> -
> - ilk_get_fdi_m_n_config(crtc, pipe_config);
> - }
> -}
> -
> static bool hsw_get_pipe_config(struct intel_crtc *crtc,
> struct intel_crtc_state *pipe_config)
> {
> @@ -4562,8 +4523,7 @@ static bool hsw_get_pipe_config(struct intel_crtc *crtc,
> /* we cannot read out most state, so don't bother.. */
> pipe_config->quirks |= PIPE_CONFIG_QUIRK_BIGJOINER_SLAVE;
> } else if (!transcoder_is_dsi(pipe_config->cpu_transcoder) ||
> - DISPLAY_VER(dev_priv) >= 11) {
> - hsw_get_ddi_port_state(crtc, pipe_config);
> + DISPLAY_VER(dev_priv) >= 11) {
> intel_get_transcoder_timings(crtc, pipe_config);
> }
>
> diff --git a/drivers/gpu/drm/i915/display/intel_display.h b/drivers/gpu/drm/i915/display/intel_display.h
> index 93c84f2174b5..5bc8d8913178 100644
> --- a/drivers/gpu/drm/i915/display/intel_display.h
> +++ b/drivers/gpu/drm/i915/display/intel_display.h
> @@ -584,6 +584,8 @@ void intel_dp_get_m_n(struct intel_crtc *crtc,
> struct intel_crtc_state *pipe_config);
> void intel_dp_set_m_n(const struct intel_crtc_state *crtc_state,
> enum link_m_n_set m_n);
> +void ilk_get_fdi_m_n_config(struct intel_crtc *crtc,
> + struct intel_crtc_state *pipe_config);
> int intel_dotclock_calculate(int link_freq, const struct intel_link_m_n *m_n);
>
> bool hsw_crtc_state_ips_capable(const struct intel_crtc_state *crtc_state);
> diff --git a/drivers/gpu/drm/i915/display/intel_pch_display.c b/drivers/gpu/drm/i915/display/intel_pch_display.c
> index 50995c4f2aaa..df7195ed1aaa 100644
> --- a/drivers/gpu/drm/i915/display/intel_pch_display.c
> +++ b/drivers/gpu/drm/i915/display/intel_pch_display.c
> @@ -366,3 +366,21 @@ void lpt_pch_enable(struct intel_atomic_state *state,
>
> lpt_enable_pch_transcoder(dev_priv, cpu_transcoder);
> }
> +
> +void lpt_pch_get_config(struct intel_crtc_state *crtc_state)
> +{
> + struct intel_crtc *crtc = to_intel_crtc(crtc_state->uapi.crtc);
> + struct drm_i915_private *dev_priv = to_i915(crtc->base.dev);
> + u32 tmp;
> +
> + if ((intel_de_read(dev_priv, LPT_TRANSCONF) & TRANS_ENABLE) == 0)
> + return;
> +
> + crtc_state->has_pch_encoder = true;
> +
> + tmp = intel_de_read(dev_priv, FDI_RX_CTL(PIPE_A));
> + crtc_state->fdi_lanes = ((FDI_DP_PORT_WIDTH_MASK & tmp) >>
> + FDI_DP_PORT_WIDTH_SHIFT) + 1;
> +
> + ilk_get_fdi_m_n_config(crtc, crtc_state);
> +}
> diff --git a/drivers/gpu/drm/i915/display/intel_pch_display.h b/drivers/gpu/drm/i915/display/intel_pch_display.h
> index 7f9df2c13cf3..e0ff331c0bc6 100644
> --- a/drivers/gpu/drm/i915/display/intel_pch_display.h
> +++ b/drivers/gpu/drm/i915/display/intel_pch_display.h
> @@ -18,5 +18,6 @@ void ilk_pch_enable(struct intel_atomic_state *state,
> void lpt_disable_pch_transcoder(struct drm_i915_private *dev_priv);
> void lpt_pch_enable(struct intel_atomic_state *state,
> struct intel_crtc *crtc);
> +void lpt_pch_get_config(struct intel_crtc_state *crtc_state);
>
> #endif
> --
> 2.32.0
>
More information about the Intel-gfx
mailing list