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

Commit d8ef140d authored by Adam Thomson's avatar Adam Thomson Committed by Mark Brown
Browse files

ASoC: da7219: Remove internal LDO features of codec



In AB silicon, the internal LDO is not supported so remove
DT and driver references to this (digital voltage direct from
'VDD' supply)

Signed-off-by: default avatarAdam Thomson <Adam.Thomson.Opensource@diasemi.com>
Acked-by: default avatarRob Herring <robh@kernel.org>
Signed-off-by: default avatarMark Brown <broonie@kernel.org>
parent 9ff09979
Loading
Loading
Loading
Loading
+4 −2
Original line number Diff line number Diff line
@@ -28,13 +28,15 @@ Optional properties:
- clocks : phandle and clock specifier for codec MCLK.
- clock-names : Clock name string for 'clocks' attribute, should be "mclk".

- dlg,ldo-lvl : Required internal LDO voltage (mV) level for digital engine
	[<1050>, <1100>, <1200>, <1400>]
- dlg,micbias-lvl : Voltage (mV) for Mic Bias
	[<1800>, <2000>, <2200>, <2400>, <2600>]
- dlg,mic-amp-in-sel : Mic input source type
	["diff", "se_p", "se_n"]

Deprecated properties:
- dlg,ldo-lvl : Required internal LDO voltage (mV) level for digital engine
  (LDO unavailable in production HW so property no longer required).

======

Child node - 'da7219_aad':
+0 −11
Original line number Diff line number Diff line
@@ -14,14 +14,6 @@
#ifndef __DA7219_PDATA_H
#define __DA7219_PDATA_H

/* LDO */
enum da7219_ldo_lvl_sel {
	DA7219_LDO_LVL_SEL_1_05V = 0,
	DA7219_LDO_LVL_SEL_1_10V,
	DA7219_LDO_LVL_SEL_1_20V,
	DA7219_LDO_LVL_SEL_1_40V,
};

