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()
159 struct adau *adau = snd_soc_codec_get_drvdata(codec); in adau17x1_dsp_mux_enum_put() local
172 adau->dsp_bypass[stream] = false; in adau17x1_dsp_mux_enum_put()
175 val = (adau->tdm_slot[stream] * 2) + 1; in adau17x1_dsp_mux_enum_put()
176 adau->dsp_bypass[stream] = true; in adau17x1_dsp_mux_enum_put()
203 struct adau *adau = snd_soc_codec_get_drvdata(codec); in adau17x1_dsp_mux_enum_get() local
214 ret = regmap_read(adau->regmap, reg, &val); in adau17x1_dsp_mux_enum_get()
292 bool adau17x1_has_dsp(struct adau *adau) in adau17x1_has_dsp() argument
294 switch (adau->type) { in adau17x1_has_dsp()
309 struct adau *adau = snd_soc_codec_get_drvdata(codec); in adau17x1_hw_params() local
314 if (adau->clk_src == ADAU17X1_CLK_SRC_PLL) in adau17x1_hw_params()
315 freq = adau->pll_freq; in adau17x1_hw_params()
317 freq = adau->sysclk; in adau17x1_hw_params()
355 regmap_update_bits(adau->regmap, ADAU17X1_CONVERTER0, in adau17x1_hw_params()
357 if (adau17x1_has_dsp(adau)) { in adau17x1_hw_params()
358 regmap_write(adau->regmap, ADAU17X1_SERIAL_SAMPLING_RATE, div); in adau17x1_hw_params()
359 regmap_write(adau->regmap, ADAU17X1_DSP_SAMPLING_RATE, dsp_div); in adau17x1_hw_params()
362 if (adau->sigmadsp) { in adau17x1_hw_params()
363 ret = adau17x1_setup_firmware(adau, params_rate(params)); in adau17x1_hw_params()
368 if (adau->dai_fmt != SND_SOC_DAIFMT_RIGHT_J) in adau17x1_hw_params()
385 return regmap_update_bits(adau->regmap, ADAU17X1_SERIAL_PORT1, in adau17x1_hw_params()
393 struct adau *adau = snd_soc_codec_get_drvdata(codec); in adau17x1_set_dai_pll() local
426 adau->pll_regs[0] = m >> 8; in adau17x1_set_dai_pll()
427 adau->pll_regs[1] = m & 0xff; in adau17x1_set_dai_pll()
428 adau->pll_regs[2] = n >> 8; in adau17x1_set_dai_pll()
429 adau->pll_regs[3] = n & 0xff; in adau17x1_set_dai_pll()
430 adau->pll_regs[4] = (r << 3) | (div << 1); in adau17x1_set_dai_pll()
432 adau->pll_regs[4] |= 1; /* Fractional mode */ in adau17x1_set_dai_pll()
435 ret = regmap_raw_write(adau->regmap, ADAU17X1_PLL_CONTROL, in adau17x1_set_dai_pll()
436 adau->pll_regs, ARRAY_SIZE(adau->pll_regs)); in adau17x1_set_dai_pll()
440 adau->pll_freq = freq_out; in adau17x1_set_dai_pll()
449 struct adau *adau = snd_soc_codec_get_drvdata(dai->codec); in adau17x1_set_dai_sysclk() local
459 adau->sysclk = freq; in adau17x1_set_dai_sysclk()
461 if (adau->clk_src != clk_id) { in adau17x1_set_dai_sysclk()
471 adau->clk_src = clk_id; in adau17x1_set_dai_sysclk()
479 struct adau *adau = snd_soc_codec_get_drvdata(dai->codec); in adau17x1_set_dai_fmt() local
486 adau->master = true; in adau17x1_set_dai_fmt()
490 adau->master = false; in adau17x1_set_dai_fmt()
540 regmap_write(adau->regmap, ADAU17X1_SERIAL_PORT0, ctrl0); in adau17x1_set_dai_fmt()
541 regmap_write(adau->regmap, ADAU17X1_SERIAL_PORT1, ctrl1); in adau17x1_set_dai_fmt()
543 adau->dai_fmt = fmt & SND_SOC_DAIFMT_FORMAT_MASK; in adau17x1_set_dai_fmt()
551 struct adau *adau = snd_soc_codec_get_drvdata(dai->codec); in adau17x1_set_dai_tdm_slot() local
571 if (adau->type == ADAU1361) in adau17x1_set_dai_tdm_slot()
582 if (adau->type == ADAU1761) in adau17x1_set_dai_tdm_slot()
597 if (adau->type == ADAU1361) in adau17x1_set_dai_tdm_slot()
609 adau->tdm_slot[SNDRV_PCM_STREAM_CAPTURE] = 0; in adau17x1_set_dai_tdm_slot()
613 adau->tdm_slot[SNDRV_PCM_STREAM_CAPTURE] = 1; in adau17x1_set_dai_tdm_slot()
617 adau->tdm_slot[SNDRV_PCM_STREAM_CAPTURE] = 2; in adau17x1_set_dai_tdm_slot()
621 adau->tdm_slot[SNDRV_PCM_STREAM_CAPTURE] = 3; in adau17x1_set_dai_tdm_slot()
630 adau->tdm_slot[SNDRV_PCM_STREAM_PLAYBACK] = 0; in adau17x1_set_dai_tdm_slot()
634 adau->tdm_slot[SNDRV_PCM_STREAM_PLAYBACK] = 1; in adau17x1_set_dai_tdm_slot()
638 adau->tdm_slot[SNDRV_PCM_STREAM_PLAYBACK] = 2; in adau17x1_set_dai_tdm_slot()
642 adau->tdm_slot[SNDRV_PCM_STREAM_PLAYBACK] = 3; in adau17x1_set_dai_tdm_slot()
648 regmap_update_bits(adau->regmap, ADAU17X1_CONVERTER0, in adau17x1_set_dai_tdm_slot()
650 regmap_update_bits(adau->regmap, ADAU17X1_CONVERTER1, in adau17x1_set_dai_tdm_slot()
652 regmap_update_bits(adau->regmap, ADAU17X1_SERIAL_PORT0, in adau17x1_set_dai_tdm_slot()
654 regmap_update_bits(adau->regmap, ADAU17X1_SERIAL_PORT1, in adau17x1_set_dai_tdm_slot()
657 if (!adau17x1_has_dsp(adau)) in adau17x1_set_dai_tdm_slot()
660 if (adau->dsp_bypass[SNDRV_PCM_STREAM_PLAYBACK]) { in adau17x1_set_dai_tdm_slot()
661 regmap_write(adau->regmap, ADAU17X1_SERIAL_INPUT_ROUTE, in adau17x1_set_dai_tdm_slot()
662 (adau->tdm_slot[SNDRV_PCM_STREAM_PLAYBACK] * 2) + 1); in adau17x1_set_dai_tdm_slot()
665 if (adau->dsp_bypass[SNDRV_PCM_STREAM_CAPTURE]) { in adau17x1_set_dai_tdm_slot()
666 regmap_write(adau->regmap, ADAU17X1_SERIAL_OUTPUT_ROUTE, in adau17x1_set_dai_tdm_slot()
667 (adau->tdm_slot[SNDRV_PCM_STREAM_CAPTURE] * 2) + 1); in adau17x1_set_dai_tdm_slot()
676 struct adau *adau = snd_soc_codec_get_drvdata(dai->codec); in adau17x1_startup() local
678 if (adau->sigmadsp) in adau17x1_startup()
679 return sigmadsp_restrict_params(adau->sigmadsp, substream); in adau17x1_startup()
697 struct adau *adau = snd_soc_codec_get_drvdata(codec); in adau17x1_set_micbias_voltage() local
707 return regmap_write(adau->regmap, ADAU17X1_MICBIAS, micbias << 2); in adau17x1_set_micbias_voltage()
783 int adau17x1_setup_firmware(struct adau *adau, unsigned int rate) in adau17x1_setup_firmware() argument
788 ret = regmap_read(adau->regmap, ADAU17X1_DSP_SAMPLING_RATE, &dspsr); in adau17x1_setup_firmware()
792 regmap_write(adau->regmap, ADAU17X1_DSP_ENABLE, 1); in adau17x1_setup_firmware()
793 regmap_write(adau->regmap, ADAU17X1_DSP_SAMPLING_RATE, 0xf); in adau17x1_setup_firmware()
795 ret = sigmadsp_setup(adau->sigmadsp, rate); in adau17x1_setup_firmware()
797 regmap_write(adau->regmap, ADAU17X1_DSP_ENABLE, 0); in adau17x1_setup_firmware()
800 regmap_write(adau->regmap, ADAU17X1_DSP_SAMPLING_RATE, dspsr); in adau17x1_setup_firmware()
809 struct adau *adau = snd_soc_codec_get_drvdata(codec); in adau17x1_add_widgets() local
821 if (adau17x1_has_dsp(adau)) { in adau17x1_add_widgets()
827 if (!adau->sigmadsp) in adau17x1_add_widgets()
830 ret = sigmadsp_attach(adau->sigmadsp, &codec->component); in adau17x1_add_widgets()
845 struct adau *adau = snd_soc_codec_get_drvdata(codec); in adau17x1_add_routes() local
853 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()