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

Pull sound fixes from Takashi Iwai:
"Here are a chunk of small fixes since rc1: two PCM core fixes, one is
a long-standing annoyance about lockdep and another is an ARM64 mmap
fix.

The rest are a HD-audio HDMI hotplug notification fix, a fix for
missing NULL termination in Realtek codec quirks and a few new
device/codec-specific quirks as usual"

* tag 'sound-3.18-rc2' of git://git.kernel.org/pub/scm/linux/kernel/git/tiwai/sound:
ALSA: hda - Add missing terminating entry to SND_HDA_PIN_QUIRK macro
ALSA: pcm: Fix false lockdep warnings
ALSA: hda - Fix inverted LED gpio setup for Lenovo Ideapad
ALSA: hda - hdmi: Fix missing ELD change event on plug/unplug
ALSA: usb-audio: Add support for Steinberg UR22 USB interface
ALSA: ALC283 codec - Avoid pop noise on headphones during suspend/resume
ALSA: pcm: use the same dma mmap codepath both for arm and arm64

+52 -18
+6 -8
sound/core/pcm_native.c
··· 781 781 { 782 782 struct snd_pcm_substream *s = NULL; 783 783 struct snd_pcm_substream *s1; 784 - int res = 0; 784 + int res = 0, depth = 1; 785 785 786 786 snd_pcm_group_for_each_entry(s, substream) { 787 787 if (do_lock && s != substream) { 788 788 if (s->pcm->nonatomic) 789 - mutex_lock_nested(&s->self_group.mutex, 790 - SINGLE_DEPTH_NESTING); 789 + mutex_lock_nested(&s->self_group.mutex, depth); 791 790 else 792 - spin_lock_nested(&s->self_group.lock, 793 - SINGLE_DEPTH_NESTING); 791 + spin_lock_nested(&s->self_group.lock, depth); 792 + depth++; 794 793 } 795 794 res = ops->pre_action(s, state); 796 795 if (res < 0) ··· 905 906 down_read(&snd_pcm_link_rwsem); 906 907 if (snd_pcm_stream_linked(substream)) { 907 908 mutex_lock(&substream->group->mutex); 908 - mutex_lock_nested(&substream->self_group.mutex, 909 - SINGLE_DEPTH_NESTING); 909 + mutex_lock(&substream->self_group.mutex); 910 910 res = snd_pcm_action_group(ops, substream, state, 1); 911 911 mutex_unlock(&substream->self_group.mutex); 912 912 mutex_unlock(&substream->group->mutex); ··· 3309 3311 3310 3312 #ifndef ARCH_HAS_DMA_MMAP_COHERENT 3311 3313 /* This should be defined / handled globally! */ 3312 - #ifdef CONFIG_ARM 3314 + #if defined(CONFIG_ARM) || defined(CONFIG_ARM64) 3313 3315 #define ARCH_HAS_DMA_MMAP_COHERENT 3314 3316 #endif 3315 3317 #endif
+2 -2
sound/pci/hda/hda_local.h
··· 419 419 .subvendor = _subvendor,\ 420 420 .name = _name,\ 421 421 .value = _value,\ 422 - .pins = (const struct hda_pintbl[]) { _pins } \ 422 + .pins = (const struct hda_pintbl[]) { _pins, {0, 0}} \ 423 423 } 424 424 #else 425 425 ··· 427 427 { .codec = _codec,\ 428 428 .subvendor = _subvendor,\ 429 429 .value = _value,\ 430 - .pins = (const struct hda_pintbl[]) { _pins } \ 430 + .pins = (const struct hda_pintbl[]) { _pins, {0, 0}} \ 431 431 } 432 432 433 433 #endif
+9 -6
sound/pci/hda/patch_hdmi.c
··· 1583 1583 } 1584 1584 } 1585 1585 1586 - if (pin_eld->eld_valid && !eld->eld_valid) { 1587 - update_eld = true; 1586 + if (pin_eld->eld_valid != eld->eld_valid) 1588 1587 eld_changed = true; 1589 - } 1588 + 1589 + if (pin_eld->eld_valid && !eld->eld_valid) 1590 + update_eld = true; 1591 + 1590 1592 if (update_eld) { 1591 1593 bool old_eld_valid = pin_eld->eld_valid; 1592 1594 pin_eld->eld_valid = eld->eld_valid; 1593 - eld_changed = pin_eld->eld_size != eld->eld_size || 1595 + if (pin_eld->eld_size != eld->eld_size || 1594 1596 memcmp(pin_eld->eld_buffer, eld->eld_buffer, 1595 - eld->eld_size) != 0; 1596 - if (eld_changed) 1597 + eld->eld_size) != 0) { 1597 1598 memcpy(pin_eld->eld_buffer, eld->eld_buffer, 1598 1599 eld->eld_size); 1600 + eld_changed = true; 1601 + } 1599 1602 pin_eld->eld_size = eld->eld_size; 1600 1603 pin_eld->info = eld->info; 1601 1604
+5 -2
sound/pci/hda/patch_realtek.c
··· 2884 2884 2885 2885 alc_write_coef_idx(codec, 0x43, 0x9004); 2886 2886 2887 + /*depop hp during suspend*/ 2888 + alc_write_coef_idx(codec, 0x06, 0x2100); 2889 + 2887 2890 snd_hda_codec_write(codec, hp_pin, 0, 2888 2891 AC_VERB_SET_AMP_GAIN_MUTE, AMP_OUT_MUTE); 2889 2892 ··· 5613 5610 unsigned int oldval = spec->gpio_led; 5614 5611 5615 5612 if (enabled) 5616 - spec->gpio_led &= ~0x01; 5617 - else 5618 5613 spec->gpio_led |= 0x01; 5614 + else 5615 + spec->gpio_led &= ~0x01; 5619 5616 if (spec->gpio_led != oldval) 5620 5617 snd_hda_codec_write(codec, 0x01, 0, AC_VERB_SET_GPIO_DATA, 5621 5618 spec->gpio_led);
+30
sound/usb/quirks-table.h
··· 385 385 } 386 386 }, 387 387 { 388 + USB_DEVICE(0x0499, 0x1509), 389 + .driver_info = (unsigned long) & (const struct snd_usb_audio_quirk) { 390 + /* .vendor_name = "Yamaha", */ 391 + /* .product_name = "Steinberg UR22", */ 392 + .ifnum = QUIRK_ANY_INTERFACE, 393 + .type = QUIRK_COMPOSITE, 394 + .data = (const struct snd_usb_audio_quirk[]) { 395 + { 396 + .ifnum = 1, 397 + .type = QUIRK_AUDIO_STANDARD_INTERFACE 398 + }, 399 + { 400 + .ifnum = 2, 401 + .type = QUIRK_AUDIO_STANDARD_INTERFACE 402 + }, 403 + { 404 + .ifnum = 3, 405 + .type = QUIRK_MIDI_YAMAHA 406 + }, 407 + { 408 + .ifnum = 4, 409 + .type = QUIRK_IGNORE_INTERFACE 410 + }, 411 + { 412 + .ifnum = -1 413 + } 414 + } 415 + } 416 + }, 417 + { 388 418 USB_DEVICE(0x0499, 0x150a), 389 419 .driver_info = (unsigned long) & (const struct snd_usb_audio_quirk) { 390 420 /* .vendor_name = "Yamaha", */