[RK3588] [Kernel 5.10] 一直输出 I2S MCLK

本文介绍了RK3588芯片中与I2SMCLK相关的驱动代码,涉及runtime_suspend和runtime_resume函数,强调了在系统休眠和唤醒时对MCLK的管理和时钟设置。
摘要由CSDN通过智能技术生成

有些 codec 芯片只有外部提供了 I2S MCLK ,才能工作。

RK3588 一直输出 I2S MCLK 补丁如下:

--- a/sound/soc/rockchip/rockchip_i2s_tdm.c
+++ b/sound/soc/rockchip/rockchip_i2s_tdm.c
@@ -199,10 +199,12 @@ static int i2s_tdm_runtime_suspend(struct device *dev)
 
        regcache_cache_only(i2s_tdm->regmap, true);
 
-       clk_disable_unprepare(i2s_tdm->mclk_tx);
-       clk_disable_unprepare(i2s_tdm->mclk_rx);
+       // jason for mclk always {
+       //clk_disable_unprepare(i2s_tdm->mclk_tx);
+       //clk_disable_unprepare(i2s_tdm->mclk_rx);
 
-       pinctrl_pm_select_idle_state(dev);
+       //pinctrl_pm_select_idle_state(dev);
+       // }
 
        return 0;
 }
@@ -224,6 +226,15 @@ static int i2s_tdm_runtime_resume(struct device *dev)
        struct rk_i2s_tdm_dev *i2s_tdm = dev_get_drvdata(dev);
        int ret;
 
+       // jason for mclk always {
+       ret = clk_set_rate(i2s_tdm->mclk_tx, 12288000);
+       if (ret)
+               dev_err(i2s_tdm->dev, "Fail to set mclk_tx %d\n", ret);
+       ret = clk_set_rate(i2s_tdm->mclk_rx, 12288000);
+       if (ret)
+               dev_err(i2s_tdm->dev, "Fail to set mclk_rx %d\n", ret);
+       // }
+
        /*
         * pinctrl default state is invoked by ASoC framework, so,
         * we just handle clk state here if DT assigned.
@@ -2773,7 +2784,8 @@ static int rockchip_i2s_tdm_probe(struct platform_device *pdev)
        atomic_set(&i2s_tdm->refcount, 0);
        dev_set_drvdata(&pdev->dev, i2s_tdm);
 
-       pm_runtime_enable(&pdev->dev);
+       // jason for mclk always
+       //pm_runtime_enable(&pdev->dev);
        if (!pm_runtime_enabled(&pdev->dev)) {
                ret = i2s_tdm_runtime_resume(&pdev->dev);
                if (ret)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值