Lines Matching refs:afe

17 #include "mt7986-afe-common.h"
19 #include "../common/mtk-afe-platform-driver.h"
20 #include "../common/mtk-afe-fe-dai.h"
111 struct mtk_base_afe *afe = snd_soc_component_get_drvdata(component);
113 return mt7986_afe_rate_transform(afe->dev, rate);
121 struct mtk_base_afe *afe = snd_soc_component_get_drvdata(component);
123 return mt7986_afe_rate_transform(afe->dev, rate);
194 .name = "mt7986-afe-pcm-dai",
321 static int mt7986_init_clock(struct mtk_base_afe *afe)
323 struct mt7986_afe_private *afe_priv = afe->platform_priv;
326 afe_priv->clks = devm_kcalloc(afe->dev, CLK_NUM,
335 ret = devm_clk_bulk_get(afe->dev, afe_priv->num_clks, afe_priv->clks);
337 return dev_err_probe(afe->dev, ret, "Failed to get clocks\n");
344 struct mtk_base_afe *afe = dev;
351 regmap_read(afe->regmap, AFE_IRQ_MCU_EN, &mcu_en);
353 ret = regmap_read(afe->regmap, AFE_IRQ_MCU_STATUS, &status);
358 dev_err(afe->dev, "%s(), irq status err, ret %d, status 0x%x, mcu_en 0x%x\n",
366 struct mtk_base_afe_memif *memif = &afe->memif[i];
374 irq = &afe->irqs[memif->irq_usage];
382 regmap_write(afe->regmap, AFE_IRQ_MCU_CLR, status_mcu);
389 struct mtk_base_afe *afe = dev_get_drvdata(dev);
390 struct mt7986_afe_private *afe_priv = afe->platform_priv;
392 if (!afe->regmap || afe_priv->pm_runtime_bypass_reg_ctl)
396 regmap_update_bits(afe->regmap, AUDIO_TOP_CON4, 0x3fff, 0x3fff);
397 regmap_update_bits(afe->regmap, AUDIO_ENGEN_CON0, AUD_APLL2_EN_MASK, 0);
398 regmap_update_bits(afe->regmap, AUDIO_ENGEN_CON0, AUD_26M_EN_MASK, 0);
401 regmap_update_bits(afe->regmap, AFE_IRQ_MCU_CLR, 0xffff, 0xffff);
411 struct mtk_base_afe *afe = dev_get_drvdata(dev);
412 struct mt7986_afe_private *afe_priv = afe->platform_priv;
417 return dev_err_probe(afe->dev, ret, "Failed to enable clocks\n");
419 if (!afe->regmap || afe_priv->pm_runtime_bypass_reg_ctl)
423 regmap_update_bits(afe->regmap, AUDIO_TOP_CON4, 0x3fff, 0);
424 regmap_update_bits(afe->regmap, AUDIO_ENGEN_CON0, AUD_APLL2_EN_MASK,
426 regmap_update_bits(afe->regmap, AUDIO_ENGEN_CON0, AUD_26M_EN_MASK,
444 static int mt7986_dai_memif_register(struct mtk_base_afe *afe)
448 dai = devm_kzalloc(afe->dev, sizeof(*dai), GFP_KERNEL);
452 list_add(&dai->list, &afe->sub_dais);
473 struct mtk_base_afe *afe;
478 afe = devm_kzalloc(&pdev->dev, sizeof(*afe), GFP_KERNEL);
479 if (!afe)
481 platform_set_drvdata(pdev, afe);
483 afe->platform_priv = devm_kzalloc(&pdev->dev, sizeof(*afe_priv),
485 if (!afe->platform_priv)
488 afe_priv = afe->platform_priv;
489 afe->dev = &pdev->dev;
490 dev = afe->dev;
492 afe->base_addr = devm_platform_ioremap_resource(pdev, 0);
493 if (IS_ERR(afe->base_addr))
494 return PTR_ERR(afe->base_addr);
497 ret = mt7986_init_clock(afe);
509 afe->regmap = devm_regmap_init_mmio(&pdev->dev, afe->base_addr,
513 if (IS_ERR(afe->regmap))
514 return PTR_ERR(afe->regmap);
519 afe->memif_size = MT7986_MEMIF_NUM;
520 afe->memif = devm_kcalloc(dev, afe->memif_size, sizeof(*afe->memif),
522 if (!afe->memif)
525 for (i = 0; i < afe->memif_size; i++) {
526 afe->memif[i].data = &memif_data[i];
527 afe->memif[i].irq_usage = -1;
530 mutex_init(&afe->irq_alloc_lock);
533 afe->irqs_size = MT7986_IRQ_NUM;
534 afe->irqs = devm_kcalloc(dev, afe->irqs_size, sizeof(*afe->irqs),
536 if (!afe->irqs)
539 for (i = 0; i < afe->irqs_size; i++)
540 afe->irqs[i].irq_data = &irq_data[i];
549 IRQF_TRIGGER_NONE, "asys-isr", (void *)afe);
554 INIT_LIST_HEAD(&afe->sub_dais);
557 ret = dai_register_cbs[i](afe);
563 ret = mtk_afe_combine_sub_dai(afe);
567 afe->mtk_afe_hardware = &mt7986_afe_hardware;
568 afe->memif_fs = mt7986_memif_fs;
569 afe->irq_fs = mt7986_irq_fs;
571 afe->runtime_resume = mt7986_afe_runtime_resume;
572 afe->runtime_suspend = mt7986_afe_runtime_suspend;
581 ret = devm_snd_soc_register_component(afe->dev,
583 afe->dai_drivers,
584 afe->num_dai_drivers);
599 { .compatible = "mediatek,mt7986-afe" },