sound fixes for 4.6-rc4
Linus,
please pull sound fixes for v4.6-rc4 from:
git://git.kernel.org/pub/scm/linux/kernel/git/tiwai/sound.git tags/sound-4.6-rc4
The topmost commit is c44da62b55bb453052869ab095bcda7aa0bd6bba
----------------------------------------------------------------
sound fixes for 4.6-rc4
we've had a very calm development cycle, so far. Here are the few fixes for HD-audio and USB-audio, all of which are small and easy.
----------------------------------------------------------------
Dennis Kadioglu (1):
ALSA: usb-audio: Add a quirk for Plantronics BT300
Hyungwon Hwang (1):
ALSA: hda - Fix regression of monitor_present flag in eld proc file
Kailang Yang (1):
ALSA: usb-audio: Skip volume controls triggers hangup on Dell USB Dock
Sven Eckelmann (1):
ALSA: hda/realtek - Enable the ALC292 dock fixup on the Thinkpad T460s
Takashi Iwai (3):
ALSA: hda - Bind with i915 only when Intel graphics is present
ALSA: usb-audio: Add a sample rate quirk for Phoenix Audio TMX320
ALSA: hda - Fix inconsistent monitor_present state until repoll
William Breathitt Gray (1):
ALSA: sscape: Use correct format identifier for size_t
--- sound/hda/hdac_i915.c | 15 +++++++++++++++ sound/isa/sscape.c | 2 +- sound/pci/hda/patch_hdmi.c | 9 ++++----- sound/pci/hda/patch_realtek.c | 10 +++++++++- sound/usb/mixer_maps.c | 14 ++++++++++++++ sound/usb/quirks.c | 2 ++ 6 files changed, 45 insertions(+), 7 deletions(-)
sound/hda/hdac_i915.c +15 -0
@@ -267,6 +267,18 @@ int snd_hdac_i915_register_notifier(const struct i915_audio_component_audio_ops }EXPORT_SYMBOL_GPL (snd_hdac_i915_register_notifier); +/* check whether intel graphics is present */ +static bool i915_gfx_present (void ) +{ +static struct pci_device_id ids[] = { + {PCI_DEVICE (PCI_VENDOR_ID_INTEL ,PCI_ANY_ID ), + .class =PCI_BASE_CLASS_DISPLAY <<16 , + .class_mask =0xff <<16 }, + {} + }; +return pci_dev_present (ids); +} +/** * snd_hdac_i915_init - Initialize i915 audio component * @bus: HDA core bus
@@ -286,6 +298,9 @@ int snd_hdac_i915_init(struct hdac_bus *bus)struct i915_audio_component *acomp;int ret; +if (!i915_gfx_present ()) +return -ENODEV ; + acomp =kzalloc (sizeof (*acomp),GFP_KERNEL );if (!acomp)return -ENOMEM ;
sound/isa/sscape.c +1 -1
@@ -591,7 +591,7 @@ static int sscape_upload_microcode(struct snd_card *card, int version) } err =upload_dma_data (sscape, init_fw->data, init_fw->size);if (err ==0 ) -snd_printk (KERN_INFO "sscape: MIDI firmware loaded %d KBs\n" , +snd_printk (KERN_INFO "sscape: MIDI firmware loaded %zu KBs\n" , init_fw->size >>10 );release_firmware (init_fw);
sound/pci/hda/patch_hdmi.c +4 -5
@@ -1396,7 +1396,6 @@ static bool hdmi_present_sense_via_verbs(struct hdmi_spec_per_pin *per_pin,struct hda_codec *codec = per_pin->codec;struct hdmi_spec *spec = codec->spec;struct hdmi_eld *eld = &spec->temp_eld; -struct hdmi_eld *pin_eld = &per_pin->sink_eld;hda_nid_t pin_nid = per_pin->pin_nid;/* * Always execute a GetPinSense verb here, even when called from
@@ -1413,15 +1412,15 @@ static bool hdmi_present_sense_via_verbs(struct hdmi_spec_per_pin *per_pin, present =snd_hda_pin_sense (codec, pin_nid);mutex_lock (&per_pin->lock); - pin_eld->monitor_present = !!(present &AC_PINSENSE_PRESENCE ); -if (pin_eld->monitor_present) + eld->monitor_present = !!(present &AC_PINSENSE_PRESENCE ); +if (eld->monitor_present) eld->eld_valid = !!(present &AC_PINSENSE_ELDV );else eld->eld_valid = false;codec_dbg (codec,"HDMI status: Codec=%d Pin=%d Presence_Detect=%d ELD_Valid=%d\n" , - codec->addr, pin_nid, pin_eld->monitor_present, eld->eld_valid); + codec->addr, pin_nid, eld->monitor_present, eld->eld_valid);if (eld->eld_valid) { if (spec->ops.pin_get_eld(codec, pin_nid, eld->eld_buffer,
@@ -1441,7 +1440,7 @@ static bool hdmi_present_sense_via_verbs(struct hdmi_spec_per_pin *per_pin,else update_eld (codec, per_pin, eld); - ret = !repoll || !pin_eld->monitor_present || pin_eld->eld_valid; + ret = !repoll || !eld->monitor_present || eld->eld_valid; jack =snd_hda_jack_tbl_get (codec, pin_nid);if (jack)
sound/pci/hda/patch_realtek.c +9 -1
@@ -4760,6 +4760,7 @@ enum {ALC225_FIXUP_DELL1_MIC_NO_PRESENCE ,ALC280_FIXUP_HP_HEADSET_MIC ,ALC221_FIXUP_HP_FRONT_MIC , + ALC292_FIXUP_TPT460, }; static const struct hda_fixup alc269_fixups[] = {
@@ -5409,6 +5410,12 @@ static const struct hda_fixup alc269_fixups[] = { { } }, }, + [ALC292_FIXUP_TPT460 ] = { + .type =HDA_FIXUP_FUNC , + .v.func = alc_fixup_tpt440_dock, + .chained = true, + .chain_id =ALC293_FIXUP_LENOVO_SPK_NOISE , + }, };static const struct snd_pci_quirk alc269_fixup_tbl[] = {
@@ -5563,7 +5570,7 @@ static const struct snd_pci_quirk alc269_fixup_tbl[] = {SND_PCI_QUIRK (0x17aa ,0x2218 ,"Thinkpad X1 Carbon 2nd" ,ALC292_FIXUP_TPT440_DOCK ),SND_PCI_QUIRK (0x17aa ,0x2223 ,"ThinkPad T550" ,ALC292_FIXUP_TPT440_DOCK ),SND_PCI_QUIRK (0x17aa ,0x2226 ,"ThinkPad X250" ,ALC292_FIXUP_TPT440_DOCK ), -SND_PCI_QUIRK (0x17aa ,0x2233 ,"Thinkpad" ,ALC293_FIXUP_LENOVO_SPK_NOISE ), +SND_PCI_QUIRK (0x17aa ,0x2233 ,"Thinkpad" ,ALC292_FIXUP_TPT460 ),SND_PCI_QUIRK (0x17aa ,0x30bb ,"ThinkCentre AIO" ,ALC233_FIXUP_LENOVO_LINE2_MIC_HOTKEY ),SND_PCI_QUIRK (0x17aa ,0x30e2 ,"ThinkCentre AIO" ,ALC233_FIXUP_LENOVO_LINE2_MIC_HOTKEY ), SND_PCI_QUIRK(0x17aa, 0x3902, "Lenovo E50-80", ALC269_FIXUP_DMIC_THINKPAD_ACPI),
@@ -5658,6 +5665,7 @@ static const struct hda_model_fixup alc269_fixup_models[] = { {.id = ALC283_FIXUP_SENSE_COMBO_JACK, .name = "alc283-sense-combo"}, {.id = ALC292_FIXUP_TPT440_DOCK, .name = "tpt440-dock"}, {.id = ALC292_FIXUP_TPT440, .name = "tpt440"}, + {.id = ALC292_FIXUP_TPT460, .name = "tpt460"}, {} };#define ALC225_STANDARD_PINS \
sound/usb/mixer_maps.c +14 -0
@@ -349,6 +349,16 @@ static struct usbmix_name_map bose_companion5_map[] = { };/* +* Dell usb dock with ALC4020 codec had a firmware problem where it got +* screwed up when zero volume is passed; just skip it as a workaround +*/ +static const struct usbmix_name_map dell_alc4020_map[] = { + {16 ,NULL }, + {19 ,NULL }, + {0 } +}; + +/* * Control map entries */
@@ -431,6 +441,10 @@ static struct usbmix_ctl_map usbmix_ctl_maps[] = { .map = aureon_51_2_map, }, { + .id = USB_ID(0x0bda, 0x4014), + .map = dell_alc4020_map, + }, + { .id = USB_ID(0x0dba, 0x1000), .map = mbox1_map, },
sound/usb/quirks.c +2 -0
@@ -1134,9 +1134,11 @@ bool snd_usb_get_sample_rate_quirk(struct snd_usb_audio *chip)case USB_ID (0x045E ,0x076F ):/* MS Lifecam HD-6000 */ case USB_ID (0x045E ,0x0772 ):/* MS Lifecam Studio */ case USB_ID (0x045E ,0x0779 ):/* MS Lifecam HD-3000 */ +case USB_ID (0x047F ,0x0415 ):/* Plantronics BT-300 */ case USB_ID (0x047F ,0xAA05 ):/* Plantronics DA45 */ case USB_ID (0x04D8 ,0xFEEA ):/* Benchmark DAC1 Pre */ case USB_ID (0x074D ,0x3553 ):/* Outlaw RR2150 (Micronas UAC3553B) */ +case USB_ID (0x1de7 ,0x0014 ):/* Phoenix Audio TMX320 */ case USB_ID (0x21B4 ,0x0081 ):/* AudioQuest DragonFly */ return true; }