[<prev] [next>] [thread-next>] [day] [month] [year] [list]
Message-Id: <20210806080834.16705-1-steves.lee@maximintegrated.com>
Date: Fri, 6 Aug 2021 17:08:34 +0900
From: Steve Lee <steves.lee@...imintegrated.com>
To: lgirdwood@...il.com, broonie@...nel.org, perex@...ex.cz,
tiwai@...e.com, ckeepax@...nsource.cirrus.com,
geert@...ux-m68k.org, rf@...nsource.wolfsonmicro.com,
shumingf@...ltek.com, srinivas.kandagatla@...aro.org,
krzk@...nel.org, dmurphy@...com, jack.yu@...ltek.com,
nuno.sa@...log.com, steves.lee@...imintegrated.com,
linux-kernel@...r.kernel.org, alsa-devel@...a-project.org
Cc: ryan.lee.maxim@...il.com, steves.lee.maxim@...il.com
Subject: [PATCH] ASoC: max98390: Add support change dsm param name
In case of using different type of speaker, support
using different dsm parameter bin file for each amp connected.
Signed-off-by: Steve Lee <steves.lee@...imintegrated.com>
---
sound/soc/codecs/max98390.c | 20 +++++++++++++++-----
sound/soc/codecs/max98390.h | 1 +
2 files changed, 16 insertions(+), 5 deletions(-)
diff --git a/sound/soc/codecs/max98390.c b/sound/soc/codecs/max98390.c
index 94773ccee9d5..82d2dd52c17d 100644
--- a/sound/soc/codecs/max98390.c
+++ b/sound/soc/codecs/max98390.c
@@ -765,15 +765,20 @@ static int max98390_dsm_init(struct snd_soc_component *component)
vendor = dmi_get_system_info(DMI_SYS_VENDOR);
product = dmi_get_system_info(DMI_PRODUCT_NAME);
- if (vendor && product) {
- snprintf(filename, sizeof(filename), "dsm_param_%s_%s.bin",
- vendor, product);
+ if (!strcmp(max98390->dsm_param_name, "default")) {
+ if (vendor && product) {
+ snprintf(filename, sizeof(filename),
+ "dsm_param_%s_%s.bin", vendor, product);
+ } else {
+ sprintf(filename, "dsmparam.bin");
+ }
} else {
- sprintf(filename, "dsm_param.bin");
+ snprintf(filename, sizeof(filename), "%s",
+ max98390->dsm_param_name);
}
ret = request_firmware(&fw, filename, component->dev);
if (ret) {
- ret = request_firmware(&fw, "dsm_param.bin", component->dev);
+ ret = request_firmware(&fw, "dsmparam.bin", component->dev);
if (ret)
goto err;
}
@@ -1047,6 +1052,11 @@ static int max98390_i2c_probe(struct i2c_client *i2c,
__func__, max98390->ref_rdc_value,
max98390->ambient_temp_value);
+ ret = device_property_read_string(&i2c->dev, "maxim,dsm_param_name",
+ &max98390->dsm_param_name);
+ if (ret)
+ max98390->dsm_param_name = "default";
+
/* voltage/current slot configuration */
max98390_slot_config(i2c, max98390);
diff --git a/sound/soc/codecs/max98390.h b/sound/soc/codecs/max98390.h
index e31516717d3b..c250740f73a2 100644
--- a/sound/soc/codecs/max98390.h
+++ b/sound/soc/codecs/max98390.h
@@ -662,5 +662,6 @@ struct max98390_priv {
unsigned int i_l_slot;
unsigned int ref_rdc_value;
unsigned int ambient_temp_value;
+ const char *dsm_param_name;
};
#endif
--
2.17.1
Powered by blists - more mailing lists