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: Hans de Goede <hdegoede@redhat.com> Signed-off-by: Mark Brown <broonie@kernel.org>
This commit is contained in:
parent
f0c2a330d9
commit
583a9debd7
|
@ -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)
|
||||
|
|
|
@ -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;
|
||||
|
|
Loading…
Reference in New Issue