/* Mic Bias */
enum da7219_micbias_voltage {
	DA7219_MICBIAS_1_8V = 1,
@@ -41,9 +33,6 @@ enum da7219_mic_amp_in_sel {
struct da7219_aad_pdata;

struct da7219_pdata {
	/* Internal LDO */
	enum da7219_ldo_lvl_sel ldo_lvl_sel;

	/* Mic */
	enum da7219_micbias_voltage micbias_lvl;
	enum da7219_mic_amp_in_sel mic_amp_in_sel;
+2 −48
Original line number Diff line number Diff line
@@ -1406,24 +1406,6 @@ static const struct of_device_id da7219_of_match[] = {
};
MODULE_DEVICE_TABLE(of, da7219_of_match);

static enum da7219_ldo_lvl_sel da7219_of_ldo_lvl(struct snd_soc_codec *codec,
						 u32 val)
{
	switch (val) {
	case 1050:
		return DA7219_LDO_LVL_SEL_1_05V;
	case 1100:
		return DA7219_LDO_LVL_SEL_1_10V;
	case 1200:
		return DA7219_LDO_LVL_SEL_1_20V;
	case 1400:
		return DA7219_LDO_LVL_SEL_1_40V;
	default:
		dev_warn(codec->dev, "Invalid LDO level");
		return DA7219_LDO_LVL_SEL_1_05V;
	}
}

static enum da7219_micbias_voltage
	da7219_of_micbias_lvl(struct snd_soc_codec *codec, u32 val)
{
@@ -1470,9 +1452,6 @@ static struct da7219_pdata *da7219_of_to_pdata(struct snd_soc_codec *codec)
	if (!pdata)
		return NULL;

	if (of_property_read_u32(np, "dlg,ldo-lvl", &of_val32) >= 0)
		pdata->ldo_lvl_sel = da7219_of_ldo_lvl(codec, of_val32);

	if (of_property_read_u32(np, "dlg,micbias-lvl", &of_val32) >= 0)
		pdata->micbias_lvl = da7219_of_micbias_lvl(codec, of_val32);
	else
@@ -1517,24 +1496,13 @@ static int da7219_set_bias_level(struct snd_soc_codec *codec,
			snd_soc_update_bits(codec, DA7219_REFERENCES,
					    DA7219_BIAS_EN_MASK,
					    DA7219_BIAS_EN_MASK);

			/* Enable Internal Digital LDO */
			snd_soc_update_bits(codec, DA7219_LDO_CTRL,
					    DA7219_LDO_EN_MASK,
					    DA7219_LDO_EN_MASK);
		}
		break;
	case SND_SOC_BIAS_OFF:
		/* Only disable if jack detection not active */
		if (!da7219->aad->jack) {
			/* Bypass Internal Digital LDO */
			snd_soc_update_bits(codec, DA7219_LDO_CTRL,
					    DA7219_LDO_EN_MASK, 0);

			/* Master bias */
		/* Only disable master bias if jack detection not active */
		if (!da7219->aad->jack)
			snd_soc_update_bits(codec, DA7219_REFERENCES,
					    DA7219_BIAS_EN_MASK, 0);
		}

		/* MCLK */
		if (da7219->mclk)
@@ -1601,19 +1569,6 @@ static void da7219_handle_pdata(struct snd_soc_codec *codec)
	if (pdata) {
		u8 micbias_lvl = 0;

		/* Internal LDO */
		switch (pdata->ldo_lvl_sel) {
		case DA7219_LDO_LVL_SEL_1_05V:
		case DA7219_LDO_LVL_SEL_1_10V:
		case DA7219_LDO_LVL_SEL_1_20V:
		case DA7219_LDO_LVL_SEL_1_40V:
			snd_soc_update_bits(codec, DA7219_LDO_CTRL,
					    DA7219_LDO_LEVEL_SELECT_MASK,
					    (pdata->ldo_lvl_sel <<
					     DA7219_LDO_LEVEL_SELECT_SHIFT));
			break;
		}

		/* Mic Bias voltages */
		switch (pdata->micbias_lvl) {
		case DA7219_MICBIAS_1_8V:
@@ -1823,7 +1778,6 @@ static struct reg_default da7219_reg_defaults[] = {
	{ DA7219_CHIP_ID1, 0x23 },
	{ DA7219_CHIP_ID2, 0x93 },
	{ DA7219_CHIP_REVISION, 0x00 },
	{ DA7219_LDO_CTRL, 0x00 },
	{ DA7219_IO_CTRL, 0x00 },
	{ DA7219_GAIN_RAMP_CTRL, 0x00 },
	{ DA7219_PC_COUNT, 0x02 },
+0 −7
Original line number Diff line number Diff line
@@ -85,7 +85,6 @@
#define DA7219_CHIP_ID1			0x81
#define DA7219_CHIP_ID2			0x82
#define DA7219_CHIP_REVISION		0x83
#define DA7219_LDO_CTRL			0x90
#define DA7219_IO_CTRL			0x91
#define DA7219_GAIN_RAMP_CTRL		0x92
#define DA7219_PC_COUNT			0x94
@@ -569,12 +568,6 @@
#define DA7219_CHIP_MAJOR_SHIFT	4
#define DA7219_CHIP_MAJOR_MASK	(0xF << 4)

/* DA7219_LDO_CTRL = 0x90 */
#define DA7219_LDO_LEVEL_SELECT_SHIFT	4
#define DA7219_LDO_LEVEL_SELECT_MASK	(0x3 << 4)
#define DA7219_LDO_EN_SHIFT		7
#define DA7219_LDO_EN_MASK		(0x1 << 7)

/* DA7219_IO_CTRL = 0x91 */
#define DA7219_IO_VOLTAGE_LEVEL_SHIFT		0
#define DA7219_IO_VOLTAGE_LEVEL_MASK		(0x1 << 0)