Merge tag 'sound-3.4' of git://git.kernel.org/pub/scm/linux/kernel/git/tiwai/sound
Linus Torvalds [Fri, 30 Mar 2012 17:59:52 +0000 (10:59 -0700)]
Pull sound fixes from Takashi Iwai:
 "A collection of small fixes for 3.4-rc1, including
   - mic-recording regression fix for Realtek codec
   - clean-up of dmaengine parameter mess
   - WM8894 calibration tweak
   - minor fixes for asihpi and some bool module parms"

* tag 'sound-3.4' of git://git.kernel.org/pub/scm/linux/kernel/git/tiwai/sound:
  ALSA: fix isa/opti9xx module param type
  sound: fix oss/msnd_pinnacle module param type
  ALSA: asihpi - fix return type of hpios_locked_mem_alloc()
  ASoC: dmaengine_pcm: use dmaengine cyclic wrapper
  ASoC: Add extra parameter to device_prep_dma_cyclic
  ALSA: hda/realtek - Fix ADC assignment with a shared HP/Mic pin
  ASoC: wm8994: Update WM8994 DCS calibration

sound/isa/opti9xx/opti92x-ad1848.c
sound/oss/msnd_pinnacle.c
sound/pci/asihpi/hpi_internal.h
sound/pci/asihpi/hpios.c
sound/pci/hda/patch_realtek.c
sound/soc/codecs/wm8994.c
sound/soc/soc-dmaengine-pcm.c

index babaedd..d7ccf28 100644 (file)
@@ -65,7 +65,7 @@ static int index = SNDRV_DEFAULT_IDX1;        /* Index 0-MAX */
 static char *id = SNDRV_DEFAULT_STR1;          /* ID for this card */
 //static bool enable = SNDRV_DEFAULT_ENABLE1;  /* Enable this card */
 #ifdef CONFIG_PNP
-static int isapnp = 1;                 /* Enable ISA PnP detection */
+static bool isapnp = true;                     /* Enable ISA PnP detection */
 #endif
 static long port = SNDRV_DEFAULT_PORT1;        /* 0x530,0xe80,0xf40,0x604 */
 static long mpu_port = SNDRV_DEFAULT_PORT1;    /* 0x300,0x310,0x320,0x330 */
index eba7345..2c79d60 100644 (file)
@@ -1631,7 +1631,7 @@ static int ide_irq __initdata = 0;
 static int joystick_io __initdata = 0;
 
 /* If we have the digital daugherboard... */
-static int digital __initdata = 0;
+static bool digital __initdata = false;
 #endif
 
 static int fifosize __initdata =       DEFFIFOSIZE;
index 4cc315d..8c63200 100644 (file)
@@ -42,7 +42,7 @@ On error *pLockedMemHandle marked invalid, non-zero returned.
 If this function succeeds, then HpiOs_LockedMem_GetVirtAddr() and
 HpiOs_LockedMem_GetPyhsAddr() will always succed on the returned handle.
 */
-u16 hpios_locked_mem_alloc(struct consistent_dma_area *p_locked_mem_handle,
+int hpios_locked_mem_alloc(struct consistent_dma_area *p_locked_mem_handle,
                                                           /**< memory handle */
        u32 size, /**< Size in bytes to allocate */
        struct pci_dev *p_os_reference
index 2d7d1c2..87f4385 100644 (file)
@@ -43,7 +43,7 @@ void hpios_delay_micro_seconds(u32 num_micro_sec)
 
 On error, return -ENOMEM, and *pMemArea.size = 0
 */
-u16 hpios_locked_mem_alloc(struct consistent_dma_area *p_mem_area, u32 size,
+int hpios_locked_mem_alloc(struct consistent_dma_area *p_mem_area, u32 size,
        struct pci_dev *pdev)
 {
        /*?? any benefit in using managed dmam_alloc_coherent? */
index 8ea2fd6..9917e55 100644 (file)
@@ -2717,9 +2717,6 @@ static int alc_auto_fill_adc_caps(struct hda_codec *codec)
        int max_nums = ARRAY_SIZE(spec->private_adc_nids);
        int i, nums = 0;
 
-       if (spec->shared_mic_hp)
-               max_nums = 1; /* no multi streams with the shared HP/mic */
-
        nid = codec->start_nid;
        for (i = 0; i < codec->num_nodes; i++, nid++) {
                hda_nid_t src;
@@ -4076,6 +4073,7 @@ static void alc_remove_invalid_adc_nids(struct hda_codec *codec)
        if (spec->dyn_adc_switch)
                return;
 
+ again:
        nums = 0;
        for (n = 0; n < spec->num_adc_nids; n++) {
                hda_nid_t cap = spec->private_capsrc_nids[n];
@@ -4096,6 +4094,11 @@ static void alc_remove_invalid_adc_nids(struct hda_codec *codec)
        if (!nums) {
                /* check whether ADC-switch is possible */
                if (!alc_check_dyn_adc_switch(codec)) {
+                       if (spec->shared_mic_hp) {
+                               spec->shared_mic_hp = 0;
+                               spec->private_imux[0].num_items = 1;
+                               goto again;
+                       }
                        printk(KERN_WARNING "hda_codec: %s: no valid ADC found;"
                               " using fallback 0x%x\n",
                               codec->chip_name, spec->private_adc_nids[0]);
@@ -4113,7 +4116,7 @@ static void alc_remove_invalid_adc_nids(struct hda_codec *codec)
 
        if (spec->auto_mic)
                alc_auto_mic_check_imux(codec); /* check auto-mic setups */
-       else if (spec->input_mux->num_items == 1)
+       else if (spec->input_mux->num_items == 1 || spec->shared_mic_hp)
                spec->num_adc_nids = 1; /* reduce to a single ADC */
 }
 
index fe7fbae..7c49642 100644 (file)
@@ -3629,7 +3629,7 @@ static int wm8994_codec_probe(struct snd_soc_codec *codec)
                case 2:
                case 3:
                        wm8994->hubs.dcs_codes_l = -9;
-                       wm8994->hubs.dcs_codes_r = -5;
+                       wm8994->hubs.dcs_codes_r = -7;
                        break;
                default:
                        break;
index 4420b70..4756952 100644 (file)
@@ -143,7 +143,7 @@ static int dmaengine_pcm_prepare_and_submit(struct snd_pcm_substream *substream)
        direction = snd_pcm_substream_to_dma_direction(substream);
 
        prtd->pos = 0;
-       desc = chan->device->device_prep_dma_cyclic(chan,
+       desc = dmaengine_prep_dma_cyclic(chan,
                substream->runtime->dma_addr,
                snd_pcm_lib_buffer_bytes(substream),
                snd_pcm_lib_period_bytes(substream), direction);