diff options
| author | Linus Torvalds <torvalds@linux-foundation.org> | 2010-05-13 10:35:26 -0400 |
|---|---|---|
| committer | Linus Torvalds <torvalds@linux-foundation.org> | 2010-05-13 10:35:26 -0400 |
| commit | fc8e38f142dd59f81306ff6a81c1351e9eb0e014 (patch) | |
| tree | 5f2fc612bdde9cbe264b544af2e3e0a429345ef6 | |
| parent | aa86f26bd81a46985f1b32e513638d1c36cf3104 (diff) | |
| parent | 105ce39ca4fabf20e3211cae1abc8f037e6a1f7f (diff) | |
Merge branch 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tiwai/sound-2.6
* 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tiwai/sound-2.6:
ALSA: ice1724 - Fix ESI Maya44 capture source control
ALSA: pcm - Use pgprot_noncached() for MIPS non-coherent archs
ALSA: virtuoso: fix Xonar D1/DX front panel microphone
ALSA: hda - Add hp-dv4 model for IDT 92HD71bx
ALSA: hda - Fix mute-LED GPIO pin for HP dv series
ALSA: hda: Fix 0 dB for Lenovo models using Conexant CX20549 (Venice)
| -rw-r--r-- | sound/core/pcm_native.c | 7 | ||||
| -rw-r--r-- | sound/pci/hda/patch_conexant.c | 7 | ||||
| -rw-r--r-- | sound/pci/hda/patch_sigmatel.c | 15 | ||||
| -rw-r--r-- | sound/pci/ice1712/maya44.c | 6 | ||||
| -rw-r--r-- | sound/pci/oxygen/xonar_cs43xx.c | 3 |
5 files changed, 30 insertions, 8 deletions
diff --git a/sound/core/pcm_native.c b/sound/core/pcm_native.c index 872887624030..20b5982c996b 100644 --- a/sound/core/pcm_native.c +++ b/sound/core/pcm_native.c | |||
| @@ -36,6 +36,9 @@ | |||
| 36 | #include <sound/timer.h> | 36 | #include <sound/timer.h> |
| 37 | #include <sound/minors.h> | 37 | #include <sound/minors.h> |
| 38 | #include <asm/io.h> | 38 | #include <asm/io.h> |
| 39 | #if defined(CONFIG_MIPS) && defined(CONFIG_DMA_NONCOHERENT) | ||
| 40 | #include <dma-coherence.h> | ||
| 41 | #endif | ||
| 39 | 42 | ||
| 40 | /* | 43 | /* |
| 41 | * Compatibility | 44 | * Compatibility |
| @@ -3184,6 +3187,10 @@ static int snd_pcm_default_mmap(struct snd_pcm_substream *substream, | |||
| 3184 | substream->runtime->dma_area, | 3187 | substream->runtime->dma_area, |
| 3185 | substream->runtime->dma_addr, | 3188 | substream->runtime->dma_addr, |
| 3186 | area->vm_end - area->vm_start); | 3189 | area->vm_end - area->vm_start); |
| 3190 | #elif defined(CONFIG_MIPS) && defined(CONFIG_DMA_NONCOHERENT) | ||
| 3191 | if (substream->dma_buffer.dev.type == SNDRV_DMA_TYPE_DEV && | ||
| 3192 | !plat_device_is_coherent(substream->dma_buffer.dev.dev)) | ||
| 3193 | area->vm_page_prot = pgprot_noncached(area->vm_page_prot); | ||
| 3187 | #endif /* ARCH_HAS_DMA_MMAP_COHERENT */ | 3194 | #endif /* ARCH_HAS_DMA_MMAP_COHERENT */ |
| 3188 | /* mmap with fault handler */ | 3195 | /* mmap with fault handler */ |
| 3189 | area->vm_ops = &snd_pcm_vm_ops_data_fault; | 3196 | area->vm_ops = &snd_pcm_vm_ops_data_fault; |
diff --git a/sound/pci/hda/patch_conexant.c b/sound/pci/hda/patch_conexant.c index d8213e2231a6..feabb44c7ca4 100644 --- a/sound/pci/hda/patch_conexant.c +++ b/sound/pci/hda/patch_conexant.c | |||
| @@ -1197,9 +1197,10 @@ static int patch_cxt5045(struct hda_codec *codec) | |||
| 1197 | case 0x103c: | 1197 | case 0x103c: |
| 1198 | case 0x1631: | 1198 | case 0x1631: |
| 1199 | case 0x1734: | 1199 | case 0x1734: |
| 1200 | /* HP, Packard Bell, & Fujitsu-Siemens laptops have really bad | 1200 | case 0x17aa: |
| 1201 | * sound over 0dB on NID 0x17. Fix max PCM level to 0 dB | 1201 | /* HP, Packard Bell, Fujitsu-Siemens & Lenovo laptops have |
| 1202 | * (originally it has 0x2b steps with 0dB offset 0x14) | 1202 | * really bad sound over 0dB on NID 0x17. Fix max PCM level to |
| 1203 | * 0 dB (originally it has 0x2b steps with 0dB offset 0x14) | ||
| 1203 | */ | 1204 | */ |
| 1204 | snd_hda_override_amp_caps(codec, 0x17, HDA_INPUT, | 1205 | snd_hda_override_amp_caps(codec, 0x17, HDA_INPUT, |
| 1205 | (0x14 << AC_AMPCAP_OFFSET_SHIFT) | | 1206 | (0x14 << AC_AMPCAP_OFFSET_SHIFT) | |
diff --git a/sound/pci/hda/patch_sigmatel.c b/sound/pci/hda/patch_sigmatel.c index 12825aa03106..a0e06d82da1f 100644 --- a/sound/pci/hda/patch_sigmatel.c +++ b/sound/pci/hda/patch_sigmatel.c | |||
| @@ -104,6 +104,7 @@ enum { | |||
| 104 | STAC_DELL_M4_2, | 104 | STAC_DELL_M4_2, |
| 105 | STAC_DELL_M4_3, | 105 | STAC_DELL_M4_3, |
| 106 | STAC_HP_M4, | 106 | STAC_HP_M4, |
| 107 | STAC_HP_DV4, | ||
| 107 | STAC_HP_DV5, | 108 | STAC_HP_DV5, |
| 108 | STAC_HP_HDX, | 109 | STAC_HP_HDX, |
| 109 | STAC_HP_DV4_1222NR, | 110 | STAC_HP_DV4_1222NR, |
| @@ -1691,6 +1692,7 @@ static unsigned int *stac92hd71bxx_brd_tbl[STAC_92HD71BXX_MODELS] = { | |||
| 1691 | [STAC_DELL_M4_2] = dell_m4_2_pin_configs, | 1692 | [STAC_DELL_M4_2] = dell_m4_2_pin_configs, |
| 1692 | [STAC_DELL_M4_3] = dell_m4_3_pin_configs, | 1693 | [STAC_DELL_M4_3] = dell_m4_3_pin_configs, |
| 1693 | [STAC_HP_M4] = NULL, | 1694 | [STAC_HP_M4] = NULL, |
| 1695 | [STAC_HP_DV4] = NULL, | ||
| 1694 | [STAC_HP_DV5] = NULL, | 1696 | [STAC_HP_DV5] = NULL, |
| 1695 | [STAC_HP_HDX] = NULL, | 1697 | [STAC_HP_HDX] = NULL, |
| 1696 | [STAC_HP_DV4_1222NR] = NULL, | 1698 | [STAC_HP_DV4_1222NR] = NULL, |
| @@ -1703,6 +1705,7 @@ static const char *stac92hd71bxx_models[STAC_92HD71BXX_MODELS] = { | |||
| 1703 | [STAC_DELL_M4_2] = "dell-m4-2", | 1705 | [STAC_DELL_M4_2] = "dell-m4-2", |
| 1704 | [STAC_DELL_M4_3] = "dell-m4-3", | 1706 | [STAC_DELL_M4_3] = "dell-m4-3", |
| 1705 | [STAC_HP_M4] = "hp-m4", | 1707 | [STAC_HP_M4] = "hp-m4", |
| 1708 | [STAC_HP_DV4] = "hp-dv4", | ||
| 1706 | [STAC_HP_DV5] = "hp-dv5", | 1709 | [STAC_HP_DV5] = "hp-dv5", |
| 1707 | [STAC_HP_HDX] = "hp-hdx", | 1710 | [STAC_HP_HDX] = "hp-hdx", |
| 1708 | [STAC_HP_DV4_1222NR] = "hp-dv4-1222nr", | 1711 | [STAC_HP_DV4_1222NR] = "hp-dv4-1222nr", |
| @@ -1721,7 +1724,7 @@ static struct snd_pci_quirk stac92hd71bxx_cfg_tbl[] = { | |||
| 1721 | SND_PCI_QUIRK_MASK(PCI_VENDOR_ID_HP, 0xfff0, 0x3080, | 1724 | SND_PCI_QUIRK_MASK(PCI_VENDOR_ID_HP, 0xfff0, 0x3080, |
| 1722 | "HP", STAC_HP_DV5), | 1725 | "HP", STAC_HP_DV5), |
| 1723 | SND_PCI_QUIRK_MASK(PCI_VENDOR_ID_HP, 0xfff0, 0x30f0, | 1726 | SND_PCI_QUIRK_MASK(PCI_VENDOR_ID_HP, 0xfff0, 0x30f0, |
| 1724 | "HP dv4-7", STAC_HP_DV5), | 1727 | "HP dv4-7", STAC_HP_DV4), |
| 1725 | SND_PCI_QUIRK_MASK(PCI_VENDOR_ID_HP, 0xfff0, 0x3600, | 1728 | SND_PCI_QUIRK_MASK(PCI_VENDOR_ID_HP, 0xfff0, 0x3600, |
| 1726 | "HP dv4-7", STAC_HP_DV5), | 1729 | "HP dv4-7", STAC_HP_DV5), |
| 1727 | SND_PCI_QUIRK(PCI_VENDOR_ID_HP, 0x3610, | 1730 | SND_PCI_QUIRK(PCI_VENDOR_ID_HP, 0x3610, |
| @@ -4766,6 +4769,9 @@ static void set_hp_led_gpio(struct hda_codec *codec) | |||
| 4766 | struct sigmatel_spec *spec = codec->spec; | 4769 | struct sigmatel_spec *spec = codec->spec; |
| 4767 | unsigned int gpio; | 4770 | unsigned int gpio; |
| 4768 | 4771 | ||
| 4772 | if (spec->gpio_led) | ||
| 4773 | return; | ||
| 4774 | |||
| 4769 | gpio = snd_hda_param_read(codec, codec->afg, AC_PAR_GPIO_CAP); | 4775 | gpio = snd_hda_param_read(codec, codec->afg, AC_PAR_GPIO_CAP); |
| 4770 | gpio &= AC_GPIO_IO_COUNT; | 4776 | gpio &= AC_GPIO_IO_COUNT; |
| 4771 | if (gpio > 3) | 4777 | if (gpio > 3) |
| @@ -5675,6 +5681,9 @@ again: | |||
| 5675 | spec->num_smuxes = 1; | 5681 | spec->num_smuxes = 1; |
| 5676 | spec->num_dmuxes = 1; | 5682 | spec->num_dmuxes = 1; |
| 5677 | /* fallthrough */ | 5683 | /* fallthrough */ |
| 5684 | case STAC_HP_DV4: | ||
| 5685 | spec->gpio_led = 0x01; | ||
| 5686 | /* fallthrough */ | ||
| 5678 | case STAC_HP_DV5: | 5687 | case STAC_HP_DV5: |
| 5679 | snd_hda_codec_set_pincfg(codec, 0x0d, 0x90170010); | 5688 | snd_hda_codec_set_pincfg(codec, 0x0d, 0x90170010); |
| 5680 | stac92xx_auto_set_pinctl(codec, 0x0d, AC_PINCTL_OUT_EN); | 5689 | stac92xx_auto_set_pinctl(codec, 0x0d, AC_PINCTL_OUT_EN); |
| @@ -5688,6 +5697,7 @@ again: | |||
| 5688 | spec->num_dmics = 1; | 5697 | spec->num_dmics = 1; |
| 5689 | spec->num_dmuxes = 1; | 5698 | spec->num_dmuxes = 1; |
| 5690 | spec->num_smuxes = 1; | 5699 | spec->num_smuxes = 1; |
| 5700 | spec->gpio_led = 0x08; | ||
| 5691 | break; | 5701 | break; |
| 5692 | } | 5702 | } |
| 5693 | 5703 | ||
| @@ -5744,7 +5754,8 @@ again: | |||
| 5744 | } | 5754 | } |
| 5745 | 5755 | ||
| 5746 | /* enable bass on HP dv7 */ | 5756 | /* enable bass on HP dv7 */ |
| 5747 | if (spec->board_config == STAC_HP_DV5) { | 5757 | if (spec->board_config == STAC_HP_DV4 || |
| 5758 | spec->board_config == STAC_HP_DV5) { | ||
| 5748 | unsigned int cap; | 5759 | unsigned int cap; |
| 5749 | cap = snd_hda_param_read(codec, 0x1, AC_PAR_GPIO_CAP); | 5760 | cap = snd_hda_param_read(codec, 0x1, AC_PAR_GPIO_CAP); |
| 5750 | cap &= AC_GPIO_IO_COUNT; | 5761 | cap &= AC_GPIO_IO_COUNT; |
diff --git a/sound/pci/ice1712/maya44.c b/sound/pci/ice1712/maya44.c index 3e1c20ae2f1c..726fd4b92e19 100644 --- a/sound/pci/ice1712/maya44.c +++ b/sound/pci/ice1712/maya44.c | |||
| @@ -347,7 +347,7 @@ static int maya_gpio_sw_put(struct snd_kcontrol *kcontrol, | |||
| 347 | 347 | ||
| 348 | /* known working input slots (0-4) */ | 348 | /* known working input slots (0-4) */ |
| 349 | #define MAYA_LINE_IN 1 /* in-2 */ | 349 | #define MAYA_LINE_IN 1 /* in-2 */ |
| 350 | #define MAYA_MIC_IN 4 /* in-5 */ | 350 | #define MAYA_MIC_IN 3 /* in-4 */ |
| 351 | 351 | ||
| 352 | static void wm8776_select_input(struct snd_maya44 *chip, int idx, int line) | 352 | static void wm8776_select_input(struct snd_maya44 *chip, int idx, int line) |
| 353 | { | 353 | { |
| @@ -393,8 +393,8 @@ static int maya_rec_src_put(struct snd_kcontrol *kcontrol, | |||
| 393 | int changed; | 393 | int changed; |
| 394 | 394 | ||
| 395 | mutex_lock(&chip->mutex); | 395 | mutex_lock(&chip->mutex); |
| 396 | changed = maya_set_gpio_bits(chip->ice, GPIO_MIC_RELAY, | 396 | changed = maya_set_gpio_bits(chip->ice, 1 << GPIO_MIC_RELAY, |
| 397 | sel ? GPIO_MIC_RELAY : 0); | 397 | sel ? (1 << GPIO_MIC_RELAY) : 0); |
| 398 | wm8776_select_input(chip, 0, sel ? MAYA_MIC_IN : MAYA_LINE_IN); | 398 | wm8776_select_input(chip, 0, sel ? MAYA_MIC_IN : MAYA_LINE_IN); |
| 399 | mutex_unlock(&chip->mutex); | 399 | mutex_unlock(&chip->mutex); |
| 400 | return changed; | 400 | return changed; |
diff --git a/sound/pci/oxygen/xonar_cs43xx.c b/sound/pci/oxygen/xonar_cs43xx.c index 16c226bfcd2b..7c4986b27f2b 100644 --- a/sound/pci/oxygen/xonar_cs43xx.c +++ b/sound/pci/oxygen/xonar_cs43xx.c | |||
| @@ -56,6 +56,7 @@ | |||
| 56 | #include <sound/pcm_params.h> | 56 | #include <sound/pcm_params.h> |
| 57 | #include <sound/tlv.h> | 57 | #include <sound/tlv.h> |
| 58 | #include "xonar.h" | 58 | #include "xonar.h" |
| 59 | #include "cm9780.h" | ||
| 59 | #include "cs4398.h" | 60 | #include "cs4398.h" |
| 60 | #include "cs4362a.h" | 61 | #include "cs4362a.h" |
| 61 | 62 | ||
| @@ -172,6 +173,8 @@ static void xonar_d1_init(struct oxygen *chip) | |||
| 172 | oxygen_clear_bits16(chip, OXYGEN_GPIO_DATA, | 173 | oxygen_clear_bits16(chip, OXYGEN_GPIO_DATA, |
| 173 | GPIO_D1_FRONT_PANEL | GPIO_D1_INPUT_ROUTE); | 174 | GPIO_D1_FRONT_PANEL | GPIO_D1_INPUT_ROUTE); |
| 174 | 175 | ||
| 176 | oxygen_ac97_set_bits(chip, 0, CM9780_JACK, CM9780_FMIC2MIC); | ||
| 177 | |||
| 175 | xonar_init_cs53x1(chip); | 178 | xonar_init_cs53x1(chip); |
| 176 | xonar_enable_output(chip); | 179 | xonar_enable_output(chip); |
| 177 | 180 | ||
