mirror of
https://git.kernel.org/pub/scm/linux/kernel/git/chenhuacai/linux-loongson
synced 2025-09-02 16:44:59 +00:00

Adjust the enabling/disabling steps of the DP audio SDP splitting according to a recent Bspec update. This moves the enabling to the audio codec enable sequence after the transcoder is enabled and disables SDP splitting explicitly during the audio disable sequence. Bspec requires waiting for a vblank event after the transcoder is enabled and before SDP splitting is enabled. There is no need for an explicit wait for this, since after the transcoder is enabled this vblank event is guaranteed to have happened via a flip done wait (see intel_atomic_commit_tail() -> drm_atomic_helper_wait_for_flip_done()). The bspec update is for LNL+ only, but the HW team clarified that this has been always the intended sequence on all platforms and bspec will be updated everywhere accordingly. The way SDP splitting was originally enabled matched the version of bspec at that time. Adding here the Fixes: line still, since this change fixes a FIFO underrun on PTL during output enabling when DSC is enabled. Bspec: 49283, 68943 Fixes:8853750dba
("drm/i915: Enable SDP split for DP2.0") Cc: Vinod Govindapillai <vinod.govindapillai@intel.com> Acked-by: Jani Nikula <jani.nikula@intel.com> Reviewed-by: Vinod Govindapillai <vinod.govindapillai@intel.com> Signed-off-by: Imre Deak <imre.deak@intel.com> Link: https://lore.kernel.org/r/20250520142219.1688401-1-imre.deak@intel.com (cherry picked from commit56764c845a
) Signed-off-by: Joonas Lahtinen <joonas.lahtinen@linux.intel.com>
36 lines
1.3 KiB
C
36 lines
1.3 KiB
C
/* SPDX-License-Identifier: MIT */
|
|
/*
|
|
* Copyright © 2019 Intel Corporation
|
|
*/
|
|
|
|
#ifndef __INTEL_AUDIO_H__
|
|
#define __INTEL_AUDIO_H__
|
|
|
|
#include <linux/types.h>
|
|
|
|
struct drm_connector_state;
|
|
struct intel_crtc_state;
|
|
struct intel_display;
|
|
struct intel_encoder;
|
|
|
|
void intel_audio_hooks_init(struct intel_display *display);
|
|
bool intel_audio_compute_config(struct intel_encoder *encoder,
|
|
struct intel_crtc_state *crtc_state,
|
|
struct drm_connector_state *conn_state);
|
|
void intel_audio_codec_enable(struct intel_encoder *encoder,
|
|
const struct intel_crtc_state *crtc_state,
|
|
const struct drm_connector_state *conn_state);
|
|
void intel_audio_codec_disable(struct intel_encoder *encoder,
|
|
const struct intel_crtc_state *old_crtc_state,
|
|
const struct drm_connector_state *old_conn_state);
|
|
void intel_audio_codec_get_config(struct intel_encoder *encoder,
|
|
struct intel_crtc_state *crtc_state);
|
|
void intel_audio_cdclk_change_pre(struct intel_display *display);
|
|
void intel_audio_cdclk_change_post(struct intel_display *display);
|
|
int intel_audio_min_cdclk(const struct intel_crtc_state *crtc_state);
|
|
void intel_audio_init(struct intel_display *display);
|
|
void intel_audio_register(struct intel_display *display);
|
|
void intel_audio_deinit(struct intel_display *display);
|
|
|
|
#endif /* __INTEL_AUDIO_H__ */
|