From: Jani Nikula <jani.nikula@linux.intel.com>
To: Mitul Golani <mitulkumar.ajitkumar.golani@intel.com>,
intel-gfx@lists.freedesktop.org
Subject: Re: [Intel-gfx] [RFC 1/3] drm/i915/hdmi: Optimize source audio parameter handling
Date: Mon, 26 Jun 2023 19:45:59 +0300 [thread overview]
Message-ID: <875y7auq7s.fsf@intel.com> (raw)
In-Reply-To: <20230626163819.2759500-2-mitulkumar.ajitkumar.golani@intel.com>
On Mon, 26 Jun 2023, Mitul Golani <mitulkumar.ajitkumar.golani@intel.com> wrote:
> To enhance the relationship between the has_audio and the source
> audio parameter, create a separate crtc_state audio property and
> add the has_audio parameter into it. Additionally, update the
> access of the has_audio parameter from the crtc_state pointer as
> it is wrapped under the audio. These modifications establish
> a more cohesive structure and improve the accessibility and
> organization of the audio-related parameters within the codebase.
The patch subject does not reflect this.
Other than that,
Reviewed-by: Jani Nikula <jani.nikula@intel.com>
>
> --v1:
> - add audio instead of audio_config in crtc_state
> - add only has_audio then update related parameter access
> - refactor other member to different commit where it is being used
> - update commit message and header
>
> Signed-off-by: Mitul Golani <mitulkumar.ajitkumar.golani@intel.com>
> ---
> drivers/gpu/drm/i915/display/g4x_dp.c | 4 ++--
> drivers/gpu/drm/i915/display/g4x_hdmi.c | 16 ++++++++--------
> drivers/gpu/drm/i915/display/intel_audio.c | 6 +++---
> drivers/gpu/drm/i915/display/intel_cdclk.c | 6 +++---
> .../gpu/drm/i915/display/intel_crtc_state_dump.c | 4 ++--
> drivers/gpu/drm/i915/display/intel_ddi.c | 2 +-
> drivers/gpu/drm/i915/display/intel_display.c | 4 ++--
> .../gpu/drm/i915/display/intel_display_types.h | 6 +++---
> drivers/gpu/drm/i915/display/intel_dp.c | 2 +-
> drivers/gpu/drm/i915/display/intel_dp_mst.c | 2 +-
> drivers/gpu/drm/i915/display/intel_hdmi.c | 2 +-
> drivers/gpu/drm/i915/display/intel_sdvo.c | 10 +++++-----
> 12 files changed, 32 insertions(+), 32 deletions(-)
>
> diff --git a/drivers/gpu/drm/i915/display/g4x_dp.c b/drivers/gpu/drm/i915/display/g4x_dp.c
> index c58a3f249a01..af76a71e757c 100644
> --- a/drivers/gpu/drm/i915/display/g4x_dp.c
> +++ b/drivers/gpu/drm/i915/display/g4x_dp.c
> @@ -345,7 +345,7 @@ static void intel_dp_get_config(struct intel_encoder *encoder,
>
> tmp = intel_de_read(dev_priv, intel_dp->output_reg);
>
> - pipe_config->has_audio = tmp & DP_AUDIO_OUTPUT_ENABLE && port != PORT_A;
> + pipe_config->audio.has_audio = tmp & DP_AUDIO_OUTPUT_ENABLE && port != PORT_A;
>
> if (HAS_PCH_CPT(dev_priv) && port != PORT_A) {
> u32 trans_dp = intel_de_read(dev_priv,
> @@ -625,7 +625,7 @@ static void intel_dp_enable_port(struct intel_dp *intel_dp,
> * fail when the power sequencer is freshly used for this port.
> */
> intel_dp->DP |= DP_PORT_EN;
> - if (crtc_state->has_audio)
> + if (crtc_state->audio.has_audio)
> intel_dp->DP |= DP_AUDIO_OUTPUT_ENABLE;
>
> intel_de_write(dev_priv, intel_dp->output_reg, intel_dp->DP);
> diff --git a/drivers/gpu/drm/i915/display/g4x_hdmi.c b/drivers/gpu/drm/i915/display/g4x_hdmi.c
> index 8c71e3ede680..568bfc3c6c47 100644
> --- a/drivers/gpu/drm/i915/display/g4x_hdmi.c
> +++ b/drivers/gpu/drm/i915/display/g4x_hdmi.c
> @@ -178,7 +178,7 @@ static void intel_hdmi_get_config(struct intel_encoder *encoder,
> pipe_config->has_infoframe = true;
>
> if (tmp & HDMI_AUDIO_ENABLE)
> - pipe_config->has_audio = true;
> + pipe_config->audio.has_audio = true;
>
> if (!HAS_PCH_SPLIT(dev_priv) &&
> tmp & HDMI_COLOR_RANGE_16_235)
> @@ -224,7 +224,7 @@ static void g4x_hdmi_enable_port(struct intel_encoder *encoder,
> temp = intel_de_read(dev_priv, intel_hdmi->hdmi_reg);
>
> temp |= SDVO_ENABLE;
> - if (pipe_config->has_audio)
> + if (pipe_config->audio.has_audio)
> temp |= HDMI_AUDIO_ENABLE;
>
> intel_de_write(dev_priv, intel_hdmi->hdmi_reg, temp);
> @@ -240,7 +240,7 @@ static void g4x_enable_hdmi(struct intel_atomic_state *state,
>
> g4x_hdmi_enable_port(encoder, pipe_config);
>
> - drm_WARN_ON(&dev_priv->drm, pipe_config->has_audio &&
> + drm_WARN_ON(&dev_priv->drm, pipe_config->audio.has_audio &&
> !pipe_config->has_hdmi_sink);
> intel_audio_codec_enable(encoder, pipe_config, conn_state);
> }
> @@ -258,7 +258,7 @@ static void ibx_enable_hdmi(struct intel_atomic_state *state,
> temp = intel_de_read(dev_priv, intel_hdmi->hdmi_reg);
>
> temp |= SDVO_ENABLE;
> - if (pipe_config->has_audio)
> + if (pipe_config->audio.has_audio)
> temp |= HDMI_AUDIO_ENABLE;
>
> /*
> @@ -293,7 +293,7 @@ static void ibx_enable_hdmi(struct intel_atomic_state *state,
> intel_de_posting_read(dev_priv, intel_hdmi->hdmi_reg);
> }
>
> - drm_WARN_ON(&dev_priv->drm, pipe_config->has_audio &&
> + drm_WARN_ON(&dev_priv->drm, pipe_config->audio.has_audio &&
> !pipe_config->has_hdmi_sink);
> intel_audio_codec_enable(encoder, pipe_config, conn_state);
> }
> @@ -313,7 +313,7 @@ static void cpt_enable_hdmi(struct intel_atomic_state *state,
> temp = intel_de_read(dev_priv, intel_hdmi->hdmi_reg);
>
> temp |= SDVO_ENABLE;
> - if (pipe_config->has_audio)
> + if (pipe_config->audio.has_audio)
> temp |= HDMI_AUDIO_ENABLE;
>
> /*
> @@ -348,7 +348,7 @@ static void cpt_enable_hdmi(struct intel_atomic_state *state,
> TRANS_CHICKEN1_HDMIUNIT_GC_DISABLE, 0);
> }
>
> - drm_WARN_ON(&dev_priv->drm, pipe_config->has_audio &&
> + drm_WARN_ON(&dev_priv->drm, pipe_config->audio.has_audio &&
> !pipe_config->has_hdmi_sink);
> intel_audio_codec_enable(encoder, pipe_config, conn_state);
> }
> @@ -360,7 +360,7 @@ static void vlv_enable_hdmi(struct intel_atomic_state *state,
> {
> struct drm_i915_private *dev_priv = to_i915(encoder->base.dev);
>
> - drm_WARN_ON(&dev_priv->drm, pipe_config->has_audio &&
> + drm_WARN_ON(&dev_priv->drm, pipe_config->audio.has_audio &&
> !pipe_config->has_hdmi_sink);
> intel_audio_codec_enable(encoder, pipe_config, conn_state);
> }
> diff --git a/drivers/gpu/drm/i915/display/intel_audio.c b/drivers/gpu/drm/i915/display/intel_audio.c
> index 3d9c9b4f27f8..e20ffc8e9654 100644
> --- a/drivers/gpu/drm/i915/display/intel_audio.c
> +++ b/drivers/gpu/drm/i915/display/intel_audio.c
> @@ -815,7 +815,7 @@ void intel_audio_codec_enable(struct intel_encoder *encoder,
> struct intel_audio_state *audio_state;
> enum port port = encoder->port;
>
> - if (!crtc_state->has_audio)
> + if (!crtc_state->audio.has_audio)
> return;
>
> drm_dbg_kms(&i915->drm, "[CONNECTOR:%d:%s][ENCODER:%d:%s] Enable audio codec on [CRTC:%d:%s], %u bytes ELD\n",
> @@ -874,7 +874,7 @@ void intel_audio_codec_disable(struct intel_encoder *encoder,
> struct intel_audio_state *audio_state;
> enum port port = encoder->port;
>
> - if (!old_crtc_state->has_audio)
> + if (!old_crtc_state->audio.has_audio)
> return;
>
> drm_dbg_kms(&i915->drm, "[CONNECTOR:%d:%s][ENCODER:%d:%s] Disable audio codec on [CRTC:%d:%s]\n",
> @@ -930,7 +930,7 @@ void intel_audio_codec_get_config(struct intel_encoder *encoder,
> {
> struct drm_i915_private *i915 = to_i915(encoder->base.dev);
>
> - if (!crtc_state->has_audio)
> + if (!crtc_state->audio.has_audio)
> return;
>
> if (i915->display.funcs.audio)
> diff --git a/drivers/gpu/drm/i915/display/intel_cdclk.c b/drivers/gpu/drm/i915/display/intel_cdclk.c
> index 4207863b7b2a..cb87c2e0cdaa 100644
> --- a/drivers/gpu/drm/i915/display/intel_cdclk.c
> +++ b/drivers/gpu/drm/i915/display/intel_cdclk.c
> @@ -2553,7 +2553,7 @@ int intel_crtc_compute_min_cdclk(const struct intel_crtc_state *crtc_state)
> * restriction for GLK is 316.8 MHz.
> */
> if (intel_crtc_has_dp_encoder(crtc_state) &&
> - crtc_state->has_audio &&
> + crtc_state->audio.has_audio &&
> crtc_state->port_clock >= 540000 &&
> crtc_state->lane_count == 4) {
> if (DISPLAY_VER(dev_priv) == 10) {
> @@ -2569,7 +2569,7 @@ int intel_crtc_compute_min_cdclk(const struct intel_crtc_state *crtc_state)
> * According to BSpec, "The CD clock frequency must be at least twice
> * the frequency of the Azalia BCLK." and BCLK is 96 MHz by default.
> */
> - if (crtc_state->has_audio && DISPLAY_VER(dev_priv) >= 9)
> + if (crtc_state->audio.has_audio && DISPLAY_VER(dev_priv) >= 9)
> min_cdclk = max(2 * 96000, min_cdclk);
>
> /*
> @@ -2580,7 +2580,7 @@ int intel_crtc_compute_min_cdclk(const struct intel_crtc_state *crtc_state)
> * 162 | 200 or higher"
> */
> if ((IS_VALLEYVIEW(dev_priv) || IS_CHERRYVIEW(dev_priv)) &&
> - intel_crtc_has_dp_encoder(crtc_state) && crtc_state->has_audio)
> + intel_crtc_has_dp_encoder(crtc_state) && crtc_state->audio.has_audio)
> min_cdclk = max(crtc_state->port_clock, min_cdclk);
>
> /*
> diff --git a/drivers/gpu/drm/i915/display/intel_crtc_state_dump.c b/drivers/gpu/drm/i915/display/intel_crtc_state_dump.c
> index 8d4640d0fd34..b7d1be42bf0f 100644
> --- a/drivers/gpu/drm/i915/display/intel_crtc_state_dump.c
> +++ b/drivers/gpu/drm/i915/display/intel_crtc_state_dump.c
> @@ -265,7 +265,7 @@ void intel_crtc_state_dump(const struct intel_crtc_state *pipe_config,
>
> drm_dbg_kms(&i915->drm,
> "audio: %i, infoframes: %i, infoframes enabled: 0x%x\n",
> - pipe_config->has_audio, pipe_config->has_infoframe,
> + pipe_config->audio.has_audio, pipe_config->has_infoframe,
> pipe_config->infoframes.enable);
>
> if (pipe_config->infoframes.enable &
> @@ -291,7 +291,7 @@ void intel_crtc_state_dump(const struct intel_crtc_state *pipe_config,
> intel_hdmi_infoframe_enable(DP_SDP_VSC))
> intel_dump_dp_vsc_sdp(i915, &pipe_config->infoframes.vsc);
>
> - if (pipe_config->has_audio)
> + if (pipe_config->audio.has_audio)
> intel_dump_buffer(i915, "ELD: ", pipe_config->eld,
> drm_eld_size(pipe_config->eld));
>
> diff --git a/drivers/gpu/drm/i915/display/intel_ddi.c b/drivers/gpu/drm/i915/display/intel_ddi.c
> index 61722556bb47..ff738ca1e118 100644
> --- a/drivers/gpu/drm/i915/display/intel_ddi.c
> +++ b/drivers/gpu/drm/i915/display/intel_ddi.c
> @@ -3782,7 +3782,7 @@ static void intel_ddi_get_config(struct intel_encoder *encoder,
>
> intel_ddi_mso_get_config(encoder, pipe_config);
>
> - pipe_config->has_audio =
> + pipe_config->audio.has_audio =
> intel_ddi_is_audio_enabled(dev_priv, cpu_transcoder);
>
> if (encoder->type == INTEL_OUTPUT_EDP)
> diff --git a/drivers/gpu/drm/i915/display/intel_display.c b/drivers/gpu/drm/i915/display/intel_display.c
> index eed01957bdb9..d87055bd7b11 100644
> --- a/drivers/gpu/drm/i915/display/intel_display.c
> +++ b/drivers/gpu/drm/i915/display/intel_display.c
> @@ -1857,7 +1857,7 @@ static void get_crtc_power_domains(struct intel_crtc_state *crtc_state,
> set_bit(intel_encoder->power_domain, mask->bits);
> }
>
> - if (HAS_DDI(dev_priv) && crtc_state->has_audio)
> + if (HAS_DDI(dev_priv) && crtc_state->audio.has_audio)
> set_bit(POWER_DOMAIN_AUDIO_MMIO, mask->bits);
>
> if (crtc_state->shared_dpll)
> @@ -5258,7 +5258,7 @@ intel_pipe_config_compare(const struct intel_crtc_state *current_config,
> PIPE_CONF_CHECK_BOOL(has_infoframe);
> PIPE_CONF_CHECK_BOOL(fec_enable);
>
> - PIPE_CONF_CHECK_BOOL_INCOMPLETE(has_audio);
> + PIPE_CONF_CHECK_BOOL_INCOMPLETE(audio.has_audio);
> PIPE_CONF_CHECK_BUFFER(eld, MAX_ELD_BYTES);
>
> PIPE_CONF_CHECK_X(gmch_pfit.control);
> diff --git a/drivers/gpu/drm/i915/display/intel_display_types.h b/drivers/gpu/drm/i915/display/intel_display_types.h
> index 731f2ec04d5c..ebd147180a6e 100644
> --- a/drivers/gpu/drm/i915/display/intel_display_types.h
> +++ b/drivers/gpu/drm/i915/display/intel_display_types.h
> @@ -1129,9 +1129,9 @@ struct intel_crtc_state {
> /* Whether we should send NULL infoframes. Required for audio. */
> bool has_hdmi_sink;
>
> - /* Audio enabled on this pipe. Only valid if either has_hdmi_sink or
> - * has_dp_encoder is set. */
> - bool has_audio;
> + struct {
> + bool has_audio;
> + } audio;
>
> /*
> * Enable dithering, used when the selected pipe bpp doesn't match the
> diff --git a/drivers/gpu/drm/i915/display/intel_dp.c b/drivers/gpu/drm/i915/display/intel_dp.c
> index 9f40da20e88d..d3f250dcb398 100644
> --- a/drivers/gpu/drm/i915/display/intel_dp.c
> +++ b/drivers/gpu/drm/i915/display/intel_dp.c
> @@ -2255,7 +2255,7 @@ intel_dp_compute_config(struct intel_encoder *encoder,
> if (HAS_PCH_SPLIT(dev_priv) && !HAS_DDI(dev_priv) && encoder->port != PORT_A)
> pipe_config->has_pch_encoder = true;
>
> - pipe_config->has_audio =
> + pipe_config->audio.has_audio =
> intel_dp_has_audio(encoder, conn_state) &&
> intel_audio_compute_config(encoder, pipe_config, conn_state);
>
> diff --git a/drivers/gpu/drm/i915/display/intel_dp_mst.c b/drivers/gpu/drm/i915/display/intel_dp_mst.c
> index e3f176a093d2..f6e1bf3d9e25 100644
> --- a/drivers/gpu/drm/i915/display/intel_dp_mst.c
> +++ b/drivers/gpu/drm/i915/display/intel_dp_mst.c
> @@ -322,7 +322,7 @@ static int intel_dp_mst_compute_config(struct intel_encoder *encoder,
> pipe_config->output_format = INTEL_OUTPUT_FORMAT_RGB;
> pipe_config->has_pch_encoder = false;
>
> - pipe_config->has_audio =
> + pipe_config->audio.has_audio =
> intel_dp_mst_has_audio(conn_state) &&
> intel_audio_compute_config(encoder, pipe_config, conn_state);
>
> diff --git a/drivers/gpu/drm/i915/display/intel_hdmi.c b/drivers/gpu/drm/i915/display/intel_hdmi.c
> index 7ac5e6c5e00d..32157bef2eef 100644
> --- a/drivers/gpu/drm/i915/display/intel_hdmi.c
> +++ b/drivers/gpu/drm/i915/display/intel_hdmi.c
> @@ -2302,7 +2302,7 @@ int intel_hdmi_compute_config(struct intel_encoder *encoder,
> if (adjusted_mode->flags & DRM_MODE_FLAG_DBLCLK)
> pipe_config->pixel_multiplier = 2;
>
> - pipe_config->has_audio =
> + pipe_config->audio.has_audio =
> intel_hdmi_has_audio(encoder, pipe_config, conn_state) &&
> intel_audio_compute_config(encoder, pipe_config, conn_state);
>
> diff --git a/drivers/gpu/drm/i915/display/intel_sdvo.c b/drivers/gpu/drm/i915/display/intel_sdvo.c
> index 8298a86d1334..51495f0bcf75 100644
> --- a/drivers/gpu/drm/i915/display/intel_sdvo.c
> +++ b/drivers/gpu/drm/i915/display/intel_sdvo.c
> @@ -1191,7 +1191,7 @@ static void intel_sdvo_get_eld(struct intel_sdvo *intel_sdvo,
> ssize_t len;
> u8 val;
>
> - if (!crtc_state->has_audio)
> + if (!crtc_state->audio.has_audio)
> return;
>
> if (!intel_sdvo_get_value(intel_sdvo, SDVO_CMD_GET_AUDIO_STAT, &val, 1))
> @@ -1406,7 +1406,7 @@ static int intel_sdvo_compute_config(struct intel_encoder *encoder,
>
> pipe_config->has_hdmi_sink = intel_has_hdmi_sink(intel_sdvo_connector, conn_state);
>
> - pipe_config->has_audio =
> + pipe_config->audio.has_audio =
> intel_sdvo_has_audio(encoder, pipe_config, conn_state) &&
> intel_audio_compute_config(encoder, pipe_config, conn_state);
>
> @@ -1760,7 +1760,7 @@ static void intel_sdvo_get_config(struct intel_encoder *encoder,
> if (intel_sdvo_get_value(intel_sdvo, SDVO_CMD_GET_AUDIO_STAT,
> &val, 1)) {
> if (val & SDVO_AUDIO_PRESENCE_DETECT)
> - pipe_config->has_audio = true;
> + pipe_config->audio.has_audio = true;
> }
>
> if (intel_sdvo_get_value(intel_sdvo, SDVO_CMD_GET_ENCODE,
> @@ -1805,7 +1805,7 @@ static void intel_disable_sdvo(struct intel_atomic_state *state,
> struct intel_crtc *crtc = to_intel_crtc(old_crtc_state->uapi.crtc);
> u32 temp;
>
> - if (old_crtc_state->has_audio)
> + if (old_crtc_state->audio.has_audio)
> intel_sdvo_disable_audio(intel_sdvo);
>
> intel_sdvo_set_active_outputs(intel_sdvo, 0);
> @@ -1898,7 +1898,7 @@ static void intel_enable_sdvo(struct intel_atomic_state *state,
> DRM_MODE_DPMS_ON);
> intel_sdvo_set_active_outputs(intel_sdvo, intel_sdvo->attached_output);
>
> - if (pipe_config->has_audio)
> + if (pipe_config->audio.has_audio)
> intel_sdvo_enable_audio(intel_sdvo, pipe_config, conn_state);
> }
--
Jani Nikula, Intel Open Source Graphics Center
next prev parent reply other threads:[~2023-06-26 16:46 UTC|newest]
Thread overview: 13+ messages / expand[flat|nested] mbox.gz Atom feed top
2023-06-26 16:38 [Intel-gfx] [RFC 0/3] Get optimal audio frequency and channels Mitul Golani
2023-06-26 16:38 ` [Intel-gfx] [RFC 1/3] drm/i915/hdmi: Optimize source audio parameter handling Mitul Golani
2023-06-26 16:45 ` Jani Nikula [this message]
2023-06-28 16:37 ` Golani, Mitulkumar Ajitkumar
2023-06-26 16:38 ` [Intel-gfx] [RFC 2/3] drm/i915/display: Configure and initialize HDMI audio capabilities Mitul Golani
2023-06-26 17:04 ` Jani Nikula
2023-06-26 16:38 ` [Intel-gfx] [RFC 3/3] drm/i915/display: Add wrapper to Compute SAD Mitul Golani
2023-06-26 17:18 ` Jani Nikula
2023-06-28 16:43 ` Golani, Mitulkumar Ajitkumar
-- strict thread matches above, loose matches on Subject: below --
2023-06-26 16:46 [Intel-gfx] [RFC 0/3] Get optimal audio frequency and channels Mitul Golani
2023-06-26 16:46 ` [Intel-gfx] [RFC 1/3] drm/i915/hdmi: Optimize source audio parameter handling Mitul Golani
2023-06-15 7:07 [Intel-gfx] [RFC 0/3] Get optimal audio frequency and channels Mitul Golani
2023-06-15 7:07 ` [Intel-gfx] [RFC 1/3] drm/i915/hdmi: Optimize source audio parameter handling Mitul Golani
2023-06-15 6:31 [Intel-gfx] [RFC 0/3] Get optimal audio frequency and channels Mitul Golani
2023-06-15 6:31 ` [Intel-gfx] [RFC 1/3] drm/i915/hdmi: Optimize source audio parameter handling Mitul Golani
2023-06-09 17:42 [Intel-gfx] [RFC 0/3] Get optimal audio frequency and channels Mitul Golani
2023-06-09 17:42 ` [Intel-gfx] [RFC 1/3] drm/i915/hdmi: Optimize source audio parameter handling Mitul Golani
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=875y7auq7s.fsf@intel.com \
--to=jani.nikula@linux.intel.com \
--cc=intel-gfx@lists.freedesktop.org \
--cc=mitulkumar.ajitkumar.golani@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.