aboutsummaryrefslogtreecommitdiffstats
path: root/sound
diff options
context:
space:
mode:
authorAdrian Knoth <adi@drcomp.erfurt.thur.de>2011-07-28 21:11:03 -0400
committerTakashi Iwai <tiwai@suse.de>2011-07-29 01:41:04 -0400
commitd12c51d8299667464e31d545acc4ebb7031d024c (patch)
treeebd4c75c07d75f89583a5025a8948688391c3ea8 /sound
parent700d1ef33ff1d9a582b4a1dc23a130049f239942 (diff)
ALSA: hdspm - Fix reported external sample rate on RME MADI and MADIface
In slave mode, the card can only detect the base frequency (32..48kHz) on the MADI link (exception: 96k frames), so the real external sample rate is this base frequency multiplied by 1, 2 or 4 depending on the speed mode. This patch enables 64..192kHz sample rates in clock slave mode, which failed before due to an alleged sample rate mismatch between the MADI link (e.g., 48kHz) and the application in DS/QS mode (e.g., 96kHz, 192kHz). Signed-off-by: Adrian Knoth <adi@drcomp.erfurt.thur.de> Signed-off-by: Takashi Iwai <tiwai@suse.de>
Diffstat (limited to 'sound')
-rw-r--r--sound/pci/rme9652/hdspm.c16
1 files changed, 16 insertions, 0 deletions
diff --git a/sound/pci/rme9652/hdspm.c b/sound/pci/rme9652/hdspm.c
index d21964994168..88ae27431cb2 100644
--- a/sound/pci/rme9652/hdspm.c
+++ b/sound/pci/rme9652/hdspm.c
@@ -1217,6 +1217,22 @@ static int hdspm_external_sample_rate(struct hdspm *hdspm)
1217 rate = 0; 1217 rate = 0;
1218 break; 1218 break;
1219 } 1219 }
1220
1221 /* QS and DS rates normally can not be detected
1222 * automatically by the card. Only exception is MADI
1223 * in 96k frame mode.
1224 *
1225 * So if we read SS values (32 .. 48k), check for
1226 * user-provided DS/QS bits in the control register
1227 * and multiply the base frequency accordingly.
1228 */
1229 if (rate <= 48000) {
1230 if (hdspm->control_register & HDSPM_QuadSpeed)
1231 rate *= 4;
1232 else if (hdspm->control_register &
1233 HDSPM_DoubleSpeed)
1234 rate *= 2;
1235 }
1220 } 1236 }
1221 break; 1237 break;
1222 } 1238 }