Lines Matching defs:afe

15 #include "mt8188-afe-clk.h"
16 #include "mt8188-afe-common.h"
109 *get_dmic_hw_gain_ctrl_reg(struct mtk_base_afe *afe, int id)
112 dev_dbg(afe->dev, "%s invalid id\n", __func__);
119 static void mtk_dai_dmic_hw_gain_bypass(struct mtk_base_afe *afe,
125 reg = get_dmic_hw_gain_ctrl_reg(afe, id);
147 regmap_set_bits(afe->regmap, reg->bypass, msk);
149 regmap_clear_bits(afe->regmap, reg->bypass, msk);
152 static void mtk_dai_dmic_hw_gain_on(struct mtk_base_afe *afe, unsigned int id,
155 const struct mtk_dai_dmic_hw_gain_ctrl_reg *reg = get_dmic_hw_gain_ctrl_reg(afe, id);
161 regmap_set_bits(afe->regmap, reg->con0, DMIC_GAIN_CON0_GAIN_ON);
163 regmap_clear_bits(afe->regmap, reg->con0, DMIC_GAIN_CON0_GAIN_ON);
189 static int mtk_dai_dmic_load_iir_coeff_table(struct mtk_base_afe *afe)
191 return regmap_multi_reg_write(afe->regmap,
198 struct mtk_base_afe *afe = snd_soc_dai_get_drvdata(dai);
216 return regmap_update_bits(afe->regmap, PWR2_TOP_CON0, mask, val);
235 static void mtk_dai_dmic_hw_gain_enable(struct mtk_base_afe *afe,
238 struct mt8188_afe_private *afe_priv = afe->platform_priv;
246 mtk_dai_dmic_hw_gain_bypass(afe, i, false);
247 mtk_dai_dmic_hw_gain_on(afe, i, true);
249 mtk_dai_dmic_hw_gain_on(afe, i, false);
250 mtk_dai_dmic_hw_gain_bypass(afe, i, true);
260 struct mtk_base_afe *afe = snd_soc_component_get_drvdata(cmpnt);
261 struct mt8188_afe_private *afe_priv = afe->platform_priv;
265 dev_dbg(afe->dev, "%s(), name %s, event 0x%x\n",
273 mtk_dai_dmic_hw_gain_enable(afe, channels, true);
276 mtk_dai_dmic_hw_gain_enable(afe, channels, false);
290 struct mtk_base_afe *afe = snd_soc_component_get_drvdata(cmpnt);
291 struct mt8188_afe_private *afe_priv = afe->platform_priv;
299 dev_dbg(afe->dev, "%s(), name %s, event 0x%x\n",
314 regmap_set_bits(afe->regmap, PWR2_TOP_CON1, msk);
324 regmap_set_bits(afe->regmap, reg->con0, msk);
333 regmap_set_bits(afe->regmap, reg->con0, msk);
337 mt8188_afe_enable_clk(afe, afe_priv->clk[MT8188_CLK_AUD_DMIC_HIRES1]);
338 mt8188_afe_enable_clk(afe, afe_priv->clk[MT8188_CLK_AUD_DMIC_HIRES2]);
339 mt8188_afe_enable_clk(afe, afe_priv->clk[MT8188_CLK_AUD_DMIC_HIRES3]);
340 mt8188_afe_enable_clk(afe, afe_priv->clk[MT8188_CLK_AUD_DMIC_HIRES4]);
343 mt8188_afe_enable_clk(afe, afe_priv->clk[MT8188_CLK_AUD_AFE_DMIC1]);
344 mt8188_afe_enable_clk(afe, afe_priv->clk[MT8188_CLK_AUD_AFE_DMIC2]);
345 mt8188_afe_enable_clk(afe, afe_priv->clk[MT8188_CLK_AUD_AFE_DMIC3]);
346 mt8188_afe_enable_clk(afe, afe_priv->clk[MT8188_CLK_AUD_AFE_DMIC4]);
353 regmap_clear_bits(afe->regmap, PWR2_TOP_CON1, msk);
365 regmap_set_bits(afe->regmap, reg->con0, msk);
369 /* should delayed 1/fs(smallest is 8k) = 125us before afe off */
372 mt8188_afe_disable_clk(afe, afe_priv->clk[MT8188_CLK_AUD_AFE_DMIC1]);
373 mt8188_afe_disable_clk(afe, afe_priv->clk[MT8188_CLK_AUD_AFE_DMIC2]);
374 mt8188_afe_disable_clk(afe, afe_priv->clk[MT8188_CLK_AUD_AFE_DMIC3]);
375 mt8188_afe_disable_clk(afe, afe_priv->clk[MT8188_CLK_AUD_AFE_DMIC4]);
378 mt8188_afe_disable_clk(afe, afe_priv->clk[MT8188_CLK_AUD_DMIC_HIRES1]);
379 mt8188_afe_disable_clk(afe, afe_priv->clk[MT8188_CLK_AUD_DMIC_HIRES2]);
380 mt8188_afe_disable_clk(afe, afe_priv->clk[MT8188_CLK_AUD_DMIC_HIRES3]);
381 mt8188_afe_disable_clk(afe, afe_priv->clk[MT8188_CLK_AUD_DMIC_HIRES4]);
395 struct mtk_base_afe *afe = snd_soc_dai_get_drvdata(dai);
396 struct mt8188_afe_private *afe_priv = afe->platform_priv;
419 ret = mtk_dai_dmic_load_iir_coeff_table(afe);
445 dev_dbg(afe->dev, "%s invalid rate %u, use 48000Hz\n", __func__, rate);
455 ret = regmap_update_bits(afe->regmap, reg->con0, msk, val);
543 struct mtk_base_afe *afe = snd_soc_component_get_drvdata(component);
544 struct mt8188_afe_private *afe_priv = afe->platform_priv;
574 struct mtk_base_afe *afe = snd_soc_component_get_drvdata(component);
575 struct mt8188_afe_private *afe_priv = afe->platform_priv;
649 static int init_dmic_priv_data(struct mtk_base_afe *afe)
651 struct mt8188_afe_private *afe_priv = afe->platform_priv;
654 dmic_priv = devm_kzalloc(afe->dev, sizeof(struct mtk_dai_dmic_priv),
663 int mt8188_dai_dmic_register(struct mtk_base_afe *afe)
667 dai = devm_kzalloc(afe->dev, sizeof(*dai), GFP_KERNEL);
671 list_add(&dai->list, &afe->sub_dais);
682 return init_dmic_priv_data(afe);