Lines Matching refs:wm8978

476 	struct wm8978_priv *wm8978 = snd_soc_codec_get_drvdata(codec);  in wm8978_configure_pll()  local
478 unsigned int f_opclk = wm8978->f_opclk, f_mclk = wm8978->f_mclk, in wm8978_configure_pll()
479 f_256fs = wm8978->f_256fs; in wm8978_configure_pll()
488 wm8978->mclk_idx = -1; in wm8978_configure_pll()
513 wm8978->f_pllout = f_opclk * opclk_div; in wm8978_configure_pll()
525 int idx = wm8978_enum_mclk(f_256fs, f_mclk, &wm8978->f_pllout); in wm8978_configure_pll()
529 wm8978->mclk_idx = idx; in wm8978_configure_pll()
534 f2 = wm8978->f_pllout * 4; in wm8978_configure_pll()
537 wm8978->f_mclk, wm8978->f_pllout); in wm8978_configure_pll()
539 pll_factors(codec, &pll_div, f2, wm8978->f_mclk); in wm8978_configure_pll()
569 struct wm8978_priv *wm8978 = snd_soc_codec_get_drvdata(codec); in wm8978_set_dai_clkdiv() local
574 wm8978->f_opclk = div; in wm8978_set_dai_clkdiv()
576 if (wm8978->f_mclk) in wm8978_set_dai_clkdiv()
614 struct wm8978_priv *wm8978 = snd_soc_codec_get_drvdata(codec); in wm8978_set_dai_sysclk() local
620 wm8978->f_mclk = freq; in wm8978_set_dai_sysclk()
623 if (wm8978->f_opclk) in wm8978_set_dai_sysclk()
629 wm8978->sysclk = clk_id; in wm8978_set_dai_sysclk()
632 if (wm8978->sysclk == WM8978_PLL && (!freq || clk_id == WM8978_MCLK)) { in wm8978_set_dai_sysclk()
641 wm8978->sysclk = WM8978_MCLK; in wm8978_set_dai_sysclk()
642 wm8978->f_pllout = 0; in wm8978_set_dai_sysclk()
643 wm8978->f_opclk = 0; in wm8978_set_dai_sysclk()
724 struct wm8978_priv *wm8978 = snd_soc_codec_get_drvdata(codec); in wm8978_hw_params() local
735 if (!wm8978->f_mclk) in wm8978_hw_params()
776 wm8978->f_256fs = params_rate(params) * 256; in wm8978_hw_params()
778 if (wm8978->sysclk == WM8978_MCLK) { in wm8978_hw_params()
779 wm8978->mclk_idx = -1; in wm8978_hw_params()
780 f_sel = wm8978->f_mclk; in wm8978_hw_params()
782 if (!wm8978->f_opclk) { in wm8978_hw_params()
788 f_sel = wm8978->f_pllout; in wm8978_hw_params()
791 if (wm8978->mclk_idx < 0) { in wm8978_hw_params()
793 if (f_sel < wm8978->f_256fs || f_sel > 12 * wm8978->f_256fs) in wm8978_hw_params()
797 diff = abs(wm8978->f_256fs * 3 - in wm8978_hw_params()
810 best = wm8978->mclk_idx; in wm8978_hw_params()
817 wm8978->sysclk == WM8978_MCLK ? in wm8978_hw_params()
829 if (wm8978->sysclk != current_clk_id) { in wm8978_hw_params()
830 if (wm8978->sysclk == WM8978_PLL) in wm8978_hw_params()
929 struct wm8978_priv *wm8978 = snd_soc_codec_get_drvdata(codec); in wm8978_suspend() local
935 regcache_mark_dirty(wm8978->regmap); in wm8978_suspend()
942 struct wm8978_priv *wm8978 = snd_soc_codec_get_drvdata(codec); in wm8978_resume() local
945 regcache_sync(wm8978->regmap); in wm8978_resume()
949 if (wm8978->f_pllout) in wm8978_resume()
977 struct wm8978_priv *wm8978 = snd_soc_codec_get_drvdata(codec); in wm8978_probe() local
984 wm8978->sysclk = WM8978_PLL; in wm8978_probe()
1026 struct wm8978_priv *wm8978; in wm8978_i2c_probe() local
1029 wm8978 = devm_kzalloc(&i2c->dev, sizeof(struct wm8978_priv), in wm8978_i2c_probe()
1031 if (wm8978 == NULL) in wm8978_i2c_probe()
1034 wm8978->regmap = devm_regmap_init_i2c(i2c, &wm8978_regmap_config); in wm8978_i2c_probe()
1035 if (IS_ERR(wm8978->regmap)) { in wm8978_i2c_probe()
1036 ret = PTR_ERR(wm8978->regmap); in wm8978_i2c_probe()
1041 i2c_set_clientdata(i2c, wm8978); in wm8978_i2c_probe()
1044 ret = regmap_write(wm8978->regmap, WM8978_RESET, 0); in wm8978_i2c_probe()