mirror of
https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git
synced 2024-08-24 17:59:32 +00:00
drm/radeon/dce6: assign different audio pins to each encoder
This allows you to send different audio to each audio capable display. Signed-off-by: Alex Deucher <alexander.deucher@amd.com>
This commit is contained in:
parent
294947a5c7
commit
d046520820
1 changed files with 24 additions and 5 deletions
|
@ -76,16 +76,35 @@ static void dce6_afmt_get_connected_pins(struct radeon_device *rdev)
|
|||
|
||||
struct r600_audio_pin *dce6_audio_get_pin(struct radeon_device *rdev)
|
||||
{
|
||||
int i;
|
||||
struct drm_encoder *encoder;
|
||||
struct radeon_encoder *radeon_encoder;
|
||||
struct radeon_encoder_atom_dig *dig;
|
||||
struct r600_audio_pin *pin = NULL;
|
||||
int i, pin_count;
|
||||
|
||||
dce6_afmt_get_connected_pins(rdev);
|
||||
|
||||
for (i = 0; i < rdev->audio.num_pins; i++) {
|
||||
if (rdev->audio.pin[i].connected)
|
||||
return &rdev->audio.pin[i];
|
||||
if (rdev->audio.pin[i].connected) {
|
||||
pin = &rdev->audio.pin[i];
|
||||
pin_count = 0;
|
||||
|
||||
list_for_each_entry(encoder, &rdev->ddev->mode_config.encoder_list, head) {
|
||||
if (radeon_encoder_is_digital(encoder)) {
|
||||
radeon_encoder = to_radeon_encoder(encoder);
|
||||
dig = radeon_encoder->enc_priv;
|
||||
if (dig->pin == pin)
|
||||
pin_count++;
|
||||
}
|
||||
}
|
||||
|
||||
if (pin_count == 0)
|
||||
return pin;
|
||||
}
|
||||
}
|
||||
DRM_ERROR("No connected audio pins found!\n");
|
||||
return NULL;
|
||||
if (!pin)
|
||||
DRM_ERROR("No connected audio pins found!\n");
|
||||
return pin;
|
||||
}
|
||||
|
||||
void dce6_afmt_select_pin(struct drm_encoder *encoder)
|
||||
|
|
Loading…
Reference in a new issue