Lines Matching refs:afe
242 struct mtk_base_afe *afe = snd_soc_dai_get_drvdata(dai); in is_cowork_mode() local
243 struct mt8188_afe_private *afe_priv = afe->platform_priv; in is_cowork_mode()
274 struct mtk_base_afe *afe = snd_soc_dai_get_drvdata(dai); in get_etdm_cowork_master_id() local
275 struct mt8188_afe_private *afe_priv = afe->platform_priv; in get_etdm_cowork_master_id()
348 static int mtk_dai_etdm_enable_mclk(struct mtk_base_afe *afe, int dai_id) in mtk_dai_etdm_enable_mclk() argument
350 struct mt8188_afe_private *afe_priv = afe->platform_priv; in mtk_dai_etdm_enable_mclk()
356 mt8188_afe_enable_clk(afe, afe_priv->clk[clkdiv_id]); in mtk_dai_etdm_enable_mclk()
361 static int mtk_dai_etdm_disable_mclk(struct mtk_base_afe *afe, int dai_id) in mtk_dai_etdm_disable_mclk() argument
363 struct mt8188_afe_private *afe_priv = afe->platform_priv; in mtk_dai_etdm_disable_mclk()
369 mt8188_afe_disable_clk(afe, afe_priv->clk[clkdiv_id]); in mtk_dai_etdm_disable_mclk()
676 struct mtk_base_afe *afe = snd_soc_component_get_drvdata(component); in mt8188_etdm_clk_src_sel_put() local
710 regmap_read(afe->regmap, reg, &old_val); in mt8188_etdm_clk_src_sel_put()
715 regmap_update_bits(afe->regmap, reg, mask, val); in mt8188_etdm_clk_src_sel_put()
725 struct mtk_base_afe *afe = snd_soc_component_get_drvdata(component); in mt8188_etdm_clk_src_sel_get() local
755 regmap_read(afe->regmap, reg, &value); in mt8188_etdm_clk_src_sel_get()
1166 static int mt8188_afe_enable_etdm(struct mtk_base_afe *afe, int dai_id) in mt8188_afe_enable_etdm() argument
1168 struct mt8188_afe_private *afe_priv = afe->platform_priv; in mt8188_afe_enable_etdm()
1178 dev_dbg(afe->dev, "%s [%d]%d\n", __func__, dai_id, etdm_data->en_ref_cnt); in mt8188_afe_enable_etdm()
1186 regmap_set_bits(afe->regmap, etdm_reg.con0, ETDM_CON0_EN); in mt8188_afe_enable_etdm()
1194 static int mt8188_afe_disable_etdm(struct mtk_base_afe *afe, int dai_id) in mt8188_afe_disable_etdm() argument
1196 struct mt8188_afe_private *afe_priv = afe->platform_priv; in mt8188_afe_disable_etdm()
1206 dev_dbg(afe->dev, "%s [%d]%d\n", __func__, dai_id, etdm_data->en_ref_cnt); in mt8188_afe_disable_etdm()
1214 regmap_clear_bits(afe->regmap, etdm_reg.con0, in mt8188_afe_disable_etdm()
1277 static int mt8188_etdm_sync_mode_slv(struct mtk_base_afe *afe, int dai_id) in mt8188_etdm_sync_mode_slv() argument
1279 struct mt8188_afe_private *afe_priv = afe->platform_priv; in mt8188_etdm_sync_mode_slv()
1325 regmap_update_bits(afe->regmap, reg, mask, val); in mt8188_etdm_sync_mode_slv()
1330 static int mt8188_etdm_sync_mode_mst(struct mtk_base_afe *afe, int dai_id) in mt8188_etdm_sync_mode_mst() argument
1332 struct mt8188_afe_private *afe_priv = afe->platform_priv; in mt8188_etdm_sync_mode_mst()
1383 regmap_update_bits(afe->regmap, reg, mask, val); in mt8188_etdm_sync_mode_mst()
1385 regmap_set_bits(afe->regmap, etdm_reg.con0, ETDM_CON0_SYNC_MODE); in mt8188_etdm_sync_mode_mst()
1390 static int mt8188_etdm_sync_mode_configure(struct mtk_base_afe *afe, int dai_id) in mt8188_etdm_sync_mode_configure() argument
1392 struct mt8188_afe_private *afe_priv = afe->platform_priv; in mt8188_etdm_sync_mode_configure()
1403 mt8188_etdm_sync_mode_slv(afe, dai_id); in mt8188_etdm_sync_mode_configure()
1405 mt8188_etdm_sync_mode_mst(afe, dai_id); in mt8188_etdm_sync_mode_configure()
1414 struct mtk_base_afe *afe = snd_soc_dai_get_drvdata(dai); in mtk_dai_etdm_startup() local
1415 struct mt8188_afe_private *afe_priv = afe->platform_priv; in mtk_dai_etdm_startup()
1426 mtk_dai_etdm_enable_mclk(afe, mst_dai_id); in mtk_dai_etdm_startup()
1430 mt8188_afe_enable_clk(afe, afe_priv->clk[cg_id]); in mtk_dai_etdm_startup()
1438 mt8188_afe_enable_clk(afe, in mtk_dai_etdm_startup()
1442 mtk_dai_etdm_enable_mclk(afe, dai->id); in mtk_dai_etdm_startup()
1446 mt8188_afe_enable_clk(afe, afe_priv->clk[cg_id]); in mtk_dai_etdm_startup()
1455 struct mtk_base_afe *afe = snd_soc_dai_get_drvdata(dai); in mtk_dai_etdm_shutdown() local
1456 struct mt8188_afe_private *afe_priv = afe->platform_priv; in mtk_dai_etdm_shutdown()
1468 dev_dbg(afe->dev, "%s(), dai id %d, prepared %d\n", __func__, dai->id, in mtk_dai_etdm_shutdown()
1480 ret = mt8188_afe_disable_etdm(afe, mst_dai_id); in mtk_dai_etdm_shutdown()
1482 dev_dbg(afe->dev, "%s disable %d failed\n", in mtk_dai_etdm_shutdown()
1487 ret = mt8188_afe_disable_etdm(afe, slv_dai_id); in mtk_dai_etdm_shutdown()
1489 dev_dbg(afe->dev, "%s disable %d failed\n", in mtk_dai_etdm_shutdown()
1493 ret = mt8188_afe_disable_etdm(afe, dai->id); in mtk_dai_etdm_shutdown()
1495 dev_dbg(afe->dev, "%s disable %d failed\n", in mtk_dai_etdm_shutdown()
1506 mt8188_afe_disable_clk(afe, afe_priv->clk[cg_id]); in mtk_dai_etdm_shutdown()
1513 mt8188_afe_disable_clk(afe, in mtk_dai_etdm_shutdown()
1516 mtk_dai_etdm_disable_mclk(afe, mst_dai_id); in mtk_dai_etdm_shutdown()
1520 mt8188_afe_disable_clk(afe, afe_priv->clk[cg_id]); in mtk_dai_etdm_shutdown()
1522 mtk_dai_etdm_disable_mclk(afe, dai->id); in mtk_dai_etdm_shutdown()
1526 static int mtk_dai_etdm_fifo_mode(struct mtk_base_afe *afe, in mtk_dai_etdm_fifo_mode() argument
1554 regmap_update_bits(afe->regmap, reg, mask, val); in mtk_dai_etdm_fifo_mode()
1558 static int mtk_dai_etdm_in_configure(struct mtk_base_afe *afe, in mtk_dai_etdm_in_configure() argument
1563 struct mt8188_afe_private *afe_priv = afe->platform_priv; in mtk_dai_etdm_in_configure()
1581 dev_dbg(afe->dev, "%s rate %u channels %u, id %d\n", in mtk_dai_etdm_in_configure()
1590 mtk_dai_etdm_fifo_mode(afe, dai_id, 0); in mtk_dai_etdm_in_configure()
1592 mtk_dai_etdm_fifo_mode(afe, dai_id, rate); in mtk_dai_etdm_in_configure()
1600 regmap_update_bits(afe->regmap, etdm_reg.con1, mask, val); in mtk_dai_etdm_in_configure()
1619 regmap_update_bits(afe->regmap, etdm_reg.con2, mask, val); in mtk_dai_etdm_in_configure()
1635 regmap_update_bits(afe->regmap, etdm_reg.con3, mask, val); in mtk_dai_etdm_in_configure()
1654 regmap_update_bits(afe->regmap, etdm_reg.con4, mask, val); in mtk_dai_etdm_in_configure()
1672 regmap_update_bits(afe->regmap, etdm_reg.con5, mask, val); in mtk_dai_etdm_in_configure()
1676 static int mtk_dai_etdm_out_configure(struct mtk_base_afe *afe, in mtk_dai_etdm_out_configure() argument
1681 struct mt8188_afe_private *afe_priv = afe->platform_priv; in mtk_dai_etdm_out_configure()
1697 dev_dbg(afe->dev, "%s rate %u channels %u, id %d\n", in mtk_dai_etdm_out_configure()
1708 regmap_update_bits(afe->regmap, etdm_reg.con0, mask, val); in mtk_dai_etdm_out_configure()
1719 regmap_update_bits(afe->regmap, etdm_reg.con1, mask, val); in mtk_dai_etdm_out_configure()
1738 regmap_update_bits(afe->regmap, etdm_reg.con4, mask, val); in mtk_dai_etdm_out_configure()
1757 regmap_update_bits(afe->regmap, etdm_reg.con5, mask, val); in mtk_dai_etdm_out_configure()
1762 static int mtk_dai_etdm_mclk_configure(struct mtk_base_afe *afe, int dai_id) in mtk_dai_etdm_mclk_configure() argument
1764 struct mt8188_afe_private *afe_priv = afe->platform_priv; in mtk_dai_etdm_mclk_configure()
1785 regmap_set_bits(afe->regmap, etdm_reg.con1, in mtk_dai_etdm_mclk_configure()
1788 regmap_clear_bits(afe->regmap, etdm_reg.con1, in mtk_dai_etdm_mclk_configure()
1798 ret = mt8188_afe_set_clk_parent(afe, afe_priv->clk[clk_id], in mtk_dai_etdm_mclk_configure()
1804 ret = mt8188_afe_set_clk_rate(afe, afe_priv->clk[clkdiv_id], in mtk_dai_etdm_mclk_configure()
1810 dev_dbg(afe->dev, "%s mclk freq = 0\n", __func__); in mtk_dai_etdm_mclk_configure()
1816 static int mtk_dai_etdm_configure(struct mtk_base_afe *afe, in mtk_dai_etdm_configure() argument
1822 struct mt8188_afe_private *afe_priv = afe->platform_priv; in mtk_dai_etdm_configure()
1842 dev_dbg(afe->dev, "%s fmt %u data %u lrck %d-%u bck %d, clock %u slv %u\n", in mtk_dai_etdm_configure()
1846 dev_dbg(afe->dev, "%s rate %u channels %u bitwidth %u, id %d\n", in mtk_dai_etdm_configure()
1854 dev_err(afe->dev, "%s bck rate %u not support\n", in mtk_dai_etdm_configure()
1872 dev_err(afe->dev, "%s id %d only support master mode\n", in mtk_dai_etdm_configure()
1878 regmap_update_bits(afe->regmap, etdm_reg.con0, mask, val); in mtk_dai_etdm_configure()
1881 mtk_dai_etdm_in_configure(afe, rate, channels, dai_id); in mtk_dai_etdm_configure()
1883 mtk_dai_etdm_out_configure(afe, rate, channels, dai_id); in mtk_dai_etdm_configure()
1895 struct mtk_base_afe *afe = snd_soc_dai_get_drvdata(dai); in mtk_dai_etdm_hw_params() local
1896 struct mt8188_afe_private *afe_priv = afe->platform_priv; in mtk_dai_etdm_hw_params()
1903 dev_dbg(afe->dev, "%s '%s' period %u-%u\n", in mtk_dai_etdm_hw_params()
1912 ret = mtk_dai_etdm_mclk_configure(afe, mst_dai_id); in mtk_dai_etdm_hw_params()
1916 ret = mtk_dai_etdm_configure(afe, rate, channels, in mtk_dai_etdm_hw_params()
1924 ret = mtk_dai_etdm_configure(afe, rate, channels, in mtk_dai_etdm_hw_params()
1929 ret = mt8188_etdm_sync_mode_configure(afe, slv_dai_id); in mtk_dai_etdm_hw_params()
1934 ret = mtk_dai_etdm_mclk_configure(afe, dai->id); in mtk_dai_etdm_hw_params()
1938 ret = mtk_dai_etdm_configure(afe, rate, channels, in mtk_dai_etdm_hw_params()
1950 struct mtk_base_afe *afe = snd_soc_dai_get_drvdata(dai); in mtk_dai_etdm_prepare() local
1951 struct mt8188_afe_private *afe_priv = afe->platform_priv; in mtk_dai_etdm_prepare()
1962 dev_dbg(afe->dev, "%s(), dai id %d, prepared %d\n", __func__, dai->id, in mtk_dai_etdm_prepare()
1978 ret = mt8188_afe_enable_etdm(afe, slv_dai_id); in mtk_dai_etdm_prepare()
1980 dev_dbg(afe->dev, "%s enable %d failed\n", in mtk_dai_etdm_prepare()
1987 ret = mt8188_afe_enable_etdm(afe, mst_dai_id); in mtk_dai_etdm_prepare()
1989 dev_dbg(afe->dev, "%s enable %d failed\n", in mtk_dai_etdm_prepare()
1995 ret = mt8188_afe_enable_etdm(afe, dai->id); in mtk_dai_etdm_prepare()
1997 dev_dbg(afe->dev, "%s enable %d failed\n", in mtk_dai_etdm_prepare()
2007 static int mtk_dai_etdm_cal_mclk(struct mtk_base_afe *afe, int freq, int dai_id) in mtk_dai_etdm_cal_mclk() argument
2009 struct mt8188_afe_private *afe_priv = afe->platform_priv; in mtk_dai_etdm_cal_mclk()
2028 apll_rate = mt8188_afe_get_mclk_source_rate(afe, apll); in mtk_dai_etdm_cal_mclk()
2031 dev_err(afe->dev, "freq %d > apll rate %d\n", freq, apll_rate); in mtk_dai_etdm_cal_mclk()
2036 dev_err(afe->dev, "APLL%d cannot generate freq Hz\n", apll); in mtk_dai_etdm_cal_mclk()
2050 struct mtk_base_afe *afe = snd_soc_dai_get_drvdata(dai); in mtk_dai_etdm_set_sysclk() local
2051 struct mt8188_afe_private *afe_priv = afe->platform_priv; in mtk_dai_etdm_set_sysclk()
2066 return mtk_dai_etdm_cal_mclk(afe, freq, dai_id); in mtk_dai_etdm_set_sysclk()
2073 struct mtk_base_afe *afe = snd_soc_dai_get_drvdata(dai); in mtk_dai_etdm_set_tdm_slot() local
2074 struct mt8188_afe_private *afe_priv = afe->platform_priv; in mtk_dai_etdm_set_tdm_slot()
2091 struct mtk_base_afe *afe = snd_soc_dai_get_drvdata(dai); in mtk_dai_etdm_set_fmt() local
2092 struct mt8188_afe_private *afe_priv = afe->platform_priv; in mtk_dai_etdm_set_fmt()
2157 struct mtk_base_afe *afe = snd_soc_dai_get_drvdata(dai); in mtk_dai_hdmitx_dptx_startup() local
2158 struct mt8188_afe_private *afe_priv = afe->platform_priv; in mtk_dai_hdmitx_dptx_startup()
2162 mt8188_afe_enable_clk(afe, afe_priv->clk[cg_id]); in mtk_dai_hdmitx_dptx_startup()
2164 mtk_dai_etdm_enable_mclk(afe, dai->id); in mtk_dai_hdmitx_dptx_startup()
2172 struct mtk_base_afe *afe = snd_soc_dai_get_drvdata(dai); in mtk_dai_hdmitx_dptx_shutdown() local
2173 struct mt8188_afe_private *afe_priv = afe->platform_priv; in mtk_dai_hdmitx_dptx_shutdown()
2185 ret = mt8188_afe_disable_etdm(afe, dai->id); in mtk_dai_hdmitx_dptx_shutdown()
2187 dev_dbg(afe->dev, "%s disable failed\n", __func__); in mtk_dai_hdmitx_dptx_shutdown()
2191 regmap_clear_bits(afe->regmap, AFE_DPTX_CON, in mtk_dai_hdmitx_dptx_shutdown()
2195 mtk_dai_etdm_disable_mclk(afe, dai->id); in mtk_dai_hdmitx_dptx_shutdown()
2198 mt8188_afe_disable_clk(afe, afe_priv->clk[cg_id]); in mtk_dai_hdmitx_dptx_shutdown()
2233 struct mtk_base_afe *afe = snd_soc_dai_get_drvdata(dai); in mtk_dai_hdmitx_dptx_hw_params() local
2234 struct mt8188_afe_private *afe_priv = afe->platform_priv; in mtk_dai_hdmitx_dptx_hw_params()
2248 regmap_update_bits(afe->regmap, AFE_DPTX_CON, in mtk_dai_hdmitx_dptx_hw_params()
2251 regmap_update_bits(afe->regmap, AFE_DPTX_CON, in mtk_dai_hdmitx_dptx_hw_params()
2254 regmap_update_bits(afe->regmap, AFE_DPTX_CON, in mtk_dai_hdmitx_dptx_hw_params()
2268 ret = mtk_dai_etdm_mclk_configure(afe, dai->id); in mtk_dai_hdmitx_dptx_hw_params()
2272 ret = mtk_dai_etdm_configure(afe, rate, channels, width, dai->id); in mtk_dai_hdmitx_dptx_hw_params()
2280 struct mtk_base_afe *afe = snd_soc_dai_get_drvdata(dai); in mtk_dai_hdmitx_dptx_prepare() local
2281 struct mt8188_afe_private *afe_priv = afe->platform_priv; in mtk_dai_hdmitx_dptx_prepare()
2288 dev_dbg(afe->dev, "%s(), dai id %d, prepared %d\n", __func__, dai->id, in mtk_dai_hdmitx_dptx_prepare()
2298 regmap_set_bits(afe->regmap, AFE_DPTX_CON, AFE_DPTX_CON_ON); in mtk_dai_hdmitx_dptx_prepare()
2301 return mt8188_afe_enable_etdm(afe, dai->id); in mtk_dai_hdmitx_dptx_prepare()
2309 struct mtk_base_afe *afe = snd_soc_dai_get_drvdata(dai); in mtk_dai_hdmitx_dptx_set_sysclk() local
2310 struct mt8188_afe_private *afe_priv = afe->platform_priv; in mtk_dai_hdmitx_dptx_set_sysclk()
2321 return mtk_dai_etdm_cal_mclk(afe, freq, dai->id); in mtk_dai_hdmitx_dptx_set_sysclk()
2425 static void mt8188_etdm_update_sync_info(struct mtk_base_afe *afe) in mt8188_etdm_update_sync_info() argument
2427 struct mt8188_afe_private *afe_priv = afe->platform_priv; in mt8188_etdm_update_sync_info()
2439 dev_err(afe->dev, "%s [%d] wrong sync source\n", in mt8188_etdm_update_sync_info()
2447 static void mt8188_dai_etdm_parse_of(struct mtk_base_afe *afe) in mt8188_dai_etdm_parse_of() argument
2449 const struct device_node *of_node = afe->dev->of_node; in mt8188_dai_etdm_parse_of()
2450 struct mt8188_afe_private *afe_priv = afe->platform_priv; in mt8188_dai_etdm_parse_of()
2486 dev_err(afe->dev, "%s invalid id=%d\n", in mt8188_dai_etdm_parse_of()
2515 dev_err(afe->dev, "%s [%d] invalid chn %u\n", in mt8188_dai_etdm_parse_of()
2521 mt8188_etdm_update_sync_info(afe); in mt8188_dai_etdm_parse_of()
2524 static int init_etdm_priv_data(struct mtk_base_afe *afe) in init_etdm_priv_data() argument
2526 struct mt8188_afe_private *afe_priv = afe->platform_priv; in init_etdm_priv_data()
2531 etdm_priv = devm_kzalloc(afe->dev, in init_etdm_priv_data()
2543 mt8188_dai_etdm_parse_of(afe); in init_etdm_priv_data()
2547 int mt8188_dai_etdm_register(struct mtk_base_afe *afe) in mt8188_dai_etdm_register() argument
2551 dai = devm_kzalloc(afe->dev, sizeof(*dai), GFP_KERNEL); in mt8188_dai_etdm_register()
2555 list_add(&dai->list, &afe->sub_dais); in mt8188_dai_etdm_register()
2567 return init_etdm_priv_data(afe); in mt8188_dai_etdm_register()