Skip to content

Commit

Permalink
---
Browse files Browse the repository at this point in the history
yaml
---
r: 307370
b: refs/heads/master
c: a273a90
h: refs/heads/master
v: v3
  • Loading branch information
Rafał Miłecki authored and Dave Airlie committed May 13, 2012
1 parent 5f6f749 commit 31af68f
Show file tree
Hide file tree
Showing 2 changed files with 17 additions and 11 deletions.
2 changes: 1 addition & 1 deletion [refs]
Original file line number Diff line number Diff line change
@@ -1,2 +1,2 @@
---
refs/heads/master: 218c872bf8285af7aaa50f1f83312020e05451bf
refs/heads/master: a273a903bf3d480270803350d01b51b18bbbeb9d
26 changes: 16 additions & 10 deletions trunk/drivers/gpu/drm/radeon/r600_hdmi.c
Original file line number Diff line number Diff line change
Expand Up @@ -303,11 +303,13 @@ void r600_hdmi_audio_workaround(struct drm_encoder *encoder)
r600_hdmi_is_audio_buffer_filled(encoder)) {

/* disable audio workaround */
WREG32_P(HDMI0_AUDIO_PACKET_CONTROL + offset, 0x0001, ~0x1001);
WREG32_P(HDMI0_AUDIO_PACKET_CONTROL + offset,
0, ~HDMI0_AUDIO_TEST_EN);

} else {
/* enable audio workaround */
WREG32_P(HDMI0_AUDIO_PACKET_CONTROL + offset, 0x1001, ~0x1001);
WREG32_P(HDMI0_AUDIO_PACKET_CONTROL + offset,
HDMI0_AUDIO_TEST_EN, ~HDMI0_AUDIO_TEST_EN);
}
}

Expand All @@ -331,6 +333,18 @@ void r600_hdmi_setmode(struct drm_encoder *encoder, struct drm_display_mode *mod

WREG32(HDMI0_AUDIO_CRC_CONTROL + offset, 0x1000);
WREG32(HDMI0_GC + offset, 0x0);

/* Send audio packets */
if (ASIC_IS_DCE4(rdev))
WREG32_P(0x74fc + offset,
AFMT_AUDIO_SAMPLE_SEND, ~AFMT_AUDIO_SAMPLE_SEND);
else if (ASIC_IS_DCE32(rdev))
WREG32_P(AFMT_AUDIO_PACKET_CONTROL + offset,
AFMT_AUDIO_SAMPLE_SEND, ~AFMT_AUDIO_SAMPLE_SEND);
else
WREG32_P(HDMI0_AUDIO_PACKET_CONTROL + offset,
HDMI0_AUDIO_SAMPLE_SEND, ~HDMI0_AUDIO_SAMPLE_SEND);

WREG32(HDMI0_ACR_PACKET_CONTROL + offset, 0x1000);

r600_hdmi_update_ACR(encoder, mode->clock);
Expand Down Expand Up @@ -495,10 +509,6 @@ void r600_hdmi_enable(struct drm_encoder *encoder)
offset = radeon_encoder->hdmi_offset;
if (ASIC_IS_DCE5(rdev)) {
/* TODO */
} else if (ASIC_IS_DCE4(rdev)) {
WREG32_P(0x74fc + radeon_encoder->hdmi_offset, 0x1, ~0x1);
} else if (ASIC_IS_DCE32(rdev)) {
WREG32_P(AFMT_AUDIO_PACKET_CONTROL + radeon_encoder->hdmi_offset, 0x1, ~0x1);
} else if (ASIC_IS_DCE3(rdev)) {
/* TODO */
} else if (rdev->family >= CHIP_R600) {
Expand Down Expand Up @@ -558,10 +568,6 @@ void r600_hdmi_disable(struct drm_encoder *encoder)

if (ASIC_IS_DCE5(rdev)) {
/* TODO */
} else if (ASIC_IS_DCE4(rdev)) {
WREG32_P(0x74fc + radeon_encoder->hdmi_offset, 0, ~0x1);
} else if (ASIC_IS_DCE32(rdev)) {
WREG32_P(AFMT_AUDIO_PACKET_CONTROL + radeon_encoder->hdmi_offset, 0, ~0x1);
} else if (rdev->family >= CHIP_R600 && !ASIC_IS_DCE3(rdev)) {
switch (radeon_encoder->encoder_id) {
case ENCODER_OBJECT_ID_INTERNAL_KLDSCP_TMDS1:
Expand Down

0 comments on commit 31af68f

Please sign in to comment.