diff options
Diffstat (limited to 'sound/pci/rme9652')
-rw-r--r-- | sound/pci/rme9652/hdspm.c | 16 |
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 | } |