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