aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/gpu/drm/radeon/r600_audio.c
diff options
context:
space:
mode:
authorRafał Miłecki <zajec5@gmail.com>2010-03-08 17:14:01 -0500
committerDave Airlie <airlied@redhat.com>2010-03-14 20:03:57 -0400
commit2cd6218cb8043ef4360b561e726cd081f8a380cc (patch)
tree440158ba82c5f14c6dc528dbc76e1223cd286a1b /drivers/gpu/drm/radeon/r600_audio.c
parent808032ee296ee7b37a6df090be40a330e09ae30e (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.c7
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