Lines Matching refs:ak4458

23 #include "ak4458.h"
191 struct ak4458_priv *ak4458 = snd_soc_component_get_drvdata(component);
193 ucontrol->value.enumerated.item[0] = ak4458->digfil;
202 struct ak4458_priv *ak4458 = snd_soc_component_get_drvdata(component);
209 ak4458->digfil = num;
214 ((ak4458->digfil & 0x02) << 4));
219 (ak4458->digfil & 0x01));
224 ((ak4458->digfil & 0x04) >> 2));
252 /* ak4458 dapm widgets */
334 struct ak4458_priv *ak4458 = snd_soc_component_get_drvdata(component);
335 int pcm_width = max(params_physical_width(params), ak4458->slot_width);
340 ak4458->fs = nfs1;
364 if (ak4458->drvdata->type == AK4497) {
389 if (ak4458->fmt == SND_SOC_DAIFMT_I2S)
395 switch (ak4458->fmt) {
431 struct ak4458_priv *ak4458 = snd_soc_component_get_drvdata(component);
450 ak4458->fmt = fmt & SND_SOC_DAIFMT_FORMAT_MASK;
461 ak4458->fmt == SND_SOC_DAIFMT_PDM ?
475 struct ak4458_priv *ak4458 = snd_soc_component_get_drvdata(component);
479 nfs = ak4458->fs;
489 if (ak4458->mute_gpiod)
490 gpiod_set_value_cansleep(ak4458->mute_gpiod, 1);
492 if (ak4458->mute_gpiod)
493 gpiod_set_value_cansleep(ak4458->mute_gpiod, 0);
505 struct ak4458_priv *ak4458 = snd_soc_component_get_drvdata(component);
508 ak4458->slots = slots;
509 ak4458->slot_width = slot_width;
575 .name = "ak4458-aif",
598 static void ak4458_reset(struct ak4458_priv *ak4458, bool active)
600 if (ak4458->reset_gpiod) {
601 gpiod_set_value_cansleep(ak4458->reset_gpiod, active);
608 struct ak4458_priv *ak4458 = snd_soc_component_get_drvdata(component);
612 if (ak4458->mute_gpiod)
613 gpiod_set_value_cansleep(ak4458->mute_gpiod, 1);
615 ak4458_reset(ak4458, false);
622 if (ak4458->drvdata->type == AK4497) {
624 0x4, (ak4458->dsd_path << 2));
634 struct ak4458_priv *ak4458 = snd_soc_component_get_drvdata(component);
636 ak4458->fs = 48000;
643 struct ak4458_priv *ak4458 = snd_soc_component_get_drvdata(component);
645 ak4458_reset(ak4458, true);
651 struct ak4458_priv *ak4458 = dev_get_drvdata(dev);
653 regcache_cache_only(ak4458->regmap, true);
655 ak4458_reset(ak4458, true);
657 if (ak4458->mute_gpiod)
658 gpiod_set_value_cansleep(ak4458->mute_gpiod, 0);
660 regulator_bulk_disable(ARRAY_SIZE(ak4458->supplies),
661 ak4458->supplies);
667 struct ak4458_priv *ak4458 = dev_get_drvdata(dev);
670 ret = regulator_bulk_enable(ARRAY_SIZE(ak4458->supplies),
671 ak4458->supplies);
673 dev_err(ak4458->dev, "Failed to enable supplies: %d\n", ret);
677 if (ak4458->mute_gpiod)
678 gpiod_set_value_cansleep(ak4458->mute_gpiod, 1);
680 ak4458_reset(ak4458, true);
681 ak4458_reset(ak4458, false);
683 regcache_cache_only(ak4458->regmap, false);
684 regcache_mark_dirty(ak4458->regmap);
686 return regcache_sync(ak4458->regmap);
750 struct ak4458_priv *ak4458;
753 ak4458 = devm_kzalloc(&i2c->dev, sizeof(*ak4458), GFP_KERNEL);
754 if (!ak4458)
757 ak4458->regmap = devm_regmap_init_i2c(i2c, &ak4458_regmap);
758 if (IS_ERR(ak4458->regmap))
759 return PTR_ERR(ak4458->regmap);
761 i2c_set_clientdata(i2c, ak4458);
762 ak4458->dev = &i2c->dev;
764 ak4458->drvdata = of_device_get_match_data(&i2c->dev);
766 ak4458->reset_gpiod = devm_gpiod_get_optional(ak4458->dev, "reset",
768 if (IS_ERR(ak4458->reset_gpiod))
769 return PTR_ERR(ak4458->reset_gpiod);
771 ak4458->mute_gpiod = devm_gpiod_get_optional(ak4458->dev, "mute",
773 if (IS_ERR(ak4458->mute_gpiod))
774 return PTR_ERR(ak4458->mute_gpiod);
777 of_property_read_u32(i2c->dev.of_node, "dsd-path", &ak4458->dsd_path);
779 for (i = 0; i < ARRAY_SIZE(ak4458->supplies); i++)
780 ak4458->supplies[i].supply = ak4458_supply_names[i];
782 ret = devm_regulator_bulk_get(ak4458->dev, ARRAY_SIZE(ak4458->supplies),
783 ak4458->supplies);
785 dev_err(ak4458->dev, "Failed to request supplies: %d\n", ret);
789 ret = devm_snd_soc_register_component(ak4458->dev,
790 ak4458->drvdata->comp_drv,
791 ak4458->drvdata->dai_drv, 1);
793 dev_err(ak4458->dev, "Failed to register CODEC: %d\n", ret);
798 regcache_cache_only(ak4458->regmap, true);
811 { .compatible = "asahi-kasei,ak4458", .data = &ak4458_drvdata},
819 .name = "ak4458",