Lines Matching refs:rt298
198 struct rt298_priv *rt298 = snd_soc_codec_get_drvdata(codec); in rt298_index_sync() local
202 snd_soc_write(codec, rt298->index_cache[i].reg, in rt298_index_sync()
203 rt298->index_cache[i].def); in rt298_index_sync()
221 static int rt298_jack_detect(struct rt298_priv *rt298, bool *hp, bool *mic) in rt298_jack_detect() argument
229 if (!rt298->codec) in rt298_jack_detect()
232 dapm = snd_soc_codec_get_dapm(rt298->codec); in rt298_jack_detect()
234 if (rt298->pdata.cbj_en) { in rt298_jack_detect()
235 regmap_read(rt298->regmap, RT298_GET_HP_SENSE, &buf); in rt298_jack_detect()
237 if (*hp == rt298->is_hp_in) in rt298_jack_detect()
239 rt298->is_hp_in = *hp; in rt298_jack_detect()
242 regmap_update_bits(rt298->regmap, in rt298_jack_detect()
251 regmap_write(rt298->regmap, RT298_SET_MIC1, 0x24); in rt298_jack_detect()
254 regmap_update_bits(rt298->regmap, in rt298_jack_detect()
257 regmap_read(rt298->regmap, RT298_CBJ_CTRL2, &val); in rt298_jack_detect()
262 regmap_update_bits(rt298->regmap, in rt298_jack_detect()
265 regmap_read(rt298->regmap, in rt298_jack_detect()
272 regmap_update_bits(rt298->regmap, in rt298_jack_detect()
277 regmap_write(rt298->regmap, RT298_SET_MIC1, 0x20); in rt298_jack_detect()
280 regmap_read(rt298->regmap, RT298_GET_HP_SENSE, &buf); in rt298_jack_detect()
282 regmap_read(rt298->regmap, RT298_GET_MIC1_SENSE, &buf); in rt298_jack_detect()
299 struct rt298_priv *rt298 = in rt298_jack_detect_work() local
305 if (rt298_jack_detect(rt298, &hp, &mic) < 0) in rt298_jack_detect_work()
314 snd_soc_jack_report(rt298->jack, status, in rt298_jack_detect_work()
320 struct rt298_priv *rt298 = snd_soc_codec_get_drvdata(codec); in rt298_mic_detect() local
322 rt298->jack = jack; in rt298_mic_detect()
325 snd_soc_jack_report(rt298->jack, 0, in rt298_mic_detect()
336 struct rt298_priv *rt298 = snd_soc_codec_get_drvdata(codec); in is_mclk_mode() local
338 if (rt298->clk_id == RT298_SCLK_S_MCLK) in is_mclk_mode()
719 struct rt298_priv *rt298 = snd_soc_codec_get_drvdata(codec); in rt298_hw_params() local
733 switch (rt298->sys_clk) { in rt298_hw_params()
738 params_rate(params), rt298->sys_clk); in rt298_hw_params()
746 params_rate(params), rt298->sys_clk); in rt298_hw_params()
845 struct rt298_priv *rt298 = snd_soc_codec_get_drvdata(codec); in rt298_set_dai_sysclk() local
899 rt298->sys_clk = freq; in rt298_set_dai_sysclk()
900 rt298->clk_id = clk_id; in rt298_set_dai_sysclk()
961 struct rt298_priv *rt298 = data; in rt298_irq() local
966 ret = rt298_jack_detect(rt298, &hp, &mic); in rt298_irq()
969 regmap_update_bits(rt298->regmap, RT298_IRQ_CTRL, 0x1, 0x1); in rt298_irq()
978 snd_soc_jack_report(rt298->jack, status, in rt298_irq()
981 pm_wakeup_event(&rt298->i2c->dev, 300); in rt298_irq()
989 struct rt298_priv *rt298 = snd_soc_codec_get_drvdata(codec); in rt298_probe() local
991 rt298->codec = codec; in rt298_probe()
993 if (rt298->i2c->irq) { in rt298_probe()
994 regmap_update_bits(rt298->regmap, in rt298_probe()
997 INIT_DELAYED_WORK(&rt298->jack_detect_work, in rt298_probe()
999 schedule_delayed_work(&rt298->jack_detect_work, in rt298_probe()
1008 struct rt298_priv *rt298 = snd_soc_codec_get_drvdata(codec); in rt298_remove() local
1010 cancel_delayed_work_sync(&rt298->jack_detect_work); in rt298_remove()
1018 struct rt298_priv *rt298 = snd_soc_codec_get_drvdata(codec); in rt298_suspend() local
1020 rt298->is_hp_in = -1; in rt298_suspend()
1021 regcache_cache_only(rt298->regmap, true); in rt298_suspend()
1022 regcache_mark_dirty(rt298->regmap); in rt298_suspend()
1029 struct rt298_priv *rt298 = snd_soc_codec_get_drvdata(codec); in rt298_resume() local
1031 regcache_cache_only(rt298->regmap, false); in rt298_resume()
1033 regcache_sync(rt298->regmap); in rt298_resume()
1141 struct rt298_priv *rt298; in rt298_i2c_probe() local
1146 rt298 = devm_kzalloc(&i2c->dev, sizeof(*rt298), in rt298_i2c_probe()
1148 if (NULL == rt298) in rt298_i2c_probe()
1151 rt298->regmap = devm_regmap_init(&i2c->dev, NULL, i2c, &rt298_regmap); in rt298_i2c_probe()
1152 if (IS_ERR(rt298->regmap)) { in rt298_i2c_probe()
1153 ret = PTR_ERR(rt298->regmap); in rt298_i2c_probe()
1159 regmap_read(rt298->regmap, in rt298_i2c_probe()
1167 rt298->index_cache = devm_kmemdup(&i2c->dev, rt298_index_def, in rt298_i2c_probe()
1169 if (!rt298->index_cache) in rt298_i2c_probe()
1172 rt298->index_cache_size = INDEX_CACHE_SIZE; in rt298_i2c_probe()
1173 rt298->i2c = i2c; in rt298_i2c_probe()
1174 i2c_set_clientdata(i2c, rt298); in rt298_i2c_probe()
1178 regmap_write(rt298->regmap, rt298->index_cache[i].reg, in rt298_i2c_probe()
1179 rt298->index_cache[i].def); in rt298_i2c_probe()
1181 regmap_write(rt298->regmap, rt298_reg[i].reg, in rt298_i2c_probe()
1185 rt298->pdata = *pdata; in rt298_i2c_probe()
1190 rt298->pdata = *(struct rt298_platform_data *) in rt298_i2c_probe()
1195 regmap_update_bits(rt298->regmap, 0x04, 0x80, 0x80); in rt298_i2c_probe()
1196 regmap_update_bits(rt298->regmap, 0x1b, 0x860, 0x860); in rt298_i2c_probe()
1198 regmap_update_bits(rt298->regmap, 0x08, 0x20, 0x20); in rt298_i2c_probe()
1200 regmap_write(rt298->regmap, RT298_SET_AUDIO_POWER, AC_PWRST_D3); in rt298_i2c_probe()
1203 regmap_write(rt298->regmap, in rt298_i2c_probe()
1207 if (!rt298->pdata.cbj_en) { in rt298_i2c_probe()
1208 regmap_write(rt298->regmap, RT298_CBJ_CTRL2, 0x0000); in rt298_i2c_probe()
1209 regmap_write(rt298->regmap, RT298_MIC1_DET_CTRL, 0x0816); in rt298_i2c_probe()
1210 regmap_update_bits(rt298->regmap, in rt298_i2c_probe()
1213 regmap_update_bits(rt298->regmap, in rt298_i2c_probe()
1219 if (!rt298->pdata.gpio2_en) in rt298_i2c_probe()
1220 regmap_write(rt298->regmap, RT298_SET_DMIC2_DEFAULT, 0x40); in rt298_i2c_probe()
1222 regmap_write(rt298->regmap, RT298_SET_DMIC2_DEFAULT, 0); in rt298_i2c_probe()
1226 regmap_write(rt298->regmap, RT298_MISC_CTRL1, 0x0000); in rt298_i2c_probe()
1227 regmap_update_bits(rt298->regmap, in rt298_i2c_probe()
1229 regmap_update_bits(rt298->regmap, RT298_IRQ_CTRL, 0x2, 0x2); in rt298_i2c_probe()
1230 rt298->is_hp_in = -1; in rt298_i2c_probe()
1232 if (rt298->i2c->irq) { in rt298_i2c_probe()
1233 ret = request_threaded_irq(rt298->i2c->irq, NULL, rt298_irq, in rt298_i2c_probe()
1234 IRQF_TRIGGER_HIGH | IRQF_ONESHOT, "rt298", rt298); in rt298_i2c_probe()
1250 struct rt298_priv *rt298 = i2c_get_clientdata(i2c); in rt298_i2c_remove() local
1253 free_irq(i2c->irq, rt298); in rt298_i2c_remove()