Commit 19cbc75c authored by Linus Torvalds's avatar Linus Torvalds
Browse files
Pull sound fixes from Takashi Iwai:
 "Again a collection of small fixes, mostly for device-specific ones.

  The only big LOC is about the removal of pretty old dead code in
  ab8500 codec driver, while the rest all nice small changes.

  Core / API:
   - Fix race in deferred fasync state checks
   - Fix UMP group filtering in sequencer

  ASoC:
   - cs35l56: fixes for driver cleanup and error paths
   - tas2764/2770: workaround for bogus temperature readings
   - wm_adsp: fixes for firmware unit tests
   - amd-yc: more DMI quirks for laptops
   - Minor fixes for fsl_xcvr and spacemit

  HD-Audio:
   - Mute LED and speaker quirks for HP, Lenovo, and Xiaomi laptops

  USB-audio:
   - New device-specific quirks (Motu, JBL, AlphaTheta, Razer)
   - Fix of MIDI2 playback on resume

  Others:
   - Firewire-tascam control event fix
   - Minor cleanups and fixes for sparc/dbri and pcmtest"

* tag 'sound-7.1-rc3' of git://git.kernel.org/pub/scm/linux/kernel/git/tiwai/sound: (28 commits)
  ASoC: cs35l56: Destroy workqueue in probe error path
  ASoC: cs35l56: Don't use devres to unregister component
  ALSA: sparc/dbri: add missing fallthrough
  ALSA: core: Serialize deferred fasync state checks
  ALSA: hda/realtek: Add mute LED fixup for HP Pavilion 15-cs1xxx
  ALSA: seq: Fix UMP group 16 filtering
  ASoC: wm_adsp_fw_find_test: Clear searched_fw_files in find-by-index test
  ASoC: wm_adsp_fw_find_test: Redirect wm_adsp_release_firmware_files()
  ASoC: tas2770: Deal with bogus initial temperature value
  ASoC: tas2764: Deal with bogus initial temperature register value
  ALSA: usb-audio: add clock quirk for Motu 1248
  ALSA: usb-audio: midi2: Restart output URBs on resume
  ALSA: hda/realtek: Fix mute and mic-mute LEDs for HP Envy X360 15-fh0xxx
  ALSA: usb-audio: Add quirk flags for JBL Pebbles
  ALSA: firewire-tascam: Do not drop unread control events
  ALSA: usb-audio: Add quirk flags for AlphaTheta EUPHONIA
  ASoC: fsl_xcvr: Fix event generation for cached controls
  ASoC: sdw_utils: avoid the SDCA companion function not supported failure
  ASoC: amd: yc: Add HP OMEN Gaming Laptop 16-ap0xxx product line in quirk table
  ASoC: cs35l56: Fix out-of-bounds in dev_err() in cs35l56_read_onchip_spkid()
  ...
parents 1e38f888 06bc7ff0
Loading
Loading
Loading
Loading
+6 −2
Original line number Diff line number Diff line
@@ -148,9 +148,11 @@ EXPORT_SYMBOL_GPL(snd_fasync_helper);

void snd_kill_fasync(struct snd_fasync *fasync, int signal, int poll)
{
	if (!fasync || !fasync->on)
	if (!fasync)
		return;
	guard(spinlock_irqsave)(&snd_fasync_lock);
	if (!fasync->on)
		return;
	fasync->signal = signal;
	fasync->poll = poll;
	list_move(&fasync->list, &snd_fasync_list);
@@ -163,8 +165,10 @@ void snd_fasync_free(struct snd_fasync *fasync)
	if (!fasync)
		return;

	scoped_guard(spinlock_irq, &snd_fasync_lock)
	scoped_guard(spinlock_irq, &snd_fasync_lock) {
		fasync->on = 0;
		list_del_init(&fasync->list);
	}

	flush_work(&snd_fasync_work);
	kfree(fasync);
+1 −1
Original line number Diff line number Diff line
@@ -1253,7 +1253,7 @@ static int snd_seq_ioctl_set_client_info(struct snd_seq_client *client,
	if (client->user_pversion >= SNDRV_PROTOCOL_VERSION(1, 0, 3))
		client->midi_version = client_info->midi_version;
	memcpy(client->event_filter, client_info->event_filter, 32);
	client->group_filter = client_info->group_filter;
	client->group_filter = client_info->group_filter & SND_SEQ_GROUP_FILTER_MASK;

	/* notify the change */
	snd_seq_system_client_ev_client_change(client->number);
+4 −1
Original line number Diff line number Diff line
@@ -14,6 +14,9 @@

/* client manager */

#define SND_SEQ_GROUP_FILTER_MASK	GENMASK(SNDRV_UMP_MAX_GROUPS, 0)
#define SND_SEQ_GROUP_FILTER_GROUPS	GENMASK(SNDRV_UMP_MAX_GROUPS, 1)

struct snd_seq_user_client {
	struct file *file;	/* file struct of client */
	/* ... */
@@ -40,7 +43,7 @@ struct snd_seq_client {
	int number;		/* client number */
	unsigned int filter;	/* filter flags */
	DECLARE_BITMAP(event_filter, 256);
	unsigned short group_filter;
	unsigned int group_filter;
	snd_use_lock_t use_lock;
	int event_lost;
	/* ports */
+1 −1
Original line number Diff line number Diff line
@@ -369,7 +369,7 @@ static void setup_client_group_filter(struct seq_ump_client *client)
	cptr = snd_seq_kernel_client_get(client->seq_client);
	if (!cptr)
		return;
	filter = ~(1U << 0); /* always allow groupless messages */
	filter = SND_SEQ_GROUP_FILTER_GROUPS; /* always allow groupless messages */
	for (p = 0; p < SNDRV_UMP_MAX_GROUPS; p++) {
		if (client->ump->groups[p].active)
			filter &= ~(1U << (p + 1));
+3 −3
Original line number Diff line number Diff line
@@ -679,8 +679,8 @@ static ssize_t pattern_read(struct file *file, char __user *u_buff, size_t len,
		return 0;

	if (copy_to_user(u_buff, patt_buf->buf + *off, to_read))
		to_read = 0;
	else
		return -EFAULT;

	*off += to_read;

	return to_read;
Loading