From 007131063748ea69facbf4bbe7aaee71c34fd921 Mon Sep 17 00:00:00 2001 From: Shunhua Lan Date: Fri, 23 Apr 2021 18:43:59 +0800 Subject: [PATCH] media: i2c: rk628csi: fix mask for clkrate and fs audio align to 100 Signed-off-by: Shunhua Lan Change-Id: I15b290319463f1b41e6908e54caa99ef9c6db4f4 --- drivers/media/i2c/rk628_csi.c | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/drivers/media/i2c/rk628_csi.c b/drivers/media/i2c/rk628_csi.c index 89c4a926a985..a970bc621e0e 100644 --- a/drivers/media/i2c/rk628_csi.c +++ b/drivers/media/i2c/rk628_csi.c @@ -1064,7 +1064,7 @@ static void rk628_csi_delayed_work_audio(struct work_struct *work) /* fout=128*fs=ftmds*N/CTS */ regmap_read(csi->hdmirx_regmap, HDMI_RX_HDMI_CKM_RESULT, &clkrate); - clkrate = clkrate & 0xfff; + clkrate = clkrate & 0xffff; /* tmdsclk = (clkrate/1000) * 49500000 */ tmdsclk = clkrate * (49500000 / 1000); regmap_read(csi->hdmirx_regmap, HDMI_RX_PDEC_ACR_CTS, &cts_decoded); @@ -1073,6 +1073,8 @@ static void rk628_csi_delayed_work_audio(struct work_struct *work) if (cts_decoded != 0) { fs_audio = div_u64((tmdsclk * n_decoded), cts_decoded); fs_audio = div_u64(fs_audio, 128); + fs_audio = div_u64(fs_audio + 50, 100); + fs_audio *= 100; } v4l2_dbg(2, debug, sd, "%s: clkrate:%d tmdsclk:%llu, n_decoded:%d, cts_decoded:%d, fs_audio:%llu\n",