Linux kernel mirror (for testing) git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
kernel os linux
1
fork

Configure Feed

Select the types of activity you want to include in your feed.

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: hda - Don't query connections for widgets have no connections
ALSA: HDA: Fix single internal mic on ALC275 (Sony Vaio VPCSB1C5E)
ALSA: hda - HDMI: Fix MCP7x audio infoframe checksums
ALSA: usb-audio: define another USB ID for a buggy USB MIDI cable
ALSA: HDA: Fix dock mic for Lenovo X220-tablet
ASoC: format_register_str: Don't clip register values
ASoC: PXA: Fix oops in __pxa2xx_pcm_prepare
ASoC: zylonite: set .codec_dai_name in initializer

+61 -34
+3
sound/arm/pxa2xx-pcm-lib.c
··· 140 140 if (!prtd || !prtd->params) 141 141 return 0; 142 142 143 + if (prtd->dma_ch == -1) 144 + return -EINVAL; 145 + 143 146 DCSR(prtd->dma_ch) &= ~DCSR_RUN; 144 147 DCSR(prtd->dma_ch) = 0; 145 148 DCMD(prtd->dma_ch) = 0;
+1
sound/pci/hda/patch_conexant.c
··· 3035 3035 SND_PCI_QUIRK(0x17aa, 0x21c6, "Thinkpad Edge 13", CXT5066_ASUS), 3036 3036 SND_PCI_QUIRK(0x17aa, 0x215e, "Lenovo Thinkpad", CXT5066_THINKPAD), 3037 3037 SND_PCI_QUIRK(0x17aa, 0x21da, "Lenovo X220", CXT5066_THINKPAD), 3038 + SND_PCI_QUIRK(0x17aa, 0x21db, "Lenovo X220-tablet", CXT5066_THINKPAD), 3038 3039 SND_PCI_QUIRK(0x17aa, 0x38af, "Lenovo G560", CXT5066_ASUS), 3039 3040 SND_PCI_QUIRK_VENDOR(0x17aa, "Lenovo", CXT5066_IDEAPAD), /* Fallback for Lenovos without dock mic */ 3040 3041 {}
+44 -26
sound/pci/hda/patch_hdmi.c
··· 1280 1280 stream_tag, format, substream); 1281 1281 } 1282 1282 1283 + static void nvhdmi_8ch_7x_set_info_frame_parameters(struct hda_codec *codec, 1284 + int channels) 1285 + { 1286 + unsigned int chanmask; 1287 + int chan = channels ? (channels - 1) : 1; 1288 + 1289 + switch (channels) { 1290 + default: 1291 + case 0: 1292 + case 2: 1293 + chanmask = 0x00; 1294 + break; 1295 + case 4: 1296 + chanmask = 0x08; 1297 + break; 1298 + case 6: 1299 + chanmask = 0x0b; 1300 + break; 1301 + case 8: 1302 + chanmask = 0x13; 1303 + break; 1304 + } 1305 + 1306 + /* Set the audio infoframe channel allocation and checksum fields. The 1307 + * channel count is computed implicitly by the hardware. */ 1308 + snd_hda_codec_write(codec, 0x1, 0, 1309 + Nv_VERB_SET_Channel_Allocation, chanmask); 1310 + 1311 + snd_hda_codec_write(codec, 0x1, 0, 1312 + Nv_VERB_SET_Info_Frame_Checksum, 1313 + (0x71 - chan - chanmask)); 1314 + } 1315 + 1283 1316 static int nvhdmi_8ch_7x_pcm_close(struct hda_pcm_stream *hinfo, 1284 1317 struct hda_codec *codec, 1285 1318 struct snd_pcm_substream *substream) ··· 1331 1298 AC_VERB_SET_STREAM_FORMAT, 0); 1332 1299 } 1333 1300 1301 + /* The audio hardware sends a channel count of 0x7 (8ch) when all the 1302 + * streams are disabled. */ 1303 + nvhdmi_8ch_7x_set_info_frame_parameters(codec, 8); 1304 + 1334 1305 return snd_hda_multi_out_dig_close(codec, &spec->multiout); 1335 1306 } 1336 1307 ··· 1345 1308 struct snd_pcm_substream *substream) 1346 1309 { 1347 1310 int chs; 1348 - unsigned int dataDCC1, dataDCC2, chan, chanmask, channel_id; 1311 + unsigned int dataDCC1, dataDCC2, channel_id; 1349 1312 int i; 1350 1313 1351 1314 mutex_lock(&codec->spdif_mutex); 1352 1315 1353 1316 chs = substream->runtime->channels; 1354 - chan = chs ? (chs - 1) : 1; 1355 1317 1356 - switch (chs) { 1357 - default: 1358 - case 0: 1359 - case 2: 1360 - chanmask = 0x00; 1361 - break; 1362 - case 4: 1363 - chanmask = 0x08; 1364 - break; 1365 - case 6: 1366 - chanmask = 0x0b; 1367 - break; 1368 - case 8: 1369 - chanmask = 0x13; 1370 - break; 1371 - } 1372 1318 dataDCC1 = AC_DIG1_ENABLE | AC_DIG1_COPYRIGHT; 1373 1319 dataDCC2 = 0x2; 1374 - 1375 - /* set the Audio InforFrame Channel Allocation */ 1376 - snd_hda_codec_write(codec, 0x1, 0, 1377 - Nv_VERB_SET_Channel_Allocation, chanmask); 1378 1320 1379 1321 /* turn off SPDIF once; otherwise the IEC958 bits won't be updated */ 1380 1322 if (codec->spdif_status_reset && (codec->spdif_ctls & AC_DIG1_ENABLE)) ··· 1429 1413 } 1430 1414 } 1431 1415 1432 - /* set the Audio Info Frame Checksum */ 1433 - snd_hda_codec_write(codec, 0x1, 0, 1434 - Nv_VERB_SET_Info_Frame_Checksum, 1435 - (0x71 - chan - chanmask)); 1416 + nvhdmi_8ch_7x_set_info_frame_parameters(codec, chs); 1436 1417 1437 1418 mutex_unlock(&codec->spdif_mutex); 1438 1419 return 0; ··· 1525 1512 spec->multiout.max_channels = 8; 1526 1513 spec->pcm_playback = &nvhdmi_pcm_playback_8ch_7x; 1527 1514 codec->patch_ops = nvhdmi_patch_ops_8ch_7x; 1515 + 1516 + /* Initialize the audio infoframe channel mask and checksum to something 1517 + * valid */ 1518 + nvhdmi_8ch_7x_set_info_frame_parameters(codec, 8); 1519 + 1528 1520 return 0; 1529 1521 } 1530 1522
+1 -1
sound/pci/hda/patch_realtek.c
··· 14124 14124 }; 14125 14125 14126 14126 static hda_nid_t alc269_adc_candidates[] = { 14127 - 0x08, 0x09, 0x07, 14127 + 0x08, 0x09, 0x07, 0x11, 14128 14128 }; 14129 14129 14130 14130 #define alc269_modes alc260_modes
+3
sound/pci/hda/patch_sigmatel.c
··· 3408 3408 hda_nid_t conn[HDA_MAX_NUM_INPUTS]; 3409 3409 int i, nums; 3410 3410 3411 + if (!(get_wcaps(codec, mux) & AC_WCAP_CONN_LIST)) 3412 + return -1; 3413 + 3411 3414 nums = snd_hda_get_connections(codec, mux, conn, ARRAY_SIZE(conn)); 3412 3415 for (i = 0; i < nums; i++) 3413 3416 if (conn[i] == nid)
+1
sound/soc/pxa/pxa2xx-pcm.c
··· 65 65 if (prtd->dma_ch >= 0) { 66 66 pxa_free_dma(prtd->dma_ch); 67 67 prtd->dma_ch = -1; 68 + prtd->params = NULL; 68 69 } 69 70 70 71 return 0;
+3 -3
sound/soc/pxa/zylonite.c
··· 167 167 .codec_name = "wm9713-codec", 168 168 .platform_name = "pxa-pcm-audio", 169 169 .cpu_dai_name = "pxa2xx-ac97", 170 - .codec_name = "wm9713-hifi", 170 + .codec_dai_name = "wm9713-hifi", 171 171 .init = zylonite_wm9713_init, 172 172 }, 173 173 { ··· 176 176 .codec_name = "wm9713-codec", 177 177 .platform_name = "pxa-pcm-audio", 178 178 .cpu_dai_name = "pxa2xx-ac97-aux", 179 - .codec_name = "wm9713-aux", 179 + .codec_dai_name = "wm9713-aux", 180 180 }, 181 181 { 182 182 .name = "WM9713 Voice", ··· 184 184 .codec_name = "wm9713-codec", 185 185 .platform_name = "pxa-pcm-audio", 186 186 .cpu_dai_name = "pxa-ssp-dai.2", 187 - .codec_name = "wm9713-voice", 187 + .codec_dai_name = "wm9713-voice", 188 188 .ops = &zylonite_voice_ops, 189 189 }, 190 190 };
+4 -4
sound/soc/soc-core.c
··· 92 92 static int format_register_str(struct snd_soc_codec *codec, 93 93 unsigned int reg, char *buf, size_t len) 94 94 { 95 - int wordsize = codec->driver->reg_word_size * 2; 96 - int regsize = min_bytes_needed(codec->driver->reg_cache_size) * 2; 95 + int wordsize = min_bytes_needed(codec->driver->reg_cache_size) * 2; 96 + int regsize = codec->driver->reg_word_size * 2; 97 97 int ret; 98 98 char tmpbuf[len + 1]; 99 99 char regbuf[regsize + 1]; ··· 132 132 size_t total = 0; 133 133 loff_t p = 0; 134 134 135 - wordsize = codec->driver->reg_word_size * 2; 136 - regsize = min_bytes_needed(codec->driver->reg_cache_size) * 2; 135 + wordsize = min_bytes_needed(codec->driver->reg_cache_size) * 2; 136 + regsize = codec->driver->reg_word_size * 2; 137 137 138 138 len = wordsize + regsize + 2 + 1; 139 139
+1
sound/usb/midi.c
··· 1301 1301 case USB_ID(0x15ca, 0x0101): /* Textech USB Midi Cable */ 1302 1302 case USB_ID(0x15ca, 0x1806): /* Textech USB Midi Cable */ 1303 1303 case USB_ID(0x1a86, 0x752d): /* QinHeng CH345 "USB2.0-MIDI" */ 1304 + case USB_ID(0xfc08, 0x0101): /* Unknown vendor Cable */ 1304 1305 ep->max_transfer = 4; 1305 1306 break; 1306 1307 /*