Commit 5f293d43 authored by Hans de Goede's avatar Hans de Goede Committed by Mark Brown

ASoC: rt5651: Add rt5651_apply_properties() helper function

Move the applying of the differential input and dmic properties to a new
rt5651_apply_properties() helper function. This new function can be called
by platform code which attaches properties after probe() has run to apply
these new properties.

Note this also moves the time when we apply these properties for DT
platforms from i2c-probe to snd-component-probe time, this should not
result in any functional difference.
Signed-off-by: default avatarHans de Goede <hdegoede@redhat.com>
Signed-off-by: default avatarMark Brown <broonie@kernel.org>
parent 6f0b819a
...@@ -1659,6 +1659,18 @@ static int rt5651_set_jack(struct snd_soc_component *component, ...@@ -1659,6 +1659,18 @@ static int rt5651_set_jack(struct snd_soc_component *component,
return 0; return 0;
} }
void rt5651_apply_properties(struct snd_soc_component *component)
{
if (device_property_read_bool(component->dev, "realtek,in2-differential"))
snd_soc_component_update_bits(component, RT5651_IN1_IN2,
RT5651_IN_DF2, RT5651_IN_DF2);
if (device_property_read_bool(component->dev, "realtek,dmic-en"))
snd_soc_component_update_bits(component, RT5651_GPIO_CTRL1,
RT5651_GP2_PIN_MASK, RT5651_GP2_PIN_DMIC1_SCL);
}
EXPORT_SYMBOL_GPL(rt5651_apply_properties);
static int rt5651_probe(struct snd_soc_component *component) static int rt5651_probe(struct snd_soc_component *component)
{ {
struct rt5651_priv *rt5651 = snd_soc_component_get_drvdata(component); struct rt5651_priv *rt5651 = snd_soc_component_get_drvdata(component);
...@@ -1677,6 +1689,8 @@ static int rt5651_probe(struct snd_soc_component *component) ...@@ -1677,6 +1689,8 @@ static int rt5651_probe(struct snd_soc_component *component)
snd_soc_component_force_bias_level(component, SND_SOC_BIAS_OFF); snd_soc_component_force_bias_level(component, SND_SOC_BIAS_OFF);
rt5651_apply_properties(component);
return 0; return 0;
} }
...@@ -1932,14 +1946,6 @@ static int rt5651_i2c_probe(struct i2c_client *i2c, ...@@ -1932,14 +1946,6 @@ static int rt5651_i2c_probe(struct i2c_client *i2c,
if (ret != 0) if (ret != 0)
dev_warn(&i2c->dev, "Failed to apply regmap patch: %d\n", ret); dev_warn(&i2c->dev, "Failed to apply regmap patch: %d\n", ret);
if (device_property_read_bool(&i2c->dev, "realtek,in2-differential"))
regmap_update_bits(rt5651->regmap, RT5651_IN1_IN2,
RT5651_IN_DF2, RT5651_IN_DF2);
if (device_property_read_bool(&i2c->dev, "realtek,dmic-en"))
regmap_update_bits(rt5651->regmap, RT5651_GPIO_CTRL1,
RT5651_GP2_PIN_MASK, RT5651_GP2_PIN_DMIC1_SCL);
rt5651->irq = i2c->irq; rt5651->irq = i2c->irq;
rt5651->hp_mute = 1; rt5651->hp_mute = 1;
......
...@@ -2080,4 +2080,6 @@ struct rt5651_priv { ...@@ -2080,4 +2080,6 @@ struct rt5651_priv {
bool hp_mute; bool hp_mute;
}; };
void rt5651_apply_properties(struct snd_soc_component *component);
#endif /* __RT5651_H__ */ #endif /* __RT5651_H__ */
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment