ALSA: via82xx: allow to disable the SRC
authorClemens Ladisch <clemens@ladisch.de>
Fri, 16 Sep 2011 21:16:05 +0000 (23:16 +0200)
committerTakashi Iwai <tiwai@suse.de>
Tue, 20 Sep 2011 06:57:00 +0000 (08:57 +0200)
Add the PCM rule to allow disabling the PCM playback SRC.

Signed-off-by: Clemens Ladisch <clemens@ladisch.de>
Signed-off-by: Takashi Iwai <tiwai@suse.de>
sound/pci/via82xx.c

index 35d5f43..c3656ff 100644 (file)
@@ -1175,6 +1175,7 @@ static int snd_via82xx_pcm_open(struct via82xx *chip, struct viadev *viadev,
        struct snd_pcm_runtime *runtime = substream->runtime;
        int err;
        struct via_rate_lock *ratep;
+       bool use_src = false;
 
        runtime->hw = snd_via82xx_hw;
        
@@ -1196,6 +1197,7 @@ static int snd_via82xx_pcm_open(struct via82xx *chip, struct viadev *viadev,
                                     SNDRV_PCM_RATE_8000_48000);
                runtime->hw.rate_min = 8000;
                runtime->hw.rate_max = 48000;
+               use_src = true;
        } else if (! ratep->rate) {
                int idx = viadev->direction ? AC97_RATES_ADC : AC97_RATES_FRONT_DAC;
                runtime->hw.rates = chip->ac97->rates[idx];
@@ -1212,6 +1214,12 @@ static int snd_via82xx_pcm_open(struct via82xx *chip, struct viadev *viadev,
        if ((err = snd_pcm_hw_constraint_integer(runtime, SNDRV_PCM_HW_PARAM_PERIODS)) < 0)
                return err;
 
+       if (use_src) {
+               err = snd_pcm_hw_rule_noresample(runtime, 48000);
+               if (err < 0)
+                       return err;
+       }
+
        runtime->private_data = viadev;
        viadev->substream = substream;