Lines Matching refs:afe
15 #include "mt6797-afe-common.h"
16 #include "mt6797-afe-clk.h"
19 #include "../common/mtk-afe-platform-driver.h"
20 #include "../common/mtk-afe-fe-dai.h"
145 struct mtk_base_afe *afe = snd_soc_component_get_drvdata(component);
148 return mt6797_rate_transform(afe->dev, rate, id);
156 struct mtk_base_afe *afe = snd_soc_component_get_drvdata(component);
158 return mt6797_general_rate_transform(afe->dev, rate);
385 .name = "mt6797-afe-pcm-dai",
604 struct mtk_base_afe *afe = dev;
613 regmap_read(afe->regmap, AFE_IRQ_MCU_EN, &mcu_en);
615 ret = regmap_read(afe->regmap, AFE_IRQ_MCU_STATUS, &status);
617 dev_err(afe->dev, "%s(), irq status err, ret %d, status 0x%x, mcu_en 0x%x\n",
628 struct mtk_base_afe_memif *memif = &afe->memif[i];
633 irq = &afe->irqs[memif->irq_usage];
641 regmap_write(afe->regmap,
650 struct mtk_base_afe *afe = dev_get_drvdata(dev);
655 regmap_update_bits(afe->regmap, AFE_DAC_CON0, AFE_ON_MASK_SFT, 0x0);
657 regmap_read(afe->regmap, AFE_DAC_CON0, &afe_on_retm);
665 dev_warn(afe->dev, "%s(), retry %d\n", __func__, retry);
668 regmap_update_bits(afe->regmap, AFE_IRQ_MCU_CLR, 0xffff, 0xffff);
670 return mt6797_afe_disable_clock(afe);
675 struct mtk_base_afe *afe = dev_get_drvdata(dev);
678 ret = mt6797_afe_enable_clock(afe);
683 regmap_write(afe->regmap, AFE_IRQ_MCU_EN, AFE_IRQ_MCU_EN_MASK_SFT);
686 regmap_update_bits(afe->regmap, AFE_MEMIF_HDALIGN,
689 regmap_update_bits(afe->regmap, AFE_MEMIF_MSB,
692 regmap_update_bits(afe->regmap, AFE_MEMIF_MSB,
696 regmap_update_bits(afe->regmap, AFE_CONN_24BIT,
700 regmap_update_bits(afe->regmap, AFE_DAC_CON0,
719 static int mt6797_dai_memif_register(struct mtk_base_afe *afe)
723 dai = devm_kzalloc(afe->dev, sizeof(*dai), GFP_KERNEL);
727 list_add(&dai->list, &afe->sub_dais);
749 struct mtk_base_afe *afe;
754 afe = devm_kzalloc(&pdev->dev, sizeof(*afe), GFP_KERNEL);
755 if (!afe)
758 afe->platform_priv = devm_kzalloc(&pdev->dev, sizeof(*afe_priv),
760 if (!afe->platform_priv)
763 afe_priv = afe->platform_priv;
764 afe->dev = &pdev->dev;
765 dev = afe->dev;
768 ret = mt6797_init_clock(afe);
775 afe->base_addr = devm_platform_ioremap_resource(pdev, 0);
776 if (IS_ERR(afe->base_addr))
777 return PTR_ERR(afe->base_addr);
779 afe->regmap = devm_regmap_init_mmio(&pdev->dev, afe->base_addr,
781 if (IS_ERR(afe->regmap))
782 return PTR_ERR(afe->regmap);
785 afe->memif_size = MT6797_MEMIF_NUM;
786 afe->memif = devm_kcalloc(dev, afe->memif_size, sizeof(*afe->memif),
788 if (!afe->memif)
791 for (i = 0; i < afe->memif_size; i++) {
792 afe->memif[i].data = &memif_data[i];
793 afe->memif[i].irq_usage = -1;
796 mutex_init(&afe->irq_alloc_lock);
799 afe->irqs_size = MT6797_IRQ_NUM;
800 afe->irqs = devm_kcalloc(dev, afe->irqs_size, sizeof(*afe->irqs),
802 if (!afe->irqs)
805 for (i = 0; i < afe->irqs_size; i++)
806 afe->irqs[i].irq_data = &irq_data[i];
814 IRQF_TRIGGER_NONE, "asys-isr", (void *)afe);
821 INIT_LIST_HEAD(&afe->sub_dais);
824 ret = dai_register_cbs[i](afe);
826 dev_warn(afe->dev, "dai register i %d fail, ret %d\n",
833 ret = mtk_afe_combine_sub_dai(afe);
835 dev_warn(afe->dev, "mtk_afe_combine_sub_dai fail, ret %d\n",
840 afe->mtk_afe_hardware = &mt6797_afe_hardware;
841 afe->memif_fs = mt6797_memif_fs;
842 afe->irq_fs = mt6797_irq_fs;
844 afe->runtime_resume = mt6797_afe_runtime_resume;
845 afe->runtime_suspend = mt6797_afe_runtime_suspend;
847 platform_set_drvdata(pdev, afe);
862 ret = devm_snd_soc_register_component(afe->dev,
864 afe->dai_drivers,
865 afe->num_dai_drivers);