Lines Matching refs:cs42xx8

24 #include "cs42xx8.h"
207 struct cs42xx8_priv *cs42xx8 = snd_soc_component_get_drvdata(component);
209 cs42xx8->sysclk = freq;
218 struct cs42xx8_priv *cs42xx8 = snd_soc_component_get_drvdata(component);
240 regmap_update_bits(cs42xx8->regmap, CS42XX8_INTF,
247 cs42xx8->slave_mode = true;
250 cs42xx8->slave_mode = false;
265 struct cs42xx8_priv *cs42xx8 = snd_soc_component_get_drvdata(component);
274 cs42xx8->tx_channels = params_channels(params);
277 rate[!tx] = cs42xx8->rate[!tx];
279 ratio[tx] = rate[tx] > 0 ? cs42xx8->sysclk / rate[tx] : 0;
280 ratio[!tx] = rate[!tx] > 0 ? cs42xx8->sysclk / rate[!tx] : 0;
284 if (cs42xx8->slave_mode) {
308 cs42xx8->sysclk >= cs42xx8_ratios[i].min_mclk &&
309 cs42xx8->sysclk <= cs42xx8_ratios[i].max_mclk;
337 cs42xx8->rate[tx] = params_rate(params);
342 regmap_update_bits(cs42xx8->regmap, CS42XX8_FUNCMOD,
353 struct cs42xx8_priv *cs42xx8 = snd_soc_component_get_drvdata(component);
357 cs42xx8->rate[tx] = 0;
359 regmap_update_bits(cs42xx8->regmap, CS42XX8_FUNCMOD,
368 struct cs42xx8_priv *cs42xx8 = snd_soc_component_get_drvdata(component);
369 u8 dac_unmute = cs42xx8->tx_channels ?
370 ~((0x1 << cs42xx8->tx_channels) - 1) : 0;
372 regmap_write(cs42xx8->regmap, CS42XX8_DACMUTE,
468 struct cs42xx8_priv *cs42xx8 = snd_soc_component_get_drvdata(component);
471 switch (cs42xx8->drvdata->num_adcs) {
485 regmap_write(cs42xx8->regmap, CS42XX8_DACMUTE, CS42XX8_DACMUTE_ALL);
526 struct cs42xx8_priv *cs42xx8;
535 cs42xx8 = devm_kzalloc(dev, sizeof(*cs42xx8), GFP_KERNEL);
536 if (cs42xx8 == NULL)
539 cs42xx8->regmap = regmap;
540 dev_set_drvdata(dev, cs42xx8);
544 cs42xx8->drvdata = of_id->data;
546 if (!cs42xx8->drvdata) {
551 cs42xx8->gpiod_reset = devm_gpiod_get_optional(dev, "reset",
553 if (IS_ERR(cs42xx8->gpiod_reset))
554 return PTR_ERR(cs42xx8->gpiod_reset);
556 gpiod_set_value_cansleep(cs42xx8->gpiod_reset, 0);
558 cs42xx8->clk = devm_clk_get(dev, "mclk");
559 if (IS_ERR(cs42xx8->clk)) {
561 PTR_ERR(cs42xx8->clk));
565 cs42xx8->sysclk = clk_get_rate(cs42xx8->clk);
567 for (i = 0; i < ARRAY_SIZE(cs42xx8->supplies); i++)
568 cs42xx8->supplies[i].supply = cs42xx8_supply_names[i];
571 ARRAY_SIZE(cs42xx8->supplies), cs42xx8->supplies);
577 ret = regulator_bulk_enable(ARRAY_SIZE(cs42xx8->supplies),
578 cs42xx8->supplies);
588 ret = regmap_read(cs42xx8->regmap, CS42XX8_CHIPID, &val);
605 cs42xx8_dai.name = cs42xx8->drvdata->name;
608 cs42xx8_dai.capture.channels_max = cs42xx8->drvdata->num_adcs * 2;
616 regcache_cache_only(cs42xx8->regmap, true);
619 regulator_bulk_disable(ARRAY_SIZE(cs42xx8->supplies),
620 cs42xx8->supplies);
629 struct cs42xx8_priv *cs42xx8 = dev_get_drvdata(dev);
632 ret = clk_prepare_enable(cs42xx8->clk);
638 gpiod_set_value_cansleep(cs42xx8->gpiod_reset, 0);
640 ret = regulator_bulk_enable(ARRAY_SIZE(cs42xx8->supplies),
641 cs42xx8->supplies);
650 regcache_cache_only(cs42xx8->regmap, false);
651 regcache_mark_dirty(cs42xx8->regmap);
653 ret = regcache_sync(cs42xx8->regmap);
662 regulator_bulk_disable(ARRAY_SIZE(cs42xx8->supplies),
663 cs42xx8->supplies);
665 clk_disable_unprepare(cs42xx8->clk);
672 struct cs42xx8_priv *cs42xx8 = dev_get_drvdata(dev);
674 regcache_cache_only(cs42xx8->regmap, true);
676 regulator_bulk_disable(ARRAY_SIZE(cs42xx8->supplies),
677 cs42xx8->supplies);
679 gpiod_set_value_cansleep(cs42xx8->gpiod_reset, 1);
681 clk_disable_unprepare(cs42xx8->clk);