From: Jani Nikula <jani.nikula@linux.intel.com>
To: Ville Syrjala <ville.syrjala@linux.intel.com>,
intel-gfx@lists.freedesktop.org
Subject: Re: [Intel-gfx] [PATCH] drm/i915: Fix VLV/CHV HDMI/DP audio enable
Date: Thu, 08 Dec 2022 15:45:41 +0200 [thread overview]
Message-ID: <87wn72ypoa.fsf@intel.com> (raw)
In-Reply-To: <20221207225219.29060-1-ville.syrjala@linux.intel.com>
On Thu, 08 Dec 2022, Ville Syrjala <ville.syrjala@linux.intel.com> wrote:
> From: Ville Syrjälä <ville.syrjala@linux.intel.com>
>
> Despite what I claimed in commit c3c5dc1d9224
> ("drm/i915/audio: Do the vblank waits") the vblank
> interrupts are in fact not enabled yet when we do the
> audio enable sequence on VLV/CHV (all other platforms are
> fine).
>
> Reorder the enable sequence on VLV/CHV to match that of the
> other platforms so that the audio enable happens after the
> pipe has been enabled.
>
> Fixes: c3c5dc1d9224 ("drm/i915/audio: Do the vblank waits")
> Signed-off-by: Ville Syrjälä <ville.syrjala@linux.intel.com>
> ---
> drivers/gpu/drm/i915/display/g4x_dp.c | 4 +--
> drivers/gpu/drm/i915/display/g4x_hdmi.c | 41 ++++++++++++++++---------
> 2 files changed, 29 insertions(+), 16 deletions(-)
>
> diff --git a/drivers/gpu/drm/i915/display/g4x_dp.c b/drivers/gpu/drm/i915/display/g4x_dp.c
> index 3593938dcd87..24ef36ec2d3d 100644
> --- a/drivers/gpu/drm/i915/display/g4x_dp.c
> +++ b/drivers/gpu/drm/i915/display/g4x_dp.c
> @@ -673,8 +673,6 @@ static void intel_enable_dp(struct intel_atomic_state *state,
> intel_dp_pcon_dsc_configure(intel_dp, pipe_config);
> intel_dp_start_link_train(intel_dp, pipe_config);
> intel_dp_stop_link_train(intel_dp, pipe_config);
> -
> - intel_audio_codec_enable(encoder, pipe_config, conn_state);
> }
>
> static void g4x_enable_dp(struct intel_atomic_state *state,
> @@ -683,6 +681,7 @@ static void g4x_enable_dp(struct intel_atomic_state *state,
> const struct drm_connector_state *conn_state)
> {
> intel_enable_dp(state, encoder, pipe_config, conn_state);
> + intel_audio_codec_enable(encoder, pipe_config, conn_state);
> intel_edp_backlight_on(pipe_config, conn_state);
> }
>
> @@ -691,6 +690,7 @@ static void vlv_enable_dp(struct intel_atomic_state *state,
> const struct intel_crtc_state *pipe_config,
> const struct drm_connector_state *conn_state)
> {
> + intel_audio_codec_enable(encoder, pipe_config, conn_state);
> intel_edp_backlight_on(pipe_config, conn_state);
> }
>
> diff --git a/drivers/gpu/drm/i915/display/g4x_hdmi.c b/drivers/gpu/drm/i915/display/g4x_hdmi.c
> index 121caeaa409b..c3580d96765c 100644
> --- a/drivers/gpu/drm/i915/display/g4x_hdmi.c
> +++ b/drivers/gpu/drm/i915/display/g4x_hdmi.c
> @@ -157,24 +157,32 @@ static void intel_hdmi_get_config(struct intel_encoder *encoder,
> &pipe_config->infoframes.hdmi);
> }
>
> +static void g4x_hdmi_enable_port(struct intel_encoder *encoder,
> + const struct intel_crtc_state *pipe_config)
> +{
> + struct drm_device *dev = encoder->base.dev;
> + struct drm_i915_private *dev_priv = to_i915(dev);
Could clean up some of the drm_device and dev_priv on top.
Reviewed-by: Jani Nikula <jani.nikula@intel.com>
> + struct intel_hdmi *intel_hdmi = enc_to_intel_hdmi(encoder);
> + u32 temp;
> +
> + temp = intel_de_read(dev_priv, intel_hdmi->hdmi_reg);
> +
> + temp |= SDVO_ENABLE;
> + if (pipe_config->has_audio)
> + temp |= HDMI_AUDIO_ENABLE;
> +
> + intel_de_write(dev_priv, intel_hdmi->hdmi_reg, temp);
> + intel_de_posting_read(dev_priv, intel_hdmi->hdmi_reg);
> +}
> +
> static void g4x_enable_hdmi(struct intel_atomic_state *state,
> struct intel_encoder *encoder,
> const struct intel_crtc_state *pipe_config,
> const struct drm_connector_state *conn_state)
> {
> - struct drm_device *dev = encoder->base.dev;
> - struct drm_i915_private *dev_priv = to_i915(dev);
> - struct intel_hdmi *intel_hdmi = enc_to_intel_hdmi(encoder);
> - u32 temp;
> + struct drm_i915_private *dev_priv = to_i915(encoder->base.dev);
>
> - temp = intel_de_read(dev_priv, intel_hdmi->hdmi_reg);
> -
> - temp |= SDVO_ENABLE;
> - if (pipe_config->has_audio)
> - temp |= HDMI_AUDIO_ENABLE;
> -
> - intel_de_write(dev_priv, intel_hdmi->hdmi_reg, temp);
> - intel_de_posting_read(dev_priv, intel_hdmi->hdmi_reg);
> + g4x_hdmi_enable_port(encoder, pipe_config);
>
> drm_WARN_ON(&dev_priv->drm, pipe_config->has_audio &&
> !pipe_config->has_hdmi_sink);
> @@ -294,6 +302,11 @@ static void vlv_enable_hdmi(struct intel_atomic_state *state,
> const struct intel_crtc_state *pipe_config,
> const struct drm_connector_state *conn_state)
> {
> + struct drm_i915_private *dev_priv = to_i915(encoder->base.dev);
> +
> + drm_WARN_ON(&dev_priv->drm, pipe_config->has_audio &&
> + !pipe_config->has_hdmi_sink);
> + intel_audio_codec_enable(encoder, pipe_config, conn_state);
> }
>
> static void intel_disable_hdmi(struct intel_atomic_state *state,
> @@ -415,7 +428,7 @@ static void vlv_hdmi_pre_enable(struct intel_atomic_state *state,
> pipe_config->has_infoframe,
> pipe_config, conn_state);
>
> - g4x_enable_hdmi(state, encoder, pipe_config, conn_state);
> + g4x_hdmi_enable_port(encoder, pipe_config);
>
> vlv_wait_port_ready(dev_priv, dig_port, 0x0);
> }
> @@ -492,7 +505,7 @@ static void chv_hdmi_pre_enable(struct intel_atomic_state *state,
> pipe_config->has_infoframe,
> pipe_config, conn_state);
>
> - g4x_enable_hdmi(state, encoder, pipe_config, conn_state);
> + g4x_hdmi_enable_port(encoder, pipe_config);
>
> vlv_wait_port_ready(dev_priv, dig_port, 0x0);
--
Jani Nikula, Intel Open Source Graphics Center
prev parent reply other threads:[~2022-12-08 13:45 UTC|newest]
Thread overview: 4+ messages / expand[flat|nested] mbox.gz Atom feed top
2022-12-07 22:52 [Intel-gfx] [PATCH] drm/i915: Fix VLV/CHV HDMI/DP audio enable Ville Syrjala
2022-12-07 23:34 ` [Intel-gfx] ✓ Fi.CI.BAT: success for " Patchwork
2022-12-08 7:23 ` [Intel-gfx] ✗ Fi.CI.IGT: failure " Patchwork
2022-12-08 13:45 ` Jani Nikula [this message]
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=87wn72ypoa.fsf@intel.com \
--to=jani.nikula@linux.intel.com \
--cc=intel-gfx@lists.freedesktop.org \
--cc=ville.syrjala@linux.intel.com \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.