Revert "ASoC: tegra: Don't claim to support PCM pause and resume"
Dan Willemsen [Sat, 20 Jul 2013 22:11:07 +0000 (15:11 -0700)]
This reverts commit 5aa995e83ac7727b7705431e6eb2b317c59b95ba.

sound/soc/tegra/tegra_pcm.c

index fcd6497..87b3281 100644 (file)
@@ -43,6 +43,8 @@
 static const struct snd_pcm_hardware tegra_pcm_hardware = {
        .info                   = SNDRV_PCM_INFO_MMAP |
                                  SNDRV_PCM_INFO_MMAP_VALID |
+                                 SNDRV_PCM_INFO_PAUSE |
+                                 SNDRV_PCM_INFO_RESUME |
                                  SNDRV_PCM_INFO_INTERLEAVED,
        .formats                = SNDRV_PCM_FMTBIT_S16_LE,
        .channels_min           = 2,
@@ -125,6 +127,26 @@ static int tegra_pcm_hw_free(struct snd_pcm_substream *substream)
        return 0;
 }
 
+static int tegra_pcm_trigger(struct snd_pcm_substream *substream, int cmd)
+{
+       switch (cmd) {
+       case SNDRV_PCM_TRIGGER_START:
+       case SNDRV_PCM_TRIGGER_RESUME:
+       case SNDRV_PCM_TRIGGER_PAUSE_RELEASE:
+               return snd_dmaengine_pcm_trigger(substream,
+                                       SNDRV_PCM_TRIGGER_START);
+
+       case SNDRV_PCM_TRIGGER_STOP:
+       case SNDRV_PCM_TRIGGER_SUSPEND:
+       case SNDRV_PCM_TRIGGER_PAUSE_PUSH:
+               return snd_dmaengine_pcm_trigger(substream,
+                                       SNDRV_PCM_TRIGGER_STOP);
+       default:
+               return -EINVAL;
+       }
+       return 0;
+}
+
 static int tegra_pcm_mmap(struct snd_pcm_substream *substream,
                                struct vm_area_struct *vma)
 {
@@ -142,7 +164,7 @@ static struct snd_pcm_ops tegra_pcm_ops = {
        .ioctl          = snd_pcm_lib_ioctl,
        .hw_params      = tegra_pcm_hw_params,
        .hw_free        = tegra_pcm_hw_free,
-       .trigger        = snd_dmaengine_pcm_trigger,
+       .trigger        = tegra_pcm_trigger,
        .pointer        = snd_dmaengine_pcm_pointer,
        .mmap           = tegra_pcm_mmap,
 };