diff options
author | Rafał Miłecki <zajec5@gmail.com> | 2010-03-08 17:14:01 -0500 |
---|---|---|
committer | Dave Airlie <airlied@redhat.com> | 2010-03-14 20:03:57 -0400 |
commit | 2cd6218cb8043ef4360b561e726cd081f8a380cc (patch) | |
tree | 440158ba82c5f14c6dc528dbc76e1223cd286a1b /drivers/gpu/drm/radeon/r600_audio.c | |
parent | 808032ee296ee7b37a6df090be40a330e09ae30e (diff) |
drm/radeon/kms: clean assigning HDMI blocks to encoders
We almost always used first HDMI block for first encoder and second for sencod.
Exception was KLDSCP_LVTMA. Analyzing code picking DIG encoder shows the same
behaviour. It shows HDMI block are related to DIGs, which relation we now use.
Signed-off-by: Rafał Miłecki <zajec5@gmail.com>
Signed-off-by: Dave Airlie <airlied@redhat.com>
Diffstat (limited to 'drivers/gpu/drm/radeon/r600_audio.c')
-rw-r--r-- | drivers/gpu/drm/radeon/r600_audio.c | 7 |
1 files changed, 6 insertions, 1 deletions
diff --git a/drivers/gpu/drm/radeon/r600_audio.c b/drivers/gpu/drm/radeon/r600_audio.c index db928016d034..baf222faf158 100644 --- a/drivers/gpu/drm/radeon/r600_audio.c +++ b/drivers/gpu/drm/radeon/r600_audio.c | |||
@@ -224,6 +224,7 @@ void r600_audio_set_clock(struct drm_encoder *encoder, int clock) | |||
224 | struct drm_device *dev = encoder->dev; | 224 | struct drm_device *dev = encoder->dev; |
225 | struct radeon_device *rdev = dev->dev_private; | 225 | struct radeon_device *rdev = dev->dev_private; |
226 | struct radeon_encoder *radeon_encoder = to_radeon_encoder(encoder); | 226 | struct radeon_encoder *radeon_encoder = to_radeon_encoder(encoder); |
227 | struct radeon_encoder_atom_dig *dig = radeon_encoder->enc_priv; | ||
227 | int base_rate = 48000; | 228 | int base_rate = 48000; |
228 | 229 | ||
229 | switch (radeon_encoder->encoder_id) { | 230 | switch (radeon_encoder->encoder_id) { |
@@ -245,7 +246,7 @@ void r600_audio_set_clock(struct drm_encoder *encoder, int clock) | |||
245 | return; | 246 | return; |
246 | } | 247 | } |
247 | 248 | ||
248 | switch (r600_audio_tmds_index(encoder)) { | 249 | switch (dig->dig_encoder) { |
249 | case 0: | 250 | case 0: |
250 | WREG32(R600_AUDIO_PLL1_MUL, base_rate*50); | 251 | WREG32(R600_AUDIO_PLL1_MUL, base_rate*50); |
251 | WREG32(R600_AUDIO_PLL1_DIV, clock*100); | 252 | WREG32(R600_AUDIO_PLL1_DIV, clock*100); |
@@ -257,6 +258,10 @@ void r600_audio_set_clock(struct drm_encoder *encoder, int clock) | |||
257 | WREG32(R600_AUDIO_PLL2_DIV, clock*100); | 258 | WREG32(R600_AUDIO_PLL2_DIV, clock*100); |
258 | WREG32(R600_AUDIO_CLK_SRCSEL, 1); | 259 | WREG32(R600_AUDIO_CLK_SRCSEL, 1); |
259 | break; | 260 | break; |
261 | default: | ||
262 | dev_err(rdev->dev, "Unsupported DIG on encoder 0x%02X\n", | ||
263 | radeon_encoder->encoder_id); | ||
264 | return; | ||
260 | } | 265 | } |
261 | } | 266 | } |
262 | 267 | ||