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,
262 regmap_update_bits(rt286->regmap,
268 regmap_update_bits(rt286->regmap,
273 regmap_write(rt286->regmap, RT286_SET_MIC1, 0x20);
274 regmap_update_bits(rt286->regmap,
278 regmap_read(rt286->regmap, RT286_GET_HP_SENSE, &buf);
280 regmap_read(rt286->regmap, RT286_GET_MIC1_SENSE, &buf);
296 struct rt286_priv *rt286 =
302 rt286_jack_detect(rt286, &hp, &mic);
310 snd_soc_jack_report(rt286->jack, status,
318 struct rt286_priv *rt286 = snd_soc_component_get_drvdata(component);
320 rt286->jack = jack;
324 if (rt286->jack->status & SND_JACK_HEADPHONE)
326 regmap_update_bits(rt286->regmap, RT286_IRQ_CTRL, 0x2, 0x2);
328 snd_soc_jack_report(rt286->jack, rt286->jack->status,
332 regmap_update_bits(rt286->regmap, RT286_IRQ_CTRL, 0x2, 0x0);
344 struct rt286_priv *rt286 = snd_soc_component_get_drvdata(component);
346 if (rt286->clk_id == RT286_SCLK_S_MCLK)
684 struct rt286_priv *rt286 = snd_soc_component_get_drvdata(component);
700 switch (rt286->sys_clk) {
705 params_rate(params), rt286->sys_clk);
713 params_rate(params), rt286->sys_clk);
811 struct rt286_priv *rt286 = snd_soc_component_get_drvdata(component);
865 rt286->sys_clk = freq;
866 rt286->clk_id = clk_id;
921 struct rt286_priv *rt286 = data;
926 rt286_jack_detect(rt286, &hp, &mic);
929 regmap_update_bits(rt286->regmap, RT286_IRQ_CTRL, 0x1, 0x1);
937 snd_soc_jack_report(rt286->jack, status,
940 pm_wakeup_event(&rt286->i2c->dev, 300);
947 struct rt286_priv *rt286 = snd_soc_component_get_drvdata(component);
949 rt286->component = component;
950 INIT_DELAYED_WORK(&rt286->jack_detect_work, rt286_jack_detect_work);
952 if (rt286->i2c->irq)
953 schedule_delayed_work(&rt286->jack_detect_work,
960 struct rt286_priv *rt286 = snd_soc_component_get_drvdata(component);
962 cancel_delayed_work_sync(&rt286->jack_detect_work);
963 rt286->component = NULL;
969 struct rt286_priv *rt286 = snd_soc_component_get_drvdata(component);
971 regcache_cache_only(rt286->regmap, true);
972 regcache_mark_dirty(rt286->regmap);
979 struct rt286_priv *rt286 = snd_soc_component_get_drvdata(component);
981 regcache_cache_only(rt286->regmap, false);
983 regcache_sync(rt286->regmap);
1005 .name = "rt286-aif1",
1025 .name = "rt286-aif2",
1078 {"rt286", 0},
1135 struct rt286_priv *rt286;
1138 rt286 = devm_kzalloc(&i2c->dev, sizeof(*rt286),
1140 if (NULL == rt286)
1143 rt286->regmap = devm_regmap_init(&i2c->dev, NULL, i2c, &rt286_regmap);
1144 if (IS_ERR(rt286->regmap)) {
1145 ret = PTR_ERR(rt286->regmap);
1151 ret = regmap_read(rt286->regmap,
1159 "Device with ID register %#x is not rt286\n",
1164 rt286->index_cache = devm_kmemdup(&i2c->dev, rt286_index_def,
1166 if (!rt286->index_cache)
1169 rt286->index_cache_size = INDEX_CACHE_SIZE;
1170 rt286->i2c = i2c;
1171 i2c_set_clientdata(i2c, rt286);
1175 regmap_write(rt286->regmap, rt286->index_cache[i].reg,
1176 rt286->index_cache[i].def);
1178 regmap_write(rt286->regmap, rt286_reg[i].reg,
1182 rt286->pdata = *pdata;
1186 rt286->pdata.cbj_en = true;
1188 regmap_write(rt286->regmap, RT286_SET_AUDIO_POWER, AC_PWRST_D3);
1191 regmap_write(rt286->regmap,
1195 if (!rt286->pdata.cbj_en) {
1196 regmap_write(rt286->regmap, RT286_CBJ_CTRL2, 0x0000);
1197 regmap_write(rt286->regmap, RT286_MIC1_DET_CTRL, 0x0816);
1198 regmap_update_bits(rt286->regmap,
1201 regmap_update_bits(rt286->regmap,
1207 if (!rt286->pdata.gpio2_en)
1208 regmap_write(rt286->regmap, RT286_SET_DMIC2_DEFAULT, 0x40);
1210 regmap_write(rt286->regmap, RT286_SET_DMIC2_DEFAULT, 0);
1214 regmap_write(rt286->regmap, RT286_MISC_CTRL1, 0x0000);
1216 regmap_update_bits(rt286->regmap, RT286_POWER_CTRL2, 0xc, 0x0);
1217 regmap_update_bits(rt286->regmap, RT286_POWER_CTRL1, 0x1001, 0x1001);
1220 regmap_update_bits(rt286->regmap, RT286_DEPOP_CTRL2, 0x403a, 0x401a);
1221 regmap_update_bits(rt286->regmap, RT286_DEPOP_CTRL3, 0xf777, 0x4737);
1222 regmap_update_bits(rt286->regmap, RT286_DEPOP_CTRL4, 0x00ff, 0x003f);
1225 regmap_update_bits(rt286->regmap,
1227 regmap_update_bits(rt286->regmap,
1229 regmap_update_bits(rt286->regmap,
1231 regmap_update_bits(rt286->regmap,
1235 if (rt286->i2c->irq) {
1236 ret = request_threaded_irq(rt286->i2c->irq, NULL, rt286_irq,
1237 IRQF_TRIGGER_HIGH | IRQF_ONESHOT, "rt286", rt286);
1254 struct rt286_priv *rt286 = i2c_get_clientdata(i2c);
1257 free_irq(i2c->irq, rt286);
1263 .name = "rt286",