Lines Matching refs:wm8993

472 	struct wm8993_priv *wm8993 = snd_soc_codec_get_drvdata(codec);  in _wm8993_set_fll()  local
480 if (Fref == wm8993->fll_fref && Fout == wm8993->fll_fout) in _wm8993_set_fll()
486 wm8993->fll_fref = 0; in _wm8993_set_fll()
487 wm8993->fll_fout = 0; in _wm8993_set_fll()
555 try_wait_for_completion(&wm8993->fll_lock); in _wm8993_set_fll()
560 timeout = wait_for_completion_timeout(&wm8993->fll_lock, timeout); in _wm8993_set_fll()
566 wm8993->fll_fref = Fref; in _wm8993_set_fll()
567 wm8993->fll_fout = Fout; in _wm8993_set_fll()
568 wm8993->fll_src = source; in _wm8993_set_fll()
581 struct wm8993_priv *wm8993 = snd_soc_codec_get_drvdata(codec); in configure_clock() local
585 switch (wm8993->sysclk_source) { in configure_clock()
587 dev_dbg(codec->dev, "Using %dHz MCLK\n", wm8993->mclk_rate); in configure_clock()
591 if (wm8993->mclk_rate > 13500000) { in configure_clock()
593 wm8993->sysclk_rate = wm8993->mclk_rate / 2; in configure_clock()
596 wm8993->sysclk_rate = wm8993->mclk_rate; in configure_clock()
603 wm8993->fll_fout); in configure_clock()
607 if (wm8993->fll_fout > 13500000) { in configure_clock()
609 wm8993->sysclk_rate = wm8993->fll_fout / 2; in configure_clock()
612 wm8993->sysclk_rate = wm8993->fll_fout; in configure_clock()
622 dev_dbg(codec->dev, "CLK_SYS is %dHz\n", wm8993->sysclk_rate); in configure_clock()
978 struct wm8993_priv *wm8993 = snd_soc_codec_get_drvdata(codec); in wm8993_set_bias_level() local
995 ret = regulator_bulk_enable(ARRAY_SIZE(wm8993->supplies), in wm8993_set_bias_level()
996 wm8993->supplies); in wm8993_set_bias_level()
1000 regcache_cache_only(wm8993->regmap, false); in wm8993_set_bias_level()
1001 regcache_sync(wm8993->regmap); in wm8993_set_bias_level()
1018 if (!wm8993->pdata.lineout1_diff || in wm8993_set_bias_level()
1019 !wm8993->pdata.lineout2_diff) in wm8993_set_bias_level()
1059 regcache_cache_only(wm8993->regmap, true); in wm8993_set_bias_level()
1060 regcache_mark_dirty(wm8993->regmap); in wm8993_set_bias_level()
1062 regulator_bulk_disable(ARRAY_SIZE(wm8993->supplies), in wm8993_set_bias_level()
1063 wm8993->supplies); in wm8993_set_bias_level()
1074 struct wm8993_priv *wm8993 = snd_soc_codec_get_drvdata(codec); in wm8993_set_sysclk() local
1078 wm8993->mclk_rate = freq; in wm8993_set_sysclk()
1080 wm8993->sysclk_source = clk_id; in wm8993_set_sysclk()
1094 struct wm8993_priv *wm8993 = snd_soc_codec_get_drvdata(codec); in wm8993_set_dai_fmt() local
1104 wm8993->master = 0; in wm8993_set_dai_fmt()
1108 wm8993->master = 1; in wm8993_set_dai_fmt()
1112 wm8993->master = 1; in wm8993_set_dai_fmt()
1117 wm8993->master = 1; in wm8993_set_dai_fmt()
1190 struct wm8993_priv *wm8993 = snd_soc_codec_get_drvdata(codec); in wm8993_hw_params() local
1207 wm8993->fs = params_rate(params); in wm8993_hw_params()
1208 wm8993->bclk = 2 * wm8993->fs; in wm8993_hw_params()
1209 if (wm8993->tdm_slots) { in wm8993_hw_params()
1211 wm8993->tdm_slots, wm8993->tdm_width); in wm8993_hw_params()
1212 wm8993->bclk *= wm8993->tdm_width * wm8993->tdm_slots; in wm8993_hw_params()
1216 wm8993->bclk *= 16; in wm8993_hw_params()
1219 wm8993->bclk *= 20; in wm8993_hw_params()
1223 wm8993->bclk *= 24; in wm8993_hw_params()
1227 wm8993->bclk *= 32; in wm8993_hw_params()
1235 dev_dbg(codec->dev, "Target BCLK is %dHz\n", wm8993->bclk); in wm8993_hw_params()
1243 best_val = abs((wm8993->sysclk_rate / clk_sys_rates[0].ratio) in wm8993_hw_params()
1244 - wm8993->fs); in wm8993_hw_params()
1246 cur_val = abs((wm8993->sysclk_rate / in wm8993_hw_params()
1247 clk_sys_rates[i].ratio) - wm8993->fs); in wm8993_hw_params()
1260 best_val = abs(wm8993->fs - sample_rates[0].rate); in wm8993_hw_params()
1263 cur_val = abs(wm8993->fs - sample_rates[i].rate); in wm8993_hw_params()
1278 cur_val = ((wm8993->sysclk_rate * 10) / bclk_divs[i].div) in wm8993_hw_params()
1279 - wm8993->bclk; in wm8993_hw_params()
1287 wm8993->bclk = (wm8993->sysclk_rate * 10) / bclk_divs[best].div; in wm8993_hw_params()
1289 bclk_divs[best].div, wm8993->bclk); in wm8993_hw_params()
1293 dev_dbg(codec->dev, "LRCLK_RATE is %d\n", wm8993->bclk / wm8993->fs); in wm8993_hw_params()
1294 aif4 |= wm8993->bclk / wm8993->fs; in wm8993_hw_params()
1302 if (wm8993->pdata.num_retune_configs) { in wm8993_hw_params()
1307 best_val = abs(wm8993->pdata.retune_configs[0].rate in wm8993_hw_params()
1308 - wm8993->fs); in wm8993_hw_params()
1309 for (i = 0; i < wm8993->pdata.num_retune_configs; i++) { in wm8993_hw_params()
1310 cur_val = abs(wm8993->pdata.retune_configs[i].rate in wm8993_hw_params()
1311 - wm8993->fs); in wm8993_hw_params()
1317 s = &wm8993->pdata.retune_configs[best]; in wm8993_hw_params()
1355 struct wm8993_priv *wm8993 = snd_soc_codec_get_drvdata(codec); in wm8993_set_tdm_slot() local
1361 wm8993->tdm_slots = 0; in wm8993_set_tdm_slot()
1394 wm8993->tdm_width = slot_width; in wm8993_set_tdm_slot()
1395 wm8993->tdm_slots = slots / 2; in wm8993_set_tdm_slot()
1407 struct wm8993_priv *wm8993 = data; in wm8993_irq() local
1410 ret = regmap_read(wm8993->regmap, WM8993_GPIO_CTRL_1, &val); in wm8993_irq()
1412 dev_err(wm8993->dev, "Failed to read interrupt status: %d\n", in wm8993_irq()
1417 ret = regmap_read(wm8993->regmap, WM8993_GPIOCTRL_2, &mask); in wm8993_irq()
1419 dev_err(wm8993->dev, "Failed to read interrupt mask: %d\n", in wm8993_irq()
1430 dev_crit(wm8993->dev, "Thermal warning\n"); in wm8993_irq()
1433 dev_dbg(wm8993->dev, "FLL locked\n"); in wm8993_irq()
1434 complete(&wm8993->fll_lock); in wm8993_irq()
1437 ret = regmap_write(wm8993->regmap, WM8993_GPIO_CTRL_1, val); in wm8993_irq()
1439 dev_err(wm8993->dev, "Failed to ack interrupt: %d\n", ret); in wm8993_irq()
1484 struct wm8993_priv *wm8993 = snd_soc_codec_get_drvdata(codec); in wm8993_probe() local
1487 wm8993->hubs_data.hp_startup_mode = 1; in wm8993_probe()
1488 wm8993->hubs_data.dcs_codes_l = -2; in wm8993_probe()
1489 wm8993->hubs_data.dcs_codes_r = -2; in wm8993_probe()
1490 wm8993->hubs_data.series_startup = 1; in wm8993_probe()
1506 wm_hubs_handle_analogue_pdata(codec, wm8993->pdata.lineout1_diff, in wm8993_probe()
1507 wm8993->pdata.lineout2_diff, in wm8993_probe()
1508 wm8993->pdata.lineout1fb, in wm8993_probe()
1509 wm8993->pdata.lineout2fb, in wm8993_probe()
1510 wm8993->pdata.jd_scthr, in wm8993_probe()
1511 wm8993->pdata.jd_thr, in wm8993_probe()
1512 wm8993->pdata.micbias1_delay, in wm8993_probe()
1513 wm8993->pdata.micbias2_delay, in wm8993_probe()
1514 wm8993->pdata.micbias1_lvl, in wm8993_probe()
1515 wm8993->pdata.micbias2_lvl); in wm8993_probe()
1519 if (wm8993->pdata.num_retune_configs != 0) { in wm8993_probe()
1532 wm_hubs_add_analogue_routes(codec, wm8993->pdata.lineout1_diff, in wm8993_probe()
1533 wm8993->pdata.lineout2_diff); in wm8993_probe()
1538 if (wm8993->pdata.lineout1_diff && wm8993->pdata.lineout2_diff) in wm8993_probe()
1548 struct wm8993_priv *wm8993 = snd_soc_codec_get_drvdata(codec); in wm8993_suspend() local
1549 int fll_fout = wm8993->fll_fout; in wm8993_suspend()
1550 int fll_fref = wm8993->fll_fref; in wm8993_suspend()
1560 wm8993->fll_fout = fll_fout; in wm8993_suspend()
1561 wm8993->fll_fref = fll_fref; in wm8993_suspend()
1570 struct wm8993_priv *wm8993 = snd_soc_codec_get_drvdata(codec); in wm8993_resume() local
1576 if (wm8993->fll_fout) { in wm8993_resume()
1577 int fll_fout = wm8993->fll_fout; in wm8993_resume()
1578 int fll_fref = wm8993->fll_fref; in wm8993_resume()
1580 wm8993->fll_fref = 0; in wm8993_resume()
1581 wm8993->fll_fout = 0; in wm8993_resume()
1583 ret = _wm8993_set_fll(codec, 0, wm8993->fll_src, in wm8993_resume()
1626 struct wm8993_priv *wm8993; in wm8993_i2c_probe() local
1630 wm8993 = devm_kzalloc(&i2c->dev, sizeof(struct wm8993_priv), in wm8993_i2c_probe()
1632 if (wm8993 == NULL) in wm8993_i2c_probe()
1635 wm8993->dev = &i2c->dev; in wm8993_i2c_probe()
1636 init_completion(&wm8993->fll_lock); in wm8993_i2c_probe()
1638 wm8993->regmap = devm_regmap_init_i2c(i2c, &wm8993_regmap); in wm8993_i2c_probe()
1639 if (IS_ERR(wm8993->regmap)) { in wm8993_i2c_probe()
1640 ret = PTR_ERR(wm8993->regmap); in wm8993_i2c_probe()
1645 i2c_set_clientdata(i2c, wm8993); in wm8993_i2c_probe()
1647 for (i = 0; i < ARRAY_SIZE(wm8993->supplies); i++) in wm8993_i2c_probe()
1648 wm8993->supplies[i].supply = wm8993_supply_names[i]; in wm8993_i2c_probe()
1650 ret = devm_regulator_bulk_get(&i2c->dev, ARRAY_SIZE(wm8993->supplies), in wm8993_i2c_probe()
1651 wm8993->supplies); in wm8993_i2c_probe()
1657 ret = regulator_bulk_enable(ARRAY_SIZE(wm8993->supplies), in wm8993_i2c_probe()
1658 wm8993->supplies); in wm8993_i2c_probe()
1664 ret = regmap_read(wm8993->regmap, WM8993_SOFTWARE_RESET, &reg); in wm8993_i2c_probe()
1676 ret = regmap_write(wm8993->regmap, WM8993_SOFTWARE_RESET, 0xffff); in wm8993_i2c_probe()
1680 ret = regmap_register_patch(wm8993->regmap, wm8993_regmap_patch, in wm8993_i2c_probe()
1683 dev_warn(wm8993->dev, "Failed to apply regmap patch: %d\n", in wm8993_i2c_probe()
1688 ret = regmap_update_bits(wm8993->regmap, WM8993_GPIO1, in wm8993_i2c_probe()
1696 "wm8993", wm8993); in wm8993_i2c_probe()
1702 regulator_bulk_disable(ARRAY_SIZE(wm8993->supplies), wm8993->supplies); in wm8993_i2c_probe()
1704 regcache_cache_only(wm8993->regmap, true); in wm8993_i2c_probe()
1717 free_irq(i2c->irq, wm8993); in wm8993_i2c_probe()
1719 regulator_bulk_disable(ARRAY_SIZE(wm8993->supplies), wm8993->supplies); in wm8993_i2c_probe()
1725 struct wm8993_priv *wm8993 = i2c_get_clientdata(i2c); in wm8993_i2c_remove() local
1729 free_irq(i2c->irq, wm8993); in wm8993_i2c_remove()
1730 regulator_bulk_disable(ARRAY_SIZE(wm8993->supplies), wm8993->supplies); in wm8993_i2c_remove()