Lines Matching +full:- +full:32000
1 // SPDX-License-Identifier: GPL-2.0
9 #include "mt8186-afe-common.h"
10 #include "mt8186-interconnection.h"
114 case 32000: in mtk_get_src_freq_mode()
129 dev_err(afe->dev, "%s(), rate %d invalid!!!\n", in mtk_get_src_freq_mode()
139 if (rate_in == 32000 && rate_out == 16000) { in get_iir_coeff()
145 } else if (rate_in == 44100 && rate_out == 32000) { in get_iir_coeff()
149 (rate_in == 96000 && rate_out == 32000)) { in get_iir_coeff()
152 } else if (rate_in == 48000 && rate_out == 32000) { in get_iir_coeff()
173 struct mt8186_afe_private *afe_priv = afe->platform_priv; in mtk_set_src_1_param()
174 struct mtk_afe_src_priv *src_priv = afe_priv->dai_priv[id]; in mtk_set_src_1_param()
177 int rate_in = src_priv->dl_rate; in mtk_set_src_1_param()
178 int rate_out = src_priv->ul_rate; in mtk_set_src_1_param()
183 regmap_update_bits(afe->regmap, AFE_GENERAL1_ASRC_2CH_CON3, in mtk_set_src_1_param()
188 regmap_update_bits(afe->regmap, AFE_GENERAL1_ASRC_2CH_CON4, in mtk_set_src_1_param()
192 regmap_write(afe->regmap, AFE_GENERAL1_ASRC_2CH_CON5, 0x3f5986); in mtk_set_src_1_param()
193 regmap_write(afe->regmap, AFE_GENERAL1_ASRC_2CH_CON5, 0x3f5987); in mtk_set_src_1_param()
194 regmap_write(afe->regmap, AFE_GENERAL1_ASRC_2CH_CON6, 0x1fbd); in mtk_set_src_1_param()
195 regmap_write(afe->regmap, AFE_GENERAL1_ASRC_2CH_CON2, 0); in mtk_set_src_1_param()
204 dev_err(afe->dev, "%s(), iir coeff error, num %d, coeff %p\n", in mtk_set_src_1_param()
206 return -EINVAL; in mtk_set_src_1_param()
210 regmap_update_bits(afe->regmap, AFE_GENERAL1_ASRC_2CH_CON0, in mtk_set_src_1_param()
214 regmap_update_bits(afe->regmap, AFE_GENERAL1_ASRC_2CH_CON13, in mtk_set_src_1_param()
218 regmap_write(afe->regmap, AFE_GENERAL1_ASRC_2CH_CON12, in mtk_set_src_1_param()
221 regmap_update_bits(afe->regmap, AFE_GENERAL1_ASRC_2CH_CON0, in mtk_set_src_1_param()
224 iir_stage = (iir_coeff_num / 6) - 1; in mtk_set_src_1_param()
225 regmap_update_bits(afe->regmap, AFE_GENERAL1_ASRC_2CH_CON2, in mtk_set_src_1_param()
229 regmap_update_bits(afe->regmap, AFE_GENERAL1_ASRC_2CH_CON2, in mtk_set_src_1_param()
234 regmap_update_bits(afe->regmap, AFE_GENERAL1_ASRC_2CH_CON2, in mtk_set_src_1_param()
243 struct mt8186_afe_private *afe_priv = afe->platform_priv; in mtk_set_src_2_param()
244 struct mtk_afe_src_priv *src_priv = afe_priv->dai_priv[id]; in mtk_set_src_2_param()
247 int rate_in = src_priv->dl_rate; in mtk_set_src_2_param()
248 int rate_out = src_priv->ul_rate; in mtk_set_src_2_param()
253 regmap_update_bits(afe->regmap, AFE_GENERAL2_ASRC_2CH_CON3, in mtk_set_src_2_param()
258 regmap_update_bits(afe->regmap, AFE_GENERAL2_ASRC_2CH_CON4, in mtk_set_src_2_param()
262 regmap_write(afe->regmap, AFE_GENERAL2_ASRC_2CH_CON5, 0x3f5986); in mtk_set_src_2_param()
263 regmap_write(afe->regmap, AFE_GENERAL2_ASRC_2CH_CON5, 0x3f5987); in mtk_set_src_2_param()
264 regmap_write(afe->regmap, AFE_GENERAL2_ASRC_2CH_CON6, 0x1fbd); in mtk_set_src_2_param()
265 regmap_write(afe->regmap, AFE_GENERAL2_ASRC_2CH_CON2, 0); in mtk_set_src_2_param()
274 dev_err(afe->dev, "%s(), iir coeff error, num %d, coeff %p\n", in mtk_set_src_2_param()
276 return -EINVAL; in mtk_set_src_2_param()
280 regmap_update_bits(afe->regmap, AFE_GENERAL2_ASRC_2CH_CON0, in mtk_set_src_2_param()
284 regmap_update_bits(afe->regmap, AFE_GENERAL2_ASRC_2CH_CON13, in mtk_set_src_2_param()
288 regmap_write(afe->regmap, AFE_GENERAL2_ASRC_2CH_CON12, in mtk_set_src_2_param()
291 regmap_update_bits(afe->regmap, AFE_GENERAL2_ASRC_2CH_CON0, in mtk_set_src_2_param()
294 iir_stage = (iir_coeff_num / 6) - 1; in mtk_set_src_2_param()
295 regmap_update_bits(afe->regmap, AFE_GENERAL2_ASRC_2CH_CON2, in mtk_set_src_2_param()
299 regmap_update_bits(afe->regmap, AFE_GENERAL2_ASRC_2CH_CON2, in mtk_set_src_2_param()
304 regmap_update_bits(afe->regmap, AFE_GENERAL2_ASRC_2CH_CON2, in mtk_set_src_2_param()
318 struct snd_soc_component *cmpnt = snd_soc_dapm_to_component(w->dapm); in mtk_hw_src_event()
320 struct mt8186_afe_private *afe_priv = afe->platform_priv; in mtk_hw_src_event()
330 src_priv = afe_priv->dai_priv[id]; in mtk_hw_src_event()
332 dev_dbg(afe->dev, in mtk_hw_src_event()
334 __func__, w->name, event, id, src_priv, in mtk_hw_src_event()
335 src_priv->dl_rate, src_priv->ul_rate); in mtk_hw_src_event()
348 regmap_update_bits(afe->regmap, reg, in mtk_hw_src_event()
352 regmap_update_bits(afe->regmap, reg, in mtk_hw_src_event()
356 regmap_update_bits(afe->regmap, reg, in mtk_hw_src_event()
364 regmap_update_bits(afe->regmap, reg, G_SRC_ASM_ON_MASK_SFT, 0); in mtk_hw_src_event()
366 regmap_update_bits(afe->regmap, reg, G_SRC_CHSET_ON_MASK_SFT, 0); in mtk_hw_src_event()
368 regmap_update_bits(afe->regmap, reg, G_SRC_CHSET_STR_CLR_MASK_SFT, 0); in mtk_hw_src_event()
447 /* inter-connections */
485 struct snd_soc_component *cmpnt = snd_soc_dapm_to_component(w->dapm); in mtk_afe_src_en_connect()
487 struct mt8186_afe_private *afe_priv = afe->platform_priv; in mtk_afe_src_en_connect()
491 src_priv = afe_priv->dai_priv[MT8186_DAI_SRC_1]; in mtk_afe_src_en_connect()
493 src_priv = afe_priv->dai_priv[MT8186_DAI_SRC_2]; in mtk_afe_src_en_connect()
495 dev_dbg(afe->dev, in mtk_afe_src_en_connect()
497 __func__, source->name, sink->name, in mtk_afe_src_en_connect()
498 src_priv->dl_rate, src_priv->ul_rate); in mtk_afe_src_en_connect()
500 return (src_priv->dl_rate > 0 && src_priv->ul_rate > 0) ? 1 : 0; in mtk_afe_src_en_connect()
552 struct mt8186_afe_private *afe_priv = afe->platform_priv; in mtk_dai_src_hw_params()
553 int id = dai->id; in mtk_dai_src_hw_params()
554 struct mtk_afe_src_priv *src_priv = afe_priv->dai_priv[id]; in mtk_dai_src_hw_params()
557 unsigned int rate_reg = mt8186_rate_transform(afe->dev, rate, id); in mtk_dai_src_hw_params()
559 dev_dbg(afe->dev, "%s(), id %d, stream %d, rate %d\n", in mtk_dai_src_hw_params()
560 __func__, id, substream->stream, rate); in mtk_dai_src_hw_params()
563 if (substream->stream == SNDRV_PCM_STREAM_PLAYBACK) { in mtk_dai_src_hw_params()
564 src_priv->dl_rate = rate; in mtk_dai_src_hw_params()
573 src_priv->ul_rate = rate; in mtk_dai_src_hw_params()
583 regmap_update_bits(afe->regmap, GENERAL_ASRC_MODE, mask << sft, rate_reg << sft); in mtk_dai_src_hw_params()
592 struct mt8186_afe_private *afe_priv = afe->platform_priv; in mtk_dai_src_hw_free()
593 int id = dai->id; in mtk_dai_src_hw_free()
594 struct mtk_afe_src_priv *src_priv = afe_priv->dai_priv[id]; in mtk_dai_src_hw_free()
596 dev_dbg(afe->dev, "%s(), id %d, stream %d\n", in mtk_dai_src_hw_free()
597 __func__, id, substream->stream); in mtk_dai_src_hw_free()
599 if (substream->stream == SNDRV_PCM_STREAM_PLAYBACK) in mtk_dai_src_hw_free()
600 src_priv->dl_rate = 0; in mtk_dai_src_hw_free()
602 src_priv->ul_rate = 0; in mtk_dai_src_hw_free()
669 dai = devm_kzalloc(afe->dev, sizeof(*dai), GFP_KERNEL); in mt8186_dai_src_register()
671 return -ENOMEM; in mt8186_dai_src_register()
673 list_add(&dai->list, &afe->sub_dais); in mt8186_dai_src_register()
675 dai->dai_drivers = mtk_dai_src_driver; in mt8186_dai_src_register()
676 dai->num_dai_drivers = ARRAY_SIZE(mtk_dai_src_driver); in mt8186_dai_src_register()
678 dai->dapm_widgets = mtk_dai_src_widgets; in mt8186_dai_src_register()
679 dai->num_dapm_widgets = ARRAY_SIZE(mtk_dai_src_widgets); in mt8186_dai_src_register()
680 dai->dapm_routes = mtk_dai_src_routes; in mt8186_dai_src_register()
681 dai->num_dapm_routes = ARRAY_SIZE(mtk_dai_src_routes); in mt8186_dai_src_register()