mirror of
https://git.kernel.org/pub/scm/linux/kernel/git/netdev/net.git/
synced 2026-04-18 06:33:43 -04:00
drm/amd/display: Add drm_audio_component support to amdgpu_dm
[Why] The drm_audio_component can be used to give pin ELD notifications directly to the sound driver. This fixes audio endpoints disappearing due to missing unsolicited notifications. [How] Send the notification via the audio component whenever we enable or disable audio state on a stream. This matches what i915 does with their drm_audio_component and what Takashi Iwai's proposed hack for radeon/amdpgu did. This is a bit delayed in when the notification actually occurs, however. We wait until after all the programming is complete rather than sending the notification mid sequence. Particular care is needed for the get ELD callback since it can happen outside the locking and fencing DRM does for atomic commits. Cc: Leo Li <sunpeng.li@amd.com> Cc: Harry Wentland <harry.wentland@amd.com> Signed-off-by: Nicholas Kazlauskas <nicholas.kazlauskas@amd.com> Reviewed-by: Alex Deucher <alexander.deucher@amd.com> Reviewed-by: Takashi Iwai <tiwai@suse.de> Signed-off-by: Alex Deucher <alexander.deucher@amd.com>
This commit is contained in:
committed by
Alex Deucher
parent
5fdb7c4c7f
commit
6ce8f31667
@@ -143,6 +143,28 @@ struct amdgpu_display_manager {
|
||||
*/
|
||||
struct mutex dc_lock;
|
||||
|
||||
/**
|
||||
* @audio_lock:
|
||||
*
|
||||
* Guards access to audio instance changes.
|
||||
*/
|
||||
struct mutex audio_lock;
|
||||
|
||||
/**
|
||||
* @audio_component:
|
||||
*
|
||||
* Used to notify ELD changes to sound driver.
|
||||
*/
|
||||
struct drm_audio_component *audio_component;
|
||||
|
||||
/**
|
||||
* @audio_registered:
|
||||
*
|
||||
* True if the audio component has been registered
|
||||
* successfully, false otherwise.
|
||||
*/
|
||||
bool audio_registered;
|
||||
|
||||
/**
|
||||
* @irq_handler_list_low_tab:
|
||||
*
|
||||
@@ -254,6 +276,9 @@ struct amdgpu_dm_connector {
|
||||
int max_vfreq ;
|
||||
int pixel_clock_mhz;
|
||||
|
||||
/* Audio instance - protected by audio_lock. */
|
||||
int audio_inst;
|
||||
|
||||
struct mutex hpd_lock;
|
||||
|
||||
bool fake_enable;
|
||||
|
||||
Reference in New Issue
Block a user