summaryrefslogtreecommitdiff
path: root/src/rhd_audio.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/rhd_audio.c')
-rw-r--r--src/rhd_audio.c12
1 files changed, 12 insertions, 0 deletions
diff --git a/src/rhd_audio.c b/src/rhd_audio.c
index 5e3c4e2..aac7d62 100644
--- a/src/rhd_audio.c
+++ b/src/rhd_audio.c
@@ -207,12 +207,20 @@ RHDAudioSetEnable(RHDPtr rhdPtr, Bool Enable)
/* 48kHz and 16/20 bits per sample are always supported */
RHDAudioSetSupported(rhdPtr, TRUE,
AUDIO_RATE_48000_HZ|
AUDIO_BPS_16|AUDIO_BPS_20,
AUDIO_CODEC_PCM
);
+
+
+ if(RHDPTRI(Audio)->ChipSet >= RHD_R700)
+ {
+ /* another bit which use is unknown, but is needed at least on RV710 and RV730 to get audio working */
+ RHDRegMask(Audio, R700_AUDIO_UNKNOWN, 0x00000001, 0x00000001);
+ }
+
} else {
TimerFree(Audio->Timer);
Audio->Timer = NULL;
}
}
@@ -236,12 +244,16 @@ RHDAudioSetClock(RHDPtr rhdPtr, struct rhdOutput* Output, CARD32 Clock)
case RHD_OUTPUT_LVTMA:
RHDRegMask(Audio, AUDIO_TIMING, 0, 0x301);
break;
case RHD_OUTPUT_UNIPHYA:
case RHD_OUTPUT_UNIPHYB:
+ case RHD_OUTPUT_UNIPHYC:
+ case RHD_OUTPUT_UNIPHYD:
+ case RHD_OUTPUT_UNIPHYE:
+ case RHD_OUTPUT_UNIPHYF:
case RHD_OUTPUT_KLDSKP_LVTMA:
RHDRegMask(Audio, AUDIO_TIMING, 0x100, 0x301);
break;
default:
xf86DrvMsg(Audio->scrnIndex, X_ERROR, "%s: unsupported output type\n", __func__);