[PATCH] drm/radeon: Fix spurious unplug event on radeon HDMI
Alex Deucher
alexdeucher at gmail.com
Mon Nov 18 15:37:58 UTC 2024
Applied. Thanks!
Alex
On Sat, Nov 16, 2024 at 4:51 AM Steven 'Steve' Kendall
<skend at chromium.org> wrote:
>
> On several HP models (tested on HP 3125 and HP Probook 455 G2),
> spurious unplug events are emitted upon login on Chrome OS.
> This is likely due to the way Chrome OS restarts graphics
> upon login, so it's possible it's an issue on other
> distributions but not as common, though I haven't
> reproduced the issue elsewhere.
> Use logic from an earlier version of the merged change
> (see link below) which iterates over connectors and finds
> matching encoders, rather than the other way around.
> Also fixes an issue with screen mirroring on Chrome OS.
> I've deployed this patch on Fedora and did not observe
> any regression on these devices.
>
> Link: https://gitlab.freedesktop.org/drm/amd/-/issues/1569#note_1603002
> Link: https://gitlab.freedesktop.org/drm/amd/-/issues/3771
> Fixes: 20ea34710f7b ("drm/radeon: Add HD-audio component notifier support (v6)")
> Signed-off-by: Steven 'Steve' Kendall <skend at chromium.org>
> ---
> drivers/gpu/drm/radeon/radeon_audio.c | 12 ++++++++----
> 1 file changed, 8 insertions(+), 4 deletions(-)
>
> diff --git a/drivers/gpu/drm/radeon/radeon_audio.c b/drivers/gpu/drm/radeon/radeon_audio.c
> index 47aa06a9a942..5b69cc8011b4 100644
> --- a/drivers/gpu/drm/radeon/radeon_audio.c
> +++ b/drivers/gpu/drm/radeon/radeon_audio.c
> @@ -760,16 +760,20 @@ static int radeon_audio_component_get_eld(struct device *kdev, int port,
> if (!rdev->audio.enabled || !rdev->mode_info.mode_config_initialized)
> return 0;
>
> - list_for_each_entry(encoder, &rdev_to_drm(rdev)->mode_config.encoder_list, head) {
> + list_for_each_entry(connector, &dev->mode_config.connector_list, head) {
> + const struct drm_connector_helper_funcs *connector_funcs =
> + connector->helper_private;
> + encoder = connector_funcs->best_encoder(connector);
> +
> + if (!encoder)
> + continue;
> +
> if (!radeon_encoder_is_digital(encoder))
> continue;
> radeon_encoder = to_radeon_encoder(encoder);
> dig = radeon_encoder->enc_priv;
> if (!dig->pin || dig->pin->id != port)
> continue;
> - connector = radeon_get_connector_for_encoder(encoder);
> - if (!connector)
> - continue;
> *enabled = true;
> ret = drm_eld_size(connector->eld);
> memcpy(buf, connector->eld, min(max_bytes, ret));
>
> ---
> base-commit: 2d5404caa8c7bb5c4e0435f94b28834ae5456623
> change-id: 20241115-hdmi-audio-radeon-connectors-f8ffac989b0d
>
> Best regards,
> --
> Steven 'Steve' Kendall <skend at chromium.org>
>
More information about the dri-devel
mailing list