H A D | adav80x.c | 21 #include "adav80x.h" 142 struct adav80x { struct 216 struct adav80x *adav80x = snd_soc_codec_get_drvdata(codec); adav80x_dapm_sysclk_check() local 219 switch (adav80x->clk_src) { adav80x_dapm_sysclk_check() 240 struct adav80x *adav80x = snd_soc_codec_get_drvdata(codec); adav80x_dapm_pll_check() local 242 return adav80x->pll_src == ADAV80X_PLL_SRC_XTAL; adav80x_dapm_pll_check() 286 struct adav80x *adav80x = snd_soc_codec_get_drvdata(codec); adav80x_set_deemph() local 289 if (adav80x->deemph) { adav80x_set_deemph() 290 switch (adav80x->rate) { adav80x_set_deemph() 311 return regmap_update_bits(adav80x->regmap, ADAV80X_DAC_CTRL2, adav80x_set_deemph() 319 struct adav80x *adav80x = snd_soc_codec_get_drvdata(codec); adav80x_put_deemph() local 325 adav80x->deemph = deemph; adav80x_put_deemph() 334 struct adav80x *adav80x = snd_soc_codec_get_drvdata(codec); adav80x_get_deemph() local 336 ucontrol->value.integer.value[0] = adav80x->deemph; adav80x_get_deemph() 369 struct adav80x *adav80x = snd_soc_codec_get_drvdata(codec); adav80x_set_dai_fmt() local 407 regmap_update_bits(adav80x->regmap, adav80x_port_ctrl_regs[dai->id][0], adav80x_set_dai_fmt() 410 regmap_write(adav80x->regmap, adav80x_port_ctrl_regs[dai->id][1], adav80x_set_dai_fmt() 413 adav80x->dai_fmt[dai->id] = fmt & SND_SOC_DAIFMT_FORMAT_MASK; adav80x_set_dai_fmt() 421 struct adav80x *adav80x = snd_soc_codec_get_drvdata(codec); adav80x_set_adc_clock() local 429 regmap_update_bits(adav80x->regmap, ADAV80X_ADC_CTRL1, adav80x_set_adc_clock() 438 struct adav80x *adav80x = snd_soc_codec_get_drvdata(codec); adav80x_set_dac_clock() local 446 regmap_update_bits(adav80x->regmap, ADAV80X_DAC_CTRL2, adav80x_set_dac_clock() 456 struct adav80x *adav80x = snd_soc_codec_get_drvdata(codec); adav80x_set_capture_pcm_format() local 476 regmap_update_bits(adav80x->regmap, adav80x_port_ctrl_regs[dai->id][0], adav80x_set_capture_pcm_format() 485 struct adav80x *adav80x = snd_soc_codec_get_drvdata(codec); adav80x_set_playback_pcm_format() local 488 if (adav80x->dai_fmt[dai->id] != SND_SOC_DAIFMT_RIGHT_J) adav80x_set_playback_pcm_format() 508 regmap_update_bits(adav80x->regmap, adav80x_port_ctrl_regs[dai->id][1], adav80x_set_playback_pcm_format() 518 struct adav80x *adav80x = snd_soc_codec_get_drvdata(codec); adav80x_hw_params() local 521 if (rate * 256 != adav80x->sysclk) adav80x_hw_params() 531 adav80x->rate = rate; adav80x_hw_params() 541 struct adav80x *adav80x = snd_soc_codec_get_drvdata(codec); adav80x_set_sysclk() local 556 adav80x->sysclk = freq; adav80x_set_sysclk() 558 if (adav80x->clk_src != clk_id) { adav80x_set_sysclk() 561 adav80x->clk_src = clk_id; adav80x_set_sysclk() 570 regmap_write(adav80x->regmap, ADAV80X_ICLK_CTRL1, adav80x_set_sysclk() 572 regmap_write(adav80x->regmap, ADAV80X_ICLK_CTRL2, adav80x_set_sysclk() 593 regmap_update_bits(adav80x->regmap, ADAV80X_PLL_OUTE, adav80x_set_sysclk() 595 adav80x->sysclk_pd[clk_id] = true; adav80x_set_sysclk() 597 regmap_update_bits(adav80x->regmap, ADAV80X_PLL_OUTE, adav80x_set_sysclk() 599 adav80x->sysclk_pd[clk_id] = false; adav80x_set_sysclk() 604 if (adav80x->sysclk_pd[0]) adav80x_set_sysclk() 609 if (adav80x->sysclk_pd[1] || adav80x->sysclk_pd[2]) adav80x_set_sysclk() 625 struct adav80x *adav80x = snd_soc_codec_get_drvdata(codec); adav80x_set_pll() local 674 regmap_update_bits(adav80x->regmap, ADAV80X_PLL_CTRL1, adav80x_set_pll() 676 regmap_update_bits(adav80x->regmap, ADAV80X_PLL_CTRL2, adav80x_set_pll() 679 if (source != adav80x->pll_src) { adav80x_set_pll() 685 regmap_update_bits(adav80x->regmap, ADAV80X_PLL_CLK_SRC, adav80x_set_pll() 688 adav80x->pll_src = source; adav80x_set_pll() 699 struct adav80x *adav80x = snd_soc_codec_get_drvdata(codec); adav80x_set_bias_level() local 708 regmap_update_bits(adav80x->regmap, ADAV80X_DAC_CTRL1, mask, adav80x_set_bias_level() 712 regmap_update_bits(adav80x->regmap, ADAV80X_DAC_CTRL1, mask, adav80x_set_bias_level() 726 struct adav80x *adav80x = snd_soc_codec_get_drvdata(codec); adav80x_dai_startup() local 728 if (!snd_soc_codec_is_active(codec) || !adav80x->rate) adav80x_dai_startup() 732 SNDRV_PCM_HW_PARAM_RATE, adav80x->rate, adav80x->rate); adav80x_dai_startup() 739 struct adav80x *adav80x = snd_soc_codec_get_drvdata(codec); adav80x_dai_shutdown() local 742 adav80x->rate = 0; adav80x_dai_shutdown() 763 .name = "adav80x-hifi", 782 .name = "adav80x-aux", 804 struct adav80x *adav80x = snd_soc_codec_get_drvdata(codec); adav80x_probe() local 811 regmap_write(adav80x->regmap, ADAV80X_PLL_OUTE, 0x20); adav80x_probe() 813 regmap_write(adav80x->regmap, ADAV80X_DAC_CTRL3, 0x6); adav80x_probe() 820 struct adav80x *adav80x = snd_soc_codec_get_drvdata(codec); adav80x_resume() local 822 regcache_sync(adav80x->regmap); adav80x_resume() 846 struct adav80x *adav80x; adav80x_bus_probe() local 851 adav80x = devm_kzalloc(dev, sizeof(*adav80x), GFP_KERNEL); adav80x_bus_probe() 852 if (!adav80x) adav80x_bus_probe() 855 dev_set_drvdata(dev, adav80x); adav80x_bus_probe() 856 adav80x->regmap = regmap; adav80x_bus_probe()
|