Lines Matching refs:ssm2518

16 #include <linux/platform_data/ssm2518.h>
24 #include "ssm2518.h"
110 struct ssm2518 {
311 static int ssm2518_lookup_mcs(struct ssm2518 *ssm2518,
328 if (sysclks[i] == ssm2518->sysclk)
339 struct ssm2518 *ssm2518 = snd_soc_component_get_drvdata(component);
345 mcs = ssm2518_lookup_mcs(ssm2518, rate);
362 if (ssm2518->right_j) {
377 ret = regmap_update_bits(ssm2518->regmap, SSM2518_REG_CLOCK,
382 ret = regmap_update_bits(ssm2518->regmap, SSM2518_REG_SAI_CTRL1,
387 return regmap_update_bits(ssm2518->regmap, SSM2518_REG_POWER1,
393 struct ssm2518 *ssm2518 = snd_soc_component_get_drvdata(dai->component);
401 return regmap_update_bits(ssm2518->regmap, SSM2518_REG_MUTE_CTRL,
407 struct ssm2518 *ssm2518 = snd_soc_component_get_drvdata(dai->component);
438 ssm2518->right_j = false;
449 ssm2518->right_j = true;
469 ret = regmap_write(ssm2518->regmap, SSM2518_REG_SAI_CTRL1, ctrl1);
473 return regmap_write(ssm2518->regmap, SSM2518_REG_SAI_CTRL2, ctrl2);
476 static int ssm2518_set_power(struct ssm2518 *ssm2518, bool enable)
481 ret = regmap_update_bits(ssm2518->regmap, SSM2518_REG_POWER1,
483 regcache_mark_dirty(ssm2518->regmap);
486 if (gpio_is_valid(ssm2518->enable_gpio))
487 gpio_set_value(ssm2518->enable_gpio, enable);
489 regcache_cache_only(ssm2518->regmap, !enable);
492 ret = regmap_update_bits(ssm2518->regmap, SSM2518_REG_POWER1,
494 regcache_sync(ssm2518->regmap);
503 struct ssm2518 *ssm2518 = snd_soc_component_get_drvdata(component);
513 ret = ssm2518_set_power(ssm2518, true);
516 ret = ssm2518_set_power(ssm2518, false);
526 struct ssm2518 *ssm2518 = snd_soc_component_get_drvdata(dai->component);
532 return regmap_update_bits(ssm2518->regmap,
593 ret = regmap_write(ssm2518->regmap, SSM2518_REG_CHAN_MAP,
599 ret = regmap_update_bits(ssm2518->regmap, SSM2518_REG_SAI_CTRL1,
604 return regmap_update_bits(ssm2518->regmap, SSM2518_REG_SAI_CTRL2,
611 struct ssm2518 *ssm2518 = snd_soc_component_get_drvdata(dai->component);
613 if (ssm2518->constraints)
615 SNDRV_PCM_HW_PARAM_RATE, ssm2518->constraints);
633 .name = "ssm2518-hifi",
647 struct ssm2518 *ssm2518 = snd_soc_component_get_drvdata(component);
669 ssm2518->constraints = NULL;
677 ssm2518->constraints = &ssm2518_constraints_2048000;
688 ssm2518->constraints = &ssm2518_constraints_2822000;
696 ssm2518->constraints = &ssm2518_constraints_3072000;
701 ssm2518->constraints = &ssm2518_constraints_12288000;
707 ssm2518->sysclk = freq;
709 return regmap_update_bits(ssm2518->regmap, SSM2518_REG_POWER1,
742 struct ssm2518 *ssm2518;
745 ssm2518 = devm_kzalloc(&i2c->dev, sizeof(*ssm2518), GFP_KERNEL);
746 if (ssm2518 == NULL)
750 ssm2518->enable_gpio = pdata->enable_gpio;
752 ssm2518->enable_gpio = of_get_gpio(i2c->dev.of_node, 0);
753 if (ssm2518->enable_gpio < 0 && ssm2518->enable_gpio != -ENOENT)
754 return ssm2518->enable_gpio;
756 ssm2518->enable_gpio = -1;
759 if (gpio_is_valid(ssm2518->enable_gpio)) {
760 ret = devm_gpio_request_one(&i2c->dev, ssm2518->enable_gpio,
766 i2c_set_clientdata(i2c, ssm2518);
768 ssm2518->regmap = devm_regmap_init_i2c(i2c, &ssm2518_regmap_config);
769 if (IS_ERR(ssm2518->regmap))
770 return PTR_ERR(ssm2518->regmap);
778 regcache_cache_bypass(ssm2518->regmap, true);
779 ret = regmap_write(ssm2518->regmap, SSM2518_REG_POWER1,
781 regcache_cache_bypass(ssm2518->regmap, false);
785 ret = regmap_update_bits(ssm2518->regmap, SSM2518_REG_POWER2,
790 ret = ssm2518_set_power(ssm2518, false);
801 { .compatible = "adi,ssm2518", },
808 { "ssm2518", 0 },
815 .name = "ssm2518",