Commit fc8e38f1 authored by Linus Torvalds's avatar Linus Torvalds

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)
parents aa86f26b 105ce39c
...@@ -36,6 +36,9 @@ ...@@ -36,6 +36,9 @@
#include <sound/timer.h> #include <sound/timer.h>
#include <sound/minors.h> #include <sound/minors.h>
#include <asm/io.h> #include <asm/io.h>
#if defined(CONFIG_MIPS) && defined(CONFIG_DMA_NONCOHERENT)
#include <dma-coherence.h>
#endif
/* /*
* Compatibility * Compatibility
...@@ -3184,6 +3187,10 @@ static int snd_pcm_default_mmap(struct snd_pcm_substream *substream, ...@@ -3184,6 +3187,10 @@ static int snd_pcm_default_mmap(struct snd_pcm_substream *substream,
substream->runtime->dma_area, substream->runtime->dma_area,
substream->runtime->dma_addr, substream->runtime->dma_addr,
area->vm_end - area->vm_start); area->vm_end - area->vm_start);
#elif defined(CONFIG_MIPS) && defined(CONFIG_DMA_NONCOHERENT)
if (substream->dma_buffer.dev.type == SNDRV_DMA_TYPE_DEV &&
!plat_device_is_coherent(substream->dma_buffer.dev.dev))
area->vm_page_prot = pgprot_noncached(area->vm_page_prot);
#endif /* ARCH_HAS_DMA_MMAP_COHERENT */ #endif /* ARCH_HAS_DMA_MMAP_COHERENT */
/* mmap with fault handler */ /* mmap with fault handler */
area->vm_ops = &snd_pcm_vm_ops_data_fault; area->vm_ops = &snd_pcm_vm_ops_data_fault;
......
...@@ -1197,9 +1197,10 @@ static int patch_cxt5045(struct hda_codec *codec) ...@@ -1197,9 +1197,10 @@ static int patch_cxt5045(struct hda_codec *codec)
case 0x103c: case 0x103c:
case 0x1631: case 0x1631:
case 0x1734: case 0x1734:
/* HP, Packard Bell, & Fujitsu-Siemens laptops have really bad case 0x17aa:
* sound over 0dB on NID 0x17. Fix max PCM level to 0 dB /* HP, Packard Bell, Fujitsu-Siemens & Lenovo laptops have
* (originally it has 0x2b steps with 0dB offset 0x14) * really bad sound over 0dB on NID 0x17. Fix max PCM level to
* 0 dB (originally it has 0x2b steps with 0dB offset 0x14)
*/ */
snd_hda_override_amp_caps(codec, 0x17, HDA_INPUT, snd_hda_override_amp_caps(codec, 0x17, HDA_INPUT,
(0x14 << AC_AMPCAP_OFFSET_SHIFT) | (0x14 << AC_AMPCAP_OFFSET_SHIFT) |
......
...@@ -104,6 +104,7 @@ enum { ...@@ -104,6 +104,7 @@ enum {
STAC_DELL_M4_2, STAC_DELL_M4_2,
STAC_DELL_M4_3, STAC_DELL_M4_3,
STAC_HP_M4, STAC_HP_M4,
STAC_HP_DV4,
STAC_HP_DV5, STAC_HP_DV5,
STAC_HP_HDX, STAC_HP_HDX,
STAC_HP_DV4_1222NR, STAC_HP_DV4_1222NR,
...@@ -1691,6 +1692,7 @@ static unsigned int *stac92hd71bxx_brd_tbl[STAC_92HD71BXX_MODELS] = { ...@@ -1691,6 +1692,7 @@ static unsigned int *stac92hd71bxx_brd_tbl[STAC_92HD71BXX_MODELS] = {
[STAC_DELL_M4_2] = dell_m4_2_pin_configs, [STAC_DELL_M4_2] = dell_m4_2_pin_configs,
[STAC_DELL_M4_3] = dell_m4_3_pin_configs, [STAC_DELL_M4_3] = dell_m4_3_pin_configs,
[STAC_HP_M4] = NULL, [STAC_HP_M4] = NULL,
[STAC_HP_DV4] = NULL,
[STAC_HP_DV5] = NULL, [STAC_HP_DV5] = NULL,
[STAC_HP_HDX] = NULL, [STAC_HP_HDX] = NULL,
[STAC_HP_DV4_1222NR] = NULL, [STAC_HP_DV4_1222NR] = NULL,
...@@ -1703,6 +1705,7 @@ static const char *stac92hd71bxx_models[STAC_92HD71BXX_MODELS] = { ...@@ -1703,6 +1705,7 @@ static const char *stac92hd71bxx_models[STAC_92HD71BXX_MODELS] = {
[STAC_DELL_M4_2] = "dell-m4-2", [STAC_DELL_M4_2] = "dell-m4-2",
[STAC_DELL_M4_3] = "dell-m4-3", [STAC_DELL_M4_3] = "dell-m4-3",
[STAC_HP_M4] = "hp-m4", [STAC_HP_M4] = "hp-m4",
[STAC_HP_DV4] = "hp-dv4",
[STAC_HP_DV5] = "hp-dv5", [STAC_HP_DV5] = "hp-dv5",
[STAC_HP_HDX] = "hp-hdx", [STAC_HP_HDX] = "hp-hdx",
[STAC_HP_DV4_1222NR] = "hp-dv4-1222nr", [STAC_HP_DV4_1222NR] = "hp-dv4-1222nr",
...@@ -1721,7 +1724,7 @@ static struct snd_pci_quirk stac92hd71bxx_cfg_tbl[] = { ...@@ -1721,7 +1724,7 @@ static struct snd_pci_quirk stac92hd71bxx_cfg_tbl[] = {
SND_PCI_QUIRK_MASK(PCI_VENDOR_ID_HP, 0xfff0, 0x3080, SND_PCI_QUIRK_MASK(PCI_VENDOR_ID_HP, 0xfff0, 0x3080,
"HP", STAC_HP_DV5), "HP", STAC_HP_DV5),
SND_PCI_QUIRK_MASK(PCI_VENDOR_ID_HP, 0xfff0, 0x30f0, SND_PCI_QUIRK_MASK(PCI_VENDOR_ID_HP, 0xfff0, 0x30f0,
"HP dv4-7", STAC_HP_DV5), "HP dv4-7", STAC_HP_DV4),
SND_PCI_QUIRK_MASK(PCI_VENDOR_ID_HP, 0xfff0, 0x3600, SND_PCI_QUIRK_MASK(PCI_VENDOR_ID_HP, 0xfff0, 0x3600,
"HP dv4-7", STAC_HP_DV5), "HP dv4-7", STAC_HP_DV5),
SND_PCI_QUIRK(PCI_VENDOR_ID_HP, 0x3610, SND_PCI_QUIRK(PCI_VENDOR_ID_HP, 0x3610,
...@@ -4766,6 +4769,9 @@ static void set_hp_led_gpio(struct hda_codec *codec) ...@@ -4766,6 +4769,9 @@ static void set_hp_led_gpio(struct hda_codec *codec)
struct sigmatel_spec *spec = codec->spec; struct sigmatel_spec *spec = codec->spec;
unsigned int gpio; unsigned int gpio;
if (spec->gpio_led)
return;
gpio = snd_hda_param_read(codec, codec->afg, AC_PAR_GPIO_CAP); gpio = snd_hda_param_read(codec, codec->afg, AC_PAR_GPIO_CAP);
gpio &= AC_GPIO_IO_COUNT; gpio &= AC_GPIO_IO_COUNT;
if (gpio > 3) if (gpio > 3)
...@@ -5675,6 +5681,9 @@ again: ...@@ -5675,6 +5681,9 @@ again:
spec->num_smuxes = 1; spec->num_smuxes = 1;
spec->num_dmuxes = 1; spec->num_dmuxes = 1;
/* fallthrough */ /* fallthrough */
case STAC_HP_DV4:
spec->gpio_led = 0x01;
/* fallthrough */
case STAC_HP_DV5: case STAC_HP_DV5:
snd_hda_codec_set_pincfg(codec, 0x0d, 0x90170010); snd_hda_codec_set_pincfg(codec, 0x0d, 0x90170010);
stac92xx_auto_set_pinctl(codec, 0x0d, AC_PINCTL_OUT_EN); stac92xx_auto_set_pinctl(codec, 0x0d, AC_PINCTL_OUT_EN);
...@@ -5688,6 +5697,7 @@ again: ...@@ -5688,6 +5697,7 @@ again:
spec->num_dmics = 1; spec->num_dmics = 1;
spec->num_dmuxes = 1; spec->num_dmuxes = 1;
spec->num_smuxes = 1; spec->num_smuxes = 1;
spec->gpio_led = 0x08;
break; break;
} }
...@@ -5744,7 +5754,8 @@ again: ...@@ -5744,7 +5754,8 @@ again:
} }
/* enable bass on HP dv7 */ /* enable bass on HP dv7 */
if (spec->board_config == STAC_HP_DV5) { if (spec->board_config == STAC_HP_DV4 ||
spec->board_config == STAC_HP_DV5) {
unsigned int cap; unsigned int cap;
cap = snd_hda_param_read(codec, 0x1, AC_PAR_GPIO_CAP); cap = snd_hda_param_read(codec, 0x1, AC_PAR_GPIO_CAP);
cap &= AC_GPIO_IO_COUNT; cap &= AC_GPIO_IO_COUNT;
......
...@@ -347,7 +347,7 @@ static int maya_gpio_sw_put(struct snd_kcontrol *kcontrol, ...@@ -347,7 +347,7 @@ static int maya_gpio_sw_put(struct snd_kcontrol *kcontrol,
/* known working input slots (0-4) */ /* known working input slots (0-4) */
#define MAYA_LINE_IN 1 /* in-2 */ #define MAYA_LINE_IN 1 /* in-2 */
#define MAYA_MIC_IN 4 /* in-5 */ #define MAYA_MIC_IN 3 /* in-4 */
static void wm8776_select_input(struct snd_maya44 *chip, int idx, int line) static void wm8776_select_input(struct snd_maya44 *chip, int idx, int line)
{ {
...@@ -393,8 +393,8 @@ static int maya_rec_src_put(struct snd_kcontrol *kcontrol, ...@@ -393,8 +393,8 @@ static int maya_rec_src_put(struct snd_kcontrol *kcontrol,
int changed; int changed;
mutex_lock(&chip->mutex); mutex_lock(&chip->mutex);
changed = maya_set_gpio_bits(chip->ice, GPIO_MIC_RELAY, changed = maya_set_gpio_bits(chip->ice, 1 << GPIO_MIC_RELAY,
sel ? GPIO_MIC_RELAY : 0); sel ? (1 << GPIO_MIC_RELAY) : 0);
wm8776_select_input(chip, 0, sel ? MAYA_MIC_IN : MAYA_LINE_IN); wm8776_select_input(chip, 0, sel ? MAYA_MIC_IN : MAYA_LINE_IN);
mutex_unlock(&chip->mutex); mutex_unlock(&chip->mutex);
return changed; return changed;
......
...@@ -56,6 +56,7 @@ ...@@ -56,6 +56,7 @@
#include <sound/pcm_params.h> #include <sound/pcm_params.h>
#include <sound/tlv.h> #include <sound/tlv.h>
#include "xonar.h" #include "xonar.h"
#include "cm9780.h"
#include "cs4398.h" #include "cs4398.h"
#include "cs4362a.h" #include "cs4362a.h"
...@@ -172,6 +173,8 @@ static void xonar_d1_init(struct oxygen *chip) ...@@ -172,6 +173,8 @@ static void xonar_d1_init(struct oxygen *chip)
oxygen_clear_bits16(chip, OXYGEN_GPIO_DATA, oxygen_clear_bits16(chip, OXYGEN_GPIO_DATA,
GPIO_D1_FRONT_PANEL | GPIO_D1_INPUT_ROUTE); GPIO_D1_FRONT_PANEL | GPIO_D1_INPUT_ROUTE);
oxygen_ac97_set_bits(chip, 0, CM9780_JACK, CM9780_FMIC2MIC);
xonar_init_cs53x1(chip); xonar_init_cs53x1(chip);
xonar_enable_output(chip); xonar_enable_output(chip);
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment