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

Commit 2bff7e97 authored by Takashi Iwai's avatar Takashi Iwai
Browse files

Merge branch 'for-linus' into for-next



Back-merge for applying the more HD-audio quirks on top of the latest
code.

Signed-off-by: default avatarTakashi Iwai <tiwai@suse.de>
parents 157ab88e bde1a745
Loading
Loading
Loading
Loading
+1 −0
Original line number Diff line number Diff line
@@ -13931,6 +13931,7 @@ S: Supported
F:	Documentation/devicetree/bindings/sound/
F:	Documentation/sound/soc/
F:	sound/soc/
F:	include/dt-bindings/sound/
F:	include/sound/soc*

SOUNDWIRE SUBSYSTEM
+3 −1
Original line number Diff line number Diff line
@@ -254,11 +254,13 @@ static inline int snd_interval_empty(const struct snd_interval *i)
static inline int snd_interval_single(const struct snd_interval *i)
{
	return (i->min == i->max || 
		(i->min + 1 == i->max && i->openmax));
		(i->min + 1 == i->max && (i->openmin || i->openmax)));
}

static inline int snd_interval_value(const struct snd_interval *i)
{
	if (i->openmin && !i->openmax)
		return i->max;
	return i->min;
}

+1 −1
Original line number Diff line number Diff line
@@ -1192,7 +1192,7 @@ struct snd_soc_pcm_runtime {
	     ((i) < rtd->num_codecs) && ((dai) = rtd->codec_dais[i]); \
	     (i)++)
#define for_each_rtd_codec_dai_rollback(rtd, i, dai)		\
	for (; ((i--) >= 0) && ((dai) = rtd->codec_dais[i]);)
	for (; ((--i) >= 0) && ((dai) = rtd->codec_dais[i]);)


/* mixer control */
+8 −6
Original line number Diff line number Diff line
@@ -36,6 +36,7 @@
#include <sound/timer.h>
#include <sound/minors.h>
#include <linux/uio.h>
#include <linux/delay.h>

#include "pcm_local.h"

@@ -91,12 +92,12 @@ static DECLARE_RWSEM(snd_pcm_link_rwsem);
 * and this may lead to a deadlock when the code path takes read sem
 * twice (e.g. one in snd_pcm_action_nonatomic() and another in
 * snd_pcm_stream_lock()).  As a (suboptimal) workaround, let writer to
 * spin until it gets the lock.
 * sleep until all the readers are completed without blocking by writer.
 */
static inline void down_write_nonblock(struct rw_semaphore *lock)
static inline void down_write_nonfifo(struct rw_semaphore *lock)
{
	while (!down_write_trylock(lock))
		cond_resched();
		msleep(1);
}

#define PCM_LOCK_DEFAULT	0
@@ -1967,7 +1968,7 @@ static int snd_pcm_link(struct snd_pcm_substream *substream, int fd)
		res = -ENOMEM;
		goto _nolock;
	}
	down_write_nonblock(&snd_pcm_link_rwsem);
	down_write_nonfifo(&snd_pcm_link_rwsem);
	write_lock_irq(&snd_pcm_link_rwlock);
	if (substream->runtime->status->state == SNDRV_PCM_STATE_OPEN ||
	    substream->runtime->status->state != substream1->runtime->status->state ||
@@ -2014,7 +2015,7 @@ static int snd_pcm_unlink(struct snd_pcm_substream *substream)
	struct snd_pcm_substream *s;
	int res = 0;

	down_write_nonblock(&snd_pcm_link_rwsem);
	down_write_nonfifo(&snd_pcm_link_rwsem);
	write_lock_irq(&snd_pcm_link_rwlock);
	if (!snd_pcm_stream_linked(substream)) {
		res = -EALREADY;
@@ -2369,6 +2370,7 @@ int snd_pcm_hw_constraints_complete(struct snd_pcm_substream *substream)

static void pcm_release_private(struct snd_pcm_substream *substream)
{
	if (snd_pcm_stream_linked(substream))
		snd_pcm_unlink(substream);
}

+4 −0
Original line number Diff line number Diff line
@@ -2498,6 +2498,10 @@ static const struct pci_device_id azx_ids[] = {
	/* AMD Hudson */
	{ PCI_DEVICE(0x1022, 0x780d),
	  .driver_data = AZX_DRIVER_GENERIC | AZX_DCAPS_PRESET_ATI_SB },
	/* AMD Stoney */
	{ PCI_DEVICE(0x1022, 0x157a),
	  .driver_data = AZX_DRIVER_GENERIC | AZX_DCAPS_PRESET_ATI_SB |
			 AZX_DCAPS_PM_RUNTIME },
	/* AMD Raven */
	{ PCI_DEVICE(0x1022, 0x15e3),
	  .driver_data = AZX_DRIVER_GENERIC | AZX_DCAPS_PRESET_ATI_SB |
Loading