Lines Matching defs:afe

24 #include "mt8188-afe-common.h"
25 #include "mt8188-afe-clk.h"
27 #include "../common/mtk-afe-platform-driver.h"
28 #include "../common/mtk-afe-fe-dai.h"
96 struct mtk_base_afe *afe = NULL;
110 afe = snd_soc_component_get_drvdata(component);
111 memif = &afe->memif[id];
124 afe_priv = afe->platform_priv;
232 struct mtk_base_afe *afe = snd_soc_dai_get_drvdata(dai);
253 dev_dbg(afe->dev, "%s, memif %d cannot find CM!\n", __func__, dai->id);
260 static int mt8188_afe_config_cm(struct mtk_base_afe *afe,
267 regmap_update_bits(afe->regmap,
272 regmap_update_bits(afe->regmap,
277 regmap_update_bits(afe->regmap,
285 static int mt8188_afe_enable_cm(struct mtk_base_afe *afe,
292 regmap_update_bits(afe->regmap,
305 struct mtk_base_afe *afe = snd_soc_dai_get_drvdata(dai);
322 dev_dbg(afe->dev, "hw_constraint_minmax failed\n");
338 struct mtk_base_afe *afe = snd_soc_dai_get_drvdata(dai);
340 struct mtk_base_afe_memif *memif = &afe->memif[id];
345 mt8188_afe_config_cm(afe, cm, channels);
348 regmap_update_bits(afe->regmap, data->ch_num_reg,
359 struct mtk_base_afe *afe = snd_soc_dai_get_drvdata(dai);
364 struct mtk_base_afe_memif *memif = &afe->memif[id];
365 struct mtk_base_afe_irq *irqs = &afe->irqs[memif->irq_usage];
374 mt8188_afe_enable_cm(afe, cm, true);
376 ret = mtk_memif_set_enable(afe, id);
378 dev_err(afe->dev, "%s(), error, id %d, memif enable, ret %d\n",
384 regmap_update_bits(afe->regmap, irq_data->irq_cnt_reg,
389 fs = afe->irq_fs(substream, runtime->rate);
395 regmap_update_bits(afe->regmap, irq_data->irq_fs_reg,
411 regmap_set_bits(afe->regmap, irq_data->irq_en_reg,
416 mt8188_afe_enable_cm(afe, cm, false);
418 ret = mtk_memif_set_disable(afe, id);
420 dev_err(afe->dev, "%s(), error, id %d, memif enable, ret %d\n",
425 regmap_clear_bits(afe->regmap, irq_data->irq_en_reg,
428 regmap_write(afe->regmap, irq_data->irq_clr_reg,
1605 struct mtk_base_afe *afe = snd_soc_component_get_drvdata(component);
1606 struct mt8188_afe_private *afe_priv = afe->platform_priv;
1629 struct mtk_base_afe *afe = snd_soc_component_get_drvdata(component);
1630 struct mt8188_afe_private *afe_priv = afe->platform_priv;
1649 struct mtk_base_afe *afe = snd_soc_component_get_drvdata(component);
1650 struct mt8188_afe_private *afe_priv = afe->platform_priv;
1667 struct mtk_base_afe *afe = snd_soc_component_get_drvdata(component);
1668 struct mt8188_afe_private *afe_priv = afe->platform_priv;
2929 struct mtk_base_afe *afe = dev_id;
2939 ret = regmap_read(afe->regmap, AFE_IRQ_STATUS, &val);
2941 dev_err(afe->dev, "%s irq status err\n", __func__);
2947 ret = regmap_read(afe->regmap, AFE_IRQ_MASK, &mcu_irq_mask);
2949 dev_err(afe->dev, "%s read irq mask err\n", __func__);
2959 struct mtk_base_afe_memif *memif = &afe->memif[i];
2965 irq_data = afe->irqs[memif->irq_usage].irq_data;
2984 regmap_write(afe->regmap, ASYS_IRQ_CLR, asys_irq_clr_bits);
2986 regmap_write(afe->regmap, AFE_IRQ_MCU_CLR, afe_irq_clr_bits);
2993 struct mtk_base_afe *afe = dev_get_drvdata(dev);
2994 struct mt8188_afe_private *afe_priv = afe->platform_priv;
2996 if (!afe->regmap || afe_priv->pm_runtime_bypass_reg_ctl)
2999 mt8188_afe_disable_main_clock(afe);
3001 regcache_cache_only(afe->regmap, true);
3002 regcache_mark_dirty(afe->regmap);
3005 mt8188_afe_disable_reg_rw_clk(afe);
3012 struct mtk_base_afe *afe = dev_get_drvdata(dev);
3013 struct mt8188_afe_private *afe_priv = afe->platform_priv;
3020 mt8188_afe_enable_reg_rw_clk(afe);
3022 if (!afe->regmap || afe_priv->pm_runtime_bypass_reg_ctl)
3025 regcache_cache_only(afe->regmap, false);
3026 regcache_sync(afe->regmap);
3028 mt8188_afe_enable_main_clock(afe);
3035 struct mtk_base_afe *afe = snd_soc_component_get_drvdata(component);
3038 snd_soc_component_init_regmap(component, afe->regmap);
3052 static int init_memif_priv_data(struct mtk_base_afe *afe)
3054 struct mt8188_afe_private *afe_priv = afe->platform_priv;
3059 memif_priv = devm_kzalloc(afe->dev,
3071 static int mt8188_dai_memif_register(struct mtk_base_afe *afe)
3075 dai = devm_kzalloc(afe->dev, sizeof(*dai), GFP_KERNEL);
3079 list_add(&dai->list, &afe->sub_dais);
3091 return init_memif_priv_data(afe);
3115 static int mt8188_afe_init_registers(struct mtk_base_afe *afe)
3117 return regmap_multi_reg_write(afe->regmap,
3122 static int mt8188_afe_parse_of(struct mtk_base_afe *afe,
3126 struct mt8188_afe_private *afe_priv = afe->platform_priv;
3128 afe_priv->topckgen = syscon_regmap_lookup_by_phandle(afe->dev->of_node,
3131 return dev_err_probe(afe->dev, PTR_ERR(afe_priv->topckgen),
3195 struct mtk_base_afe *afe;
3210 afe = devm_kzalloc(&pdev->dev, sizeof(*afe), GFP_KERNEL);
3211 if (!afe)
3214 afe->platform_priv = devm_kzalloc(&pdev->dev, sizeof(*afe_priv),
3216 if (!afe->platform_priv)
3219 afe_priv = afe->platform_priv;
3220 afe->dev = &pdev->dev;
3222 afe->base_addr = devm_platform_ioremap_resource(pdev, 0);
3223 if (IS_ERR(afe->base_addr))
3224 return dev_err_probe(dev, PTR_ERR(afe->base_addr),
3259 ret = mt8188_afe_init_clock(afe);
3265 mutex_init(&afe->irq_alloc_lock);
3268 afe->irqs_size = MT8188_AFE_IRQ_NUM;
3269 afe->irqs = devm_kcalloc(dev, afe->irqs_size, sizeof(*afe->irqs),
3271 if (!afe->irqs)
3274 for (i = 0; i < afe->irqs_size; i++)
3275 afe->irqs[i].irq_data = &irq_data[i];
3278 afe->memif_size = MT8188_AFE_MEMIF_NUM;
3279 afe->memif = devm_kcalloc(dev, afe->memif_size, sizeof(*afe->memif),
3281 if (!afe->memif)
3284 for (i = 0; i < afe->memif_size; i++) {
3285 afe->memif[i].data = &memif_data[i];
3286 afe->memif[i].irq_usage = mt8188_afe_memif_const_irqs[i];
3287 afe->memif[i].const_irq = 1;
3288 afe->irqs[afe->memif[i].irq_usage].irq_occupyed = true;
3297 IRQF_TRIGGER_NONE, "asys-isr", (void *)afe);
3302 INIT_LIST_HEAD(&afe->sub_dais);
3305 ret = dai_register_cbs[i](afe);
3311 ret = mtk_afe_combine_sub_dai(afe);
3315 afe->mtk_afe_hardware = &mt8188_afe_hardware;
3316 afe->memif_fs = mt8188_memif_fs;
3317 afe->irq_fs = mt8188_irq_fs;
3319 afe->runtime_resume = mt8188_afe_runtime_resume;
3320 afe->runtime_suspend = mt8188_afe_runtime_suspend;
3322 platform_set_drvdata(pdev, afe);
3324 ret = mt8188_afe_parse_of(afe, pdev->dev.of_node);
3338 afe->regmap = devm_regmap_init_mmio(&pdev->dev, afe->base_addr,
3340 if (IS_ERR(afe->regmap)) {
3341 ret = PTR_ERR(afe->regmap);
3345 ret = regmap_register_patch(afe->regmap, mt8188_cg_patch,
3354 afe->dai_drivers, afe->num_dai_drivers);
3360 mt8188_afe_init_registers(afe);
3365 regcache_cache_only(afe->regmap, true);
3366 regcache_mark_dirty(afe->regmap);
3376 { .compatible = "mediatek,mt8188-afe", },