* [PATCH v1] ALSA: hda/tas2781: Update tas2781 hda SPI driver
@ 2025-02-11 8:39 Baojun Xu
2025-02-11 13:36 ` Takashi Iwai
0 siblings, 1 reply; 2+ messages in thread
From: Baojun Xu @ 2025-02-11 8:39 UTC (permalink / raw)
To: tiwai
Cc: robh+dt, andriy.shevchenko, lgirdwood, perex, shenghao-ding,
navada, 13916275206, v-hampiholi, v-po, linux-sound, linux-kernel,
liam.r.girdwood, yung-chuan.liao, baojun.xu, broonie, antheas.dk,
stuart.a.hayhurst, dan.carpenter
Because firmware issue of platform, found spi device is not stable,
so add status check before firmware download, and remove some
operations which is not must in current stage.
Signed-off-by: Baojun Xu <baojun.xu@ti.com>
---
sound/pci/hda/tas2781_hda_spi.c | 27 ++++++++++++++-------------
1 file changed, 14 insertions(+), 13 deletions(-)
diff --git a/sound/pci/hda/tas2781_hda_spi.c b/sound/pci/hda/tas2781_hda_spi.c
index d91b19602485..00676cbb2c8e 100644
--- a/sound/pci/hda/tas2781_hda_spi.c
+++ b/sound/pci/hda/tas2781_hda_spi.c
@@ -909,7 +909,7 @@ static void tasdev_fw_ready(const struct firmware *fmw, void *context)
struct tasdevice_priv *tas_priv = context;
struct tas2781_hda *tas_hda = dev_get_drvdata(tas_priv->dev);
struct hda_codec *codec = tas_priv->codec;
- int i, j, ret;
+ int i, j, ret, val;
pm_runtime_get_sync(tas_priv->dev);
guard(mutex)(&tas_priv->codec_lock);
@@ -978,13 +978,16 @@ static void tasdev_fw_ready(const struct firmware *fmw, void *context)
/* Perform AMP reset before firmware download. */
tas_priv->rcabin.profile_cfg_id = TAS2781_PRE_POST_RESET_CFG;
- tasdevice_spi_tuning_switch(tas_priv, 0);
tas2781_spi_reset(tas_priv);
tas_priv->rcabin.profile_cfg_id = 0;
- tasdevice_spi_tuning_switch(tas_priv, 1);
tas_priv->fw_state = TASDEVICE_DSP_FW_ALL_OK;
- ret = tasdevice_spi_prmg_load(tas_priv, 0);
+ ret = tasdevice_spi_dev_read(tas_priv, TAS2781_REG_CLK_CONFIG, &val);
+ if (ret < 0)
+ goto out;
+
+ if (val == TAS2781_REG_CLK_CONFIG_RESET)
+ ret = tasdevice_spi_prmg_load(tas_priv, 0);
if (ret < 0) {
dev_err(tas_priv->dev, "FW download failed = %d\n", ret);
goto out;
@@ -998,7 +1001,6 @@ static void tasdev_fw_ready(const struct firmware *fmw, void *context)
* If calibrated data occurs error, dsp will still works with default
* calibrated data inside algo.
*/
- tas_priv->save_calibration(tas_priv);
out:
if (fmw)
@@ -1157,7 +1159,8 @@ static int tas2781_runtime_suspend(struct device *dev)
guard(mutex)(&tas_hda->priv->codec_lock);
- tasdevice_spi_tuning_switch(tas_hda->priv, 1);
+ if (tas_hda->priv->playback_started)
+ tasdevice_spi_tuning_switch(tas_hda->priv, 1);
tas_hda->priv->cur_book = -1;
tas_hda->priv->cur_conf = -1;
@@ -1171,7 +1174,8 @@ static int tas2781_runtime_resume(struct device *dev)
guard(mutex)(&tas_hda->priv->codec_lock);
- tasdevice_spi_tuning_switch(tas_hda->priv, 0);
+ if (tas_hda->priv->playback_started)
+ tasdevice_spi_tuning_switch(tas_hda->priv, 0);
return 0;
}
@@ -1186,12 +1190,9 @@ static int tas2781_system_suspend(struct device *dev)
return ret;
/* Shutdown chip before system suspend */
- tasdevice_spi_tuning_switch(tas_hda->priv, 1);
- tas2781_spi_reset(tas_hda->priv);
- /*
- * Reset GPIO may be shared, so cannot reset here.
- * However beyond this point, amps may be powered down.
- */
+ if (tas_hda->priv->playback_started)
+ tasdevice_spi_tuning_switch(tas_hda->priv, 1);
+
return 0;
}
--
2.34.1
^ permalink raw reply related [flat|nested] 2+ messages in thread* Re: [PATCH v1] ALSA: hda/tas2781: Update tas2781 hda SPI driver
2025-02-11 8:39 [PATCH v1] ALSA: hda/tas2781: Update tas2781 hda SPI driver Baojun Xu
@ 2025-02-11 13:36 ` Takashi Iwai
0 siblings, 0 replies; 2+ messages in thread
From: Takashi Iwai @ 2025-02-11 13:36 UTC (permalink / raw)
To: Baojun Xu
Cc: tiwai, robh+dt, andriy.shevchenko, lgirdwood, perex,
shenghao-ding, navada, 13916275206, v-hampiholi, v-po,
linux-sound, linux-kernel, liam.r.girdwood, yung-chuan.liao,
broonie, antheas.dk, stuart.a.hayhurst, dan.carpenter
On Tue, 11 Feb 2025 09:39:41 +0100,
Baojun Xu wrote:
>
> Because firmware issue of platform, found spi device is not stable,
> so add status check before firmware download, and remove some
> operations which is not must in current stage.
>
> Signed-off-by: Baojun Xu <baojun.xu@ti.com>
Applied now with Fixes tag.
Takashi
^ permalink raw reply [flat|nested] 2+ messages in thread
end of thread, other threads:[~2025-02-11 15:23 UTC | newest]
Thread overview: 2+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2025-02-11 8:39 [PATCH v1] ALSA: hda/tas2781: Update tas2781 hda SPI driver Baojun Xu
2025-02-11 13:36 ` Takashi Iwai
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox