static int max97236_pm_resume(struct device *dev) { struct max97236_priv *max97236 = dev_get_drvdata(dev); struct snd_soc_codec *codec = max97236->codec; struct snd_soc_card *card = codec->card; struct snd_soc_dai_link *dai_link = card->dai_link; int i = 0; for (i = 0; i < card->num_links; i++) if (card->dai_link[i].ignore_suspend) return 0; if (pm_delay_enable) { pr_info("%s: enter, setting extclk to %d\n", __func__, extclk_freq); msleep(3000); } cancel_delayed_work(&max97236->jack_work); regcache_cache_only(max97236->regmap, false); /* max97236_reset(max97236); */ regcache_sync(max97236->regmap); max97236_set_clk_dividers(max97236); max97236->jack_state = M97236_JACK_STATE_NONE; if (test_jack_presence(max97236, 10)) snd_soc_jack_report(max97236->jack, max97236->jack_state, 0x7E00); return 0; }
static int max97236_soc_resume(struct snd_soc_codec *codec) { struct max97236_priv *max97236 = snd_soc_codec_get_drvdata(codec); dev_info(max97236->codec->dev, "soc resume\n"); msleep(3000); test_jack_presence(max97236, 10); return 0; }
static int max97236_pm_resume(struct device *dev) { struct max97236_priv *max97236 = dev_get_drvdata(dev); dev_info(max97236->codec->dev, "pm resume\n"); cancel_delayed_work(&max97236->jack_work); regcache_cache_only(max97236->regmap, false); /* max97236_reset(max97236); */ regcache_sync(max97236->regmap); max97236->jack_state = M97236_JACK_STATE_NONE; test_jack_presence(max97236, 10); return 0; }
int max97236_mic_detect(struct snd_soc_codec *codec, struct snd_soc_jack *jack) { struct max97236_priv *max97236 = snd_soc_codec_get_drvdata(codec); int ret = -1; /* dev_info(codec->dev, "%s enter\n", __func__); */ if (jack) { max97236->jack = jack; max97236->jack_state = M97236_JACK_STATE_NONE; test_jack_presence(max97236, 250); ret = 0; } return ret; }