Lines Matching defs:ssm2518

23 #include "ssm2518.h"
109 struct ssm2518 {
310 static int ssm2518_lookup_mcs(struct ssm2518 *ssm2518,
327 if (sysclks[i] == ssm2518->sysclk)
338 struct ssm2518 *ssm2518 = snd_soc_component_get_drvdata(component);
344 mcs = ssm2518_lookup_mcs(ssm2518, rate);
361 if (ssm2518->right_j) {
376 ret = regmap_update_bits(ssm2518->regmap, SSM2518_REG_CLOCK,
381 ret = regmap_update_bits(ssm2518->regmap, SSM2518_REG_SAI_CTRL1,
386 return regmap_update_bits(ssm2518->regmap, SSM2518_REG_POWER1,
392 struct ssm2518 *ssm2518 = snd_soc_component_get_drvdata(dai->component);
400 return regmap_update_bits(ssm2518->regmap, SSM2518_REG_MUTE_CTRL,
406 struct ssm2518 *ssm2518 = snd_soc_component_get_drvdata(dai->component);
437 ssm2518->right_j = false;
448 ssm2518->right_j = true;
468 ret = regmap_write(ssm2518->regmap, SSM2518_REG_SAI_CTRL1, ctrl1);
472 return regmap_write(ssm2518->regmap, SSM2518_REG_SAI_CTRL2, ctrl2);
475 static int ssm2518_set_power(struct ssm2518 *ssm2518, bool enable)
480 ret = regmap_update_bits(ssm2518->regmap, SSM2518_REG_POWER1,
482 regcache_mark_dirty(ssm2518->regmap);
485 if (ssm2518->enable_gpio)
486 gpiod_set_value_cansleep(ssm2518->enable_gpio, enable);
488 regcache_cache_only(ssm2518->regmap, !enable);
491 ret = regmap_update_bits(ssm2518->regmap, SSM2518_REG_POWER1,
493 regcache_sync(ssm2518->regmap);
502 struct ssm2518 *ssm2518 = snd_soc_component_get_drvdata(component);
512 ret = ssm2518_set_power(ssm2518, true);
515 ret = ssm2518_set_power(ssm2518, false);
525 struct ssm2518 *ssm2518 = snd_soc_component_get_drvdata(dai->component);
531 return regmap_update_bits(ssm2518->regmap,
592 ret = regmap_write(ssm2518->regmap, SSM2518_REG_CHAN_MAP,
598 ret = regmap_update_bits(ssm2518->regmap, SSM2518_REG_SAI_CTRL1,
603 return regmap_update_bits(ssm2518->regmap, SSM2518_REG_SAI_CTRL2,
610 struct ssm2518 *ssm2518 = snd_soc_component_get_drvdata(dai->component);
612 if (ssm2518->constraints)
614 SNDRV_PCM_HW_PARAM_RATE, ssm2518->constraints);
632 .name = "ssm2518-hifi",
646 struct ssm2518 *ssm2518 = snd_soc_component_get_drvdata(component);
668 ssm2518->constraints = NULL;
676 ssm2518->constraints = &ssm2518_constraints_2048000;
687 ssm2518->constraints = &ssm2518_constraints_2822000;
695 ssm2518->constraints = &ssm2518_constraints_3072000;
700 ssm2518->constraints = &ssm2518_constraints_12288000;
706 ssm2518->sysclk = freq;
708 return regmap_update_bits(ssm2518->regmap, SSM2518_REG_POWER1,
738 struct ssm2518 *ssm2518;
741 ssm2518 = devm_kzalloc(&i2c->dev, sizeof(*ssm2518), GFP_KERNEL);
742 if (ssm2518 == NULL)
746 ssm2518->enable_gpio = devm_gpiod_get_optional(&i2c->dev, NULL,
748 ret = PTR_ERR_OR_ZERO(ssm2518->enable_gpio);
752 gpiod_set_consumer_name(ssm2518->enable_gpio, "SSM2518 nSD");
754 i2c_set_clientdata(i2c, ssm2518);
756 ssm2518->regmap = devm_regmap_init_i2c(i2c, &ssm2518_regmap_config);
757 if (IS_ERR(ssm2518->regmap))
758 return PTR_ERR(ssm2518->regmap);
766 regcache_cache_bypass(ssm2518->regmap, true);
767 ret = regmap_write(ssm2518->regmap, SSM2518_REG_POWER1,
769 regcache_cache_bypass(ssm2518->regmap, false);
773 ret = regmap_update_bits(ssm2518->regmap, SSM2518_REG_POWER2,
778 ret = ssm2518_set_power(ssm2518, false);
789 { .compatible = "adi,ssm2518", },
796 { "ssm2518" },
803 .name = "ssm2518",