Commit dad19afc authored by Takashi Iwai's avatar Takashi Iwai
Browse files

Merge tag 'asoc-fix-v5.13-rc3' of...

Merge tag 'asoc-fix-v5.13-rc3' of https://git.kernel.org/pub/scm/linux/kernel/git/broonie/sound into for-linus

ASoC: Fixes for v5.13

A collection of fixes that have come in since the merge window, mainly
device specific things.  The fixes to the generic cards from
Morimoto-san are handling regressions that were introduced in the merge
window on at least the Kontron sl28-var3-ads2.
parents 2b899f31 af270254
Loading
Loading
Loading
Loading
+1 −1
Original line number Diff line number Diff line
@@ -81,7 +81,7 @@ struct snd_compr_stream;
#define SND_SOC_DAIFMT_CBP_CFP		(1 << 12) /* codec clk provider & frame provider */
#define SND_SOC_DAIFMT_CBC_CFP		(2 << 12) /* codec clk consumer & frame provider */
#define SND_SOC_DAIFMT_CBP_CFC		(3 << 12) /* codec clk provider & frame consumer */
#define SND_SOC_DAIFMT_CBC_CFC		(4 << 12) /* codec clk consumer & frame follower */
#define SND_SOC_DAIFMT_CBC_CFC		(4 << 12) /* codec clk consumer & frame consumer */

/* previous definitions kept for backwards-compatibility, do not use in new contributions */
#define SND_SOC_DAIFMT_CBM_CFM		SND_SOC_DAIFMT_CBP_CFP
+0 −10
Original line number Diff line number Diff line
@@ -235,10 +235,6 @@ static int acp3x_dma_open(struct snd_soc_component *component,
		return ret;
	}

	if (!adata->play_stream && !adata->capture_stream &&
	    !adata->i2ssp_play_stream && !adata->i2ssp_capture_stream)
		rv_writel(1, adata->acp3x_base + mmACP_EXTERNAL_INTR_ENB);

	i2s_data->acp3x_base = adata->acp3x_base;
	runtime->private_data = i2s_data;
	return ret;
@@ -365,12 +361,6 @@ static int acp3x_dma_close(struct snd_soc_component *component,
		}
	}

	/* Disable ACP irq, when the current stream is being closed and
	 * another stream is also not active.
	 */
	if (!adata->play_stream && !adata->capture_stream &&
		!adata->i2ssp_play_stream && !adata->i2ssp_capture_stream)
		rv_writel(0, adata->acp3x_base + mmACP_EXTERNAL_INTR_ENB);
	return 0;
}

+1 −0
Original line number Diff line number Diff line
@@ -77,6 +77,7 @@
#define ACP_POWER_OFF_IN_PROGRESS	0x03

#define ACP3x_ITER_IRER_SAMP_LEN_MASK	0x38
#define ACP_EXT_INTR_STAT_CLEAR_MASK 0xFFFFFFFF

struct acp3x_platform_info {
	u16 play_i2s_instance;
+15 −0
Original line number Diff line number Diff line
@@ -76,6 +76,19 @@ static int acp3x_reset(void __iomem *acp3x_base)
	return -ETIMEDOUT;
}

static void acp3x_enable_interrupts(void __iomem *acp_base)
{
	rv_writel(0x01, acp_base + mmACP_EXTERNAL_INTR_ENB);
}

static void acp3x_disable_interrupts(void __iomem *acp_base)
{
	rv_writel(ACP_EXT_INTR_STAT_CLEAR_MASK, acp_base +
		  mmACP_EXTERNAL_INTR_STAT);
	rv_writel(0x00, acp_base + mmACP_EXTERNAL_INTR_CNTL);
	rv_writel(0x00, acp_base + mmACP_EXTERNAL_INTR_ENB);
}

static int acp3x_init(struct acp3x_dev_data *adata)
{
	void __iomem *acp3x_base = adata->acp3x_base;
@@ -93,6 +106,7 @@ static int acp3x_init(struct acp3x_dev_data *adata)
		pr_err("ACP3x reset failed\n");
		return ret;
	}
	acp3x_enable_interrupts(acp3x_base);
	return 0;
}

@@ -100,6 +114,7 @@ static int acp3x_deinit(void __iomem *acp3x_base)
{
	int ret;

	acp3x_disable_interrupts(acp3x_base);
	/* Reset */
	ret = acp3x_reset(acp3x_base);
	if (ret) {
+1 −1
Original line number Diff line number Diff line
@@ -307,7 +307,7 @@ static struct snd_soc_dai_driver ak5558_dai = {
};

static struct snd_soc_dai_driver ak5552_dai = {
	.name = "ak5558-aif",
	.name = "ak5552-aif",
	.capture = {
		.stream_name = "Capture",
		.channels_min = 1,
Loading