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 tag 'sound-3.13-rc4' of git://git.kernel.org/pub/scm/linux/kernel/git/tiwai/sound

Pull sound fixes from Takashi Iwai:
"Still a slightly high amount of changes than wished, but they are all
good regression and/or device-specific fixes. Majority of commits are
for HD-audio, an HDMI ctl index fix that hits old graphics boards,
regression fixes for AD codecs and a few quirks.

Other than that, two major fixes are included: a 64bit ABI fix for
compress offload, and 64bit dma_addr_t truncation fix, which had hit
on PAE kernels"

* tag 'sound-3.13-rc4' of git://git.kernel.org/pub/scm/linux/kernel/git/tiwai/sound:
ALSA: hda - Add static DAC/pin mapping for AD1986A codec
ALSA: hda - One more Dell headset detection quirk
ALSA: hda - hdmi: Fix IEC958 ctl indexes for some simple HDMI devices
ALSA: hda - Mute all aamix inputs as default
ALSA: compress: Fix 64bit ABI incompatibility
ALSA: memalloc.h - fix wrong truncation of dma_addr_t
ALSA: hda - Another Dell headset detection quirk
ALSA: hda - A Dell headset detection quirk
ALSA: hda - Remove quirk for Dell Vostro 131
ALSA: usb-audio: fix uninitialized variable compile warning
ALSA: hda - fix mic issues on Acer Aspire E-572

