ASoC: codecs: ES8326: Reducin powerconsumption and
Merge series from Zhang Yi <zhangyi@everest-semi.com>: We changed the configuration related to hibernation. and delete the REG_SUPPLY to cover mute issue.
This commit is contained in:
commit
fc32f949ed
@ -292,11 +292,6 @@ static const struct snd_soc_dapm_widget es8326_dapm_widgets[] = {
|
||||
SND_SOC_DAPM_PGA("LHPMIX", ES8326_DAC2HPMIX, 7, 0, NULL, 0),
|
||||
SND_SOC_DAPM_PGA("RHPMIX", ES8326_DAC2HPMIX, 3, 0, NULL, 0),
|
||||
|
||||
SND_SOC_DAPM_REG(snd_soc_dapm_supply, "HPOR Supply", ES8326_HP_CAL,
|
||||
4, 7, 0, 0),
|
||||
SND_SOC_DAPM_REG(snd_soc_dapm_supply, "HPOL Supply", ES8326_HP_CAL,
|
||||
0, 7, 0, 0),
|
||||
|
||||
SND_SOC_DAPM_OUTPUT("HPOL"),
|
||||
SND_SOC_DAPM_OUTPUT("HPOR"),
|
||||
};
|
||||
@ -316,9 +311,6 @@ static const struct snd_soc_dapm_route es8326_dapm_routes[] = {
|
||||
{"LHPMIX", NULL, "Left DAC"},
|
||||
{"RHPMIX", NULL, "Right DAC"},
|
||||
|
||||
{"HPOR", NULL, "HPOR Supply"},
|
||||
{"HPOL", NULL, "HPOL Supply"},
|
||||
|
||||
{"HPOL", NULL, "LHPMIX"},
|
||||
{"HPOR", NULL, "RHPMIX"},
|
||||
};
|
||||
@ -1072,12 +1064,13 @@ static int es8326_suspend(struct snd_soc_component *component)
|
||||
es8326->calibrated = false;
|
||||
regmap_write(es8326->regmap, ES8326_CLK_CTL, ES8326_CLK_OFF);
|
||||
regcache_cache_only(es8326->regmap, true);
|
||||
regcache_mark_dirty(es8326->regmap);
|
||||
|
||||
/* reset register value to default */
|
||||
regmap_write(es8326->regmap, ES8326_CSM_I2C_STA, 0x01);
|
||||
usleep_range(1000, 3000);
|
||||
regmap_write(es8326->regmap, ES8326_CSM_I2C_STA, 0x00);
|
||||
|
||||
regcache_mark_dirty(es8326->regmap);
|
||||
return 0;
|
||||
}
|
||||
|
||||
@ -1163,8 +1156,13 @@ static int es8326_set_jack(struct snd_soc_component *component,
|
||||
|
||||
static void es8326_remove(struct snd_soc_component *component)
|
||||
{
|
||||
struct es8326_priv *es8326 = snd_soc_component_get_drvdata(component);
|
||||
|
||||
es8326_disable_jack_detect(component);
|
||||
es8326_set_bias_level(component, SND_SOC_BIAS_OFF);
|
||||
regmap_write(es8326->regmap, ES8326_CSM_I2C_STA, 0x01);
|
||||
usleep_range(1000, 3000);
|
||||
regmap_write(es8326->regmap, ES8326_CSM_I2C_STA, 0x00);
|
||||
}
|
||||
|
||||
static const struct snd_soc_component_driver soc_component_dev_es8326 = {
|
||||
@ -1236,6 +1234,29 @@ static int es8326_i2c_probe(struct i2c_client *i2c)
|
||||
&es8326_dai, 1);
|
||||
}
|
||||
|
||||
|
||||
static void es8326_i2c_shutdown(struct i2c_client *i2c)
|
||||
{
|
||||
struct snd_soc_component *component;
|
||||
struct es8326_priv *es8326;
|
||||
|
||||
es8326 = i2c_get_clientdata(i2c);
|
||||
component = es8326->component;
|
||||
dev_dbg(component->dev, "Enter into %s\n", __func__);
|
||||
cancel_delayed_work_sync(&es8326->jack_detect_work);
|
||||
cancel_delayed_work_sync(&es8326->button_press_work);
|
||||
|
||||
regmap_write(es8326->regmap, ES8326_CSM_I2C_STA, 0x01);
|
||||
usleep_range(1000, 3000);
|
||||
regmap_write(es8326->regmap, ES8326_CSM_I2C_STA, 0x00);
|
||||
|
||||
}
|
||||
|
||||
static void es8326_i2c_remove(struct i2c_client *i2c)
|
||||
{
|
||||
es8326_i2c_shutdown(i2c);
|
||||
}
|
||||
|
||||
static const struct i2c_device_id es8326_i2c_id[] = {
|
||||
{"es8326", 0 },
|
||||
{}
|
||||
@ -1265,6 +1286,8 @@ static struct i2c_driver es8326_i2c_driver = {
|
||||
.of_match_table = of_match_ptr(es8326_of_match),
|
||||
},
|
||||
.probe = es8326_i2c_probe,
|
||||
.shutdown = es8326_i2c_shutdown,
|
||||
.remove = es8326_i2c_remove,
|
||||
.id_table = es8326_i2c_id,
|
||||
};
|
||||
module_i2c_driver(es8326_i2c_driver);
|
||||
|
Loading…
x
Reference in New Issue
Block a user