sound fixes for 2.6.39-rc3
Subsystems (4)
Linus,
please pull ALSA updates for v2.6.39-rc3 from:
git://git.kernel.org/pub/scm/linux/kernel/git/tiwai/sound-2.6.git for-linus
All small fixes as belw.
Thanks!
Takashi
===
Aaron Plattner (1):
ALSA: hda - HDMI: Fix MCP7x audio infoframe checksums
Antonio Ospite (1):
ASoC: zylonite: set .codec_dai_name in initializer
David Henningsson (2):
ALSA: HDA: Fix dock mic for Lenovo X220-tablet
ALSA: HDA: Fix single internal mic on ALC275 (Sony Vaio VPCSB1C5E)
Stephen Warren (1):
ASoC: format_register_str: Don't clip register values
Takashi Iwai (1):
ALSA: hda - Don't query connections for widgets have no connections
Tarek Soliman (1):
ALSA: usb-audio: define another USB ID for a buggy USB MIDI cable
Vasily Khoruzhick (1):
ASoC: PXA: Fix oops in __pxa2xx_pcm_prepare
--- sound/arm/pxa2xx-pcm-lib.c | 3 ++ sound/pci/hda/patch_conexant.c | 1 + sound/pci/hda/patch_hdmi.c | 70 +++++++++++++++++++++++++--------------- sound/pci/hda/patch_realtek.c | 2 +- sound/pci/hda/patch_sigmatel.c | 3 ++ sound/soc/pxa/pxa2xx-pcm.c | 1 + sound/soc/pxa/zylonite.c | 6 ++-- sound/soc/soc-core.c | 8 ++-- sound/usb/midi.c | 1 + 9 files changed, 61 insertions(+), 34 deletions(-)
sound/arm/pxa2xx-pcm-lib.c +3 -0
@@ -140,6 +140,9 @@ int __pxa2xx_pcm_prepare(struct snd_pcm_substream *substream)if (!prtd || !prtd->params)return 0 ; +if (prtd->dma_ch ==-1 ) +return -EINVAL ; +DCSR (prtd->dma_ch) &= ~DCSR_RUN ;DCSR (prtd->dma_ch) =0 ;DCMD (prtd->dma_ch) =0 ;
sound/pci/hda/patch_conexant.c +1 -0
@@ -3035,6 +3035,7 @@ static struct snd_pci_quirk cxt5066_cfg_tbl[] = {SND_PCI_QUIRK (0x17aa ,0x21c6 ,"Thinkpad Edge 13" ,CXT5066_ASUS ),SND_PCI_QUIRK (0x17aa ,0x215e ,"Lenovo Thinkpad" ,CXT5066_THINKPAD ),SND_PCI_QUIRK (0x17aa ,0x21da ,"Lenovo X220" ,CXT5066_THINKPAD ), +SND_PCI_QUIRK (0x17aa ,0x21db ,"Lenovo X220-tablet" ,CXT5066_THINKPAD ),SND_PCI_QUIRK (0x17aa ,0x38af ,"Lenovo G560" ,CXT5066_ASUS ), SND_PCI_QUIRK_VENDOR(0x17aa, "Lenovo", CXT5066_IDEAPAD), /* Fallback for Lenovos without dock mic */ {}
sound/pci/hda/patch_hdmi.c +44 -26
109 lines not on this page · raw message
sound/pci/hda/patch_realtek.c +1 -1
@@ -14124,7 +14124,7 @@ static hda_nid_t alc269vb_capsrc_nids[1] = { };static hda_nid_t alc269_adc_candidates[] = { -0x08 ,0x09 ,0x07 , +0x08 ,0x09 ,0x07 ,0x11 , };#define alc269_modes alc260_modes
sound/pci/hda/patch_sigmatel.c +3 -0
@@ -3408,6 +3408,9 @@ static int get_connection_index(struct hda_codec *codec, hda_nid_t mux,hda_nid_t conn[HDA_MAX_NUM_INPUTS ];int i, nums; +if (!(get_wcaps (codec, mux) &AC_WCAP_CONN_LIST )) +return -1 ; + nums =snd_hda_get_connections (codec, mux, conn,ARRAY_SIZE (conn));for (i =0 ; i < nums; i++)if (conn[i] == nid)
sound/soc/pxa/pxa2xx-pcm.c +1 -0
@@ -65,6 +65,7 @@ static int pxa2xx_pcm_hw_free(struct snd_pcm_substream *substream)if (prtd->dma_ch >=0 ) {pxa_free_dma (prtd->dma_ch); prtd->dma_ch =-1 ; + prtd->params =NULL ; }return 0 ;
sound/soc/pxa/zylonite.c +3 -3
@@ -167,7 +167,7 @@ static struct snd_soc_dai_link zylonite_dai[] = { .codec_name = "wm9713-codec", .platform_name = "pxa-pcm-audio", .cpu_dai_name = "pxa2xx-ac97", - .codec_name = "wm9713-hifi", + .codec_dai_name = "wm9713-hifi", .init = zylonite_wm9713_init, }, {
@@ -176,7 +176,7 @@ static struct snd_soc_dai_link zylonite_dai[] = { .codec_name = "wm9713-codec", .platform_name = "pxa-pcm-audio", .cpu_dai_name = "pxa2xx-ac97-aux", - .codec_name = "wm9713-aux", + .codec_dai_name = "wm9713-aux", }, { .name = "WM9713 Voice",
@@ -184,7 +184,7 @@ static struct snd_soc_dai_link zylonite_dai[] = { .codec_name = "wm9713-codec", .platform_name = "pxa-pcm-audio", .cpu_dai_name = "pxa-ssp-dai.2", - .codec_name = "wm9713-voice", + .codec_dai_name = "wm9713-voice", .ops = &zylonite_voice_ops, }, };
sound/soc/soc-core.c +4 -4
@@ -92,8 +92,8 @@ static int min_bytes_needed(unsigned long val)static int format_register_str (struct snd_soc_codec *codec,unsigned int reg,char *buf,size_t len) { -int wordsize = codec->driver->reg_word_size *2 ; -int regsize =min_bytes_needed (codec->driver->reg_cache_size) *2 ; +int wordsize =min_bytes_needed (codec->driver->reg_cache_size) *2 ; +int regsize = codec->driver->reg_word_size *2 ;int ret;char tmpbuf[len +1 ];char regbuf[regsize +1 ];
@@ -132,8 +132,8 @@ static ssize_t soc_codec_reg_show(struct snd_soc_codec *codec, char *buf,size_t total =0 ;loff_t p =0 ; - wordsize = codec->driver->reg_word_size *2 ; - regsize =min_bytes_needed (codec->driver->reg_cache_size) *2 ; + wordsize =min_bytes_needed (codec->driver->reg_cache_size) *2 ; + regsize = codec->driver->reg_word_size *2 ; len = wordsize + regsize +2 +1 ;
sound/usb/midi.c +1 -0
@@ -1301,6 +1301,7 @@ static int snd_usbmidi_out_endpoint_create(struct snd_usb_midi* umidi,case USB_ID (0x15ca ,0x0101 ):/* Textech USB Midi Cable */ case USB_ID (0x15ca ,0x1806 ):/* Textech USB Midi Cable */ case USB_ID (0x1a86 ,0x752d ):/* QinHeng CH345 "USB2.0-MIDI" */ +case USB_ID (0xfc08 ,0x0101 ):/* Unknown vendor Cable */ ep->max_transfer =4 ;break ;/*