diff options
author | Linus Torvalds <torvalds@linux-foundation.org> | 2012-03-30 13:59:52 -0400 |
---|---|---|
committer | Linus Torvalds <torvalds@linux-foundation.org> | 2012-03-30 13:59:52 -0400 |
commit | 48a46752a9a43c9bd106cc9798ee511feef5b7e6 (patch) | |
tree | ce6c93ff9197bfa8cc3b65f57e6e5fa69afe61fe /sound/pci | |
parent | 59f2fe326666002f8387fb434a871815d3535f40 (diff) | |
parent | c578ae0026da81a589245ee08e0fd1b1d8a55f4e (diff) |
Merge tag 'sound-3.4' of git://git.kernel.org/pub/scm/linux/kernel/git/tiwai/sound
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
Diffstat (limited to 'sound/pci')
-rw-r--r-- | sound/pci/asihpi/hpi_internal.h | 2 | ||||
-rw-r--r-- | sound/pci/asihpi/hpios.c | 2 | ||||
-rw-r--r-- | sound/pci/hda/patch_realtek.c | 11 |
3 files changed, 9 insertions, 6 deletions
diff --git a/sound/pci/asihpi/hpi_internal.h b/sound/pci/asihpi/hpi_internal.h index 4cc315daeda0..8c63200cf339 100644 --- a/sound/pci/asihpi/hpi_internal.h +++ b/sound/pci/asihpi/hpi_internal.h | |||
@@ -42,7 +42,7 @@ On error *pLockedMemHandle marked invalid, non-zero returned. | |||
42 | If this function succeeds, then HpiOs_LockedMem_GetVirtAddr() and | 42 | If this function succeeds, then HpiOs_LockedMem_GetVirtAddr() and |
43 | HpiOs_LockedMem_GetPyhsAddr() will always succed on the returned handle. | 43 | HpiOs_LockedMem_GetPyhsAddr() will always succed on the returned handle. |
44 | */ | 44 | */ |
45 | u16 hpios_locked_mem_alloc(struct consistent_dma_area *p_locked_mem_handle, | 45 | int hpios_locked_mem_alloc(struct consistent_dma_area *p_locked_mem_handle, |
46 | /**< memory handle */ | 46 | /**< memory handle */ |
47 | u32 size, /**< Size in bytes to allocate */ | 47 | u32 size, /**< Size in bytes to allocate */ |
48 | struct pci_dev *p_os_reference | 48 | struct pci_dev *p_os_reference |
diff --git a/sound/pci/asihpi/hpios.c b/sound/pci/asihpi/hpios.c index 2d7d1c2e1d0d..87f4385fe8c7 100644 --- a/sound/pci/asihpi/hpios.c +++ b/sound/pci/asihpi/hpios.c | |||
@@ -43,7 +43,7 @@ void hpios_delay_micro_seconds(u32 num_micro_sec) | |||
43 | 43 | ||
44 | On error, return -ENOMEM, and *pMemArea.size = 0 | 44 | On error, return -ENOMEM, and *pMemArea.size = 0 |
45 | */ | 45 | */ |
46 | u16 hpios_locked_mem_alloc(struct consistent_dma_area *p_mem_area, u32 size, | 46 | int hpios_locked_mem_alloc(struct consistent_dma_area *p_mem_area, u32 size, |
47 | struct pci_dev *pdev) | 47 | struct pci_dev *pdev) |
48 | { | 48 | { |
49 | /*?? any benefit in using managed dmam_alloc_coherent? */ | 49 | /*?? any benefit in using managed dmam_alloc_coherent? */ |
diff --git a/sound/pci/hda/patch_realtek.c b/sound/pci/hda/patch_realtek.c index 8ea2fd654327..9917e55d6f11 100644 --- a/sound/pci/hda/patch_realtek.c +++ b/sound/pci/hda/patch_realtek.c | |||
@@ -2717,9 +2717,6 @@ static int alc_auto_fill_adc_caps(struct hda_codec *codec) | |||
2717 | int max_nums = ARRAY_SIZE(spec->private_adc_nids); | 2717 | int max_nums = ARRAY_SIZE(spec->private_adc_nids); |
2718 | int i, nums = 0; | 2718 | int i, nums = 0; |
2719 | 2719 | ||
2720 | if (spec->shared_mic_hp) | ||
2721 | max_nums = 1; /* no multi streams with the shared HP/mic */ | ||
2722 | |||
2723 | nid = codec->start_nid; | 2720 | nid = codec->start_nid; |
2724 | for (i = 0; i < codec->num_nodes; i++, nid++) { | 2721 | for (i = 0; i < codec->num_nodes; i++, nid++) { |
2725 | hda_nid_t src; | 2722 | hda_nid_t src; |
@@ -4076,6 +4073,7 @@ static void alc_remove_invalid_adc_nids(struct hda_codec *codec) | |||
4076 | if (spec->dyn_adc_switch) | 4073 | if (spec->dyn_adc_switch) |
4077 | return; | 4074 | return; |
4078 | 4075 | ||
4076 | again: | ||
4079 | nums = 0; | 4077 | nums = 0; |
4080 | for (n = 0; n < spec->num_adc_nids; n++) { | 4078 | for (n = 0; n < spec->num_adc_nids; n++) { |
4081 | hda_nid_t cap = spec->private_capsrc_nids[n]; | 4079 | hda_nid_t cap = spec->private_capsrc_nids[n]; |
@@ -4096,6 +4094,11 @@ static void alc_remove_invalid_adc_nids(struct hda_codec *codec) | |||
4096 | if (!nums) { | 4094 | if (!nums) { |
4097 | /* check whether ADC-switch is possible */ | 4095 | /* check whether ADC-switch is possible */ |
4098 | if (!alc_check_dyn_adc_switch(codec)) { | 4096 | if (!alc_check_dyn_adc_switch(codec)) { |
4097 | if (spec->shared_mic_hp) { | ||
4098 | spec->shared_mic_hp = 0; | ||
4099 | spec->private_imux[0].num_items = 1; | ||
4100 | goto again; | ||
4101 | } | ||
4099 | printk(KERN_WARNING "hda_codec: %s: no valid ADC found;" | 4102 | printk(KERN_WARNING "hda_codec: %s: no valid ADC found;" |
4100 | " using fallback 0x%x\n", | 4103 | " using fallback 0x%x\n", |
4101 | codec->chip_name, spec->private_adc_nids[0]); | 4104 | codec->chip_name, spec->private_adc_nids[0]); |
@@ -4113,7 +4116,7 @@ static void alc_remove_invalid_adc_nids(struct hda_codec *codec) | |||
4113 | 4116 | ||
4114 | if (spec->auto_mic) | 4117 | if (spec->auto_mic) |
4115 | alc_auto_mic_check_imux(codec); /* check auto-mic setups */ | 4118 | alc_auto_mic_check_imux(codec); /* check auto-mic setups */ |
4116 | else if (spec->input_mux->num_items == 1) | 4119 | else if (spec->input_mux->num_items == 1 || spec->shared_mic_hp) |
4117 | spec->num_adc_nids = 1; /* reduce to a single ADC */ | 4120 | spec->num_adc_nids = 1; /* reduce to a single ADC */ |
4118 | } | 4121 | } |
4119 | 4122 | ||