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

Merge tag 'sound-4.8-rc2' of git://git.kernel.org/pub/scm/linux/kernel/git/tiwai/sound

Pull sound fixes from Takashi Iwai:
"A regression fix of HD-audio runtime PM and two USB quirks"

* tag 'sound-4.8-rc2' of git://git.kernel.org/pub/scm/linux/kernel/git/tiwai/sound:
ALSA: hda - Manage power well properly for resume
ALSA: usb-audio: Add quirk for ELP HD USB Camera
ALSA: usb-audio: Add a sample rate quirk for Creative Live! Cam Socialize HD (VF0610)

+22 -12
+20 -12
sound/pci/hda/hda_intel.c
··· 906 906 struct snd_card *card = dev_get_drvdata(dev); 907 907 struct azx *chip; 908 908 struct hda_intel *hda; 909 + struct hdac_bus *bus; 909 910 910 911 if (!card) 911 912 return 0; 912 913 913 914 chip = card->private_data; 914 915 hda = container_of(chip, struct hda_intel, chip); 916 + bus = azx_bus(chip); 915 917 if (chip->disabled || hda->init_failed || !chip->running) 916 918 return 0; 917 919 918 - if (chip->driver_caps & AZX_DCAPS_I915_POWERWELL 919 - && hda->need_i915_power) { 920 - snd_hdac_display_power(azx_bus(chip), true); 921 - snd_hdac_i915_set_bclk(azx_bus(chip)); 920 + if (chip->driver_caps & AZX_DCAPS_I915_POWERWELL) { 921 + snd_hdac_display_power(bus, true); 922 + if (hda->need_i915_power) 923 + snd_hdac_i915_set_bclk(bus); 922 924 } 925 + 923 926 if (chip->msi) 924 927 if (pci_enable_msi(pci) < 0) 925 928 chip->msi = 0; ··· 931 928 azx_init_pci(chip); 932 929 933 930 hda_intel_init_chip(chip, true); 931 + 932 + /* power down again for link-controlled chips */ 933 + if ((chip->driver_caps & AZX_DCAPS_I915_POWERWELL) && 934 + !hda->need_i915_power) 935 + snd_hdac_display_power(bus, false); 934 936 935 937 snd_power_change_state(card, SNDRV_CTL_POWER_D0); 936 938 ··· 1016 1008 1017 1009 chip = card->private_data; 1018 1010 hda = container_of(chip, struct hda_intel, chip); 1011 + bus = azx_bus(chip); 1019 1012 if (chip->disabled || hda->init_failed) 1020 1013 return 0; 1021 1014 ··· 1024 1015 return 0; 1025 1016 1026 1017 if (chip->driver_caps & AZX_DCAPS_I915_POWERWELL) { 1027 - bus = azx_bus(chip); 1028 - if (hda->need_i915_power) { 1029 - snd_hdac_display_power(bus, true); 1018 + snd_hdac_display_power(bus, true); 1019 + if (hda->need_i915_power) 1030 1020 snd_hdac_i915_set_bclk(bus); 1031 - } else { 1032 - /* toggle codec wakeup bit for STATESTS read */ 1033 - snd_hdac_set_codec_wakeup(bus, true); 1034 - snd_hdac_set_codec_wakeup(bus, false); 1035 - } 1036 1021 } 1037 1022 1038 1023 /* Read STATESTS before controller reset */ ··· 1045 1042 /* disable controller Wake Up event*/ 1046 1043 azx_writew(chip, WAKEEN, azx_readw(chip, WAKEEN) & 1047 1044 ~STATESTS_INT_MASK); 1045 + 1046 + /* power down again for link-controlled chips */ 1047 + if ((chip->driver_caps & AZX_DCAPS_I915_POWERWELL) && 1048 + !hda->need_i915_power) 1049 + snd_hdac_display_power(bus, false); 1048 1050 1049 1051 trace_azx_runtime_resume(chip); 1050 1052 return 0;
+2
sound/usb/quirks.c
··· 1128 1128 { 1129 1129 /* devices which do not support reading the sample rate. */ 1130 1130 switch (chip->usb_id) { 1131 + case USB_ID(0x041E, 0x4080): /* Creative Live Cam VF0610 */ 1131 1132 case USB_ID(0x045E, 0x075D): /* MS Lifecam Cinema */ 1132 1133 case USB_ID(0x045E, 0x076D): /* MS Lifecam HD-5000 */ 1133 1134 case USB_ID(0x045E, 0x076E): /* MS Lifecam HD-5001 */ ··· 1139 1138 case USB_ID(0x047F, 0xAA05): /* Plantronics DA45 */ 1140 1139 case USB_ID(0x04D8, 0xFEEA): /* Benchmark DAC1 Pre */ 1141 1140 case USB_ID(0x0556, 0x0014): /* Phoenix Audio TMX320VC */ 1141 + case USB_ID(0x05A3, 0x9420): /* ELP HD USB Camera */ 1142 1142 case USB_ID(0x074D, 0x3553): /* Outlaw RR2150 (Micronas UAC3553B) */ 1143 1143 case USB_ID(0x1de7, 0x0013): /* Phoenix Audio MT202exe */ 1144 1144 case USB_ID(0x1de7, 0x0014): /* Phoenix Audio TMX320 */