From c8c71c5b8421508644028ebdb6292ad54aad07b7 Mon Sep 17 00:00:00 2001 From: zyh Date: Fri, 13 Jun 2014 20:37:46 +0800 Subject: [PATCH] spdif:fix hclk --- arch/arm/boot/dts/rk3288.dtsi | 4 ++-- sound/soc/rockchip/rk_spdif.c | 9 ++++++++- 2 files changed, 10 insertions(+), 3 deletions(-) diff --git a/arch/arm/boot/dts/rk3288.dtsi b/arch/arm/boot/dts/rk3288.dtsi index e7f71f7e6c0e..c36e5dd40bfe 100755 --- a/arch/arm/boot/dts/rk3288.dtsi +++ b/arch/arm/boot/dts/rk3288.dtsi @@ -810,8 +810,8 @@ compatible = "rockchip-spdif"; reg = <0xff8b0000 0x10000>; //8channel //reg = ;//2channel - clocks = <&clk_spdif>, <&clk_spdif_8ch>; - clock-names = "spdif_mclk","spdif_8ch_mclk"; + clocks = <&clk_spdif>, <&clk_spdif_8ch>,<&clk_gates10 11>; + clock-names = "spdif_mclk","spdif_8ch_mclk","spdif_hclk"; interrupts = ; dmas = <&pdma0 3>; //dmas = <&pdma0 2>; //2channel diff --git a/sound/soc/rockchip/rk_spdif.c b/sound/soc/rockchip/rk_spdif.c index 63cb2db70b80..0ea082b90542 100755 --- a/sound/soc/rockchip/rk_spdif.c +++ b/sound/soc/rockchip/rk_spdif.c @@ -414,6 +414,7 @@ static int spdif_probe(struct platform_device *pdev) { struct resource *mem_res; struct rockchip_spdif_info *spdif; + struct clk *spdif_hclk; int ret; RK_SPDIF_DBG("Entered %s\n", __func__); @@ -434,7 +435,7 @@ static int spdif_probe(struct platform_device *pdev) return -ENXIO; } - spdif->clk = clk_get(&pdev->dev, "spdif_mclk"); + spdif->clk = clk_get(&pdev->dev, "spdif_8ch_mclk"); if (IS_ERR(spdif->clk)) { dev_err(&pdev->dev, "Can't retrieve spdif clock\n"); return PTR_ERR(spdif->clk); @@ -443,6 +444,12 @@ static int spdif_probe(struct platform_device *pdev) clk_set_rate(spdif->clk, 11289600); clk_prepare_enable(spdif->clk); + spdif_hclk = clk_get(&pdev->dev, "spdif_hclk"); + if(IS_ERR(spdif_hclk) ) { + dev_err(&pdev->dev, "get spdif_hclk failed.\n"); + } else { + clk_prepare_enable(spdif_hclk); + } /* Request S/PDIF Register's memory region */ if (!request_mem_region(mem_res->start, -- 2.34.1