diff mbox series

[v1] ASoc: tas2781: Add name_prefix as the prefix name of DSP firmwares and calibrated data files

Message ID 20240629101112.628-1-shenghao-ding@ti.com (mailing list archive)
State New
Headers show
Series [v1] ASoc: tas2781: Add name_prefix as the prefix name of DSP firmwares and calibrated data files | expand

Commit Message

Shenghao Ding June 29, 2024, 10:11 a.m. UTC
Add name_prefix as the prefix name of DSP firmwares
and calibrated data files which stored speaker
calibrated impedance.

Signed-off-by: Shenghao Ding <shenghao-ding@ti.com>
---
 sound/soc/codecs/tas2781-i2c.c | 19 +++++++++++++++----
 1 file changed, 15 insertions(+), 4 deletions(-)

Comments

Mark Brown July 1, 2024, 12:23 p.m. UTC | #1
On Sat, Jun 29, 2024 at 06:11:10PM +0800, Shenghao Ding wrote:

>  	tas_priv->fw_state = TASDEVICE_RCA_FW_OK;
> -	scnprintf(tas_priv->coef_binaryname, 64, "%s_coef.bin",
> -		tas_priv->dev_name);
> +	if (tas_priv->name_prefix)
> +		scnprintf(tas_priv->rca_binaryname, 64, "%s-%s_coef.bin",
> +			tas_priv->name_prefix, tas_priv->dev_name);
> +	else
> +		scnprintf(tas_priv->coef_binaryname, 64, "%s_coef.bin",
> +			tas_priv->dev_name);

I'll apply this but I do wonder if it's worth falling back to trying to
load the unprefixed name if we fail to load the prefixed one.
diff mbox series

Patch

diff --git a/sound/soc/codecs/tas2781-i2c.c b/sound/soc/codecs/tas2781-i2c.c
index 4d1a0d836e77..cc765d45c6b5 100644
--- a/sound/soc/codecs/tas2781-i2c.c
+++ b/sound/soc/codecs/tas2781-i2c.c
@@ -394,8 +394,12 @@  static void tasdevice_fw_ready(const struct firmware *fmw,
 	 * failing to load DSP firmware is NOT an error.
 	 */
 	tas_priv->fw_state = TASDEVICE_RCA_FW_OK;
-	scnprintf(tas_priv->coef_binaryname, 64, "%s_coef.bin",
-		tas_priv->dev_name);
+	if (tas_priv->name_prefix)
+		scnprintf(tas_priv->rca_binaryname, 64, "%s-%s_coef.bin",
+			tas_priv->name_prefix, tas_priv->dev_name);
+	else
+		scnprintf(tas_priv->coef_binaryname, 64, "%s_coef.bin",
+			tas_priv->dev_name);
 	ret = tasdevice_dsp_parser(tas_priv);
 	if (ret) {
 		dev_err(tas_priv->dev, "dspfw load %s error\n",
@@ -418,8 +422,15 @@  static void tasdevice_fw_ready(const struct firmware *fmw,
 	 * calibrated data inside algo.
 	 */
 	for (i = 0; i < tas_priv->ndev; i++) {
-		scnprintf(tas_priv->cal_binaryname[i], 64, "%s_cal_0x%02x.bin",
-			tas_priv->dev_name, tas_priv->tasdevice[i].dev_addr);
+		if (tas_priv->name_prefix)
+			scnprintf(tas_priv->cal_binaryname[i], 64,
+				"%s-%s_cal_0x%02x.bin", tas_priv->name_prefix,
+				tas_priv->dev_name,
+				tas_priv->tasdevice[i].dev_addr);
+		else
+			scnprintf(tas_priv->cal_binaryname[i], 64,
+				"%s_cal_0x%02x.bin", tas_priv->dev_name,
+				tas_priv->tasdevice[i].dev_addr);
 		ret = tas2781_load_calibration(tas_priv,
 			tas_priv->cal_binaryname[i], i);
 		if (ret != 0)