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

Pull sound fixes from Takashi Iwai:
"Just a few small fixes. The only change to the core code is for a
minor race in ALSA OSS sequencer, and the rest are all device-specific
fixes (regression fixes and a usual quirk)"

* tag 'sound-6.4-rc7' of git://git.kernel.org/pub/scm/linux/kernel/git/tiwai/sound:
ALSA: usb-audio: Add quirk flag for HEM devices to enable native DSD playback
ALSA: usb-audio: Fix broken resume due to UAC3 power state
ALSA: seq: oss: Fix racy open/close of MIDI devices
ASoC: tegra: Fix Master Volume Control
ALSA: hda/realtek: Add a quirk for Compaq N14JP6
firmware: cs_dsp: Log correct region name in bin error messages

+35 -15
+3 -2
drivers/firmware/cirrus/cs_dsp.c
··· 2124 2124 file, blocks, le32_to_cpu(blk->len), 2125 2125 type, le32_to_cpu(blk->id)); 2126 2126 2127 + region_name = cs_dsp_mem_region_name(type); 2127 2128 mem = cs_dsp_find_region(dsp, type); 2128 2129 if (!mem) { 2129 2130 cs_dsp_err(dsp, "No base for region %x\n", type); ··· 2148 2147 reg = dsp->ops->region_to_reg(mem, reg); 2149 2148 reg += offset; 2150 2149 } else { 2151 - cs_dsp_err(dsp, "No %x for algorithm %x\n", 2152 - type, le32_to_cpu(blk->id)); 2150 + cs_dsp_err(dsp, "No %s for algorithm %x\n", 2151 + region_name, le32_to_cpu(blk->id)); 2153 2152 } 2154 2153 break; 2155 2154
+22 -13
sound/core/seq/oss/seq_oss_midi.c
··· 37 37 struct snd_midi_event *coder; /* MIDI event coder */ 38 38 struct seq_oss_devinfo *devinfo; /* assigned OSSseq device */ 39 39 snd_use_lock_t use_lock; 40 + struct mutex open_mutex; 40 41 }; 41 42 42 43 ··· 173 172 mdev->flags = pinfo->capability; 174 173 mdev->opened = 0; 175 174 snd_use_lock_init(&mdev->use_lock); 175 + mutex_init(&mdev->open_mutex); 176 176 177 177 /* copy and truncate the name of synth device */ 178 178 strscpy(mdev->name, pinfo->name, sizeof(mdev->name)); ··· 324 322 int perm; 325 323 struct seq_oss_midi *mdev; 326 324 struct snd_seq_port_subscribe subs; 325 + int err; 327 326 328 327 mdev = get_mididev(dp, dev); 329 328 if (!mdev) 330 329 return -ENODEV; 331 330 331 + mutex_lock(&mdev->open_mutex); 332 332 /* already used? */ 333 333 if (mdev->opened && mdev->devinfo != dp) { 334 - snd_use_lock_free(&mdev->use_lock); 335 - return -EBUSY; 334 + err = -EBUSY; 335 + goto unlock; 336 336 } 337 337 338 338 perm = 0; ··· 344 340 perm |= PERM_READ; 345 341 perm &= mdev->flags; 346 342 if (perm == 0) { 347 - snd_use_lock_free(&mdev->use_lock); 348 - return -ENXIO; 343 + err = -ENXIO; 344 + goto unlock; 349 345 } 350 346 351 347 /* already opened? */ 352 348 if ((mdev->opened & perm) == perm) { 353 - snd_use_lock_free(&mdev->use_lock); 354 - return 0; 349 + err = 0; 350 + goto unlock; 355 351 } 356 352 357 353 perm &= ~mdev->opened; ··· 376 372 } 377 373 378 374 if (! mdev->opened) { 379 - snd_use_lock_free(&mdev->use_lock); 380 - return -ENXIO; 375 + err = -ENXIO; 376 + goto unlock; 381 377 } 382 378 383 379 mdev->devinfo = dp; 380 + err = 0; 381 + 382 + unlock: 383 + mutex_unlock(&mdev->open_mutex); 384 384 snd_use_lock_free(&mdev->use_lock); 385 - return 0; 385 + return err; 386 386 } 387 387 388 388 /* ··· 401 393 mdev = get_mididev(dp, dev); 402 394 if (!mdev) 403 395 return -ENODEV; 404 - if (! mdev->opened || mdev->devinfo != dp) { 405 - snd_use_lock_free(&mdev->use_lock); 406 - return 0; 407 - } 396 + mutex_lock(&mdev->open_mutex); 397 + if (!mdev->opened || mdev->devinfo != dp) 398 + goto unlock; 408 399 409 400 memset(&subs, 0, sizeof(subs)); 410 401 if (mdev->opened & PERM_WRITE) { ··· 422 415 mdev->opened = 0; 423 416 mdev->devinfo = NULL; 424 417 418 + unlock: 419 + mutex_unlock(&mdev->open_mutex); 425 420 snd_use_lock_free(&mdev->use_lock); 426 421 return 0; 427 422 }
+1
sound/pci/hda/patch_realtek.c
··· 11740 11740 SND_PCI_QUIRK(0x1b0a, 0x01b8, "ACER Veriton", ALC662_FIXUP_ACER_VERITON), 11741 11741 SND_PCI_QUIRK(0x1b35, 0x1234, "CZC ET26", ALC662_FIXUP_CZC_ET26), 11742 11742 SND_PCI_QUIRK(0x1b35, 0x2206, "CZC P10T", ALC662_FIXUP_CZC_P10T), 11743 + SND_PCI_QUIRK(0x1c6c, 0x1239, "Compaq N14JP6-V2", ALC897_FIXUP_HP_HSMIC_VERB), 11743 11744 11744 11745 #if 0 11745 11746 /* Below is a quirk table taken from the old code.
+3
sound/soc/tegra/tegra_pcm.c
··· 117 117 return ret; 118 118 } 119 119 120 + /* Set wait time to 500ms by default */ 121 + substream->wait_time = 500; 122 + 120 123 return 0; 121 124 } 122 125 EXPORT_SYMBOL_GPL(tegra_pcm_open);
+4
sound/usb/pcm.c
··· 650 650 goto unlock; 651 651 } 652 652 653 + ret = snd_usb_pcm_change_state(subs, UAC3_PD_STATE_D0); 654 + if (ret < 0) 655 + goto unlock; 656 + 653 657 again: 654 658 if (subs->sync_endpoint) { 655 659 ret = snd_usb_endpoint_prepare(chip, subs->sync_endpoint);
+2
sound/usb/quirks.c
··· 2191 2191 QUIRK_FLAG_DSD_RAW), 2192 2192 VENDOR_FLG(0x2ab6, /* T+A devices */ 2193 2193 QUIRK_FLAG_DSD_RAW), 2194 + VENDOR_FLG(0x3336, /* HEM devices */ 2195 + QUIRK_FLAG_DSD_RAW), 2194 2196 VENDOR_FLG(0x3353, /* Khadas devices */ 2195 2197 QUIRK_FLAG_DSD_RAW), 2196 2198 VENDOR_FLG(0x3842, /* EVGA */