Lines Matching +full:codec +full:- +full:aif1 +full:- +full:lrclk
1 // SPDX-License-Identifier: GPL-2.0
119 struct snd_soc_component *component = codec_dai->component; in max98373_dai_set_fmt()
124 dev_dbg(component->dev, "%s: fmt 0x%08X\n", __func__, fmt); in max98373_dai_set_fmt()
133 dev_err(component->dev, "DAI invert mode unsupported\n"); in max98373_dai_set_fmt()
134 return -EINVAL; in max98373_dai_set_fmt()
137 regmap_update_bits(max98373->regmap, in max98373_dai_set_fmt()
157 return -EINVAL; in max98373_dai_set_fmt()
160 regmap_update_bits(max98373->regmap, in max98373_dai_set_fmt()
168 /* BCLKs per LRCLK */
176 /* match BCLKs per LRCLK */ in max98373_get_bclk_sel()
188 /* BCLK/LRCLK ratio calculation */ in max98373_set_clock()
189 int blr_clk_ratio = params_channels(params) * max98373->ch_size; in max98373_set_clock()
192 if (!max98373->tdm_mode) { in max98373_set_clock()
196 dev_err(component->dev, "format unsupported %d\n", in max98373_set_clock()
198 return -EINVAL; in max98373_set_clock()
201 regmap_update_bits(max98373->regmap, in max98373_set_clock()
213 struct snd_soc_component *component = dai->component; in max98373_dai_hw_params()
230 dev_err(component->dev, "format unsupported %d\n", in max98373_dai_hw_params()
235 max98373->ch_size = snd_pcm_format_width(params_format(params)); in max98373_dai_hw_params()
237 regmap_update_bits(max98373->regmap, in max98373_dai_hw_params()
241 dev_dbg(component->dev, "format supported %d", in max98373_dai_hw_params()
280 dev_err(component->dev, "rate %d not supported\n", in max98373_dai_hw_params()
285 /* set DAI_SR to correct LRCLK frequency */ in max98373_dai_hw_params()
286 regmap_update_bits(max98373->regmap, in max98373_dai_hw_params()
290 regmap_update_bits(max98373->regmap, in max98373_dai_hw_params()
296 if (max98373->interleave_mode && in max98373_dai_hw_params()
298 regmap_update_bits(max98373->regmap, in max98373_dai_hw_params()
301 sampling_rate - 3); in max98373_dai_hw_params()
303 regmap_update_bits(max98373->regmap, in max98373_dai_hw_params()
310 return -EINVAL; in max98373_dai_hw_params()
317 struct snd_soc_component *component = dai->component; in max98373_dai_tdm_slot()
325 max98373->tdm_mode = false; in max98373_dai_tdm_slot()
327 max98373->tdm_mode = true; in max98373_dai_tdm_slot()
332 dev_err(component->dev, "BCLK %d not supported\n", in max98373_dai_tdm_slot()
334 return -EINVAL; in max98373_dai_tdm_slot()
337 regmap_update_bits(max98373->regmap, in max98373_dai_tdm_slot()
354 dev_err(component->dev, "format unsupported %d\n", in max98373_dai_tdm_slot()
356 return -EINVAL; in max98373_dai_tdm_slot()
359 regmap_update_bits(max98373->regmap, in max98373_dai_tdm_slot()
369 regmap_update_bits(max98373->regmap, in max98373_dai_tdm_slot()
373 regmap_write(max98373->regmap, in max98373_dai_tdm_slot()
382 /* Tx slot Hi-Z configuration */ in max98373_dai_tdm_slot()
383 regmap_write(max98373->regmap, in max98373_dai_tdm_slot()
386 regmap_write(max98373->regmap, in max98373_dai_tdm_slot()
453 .name = "max98373-aif1",
477 regcache_cache_only(max98373->regmap, true); in max98373_suspend()
478 regcache_mark_dirty(max98373->regmap); in max98373_suspend()
486 regcache_cache_only(max98373->regmap, false); in max98373_resume()
488 regcache_sync(max98373->regmap); in max98373_resume()
515 max98373 = devm_kzalloc(&i2c->dev, sizeof(*max98373), GFP_KERNEL); in max98373_i2c_probe()
518 ret = -ENOMEM; in max98373_i2c_probe()
524 if (device_property_read_bool(&i2c->dev, "maxim,interleave_mode")) in max98373_i2c_probe()
525 max98373->interleave_mode = true; in max98373_i2c_probe()
527 max98373->interleave_mode = false; in max98373_i2c_probe()
530 max98373->regmap = devm_regmap_init_i2c(i2c, &max98373_regmap); in max98373_i2c_probe()
531 if (IS_ERR(max98373->regmap)) { in max98373_i2c_probe()
532 ret = PTR_ERR(max98373->regmap); in max98373_i2c_probe()
533 dev_err(&i2c->dev, in max98373_i2c_probe()
539 max98373_slot_config(&i2c->dev, max98373); in max98373_i2c_probe()
542 if (gpio_is_valid(max98373->reset_gpio)) { in max98373_i2c_probe()
543 ret = devm_gpio_request(&i2c->dev, max98373->reset_gpio, in max98373_i2c_probe()
546 dev_err(&i2c->dev, "%s: Failed to request gpio %d\n", in max98373_i2c_probe()
547 __func__, max98373->reset_gpio); in max98373_i2c_probe()
548 return -EINVAL; in max98373_i2c_probe()
550 gpio_direction_output(max98373->reset_gpio, 0); in max98373_i2c_probe()
552 gpio_direction_output(max98373->reset_gpio, 1); in max98373_i2c_probe()
557 ret = regmap_read(max98373->regmap, in max98373_i2c_probe()
560 dev_err(&i2c->dev, in max98373_i2c_probe()
564 dev_info(&i2c->dev, "MAX98373 revisionID: 0x%02X\n", reg); in max98373_i2c_probe()
566 /* codec registration */ in max98373_i2c_probe()
567 ret = devm_snd_soc_register_component(&i2c->dev, &soc_codec_dev_max98373, in max98373_i2c_probe()
570 dev_err(&i2c->dev, "Failed to register codec: %d\n", ret); in max98373_i2c_probe()