Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit bb13f0e0 authored by Fang, Yang A's avatar Fang, Yang A Committed by Mark Brown
Browse files

ASoC: max98090: read micbias from device property



This patch reads max98090 micbias from acpi or dt

Signed-off-by: default avatarFang, Yang A <yang.a.fang@intel.com>
Signed-off-by: default avatarMark Brown <broonie@kernel.org>
parent b787f68c
Loading
Loading
Loading
Loading
+6 −0
Original line number Diff line number Diff line
@@ -18,6 +18,12 @@ Optional properties:

- maxim,dmic-freq: Frequency at which to clock DMIC

- maxim,micbias: Micbias voltage applies to the analog mic, valid voltages value are:
	0 - 2.2v
	1 - 2.55v
	2 - 2.4v
	3 - 2.8v

Pins on the device (for linking into audio routes):

  * MIC1
+12 −1
Original line number Diff line number Diff line
@@ -2422,6 +2422,8 @@ static int max98090_probe(struct snd_soc_codec *codec)
	struct max98090_cdata *cdata;
	enum max98090_type devtype;
	int ret = 0;
	int err;
	unsigned int micbias;

	dev_dbg(codec->dev, "max98090_probe\n");

@@ -2506,8 +2508,17 @@ static int max98090_probe(struct snd_soc_codec *codec)
	snd_soc_write(codec, M98090_REG_BIAS_CONTROL,
		M98090_VCM_MODE_MASK);

	err = device_property_read_u32(codec->dev, "maxim,micbias", &micbias);
	if (err) {
		micbias = M98090_MBVSEL_2V8;
		dev_info(codec->dev, "use default 2.8v micbias\n");
	} else if (micbias < M98090_MBVSEL_2V2 || micbias > M98090_MBVSEL_2V8) {
		dev_err(codec->dev, "micbias out of range 0x%x\n", micbias);
		micbias = M98090_MBVSEL_2V8;
	}

	snd_soc_update_bits(codec, M98090_REG_MIC_BIAS_VOLTAGE,
		M98090_MBVSEL_MASK, M98090_MBVSEL_2V8);
		M98090_MBVSEL_MASK, micbias);

	max98090_add_widgets(codec);