Unverified Commit f557d39a authored by Mark Brown's avatar Mark Brown
Browse files

Merge tag 'asoc-fix-v5.0-rc2' into asoc-5.1

ASoC: Fixes for v5.0

Quite a big batch of fixes here.  There's a couple of things going on,
the main one is that we found some issues with not deferring probe when
we should, causing us to skip some driver initialization.  The fixes for
this then in turn exposed some issues with how we were searching for
components which had previously gone unnoticed due to the original
issue.

There's also been the normal driver specific stuff and there's been what
looks like several batches of automated scanning for issues which have
generated quite a large set of smaller fixes for potential crashes and
missed error handling.
parents e412fcb0 4cb79ef9
Loading
Loading
Loading
Loading
+6 −0
Original line number Diff line number Diff line
@@ -985,6 +985,12 @@ struct snd_soc_dai_link {
	/* Do not create a PCM for this DAI link (Backend link) */
	unsigned int ignore:1;

	/*
	 * This driver uses legacy platform naming. Set by the core, machine
	 * drivers should not modify this value.
	 */
	unsigned int legacy_platform:1;

	struct list_head list; /* DAI link list of the soc card */
	struct snd_soc_dobj dobj; /* For topology */
};
+4 −2
Original line number Diff line number Diff line
@@ -611,14 +611,16 @@ static int acp3x_audio_probe(struct platform_device *pdev)
	}
	irqflags = *((unsigned int *)(pdev->dev.platform_data));

	adata = devm_kzalloc(&pdev->dev, sizeof(struct i2s_dev_data),
			     GFP_KERNEL);
	res = platform_get_resource(pdev, IORESOURCE_MEM, 0);
	if (!res) {
		dev_err(&pdev->dev, "IORESOURCE_IRQ FAILED\n");
			return -ENODEV;
	}

	adata = devm_kzalloc(&pdev->dev, sizeof(*adata), GFP_KERNEL);
	if (!adata)
		return -ENOMEM;

	adata->acp3x_base = devm_ioremap(&pdev->dev, res->start,
					 resource_size(res));

+2 −0
Original line number Diff line number Diff line
@@ -280,6 +280,8 @@ static int rt5514_spi_pcm_probe(struct snd_soc_component *component)

	rt5514_dsp = devm_kzalloc(component->dev, sizeof(*rt5514_dsp),
			GFP_KERNEL);
	if (!rt5514_dsp)
		return -ENOMEM;

	rt5514_dsp->dev = &rt5514_spi->dev;
	mutex_init(&rt5514_dsp->dma_lock);
+12 −12
Original line number Diff line number Diff line
@@ -849,18 +849,18 @@
#define RT5682_SCLK_SRC_PLL2			(0x2 << 13)
#define RT5682_SCLK_SRC_SDW			(0x3 << 13)
#define RT5682_SCLK_SRC_RCCLK			(0x4 << 13)
#define RT5682_PLL1_SRC_MASK			(0x3 << 10)
#define RT5682_PLL1_SRC_SFT			10
#define RT5682_PLL1_SRC_MCLK			(0x0 << 10)
#define RT5682_PLL1_SRC_BCLK1			(0x1 << 10)
#define RT5682_PLL1_SRC_SDW			(0x2 << 10)
#define RT5682_PLL1_SRC_RC			(0x3 << 10)
#define RT5682_PLL2_SRC_MASK			(0x3 << 8)
#define RT5682_PLL2_SRC_SFT			8
#define RT5682_PLL2_SRC_MCLK			(0x0 << 8)
#define RT5682_PLL2_SRC_BCLK1			(0x1 << 8)
#define RT5682_PLL2_SRC_SDW			(0x2 << 8)
#define RT5682_PLL2_SRC_RC			(0x3 << 8)
#define RT5682_PLL2_SRC_MASK			(0x3 << 10)
#define RT5682_PLL2_SRC_SFT			10
#define RT5682_PLL2_SRC_MCLK			(0x0 << 10)
#define RT5682_PLL2_SRC_BCLK1			(0x1 << 10)
#define RT5682_PLL2_SRC_SDW			(0x2 << 10)
#define RT5682_PLL2_SRC_RC			(0x3 << 10)
#define RT5682_PLL1_SRC_MASK			(0x3 << 8)
#define RT5682_PLL1_SRC_SFT			8
#define RT5682_PLL1_SRC_MCLK			(0x0 << 8)
#define RT5682_PLL1_SRC_BCLK1			(0x1 << 8)
#define RT5682_PLL1_SRC_SDW			(0x2 << 8)
#define RT5682_PLL1_SRC_RC			(0x3 << 8)



+4 −0
Original line number Diff line number Diff line
@@ -850,6 +850,10 @@ static int aic32x4_set_bias_level(struct snd_soc_component *component,
	case SND_SOC_BIAS_PREPARE:
		break;
	case SND_SOC_BIAS_STANDBY:
		/* Initial cold start */
		if (snd_soc_component_get_bias_level(component) == SND_SOC_BIAS_OFF)
			break;

		/* Switch off BCLK_N Divider */
		snd_soc_component_update_bits(component, AIC32X4_BCLKN,
				    AIC32X4_BCLKEN, 0);
Loading