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

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

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

ASoC: Fixes for v5.16

There's a large but repetitive set of fixes here for issues with the
Tegra kcontrols not correctly reporting changes to userspace, a fix for
some issues with matching on older x86 platforms introduced during the
merge window together with a set of smaller fixes and one new system
quirk.
parents ae26c08e 86f74ba3
Loading
Loading
Loading
Loading
+1 −1
Original line number Diff line number Diff line
@@ -147,7 +147,7 @@ struct snd_soc_acpi_link_adr {
 */
/* Descriptor for SST ASoC machine driver */
struct snd_soc_acpi_mach {
	const u8 id[ACPI_ID_LEN];
	u8 id[ACPI_ID_LEN];
	const struct snd_soc_acpi_codecs *comp_ids;
	const u32 link_mask;
	const struct snd_soc_acpi_link_adr *links;
+3 −29
Original line number Diff line number Diff line
@@ -42,34 +42,6 @@ static const struct spi_device_id cs35l41_id_spi[] = {

MODULE_DEVICE_TABLE(spi, cs35l41_id_spi);

static void cs35l41_spi_otp_setup(struct cs35l41_private *cs35l41,
				  bool is_pre_setup, unsigned int *freq)
{
	struct spi_device *spi;
	u32 orig_spi_freq;

	spi = to_spi_device(cs35l41->dev);

	if (!spi) {
		dev_err(cs35l41->dev, "%s: No SPI device\n", __func__);
		return;
	}

	if (is_pre_setup) {
		orig_spi_freq = spi->max_speed_hz;
		if (orig_spi_freq > CS35L41_SPI_MAX_FREQ_OTP) {
			spi->max_speed_hz = CS35L41_SPI_MAX_FREQ_OTP;
			spi_setup(spi);
		}
		*freq = orig_spi_freq;
	} else {
		if (spi->max_speed_hz != *freq) {
			spi->max_speed_hz = *freq;
			spi_setup(spi);
		}
	}
}

static int cs35l41_spi_probe(struct spi_device *spi)
{
	const struct regmap_config *regmap_config = &cs35l41_regmap_spi;
@@ -81,6 +53,9 @@ static int cs35l41_spi_probe(struct spi_device *spi)
	if (!cs35l41)
		return -ENOMEM;

	spi->max_speed_hz = CS35L41_SPI_MAX_FREQ;
	spi_setup(spi);

	spi_set_drvdata(spi, cs35l41);
	cs35l41->regmap = devm_regmap_init_spi(spi, regmap_config);
	if (IS_ERR(cs35l41->regmap)) {
@@ -91,7 +66,6 @@ static int cs35l41_spi_probe(struct spi_device *spi)

	cs35l41->dev = &spi->dev;
	cs35l41->irq = spi->irq;
	cs35l41->otp_setup = cs35l41_spi_otp_setup;

	return cs35l41_probe(cs35l41, pdata);
}
+0 −7
Original line number Diff line number Diff line
@@ -302,7 +302,6 @@ static int cs35l41_otp_unpack(void *data)
	const struct cs35l41_otp_packed_element_t *otp_map;
	struct cs35l41_private *cs35l41 = data;
	int bit_offset, word_offset, ret, i;
	unsigned int orig_spi_freq;
	unsigned int bit_sum = 8;
	u32 otp_val, otp_id_reg;
	u32 *otp_mem;
@@ -326,9 +325,6 @@ static int cs35l41_otp_unpack(void *data)
		goto err_otp_unpack;
	}

	if (cs35l41->otp_setup)
		cs35l41->otp_setup(cs35l41, true, &orig_spi_freq);

	ret = regmap_bulk_read(cs35l41->regmap, CS35L41_OTP_MEM0, otp_mem,
			       CS35L41_OTP_SIZE_WORDS);
	if (ret < 0) {
@@ -336,9 +332,6 @@ static int cs35l41_otp_unpack(void *data)
		goto err_otp_unpack;
	}

	if (cs35l41->otp_setup)
		cs35l41->otp_setup(cs35l41, false, &orig_spi_freq);

	otp_map = otp_map_match->map;

	bit_offset = otp_map_match->bit_offset;
+1 −3
Original line number Diff line number Diff line
@@ -726,7 +726,7 @@
#define CS35L41_FS2_WINDOW_MASK		0x00FFF800
#define CS35L41_FS2_WINDOW_SHIFT	12

#define CS35L41_SPI_MAX_FREQ_OTP	4000000
#define CS35L41_SPI_MAX_FREQ		4000000

#define CS35L41_RX_FORMATS (SNDRV_PCM_FMTBIT_S16_LE | SNDRV_PCM_FMTBIT_S24_LE)
#define CS35L41_TX_FORMATS (SNDRV_PCM_FMTBIT_S16_LE | SNDRV_PCM_FMTBIT_S24_LE)
@@ -764,8 +764,6 @@ struct cs35l41_private {
	int irq;
	/* GPIO for /RST */
	struct gpio_desc *reset_gpio;
	void (*otp_setup)(struct cs35l41_private *cs35l41, bool is_pre_setup,
			  unsigned int *freq);
};

int cs35l41_probe(struct cs35l41_private *cs35l41,
+1 −0
Original line number Diff line number Diff line
@@ -539,3 +539,4 @@ module_platform_driver(rk817_codec_driver);
MODULE_DESCRIPTION("ASoC RK817 codec driver");
MODULE_AUTHOR("binyuan <kevan.lan@rock-chips.com>");
MODULE_LICENSE("GPL v2");
MODULE_ALIAS("platform:rk817-codec");
Loading