Lines Matching refs:ssm2518
111 struct ssm2518 { struct
312 static unsigned int ssm2518_lookup_mcs(struct ssm2518 *ssm2518, in ssm2518_lookup_mcs() argument
329 if (sysclks[i] == ssm2518->sysclk) in ssm2518_lookup_mcs()
340 struct ssm2518 *ssm2518 = snd_soc_codec_get_drvdata(codec); in ssm2518_hw_params() local
346 mcs = ssm2518_lookup_mcs(ssm2518, rate); in ssm2518_hw_params()
363 if (ssm2518->right_j) { in ssm2518_hw_params()
378 ret = regmap_update_bits(ssm2518->regmap, SSM2518_REG_CLOCK, in ssm2518_hw_params()
383 ret = regmap_update_bits(ssm2518->regmap, SSM2518_REG_SAI_CTRL1, in ssm2518_hw_params()
388 return regmap_update_bits(ssm2518->regmap, SSM2518_REG_POWER1, in ssm2518_hw_params()
394 struct ssm2518 *ssm2518 = snd_soc_codec_get_drvdata(dai->codec); in ssm2518_mute() local
402 return regmap_update_bits(ssm2518->regmap, SSM2518_REG_MUTE_CTRL, in ssm2518_mute()
408 struct ssm2518 *ssm2518 = snd_soc_codec_get_drvdata(dai->codec); in ssm2518_set_dai_fmt() local
439 ssm2518->right_j = false; in ssm2518_set_dai_fmt()
450 ssm2518->right_j = true; in ssm2518_set_dai_fmt()
470 ret = regmap_write(ssm2518->regmap, SSM2518_REG_SAI_CTRL1, ctrl1); in ssm2518_set_dai_fmt()
474 return regmap_write(ssm2518->regmap, SSM2518_REG_SAI_CTRL2, ctrl2); in ssm2518_set_dai_fmt()
477 static int ssm2518_set_power(struct ssm2518 *ssm2518, bool enable) in ssm2518_set_power() argument
482 ret = regmap_update_bits(ssm2518->regmap, SSM2518_REG_POWER1, in ssm2518_set_power()
484 regcache_mark_dirty(ssm2518->regmap); in ssm2518_set_power()
487 if (gpio_is_valid(ssm2518->enable_gpio)) in ssm2518_set_power()
488 gpio_set_value(ssm2518->enable_gpio, enable); in ssm2518_set_power()
490 regcache_cache_only(ssm2518->regmap, !enable); in ssm2518_set_power()
493 ret = regmap_update_bits(ssm2518->regmap, SSM2518_REG_POWER1, in ssm2518_set_power()
495 regcache_sync(ssm2518->regmap); in ssm2518_set_power()
504 struct ssm2518 *ssm2518 = snd_soc_codec_get_drvdata(codec); in ssm2518_set_bias_level() local
514 ret = ssm2518_set_power(ssm2518, true); in ssm2518_set_bias_level()
517 ret = ssm2518_set_power(ssm2518, false); in ssm2518_set_bias_level()
527 struct ssm2518 *ssm2518 = snd_soc_codec_get_drvdata(dai->codec); in ssm2518_set_tdm_slot() local
533 return regmap_update_bits(ssm2518->regmap, in ssm2518_set_tdm_slot()
594 ret = regmap_write(ssm2518->regmap, SSM2518_REG_CHAN_MAP, in ssm2518_set_tdm_slot()
600 ret = regmap_update_bits(ssm2518->regmap, SSM2518_REG_SAI_CTRL1, in ssm2518_set_tdm_slot()
605 return regmap_update_bits(ssm2518->regmap, SSM2518_REG_SAI_CTRL2, in ssm2518_set_tdm_slot()
612 struct ssm2518 *ssm2518 = snd_soc_codec_get_drvdata(dai->codec); in ssm2518_startup() local
614 if (ssm2518->constraints) in ssm2518_startup()
616 SNDRV_PCM_HW_PARAM_RATE, ssm2518->constraints); in ssm2518_startup()
647 struct ssm2518 *ssm2518 = snd_soc_codec_get_drvdata(codec); 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()
741 struct ssm2518 *ssm2518; in ssm2518_i2c_probe() local
744 ssm2518 = devm_kzalloc(&i2c->dev, sizeof(*ssm2518), GFP_KERNEL); in ssm2518_i2c_probe()
745 if (ssm2518 == NULL) in ssm2518_i2c_probe()
749 ssm2518->enable_gpio = pdata->enable_gpio; in ssm2518_i2c_probe()
751 ssm2518->enable_gpio = of_get_gpio(i2c->dev.of_node, 0); in ssm2518_i2c_probe()
752 if (ssm2518->enable_gpio < 0 && ssm2518->enable_gpio != -ENOENT) in ssm2518_i2c_probe()
753 return ssm2518->enable_gpio; in ssm2518_i2c_probe()
755 ssm2518->enable_gpio = -1; in ssm2518_i2c_probe()
758 if (gpio_is_valid(ssm2518->enable_gpio)) { in ssm2518_i2c_probe()
759 ret = devm_gpio_request_one(&i2c->dev, ssm2518->enable_gpio, in ssm2518_i2c_probe()
765 i2c_set_clientdata(i2c, ssm2518); in ssm2518_i2c_probe()
767 ssm2518->regmap = devm_regmap_init_i2c(i2c, &ssm2518_regmap_config); in ssm2518_i2c_probe()
768 if (IS_ERR(ssm2518->regmap)) in ssm2518_i2c_probe()
769 return PTR_ERR(ssm2518->regmap); in ssm2518_i2c_probe()
777 regcache_cache_bypass(ssm2518->regmap, true); in ssm2518_i2c_probe()
778 ret = regmap_write(ssm2518->regmap, SSM2518_REG_POWER1, in ssm2518_i2c_probe()
780 regcache_cache_bypass(ssm2518->regmap, false); in ssm2518_i2c_probe()
784 ret = regmap_update_bits(ssm2518->regmap, SSM2518_REG_POWER2, in ssm2518_i2c_probe()
789 ret = ssm2518_set_power(ssm2518, false); in ssm2518_i2c_probe()