diff options
| -rw-r--r-- | drivers/gpu/drm/radeon/dce6_afmt.c | 12 |
1 files changed, 7 insertions, 5 deletions
diff --git a/drivers/gpu/drm/radeon/dce6_afmt.c b/drivers/gpu/drm/radeon/dce6_afmt.c index 009f46e0ce72..de86493cbc44 100644 --- a/drivers/gpu/drm/radeon/dce6_afmt.c +++ b/drivers/gpu/drm/radeon/dce6_afmt.c | |||
| @@ -93,11 +93,13 @@ void dce6_afmt_select_pin(struct drm_encoder *encoder) | |||
| 93 | struct radeon_device *rdev = encoder->dev->dev_private; | 93 | struct radeon_device *rdev = encoder->dev->dev_private; |
| 94 | struct radeon_encoder *radeon_encoder = to_radeon_encoder(encoder); | 94 | struct radeon_encoder *radeon_encoder = to_radeon_encoder(encoder); |
| 95 | struct radeon_encoder_atom_dig *dig = radeon_encoder->enc_priv; | 95 | struct radeon_encoder_atom_dig *dig = radeon_encoder->enc_priv; |
| 96 | u32 offset = dig->afmt->offset; | 96 | u32 offset; |
| 97 | 97 | ||
| 98 | if (!dig->afmt->pin) | 98 | if (!dig || !dig->afmt || !dig->afmt->pin) |
| 99 | return; | 99 | return; |
| 100 | 100 | ||
| 101 | offset = dig->afmt->offset; | ||
| 102 | |||
| 101 | WREG32(AFMT_AUDIO_SRC_CONTROL + offset, | 103 | WREG32(AFMT_AUDIO_SRC_CONTROL + offset, |
| 102 | AFMT_AUDIO_SRC_SELECT(dig->afmt->pin->id)); | 104 | AFMT_AUDIO_SRC_SELECT(dig->afmt->pin->id)); |
| 103 | } | 105 | } |
| @@ -112,7 +114,7 @@ void dce6_afmt_write_latency_fields(struct drm_encoder *encoder, | |||
| 112 | struct radeon_connector *radeon_connector = NULL; | 114 | struct radeon_connector *radeon_connector = NULL; |
| 113 | u32 tmp = 0, offset; | 115 | u32 tmp = 0, offset; |
| 114 | 116 | ||
| 115 | if (!dig->afmt->pin) | 117 | if (!dig || !dig->afmt || !dig->afmt->pin) |
| 116 | return; | 118 | return; |
| 117 | 119 | ||
| 118 | offset = dig->afmt->pin->offset; | 120 | offset = dig->afmt->pin->offset; |
| @@ -156,7 +158,7 @@ void dce6_afmt_write_speaker_allocation(struct drm_encoder *encoder) | |||
| 156 | u8 *sadb; | 158 | u8 *sadb; |
| 157 | int sad_count; | 159 | int sad_count; |
| 158 | 160 | ||
| 159 | if (!dig->afmt->pin) | 161 | if (!dig || !dig->afmt || !dig->afmt->pin) |
| 160 | return; | 162 | return; |
| 161 | 163 | ||
| 162 | offset = dig->afmt->pin->offset; | 164 | offset = dig->afmt->pin->offset; |
| @@ -217,7 +219,7 @@ void dce6_afmt_write_sad_regs(struct drm_encoder *encoder) | |||
| 217 | { AZ_F0_CODEC_PIN_CONTROL_AUDIO_DESCRIPTOR13, HDMI_AUDIO_CODING_TYPE_WMA_PRO }, | 219 | { AZ_F0_CODEC_PIN_CONTROL_AUDIO_DESCRIPTOR13, HDMI_AUDIO_CODING_TYPE_WMA_PRO }, |
| 218 | }; | 220 | }; |
| 219 | 221 | ||
| 220 | if (!dig->afmt->pin) | 222 | if (!dig || !dig->afmt || !dig->afmt->pin) |
| 221 | return; | 223 | return; |
| 222 | 224 | ||
| 223 | offset = dig->afmt->pin->offset; | 225 | offset = dig->afmt->pin->offset; |
