Lines Matching refs:rt274
3 * rt274.c -- RT274 ALSA SoC audio codec driver
30 #include "rt274.h"
340 struct rt274_priv *rt274 = snd_soc_component_get_drvdata(component);
344 snd_soc_component_write(component, rt274->index_cache[i].reg,
345 rt274->index_cache[i].def);
350 static int rt274_jack_detect(struct rt274_priv *rt274, bool *hp, bool *mic)
358 if (!rt274->component)
361 ret = regmap_read(rt274->regmap, RT274_GET_HP_SENSE, &buf);
366 ret = regmap_read(rt274->regmap, RT274_GET_MIC_SENSE, &buf);
379 struct rt274_priv *rt274 =
385 if (rt274_jack_detect(rt274, &hp, &mic) < 0)
394 snd_soc_jack_report(rt274->jack, status,
403 struct rt274_priv *rt274 = snd_soc_component_get_drvdata(component);
405 rt274->jack = jack;
409 regmap_update_bits(rt274->regmap, RT274_EAPD_GPIO_IRQ_CTRL,
415 regmap_update_bits(rt274->regmap, RT274_EAPD_GPIO_IRQ_CTRL,
419 rt274_irq(0, rt274);
618 struct rt274_priv *rt274 = snd_soc_component_get_drvdata(component);
632 switch (rt274->sys_clk) {
637 params_rate(params), rt274->sys_clk);
645 params_rate(params), rt274->sys_clk);
690 if (rt274->master)
706 struct rt274_priv *rt274 = snd_soc_component_get_drvdata(component);
712 rt274->master = true;
717 rt274->master = false;
754 struct rt274_priv *rt274 = snd_soc_component_get_drvdata(component);
773 switch (rt274->fs) {
807 struct rt274_priv *rt274 = snd_soc_component_get_drvdata(component);
868 rt274->sys_clk = freq;
869 rt274->clk_id = clk_id;
877 struct rt274_priv *rt274 = snd_soc_component_get_drvdata(component);
880 rt274->fs = ratio;
951 struct rt274_priv *rt274 = data;
957 regmap_update_bits(rt274->regmap, RT274_EAPD_GPIO_IRQ_CTRL,
960 ret = rt274_jack_detect(rt274, &hp, &mic);
969 snd_soc_jack_report(rt274->jack, status,
972 pm_wakeup_event(&rt274->i2c->dev, 300);
980 struct rt274_priv *rt274 = snd_soc_component_get_drvdata(component);
982 rt274->component = component;
983 INIT_DELAYED_WORK(&rt274->jack_detect_work, rt274_jack_detect_work);
985 if (rt274->i2c->irq)
986 schedule_delayed_work(&rt274->jack_detect_work,
993 struct rt274_priv *rt274 = snd_soc_component_get_drvdata(component);
995 cancel_delayed_work_sync(&rt274->jack_detect_work);
996 rt274->component = NULL;
1002 struct rt274_priv *rt274 = snd_soc_component_get_drvdata(component);
1004 regcache_cache_only(rt274->regmap, true);
1005 regcache_mark_dirty(rt274->regmap);
1012 struct rt274_priv *rt274 = snd_soc_component_get_drvdata(component);
1014 regcache_cache_only(rt274->regmap, false);
1016 regcache_sync(rt274->regmap);
1040 .name = "rt274-aif1",
1093 {.compatible = "realtek,rt274"},
1100 {"rt274", 0},
1116 struct rt274_priv *rt274;
1121 rt274 = devm_kzalloc(&i2c->dev, sizeof(*rt274),
1123 if (rt274 == NULL)
1126 rt274->regmap = devm_regmap_init(&i2c->dev, NULL, i2c, &rt274_regmap);
1127 if (IS_ERR(rt274->regmap)) {
1128 ret = PTR_ERR(rt274->regmap);
1134 ret = regmap_read(rt274->regmap,
1141 "Device with ID register %#x is not rt274\n", val);
1145 rt274->index_cache = devm_kmemdup(&i2c->dev, rt274_index_def,
1147 if (!rt274->index_cache)
1150 rt274->index_cache_size = INDEX_CACHE_SIZE;
1151 rt274->i2c = i2c;
1152 i2c_set_clientdata(i2c, rt274);
1155 regmap_write(rt274->regmap, RT274_RESET, 0);
1156 regmap_update_bits(rt274->regmap, 0x1a, 0x4000, 0x4000);
1159 regmap_update_bits(rt274->regmap, RT274_PAD_CTRL12, 0x3, 0x0);
1160 regmap_write(rt274->regmap, RT274_COEF5b_INDEX, 0x01);
1161 regmap_write(rt274->regmap, RT274_COEF5b_COEF, 0x8540);
1162 regmap_update_bits(rt274->regmap, 0x6f, 0x0100, 0x0100);
1164 regmap_write(rt274->regmap, 0x4a, 0x201b);
1166 regmap_update_bits(rt274->regmap, 0x6f, 0x3000, 0x2000);
1168 regmap_update_bits(rt274->regmap, 0x6f, 0xf, 0x0);
1170 regmap_write(rt274->regmap, RT274_COEF58_INDEX, 0x00);
1171 regmap_write(rt274->regmap, RT274_COEF58_COEF, 0xb888);
1173 regmap_update_bits(rt274->regmap, 0x6f, 0xf, 0xb);
1174 regmap_write(rt274->regmap, RT274_COEF58_INDEX, 0x00);
1175 regmap_write(rt274->regmap, RT274_COEF58_COEF, 0x3888);
1177 regmap_write(rt274->regmap, RT274_SET_PIN_HPO, 0x40);
1178 regmap_write(rt274->regmap, RT274_SET_PIN_LOUT3, 0x40);
1179 regmap_write(rt274->regmap, RT274_SET_MIC, 0x20);
1180 regmap_write(rt274->regmap, RT274_SET_PIN_DMIC1, 0x20);
1182 regmap_update_bits(rt274->regmap, RT274_I2S_CTRL2, 0xc004, 0x4004);
1183 regmap_update_bits(rt274->regmap, RT274_EAPD_GPIO_IRQ_CTRL,
1187 regmap_write(rt274->regmap, RT274_UNSOLICITED_HP_OUT, 0x81);
1188 regmap_write(rt274->regmap, RT274_UNSOLICITED_MIC, 0x82);
1190 if (rt274->i2c->irq) {
1191 ret = request_threaded_irq(rt274->i2c->irq, NULL, rt274_irq,
1192 IRQF_TRIGGER_HIGH | IRQF_ONESHOT, "rt274", rt274);
1209 struct rt274_priv *rt274 = i2c_get_clientdata(i2c);
1212 free_irq(i2c->irq, rt274);
1218 .name = "rt274",