Lines Matching defs:adau1701
28 #include "adau1701.h"
102 #define ADAU1701_FIRMWARE "adau1701.bin"
108 struct adau1701 {
260 struct adau1701 *adau1701 = i2c_get_clientdata(client);
266 ret = regmap_read(adau1701->regmap, ADAU1701_DSPCTRL, &val);
292 return regmap_update_bits(adau1701->regmap, ADAU1701_DSPCTRL,
303 struct adau1701 *adau1701 = snd_soc_component_get_drvdata(component);
307 sigmadsp_reset(adau1701->sigmadsp);
309 if (clkdiv != ADAU1707_CLKDIV_UNSET && adau1701->gpio_pll_mode) {
329 gpiod_set_array_value_cansleep(adau1701->gpio_pll_mode->ndescs,
330 adau1701->gpio_pll_mode->desc, adau1701->gpio_pll_mode->info,
334 adau1701->pll_clkdiv = clkdiv;
336 if (adau1701->gpio_nreset) {
337 gpiod_set_value_cansleep(adau1701->gpio_nreset, 0);
340 gpiod_set_value_cansleep(adau1701->gpio_nreset, 1);
350 ret = sigmadsp_setup(adau1701->sigmadsp, rate);
357 regmap_write(adau1701->regmap, ADAU1701_DACSET, ADAU1701_DACSET_DACINIT);
358 regmap_write(adau1701->regmap, ADAU1701_DSPCTRL, ADAU1701_DSPCTRL_CR);
360 regcache_mark_dirty(adau1701->regmap);
361 regcache_sync(adau1701->regmap);
369 struct adau1701 *adau1701 = snd_soc_component_get_drvdata(component);
387 if (adau1701->dai_fmt == SND_SOC_DAIFMT_RIGHT_J) {
402 regmap_update_bits(adau1701->regmap, ADAU1701_SEROCTL, mask, val);
410 struct adau1701 *adau1701 = snd_soc_component_get_drvdata(component);
413 if (adau1701->dai_fmt != SND_SOC_DAIFMT_RIGHT_J)
430 regmap_update_bits(adau1701->regmap, ADAU1701_SERICTL,
440 struct adau1701 *adau1701 = snd_soc_component_get_drvdata(component);
441 unsigned int clkdiv = adau1701->sysclk / params_rate(params);
450 if (clkdiv != adau1701->pll_clkdiv) {
470 regmap_update_bits(adau1701->regmap, ADAU1701_DSPCTRL,
483 struct adau1701 *adau1701 = snd_soc_component_get_drvdata(component);
543 adau1701->dai_fmt = fmt & SND_SOC_DAIFMT_FORMAT_MASK;
545 regmap_write(adau1701->regmap, ADAU1701_SERICTL, serictl);
546 regmap_update_bits(adau1701->regmap, ADAU1701_SEROCTL,
556 struct adau1701 *adau1701 = snd_soc_component_get_drvdata(component);
565 regmap_update_bits(adau1701->regmap,
570 regmap_update_bits(adau1701->regmap,
582 struct adau1701 *adau1701 = snd_soc_component_get_drvdata(component);
590 regmap_update_bits(adau1701->regmap, ADAU1701_DSPCTRL, mask, val);
599 struct adau1701 *adau1701 = snd_soc_component_get_drvdata(component);
612 regmap_update_bits(adau1701->regmap, ADAU1701_OSCIPOW,
614 adau1701->sysclk = freq;
622 struct adau1701 *adau1701 = snd_soc_component_get_drvdata(dai->component);
624 return sigmadsp_restrict_params(adau1701->sigmadsp, substream);
642 .name = "adau1701",
663 { .compatible = "adi,adau1701", },
673 struct adau1701 *adau1701 = snd_soc_component_get_drvdata(component);
675 ret = sigmadsp_attach(adau1701->sigmadsp, component);
679 ret = regulator_bulk_enable(ARRAY_SIZE(adau1701->supplies),
680 adau1701->supplies);
692 adau1701->pll_clkdiv = ADAU1707_CLKDIV_UNSET;
695 ret = adau1701_reset(component, adau1701->pll_clkdiv, 0);
702 val |= adau1701->pin_config[i] << (i * 4);
704 regmap_write(adau1701->regmap, ADAU1701_PINCONF_0, val);
708 val |= adau1701->pin_config[i + 6] << (i * 4);
710 regmap_write(adau1701->regmap, ADAU1701_PINCONF_1, val);
716 regulator_bulk_disable(ARRAY_SIZE(adau1701->supplies), adau1701->supplies);
722 struct adau1701 *adau1701 = snd_soc_component_get_drvdata(component);
724 if (adau1701->gpio_nreset)
725 gpiod_set_value_cansleep(adau1701->gpio_nreset, 0);
727 regulator_bulk_disable(ARRAY_SIZE(adau1701->supplies), adau1701->supplies);
733 struct adau1701 *adau1701 = snd_soc_component_get_drvdata(component);
735 regulator_bulk_disable(ARRAY_SIZE(adau1701->supplies),
736 adau1701->supplies);
743 struct adau1701 *adau1701 = snd_soc_component_get_drvdata(component);
746 ret = regulator_bulk_enable(ARRAY_SIZE(adau1701->supplies),
747 adau1701->supplies);
753 return adau1701_reset(component, adau1701->pll_clkdiv, 0);
789 struct adau1701 *adau1701;
793 adau1701 = devm_kzalloc(dev, sizeof(*adau1701), GFP_KERNEL);
794 if (!adau1701)
798 adau1701->supplies[i].supply = supply_names[i];
800 ret = devm_regulator_bulk_get(dev, ARRAY_SIZE(adau1701->supplies),
801 adau1701->supplies);
807 ret = regulator_bulk_enable(ARRAY_SIZE(adau1701->supplies),
808 adau1701->supplies);
814 adau1701->client = client;
815 adau1701->regmap = devm_regmap_init(dev, NULL, client,
817 if (IS_ERR(adau1701->regmap)) {
818 ret = PTR_ERR(adau1701->regmap);
825 &adau1701->pll_clkdiv);
828 adau1701->pin_config,
829 ARRAY_SIZE(adau1701->pin_config));
832 adau1701->gpio_nreset = devm_gpiod_get_optional(dev, "reset", GPIOD_IN);
834 if (IS_ERR(adau1701->gpio_nreset)) {
835 ret = PTR_ERR(adau1701->gpio_nreset);
839 adau1701->gpio_pll_mode = devm_gpiod_get_array_optional(dev, "adi,pll-mode", GPIOD_OUT_LOW);
841 if (IS_ERR(adau1701->gpio_pll_mode)) {
842 ret = PTR_ERR(adau1701->gpio_pll_mode);
846 i2c_set_clientdata(client, adau1701);
848 adau1701->sigmadsp = devm_sigmadsp_init_i2c(client,
850 if (IS_ERR(adau1701->sigmadsp)) {
851 ret = PTR_ERR(adau1701->sigmadsp);
861 regulator_bulk_disable(ARRAY_SIZE(adau1701->supplies), adau1701->supplies);
868 { "adau1701", 0 },
876 .name = "adau1701",