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

Pull sound fixes from Takashi Iwai:
"Here are a few fixes that have been pending since the previous pull
request: a regression fix for HD-audio multiple SPDIF / HDMI devices,
several ALC256 codec fixes, a couple of i915 HDMI audio fixes, and
various small fixes.

Nothing exciting, just boring, but things good to have"

* tag 'sound-fix-4.1-rc1' of git://git.kernel.org/pub/scm/linux/kernel/git/tiwai/sound:
ALSA: hda - fix headset mic detection problem for one more machine
ALSA: hda/realtek - Fix Headphone Mic doesn't recording for ALC256
ALSA: hda - fix "num_steps = 0" error on ALC256
ALSA: usb-audio: Fix audio output on Roland SC-D70 sound module
ALSA: hda - add AZX_DCAPS_I915_POWERWELL to Baytrail
ALSA: hda - only sync BCLK to the display clock for Haswell & Broadwell
ALSA: hda - Mute headphone pin on suspend on XPS13 9333
sound/oss: fix deadlock in sequencer_ioctl(SNDCTL_SEQ_OUTOFBAND)
ALSA: asound.h - use SNDRV_CTL_ELEM_ID_NAME_MAXLEN
ALSA: hda - potential (but unlikely) uninitialized variable
ALSA: hda - Fix regression for slave SPDIF setups
ALSA: intel8x0: Check pci_iomap() success for DEVICE_ALI
ALSA: hda - simplify azx_has_pm_runtime