+78 -9
+1 -1
include/sound/memalloc.h
··· 108 108 { 109 109 struct snd_sg_buf *sgbuf = dmab->private_data; 110 110 dma_addr_t addr = sgbuf->table[offset >> PAGE_SHIFT].addr; 111 - addr &= PAGE_MASK; 111 + addr &= ~((dma_addr_t)PAGE_SIZE - 1); 112 112 return addr + offset % PAGE_SIZE; 113 113 } 114 114
+3 -3
include/uapi/sound/compress_offload.h
··· 30 30 #include <sound/compress_params.h> 31 31 32 32 33 - #define SNDRV_COMPRESS_VERSION SNDRV_PROTOCOL_VERSION(0, 1, 1) 33 + #define SNDRV_COMPRESS_VERSION SNDRV_PROTOCOL_VERSION(0, 1, 2) 34 34 /** 35 35 * struct snd_compressed_buffer: compressed buffer 36 36 * @fragment_size: size of buffer fragment in bytes ··· 67 67 struct snd_compr_tstamp { 68 68 __u32 byte_offset; 69 69 __u32 copied_total; 70 - snd_pcm_uframes_t pcm_frames; 71 - snd_pcm_uframes_t pcm_io_frames; 70 + __u32 pcm_frames; 71 + __u32 pcm_io_frames; 72 72 __u32 sampling_rate; 73 73 }; 74 74
+46 -1
sound/pci/hda/hda_generic.c
··· 474 474 memset(path, 0, sizeof(*path)); 475 475 } 476 476 477 + /* return a DAC if paired to the given pin by codec driver */ 478 + static hda_nid_t get_preferred_dac(struct hda_codec *codec, hda_nid_t pin) 479 + { 480 + struct hda_gen_spec *spec = codec->spec; 481 + const hda_nid_t *list = spec->preferred_dacs; 482 + 483 + if (!list) 484 + return 0; 485 + for (; *list; list += 2) 486 + if (*list == pin) 487 + return list[1]; 488 + return 0; 489 + } 490 + 477 491 /* look for an empty DAC slot */ 478 492 static hda_nid_t look_for_dac(struct hda_codec *codec, hda_nid_t pin, 479 493 bool is_digital) ··· 1206 1192 continue; 1207 1193 } 1208 1194 1209 - dacs[i] = look_for_dac(codec, pin, false); 1195 + dacs[i] = get_preferred_dac(codec, pin); 1196 + if (dacs[i]) { 1197 + if (is_dac_already_used(codec, dacs[i])) 1198 + badness += bad->shared_primary; 1199 + } 1200 + 1201 + if (!dacs[i]) 1202 + dacs[i] = look_for_dac(codec, pin, false); 1210 1203 if (!dacs[i] && !i) { 1211 1204 /* try to steal the DAC of surrounds for the front */ 1212 1205 for (j = 1; j < num_outs; j++) { ··· 4318 4297 return AC_PWRST_D3; 4319 4298 } 4320 4299 4300 + /* mute all aamix inputs initially; parse up to the first leaves */ 4301 + static void mute_all_mixer_nid(struct hda_codec *codec, hda_nid_t mix) 4302 + { 4303 + int i, nums; 4304 + const hda_nid_t *conn; 4305 + bool has_amp; 4306 + 4307 + nums = snd_hda_get_conn_list(codec, mix, &conn); 4308 + has_amp = nid_has_mute(codec, mix, HDA_INPUT); 4309 + for (i = 0; i < nums; i++) { 4310 + if (has_amp) 4311 + snd_hda_codec_amp_stereo(codec, mix, 4312 + HDA_INPUT, i, 4313 + 0xff, HDA_AMP_MUTE); 4314 + else if (nid_has_volume(codec, conn[i], HDA_OUTPUT)) 4315 + snd_hda_codec_amp_stereo(codec, conn[i], 4316 + HDA_OUTPUT, 0, 4317 + 0xff, HDA_AMP_MUTE); 4318 + } 4319 + } 4321 4320 4322 4321 /* 4323 4322 * Parse the given BIOS configuration and set up the hda_gen_spec ··· 4475 4434 return err; 4476 4435 } 4477 4436 } 4437 + 4438 + /* mute all aamix input initially */ 4439 + if (spec->mixer_nid) 4440 + mute_all_mixer_nid(codec, spec->mixer_nid); 4478 4441 4479 4442 dig_only: 4480 4443 parse_digital(codec);
+3
sound/pci/hda/hda_generic.h
··· 249 249 const struct badness_table *main_out_badness; 250 250 const struct badness_table *extra_out_badness; 251 251 252 + /* preferred pin/DAC pairs; an array of paired NIDs */ 253 + const hda_nid_t *preferred_dacs; 254 + 252 255 /* loopback mixing mode */ 253 256 bool aamix_mode; 254 257
+10
sound/pci/hda/patch_analog.c
··· 340 340 { 341 341 int err; 342 342 struct ad198x_spec *spec; 343 + static hda_nid_t preferred_pairs[] = { 344 + 0x1a, 0x03, 345 + 0x1b, 0x03, 346 + 0x1c, 0x04, 347 + 0x1d, 0x05, 348 + 0x1e, 0x03, 349 + 0 350 + }; 343 351 344 352 err = alloc_ad_spec(codec); 345 353 if (err < 0) ··· 368 360 * So, let's disable the shared stream. 369 361 */ 370 362 spec->gen.multiout.no_share_stream = 1; 363 + /* give fixed DAC/pin pairs */ 364 + spec->gen.preferred_dacs = preferred_pairs; 371 365 372 366 /* AD1986A can't manage the dynamic pin on/off smoothly */ 373 367 spec->gen.auto_mute_via_amp = 1;
-1
sound/pci/hda/patch_conexant.c
··· 2936 2936 SND_PCI_QUIRK(0x1028, 0x0401, "Dell Vostro 1014", CXT5066_DELL_VOSTRO), 2937 2937 SND_PCI_QUIRK(0x1028, 0x0408, "Dell Inspiron One 19T", CXT5066_IDEAPAD), 2938 2938 SND_PCI_QUIRK(0x1028, 0x050f, "Dell Inspiron", CXT5066_IDEAPAD), 2939 - SND_PCI_QUIRK(0x1028, 0x0510, "Dell Vostro", CXT5066_IDEAPAD), 2940 2939 SND_PCI_QUIRK(0x103c, 0x360b, "HP G60", CXT5066_HP_LAPTOP), 2941 2940 SND_PCI_QUIRK(0x1043, 0x13f3, "Asus A52J", CXT5066_ASUS), 2942 2941 SND_PCI_QUIRK(0x1043, 0x1643, "Asus K52JU", CXT5066_ASUS),
+3 -2
sound/pci/hda/patch_hdmi.c
··· 2337 2337 int err; 2338 2338 2339 2339 per_cvt = get_cvt(spec, 0); 2340 - err = snd_hda_create_spdif_out_ctls(codec, per_cvt->cvt_nid, 2341 - per_cvt->cvt_nid); 2340 + err = snd_hda_create_dig_out_ctls(codec, per_cvt->cvt_nid, 2341 + per_cvt->cvt_nid, 2342 + HDA_PCM_TYPE_HDMI); 2342 2343 if (err < 0) 2343 2344 return err; 2344 2345 return simple_hdmi_build_jack(codec, 0);
+11
sound/pci/hda/patch_realtek.c
··· 3849 3849 ALC269_FIXUP_ASUS_X101, 3850 3850 ALC271_FIXUP_AMIC_MIC2, 3851 3851 ALC271_FIXUP_HP_GATE_MIC_JACK, 3852 + ALC271_FIXUP_HP_GATE_MIC_JACK_E1_572, 3852 3853 ALC269_FIXUP_ACER_AC700, 3853 3854 ALC269_FIXUP_LIMIT_INT_MIC_BOOST, 3854 3855 ALC269VB_FIXUP_ASUS_ZENBOOK, ··· 4112 4111 .chained = true, 4113 4112 .chain_id = ALC271_FIXUP_AMIC_MIC2, 4114 4113 }, 4114 + [ALC271_FIXUP_HP_GATE_MIC_JACK_E1_572] = { 4115 + .type = HDA_FIXUP_FUNC, 4116 + .v.func = alc269_fixup_limit_int_mic_boost, 4117 + .chained = true, 4118 + .chain_id = ALC271_FIXUP_HP_GATE_MIC_JACK, 4119 + }, 4115 4120 [ALC269_FIXUP_ACER_AC700] = { 4116 4121 .type = HDA_FIXUP_PINS, 4117 4122 .v.pins = (const struct hda_pintbl[]) { ··· 4215 4208 SND_PCI_QUIRK(0x1025, 0x0740, "Acer AO725", ALC271_FIXUP_HP_GATE_MIC_JACK), 4216 4209 SND_PCI_QUIRK(0x1025, 0x0742, "Acer AO756", ALC271_FIXUP_HP_GATE_MIC_JACK), 4217 4210 SND_PCI_QUIRK_VENDOR(0x1025, "Acer Aspire", ALC271_FIXUP_DMIC), 4211 + SND_PCI_QUIRK(0x1025, 0x0775, "Acer Aspire E1-572", ALC271_FIXUP_HP_GATE_MIC_JACK_E1_572), 4218 4212 SND_PCI_QUIRK(0x1028, 0x0470, "Dell M101z", ALC269_FIXUP_DELL_M101Z), 4219 4213 SND_PCI_QUIRK(0x1028, 0x05bd, "Dell", ALC269_FIXUP_DELL2_MIC_NO_PRESENCE), 4220 4214 SND_PCI_QUIRK(0x1028, 0x05be, "Dell", ALC269_FIXUP_DELL2_MIC_NO_PRESENCE), ··· 5042 5034 SND_PCI_QUIRK(0x1025, 0x038b, "Acer Aspire 8943G", ALC662_FIXUP_ASPIRE), 5043 5035 SND_PCI_QUIRK(0x1028, 0x05d8, "Dell", ALC668_FIXUP_DELL_MIC_NO_PRESENCE), 5044 5036 SND_PCI_QUIRK(0x1028, 0x05db, "Dell", ALC668_FIXUP_DELL_MIC_NO_PRESENCE), 5037 + SND_PCI_QUIRK(0x1028, 0x0623, "Dell", ALC668_FIXUP_DELL_MIC_NO_PRESENCE), 5038 + SND_PCI_QUIRK(0x1028, 0x0624, "Dell", ALC668_FIXUP_DELL_MIC_NO_PRESENCE), 5045 5039 SND_PCI_QUIRK(0x1028, 0x0625, "Dell", ALC668_FIXUP_DELL_MIC_NO_PRESENCE), 5046 5040 SND_PCI_QUIRK(0x1028, 0x0626, "Dell", ALC668_FIXUP_DELL_MIC_NO_PRESENCE), 5041 + SND_PCI_QUIRK(0x1028, 0x0628, "Dell", ALC668_FIXUP_DELL_MIC_NO_PRESENCE), 5047 5042 SND_PCI_QUIRK(0x103c, 0x1632, "HP RP5800", ALC662_FIXUP_HP_RP5800), 5048 5043 SND_PCI_QUIRK(0x1043, 0x11cd, "Asus N550", ALC662_FIXUP_BASS_1A_CHMAP), 5049 5044 SND_PCI_QUIRK(0x1043, 0x1477, "ASUS N56VZ", ALC662_FIXUP_BASS_CHMAP),
+1 -1
sound/usb/mixer_quirks.c
··· 1603 1603 return err; 1604 1604 } 1605 1605 1606 - return err; 1606 + return 0; 1607 1607 } 1608 1608 1609 1609 int snd_usb_mixer_apply_create_quirk(struct usb_mixer_interface *mixer)