Lines Matching refs:afe

176 	struct mtk_afe *afe = snd_soc_platform_get_drvdata(rtd->platform);  in mtk_afe_pcm_pointer()  local
177 struct mtk_afe_memif *memif = &afe->memif[rtd->cpu_dai->id]; in mtk_afe_pcm_pointer()
242 static int mtk_afe_set_i2s(struct mtk_afe *afe, unsigned int rate) in mtk_afe_set_i2s() argument
251 regmap_update_bits(afe->regmap, AFE_ADDA2_TOP_CON0, 0x1, 0x1); in mtk_afe_set_i2s()
258 regmap_update_bits(afe->regmap, AFE_I2S_CON2, ~AFE_I2S_CON2_EN, val); in mtk_afe_set_i2s()
265 regmap_update_bits(afe->regmap, AFE_I2S_CON1, ~AFE_I2S_CON1_EN, val); in mtk_afe_set_i2s()
269 static void mtk_afe_set_i2s_enable(struct mtk_afe *afe, bool enable) in mtk_afe_set_i2s_enable() argument
273 regmap_read(afe->regmap, AFE_I2S_CON2, &val); in mtk_afe_set_i2s_enable()
278 regmap_update_bits(afe->regmap, AUDIO_TOP_CON1, 0x4, 0x4); in mtk_afe_set_i2s_enable()
281 regmap_update_bits(afe->regmap, AFE_I2S_CON2, 0x1, enable); in mtk_afe_set_i2s_enable()
284 regmap_update_bits(afe->regmap, AFE_I2S_CON1, 0x1, enable); in mtk_afe_set_i2s_enable()
288 regmap_update_bits(afe->regmap, AUDIO_TOP_CON1, 0x4, 0); in mtk_afe_set_i2s_enable()
291 static int mtk_afe_dais_enable_clks(struct mtk_afe *afe, in mtk_afe_dais_enable_clks() argument
299 dev_err(afe->dev, "Failed to enable m_ck\n"); in mtk_afe_dais_enable_clks()
302 regmap_update_bits(afe->regmap, AUDIO_TOP_CON0, in mtk_afe_dais_enable_clks()
309 dev_err(afe->dev, "Failed to enable b_ck\n"); in mtk_afe_dais_enable_clks()
316 static int mtk_afe_dais_set_clks(struct mtk_afe *afe, in mtk_afe_dais_set_clks() argument
325 dev_err(afe->dev, "Failed to set m_ck rate\n"); in mtk_afe_dais_set_clks()
333 dev_err(afe->dev, "Failed to set b_ck rate\n"); in mtk_afe_dais_set_clks()
340 static void mtk_afe_dais_disable_clks(struct mtk_afe *afe, in mtk_afe_dais_disable_clks() argument
344 regmap_update_bits(afe->regmap, AUDIO_TOP_CON0, in mtk_afe_dais_disable_clks()
357 struct mtk_afe *afe = snd_soc_platform_get_drvdata(rtd->platform); in mtk_afe_i2s_startup() local
362 mtk_afe_dais_enable_clks(afe, afe->clocks[MTK_CLK_I2S1_M], NULL); in mtk_afe_i2s_startup()
370 struct mtk_afe *afe = snd_soc_platform_get_drvdata(rtd->platform); in mtk_afe_i2s_shutdown() local
375 mtk_afe_set_i2s_enable(afe, false); in mtk_afe_i2s_shutdown()
376 mtk_afe_dais_disable_clks(afe, afe->clocks[MTK_CLK_I2S1_M], NULL); in mtk_afe_i2s_shutdown()
379 regmap_update_bits(afe->regmap, AFE_DAC_CON0, 0x1, 0); in mtk_afe_i2s_shutdown()
387 struct mtk_afe *afe = snd_soc_platform_get_drvdata(rtd->platform); in mtk_afe_i2s_prepare() local
390 mtk_afe_dais_set_clks(afe, in mtk_afe_i2s_prepare()
391 afe->clocks[MTK_CLK_I2S1_M], runtime->rate * 256, in mtk_afe_i2s_prepare()
394 ret = mtk_afe_set_i2s(afe, substream->runtime->rate); in mtk_afe_i2s_prepare()
398 mtk_afe_set_i2s_enable(afe, true); in mtk_afe_i2s_prepare()
407 struct mtk_afe *afe = snd_soc_platform_get_drvdata(rtd->platform); in mtk_afe_hdmi_startup() local
412 mtk_afe_dais_enable_clks(afe, afe->clocks[MTK_CLK_I2S3_M], in mtk_afe_hdmi_startup()
413 afe->clocks[MTK_CLK_I2S3_B]); in mtk_afe_hdmi_startup()
421 struct mtk_afe *afe = snd_soc_platform_get_drvdata(rtd->platform); in mtk_afe_hdmi_shutdown() local
426 mtk_afe_dais_disable_clks(afe, afe->clocks[MTK_CLK_I2S3_M], in mtk_afe_hdmi_shutdown()
427 afe->clocks[MTK_CLK_I2S3_B]); in mtk_afe_hdmi_shutdown()
430 regmap_update_bits(afe->regmap, AFE_DAC_CON0, 0x1, 0); in mtk_afe_hdmi_shutdown()
438 struct mtk_afe *afe = snd_soc_platform_get_drvdata(rtd->platform); in mtk_afe_hdmi_prepare() local
441 mtk_afe_dais_set_clks(afe, in mtk_afe_hdmi_prepare()
442 afe->clocks[MTK_CLK_I2S3_M], runtime->rate * 128, in mtk_afe_hdmi_prepare()
443 afe->clocks[MTK_CLK_I2S3_B], in mtk_afe_hdmi_prepare()
452 regmap_update_bits(afe->regmap, AFE_TDM_CON1, ~AFE_TDM_CON1_EN, val); in mtk_afe_hdmi_prepare()
487 regmap_update_bits(afe->regmap, AFE_TDM_CON2, 0x0000ffff, val); in mtk_afe_hdmi_prepare()
489 regmap_update_bits(afe->regmap, AFE_HDMI_OUT_CON0, in mtk_afe_hdmi_prepare()
498 struct mtk_afe *afe = snd_soc_platform_get_drvdata(rtd->platform); in mtk_afe_hdmi_trigger() local
500 dev_info(afe->dev, "%s cmd=%d %s\n", __func__, cmd, dai->name); in mtk_afe_hdmi_trigger()
505 regmap_update_bits(afe->regmap, AUDIO_TOP_CON0, in mtk_afe_hdmi_trigger()
509 regmap_write(afe->regmap, AFE_HDMI_CONN0, in mtk_afe_hdmi_trigger()
516 regmap_update_bits(afe->regmap, AFE_HDMI_OUT_CON0, 0x1, 0x1); in mtk_afe_hdmi_trigger()
519 regmap_update_bits(afe->regmap, AFE_TDM_CON1, 0x1, 0x1); in mtk_afe_hdmi_trigger()
525 regmap_update_bits(afe->regmap, AFE_TDM_CON1, 0x1, 0); in mtk_afe_hdmi_trigger()
528 regmap_update_bits(afe->regmap, AFE_HDMI_OUT_CON0, 0x1, 0); in mtk_afe_hdmi_trigger()
530 regmap_update_bits(afe->regmap, AUDIO_TOP_CON0, in mtk_afe_hdmi_trigger()
544 struct mtk_afe *afe = snd_soc_platform_get_drvdata(rtd->platform); in mtk_afe_dais_startup() local
546 struct mtk_afe_memif *memif = &afe->memif[rtd->cpu_dai->id]; in mtk_afe_dais_startup()
565 dev_err(afe->dev, "hw_constraint_minmax failed\n"); in mtk_afe_dais_startup()
572 dev_err(afe->dev, "snd_pcm_hw_constraint_integer failed\n"); in mtk_afe_dais_startup()
580 struct mtk_afe *afe = snd_soc_platform_get_drvdata(rtd->platform); in mtk_afe_dais_shutdown() local
581 struct mtk_afe_memif *memif = &afe->memif[rtd->cpu_dai->id]; in mtk_afe_dais_shutdown()
591 struct mtk_afe *afe = snd_soc_platform_get_drvdata(rtd->platform); in mtk_afe_dais_hw_params() local
592 struct mtk_afe_memif *memif = &afe->memif[rtd->cpu_dai->id]; in mtk_afe_dais_hw_params()
595 dev_dbg(afe->dev, in mtk_afe_dais_hw_params()
609 regmap_write(afe->regmap, in mtk_afe_dais_hw_params()
612 regmap_write(afe->regmap, in mtk_afe_dais_hw_params()
620 regmap_update_bits(afe->regmap, AFE_DAC_CON1, in mtk_afe_dais_hw_params()
647 regmap_update_bits(afe->regmap, AFE_DAC_CON0, in mtk_afe_dais_hw_params()
651 regmap_update_bits(afe->regmap, AFE_DAC_CON1, in mtk_afe_dais_hw_params()
661 regmap_update_bits(afe->regmap, AFE_DAC_CON1, in mtk_afe_dais_hw_params()
679 struct mtk_afe *afe = snd_soc_platform_get_drvdata(rtd->platform); in mtk_afe_dais_prepare() local
682 regmap_update_bits(afe->regmap, AFE_DAC_CON0, 0x1, 0x1); in mtk_afe_dais_prepare()
691 struct mtk_afe *afe = snd_soc_platform_get_drvdata(rtd->platform); in mtk_afe_dais_trigger() local
692 struct mtk_afe_memif *memif = &afe->memif[rtd->cpu_dai->id]; in mtk_afe_dais_trigger()
695 dev_info(afe->dev, "%s %s cmd=%d\n", __func__, memif->data->name, cmd); in mtk_afe_dais_trigger()
701 regmap_update_bits(afe->regmap, AFE_DAC_CON0, in mtk_afe_dais_trigger()
706 regmap_update_bits(afe->regmap, in mtk_afe_dais_trigger()
718 regmap_update_bits(afe->regmap, in mtk_afe_dais_trigger()
724 regmap_update_bits(afe->regmap, AFE_IRQ_MCU_CON, in mtk_afe_dais_trigger()
732 regmap_update_bits(afe->regmap, AFE_DAC_CON0, in mtk_afe_dais_trigger()
735 regmap_update_bits(afe->regmap, AFE_IRQ_MCU_CON, in mtk_afe_dais_trigger()
739 regmap_write(afe->regmap, AFE_IRQ_CLR, in mtk_afe_dais_trigger()
778 struct mtk_afe *afe = snd_soc_dai_get_drvdata(dai); in mtk_afe_dai_suspend() local
781 dev_dbg(afe->dev, "%s\n", __func__); in mtk_afe_dai_suspend()
782 if (pm_runtime_status_suspended(afe->dev) || afe->suspended) in mtk_afe_dai_suspend()
786 regmap_read(afe->regmap, mtk_afe_backup_list[i], in mtk_afe_dai_suspend()
787 &afe->backup_regs[i]); in mtk_afe_dai_suspend()
789 afe->suspended = true; in mtk_afe_dai_suspend()
790 mtk_afe_runtime_suspend(afe->dev); in mtk_afe_dai_suspend()
796 struct mtk_afe *afe = snd_soc_dai_get_drvdata(dai); in mtk_afe_dai_resume() local
799 dev_dbg(afe->dev, "%s\n", __func__); in mtk_afe_dai_resume()
800 if (pm_runtime_status_suspended(afe->dev) || !afe->suspended) in mtk_afe_dai_resume()
803 mtk_afe_runtime_resume(afe->dev); in mtk_afe_dai_resume()
806 regmap_write(afe->regmap, mtk_afe_backup_list[i], in mtk_afe_dai_resume()
807 afe->backup_regs[i]); in mtk_afe_dai_resume()
809 afe->suspended = false; in mtk_afe_dai_resume()
1084 struct mtk_afe *afe = dev_id; in mtk_afe_irq_handler() local
1088 ret = regmap_read(afe->regmap, AFE_IRQ_STATUS, &reg_value); in mtk_afe_irq_handler()
1090 dev_err(afe->dev, "%s irq status err\n", __func__); in mtk_afe_irq_handler()
1096 struct mtk_afe_memif *memif = &afe->memif[i]; in mtk_afe_irq_handler()
1101 ret = regmap_read(afe->regmap, memif->data->reg_ofs_cur, in mtk_afe_irq_handler()
1104 dev_err(afe->dev, "%s hw_ptr err\n", __func__); in mtk_afe_irq_handler()
1113 regmap_write(afe->regmap, AFE_IRQ_CLR, reg_value & AFE_IRQ_STATUS_BITS); in mtk_afe_irq_handler()
1120 struct mtk_afe *afe = dev_get_drvdata(dev); in mtk_afe_runtime_suspend() local
1123 regmap_update_bits(afe->regmap, AUDIO_TOP_CON0, in mtk_afe_runtime_suspend()
1126 clk_disable_unprepare(afe->clocks[MTK_CLK_BCK0]); in mtk_afe_runtime_suspend()
1127 clk_disable_unprepare(afe->clocks[MTK_CLK_BCK1]); in mtk_afe_runtime_suspend()
1128 clk_disable_unprepare(afe->clocks[MTK_CLK_TOP_PDN_AUD]); in mtk_afe_runtime_suspend()
1129 clk_disable_unprepare(afe->clocks[MTK_CLK_TOP_PDN_AUD_BUS]); in mtk_afe_runtime_suspend()
1130 clk_disable_unprepare(afe->clocks[MTK_CLK_INFRASYS_AUD]); in mtk_afe_runtime_suspend()
1136 struct mtk_afe *afe = dev_get_drvdata(dev); in mtk_afe_runtime_resume() local
1139 ret = clk_prepare_enable(afe->clocks[MTK_CLK_INFRASYS_AUD]); in mtk_afe_runtime_resume()
1143 ret = clk_prepare_enable(afe->clocks[MTK_CLK_TOP_PDN_AUD_BUS]); in mtk_afe_runtime_resume()
1147 ret = clk_prepare_enable(afe->clocks[MTK_CLK_TOP_PDN_AUD]); in mtk_afe_runtime_resume()
1151 ret = clk_prepare_enable(afe->clocks[MTK_CLK_BCK0]); in mtk_afe_runtime_resume()
1155 ret = clk_prepare_enable(afe->clocks[MTK_CLK_BCK1]); in mtk_afe_runtime_resume()
1160 regmap_update_bits(afe->regmap, AUDIO_TOP_CON0, AUD_TCON0_PDN_AFE, 0); in mtk_afe_runtime_resume()
1163 regmap_update_bits(afe->regmap, AFE_CONN_24BIT, in mtk_afe_runtime_resume()
1167 regmap_update_bits(afe->regmap, AFE_IRQ_MCU_EN, 0xff, 0xff); in mtk_afe_runtime_resume()
1171 clk_disable_unprepare(afe->clocks[MTK_CLK_BCK0]); in mtk_afe_runtime_resume()
1173 clk_disable_unprepare(afe->clocks[MTK_CLK_TOP_PDN_AUD]); in mtk_afe_runtime_resume()
1175 clk_disable_unprepare(afe->clocks[MTK_CLK_TOP_PDN_AUD_BUS]); in mtk_afe_runtime_resume()
1177 clk_disable_unprepare(afe->clocks[MTK_CLK_INFRASYS_AUD]); in mtk_afe_runtime_resume()
1181 static int mtk_afe_init_audio_clk(struct mtk_afe *afe) in mtk_afe_init_audio_clk() argument
1186 afe->clocks[i] = devm_clk_get(afe->dev, aud_clks[i]); in mtk_afe_init_audio_clk()
1187 if (IS_ERR(afe->clocks[i])) { in mtk_afe_init_audio_clk()
1188 dev_err(afe->dev, "%s devm_clk_get %s fail\n", in mtk_afe_init_audio_clk()
1190 return PTR_ERR(afe->clocks[i]); in mtk_afe_init_audio_clk()
1193 clk_set_rate(afe->clocks[MTK_CLK_BCK0], 22579200); /* 22M */ in mtk_afe_init_audio_clk()
1194 clk_set_rate(afe->clocks[MTK_CLK_BCK1], 24576000); /* 24M */ in mtk_afe_init_audio_clk()
1202 struct mtk_afe *afe; in mtk_afe_pcm_dev_probe() local
1205 afe = devm_kzalloc(&pdev->dev, sizeof(*afe), GFP_KERNEL); in mtk_afe_pcm_dev_probe()
1206 if (!afe) in mtk_afe_pcm_dev_probe()
1209 afe->dev = &pdev->dev; in mtk_afe_pcm_dev_probe()
1213 dev_err(afe->dev, "np %s no irq\n", afe->dev->of_node->name); in mtk_afe_pcm_dev_probe()
1216 ret = devm_request_irq(afe->dev, irq_id, mtk_afe_irq_handler, in mtk_afe_pcm_dev_probe()
1217 0, "Afe_ISR_Handle", (void *)afe); in mtk_afe_pcm_dev_probe()
1219 dev_err(afe->dev, "could not request_irq\n"); in mtk_afe_pcm_dev_probe()
1224 afe->base_addr = devm_ioremap_resource(&pdev->dev, res); in mtk_afe_pcm_dev_probe()
1225 if (IS_ERR(afe->base_addr)) in mtk_afe_pcm_dev_probe()
1226 return PTR_ERR(afe->base_addr); in mtk_afe_pcm_dev_probe()
1228 afe->regmap = devm_regmap_init_mmio(&pdev->dev, afe->base_addr, in mtk_afe_pcm_dev_probe()
1230 if (IS_ERR(afe->regmap)) in mtk_afe_pcm_dev_probe()
1231 return PTR_ERR(afe->regmap); in mtk_afe_pcm_dev_probe()
1234 ret = mtk_afe_init_audio_clk(afe); in mtk_afe_pcm_dev_probe()
1236 dev_err(afe->dev, "mtk_afe_init_audio_clk fail\n"); in mtk_afe_pcm_dev_probe()
1241 afe->memif[i].data = &memif_data[i]; in mtk_afe_pcm_dev_probe()
1243 platform_set_drvdata(pdev, afe); in mtk_afe_pcm_dev_probe()