Symbol: adau1372
sound/soc/codecs/adau1372.c
575
struct adau1372 *adau1372 = snd_soc_dai_get_drvdata(dai);
sound/soc/codecs/adau1372.c
581
adau1372->clock_provider = true;
sound/soc/codecs/adau1372.c
585
adau1372->clock_provider = false;
sound/soc/codecs/adau1372.c
629
regmap_update_bits(adau1372->regmap, ADAU1372_REG_SAI0, ADAU1372_SAI0_DELAY_MASK, sai0);
sound/soc/codecs/adau1372.c
630
regmap_update_bits(adau1372->regmap, ADAU1372_REG_SAI1,
sound/soc/codecs/adau1372.c
640
struct adau1372 *adau1372 = snd_soc_dai_get_drvdata(dai);
sound/soc/codecs/adau1372.c
656
slot_width = adau1372->slot_width;
sound/soc/codecs/adau1372.c
672
regmap_update_bits(adau1372->regmap, ADAU1372_REG_SAI0, ADAU1372_SAI0_FS_MASK, sai0);
sound/soc/codecs/adau1372.c
673
regmap_update_bits(adau1372->regmap, ADAU1372_REG_SAI1, ADAU1372_SAI1_BCLKRATE, sai1);
sound/soc/codecs/adau1372.c
681
struct adau1372 *adau1372 = snd_soc_dai_get_drvdata(dai);
sound/soc/codecs/adau1372.c
687
regmap_update_bits(adau1372->regmap, ADAU1372_REG_SAI0,
sound/soc/codecs/adau1372.c
689
adau1372->rate_constraints.mask = ADAU1372_RATE_MASK_TDM2;
sound/soc/codecs/adau1372.c
690
adau1372->slot_width = 0;
sound/soc/codecs/adau1372.c
713
adau1372->rate_constraints.mask = ADAU1372_RATE_MASK_TDM2;
sound/soc/codecs/adau1372.c
717
if (adau1372->clock_provider)
sound/soc/codecs/adau1372.c
718
adau1372->rate_constraints.mask = ADAU1372_RATE_MASK_TDM4_MASTER;
sound/soc/codecs/adau1372.c
720
adau1372->rate_constraints.mask = ADAU1372_RATE_MASK_TDM4;
sound/soc/codecs/adau1372.c
724
adau1372->rate_constraints.mask = ADAU1372_RATE_MASK_TDM8;
sound/soc/codecs/adau1372.c
730
adau1372->slot_width = width;
sound/soc/codecs/adau1372.c
732
regmap_update_bits(adau1372->regmap, ADAU1372_REG_SAI0, ADAU1372_SAI0_SAI_MASK, sai0);
sound/soc/codecs/adau1372.c
733
regmap_update_bits(adau1372->regmap, ADAU1372_REG_SAI1, ADAU1372_SAI1_BCLK_TDMC, sai1);
sound/soc/codecs/adau1372.c
736
regmap_write(adau1372->regmap, ADAU1372_REG_SOUT_CTRL, ~tx_mask);
sound/soc/codecs/adau1372.c
743
struct adau1372 *adau1372 = snd_soc_dai_get_drvdata(dai);
sound/soc/codecs/adau1372.c
751
return regmap_update_bits(adau1372->regmap, ADAU1372_REG_SAI1, ADAU1372_SAI1_TDM_TS, sai1);
sound/soc/codecs/adau1372.c
756
struct adau1372 *adau1372 = snd_soc_dai_get_drvdata(dai);
sound/soc/codecs/adau1372.c
759
&adau1372->rate_constraints);
sound/soc/codecs/adau1372.c
764
static int adau1372_enable_pll(struct adau1372 *adau1372)
sound/soc/codecs/adau1372.c
769
regmap_update_bits(adau1372->regmap, ADAU1372_REG_CLK_CTRL,
sound/soc/codecs/adau1372.c
774
ret = regmap_read(adau1372->regmap, ADAU1372_REG_PLL(5), &val);
sound/soc/codecs/adau1372.c
781
dev_err(adau1372->dev, "Failed to lock PLL\n");
sound/soc/codecs/adau1372.c
788
static int adau1372_set_power(struct adau1372 *adau1372, bool enable)
sound/soc/codecs/adau1372.c
790
if (adau1372->enabled == enable)
sound/soc/codecs/adau1372.c
797
ret = clk_prepare_enable(adau1372->mclk);
sound/soc/codecs/adau1372.c
800
if (adau1372->pd_gpio)
sound/soc/codecs/adau1372.c
801
gpiod_set_value(adau1372->pd_gpio, 0);
sound/soc/codecs/adau1372.c
803
if (adau1372->switch_mode)
sound/soc/codecs/adau1372.c
804
adau1372->switch_mode(adau1372->dev);
sound/soc/codecs/adau1372.c
806
regcache_cache_only(adau1372->regmap, false);
sound/soc/codecs/adau1372.c
812
if (adau1372->use_pll) {
sound/soc/codecs/adau1372.c
813
ret = adau1372_enable_pll(adau1372);
sound/soc/codecs/adau1372.c
815
if (!adau1372->pd_gpio)
sound/soc/codecs/adau1372.c
816
regmap_update_bits(adau1372->regmap,
sound/soc/codecs/adau1372.c
820
regcache_cache_only(adau1372->regmap, true);
sound/soc/codecs/adau1372.c
821
if (adau1372->pd_gpio)
sound/soc/codecs/adau1372.c
822
gpiod_set_value(adau1372->pd_gpio, 1);
sound/soc/codecs/adau1372.c
823
clk_disable_unprepare(adau1372->mclk);
sound/soc/codecs/adau1372.c
829
regmap_update_bits(adau1372->regmap, ADAU1372_REG_CLK_CTRL,
sound/soc/codecs/adau1372.c
831
regcache_sync(adau1372->regmap);
sound/soc/codecs/adau1372.c
833
if (adau1372->pd_gpio) {
sound/soc/codecs/adau1372.c
839
gpiod_set_value(adau1372->pd_gpio, 1);
sound/soc/codecs/adau1372.c
840
regcache_mark_dirty(adau1372->regmap);
sound/soc/codecs/adau1372.c
842
regmap_update_bits(adau1372->regmap, ADAU1372_REG_CLK_CTRL,
sound/soc/codecs/adau1372.c
845
clk_disable_unprepare(adau1372->mclk);
sound/soc/codecs/adau1372.c
846
regcache_cache_only(adau1372->regmap, true);
sound/soc/codecs/adau1372.c
849
adau1372->enabled = enable;
sound/soc/codecs/adau1372.c
857
struct adau1372 *adau1372 = snd_soc_component_get_drvdata(component);
sound/soc/codecs/adau1372.c
865
return adau1372_set_power(adau1372, true);
sound/soc/codecs/adau1372.c
867
return adau1372_set_power(adau1372, false);
sound/soc/codecs/adau1372.c
918
static int adau1372_setup_pll(struct adau1372 *adau1372, unsigned int rate)
sound/soc/codecs/adau1372.c
929
regmap_write(adau1372->regmap, ADAU1372_REG_PLL(i), regs[i]);
sound/soc/codecs/adau1372.c
937
struct adau1372 *adau1372;
sound/soc/codecs/adau1372.c
945
adau1372 = devm_kzalloc(dev, sizeof(*adau1372), GFP_KERNEL);
sound/soc/codecs/adau1372.c
946
if (!adau1372)
sound/soc/codecs/adau1372.c
949
adau1372->mclk = devm_clk_get(dev, "mclk");
sound/soc/codecs/adau1372.c
950
if (IS_ERR(adau1372->mclk))
sound/soc/codecs/adau1372.c
951
return PTR_ERR(adau1372->mclk);
sound/soc/codecs/adau1372.c
953
adau1372->pd_gpio = devm_gpiod_get_optional(dev, "powerdown", GPIOD_OUT_HIGH);
sound/soc/codecs/adau1372.c
954
if (IS_ERR(adau1372->pd_gpio))
sound/soc/codecs/adau1372.c
955
return PTR_ERR(adau1372->pd_gpio);
sound/soc/codecs/adau1372.c
957
adau1372->regmap = regmap;
sound/soc/codecs/adau1372.c
958
adau1372->switch_mode = switch_mode;
sound/soc/codecs/adau1372.c
959
adau1372->dev = dev;
sound/soc/codecs/adau1372.c
960
adau1372->rate_constraints.list = adau1372_rates;
sound/soc/codecs/adau1372.c
961
adau1372->rate_constraints.count = ARRAY_SIZE(adau1372_rates);
sound/soc/codecs/adau1372.c
962
adau1372->rate_constraints.mask = ADAU1372_RATE_MASK_TDM2;
sound/soc/codecs/adau1372.c
964
dev_set_drvdata(dev, adau1372);
sound/soc/codecs/adau1372.c
971
rate = clk_get_rate(adau1372->mclk);
sound/soc/codecs/adau1372.c
982
ret = adau1372_setup_pll(adau1372, rate);
sound/soc/codecs/adau1372.c
985
adau1372->use_pll = true;