> -----Original Message----- > From: Hyungwon Hwang [mailto:hyungwon.hwang7@xxxxxxxxx] > Sent: Wednesday, April 13, 2016 11:55 AM > To: Deucher, Alexander; Koenig, Christian; dri-devel@xxxxxxxxxxxxxxxxxxxxx > Subject: radeon_connector->audio is set by RADEON_AUDIO_DISABLE as > default. > > Dear all, > > I switched my desktop environment to GNOME wayland recently, and I > found > that no sound in this environment. In X desktop environment, the ioctl > DRM_IOCTL_MODE_SETPROPERTY(I confused it with > DRM_IOCTL_MODE_OBJ_SETPROPERTY - I deleted the log already :( ) is > called by userspace and it makes the sound works. But in Gnome wayland > desktop environment, the ioctl is not called. I tried to fixed it, and > found that it is because radeon_connector->audio is set by > RADEON_AUDIO_DISABLE. Thanks for spotting this. Does the attached patch fix it? Alex > > In atombios_encoders.c, atombios_get_encoder_mode() > if (radeon_connector->audio == RADEON_AUDIO_ENABLE) > return ATOM_ENCODER_MODE_HDMI; > else if (drm_detect_hdmi_monitor(radeon_connector_edid(connector)) && > (radeon_connector->audio == RADEON_AUDIO_AUTO)) > return ATOM_ENCODER_MODE_HDMI; > else > return ATOM_ENCODER_MODE_DVI; > > This code returns ATOM_ENCODER_MODE_DVI. > > In atombios_encoders.c, radeon_atom_encoder_mode_set(): > encoder_mode = atombios_get_encoder_mode(encoder); > > if (connector && (radeon_audio != 0) && > > ((encoder_mode == ATOM_ENCODER_MODE_HDMI) || > > ENCODER_MODE_IS_DP(encoder_mode))) > > radeon_audio_mode_set(encoder, adjusted_mode);b > > So this code bypasses the calling of radeon_audio_mode_set(). > > I think that radeon_connector->audio should be set by > RADEON_AUDIO_AUTO, at least for connectors which can output audio. I > fixed the code like below, and it works for me. But I am not familiar > with radeon DRM driver, and can't see the big picture. Can you review > this code? > > Thanks, > Hyungwon Hwang > > diff --git a/drivers/gpu/drm/radeon/radeon_connectors.c > b/drivers/gpu/drm/radeon/radeon_connectors.c > index cfcc099..cf52ea5 100644 > --- a/drivers/gpu/drm/radeon/radeon_connectors.c > +++ b/drivers/gpu/drm/radeon/radeon_connectors.c > @@ -1975,11 +1975,12 @@ radeon_add_atom_connector(struct drm_device > *dev, > > rdev->mode_info.output_csc_property, > > RADEON_OUTPUT_CSC_BYPASS); > break; > - case DRM_MODE_CONNECTOR_DVII: > - case DRM_MODE_CONNECTOR_DVID: > case DRM_MODE_CONNECTOR_HDMIA: > case DRM_MODE_CONNECTOR_HDMIB: > case DRM_MODE_CONNECTOR_DisplayPort: > + radeon_connector->audio = RADEON_AUDIO_AUTO; > + case DRM_MODE_CONNECTOR_DVII: > + case DRM_MODE_CONNECTOR_DVID: > drm_connector_init(dev, &radeon_connector->base, > &radeon_dp_connector_funcs, > connector_type); > drm_connector_helper_add(&radeon_connector->base, > @@ -2024,8 +2025,9 @@ radeon_add_atom_connector(struct drm_device > *dev, > 1); > } > break; > - case DRM_MODE_CONNECTOR_LVDS: > case DRM_MODE_CONNECTOR_eDP: > + radeon_connector->audio = RADEON_AUDIO_AUTO; > + case DRM_MODE_CONNECTOR_LVDS: > drm_connector_init(dev, &radeon_connector->base, > > &radeon_lvds_bridge_connector_funcs, connector_type); > drm_connector_helper_add(&radeon_connector->base, > @@ -2196,6 +2198,7 @@ radeon_add_atom_connector(struct drm_device > *dev, > connector->doublescan_allowed = true; > else > connector->doublescan_allowed = false; > + radeon_connector->audio = RADEON_AUDIO_AUTO; > break; > case DRM_MODE_CONNECTOR_DisplayPort: > radeon_dig_connector = kzalloc(sizeof(struct > radeon_connector_atom_dig), GFP_KERNEL); > @@ -2245,6 +2248,7 @@ radeon_add_atom_connector(struct drm_device > *dev, > connector->interlace_allowed = true; > /* in theory with a DP to VGA converter... */ > connector->doublescan_allowed = false; > + radeon_connector->audio = RADEON_AUDIO_AUTO; > break; > case DRM_MODE_CONNECTOR_eDP: > radeon_dig_connector = kzalloc(sizeof(struct > radeon_connector_atom_dig), GFP_KERNEL); > @@ -2267,6 +2271,7 @@ radeon_add_atom_connector(struct drm_device > *dev, > subpixel_order = SubPixelHorizontalRGB; > connector->interlace_allowed = false; > connector->doublescan_allowed = false; > + radeon_connector->audio = RADEON_AUDIO_AUTO; > break; > case DRM_MODE_CONNECTOR_SVIDEO: > case DRM_MODE_CONNECTOR_Composite:
Attachment:
0001-drm-radeon-fix-initial-connector-audio-value.patch
Description: 0001-drm-radeon-fix-initial-connector-audio-value.patch
_______________________________________________ dri-devel mailing list dri-devel@xxxxxxxxxxxxxxxxxxxxx https://lists.freedesktop.org/mailman/listinfo/dri-devel