• Home
  • Raw
  • Download

Lines Matching +full:pdm +full:- +full:fmt

2  * max98927.c  --  MAX98927 ALSA Soc Audio driver
4 * Copyright (C) 2016-2017 Maxim Integrated Products
143 static int max98927_dai_set_fmt(struct snd_soc_dai *codec_dai, unsigned int fmt) in max98927_dai_set_fmt() argument
145 struct snd_soc_component *component = codec_dai->component; in max98927_dai_set_fmt()
152 dev_dbg(component->dev, "%s: fmt 0x%08X\n", __func__, fmt); in max98927_dai_set_fmt()
154 switch (fmt & SND_SOC_DAIFMT_MASTER_MASK) { in max98927_dai_set_fmt()
159 max98927->master = true; in max98927_dai_set_fmt()
163 dev_err(component->dev, "DAI clock mode unsupported\n"); in max98927_dai_set_fmt()
164 return -EINVAL; in max98927_dai_set_fmt()
167 regmap_update_bits(max98927->regmap, in max98927_dai_set_fmt()
172 switch (fmt & SND_SOC_DAIFMT_INV_MASK) { in max98927_dai_set_fmt()
179 dev_err(component->dev, "DAI invert mode unsupported\n"); in max98927_dai_set_fmt()
180 return -EINVAL; in max98927_dai_set_fmt()
183 regmap_update_bits(max98927->regmap, in max98927_dai_set_fmt()
189 switch (fmt & SND_SOC_DAIFMT_FORMAT_MASK) { in max98927_dai_set_fmt()
206 return -EINVAL; in max98927_dai_set_fmt()
208 max98927->iface = fmt & SND_SOC_DAIFMT_FORMAT_MASK; in max98927_dai_set_fmt()
212 regmap_update_bits(max98927->regmap, in max98927_dai_set_fmt()
217 regmap_update_bits(max98927->regmap, in max98927_dai_set_fmt()
222 regmap_update_bits(max98927->regmap, in max98927_dai_set_fmt()
226 regmap_update_bits(max98927->regmap, in max98927_dai_set_fmt()
230 /* pdm channel configuration */ in max98927_dai_set_fmt()
231 regmap_update_bits(max98927->regmap, in max98927_dai_set_fmt()
235 regmap_update_bits(max98927->regmap, in max98927_dai_set_fmt()
239 regmap_update_bits(max98927->regmap, in max98927_dai_set_fmt()
271 struct snd_soc_component *component = max98927->component; in max98927_set_clock()
273 int blr_clk_ratio = params_channels(params) * max98927->ch_size; in max98927_set_clock()
276 if (max98927->master) { in max98927_set_clock()
280 if (rate_table[i] >= max98927->sysclk) in max98927_set_clock()
284 dev_err(component->dev, "failed to find proper clock rate.\n"); in max98927_set_clock()
285 return -EINVAL; in max98927_set_clock()
287 regmap_update_bits(max98927->regmap, in max98927_set_clock()
293 if (!max98927->tdm_mode) { in max98927_set_clock()
297 dev_err(component->dev, "format unsupported %d\n", in max98927_set_clock()
299 return -EINVAL; in max98927_set_clock()
302 regmap_update_bits(max98927->regmap, in max98927_set_clock()
314 struct snd_soc_component *component = dai->component; in max98927_dai_hw_params()
331 dev_err(component->dev, "format unsupported %d\n", in max98927_dai_hw_params()
336 max98927->ch_size = snd_pcm_format_width(params_format(params)); in max98927_dai_hw_params()
338 regmap_update_bits(max98927->regmap, in max98927_dai_hw_params()
342 dev_dbg(component->dev, "format supported %d", in max98927_dai_hw_params()
375 dev_err(component->dev, "rate %d not supported\n", in max98927_dai_hw_params()
380 regmap_update_bits(max98927->regmap, in max98927_dai_hw_params()
384 regmap_update_bits(max98927->regmap, in max98927_dai_hw_params()
390 if (max98927->interleave_mode && in max98927_dai_hw_params()
392 regmap_update_bits(max98927->regmap, in max98927_dai_hw_params()
395 sampling_rate - 3); in max98927_dai_hw_params()
397 regmap_update_bits(max98927->regmap, in max98927_dai_hw_params()
403 return -EINVAL; in max98927_dai_hw_params()
410 struct snd_soc_component *component = dai->component; in max98927_dai_tdm_slot()
415 max98927->tdm_mode = true; in max98927_dai_tdm_slot()
420 dev_err(component->dev, "BCLK %d not supported\n", in max98927_dai_tdm_slot()
422 return -EINVAL; in max98927_dai_tdm_slot()
425 regmap_update_bits(max98927->regmap, in max98927_dai_tdm_slot()
442 dev_err(component->dev, "format unsupported %d\n", in max98927_dai_tdm_slot()
444 return -EINVAL; in max98927_dai_tdm_slot()
447 regmap_update_bits(max98927->regmap, in max98927_dai_tdm_slot()
452 regmap_write(max98927->regmap, in max98927_dai_tdm_slot()
455 regmap_write(max98927->regmap, in max98927_dai_tdm_slot()
460 regmap_write(max98927->regmap, in max98927_dai_tdm_slot()
463 regmap_write(max98927->regmap, in max98927_dai_tdm_slot()
467 /* Tx slot Hi-Z configuration */ in max98927_dai_tdm_slot()
468 regmap_write(max98927->regmap, in max98927_dai_tdm_slot()
471 regmap_write(max98927->regmap, in max98927_dai_tdm_slot()
486 struct snd_soc_component *component = dai->component; in max98927_dai_set_sysclk()
489 max98927->sysclk = freq; in max98927_dai_set_sysclk()
503 struct snd_soc_component *component = snd_soc_dapm_to_component(w->dapm); in max98927_dac_event()
508 max98927->tdm_mode = 0; in max98927_dac_event()
511 regmap_update_bits(max98927->regmap, in max98927_dac_event()
514 regmap_update_bits(max98927->regmap, in max98927_dac_event()
519 regmap_update_bits(max98927->regmap, in max98927_dac_event()
522 regmap_update_bits(max98927->regmap, in max98927_dac_event()
564 static DECLARE_TLV_DB_SCALE(max98927_digital_tlv, -1600, 25, 0);
632 0, (1<<MAX98927_AMP_VOL_WIDTH)-1, 0,
661 .name = "max98927-aif1",
684 max98927->component = component; in max98927_probe()
687 regmap_write(max98927->regmap, in max98927_probe()
691 regmap_write(max98927->regmap, in max98927_probe()
694 regmap_write(max98927->regmap, in max98927_probe()
697 regmap_write(max98927->regmap, in max98927_probe()
700 regmap_write(max98927->regmap, in max98927_probe()
704 regmap_write(max98927->regmap, in max98927_probe()
707 regmap_write(max98927->regmap, in max98927_probe()
711 regmap_write(max98927->regmap, in max98927_probe()
715 regmap_write(max98927->regmap, in max98927_probe()
719 regmap_write(max98927->regmap, in max98927_probe()
722 regmap_write(max98927->regmap, in max98927_probe()
726 regmap_write(max98927->regmap, in max98927_probe()
729 regmap_write(max98927->regmap, in max98927_probe()
732 regmap_write(max98927->regmap, in max98927_probe()
736 regmap_write(max98927->regmap, in max98927_probe()
740 regmap_write(max98927->regmap, in max98927_probe()
743 regmap_write(max98927->regmap, in max98927_probe()
746 regmap_write(max98927->regmap, in max98927_probe()
751 regmap_write(max98927->regmap, in max98927_probe()
753 (max98927->i_l_slot<<MAX98927_PCM_TX_CH_SRC_A_I_SHIFT| in max98927_probe()
754 max98927->v_l_slot)&0xFF); in max98927_probe()
756 if (max98927->v_l_slot < 8) { in max98927_probe()
757 regmap_update_bits(max98927->regmap, in max98927_probe()
759 1 << max98927->v_l_slot, 0); in max98927_probe()
760 regmap_update_bits(max98927->regmap, in max98927_probe()
762 1 << max98927->v_l_slot, in max98927_probe()
763 1 << max98927->v_l_slot); in max98927_probe()
765 regmap_update_bits(max98927->regmap, in max98927_probe()
767 1 << (max98927->v_l_slot - 8), 0); in max98927_probe()
768 regmap_update_bits(max98927->regmap, in max98927_probe()
770 1 << (max98927->v_l_slot - 8), in max98927_probe()
771 1 << (max98927->v_l_slot - 8)); in max98927_probe()
774 if (max98927->i_l_slot < 8) { in max98927_probe()
775 regmap_update_bits(max98927->regmap, in max98927_probe()
777 1 << max98927->i_l_slot, 0); in max98927_probe()
778 regmap_update_bits(max98927->regmap, in max98927_probe()
780 1 << max98927->i_l_slot, in max98927_probe()
781 1 << max98927->i_l_slot); in max98927_probe()
783 regmap_update_bits(max98927->regmap, in max98927_probe()
785 1 << (max98927->i_l_slot - 8), 0); in max98927_probe()
786 regmap_update_bits(max98927->regmap, in max98927_probe()
788 1 << (max98927->i_l_slot - 8), in max98927_probe()
789 1 << (max98927->i_l_slot - 8)); in max98927_probe()
793 if (max98927->interleave_mode) in max98927_probe()
794 regmap_update_bits(max98927->regmap, in max98927_probe()
806 regcache_cache_only(max98927->regmap, true); in max98927_suspend()
807 regcache_mark_dirty(max98927->regmap); in max98927_suspend()
814 regmap_write(max98927->regmap, in max98927_resume()
816 regcache_cache_only(max98927->regmap, false); in max98927_resume()
817 regcache_sync(max98927->regmap); in max98927_resume()
855 struct device *dev = &i2c->dev; in max98927_slot_config()
857 if (!device_property_read_u32(dev, "vmon-slot-no", &value)) in max98927_slot_config()
858 max98927->v_l_slot = value & 0xF; in max98927_slot_config()
860 max98927->v_l_slot = 0; in max98927_slot_config()
862 if (!device_property_read_u32(dev, "imon-slot-no", &value)) in max98927_slot_config()
863 max98927->i_l_slot = value & 0xF; in max98927_slot_config()
865 max98927->i_l_slot = 1; in max98927_slot_config()
876 max98927 = devm_kzalloc(&i2c->dev, in max98927_i2c_probe()
880 ret = -ENOMEM; in max98927_i2c_probe()
886 if (!of_property_read_u32(i2c->dev.of_node, in max98927_i2c_probe()
889 max98927->interleave_mode = 1; in max98927_i2c_probe()
891 max98927->interleave_mode = 0; in max98927_i2c_probe()
893 max98927->interleave_mode = 0; in max98927_i2c_probe()
896 max98927->regmap in max98927_i2c_probe()
898 if (IS_ERR(max98927->regmap)) { in max98927_i2c_probe()
899 ret = PTR_ERR(max98927->regmap); in max98927_i2c_probe()
900 dev_err(&i2c->dev, in max98927_i2c_probe()
906 ret = regmap_read(max98927->regmap, in max98927_i2c_probe()
909 dev_err(&i2c->dev, in max98927_i2c_probe()
913 dev_info(&i2c->dev, "MAX98927 revisionID: 0x%02X\n", reg); in max98927_i2c_probe()
919 ret = devm_snd_soc_register_component(&i2c->dev, in max98927_i2c_probe()
923 dev_err(&i2c->dev, "Failed to register component: %d\n", ret); in max98927_i2c_probe()