Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit b64f26c6 authored by Linus Torvalds's avatar Linus Torvalds
Browse files
Pull sound fixes from Takashi Iwai:
 "All commits found here are small fixes for regression or stable:

   - PCM timestamp behavior fix that could be seen as a regression

   - Remove spurious WARN_ON() from ALSA timer 32bit compat ioctl

   - HD-audio HDMI/DP channel mapping fix for 32bit archs

   - Fix the previous fix for HD-audio initialization code

   - More hardening USB-audio against malicious USB descriptors

   - HD-audio quirks/fixes (Realtek codec, AMD controller)

   - Missing help text for the recent Intel SST kconfig change"

* tag 'sound-fix-4.15-rc1' of git://git.kernel.org/pub/scm/linux/kernel/git/tiwai/sound:
  ALSA: hda: Add Raven PCI ID
  ALSA: hda/realtek - Fix ALC700 family no sound issue
  ALSA: hda - Fix yet remaining issue with vmaster 0dB initialization
  ALSA: usb-audio: Add sanity checks in v2 clock parsers
  ALSA: usb-audio: Fix potential zero-division at parsing FU
  ALSA: usb-audio: Fix potential out-of-bound access at parsing SU
  ALSA: usb-audio: Add sanity checks to FE parser
  ALSA: timer: Remove kernel warning at compat ioctl error paths
  ALSA: pcm: update tstamp only if audio_tstamp changed
  ALSA: hda/realtek: Add headset mic support for Intel NUC Skull Canyon
  ALSA: hda: Fix too short HDMI/DP chmap reporting
  ALSA: usb-audio: uac1: Invalidate ctl on interrupt
  ALSA: hda/realtek - Fix ALC275 no sound issue
  ASoC: Intel: Add help text for SND_SOC_INTEL_SST_TOPLEVEL
parents c353bfc6 9ceace3c
Loading
Loading
Loading
Loading
+3 −1
Original line number Diff line number Diff line
@@ -249,7 +249,9 @@ int snd_ctl_add_vmaster_hook(struct snd_kcontrol *kctl,
void snd_ctl_sync_vmaster(struct snd_kcontrol *kctl, bool hook_only);
#define snd_ctl_sync_vmaster_hook(kctl)	snd_ctl_sync_vmaster(kctl, true)
int snd_ctl_apply_vmaster_slaves(struct snd_kcontrol *kctl,
				 int (*func)(struct snd_kcontrol *, void *),
				 int (*func)(struct snd_kcontrol *vslave,
					     struct snd_kcontrol *slave,
					     void *arg),
				 void *arg);

/*
+4 −2
Original line number Diff line number Diff line
@@ -248,8 +248,10 @@ static void update_audio_tstamp(struct snd_pcm_substream *substream,
				runtime->rate);
		*audio_tstamp = ns_to_timespec(audio_nsecs);
	}
	if (!timespec_equal(&runtime->status->audio_tstamp, audio_tstamp)) {
		runtime->status->audio_tstamp = *audio_tstamp;
		runtime->status->tstamp = *curr_tstamp;
	}

	/*
	 * re-take a driver timestamp to let apps detect if the reference tstamp
+6 −6
Original line number Diff line number Diff line
@@ -66,11 +66,11 @@ static int snd_timer_user_info_compat(struct file *file,
	struct snd_timer *t;

	tu = file->private_data;
	if (snd_BUG_ON(!tu->timeri))
		return -ENXIO;
	if (!tu->timeri)
		return -EBADFD;
	t = tu->timeri->timer;
	if (snd_BUG_ON(!t))
		return -ENXIO;
	if (!t)
		return -EBADFD;
	memset(&info, 0, sizeof(info));
	info.card = t->card ? t->card->number : -1;
	if (t->hw.flags & SNDRV_TIMER_HW_SLAVE)
@@ -99,8 +99,8 @@ static int snd_timer_user_status_compat(struct file *file,
	struct snd_timer_status32 status;
	
	tu = file->private_data;
	if (snd_BUG_ON(!tu->timeri))
		return -ENXIO;
	if (!tu->timeri)
		return -EBADFD;
	memset(&status, 0, sizeof(status));
	status.tstamp.tv_sec = tu->tstamp.tv_sec;
	status.tstamp.tv_nsec = tu->tstamp.tv_nsec;
+4 −2
Original line number Diff line number Diff line
@@ -495,7 +495,9 @@ EXPORT_SYMBOL_GPL(snd_ctl_sync_vmaster);
 * Returns 0 if successful, or a negative error code.
 */
int snd_ctl_apply_vmaster_slaves(struct snd_kcontrol *kctl,
				 int (*func)(struct snd_kcontrol *, void *),
				 int (*func)(struct snd_kcontrol *vslave,
					     struct snd_kcontrol *slave,
					     void *arg),
				 void *arg)
{
	struct link_master *master;
@@ -507,7 +509,7 @@ int snd_ctl_apply_vmaster_slaves(struct snd_kcontrol *kctl,
	if (err < 0)
		return err;
	list_for_each_entry(slave, &master->slaves, list) {
		err = func(&slave->slave, arg);
		err = func(slave->kctl, &slave->slave, arg);
		if (err < 0)
			return err;
	}
+1 −1
Original line number Diff line number Diff line
@@ -746,7 +746,7 @@ static int hdmi_chmap_ctl_get(struct snd_kcontrol *kcontrol,
	memset(pcm_chmap, 0, sizeof(pcm_chmap));
	chmap->ops.get_chmap(chmap->hdac, pcm_idx, pcm_chmap);

	for (i = 0; i < sizeof(chmap); i++)
	for (i = 0; i < ARRAY_SIZE(pcm_chmap); i++)
		ucontrol->value.integer.value[i] = pcm_chmap[i];

	return 0;
Loading