Jay,
On Tue, Nov 18, 2014 at 7:07 PM, Jianqun Xu jay.xu@rock-chips.com wrote:
Mostly FYI, but if you take someone else's patch, you should also retain their authorship by saying: From: <person> at the top of the message. I don't really mind, but please keep it in mind for the future, thanks.
We need to claim the clock which is driving the codec so that when we enable clock gating, we continue to clock the codec when needed. I make this an optional clock since there might be some applications where we don't need it but can still use the I2S block.
Signed-off-by: Sonny Rao sonnyrao@chromium.org Signed-off-by: Jianqun Xu jay.xu@rock-chips.com
sound/soc/rockchip/rockchip_i2s.c | 11 +++++++++++ 1 file changed, 11 insertions(+)
diff --git a/sound/soc/rockchip/rockchip_i2s.c b/sound/soc/rockchip/rockchip_i2s.c index c74ba37..2820ade 100644 --- a/sound/soc/rockchip/rockchip_i2s.c +++ b/sound/soc/rockchip/rockchip_i2s.c @@ -28,6 +28,7 @@ struct rk_i2s_dev {
struct clk *hclk; struct clk *mclk;
struct clk *oclk; struct snd_dmaengine_dai_dma_data capture_dma_data; struct snd_dmaengine_dai_dma_data playback_dma_data;
@@ -439,6 +440,14 @@ static int rockchip_i2s_probe(struct platform_device *pdev) return PTR_ERR(i2s->mclk); }
i2s->oclk = devm_clk_get(&pdev->dev, "i2s_clk_out");
if (IS_ERR(i2s->oclk)) {
dev_dbg(&pdev->dev, "Didn't find output clock\n");
i2s->oclk = NULL;
}
if (i2s->oclk)
ret = clk_prepare_enable(i2s->oclk);
res = platform_get_resource(pdev, IORESOURCE_MEM, 0); regs = devm_ioremap_resource(&pdev->dev, res); if (IS_ERR(regs))
@@ -505,6 +514,8 @@ static int rockchip_i2s_remove(struct platform_device *pdev) if (!pm_runtime_status_suspended(&pdev->dev)) i2s_runtime_suspend(&pdev->dev);
if (i2s->oclk)
clk_disable_unprepare(i2s->oclk); clk_disable_unprepare(i2s->mclk); clk_disable_unprepare(i2s->hclk); snd_dmaengine_pcm_unregister(&pdev->dev);
-- 1.9.1