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

Pull sound fixes from Takashi Iwai:
"Just a collection of small fixes around this time:

- One more try for fixing PCM OSS regression

- HD-audio: a new quirk for Lenovo, the improved driver blacklisting,
a lock fix in the minor error path, and a fix for the possible race
at monitor notifiaction

- USB-audio: a quirk ID fix, a fix for POD HD500 workaround"

* tag 'sound-5.7-rc4' of git://git.kernel.org/pub/scm/linux/kernel/git/tiwai/sound:
ALSA: usb-audio: Correct a typo of NuPrime DAC-10 USB ID
ALSA: opti9xx: shut up gcc-10 range warning
ALSA: hda/hdmi: fix without unlocked before return
ALSA: hda/hdmi: fix race in monitor detection during probe
ALSA: hda/realtek - Two front mics on a Lenovo ThinkCenter
ALSA: line6: Fix POD HD500 audio playback
ALSA: pcm: oss: Place the plugin buffer overflow checks correctly (for 5.7)
ALSA: pcm: oss: Place the plugin buffer overflow checks correctly
ALSA: hda: Match both PCI ID and SSID for driver blacklist

+35 -33
+6 -4
sound/core/oss/pcm_plugin.c
··· 205 205 plugin = snd_pcm_plug_first(plug); 206 206 while (plugin && frames > 0) { 207 207 plugin_next = plugin->next; 208 + if (check_size && plugin->buf_frames && 209 + frames > plugin->buf_frames) 210 + frames = plugin->buf_frames; 208 211 if (plugin->dst_frames) { 209 212 frames = plugin->dst_frames(plugin, frames); 210 213 if (frames < 0) 211 214 return frames; 212 215 } 213 - if (check_size && frames > plugin->buf_frames) 214 - frames = plugin->buf_frames; 215 216 plugin = plugin_next; 216 217 } 217 218 return frames; ··· 226 225 227 226 plugin = snd_pcm_plug_last(plug); 228 227 while (plugin && frames > 0) { 229 - if (check_size && frames > plugin->buf_frames) 230 - frames = plugin->buf_frames; 231 228 plugin_prev = plugin->prev; 232 229 if (plugin->src_frames) { 233 230 frames = plugin->src_frames(plugin, frames); 234 231 if (frames < 0) 235 232 return frames; 236 233 } 234 + if (check_size && plugin->buf_frames && 235 + frames > plugin->buf_frames) 236 + frames = plugin->buf_frames; 237 237 plugin = plugin_prev; 238 238 } 239 239 return frames;
+6 -3
sound/isa/opti9xx/miro.c
··· 867 867 spin_unlock_irqrestore(&chip->lock, flags); 868 868 } 869 869 870 + static inline void snd_miro_write_mask(struct snd_miro *chip, 871 + unsigned char reg, unsigned char value, unsigned char mask) 872 + { 873 + unsigned char oldval = snd_miro_read(chip, reg); 870 874 871 - #define snd_miro_write_mask(chip, reg, value, mask) \ 872 - snd_miro_write(chip, reg, \ 873 - (snd_miro_read(chip, reg) & ~(mask)) | ((value) & (mask))) 875 + snd_miro_write(chip, reg, (oldval & ~mask) | (value & mask)); 876 + } 874 877 875 878 /* 876 879 * Proc Interface
+6 -3
sound/isa/opti9xx/opti92x-ad1848.c
··· 317 317 } 318 318 319 319 320 - #define snd_opti9xx_write_mask(chip, reg, value, mask) \ 321 - snd_opti9xx_write(chip, reg, \ 322 - (snd_opti9xx_read(chip, reg) & ~(mask)) | ((value) & (mask))) 320 + static inline void snd_opti9xx_write_mask(struct snd_opti9xx *chip, 321 + unsigned char reg, unsigned char value, unsigned char mask) 322 + { 323 + unsigned char oldval = snd_opti9xx_read(chip, reg); 323 324 325 + snd_opti9xx_write(chip, reg, (oldval & ~mask) | (value & mask)); 326 + } 324 327 325 328 static int snd_opti9xx_configure(struct snd_opti9xx *chip, 326 329 long port,
+5 -4
sound/pci/hda/hda_intel.c
··· 2078 2078 * some HD-audio PCI entries are exposed without any codecs, and such devices 2079 2079 * should be ignored from the beginning. 2080 2080 */ 2081 - static const struct snd_pci_quirk driver_blacklist[] = { 2082 - SND_PCI_QUIRK(0x1462, 0xcb59, "MSI TRX40 Creator", 0), 2083 - SND_PCI_QUIRK(0x1462, 0xcb60, "MSI TRX40", 0), 2081 + static const struct pci_device_id driver_blacklist[] = { 2082 + { PCI_DEVICE_SUB(0x1022, 0x1487, 0x1043, 0x874f) }, /* ASUS ROG Zenith II / Strix */ 2083 + { PCI_DEVICE_SUB(0x1022, 0x1487, 0x1462, 0xcb59) }, /* MSI TRX40 Creator */ 2084 + { PCI_DEVICE_SUB(0x1022, 0x1487, 0x1462, 0xcb60) }, /* MSI TRX40 */ 2084 2085 {} 2085 2086 }; 2086 2087 ··· 2101 2100 bool schedule_probe; 2102 2101 int err; 2103 2102 2104 - if (snd_pci_quirk_lookup(pci, driver_blacklist)) { 2103 + if (pci_match_id(driver_blacklist, pci)) { 2105 2104 dev_info(&pci->dev, "Skipping the blacklisted device\n"); 2106 2105 return -ENODEV; 2107 2106 }
+5 -1
sound/pci/hda/patch_hdmi.c
··· 1848 1848 /* Add sanity check to pass klockwork check. 1849 1849 * This should never happen. 1850 1850 */ 1851 - if (WARN_ON(spdif == NULL)) 1851 + if (WARN_ON(spdif == NULL)) { 1852 + mutex_unlock(&codec->spdif_mutex); 1852 1853 return true; 1854 + } 1853 1855 non_pcm = !!(spdif->status & IEC958_AES0_NONAUDIO); 1854 1856 mutex_unlock(&codec->spdif_mutex); 1855 1857 return non_pcm; ··· 2200 2198 2201 2199 for (pin_idx = 0; pin_idx < spec->num_pins; pin_idx++) { 2202 2200 struct hdmi_spec_per_pin *per_pin = get_pin(spec, pin_idx); 2201 + struct hdmi_eld *pin_eld = &per_pin->sink_eld; 2203 2202 2203 + pin_eld->eld_valid = false; 2204 2204 hdmi_present_sense(per_pin, 0); 2205 2205 } 2206 2206
+1
sound/pci/hda/patch_realtek.c
··· 7420 7420 SND_PCI_QUIRK(0x1558, 0x8560, "System76 Gazelle (gaze14)", ALC269_FIXUP_HEADSET_MIC), 7421 7421 SND_PCI_QUIRK(0x1558, 0x8561, "System76 Gazelle (gaze14)", ALC269_FIXUP_HEADSET_MIC), 7422 7422 SND_PCI_QUIRK(0x17aa, 0x1036, "Lenovo P520", ALC233_FIXUP_LENOVO_MULTI_CODECS), 7423 + SND_PCI_QUIRK(0x17aa, 0x1048, "ThinkCentre Station", ALC283_FIXUP_HEADSET_MIC), 7423 7424 SND_PCI_QUIRK(0x17aa, 0x20f2, "Thinkpad SL410/510", ALC269_FIXUP_SKU_IGNORE), 7424 7425 SND_PCI_QUIRK(0x17aa, 0x215e, "Thinkpad L512", ALC269_FIXUP_SKU_IGNORE), 7425 7426 SND_PCI_QUIRK(0x17aa, 0x21b8, "Thinkpad Edge 14", ALC269_FIXUP_SKU_IGNORE),
+5 -17
sound/usb/line6/podhd.c
··· 21 21 enum { 22 22 LINE6_PODHD300, 23 23 LINE6_PODHD400, 24 - LINE6_PODHD500_0, 25 - LINE6_PODHD500_1, 24 + LINE6_PODHD500, 26 25 LINE6_PODX3, 27 26 LINE6_PODX3LIVE, 28 27 LINE6_PODHD500X, ··· 317 318 /* TODO: no need to alloc data interfaces when only audio is used */ 318 319 { LINE6_DEVICE(0x5057), .driver_info = LINE6_PODHD300 }, 319 320 { LINE6_DEVICE(0x5058), .driver_info = LINE6_PODHD400 }, 320 - { LINE6_IF_NUM(0x414D, 0), .driver_info = LINE6_PODHD500_0 }, 321 - { LINE6_IF_NUM(0x414D, 1), .driver_info = LINE6_PODHD500_1 }, 321 + { LINE6_IF_NUM(0x414D, 0), .driver_info = LINE6_PODHD500 }, 322 322 { LINE6_IF_NUM(0x414A, 0), .driver_info = LINE6_PODX3 }, 323 323 { LINE6_IF_NUM(0x414B, 0), .driver_info = LINE6_PODX3LIVE }, 324 324 { LINE6_IF_NUM(0x4159, 0), .driver_info = LINE6_PODHD500X }, ··· 350 352 .ep_audio_r = 0x82, 351 353 .ep_audio_w = 0x01, 352 354 }, 353 - [LINE6_PODHD500_0] = { 355 + [LINE6_PODHD500] = { 354 356 .id = "PODHD500", 355 357 .name = "POD HD500", 356 - .capabilities = LINE6_CAP_PCM 358 + .capabilities = LINE6_CAP_PCM | LINE6_CAP_CONTROL 357 359 | LINE6_CAP_HWMON, 358 360 .altsetting = 1, 359 - .ep_ctrl_r = 0x81, 360 - .ep_ctrl_w = 0x01, 361 - .ep_audio_r = 0x86, 362 - .ep_audio_w = 0x02, 363 - }, 364 - [LINE6_PODHD500_1] = { 365 - .id = "PODHD500", 366 - .name = "POD HD500", 367 - .capabilities = LINE6_CAP_PCM 368 - | LINE6_CAP_HWMON, 369 - .altsetting = 0, 361 + .ctrl_if = 1, 370 362 .ep_ctrl_r = 0x81, 371 363 .ep_ctrl_w = 0x01, 372 364 .ep_audio_r = 0x86,
+1 -1
sound/usb/quirks.c
··· 1687 1687 1688 1688 case USB_ID(0x0d8c, 0x0316): /* Hegel HD12 DSD */ 1689 1689 case USB_ID(0x10cb, 0x0103): /* The Bit Opus #3; with fp->dsd_raw */ 1690 - case USB_ID(0x16b0, 0x06b2): /* NuPrime DAC-10 */ 1690 + case USB_ID(0x16d0, 0x06b2): /* NuPrime DAC-10 */ 1691 1691 case USB_ID(0x16d0, 0x09dd): /* Encore mDSD */ 1692 1692 case USB_ID(0x16d0, 0x0733): /* Furutech ADL Stratos */ 1693 1693 case USB_ID(0x16d0, 0x09db): /* NuPrime Audio DAC-9 */