Commit b7359362 authored by Linus Torvalds's avatar Linus Torvalds
Browse files
Pull sound fixes from Takashi Iwai:
 "A lot of small changes at this time.

  There are many ASoC fixes, and the majority of them are new machine
  quirks for Intel platforms, as well as the device-specific fixes for
  Mediatek and Qualcomm.

  In addition, a regression fix for USB-audio and a few more HD- and
  USB-audio quirks are found here"

* tag 'sound-5.16-rc3' of git://git.kernel.org/pub/scm/linux/kernel/git/tiwai/sound: (41 commits)
  ALSA: intel-dsp-config: add quirk for JSL devices based on ES8336 codec
  ALSA: usb-audio: Don't start stream for capture at prepare
  ALSA: usb-audio: Switch back to non-latency mode at a later point
  ALSA: ctxfi: Fix out-of-range access
  ALSA: hda/realtek: Fix LED on HP ProBook 435 G7
  ASoC: stm32: i2s: fix 32 bits channel length without mclk
  ASoC: codecs: lpass-rx-macro: fix HPHR setting CLSH mask
  ASoC: codecs: wcd934x: return error code correctly from hw_params
  ASoC: codecs: wcd938x: fix volatile register range
  ASoC: topology: Add missing rwsem around snd_ctl_remove() calls
  ASoC: qdsp6: q6routing: validate port id before setting up route
  ASoC: qdsp6: q6adm: improve error reporting
  ASoC: qdsp6: q6asm: fix q6asm_dai_prepare error handling
  ASoC: qdsp6: q6routing: Conditionally reset FrontEnd Mixer
  ASoC: qdsp6: qdsp6: q6prm: handle clk disable correctly
  ASoC: wm_adsp: wm_adsp_control_add() error: uninitialized symbol 'ret'
  ALSA: cmipci: Drop stale variable assignment
  ALSA: hda/realtek: Add quirk for ASRock NUC Box 1100
  ASoC: rsnd: fixup DMAEngine API
  ASoC: SOF: build compression interface into snd_sof.ko
  ...
parents c7756f3a fa9730b4
Loading
Loading
Loading
Loading
+9 −0
Original line number Diff line number Diff line
@@ -299,6 +299,15 @@ static const struct config_entry config_table[] = {
	},
#endif

/* JasperLake */
#if IS_ENABLED(CONFIG_SND_SOC_SOF_JASPERLAKE)
	{
		.flags = FLAG_SOF,
		.device = 0x4dc8,
		.codec_hid = "ESSX8336",
	},
#endif

/* Tigerlake */
#if IS_ENABLED(CONFIG_SND_SOC_SOF_TIGERLAKE)
	{
+1 −3
Original line number Diff line number Diff line
@@ -3218,7 +3218,6 @@ static int snd_cmipci_probe(struct pci_dev *pci,
{
	static int dev;
	struct snd_card *card;
	struct cmipci *cm;
	int err;

	if (dev >= SNDRV_CARDS)
@@ -3229,10 +3228,9 @@ static int snd_cmipci_probe(struct pci_dev *pci,
	}

	err = snd_devm_card_new(&pci->dev, index[dev], id[dev], THIS_MODULE,
				sizeof(*cm), &card);
				sizeof(struct cmipci), &card);
	if (err < 0)
		return err;
	cm = card->private_data;
	
	switch (pci->device) {
	case PCI_DEVICE_ID_CMEDIA_CM8738:
+6 −8
Original line number Diff line number Diff line
@@ -23,16 +23,15 @@

#define BLANK_SLOT		4094

static int amixer_master(struct rsc *rsc)
static void amixer_master(struct rsc *rsc)
{
	rsc->conj = 0;
	return rsc->idx = container_of(rsc, struct amixer, rsc)->idx[0];
	rsc->idx = container_of(rsc, struct amixer, rsc)->idx[0];
}

static int amixer_next_conj(struct rsc *rsc)
static void amixer_next_conj(struct rsc *rsc)
{
	rsc->conj++;
	return container_of(rsc, struct amixer, rsc)->idx[rsc->conj];
}

static int amixer_index(const struct rsc *rsc)
@@ -331,16 +330,15 @@ int amixer_mgr_destroy(struct amixer_mgr *amixer_mgr)

/* SUM resource management */

static int sum_master(struct rsc *rsc)
static void sum_master(struct rsc *rsc)
{
	rsc->conj = 0;
	return rsc->idx = container_of(rsc, struct sum, rsc)->idx[0];
	rsc->idx = container_of(rsc, struct sum, rsc)->idx[0];
}

static int sum_next_conj(struct rsc *rsc)
static void sum_next_conj(struct rsc *rsc)
{
	rsc->conj++;
	return container_of(rsc, struct sum, rsc)->idx[rsc->conj];
}

static int sum_index(const struct rsc *rsc)
+8 −8
Original line number Diff line number Diff line
@@ -51,12 +51,12 @@ static const struct daio_rsc_idx idx_20k2[NUM_DAIOTYP] = {
	[SPDIFIO] = {.left = 0x05, .right = 0x85},
};

static int daio_master(struct rsc *rsc)
static void daio_master(struct rsc *rsc)
{
	/* Actually, this is not the resource index of DAIO.
	 * For DAO, it is the input mapper index. And, for DAI,
	 * it is the output time-slot index. */
	return rsc->conj = rsc->idx;
	rsc->conj = rsc->idx;
}

static int daio_index(const struct rsc *rsc)
@@ -64,19 +64,19 @@ static int daio_index(const struct rsc *rsc)
	return rsc->conj;
}

static int daio_out_next_conj(struct rsc *rsc)
static void daio_out_next_conj(struct rsc *rsc)
{
	return rsc->conj += 2;
	rsc->conj += 2;
}

static int daio_in_next_conj_20k1(struct rsc *rsc)
static void daio_in_next_conj_20k1(struct rsc *rsc)
{
	return rsc->conj += 0x200;
	rsc->conj += 0x200;
}

static int daio_in_next_conj_20k2(struct rsc *rsc)
static void daio_in_next_conj_20k2(struct rsc *rsc)
{
	return rsc->conj += 0x100;
	rsc->conj += 0x100;
}

static const struct rsc_ops daio_out_rsc_ops = {
+3 −4
Original line number Diff line number Diff line
@@ -109,18 +109,17 @@ static int audio_ring_slot(const struct rsc *rsc)
    return (rsc->conj << 4) + offset_in_audio_slot_block[rsc->type];
}

static int rsc_next_conj(struct rsc *rsc)
static void rsc_next_conj(struct rsc *rsc)
{
	unsigned int i;
	for (i = 0; (i < 8) && (!(rsc->msr & (0x1 << i))); )
		i++;
	rsc->conj += (AUDIO_SLOT_BLOCK_NUM >> i);
	return rsc->conj;
}

static int rsc_master(struct rsc *rsc)
static void rsc_master(struct rsc *rsc)
{
	return rsc->conj = rsc->idx;
	rsc->conj = rsc->idx;
}

static const struct rsc_ops rsc_generic_ops = {
Loading