Lines Matching refs:rt1318
486 struct rt1318_priv *rt1318 = snd_soc_component_get_drvdata(component); in rt1318_dac_event() local
490 regmap_update_bits(rt1318->regmap, RT1318_PWR_STA1, in rt1318_dac_event()
495 regmap_update_bits(rt1318->regmap, RT1318_PWR_STA1, in rt1318_dac_event()
509 struct rt1318_priv *rt1318 = snd_soc_component_get_drvdata(component); in rt1318_dvol_put() local
511 rt1318->rt1318_dvol = ucontrol->value.integer.value[0]; in rt1318_dvol_put()
513 if (rt1318->rt1318_dvol <= RT1318_DVOL_STEP && rt1318->rt1318_dvol >= 0) { in rt1318_dvol_put()
514 regmap_write(rt1318->regmap, RT1318_DA_VOL_L_8, in rt1318_dvol_put()
515 rt1318->rt1318_dvol >> 8); in rt1318_dvol_put()
516 regmap_write(rt1318->regmap, RT1318_DA_VOL_L_1_7, in rt1318_dvol_put()
517 rt1318->rt1318_dvol & 0xff); in rt1318_dvol_put()
518 regmap_write(rt1318->regmap, RT1318_DA_VOL_R_8, in rt1318_dvol_put()
519 rt1318->rt1318_dvol >> 8); in rt1318_dvol_put()
520 regmap_write(rt1318->regmap, RT1318_DA_VOL_R_1_7, in rt1318_dvol_put()
521 rt1318->rt1318_dvol & 0xff); in rt1318_dvol_put()
532 struct rt1318_priv *rt1318 = snd_soc_component_get_drvdata(component); in rt1318_dvol_get() local
534 ucontrol->value.integer.value[0] = rt1318->rt1318_dvol; in rt1318_dvol_get()
577 struct rt1318_priv *rt1318 = snd_soc_component_get_drvdata(component); in rt1318_clk_ip_info() local
583 regmap_update_bits(rt1318->regmap, RT1318_SRC_TCON, in rt1318_clk_ip_info()
588 regmap_update_bits(rt1318->regmap, RT1318_SRC_TCON, in rt1318_clk_ip_info()
593 regmap_update_bits(rt1318->regmap, RT1318_SRC_TCON, in rt1318_clk_ip_info()
609 struct rt1318_priv *rt1318 = snd_soc_component_get_drvdata(component); in rt1318_hw_params() local
613 rt1318->lrck = params_rate(params); in rt1318_hw_params()
614 pre_div = rt1318_get_clk_info(rt1318->sysclk, rt1318->lrck); in rt1318_hw_params()
619 ret = rt1318_clk_ip_info(component, rt1318->lrck); in rt1318_hw_params()
648 regmap_update_bits(rt1318->regmap, RT1318_CLK2, in rt1318_hw_params()
652 regmap_update_bits(rt1318->regmap, RT1318_CLK3, in rt1318_hw_params()
656 regmap_update_bits(rt1318->regmap, RT1318_CLK4, in rt1318_hw_params()
660 regmap_update_bits(rt1318->regmap, RT1318_CLK5, in rt1318_hw_params()
664 regmap_update_bits(rt1318->regmap, RT1318_CLK6, in rt1318_hw_params()
670 regmap_update_bits(rt1318->regmap, RT1318_TDM_CTRL2, in rt1318_hw_params()
672 regmap_update_bits(rt1318->regmap, RT1318_TDM_CTRL3, in rt1318_hw_params()
683 struct rt1318_priv *rt1318 = snd_soc_component_get_drvdata(component); in rt1318_set_dai_fmt() local
716 regmap_update_bits(rt1318->regmap, RT1318_TDM_CTRL1, in rt1318_set_dai_fmt()
718 regmap_update_bits(rt1318->regmap, RT1318_TDM_CTRL1, in rt1318_set_dai_fmt()
728 struct rt1318_priv *rt1318 = snd_soc_component_get_drvdata(component); in rt1318_set_dai_sysclk() local
731 if (freq == rt1318->sysclk && clk_id == rt1318->sysclk_src) in rt1318_set_dai_sysclk()
764 rt1318->sysclk = freq; in rt1318_set_dai_sysclk()
765 rt1318->sysclk_src = clk_id; in rt1318_set_dai_sysclk()
767 regmap_update_bits(rt1318->regmap, RT1318_CLK1, in rt1318_set_dai_sysclk()
870 struct rt1318_priv *rt1318 = snd_soc_component_get_drvdata(component); in rt1318_set_dai_pll() local
876 rt1318->pll_in = 0; in rt1318_set_dai_pll()
877 rt1318->pll_out = 0; in rt1318_set_dai_pll()
881 if (source == rt1318->pll_src && freq_in == rt1318->pll_in && in rt1318_set_dai_pll()
882 freq_out == rt1318->pll_out) in rt1318_set_dai_pll()
887 regmap_update_bits(rt1318->regmap, RT1318_CLK1, in rt1318_set_dai_pll()
891 regmap_update_bits(rt1318->regmap, RT1318_CLK1, in rt1318_set_dai_pll()
895 regmap_update_bits(rt1318->regmap, RT1318_CLK1, in rt1318_set_dai_pll()
899 regmap_update_bits(rt1318->regmap, RT1318_CLK1, in rt1318_set_dai_pll()
903 regmap_update_bits(rt1318->regmap, RT1318_CLK1, in rt1318_set_dai_pll()
907 regmap_update_bits(rt1318->regmap, RT1318_CLK1, in rt1318_set_dai_pll()
911 regmap_update_bits(rt1318->regmap, RT1318_CLK1, in rt1318_set_dai_pll()
915 regmap_update_bits(rt1318->regmap, RT1318_CLK1, in rt1318_set_dai_pll()
933 regmap_update_bits(rt1318->regmap, RT1318_PLL1_K, in rt1318_set_dai_pll()
935 regmap_update_bits(rt1318->regmap, RT1318_PLL1_M, in rt1318_set_dai_pll()
937 regmap_update_bits(rt1318->regmap, RT1318_PLL1_N_8, in rt1318_set_dai_pll()
939 regmap_update_bits(rt1318->regmap, RT1318_PLL1_N_7_0, in rt1318_set_dai_pll()
942 rt1318->pll_in = freq_in; in rt1318_set_dai_pll()
943 rt1318->pll_out = freq_out; in rt1318_set_dai_pll()
944 rt1318->pll_src = source; in rt1318_set_dai_pll()
953 struct rt1318_priv *rt1318 = snd_soc_component_get_drvdata(component); in rt1318_set_tdm_slot() local
1013 regmap_update_bits(rt1318->regmap, in rt1318_set_tdm_slot()
1024 regmap_update_bits(rt1318->regmap, in rt1318_set_tdm_slot()
1036 regmap_update_bits(rt1318->regmap, RT1318_TDM_CTRL2, in rt1318_set_tdm_slot()
1038 regmap_update_bits(rt1318->regmap, RT1318_TDM_CTRL3, in rt1318_set_tdm_slot()
1047 struct rt1318_priv *rt1318 = snd_soc_component_get_drvdata(component); in rt1318_probe() local
1049 rt1318->component = component; in rt1318_probe()
1051 schedule_work(&rt1318->cali_work); in rt1318_probe()
1052 rt1318->rt1318_dvol = RT1318_DVOL_STEP; in rt1318_probe()
1059 struct rt1318_priv *rt1318 = snd_soc_component_get_drvdata(component); in rt1318_remove() local
1061 cancel_work_sync(&rt1318->cali_work); in rt1318_remove()
1067 struct rt1318_priv *rt1318 = snd_soc_component_get_drvdata(component); in rt1318_suspend() local
1069 regcache_cache_only(rt1318->regmap, true); in rt1318_suspend()
1070 regcache_mark_dirty(rt1318->regmap); in rt1318_suspend()
1076 struct rt1318_priv *rt1318 = snd_soc_component_get_drvdata(component); in rt1318_resume() local
1078 regcache_cache_only(rt1318->regmap, false); in rt1318_resume()
1079 regcache_sync(rt1318->regmap); in rt1318_resume()
1162 static int rt1318_parse_dt(struct rt1318_priv *rt1318, struct device *dev) in rt1318_parse_dt() argument
1165 &rt1318->pdata.init_r0_l); in rt1318_parse_dt()
1167 &rt1318->pdata.init_r0_r); in rt1318_parse_dt()
1172 static void rt1318_calibration_sequence(struct rt1318_priv *rt1318) in rt1318_calibration_sequence() argument
1174 regmap_write(rt1318->regmap, RT1318_CLK1, 0x22); in rt1318_calibration_sequence()
1175 regmap_write(rt1318->regmap, RT1318_PLL1_N_7_0, 0x06); in rt1318_calibration_sequence()
1176 regmap_write(rt1318->regmap, RT1318_STP_TEMP_L, 0xCC); in rt1318_calibration_sequence()
1177 regmap_write(rt1318->regmap, RT1318_STP_SEL_L, 0x40); in rt1318_calibration_sequence()
1178 regmap_write(rt1318->regmap, RT1318_STP_SEL_R, 0x40); in rt1318_calibration_sequence()
1179 regmap_write(rt1318->regmap, RT1318_SINE_GEN0, 0x20); in rt1318_calibration_sequence()
1180 regmap_write(rt1318->regmap, RT1318_SPK_VOL_TH, 0x00); in rt1318_calibration_sequence()
1181 regmap_write(rt1318->regmap, RT1318_FEEDBACK_PATH, 0x0B); in rt1318_calibration_sequence()
1182 regmap_write(rt1318->regmap, RT1318_TCON, 0x1C); in rt1318_calibration_sequence()
1183 regmap_write(rt1318->regmap, RT1318_TCON_RELATE, 0x58); in rt1318_calibration_sequence()
1184 regmap_write(rt1318->regmap, RT1318_TCON_RELATE, 0x78); in rt1318_calibration_sequence()
1185 regmap_write(rt1318->regmap, RT1318_STP_R0_EN_L, 0xC2); in rt1318_calibration_sequence()
1188 static void rt1318_r0_calculate(struct rt1318_priv *rt1318) in rt1318_r0_calculate() argument
1195 regmap_read(rt1318->regmap, RT1318_R0_L_24, &r0_l_byte0); in rt1318_r0_calculate()
1196 regmap_read(rt1318->regmap, RT1318_R0_L_23_16, &r0_l_byte1); in rt1318_r0_calculate()
1197 regmap_read(rt1318->regmap, RT1318_R0_L_15_8, &r0_l_byte2); in rt1318_r0_calculate()
1198 regmap_read(rt1318->regmap, RT1318_R0_L_7_0, &r0_l_byte3); in rt1318_r0_calculate()
1203 regmap_read(rt1318->regmap, RT1318_R0_R_24, &r0_r_byte0); in rt1318_r0_calculate()
1204 regmap_read(rt1318->regmap, RT1318_R0_R_23_16, &r0_r_byte1); in rt1318_r0_calculate()
1205 regmap_read(rt1318->regmap, RT1318_R0_R_15_8, &r0_r_byte2); in rt1318_r0_calculate()
1206 regmap_read(rt1318->regmap, RT1318_R0_R_7_0, &r0_r_byte3); in rt1318_r0_calculate()
1211 dev_dbg(rt1318->component->dev, "r0_l_ch:%d.%d ohm\n", r0_l_integer, r0_l_factor); in rt1318_r0_calculate()
1212 dev_dbg(rt1318->component->dev, "r0_r_ch:%d.%d ohm\n", r0_r_integer, r0_r_factor); in rt1318_r0_calculate()
1215 static void rt1318_r0_restore(struct rt1318_priv *rt1318) in rt1318_r0_restore() argument
1217 regmap_write(rt1318->regmap, RT1318_PRE_R0_L_24, in rt1318_r0_restore()
1218 (rt1318->pdata.init_r0_l >> 24) & 0xff); in rt1318_r0_restore()
1219 regmap_write(rt1318->regmap, RT1318_PRE_R0_L_23_16, in rt1318_r0_restore()
1220 (rt1318->pdata.init_r0_l >> 16) & 0xff); in rt1318_r0_restore()
1221 regmap_write(rt1318->regmap, RT1318_PRE_R0_L_15_8, in rt1318_r0_restore()
1222 (rt1318->pdata.init_r0_l >> 8) & 0xff); in rt1318_r0_restore()
1223 regmap_write(rt1318->regmap, RT1318_PRE_R0_L_7_0, in rt1318_r0_restore()
1224 (rt1318->pdata.init_r0_l >> 0) & 0xff); in rt1318_r0_restore()
1225 regmap_write(rt1318->regmap, RT1318_PRE_R0_R_24, in rt1318_r0_restore()
1226 (rt1318->pdata.init_r0_r >> 24) & 0xff); in rt1318_r0_restore()
1227 regmap_write(rt1318->regmap, RT1318_PRE_R0_R_23_16, in rt1318_r0_restore()
1228 (rt1318->pdata.init_r0_r >> 16) & 0xff); in rt1318_r0_restore()
1229 regmap_write(rt1318->regmap, RT1318_PRE_R0_R_15_8, in rt1318_r0_restore()
1230 (rt1318->pdata.init_r0_r >> 8) & 0xff); in rt1318_r0_restore()
1231 regmap_write(rt1318->regmap, RT1318_PRE_R0_R_7_0, in rt1318_r0_restore()
1232 (rt1318->pdata.init_r0_r >> 0) & 0xff); in rt1318_r0_restore()
1233 regmap_write(rt1318->regmap, RT1318_STP_SEL_L, 0x80); in rt1318_r0_restore()
1234 regmap_write(rt1318->regmap, RT1318_STP_SEL_R, 0x80); in rt1318_r0_restore()
1235 regmap_write(rt1318->regmap, RT1318_R0_CMP_L_FLAG, 0xc0); in rt1318_r0_restore()
1236 regmap_write(rt1318->regmap, RT1318_R0_CMP_R_FLAG, 0xc0); in rt1318_r0_restore()
1237 regmap_write(rt1318->regmap, RT1318_STP_R0_EN_L, 0xc0); in rt1318_r0_restore()
1238 regmap_write(rt1318->regmap, RT1318_STP_R0_EN_R, 0xc0); in rt1318_r0_restore()
1239 regmap_write(rt1318->regmap, RT1318_STP_TEMP_L, 0xcc); in rt1318_r0_restore()
1240 regmap_write(rt1318->regmap, RT1318_TCON, 0x9c); in rt1318_r0_restore()
1243 static int rt1318_calibrate(struct rt1318_priv *rt1318) in rt1318_calibrate() argument
1248 regmap_write(rt1318->regmap, RT1318_PWR_STA1, 0x1); in rt1318_calibrate()
1250 rt1318_calibration_sequence(rt1318); in rt1318_calibrate()
1254 regmap_read(rt1318->regmap, RT1318_R0_CMP_L_FLAG, &val); in rt1318_calibrate()
1255 regmap_read(rt1318->regmap, RT1318_R0_CMP_R_FLAG, &val2); in rt1318_calibrate()
1259 dev_dbg(rt1318->component->dev, "Calibration done.\n"); in rt1318_calibrate()
1264 regmap_write(rt1318->regmap, RT1318_PWR_STA1, 0x0); in rt1318_calibrate()
1268 regmap_write(rt1318->regmap, RT1318_PWR_STA1, 0x0); in rt1318_calibrate()
1269 regmap_read(rt1318->regmap, RT1318_R0_CMP_L_FLAG, &val); in rt1318_calibrate()
1270 regmap_read(rt1318->regmap, RT1318_R0_CMP_R_FLAG, &val2); in rt1318_calibrate()
1279 struct rt1318_priv *rt1318 = in rt1318_calibration_work() local
1283 if (rt1318->pdata.init_r0_l && rt1318->pdata.init_r0_r) in rt1318_calibration_work()
1284 rt1318_r0_restore(rt1318); in rt1318_calibration_work()
1286 ret = rt1318_calibrate(rt1318); in rt1318_calibration_work()
1288 rt1318_r0_calculate(rt1318); in rt1318_calibration_work()
1289 dev_dbg(rt1318->component->dev, "Calibrate R0 result:%d\n", ret); in rt1318_calibration_work()
1296 struct rt1318_priv *rt1318; in rt1318_i2c_probe() local
1299 rt1318 = devm_kzalloc(&i2c->dev, sizeof(struct rt1318_priv), in rt1318_i2c_probe()
1301 if (!rt1318) in rt1318_i2c_probe()
1304 i2c_set_clientdata(i2c, rt1318); in rt1318_i2c_probe()
1307 rt1318->pdata = *pdata; in rt1318_i2c_probe()
1309 rt1318_parse_dt(rt1318, &i2c->dev); in rt1318_i2c_probe()
1311 rt1318->regmap = devm_regmap_init_i2c(i2c, &rt1318_regmap); in rt1318_i2c_probe()
1312 if (IS_ERR(rt1318->regmap)) { in rt1318_i2c_probe()
1313 ret = PTR_ERR(rt1318->regmap); in rt1318_i2c_probe()
1319 regmap_read(rt1318->regmap, RT1318_DEV_ID1, &val); in rt1318_i2c_probe()
1320 regmap_read(rt1318->regmap, RT1318_DEV_ID2, &val2); in rt1318_i2c_probe()
1329 ret = regmap_register_patch(rt1318->regmap, init_list, in rt1318_i2c_probe()
1334 INIT_WORK(&rt1318->cali_work, rt1318_calibration_work); in rt1318_i2c_probe()