aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/gpu
diff options
context:
space:
mode:
authorAlex Deucher <alexander.deucher@amd.com>2015-05-27 11:33:26 -0400
committerAlex Deucher <alexander.deucher@amd.com>2015-05-27 13:14:59 -0400
commitfbfd3bc7dfd7efcad2d2e52bf634f84c80a77a35 (patch)
tree06fc9dc9ad1b2848b39ca2896a9f37ed8a7fb0af /drivers/gpu
parent2d1c18bba15daf89d75ce475ecd2068f483aa12f (diff)
drm/radeon/audio: make sure connector is valid in hotplug case
Avoids a crash when a monitor is hotplugged and the encoder and connector are not linked yet. bug: https://bugs.freedesktop.org/show_bug.cgi?id=90681 Signed-off-by: Alex Deucher <alexander.deucher@amd.com> Cc: stable@vger.kernel.org
Diffstat (limited to 'drivers/gpu')
-rw-r--r--drivers/gpu/drm/radeon/evergreen_hdmi.c5
1 files changed, 3 insertions, 2 deletions
diff --git a/drivers/gpu/drm/radeon/evergreen_hdmi.c b/drivers/gpu/drm/radeon/evergreen_hdmi.c
index 0926739c9fa7..9953356fe263 100644
--- a/drivers/gpu/drm/radeon/evergreen_hdmi.c
+++ b/drivers/gpu/drm/radeon/evergreen_hdmi.c
@@ -400,7 +400,7 @@ void evergreen_hdmi_enable(struct drm_encoder *encoder, bool enable)
400 if (enable) { 400 if (enable) {
401 struct drm_connector *connector = radeon_get_connector_for_encoder(encoder); 401 struct drm_connector *connector = radeon_get_connector_for_encoder(encoder);
402 402
403 if (drm_detect_monitor_audio(radeon_connector_edid(connector))) { 403 if (connector && drm_detect_monitor_audio(radeon_connector_edid(connector))) {
404 WREG32(HDMI_INFOFRAME_CONTROL0 + dig->afmt->offset, 404 WREG32(HDMI_INFOFRAME_CONTROL0 + dig->afmt->offset,
405 HDMI_AVI_INFO_SEND | /* enable AVI info frames */ 405 HDMI_AVI_INFO_SEND | /* enable AVI info frames */
406 HDMI_AVI_INFO_CONT | /* required for audio info values to be updated */ 406 HDMI_AVI_INFO_CONT | /* required for audio info values to be updated */
@@ -438,7 +438,8 @@ void evergreen_dp_enable(struct drm_encoder *encoder, bool enable)
438 if (!dig || !dig->afmt) 438 if (!dig || !dig->afmt)
439 return; 439 return;
440 440
441 if (enable && drm_detect_monitor_audio(radeon_connector_edid(connector))) { 441 if (enable && connector &&
442 drm_detect_monitor_audio(radeon_connector_edid(connector))) {
442 struct drm_connector *connector = radeon_get_connector_for_encoder(encoder); 443 struct drm_connector *connector = radeon_get_connector_for_encoder(encoder);
443 struct radeon_connector *radeon_connector = to_radeon_connector(connector); 444 struct radeon_connector *radeon_connector = to_radeon_connector(connector);
444 struct radeon_connector_atom_dig *dig_connector; 445 struct radeon_connector_atom_dig *dig_connector;