• Home
  • Raw
  • Download

Lines Matching +full:codec +full:- +full:aif1 +full:- +full:bclk

1 // SPDX-License-Identifier: GPL-2.0
125 struct snd_soc_component *component = codec_dai->component; in max98373_dai_set_fmt()
130 dev_dbg(component->dev, "%s: fmt 0x%08X\n", __func__, fmt); in max98373_dai_set_fmt()
139 dev_err(component->dev, "DAI invert mode unsupported\n"); in max98373_dai_set_fmt()
140 return -EINVAL; in max98373_dai_set_fmt()
143 regmap_update_bits(max98373->regmap, in max98373_dai_set_fmt()
163 return -EINVAL; in max98373_dai_set_fmt()
166 regmap_update_bits(max98373->regmap, in max98373_dai_set_fmt()
179 static int max98373_get_bclk_sel(int bclk) in max98373_get_bclk_sel() argument
184 if (bclk_sel_table[i] == bclk) in max98373_get_bclk_sel()
194 /* BCLK/LRCLK ratio calculation */ in max98373_set_clock()
195 int blr_clk_ratio = params_channels(params) * max98373->ch_size; in max98373_set_clock()
198 if (!max98373->tdm_mode) { in max98373_set_clock()
199 /* BCLK configuration */ in max98373_set_clock()
202 dev_err(component->dev, "format unsupported %d\n", in max98373_set_clock()
204 return -EINVAL; in max98373_set_clock()
207 regmap_update_bits(max98373->regmap, in max98373_set_clock()
219 struct snd_soc_component *component = dai->component; in max98373_dai_hw_params()
236 dev_err(component->dev, "format unsupported %d\n", in max98373_dai_hw_params()
241 max98373->ch_size = snd_pcm_format_width(params_format(params)); in max98373_dai_hw_params()
243 regmap_update_bits(max98373->regmap, in max98373_dai_hw_params()
247 dev_dbg(component->dev, "format supported %d", in max98373_dai_hw_params()
286 dev_err(component->dev, "rate %d not supported\n", in max98373_dai_hw_params()
292 regmap_update_bits(max98373->regmap, in max98373_dai_hw_params()
296 regmap_update_bits(max98373->regmap, in max98373_dai_hw_params()
302 if (max98373->interleave_mode && in max98373_dai_hw_params()
304 regmap_update_bits(max98373->regmap, in max98373_dai_hw_params()
307 sampling_rate - 3); in max98373_dai_hw_params()
309 regmap_update_bits(max98373->regmap, in max98373_dai_hw_params()
316 return -EINVAL; in max98373_dai_hw_params()
323 struct snd_soc_component *component = dai->component; in max98373_dai_tdm_slot()
331 max98373->tdm_mode = false; in max98373_dai_tdm_slot()
333 max98373->tdm_mode = true; in max98373_dai_tdm_slot()
335 /* BCLK configuration */ in max98373_dai_tdm_slot()
338 dev_err(component->dev, "BCLK %d not supported\n", in max98373_dai_tdm_slot()
340 return -EINVAL; in max98373_dai_tdm_slot()
343 regmap_update_bits(max98373->regmap, in max98373_dai_tdm_slot()
360 dev_err(component->dev, "format unsupported %d\n", in max98373_dai_tdm_slot()
362 return -EINVAL; in max98373_dai_tdm_slot()
365 regmap_update_bits(max98373->regmap, in max98373_dai_tdm_slot()
375 regmap_update_bits(max98373->regmap, in max98373_dai_tdm_slot()
379 regmap_write(max98373->regmap, in max98373_dai_tdm_slot()
388 /* Tx slot Hi-Z configuration */ in max98373_dai_tdm_slot()
389 regmap_write(max98373->regmap, in max98373_dai_tdm_slot()
392 regmap_write(max98373->regmap, in max98373_dai_tdm_slot()
458 .name = "max98373-aif1",
484 for (i = 0; i < max98373->cache_num; i++) in max98373_suspend()
485 regmap_read(max98373->regmap, max98373->cache[i].reg, &max98373->cache[i].val); in max98373_suspend()
487 regcache_cache_only(max98373->regmap, true); in max98373_suspend()
488 regcache_mark_dirty(max98373->regmap); in max98373_suspend()
496 regcache_cache_only(max98373->regmap, false); in max98373_resume()
498 regcache_sync(max98373->regmap); in max98373_resume()
525 max98373 = devm_kzalloc(&i2c->dev, sizeof(*max98373), GFP_KERNEL); in max98373_i2c_probe()
528 ret = -ENOMEM; in max98373_i2c_probe()
534 if (device_property_read_bool(&i2c->dev, "maxim,interleave_mode")) in max98373_i2c_probe()
535 max98373->interleave_mode = true; in max98373_i2c_probe()
537 max98373->interleave_mode = false; in max98373_i2c_probe()
540 max98373->regmap = devm_regmap_init_i2c(i2c, &max98373_regmap); in max98373_i2c_probe()
541 if (IS_ERR(max98373->regmap)) { in max98373_i2c_probe()
542 ret = PTR_ERR(max98373->regmap); in max98373_i2c_probe()
543 dev_err(&i2c->dev, in max98373_i2c_probe()
548 max98373->cache_num = ARRAY_SIZE(max98373_i2c_cache_reg); in max98373_i2c_probe()
549 max98373->cache = devm_kcalloc(&i2c->dev, max98373->cache_num, in max98373_i2c_probe()
550 sizeof(*max98373->cache), in max98373_i2c_probe()
552 if (!max98373->cache) { in max98373_i2c_probe()
553 ret = -ENOMEM; in max98373_i2c_probe()
557 for (i = 0; i < max98373->cache_num; i++) in max98373_i2c_probe()
558 max98373->cache[i].reg = max98373_i2c_cache_reg[i]; in max98373_i2c_probe()
561 max98373_slot_config(&i2c->dev, max98373); in max98373_i2c_probe()
564 if (gpio_is_valid(max98373->reset_gpio)) { in max98373_i2c_probe()
565 ret = devm_gpio_request(&i2c->dev, max98373->reset_gpio, in max98373_i2c_probe()
568 dev_err(&i2c->dev, "%s: Failed to request gpio %d\n", in max98373_i2c_probe()
569 __func__, max98373->reset_gpio); in max98373_i2c_probe()
570 return -EINVAL; in max98373_i2c_probe()
572 gpio_direction_output(max98373->reset_gpio, 0); in max98373_i2c_probe()
574 gpio_direction_output(max98373->reset_gpio, 1); in max98373_i2c_probe()
579 ret = regmap_read(max98373->regmap, in max98373_i2c_probe()
582 dev_err(&i2c->dev, in max98373_i2c_probe()
586 dev_info(&i2c->dev, "MAX98373 revisionID: 0x%02X\n", reg); in max98373_i2c_probe()
588 /* codec registration */ in max98373_i2c_probe()
589 ret = devm_snd_soc_register_component(&i2c->dev, &soc_codec_dev_max98373, in max98373_i2c_probe()
592 dev_err(&i2c->dev, "Failed to register codec: %d\n", ret); in max98373_i2c_probe()