ALSA: asihpi - Support single-rate no-SRC cards
authorEliot Blennerhassett <eblennerhassett@audioscience.com>
Fri, 25 Mar 2011 02:25:46 +0000 (15:25 +1300)
committerTakashi Iwai <tiwai@suse.de>
Fri, 25 Mar 2011 11:42:26 +0000 (12:42 +0100)
Cards without settable local samplerate and without SRC
still must have a valid samplerate.
This fixed rate is determined by reading the current rate for the card.

Signed-off-by: Eliot Blennerhassett <eblennerhassett@audioscience.com>
Signed-off-by: Takashi Iwai <tiwai@suse.de>
sound/pci/asihpi/asihpi.c

index 0ac1f98d91a1f2196fb9cd4aa93b4c79c2d57aad..22606e3b08f4a9de15c561cda0a0a8a7fd99e24a 100644 (file)
@@ -381,13 +381,13 @@ static void snd_card_asihpi_pcm_samplerates(struct snd_card_asihpi *asihpi,
                                "No local sampleclock, err %d\n", err);
                }
 
-               for (idx = 0; idx < 100; idx++) {
-                       if (hpi_sample_clock_query_local_rate(
-                               h_control, idx, &sample_rate)) {
-                               if (!idx)
-                                       snd_printk(KERN_ERR
-                                               "Local rate query failed\n");
-
+               for (idx = -1; idx < 100; idx++) {
+                       if (idx == -1) {
+                               if (hpi_sample_clock_get_sample_rate(h_control,
+                                                               &sample_rate))
+                                       continue;
+                       } else if (hpi_sample_clock_query_local_rate(h_control,
+                                                       idx, &sample_rate)) {
                                break;
                        }
 
@@ -440,8 +440,6 @@ static void snd_card_asihpi_pcm_samplerates(struct snd_card_asihpi *asihpi,
                }
        }
 
-       /* printk(KERN_INFO "Supported rates %X %d %d\n",
-          rates, rate_min, rate_max); */
        pcmhw->rates = rates;
        pcmhw->rate_min = rate_min;
        pcmhw->rate_max = rate_max;