From ef5d7fa8485e9dbee99447905d346eea626949a7 Mon Sep 17 00:00:00 2001 From: Sugar Zhang Date: Fri, 12 Jun 2015 18:22:02 +0800 Subject: [PATCH] ASoC: rockchip: spdif: caculate sclk according BMC(bitphase mark coding). Signed-off-by: Sugar Zhang --- sound/soc/rockchip/rk_hdmi_spdif.c | 19 ++++++------------- sound/soc/rockchip/rk_spdif_card.c | 20 +++++++------------- 2 files changed, 13 insertions(+), 26 deletions(-) diff --git a/sound/soc/rockchip/rk_hdmi_spdif.c b/sound/soc/rockchip/rk_hdmi_spdif.c index c8ecb84a900b..12cdaecbcce0 100755 --- a/sound/soc/rockchip/rk_hdmi_spdif.c +++ b/sound/soc/rockchip/rk_hdmi_spdif.c @@ -37,35 +37,28 @@ static int rk_hw_params(struct snd_pcm_substream *substream, { struct snd_soc_pcm_runtime *rtd = substream->private_data; struct snd_soc_dai *cpu_dai = rtd->cpu_dai; - unsigned long pll_out, rclk_rate; + unsigned long sclk; int ret, ratio; RK_SPDIF_DBG("spdif:Entered %s\n", __func__); + /* bmc: 2*32*fs*2 = 128fs */ + ratio = 128; switch (params_rate(params)) { case 44100: - pll_out = 11289600; - break; case 32000: - pll_out = 8192000; - break; case 48000: - pll_out = 12288000; - break; case 96000: - pll_out = 24576000; + case 192000: + sclk = params_rate(params) * ratio; break; default: pr_err("rk_spdif: params not support\n"); return -EINVAL; } - ratio = 256; - rclk_rate = params_rate(params) * ratio; - - /* Set audio source clock rates */ ret = snd_soc_dai_set_sysclk(cpu_dai, 0, - rclk_rate, SND_SOC_CLOCK_IN); + sclk, SND_SOC_CLOCK_IN); if (ret < 0) return ret; diff --git a/sound/soc/rockchip/rk_spdif_card.c b/sound/soc/rockchip/rk_spdif_card.c index e6149b551f3f..7bfb74c08aec 100755 --- a/sound/soc/rockchip/rk_spdif_card.c +++ b/sound/soc/rockchip/rk_spdif_card.c @@ -28,33 +28,27 @@ static int rk_hw_params(struct snd_pcm_substream *substream, { struct snd_soc_pcm_runtime *rtd = substream->private_data; struct snd_soc_dai *cpu_dai = rtd->cpu_dai; - unsigned long pll_out, rclk_rate; + unsigned long sclk; int ret, ratio; + /* bmc: 2*32*fs*2 = 128fs */ + ratio = 128; + switch (params_rate(params)) { case 44100: - pll_out = 11289600; - break; case 32000: - pll_out = 8192000; - break; case 48000: - pll_out = 12288000; - break; case 96000: - pll_out = 24576000; + case 192000: + sclk = params_rate(params) * ratio; break; default: pr_err("rk_spdif: params not support\n"); return -EINVAL; } - ratio = 256; - rclk_rate = params_rate(params) * ratio; - - /* Set audio source clock rates */ ret = snd_soc_dai_set_sysclk(cpu_dai, 0, - rclk_rate, SND_SOC_CLOCK_IN); + sclk, SND_SOC_CLOCK_IN); if (ret < 0) return ret; -- 2.34.1