Lines Matching refs:adau
65 struct adau *adau = snd_soc_codec_get_drvdata(codec); in adau17x1_pll_event() local
69 adau->pll_regs[5] = 1; in adau17x1_pll_event()
71 adau->pll_regs[5] = 0; in adau17x1_pll_event()
74 regmap_update_bits(adau->regmap, ADAU17X1_CLOCK_CONTROL, in adau17x1_pll_event()
79 ret = regmap_raw_write(adau->regmap, ADAU17X1_PLL_CONTROL, in adau17x1_pll_event()
80 adau->pll_regs, ARRAY_SIZE(adau->pll_regs)); in adau17x1_pll_event()
84 regmap_update_bits(adau->regmap, ADAU17X1_CLOCK_CONTROL, in adau17x1_pll_event()
158 struct adau *adau = snd_soc_codec_get_drvdata(codec); in adau17x1_dsp_mux_enum_put() local
171 adau->dsp_bypass[stream] = false; in adau17x1_dsp_mux_enum_put()
174 val = (adau->tdm_slot[stream] * 2) + 1; in adau17x1_dsp_mux_enum_put()
175 adau->dsp_bypass[stream] = true; in adau17x1_dsp_mux_enum_put()
202 struct adau *adau = snd_soc_codec_get_drvdata(codec); in adau17x1_dsp_mux_enum_get() local
213 ret = regmap_read(adau->regmap, reg, &val); in adau17x1_dsp_mux_enum_get()
291 bool adau17x1_has_dsp(struct adau *adau) in adau17x1_has_dsp() argument
293 switch (adau->type) { in adau17x1_has_dsp()
308 struct adau *adau = snd_soc_codec_get_drvdata(codec); in adau17x1_hw_params() local
313 if (adau->clk_src == ADAU17X1_CLK_SRC_PLL) in adau17x1_hw_params()
314 freq = adau->pll_freq; in adau17x1_hw_params()
316 freq = adau->sysclk; in adau17x1_hw_params()
354 regmap_update_bits(adau->regmap, ADAU17X1_CONVERTER0, in adau17x1_hw_params()
356 if (adau17x1_has_dsp(adau)) { in adau17x1_hw_params()
357 regmap_write(adau->regmap, ADAU17X1_SERIAL_SAMPLING_RATE, div); in adau17x1_hw_params()
358 regmap_write(adau->regmap, ADAU17X1_DSP_SAMPLING_RATE, dsp_div); in adau17x1_hw_params()
361 if (adau->sigmadsp) { in adau17x1_hw_params()
362 ret = adau17x1_setup_firmware(adau, params_rate(params)); in adau17x1_hw_params()
367 if (adau->dai_fmt != SND_SOC_DAIFMT_RIGHT_J) in adau17x1_hw_params()
384 return regmap_update_bits(adau->regmap, ADAU17X1_SERIAL_PORT1, in adau17x1_hw_params()
392 struct adau *adau = snd_soc_codec_get_drvdata(codec); in adau17x1_set_dai_pll() local
425 adau->pll_regs[0] = m >> 8; in adau17x1_set_dai_pll()
426 adau->pll_regs[1] = m & 0xff; in adau17x1_set_dai_pll()
427 adau->pll_regs[2] = n >> 8; in adau17x1_set_dai_pll()
428 adau->pll_regs[3] = n & 0xff; in adau17x1_set_dai_pll()
429 adau->pll_regs[4] = (r << 3) | (div << 1); in adau17x1_set_dai_pll()
431 adau->pll_regs[4] |= 1; /* Fractional mode */ in adau17x1_set_dai_pll()
434 ret = regmap_raw_write(adau->regmap, ADAU17X1_PLL_CONTROL, in adau17x1_set_dai_pll()
435 adau->pll_regs, ARRAY_SIZE(adau->pll_regs)); in adau17x1_set_dai_pll()
439 adau->pll_freq = freq_out; in adau17x1_set_dai_pll()
447 struct adau *adau = snd_soc_codec_get_drvdata(dai->codec); in adau17x1_set_dai_sysclk() local
458 adau->sysclk = freq; in adau17x1_set_dai_sysclk()
460 if (adau->clk_src != clk_id) { in adau17x1_set_dai_sysclk()
470 adau->clk_src = clk_id; in adau17x1_set_dai_sysclk()
478 struct adau *adau = snd_soc_codec_get_drvdata(dai->codec); in adau17x1_set_dai_fmt() local
485 adau->master = true; in adau17x1_set_dai_fmt()
489 adau->master = false; in adau17x1_set_dai_fmt()
539 regmap_write(adau->regmap, ADAU17X1_SERIAL_PORT0, ctrl0); in adau17x1_set_dai_fmt()
540 regmap_write(adau->regmap, ADAU17X1_SERIAL_PORT1, ctrl1); in adau17x1_set_dai_fmt()
542 adau->dai_fmt = fmt & SND_SOC_DAIFMT_FORMAT_MASK; in adau17x1_set_dai_fmt()
550 struct adau *adau = snd_soc_codec_get_drvdata(dai->codec); in adau17x1_set_dai_tdm_slot() local
570 if (adau->type == ADAU1361) in adau17x1_set_dai_tdm_slot()
581 if (adau->type == ADAU1761) in adau17x1_set_dai_tdm_slot()
596 if (adau->type == ADAU1361) in adau17x1_set_dai_tdm_slot()
608 adau->tdm_slot[SNDRV_PCM_STREAM_CAPTURE] = 0; in adau17x1_set_dai_tdm_slot()
612 adau->tdm_slot[SNDRV_PCM_STREAM_CAPTURE] = 1; in adau17x1_set_dai_tdm_slot()
616 adau->tdm_slot[SNDRV_PCM_STREAM_CAPTURE] = 2; in adau17x1_set_dai_tdm_slot()
620 adau->tdm_slot[SNDRV_PCM_STREAM_CAPTURE] = 3; in adau17x1_set_dai_tdm_slot()
629 adau->tdm_slot[SNDRV_PCM_STREAM_PLAYBACK] = 0; in adau17x1_set_dai_tdm_slot()
633 adau->tdm_slot[SNDRV_PCM_STREAM_PLAYBACK] = 1; in adau17x1_set_dai_tdm_slot()
637 adau->tdm_slot[SNDRV_PCM_STREAM_PLAYBACK] = 2; in adau17x1_set_dai_tdm_slot()
641 adau->tdm_slot[SNDRV_PCM_STREAM_PLAYBACK] = 3; in adau17x1_set_dai_tdm_slot()
647 regmap_update_bits(adau->regmap, ADAU17X1_CONVERTER0, in adau17x1_set_dai_tdm_slot()
649 regmap_update_bits(adau->regmap, ADAU17X1_CONVERTER1, in adau17x1_set_dai_tdm_slot()
651 regmap_update_bits(adau->regmap, ADAU17X1_SERIAL_PORT0, in adau17x1_set_dai_tdm_slot()
653 regmap_update_bits(adau->regmap, ADAU17X1_SERIAL_PORT1, in adau17x1_set_dai_tdm_slot()
656 if (!adau17x1_has_dsp(adau)) in adau17x1_set_dai_tdm_slot()
659 if (adau->dsp_bypass[SNDRV_PCM_STREAM_PLAYBACK]) { in adau17x1_set_dai_tdm_slot()
660 regmap_write(adau->regmap, ADAU17X1_SERIAL_INPUT_ROUTE, in adau17x1_set_dai_tdm_slot()
661 (adau->tdm_slot[SNDRV_PCM_STREAM_PLAYBACK] * 2) + 1); in adau17x1_set_dai_tdm_slot()
664 if (adau->dsp_bypass[SNDRV_PCM_STREAM_CAPTURE]) { in adau17x1_set_dai_tdm_slot()
665 regmap_write(adau->regmap, ADAU17X1_SERIAL_OUTPUT_ROUTE, in adau17x1_set_dai_tdm_slot()
666 (adau->tdm_slot[SNDRV_PCM_STREAM_CAPTURE] * 2) + 1); in adau17x1_set_dai_tdm_slot()
675 struct adau *adau = snd_soc_codec_get_drvdata(dai->codec); in adau17x1_startup() local
677 if (adau->sigmadsp) in adau17x1_startup()
678 return sigmadsp_restrict_params(adau->sigmadsp, substream); in adau17x1_startup()
696 struct adau *adau = snd_soc_codec_get_drvdata(codec); in adau17x1_set_micbias_voltage() local
706 return regmap_write(adau->regmap, ADAU17X1_MICBIAS, micbias << 2); in adau17x1_set_micbias_voltage()
782 int adau17x1_setup_firmware(struct adau *adau, unsigned int rate) in adau17x1_setup_firmware() argument
787 ret = regmap_read(adau->regmap, ADAU17X1_DSP_SAMPLING_RATE, &dspsr); in adau17x1_setup_firmware()
791 regmap_write(adau->regmap, ADAU17X1_DSP_ENABLE, 1); in adau17x1_setup_firmware()
792 regmap_write(adau->regmap, ADAU17X1_DSP_SAMPLING_RATE, 0xf); in adau17x1_setup_firmware()
794 ret = sigmadsp_setup(adau->sigmadsp, rate); in adau17x1_setup_firmware()
796 regmap_write(adau->regmap, ADAU17X1_DSP_ENABLE, 0); in adau17x1_setup_firmware()
799 regmap_write(adau->regmap, ADAU17X1_DSP_SAMPLING_RATE, dspsr); in adau17x1_setup_firmware()
807 struct adau *adau = snd_soc_codec_get_drvdata(codec); in adau17x1_add_widgets() local
819 if (adau17x1_has_dsp(adau)) { in adau17x1_add_widgets()
826 if (!adau->sigmadsp) in adau17x1_add_widgets()
829 ret = sigmadsp_attach(adau->sigmadsp, &codec->component); in adau17x1_add_widgets()
843 struct adau *adau = snd_soc_codec_get_drvdata(codec); in adau17x1_add_routes() local
851 if (adau17x1_has_dsp(adau)) { in adau17x1_add_routes()
866 struct adau *adau = snd_soc_codec_get_drvdata(codec); in adau17x1_resume() local
868 if (adau->switch_mode) in adau17x1_resume()
869 adau->switch_mode(codec->dev); in adau17x1_resume()
871 regcache_sync(adau->regmap); in adau17x1_resume()
881 struct adau *adau; in adau17x1_probe() local
886 adau = devm_kzalloc(dev, sizeof(*adau), GFP_KERNEL); in adau17x1_probe()
887 if (!adau) in adau17x1_probe()
890 adau->regmap = regmap; in adau17x1_probe()
891 adau->switch_mode = switch_mode; in adau17x1_probe()
892 adau->type = type; in adau17x1_probe()
894 dev_set_drvdata(dev, adau); in adau17x1_probe()
897 adau->sigmadsp = devm_sigmadsp_init_regmap(dev, regmap, NULL, in adau17x1_probe()
899 if (IS_ERR(adau->sigmadsp)) { in adau17x1_probe()
901 PTR_ERR(adau->sigmadsp)); in adau17x1_probe()
902 adau->sigmadsp = NULL; in adau17x1_probe()