ALSA: hdspm - Fix reported external sample rate on RME MADI and MADIface
authorAdrian Knoth <adi@drcomp.erfurt.thur.de>
Fri, 29 Jul 2011 01:11:03 +0000 (03:11 +0200)
committerTakashi Iwai <tiwai@suse.de>
Fri, 29 Jul 2011 05:41:04 +0000 (07:41 +0200)
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>
sound/pci/rme9652/hdspm.c

index d21964994168cce0f81c4546156174f6490e2487..88ae27431cb21030b13934372e16a46b1ac4898b 100644 (file)
@@ -1217,6 +1217,22 @@ static int hdspm_external_sample_rate(struct hdspm *hdspm)
                                rate = 0;
                                break;
                        }
+
+                       /* QS and DS rates normally can not be detected
+                        * automatically by the card. Only exception is MADI
+                        * in 96k frame mode.
+                        *
+                        * So if we read SS values (32 .. 48k), check for
+                        * user-provided DS/QS bits in the control register
+                        * and multiply the base frequency accordingly.
+                        */
+                       if (rate <= 48000) {
+                               if (hdspm->control_register & HDSPM_QuadSpeed)
+                                       rate *= 4;
+                               else if (hdspm->control_register &
+                                               HDSPM_DoubleSpeed)
+                                       rate *= 2;
+                       }
                }
                break;
        }
This page took 0.027686 seconds and 5 git commands to generate.