Lines Matching refs:rt286
3 * rt286.c -- RT286 ALSA SoC audio codec driver
28 #include <sound/rt286.h>
31 #include "rt286.h"
192 struct rt286_priv *rt286 = snd_soc_component_get_drvdata(component);
196 snd_soc_component_write(component, rt286->index_cache[i].reg,
197 rt286->index_cache[i].def);
215 static int rt286_jack_detect(struct rt286_priv *rt286, bool *hp, bool *mic)
223 if (!rt286->component)
226 dapm = snd_soc_component_get_dapm(rt286->component);
228 if (rt286->pdata.cbj_en) {
229 regmap_read(rt286->regmap, RT286_GET_HP_SENSE, &buf);
233 regmap_update_bits(rt286->regmap,
242 regmap_write(rt286->regmap, RT286_SET_MIC1, 0x24);
245 regmap_update_bits(rt286->regmap,
248 regmap_read(rt286->regmap, RT286_CBJ_CTRL2, &val);
253 regmap_update_bits(rt286->regmap,
256 regmap_read(rt286->regmap,
263 regmap_update_bits(rt286->regmap,
268 regmap_write(rt286->regmap, RT286_SET_MIC1, 0x20);
269 regmap_update_bits(rt286->regmap,
273 regmap_read(rt286->regmap, RT286_GET_HP_SENSE, &buf);
275 regmap_read(rt286->regmap, RT286_GET_MIC1_SENSE, &buf);
291 struct rt286_priv *rt286 =
297 rt286_jack_detect(rt286, &hp, &mic);
305 snd_soc_jack_report(rt286->jack, status,
312 struct rt286_priv *rt286 = snd_soc_component_get_drvdata(component);
314 rt286->jack = jack;
318 if (rt286->jack->status & SND_JACK_HEADPHONE)
320 regmap_update_bits(rt286->regmap, RT286_IRQ_CTRL, 0x2, 0x2);
322 snd_soc_jack_report(rt286->jack, rt286->jack->status,
326 regmap_update_bits(rt286->regmap, RT286_IRQ_CTRL, 0x2, 0x0);
339 struct rt286_priv *rt286 = snd_soc_component_get_drvdata(component);
341 if (rt286->clk_id == RT286_SCLK_S_MCLK)
679 struct rt286_priv *rt286 = snd_soc_component_get_drvdata(component);
695 switch (rt286->sys_clk) {
700 params_rate(params), rt286->sys_clk);
708 params_rate(params), rt286->sys_clk);
807 struct rt286_priv *rt286 = snd_soc_component_get_drvdata(component);
861 rt286->sys_clk = freq;
862 rt286->clk_id = clk_id;
917 struct rt286_priv *rt286 = data;
922 rt286_jack_detect(rt286, &hp, &mic);
925 regmap_update_bits(rt286->regmap, RT286_IRQ_CTRL, 0x1, 0x1);
933 snd_soc_jack_report(rt286->jack, status,
936 pm_wakeup_event(&rt286->i2c->dev, 300);
943 struct rt286_priv *rt286 = snd_soc_component_get_drvdata(component);
945 rt286->component = component;
947 if (rt286->i2c->irq) {
948 regmap_update_bits(rt286->regmap,
951 INIT_DELAYED_WORK(&rt286->jack_detect_work,
953 schedule_delayed_work(&rt286->jack_detect_work,
962 struct rt286_priv *rt286 = snd_soc_component_get_drvdata(component);
964 cancel_delayed_work_sync(&rt286->jack_detect_work);
970 struct rt286_priv *rt286 = snd_soc_component_get_drvdata(component);
972 regcache_cache_only(rt286->regmap, true);
973 regcache_mark_dirty(rt286->regmap);
980 struct rt286_priv *rt286 = snd_soc_component_get_drvdata(component);
982 regcache_cache_only(rt286->regmap, false);
984 regcache_sync(rt286->regmap);
1006 .name = "rt286-aif1",
1026 .name = "rt286-aif2",
1079 {"rt286", 0},
1137 struct rt286_priv *rt286;
1140 rt286 = devm_kzalloc(&i2c->dev, sizeof(*rt286),
1142 if (NULL == rt286)
1145 rt286->regmap = devm_regmap_init(&i2c->dev, NULL, i2c, &rt286_regmap);
1146 if (IS_ERR(rt286->regmap)) {
1147 ret = PTR_ERR(rt286->regmap);
1153 ret = regmap_read(rt286->regmap,
1161 "Device with ID register %#x is not rt286\n",
1166 rt286->index_cache = devm_kmemdup(&i2c->dev, rt286_index_def,
1168 if (!rt286->index_cache)
1171 rt286->index_cache_size = INDEX_CACHE_SIZE;
1172 rt286->i2c = i2c;
1173 i2c_set_clientdata(i2c, rt286);
1177 regmap_write(rt286->regmap, rt286->index_cache[i].reg,
1178 rt286->index_cache[i].def);
1180 regmap_write(rt286->regmap, rt286_reg[i].reg,
1184 rt286->pdata = *pdata;
1188 rt286->pdata.cbj_en = true;
1190 regmap_write(rt286->regmap, RT286_SET_AUDIO_POWER, AC_PWRST_D3);
1193 regmap_write(rt286->regmap,
1197 if (!rt286->pdata.cbj_en) {
1198 regmap_write(rt286->regmap, RT286_CBJ_CTRL2, 0x0000);
1199 regmap_write(rt286->regmap, RT286_MIC1_DET_CTRL, 0x0816);
1200 regmap_update_bits(rt286->regmap,
1203 regmap_update_bits(rt286->regmap,
1209 if (!rt286->pdata.gpio2_en)
1210 regmap_write(rt286->regmap, RT286_SET_DMIC2_DEFAULT, 0x4000);
1212 regmap_write(rt286->regmap, RT286_SET_DMIC2_DEFAULT, 0);
1216 regmap_write(rt286->regmap, RT286_MISC_CTRL1, 0x0000);
1218 regmap_update_bits(rt286->regmap, RT286_POWER_CTRL2, 0xc, 0x0);
1219 regmap_update_bits(rt286->regmap, RT286_POWER_CTRL1, 0x1001, 0x1001);
1222 regmap_update_bits(rt286->regmap, RT286_DEPOP_CTRL2, 0x403a, 0x401a);
1223 regmap_update_bits(rt286->regmap, RT286_DEPOP_CTRL3, 0xf777, 0x4737);
1224 regmap_update_bits(rt286->regmap, RT286_DEPOP_CTRL4, 0x00ff, 0x003f);
1227 regmap_update_bits(rt286->regmap,
1229 regmap_update_bits(rt286->regmap,
1231 regmap_update_bits(rt286->regmap,
1233 regmap_update_bits(rt286->regmap,
1237 if (rt286->i2c->irq) {
1238 ret = request_threaded_irq(rt286->i2c->irq, NULL, rt286_irq,
1239 IRQF_TRIGGER_HIGH | IRQF_ONESHOT, "rt286", rt286);
1256 struct rt286_priv *rt286 = i2c_get_clientdata(i2c);
1259 free_irq(i2c->irq, rt286);
1267 .name = "rt286",