Prechádzať zdrojové kódy

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 <[email protected]>
Shazmaan Ali 3 rokov pred
rodič
commit
da66f4540f

+ 25 - 1
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 */

+ 0 - 1
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 */