Lines Matching full:cs42l51

3  * cs42l51.c
5 * ASoC Driver for Cirrus Logic CS42L51 codecs
29 #include "cs42l51.h"
258 struct cs42l51_private *cs42l51 = snd_soc_component_get_drvdata(comp);
262 return clk_prepare_enable(cs42l51->mclk_handle);
266 clk_disable_unprepare(cs42l51->mclk_handle);
311 struct cs42l51_private *cs42l51 = snd_soc_component_get_drvdata(component);
317 cs42l51->audio_mode = format & SND_SOC_DAIFMT_FORMAT_MASK;
326 cs42l51->func = MODE_MASTER;
329 cs42l51->func = MODE_SLAVE_AUTO;
387 struct cs42l51_private *cs42l51 = snd_soc_component_get_drvdata(component);
389 cs42l51->mclk = freq;
398 struct cs42l51_private *cs42l51 = snd_soc_component_get_drvdata(component);
407 switch (cs42l51->func) {
424 ratio = cs42l51->mclk / rate; /* MCLK/LRCK ratio */
444 switch (cs42l51->func) {
466 switch (cs42l51->audio_mode) {
545 .name = "cs42l51-hifi",
567 struct cs42l51_private *cs42l51;
569 cs42l51 = snd_soc_component_get_drvdata(component);
572 if (cs42l51->mclk_handle)
712 struct cs42l51_private *cs42l51;
719 cs42l51 = devm_kzalloc(dev, sizeof(struct cs42l51_private),
721 if (!cs42l51)
724 dev_set_drvdata(dev, cs42l51);
725 cs42l51->regmap = regmap;
727 cs42l51->mclk_handle = devm_clk_get_optional(dev, "MCLK");
728 if (IS_ERR(cs42l51->mclk_handle))
729 return PTR_ERR(cs42l51->mclk_handle);
731 for (i = 0; i < ARRAY_SIZE(cs42l51->supplies); i++)
732 cs42l51->supplies[i].supply = cs42l51_supply_names[i];
734 ret = devm_regulator_bulk_get(dev, ARRAY_SIZE(cs42l51->supplies),
735 cs42l51->supplies);
741 ret = regulator_bulk_enable(ARRAY_SIZE(cs42l51->supplies),
742 cs42l51->supplies);
748 cs42l51->reset_gpio = devm_gpiod_get_optional(dev, "reset",
750 if (IS_ERR(cs42l51->reset_gpio)) {
751 ret = PTR_ERR(cs42l51->reset_gpio);
755 if (cs42l51->reset_gpio) {
757 gpiod_set_value_cansleep(cs42l51->reset_gpio, 0);
761 /* Verify that we have a CS42L51 */
774 dev_info(dev, "Cirrus Logic CS42L51, Revision: %02X\n",
785 gpiod_set_value_cansleep(cs42l51->reset_gpio, 1);
786 regulator_bulk_disable(ARRAY_SIZE(cs42l51->supplies),
787 cs42l51->supplies);
794 struct cs42l51_private *cs42l51 = dev_get_drvdata(dev);
797 gpiod_set_value_cansleep(cs42l51->reset_gpio, 1);
799 ret = regulator_bulk_disable(ARRAY_SIZE(cs42l51->supplies),
800 cs42l51->supplies);
810 struct cs42l51_private *cs42l51 = dev_get_drvdata(dev);
812 regcache_cache_only(cs42l51->regmap, true);
813 regcache_mark_dirty(cs42l51->regmap);
821 struct cs42l51_private *cs42l51 = dev_get_drvdata(dev);
823 regcache_cache_only(cs42l51->regmap, false);
825 return regcache_sync(cs42l51->regmap);
830 MODULE_DESCRIPTION("Cirrus Logic CS42L51 ALSA SoC Codec Driver");