Merge tag 'fbdev-updates-for-3.7' of git://github.com/schandinat/linux-2.6
[firefly-linux-kernel-4.4.55.git] / sound / pci / ens1370.c
index 1e615c4d12f8fbaf19a50a671d5619db017105f7..5674cc316530bc3ab0a1b009e7d51b22ff0e3c1f 100644 (file)
@@ -1260,6 +1260,14 @@ static struct snd_pcm_ops snd_ensoniq_capture_ops = {
        .pointer =      snd_ensoniq_capture_pointer,
 };
 
+static const struct snd_pcm_chmap_elem surround_map[] = {
+       { .channels = 1,
+         .map = { SNDRV_CHMAP_MONO } },
+       { .channels = 2,
+         .map = { SNDRV_CHMAP_RL, SNDRV_CHMAP_RR } },
+       { }
+};
+
 static int __devinit snd_ensoniq_pcm(struct ensoniq * ensoniq, int device,
                                     struct snd_pcm ** rpcm)
 {
@@ -1287,6 +1295,16 @@ static int __devinit snd_ensoniq_pcm(struct ensoniq * ensoniq, int device,
        snd_pcm_lib_preallocate_pages_for_all(pcm, SNDRV_DMA_TYPE_DEV,
                                              snd_dma_pci_data(ensoniq->pci), 64*1024, 128*1024);
 
+#ifdef CHIP1370
+       err = snd_pcm_add_chmap_ctls(pcm, SNDRV_PCM_STREAM_PLAYBACK,
+                                    surround_map, 2, 0, NULL);
+#else
+       err = snd_pcm_add_chmap_ctls(pcm, SNDRV_PCM_STREAM_PLAYBACK,
+                                    snd_pcm_std_chmaps, 2, 0, NULL);
+#endif
+       if (err < 0)
+               return err;
+
        if (rpcm)
                *rpcm = pcm;
        return 0;
@@ -1317,6 +1335,16 @@ static int __devinit snd_ensoniq_pcm2(struct ensoniq * ensoniq, int device,
        snd_pcm_lib_preallocate_pages_for_all(pcm, SNDRV_DMA_TYPE_DEV,
                                              snd_dma_pci_data(ensoniq->pci), 64*1024, 128*1024);
 
+#ifdef CHIP1370
+       err = snd_pcm_add_chmap_ctls(pcm, SNDRV_PCM_STREAM_PLAYBACK,
+                                    snd_pcm_std_chmaps, 2, 0, NULL);
+#else
+       err = snd_pcm_add_chmap_ctls(pcm, SNDRV_PCM_STREAM_PLAYBACK,
+                                    surround_map, 2, 0, NULL);
+#endif
+       if (err < 0)
+               return err;
+
        if (rpcm)
                *rpcm = pcm;
        return 0;