summaryrefslogtreecommitdiff
path: root/sound/soc/codecs
diff options
context:
space:
mode:
authorTakashi Iwai <tiwai@suse.de>2026-04-23 10:34:28 +0300
committerTakashi Iwai <tiwai@suse.de>2026-04-23 10:34:28 +0300
commit2699bc6d062735f9fc430fe6dcf05b82ae8b2ab9 (patch)
tree24c9dd31e86dc2ff46e4a5defe6fa3e740acd38f /sound/soc/codecs
parenta9224f26b754b5034719248891ff3c2ea0d11144 (diff)
parent24fcdc81dd7e1560e57eff75b618e5b00054b714 (diff)
downloadlinux-2699bc6d062735f9fc430fe6dcf05b82ae8b2ab9.tar.xz
Merge tag 'asoc-fix-v7.1-merge-window' of https://git.kernel.org/pub/scm/linux/kernel/git/broonie/sound into for-linus
ASoC: Fixes for v7.1 A fairly small collection of fixes, device IDs and quirks that came in during the merge window, the most remarkable of which is one for SDCA boolean firmware flags which is remarkable mainly because it is partially in regmap.
Diffstat (limited to 'sound/soc/codecs')
-rw-r--r--sound/soc/codecs/es8311.c22
-rw-r--r--sound/soc/codecs/rt1320-sdw.c1
-rw-r--r--sound/soc/codecs/tas2781-i2c.c15
3 files changed, 24 insertions, 14 deletions
diff --git a/sound/soc/codecs/es8311.c b/sound/soc/codecs/es8311.c
index 0b07a53cc792..564af5c04dbb 100644
--- a/sound/soc/codecs/es8311.c
+++ b/sound/soc/codecs/es8311.c
@@ -761,6 +761,7 @@ static int es8311_set_bias_level(struct snd_soc_component *component,
{
struct es8311_priv *es8311 = snd_soc_component_get_drvdata(component);
struct snd_soc_dapm_context *dapm = snd_soc_component_to_dapm(component);
+ int ret;
switch (level) {
case SND_SOC_BIAS_ON:
@@ -769,17 +770,21 @@ static int es8311_set_bias_level(struct snd_soc_component *component,
break;
case SND_SOC_BIAS_STANDBY:
if (snd_soc_dapm_get_bias_level(dapm) == SND_SOC_BIAS_OFF) {
- int ret = clk_prepare_enable(es8311->mclk);
+ ret = clk_prepare_enable(es8311->mclk);
if (ret) {
dev_err(component->dev,
"unable to prepare mclk\n");
return ret;
}
- snd_soc_component_update_bits(
- component, ES8311_SYS3,
- ES8311_SYS3_PDN_VMIDSEL_MASK,
- ES8311_SYS3_PDN_VMIDSEL_STARTUP_NORMAL_SPEED);
+ ret = snd_soc_component_update_bits(
+ component, ES8311_SYS3,
+ ES8311_SYS3_PDN_VMIDSEL_MASK,
+ ES8311_SYS3_PDN_VMIDSEL_STARTUP_NORMAL_SPEED);
+ if (ret < 0) {
+ clk_disable_unprepare(es8311->mclk);
+ return ret;
+ }
}
break;
@@ -862,13 +867,18 @@ static int es8311_suspend(struct snd_soc_component *component)
static int es8311_resume(struct snd_soc_component *component)
{
struct es8311_priv *es8311;
+ int ret;
es8311 = snd_soc_component_get_drvdata(component);
es8311_reset(component, false);
regcache_cache_only(es8311->regmap, false);
- regcache_sync(es8311->regmap);
+ ret = regcache_sync(es8311->regmap);
+ if (ret) {
+ dev_err(component->dev, "unable to sync regcache\n");
+ return ret;
+ }
return 0;
}
diff --git a/sound/soc/codecs/rt1320-sdw.c b/sound/soc/codecs/rt1320-sdw.c
index b0aeeab26bd9..192faa431b5e 100644
--- a/sound/soc/codecs/rt1320-sdw.c
+++ b/sound/soc/codecs/rt1320-sdw.c
@@ -1498,6 +1498,7 @@ static int rt1320_rae_load(struct rt1320_sdw_priv *rt1320)
}
if (!retry && !(value & 0x40)) {
dev_err(dev, "%s: RAE is not ready to load\n", __func__);
+ release_firmware(rae_fw);
return -ETIMEDOUT;
}
diff --git a/sound/soc/codecs/tas2781-i2c.c b/sound/soc/codecs/tas2781-i2c.c
index c593f9da0c5b..a78a8f9b9833 100644
--- a/sound/soc/codecs/tas2781-i2c.c
+++ b/sound/soc/codecs/tas2781-i2c.c
@@ -119,10 +119,10 @@ static const struct i2c_device_id tasdevice_id[] = {
{ "tas5827", TAS5827 },
{ "tas5828", TAS5828 },
{ "tas5830", TAS5830 },
+ { "tas5832", TAS5832 },
{}
};
-#ifdef CONFIG_OF
static const struct of_device_id tasdevice_of_match[] = {
{ .compatible = "ti,tas2020", .data = &tasdevice_id[TAS2020] },
{ .compatible = "ti,tas2118", .data = &tasdevice_id[TAS2118] },
@@ -143,10 +143,10 @@ static const struct of_device_id tasdevice_of_match[] = {
{ .compatible = "ti,tas5827", .data = &tasdevice_id[TAS5827] },
{ .compatible = "ti,tas5828", .data = &tasdevice_id[TAS5828] },
{ .compatible = "ti,tas5830", .data = &tasdevice_id[TAS5830] },
+ { .compatible = "ti,tas5832", .data = &tasdevice_id[TAS5832] },
{},
};
MODULE_DEVICE_TABLE(of, tasdevice_of_match);
-#endif
/**
* tas2781_digital_getvol - get the volum control
@@ -1746,6 +1746,7 @@ out:
case TAS5827:
case TAS5828:
case TAS5830:
+ case TAS5832:
/* If DSP FW fail, DSP kcontrol won't be created. */
tasdevice_dsp_remove(tas_priv);
}
@@ -1917,6 +1918,7 @@ static int tasdevice_codec_probe(struct snd_soc_component *codec)
case TAS5827:
case TAS5828:
case TAS5830:
+ case TAS5832:
p = (struct snd_kcontrol_new *)tas5825_snd_controls;
size = ARRAY_SIZE(tas5825_snd_controls);
break;
@@ -2083,7 +2085,6 @@ static void tasdevice_i2c_remove(struct i2c_client *client)
tasdevice_remove(tas_priv);
}
-#ifdef CONFIG_ACPI
static const struct acpi_device_id tasdevice_acpi_match[] = {
{ "TXNW2020", (kernel_ulong_t)&tasdevice_id[TAS2020] },
{ "TXNW2118", (kernel_ulong_t)&tasdevice_id[TAS2118] },
@@ -2104,19 +2105,17 @@ static const struct acpi_device_id tasdevice_acpi_match[] = {
{ "TXNW5827", (kernel_ulong_t)&tasdevice_id[TAS5827] },
{ "TXNW5828", (kernel_ulong_t)&tasdevice_id[TAS5828] },
{ "TXNW5830", (kernel_ulong_t)&tasdevice_id[TAS5830] },
+ { "TXNW5832", (kernel_ulong_t)&tasdevice_id[TAS5832] },
{},
};
MODULE_DEVICE_TABLE(acpi, tasdevice_acpi_match);
-#endif
static struct i2c_driver tasdevice_i2c_driver = {
.driver = {
.name = "tasdev-codec",
- .of_match_table = of_match_ptr(tasdevice_of_match),
-#ifdef CONFIG_ACPI
- .acpi_match_table = ACPI_PTR(tasdevice_acpi_match),
-#endif
+ .of_match_table = tasdevice_of_match,
+ .acpi_match_table = tasdevice_acpi_match,
},
.probe = tasdevice_i2c_probe,
.remove = tasdevice_i2c_remove,