mirror of https://gitee.com/openkylin/linux.git
ASoC: rt5640: Move checking of device-properties to component probe callback
On some platforms the platform code may need to add device-properties, rather then relying only on properties set by the firmware. This commit moves the parsing of the device-properties from the i2c-driver probe() function, which may be called at any time, to the component-driver probe() function, which gets called after the platform code calls snd_soc_register_card(). This allows the platform code to attach extra device-properties before the device-properties are parsed. Signed-off-by: Hans de Goede <hdegoede@redhat.com> Signed-off-by: Mark Brown <broonie@kernel.org>
This commit is contained in:
parent
8e3ebf5e8f
commit
988a5e0162
|
@ -2138,6 +2138,25 @@ static int rt5640_probe(struct snd_soc_component *component)
|
|||
return -ENODEV;
|
||||
}
|
||||
|
||||
/*
|
||||
* Note on some platforms the platform code may need to add device-props
|
||||
* rather then relying only on properties set by the firmware.
|
||||
* Therefor the property parsing MUST be done here, rather then from
|
||||
* rt5640_i2c_probe(), so that the platform-code can attach extra
|
||||
* properties before calling snd_soc_register_card().
|
||||
*/
|
||||
if (device_property_read_bool(component->dev, "realtek,in1-differential"))
|
||||
snd_soc_component_update_bits(component, RT5640_IN1_IN2,
|
||||
RT5640_IN_DF1, RT5640_IN_DF1);
|
||||
|
||||
if (device_property_read_bool(component->dev, "realtek,in2-differential"))
|
||||
snd_soc_component_update_bits(component, RT5640_IN3_IN4,
|
||||
RT5640_IN_DF2, RT5640_IN_DF2);
|
||||
|
||||
if (device_property_read_bool(component->dev, "realtek,in3-differential"))
|
||||
snd_soc_component_update_bits(component, RT5640_IN1_IN2,
|
||||
RT5640_IN_DF2, RT5640_IN_DF2);
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
|
@ -2370,18 +2389,6 @@ static int rt5640_i2c_probe(struct i2c_client *i2c,
|
|||
regmap_update_bits(rt5640->regmap, RT5640_DUMMY1,
|
||||
RT5640_MCLK_DET, RT5640_MCLK_DET);
|
||||
|
||||
if (device_property_read_bool(&i2c->dev, "realtek,in1-differential"))
|
||||
regmap_update_bits(rt5640->regmap, RT5640_IN1_IN2,
|
||||
RT5640_IN_DF1, RT5640_IN_DF1);
|
||||
|
||||
if (device_property_read_bool(&i2c->dev, "realtek,in2-differential"))
|
||||
regmap_update_bits(rt5640->regmap, RT5640_IN3_IN4,
|
||||
RT5640_IN_DF2, RT5640_IN_DF2);
|
||||
|
||||
if (device_property_read_bool(&i2c->dev, "realtek,in3-differential"))
|
||||
regmap_update_bits(rt5640->regmap, RT5640_IN1_IN2,
|
||||
RT5640_IN_DF2, RT5640_IN_DF2);
|
||||
|
||||
rt5640->hp_mute = 1;
|
||||
|
||||
return devm_snd_soc_register_component(&i2c->dev,
|
||||
|
|
Loading…
Reference in New Issue