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

Unverified Commit 583a9deb authored by Hans de Goede's avatar Hans de Goede Committed by Mark Brown
Browse files

ASoC: rt5651: Allow specifying over-current threshold through a device-property



OVer-Current-Detection (OVCD) for the micbias current is used to detect
if an inserted jack is a headset or headphones (mic shorted to ground).

Some boards may need different values for the OVCD current threshold
because of a resistor on the board in serial with or parallel to the
jack mic contact.

This commit adds support for configuring the OCVD current threshold
through the "realtek,over-current-threshold-microamp" device-property.

Note this commit changes the default value from 600uA to 2000uA,
because testing has shown 600uA to be a poor default.

Signed-off-by: default avatarHans de Goede <hdegoede@redhat.com>
Signed-off-by: default avatarMark Brown <broonie@kernel.org>
parent f0c2a330
Loading
Loading
Loading
Loading
+21 −1
Original line number Diff line number Diff line
@@ -1638,7 +1638,7 @@ static int rt5651_set_jack(struct snd_soc_component *component,
				      RT5651_PWR_CLK12M_MASK |
				      RT5651_PWR_MB_MASK,
				      RT5651_MIC1_OVCD_EN |
				      RT5651_MIC1_OVTH_600UA |
				      rt5651->ovcd_th |
				      RT5651_PWR_MB_PU |
				      RT5651_PWR_CLK12M_PU);

@@ -1684,6 +1684,26 @@ static void rt5651_apply_properties(struct snd_soc_component *component)
	if (device_property_read_u32(component->dev,
				     "realtek,jack-detect-source", &val) == 0)
		rt5651->jd_src = val;

	rt5651->ovcd_th = RT5651_MIC1_OVTH_2000UA;

	if (device_property_read_u32(component->dev,
			"realtek,over-current-threshold-microamp", &val) == 0) {
		switch (val) {
		case 600:
			rt5651->ovcd_th = RT5651_MIC1_OVTH_600UA;
			break;
		case 1500:
			rt5651->ovcd_th = RT5651_MIC1_OVTH_1500UA;
			break;
		case 2000:
			rt5651->ovcd_th = RT5651_MIC1_OVTH_2000UA;
			break;
		default:
			dev_warn(component->dev, "Warning: Invalid over-current-threshold-microamp value: %d, defaulting to 2000uA\n",
				 val);
		}
	}
}

static int rt5651_probe(struct snd_soc_component *component)
+1 −0
Original line number Diff line number Diff line
@@ -2064,6 +2064,7 @@ struct rt5651_priv {
	struct snd_soc_jack *hp_jack;
	struct delayed_work jack_detect_work;
	enum rt5651_jd_src jd_src;
	unsigned int ovcd_th;

	int irq;
	int sysclk;