+51 -68
+1 -1
include/uapi/sound/asound.h
··· 864 864 snd_ctl_elem_iface_t iface; /* interface identifier */ 865 865 unsigned int device; /* device/client number */ 866 866 unsigned int subdevice; /* subdevice (substream) number */ 867 - unsigned char name[44]; /* ASCII name of item */ 867 + unsigned char name[SNDRV_CTL_ELEM_ID_NAME_MAXLEN]; /* ASCII name of item */ 868 868 unsigned int index; /* index of item */ 869 869 }; 870 870
+2 -10
sound/oss/sequencer.c
··· 681 681 break; 682 682 683 683 case TMR_ECHO: 684 - if (seq_mode == SEQ_2) 685 - seq_copy_to_input(event_rec, 8); 686 - else 687 - { 688 - parm = (parm << 8 | SEQ_ECHO); 689 - seq_copy_to_input((unsigned char *) &parm, 4); 690 - } 684 + parm = (parm << 8 | SEQ_ECHO); 685 + seq_copy_to_input((unsigned char *) &parm, 4); 691 686 break; 692 687 693 688 default:; ··· 1319 1324 int mode = translate_mode(file); 1320 1325 struct synth_info inf; 1321 1326 struct seq_event_rec event_rec; 1322 - unsigned long flags; 1323 1327 int __user *p = arg; 1324 1328 1325 1329 orig_dev = dev = dev >> 4; ··· 1473 1479 case SNDCTL_SEQ_OUTOFBAND: 1474 1480 if (copy_from_user(&event_rec, arg, sizeof(event_rec))) 1475 1481 return -EFAULT; 1476 - spin_lock_irqsave(&lock,flags); 1477 1482 play_event(event_rec.arr); 1478 - spin_unlock_irqrestore(&lock,flags); 1479 1483 return 0; 1480 1484 1481 1485 case SNDCTL_MIDI_INFO:
+1 -1
sound/pci/hda/hda_codec.c
··· 2529 2529 if (!d) 2530 2530 return; 2531 2531 for (; *d; d++) 2532 - snd_hdac_regmap_update(&codec->core, nid, 2532 + snd_hdac_regmap_update(&codec->core, *d, 2533 2533 AC_VERB_SET_DIGI_CONVERT_1, mask, val); 2534 2534 } 2535 2535
+1 -1
sound/pci/hda/hda_controller.h
··· 404 404 ((chip)->ops->reg_readb((dev)->sd_addr + AZX_REG_##reg)) 405 405 406 406 #define azx_has_pm_runtime(chip) \ 407 - (!AZX_DCAPS_PM_RUNTIME || ((chip)->driver_caps & AZX_DCAPS_PM_RUNTIME)) 407 + ((chip)->driver_caps & AZX_DCAPS_PM_RUNTIME) 408 408 409 409 /* PCM setup */ 410 410 static inline struct azx_dev *get_azx_dev(struct snd_pcm_substream *substream)
+6
sound/pci/hda/hda_i915.c
··· 55 55 int cdclk_freq; 56 56 unsigned int bclk_m, bclk_n; 57 57 struct i915_audio_component *acomp = &hda->audio_component; 58 + struct pci_dev *pci = hda->chip.pci; 59 + 60 + /* Only Haswell/Broadwell need set BCLK */ 61 + if (pci->device != 0x0a0c && pci->device != 0x0c0c 62 + && pci->device != 0x0d0c && pci->device != 0x160c) 63 + return; 58 64 59 65 if (!acomp->ops) 60 66 return;
+4 -1
sound/pci/hda/hda_intel.c
··· 297 297 AZX_DCAPS_PM_RUNTIME | AZX_DCAPS_I915_POWERWELL |\ 298 298 AZX_DCAPS_SNOOP_TYPE(SCH)) 299 299 300 + #define AZX_DCAPS_INTEL_BAYTRAIL \ 301 + (AZX_DCAPS_INTEL_PCH_NOPM | AZX_DCAPS_I915_POWERWELL) 302 + 300 303 #define AZX_DCAPS_INTEL_BRASWELL \ 301 304 (AZX_DCAPS_INTEL_PCH | AZX_DCAPS_I915_POWERWELL) 302 305 ··· 1995 1992 .driver_data = AZX_DRIVER_SCH | AZX_DCAPS_INTEL_PCH_NOPM }, 1996 1993 /* BayTrail */ 1997 1994 { PCI_DEVICE(0x8086, 0x0f04), 1998 - .driver_data = AZX_DRIVER_PCH | AZX_DCAPS_INTEL_PCH_NOPM }, 1995 + .driver_data = AZX_DRIVER_PCH | AZX_DCAPS_INTEL_BAYTRAIL }, 1999 1996 /* Braswell */ 2000 1997 { PCI_DEVICE(0x8086, 0x2284), 2001 1998 .driver_data = AZX_DRIVER_PCH | AZX_DCAPS_INTEL_BRASWELL },
+2 -2
sound/pci/hda/hda_proc.c
··· 582 582 583 583 /* Get Cache connections info */ 584 584 cache_len = snd_hda_get_conn_list(codec, nid, &list); 585 - if (cache_len != conn_len 586 - || memcmp(list, conn, conn_len)) { 585 + if (cache_len >= 0 && (cache_len != conn_len || 586 + memcmp(list, conn, conn_len) != 0)) { 587 587 snd_iprintf(buffer, " In-driver Connection: %d\n", cache_len); 588 588 if (cache_len > 0) { 589 589 snd_iprintf(buffer, " ");
+26 -21
sound/pci/hda/patch_realtek.c
··· 4176 4176 } 4177 4177 } 4178 4178 4179 - static unsigned int alc_power_filter_xps13(struct hda_codec *codec, 4180 - hda_nid_t nid, 4181 - unsigned int power_state) 4179 + static void alc_shutup_dell_xps13(struct hda_codec *codec) 4182 4180 { 4183 4181 struct alc_spec *spec = codec->spec; 4182 + int hp_pin = spec->gen.autocfg.hp_pins[0]; 4184 4183 4185 - /* Avoid pop noises when headphones are plugged in */ 4186 - if (spec->gen.hp_jack_present) 4187 - if (nid == codec->core.afg || nid == 0x02 || nid == 0x15) 4188 - return AC_PWRST_D0; 4189 - return snd_hda_gen_path_power_filter(codec, nid, power_state); 4184 + /* Prevent pop noises when headphones are plugged in */ 4185 + snd_hda_codec_write(codec, hp_pin, 0, 4186 + AC_VERB_SET_AMP_GAIN_MUTE, AMP_OUT_MUTE); 4187 + msleep(20); 4190 4188 } 4191 4189 4192 4190 static void alc_fixup_dell_xps13(struct hda_codec *codec, ··· 4195 4197 struct hda_input_mux *imux = &spec->gen.input_mux; 4196 4198 int i; 4197 4199 4198 - spec->shutup = alc_no_shutup; 4199 - codec->power_filter = alc_power_filter_xps13; 4200 + spec->shutup = alc_shutup_dell_xps13; 4200 4201 4201 4202 /* Make the internal mic the default input source. */ 4202 4203 for (i = 0; i < imux->num_items; i++) { ··· 5228 5231 {0x1b, 0x411111f0}, \ 5229 5232 {0x1e, 0x411111f0} 5230 5233 5234 + #define ALC256_STANDARD_PINS \ 5235 + {0x12, 0x90a60140}, \ 5236 + {0x14, 0x90170110}, \ 5237 + {0x19, 0x411111f0}, \ 5238 + {0x1a, 0x411111f0}, \ 5239 + {0x1b, 0x411111f0}, \ 5240 + {0x1d, 0x40700001}, \ 5241 + {0x1e, 0x411111f0}, \ 5242 + {0x21, 0x02211020} 5243 + 5231 5244 #define ALC282_STANDARD_PINS \ 5232 5245 {0x14, 0x90170110}, \ 5233 5246 {0x18, 0x411111f0}, \ ··· 5338 5331 {0x1d, 0x40700001}, 5339 5332 {0x21, 0x02211050}), 5340 5333 SND_HDA_PIN_QUIRK(0x10ec0256, 0x1028, "Dell", ALC255_FIXUP_DELL1_MIC_NO_PRESENCE, 5341 - {0x12, 0x90a60140}, 5342 - {0x13, 0x40000000}, 5343 - {0x14, 0x90170110}, 5344 - {0x19, 0x411111f0}, 5345 - {0x1a, 0x411111f0}, 5346 - {0x1b, 0x411111f0}, 5347 - {0x1d, 0x40700001}, 5348 - {0x1e, 0x411111f0}, 5349 - {0x21, 0x02211020}), 5334 + ALC256_STANDARD_PINS, 5335 + {0x13, 0x40000000}), 5336 + SND_HDA_PIN_QUIRK(0x10ec0256, 0x1028, "Dell", ALC255_FIXUP_DELL1_MIC_NO_PRESENCE, 5337 + ALC256_STANDARD_PINS, 5338 + {0x13, 0x411111f0}), 5350 5339 SND_HDA_PIN_QUIRK(0x10ec0280, 0x103c, "HP", ALC280_FIXUP_HP_GPIO4, 5351 5340 {0x12, 0x90a60130}, 5352 5341 {0x13, 0x40000000}, ··· 5670 5667 break; 5671 5668 case 0x10ec0256: 5672 5669 spec->codec_variant = ALC269_TYPE_ALC256; 5670 + spec->gen.mixer_nid = 0; /* ALC256 does not have any loopback mixer path */ 5671 + alc_update_coef_idx(codec, 0x36, 1 << 13, 1 << 5); /* Switch pcbeep path to Line in path*/ 5673 5672 break; 5674 5673 } 5675 5674 ··· 5685 5680 if (err < 0) 5686 5681 goto error; 5687 5682 5688 - if (!spec->gen.no_analog && spec->gen.beep_nid) 5689 - set_beep_amp(spec, 0x0b, 0x04, HDA_INPUT); 5683 + if (!spec->gen.no_analog && spec->gen.beep_nid && spec->gen.mixer_nid) 5684 + set_beep_amp(spec, spec->gen.mixer_nid, 0x04, HDA_INPUT); 5690 5685 5691 5686 codec->patch_ops = alc_patch_ops; 5692 5687 codec->patch_ops.stream_pm = snd_hda_gen_stream_pm;
+2 -2
sound/pci/intel8x0.c
··· 3101 3101 chip->bmaddr = pci_iomap(pci, 3, 0); 3102 3102 else 3103 3103 chip->bmaddr = pci_iomap(pci, 1, 0); 3104 + 3105 + port_inited: 3104 3106 if (!chip->bmaddr) { 3105 3107 dev_err(card->dev, "Controller space ioremap problem\n"); 3106 3108 snd_intel8x0_free(chip); 3107 3109 return -EIO; 3108 3110 } 3109 - 3110 - port_inited: 3111 3111 chip->bdbars_count = bdbars[device_type]; 3112 3112 3113 3113 /* initialize offsets */
+4 -1
sound/usb/format.c
··· 79 79 format = 1 << UAC_FORMAT_TYPE_I_PCM; 80 80 } 81 81 if (format & (1 << UAC_FORMAT_TYPE_I_PCM)) { 82 - if (chip->usb_id == USB_ID(0x0582, 0x0016) /* Edirol SD-90 */ && 82 + if (((chip->usb_id == USB_ID(0x0582, 0x0016)) || 83 + /* Edirol SD-90 */ 84 + (chip->usb_id == USB_ID(0x0582, 0x000c))) && 85 + /* Roland SC-D70 */ 83 86 sample_width == 24 && sample_bytes == 2) 84 87 sample_bytes = 3; 85 88 else if (sample_width > sample_bytes * 8) {
+2 -28
sound/usb/quirks-table.h
··· 816 816 .data = (const struct snd_usb_audio_quirk[]) { 817 817 { 818 818 .ifnum = 0, 819 - .type = QUIRK_AUDIO_FIXED_ENDPOINT, 820 - .data = & (const struct audioformat) { 821 - .formats = SNDRV_PCM_FMTBIT_S24_3LE, 822 - .channels = 2, 823 - .iface = 0, 824 - .altsetting = 1, 825 - .altset_idx = 1, 826 - .attributes = 0, 827 - .endpoint = 0x01, 828 - .ep_attr = 0x01, 829 - .rates = SNDRV_PCM_RATE_CONTINUOUS, 830 - .rate_min = 44100, 831 - .rate_max = 44100, 832 - } 819 + .type = QUIRK_AUDIO_STANDARD_INTERFACE 833 820 }, 834 821 { 835 822 .ifnum = 1, 836 - .type = QUIRK_AUDIO_FIXED_ENDPOINT, 837 - .data = & (const struct audioformat) { 838 - .formats = SNDRV_PCM_FMTBIT_S24_3LE, 839 - .channels = 2, 840 - .iface = 1, 841 - .altsetting = 1, 842 - .altset_idx = 1, 843 - .attributes = 0, 844 - .endpoint = 0x81, 845 - .ep_attr = 0x01, 846 - .rates = SNDRV_PCM_RATE_CONTINUOUS, 847 - .rate_min = 44100, 848 - .rate_max = 44100, 849 - } 823 + .type = QUIRK_AUDIO_STANDARD_INTERFACE 850 824 }, 851 825 { 852 826 .ifnum = 2,