RK 시리즈 SDK - I2S MCLK가 계속 켜져 있음

설명: 본고는 linux 4.4 내장 버전 개발 시리즈 SDK에 적용됩니다.부분적으로 전원을 켠 후 I2S MCLK를 계속 제공해야만 정상적으로 작동할 수 있는 코드c에 대해 소프트웨어에서 아래의 patch를 추가하면 된다.
코드 경로:kernel/sound/soc/rockchip/rockchipi2s.c
diff --git a/sound/soc/rockchip/rockchip_i2s.c b/sound/soc/rockchip/rockchip_i2s.c
index e48b8b1..b3f388c 100644
--- a/sound/soc/rockchip/rockchip_i2s.c
+++ b/sound/soc/rockchip/rockchip_i2s.c
@@ -67,7 +67,7 @@ static int i2s_runtime_suspend(struct device *dev)
        struct rk_i2s_dev *i2s = dev_get_drvdata(dev);
 
        regcache_cache_only(i2s->regmap, true);
-       clk_disable_unprepare(i2s->mclk);
+//     clk_disable_unprepare(i2s->mclk);
 
        return 0;
 }
@@ -83,6 +83,12 @@ static int i2s_runtime_resume(struct device *dev)
                return ret;
        }
 
+       ret = clk_set_rate(i2s->mclk, 12288000 );
+       if (ret)
+               dev_err(i2s->dev, "Fail to set mclk %d
"
, ret); + regmap_update_bits(i2s->regmap, I2S_XFER, + I2S_XFER_TXS_START | I2S_XFER_RXS_START, + I2S_XFER_TXS_START | I2S_XFER_RXS_START); regcache_cache_only(i2s->regmap, false); regcache_mark_dirty(i2s->regmap);

주: 상기 patch 설정의 i2s mclk 주파수는 12.288MHz이며, 다른 주파수를 설정하려면 clk 수정set_rate(i2s->mclk, 12288000 ); 에서 매개변수 2의 주파수 값을 설정하면 됩니다.또한, 코드c단 구동에 대응하는 clkdisable_unprepare (...) 의 작업도//주석을 달아야 합니다.

좋은 웹페이지 즐겨찾기