drm/i915/sdvo: Precompute the ELD
authorVille Syrjälä <ville.syrjala@linux.intel.com>
Tue, 24 Jan 2023 14:46:22 +0000 (16:46 +0200)
committerVille Syrjälä <ville.syrjala@linux.intel.com>
Wed, 25 Jan 2023 10:23:48 +0000 (12:23 +0200)
Use the precomputed crtc_state->eld for audio setup on SDVO
just like we do with native HDMI.

Cc: Chaitanya Kumar Borah <chaitanya.kumar.borah@intel.com>
Cc: Takashi Iwai <tiwai@suse.de>
Reviewed-by: Jani Nikula <jani.nikula@intel.com>
Reviewed-by: Kai Vehmanen <kai.vehmanen@linux.intel.com>
Signed-off-by: Ville Syrjälä <ville.syrjala@linux.intel.com>
Link: https://patchwork.freedesktop.org/patch/msgid/20230124144628.4649-8-ville.syrjala@linux.intel.com
drivers/gpu/drm/i915/display/intel_sdvo.c

index 21805c15d5eb8ab93435d5e935e0db50c1879c0a..c0d7d5272eb853fa9473f25af0ce62f6201700a0 100644 (file)
@@ -39,6 +39,7 @@
 #include "i915_drv.h"
 #include "i915_reg.h"
 #include "intel_atomic.h"
+#include "intel_audio.h"
 #include "intel_connector.h"
 #include "intel_crtc.h"
 #include "intel_de.h"
@@ -1378,7 +1379,9 @@ static int intel_sdvo_compute_config(struct intel_encoder *encoder,
 
        pipe_config->has_hdmi_sink = intel_has_hdmi_sink(intel_sdvo, conn_state);
 
-       pipe_config->has_audio = intel_sdvo_has_audio(encoder, pipe_config, conn_state);
+       pipe_config->has_audio =
+               intel_sdvo_has_audio(encoder, pipe_config, conn_state) &&
+               intel_audio_compute_config(encoder, pipe_config, conn_state);
 
        pipe_config->limited_color_range =
                intel_sdvo_limited_color_range(encoder, pipe_config,
@@ -1753,12 +1756,7 @@ static void intel_sdvo_enable_audio(struct intel_sdvo *intel_sdvo,
                                    const struct intel_crtc_state *crtc_state,
                                    const struct drm_connector_state *conn_state)
 {
-       const struct drm_display_mode *adjusted_mode =
-               &crtc_state->hw.adjusted_mode;
-       struct drm_connector *connector = conn_state->connector;
-       u8 *eld = connector->eld;
-
-       eld[6] = drm_av_sync_delay(connector, adjusted_mode) / 2;
+       const u8 *eld = crtc_state->eld;
 
        intel_sdvo_set_audio_state(intel_sdvo, 0);