From da66f4540fb4dee5a6fb1bd1926c6f7b7da2d235 Mon Sep 17 00:00:00 2001 From: Shazmaan Ali Date: Wed, 15 Dec 2021 18:18:57 -0800 Subject: [PATCH] asoc: codecs: Add WSA884X set config func Add set config function to validate and set battery stack mode, rload and system gain Change-Id: I075bf3cde6a9671a8d93f32aec43b941ea86f2ea Signed-off-by: Shazmaan Ali --- asoc/codecs/wsa884x/wsa884x.c | 26 +++++++++++++++++++++++++- asoc/codecs/wsa884x/wsa884x.h | 1 - 2 files changed, 25 insertions(+), 2 deletions(-) diff --git a/asoc/codecs/wsa884x/wsa884x.c b/asoc/codecs/wsa884x/wsa884x.c index 0947e623e4..846de6fdd1 100644 --- a/asoc/codecs/wsa884x/wsa884x.c +++ b/asoc/codecs/wsa884x/wsa884x.c @@ -1076,6 +1076,23 @@ static int wsa884x_get_compander(struct snd_kcontrol *kcontrol, return 0; } +/* + * wsa884x_validate_dt_configuration_params - returns 1 or 0 + * Return: 0 Valid configuration, 1 Invalid configuration + */ +static bool wsa884x_validate_dt_configuration_params(u8 irload, u8 ibat_cfg, + u8 isystem_gain) +{ + bool is_invalid_flag = true; + + if ((WSA_4_OHMS <= irload && irload < WSA_MAX_OHMS) && + (G_21_DB <= isystem_gain && isystem_gain < G_MAX_DB) && + (EXT_ABOVE_3S <= ibat_cfg && ibat_cfg < CONFIG_MAX)) + is_invalid_flag = false; + + return is_invalid_flag; +} + static int wsa884x_set_compander(struct snd_kcontrol *kcontrol, struct snd_ctl_elem_value *ucontrol) { @@ -2175,7 +2192,14 @@ static int wsa884x_swr_probe(struct swr_device *pdev) WSA884X_VPHX_SYS_EN_STATUS); dev_dbg(component->dev, "%s: Bat_cfg: 0x%x rload: 0x%x, sys_gain: 0x%x %x\n", __func__, - wsa884x->bat_cfg, wsa884x->rload, wsa884x->bat_cfg); + wsa884x->bat_cfg, wsa884x->rload, wsa884x->system_gain); + ret = wsa884x_validate_dt_configuration_params(wsa884x->rload, + wsa884x->bat_cfg, wsa884x->system_gain); + if (ret) { + dev_err(&pdev->dev, "%s: invalid dt parameter\n", __func__); + ret = -EINVAL; + goto err_mem; + } wsa884x_set_gain_parameters(component); wsa884x_set_pbr_parameters(component); /* Must write WO registers in a single write */ diff --git a/asoc/codecs/wsa884x/wsa884x.h b/asoc/codecs/wsa884x/wsa884x.h index 521008479f..1b094e3f9c 100644 --- a/asoc/codecs/wsa884x/wsa884x.h +++ b/asoc/codecs/wsa884x/wsa884x.h @@ -45,7 +45,6 @@ static int wsa884x_codec_get_dev_num(struct snd_soc_component *component) { return 0; } - #endif #endif /* _WSA884X_H */