Merge remote-tracking branches 'regulator/fix/gpio', 'regulator/fix/put' and 'regulat...
[cascardo/linux.git] / sound / pci / ens1370.c
index f7e6f73..5674cc3 100644 (file)
 
 #ifdef CHIP1370
 #define DRIVER_NAME "ENS1370"
+#define CHIP_NAME "ES1370" /* it can be ENS but just to keep compatibility... */
 #else
 #define DRIVER_NAME "ENS1371"
+#define CHIP_NAME "ES1371"
 #endif
 
 
@@ -1258,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)
 {
@@ -1266,11 +1276,7 @@ static int __devinit snd_ensoniq_pcm(struct ensoniq * ensoniq, int device,
 
        if (rpcm)
                *rpcm = NULL;
-#ifdef CHIP1370
-       err = snd_pcm_new(ensoniq->card, "ES1370/1", device, 1, 1, &pcm);
-#else
-       err = snd_pcm_new(ensoniq->card, "ES1371/1", device, 1, 1, &pcm);
-#endif
+       err = snd_pcm_new(ensoniq->card, CHIP_NAME "/1", device, 1, 1, &pcm);
        if (err < 0)
                return err;
 
@@ -1283,16 +1289,22 @@ static int __devinit snd_ensoniq_pcm(struct ensoniq * ensoniq, int device,
 
        pcm->private_data = ensoniq;
        pcm->info_flags = 0;
-#ifdef CHIP1370
-       strcpy(pcm->name, "ES1370 DAC2/ADC");
-#else
-       strcpy(pcm->name, "ES1371 DAC2/ADC");
-#endif
+       strcpy(pcm->name, CHIP_NAME " DAC2/ADC");
        ensoniq->pcm1 = pcm;
 
        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;
@@ -1306,11 +1318,7 @@ static int __devinit snd_ensoniq_pcm2(struct ensoniq * ensoniq, int device,
 
        if (rpcm)
                *rpcm = NULL;
-#ifdef CHIP1370
-       err = snd_pcm_new(ensoniq->card, "ES1370/2", device, 1, 0, &pcm);
-#else
-       err = snd_pcm_new(ensoniq->card, "ES1371/2", device, 1, 0, &pcm);
-#endif
+       err = snd_pcm_new(ensoniq->card, CHIP_NAME "/2", device, 1, 0, &pcm);
        if (err < 0)
                return err;
 
@@ -1321,16 +1329,22 @@ static int __devinit snd_ensoniq_pcm2(struct ensoniq * ensoniq, int device,
 #endif
        pcm->private_data = ensoniq;
        pcm->info_flags = 0;
-#ifdef CHIP1370
-       strcpy(pcm->name, "ES1370 DAC1");
-#else
-       strcpy(pcm->name, "ES1371 DAC1");
-#endif
+       strcpy(pcm->name, CHIP_NAME " DAC1");
        ensoniq->pcm2 = pcm;
 
        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;
@@ -1885,11 +1899,7 @@ static void snd_ensoniq_proc_read(struct snd_info_entry *entry,
 {
        struct ensoniq *ensoniq = entry->private_data;
 
-#ifdef CHIP1370
-       snd_iprintf(buffer, "Ensoniq AudioPCI ES1370\n\n");
-#else
-       snd_iprintf(buffer, "Ensoniq AudioPCI ES1371\n\n");
-#endif
+       snd_iprintf(buffer, "Ensoniq AudioPCI " CHIP_NAME "\n\n");
        snd_iprintf(buffer, "Joystick enable  : %s\n",
                    ensoniq->ctrl & ES_JYSTK_EN ? "on" : "off");
 #ifdef CHIP1370
@@ -2032,7 +2042,7 @@ static void snd_ensoniq_chip_init(struct ensoniq *ensoniq)
        synchronize_irq(ensoniq->irq);
 }
 
-#ifdef CONFIG_PM
+#ifdef CONFIG_PM_SLEEP
 static int snd_ensoniq_suspend(struct device *dev)
 {
        struct pci_dev *pci = to_pci_dev(dev);
@@ -2094,7 +2104,7 @@ static SIMPLE_DEV_PM_OPS(snd_ensoniq_pm, snd_ensoniq_suspend, snd_ensoniq_resume
 #define SND_ENSONIQ_PM_OPS     &snd_ensoniq_pm
 #else
 #define SND_ENSONIQ_PM_OPS     NULL
-#endif /* CONFIG_PM */
+#endif /* CONFIG_PM_SLEEP */
 
 static int __devinit snd_ensoniq_create(struct snd_card *card,
                                     struct pci_dev *pci,
@@ -2361,11 +2371,7 @@ static int __devinit snd_ensoniq_midi(struct ensoniq * ensoniq, int device,
                *rrawmidi = NULL;
        if ((err = snd_rawmidi_new(ensoniq->card, "ES1370/1", device, 1, 1, &rmidi)) < 0)
                return err;
-#ifdef CHIP1370
-       strcpy(rmidi->name, "ES1370");
-#else
-       strcpy(rmidi->name, "ES1371");
-#endif
+       strcpy(rmidi->name, CHIP_NAME);
        snd_rawmidi_set_ops(rmidi, SNDRV_RAWMIDI_STREAM_OUTPUT, &snd_ensoniq_midi_output);
        snd_rawmidi_set_ops(rmidi, SNDRV_RAWMIDI_STREAM_INPUT, &snd_ensoniq_midi_input);
        rmidi->info_flags |= SNDRV_RAWMIDI_INFO_OUTPUT | SNDRV_RAWMIDI_INFO_INPUT |