mirror of
https://github.com/hardkernel/linux.git
synced 2026-06-05 18:41:58 +09:00
misc: rk628: bt1120: fix read bt1120_dec clock frequency error
Type: Fix Redmine ID: N/A Associated modifications: N/A Test: N/A Signed-off-by: Zhibin Huang <zhibin.huang@rock-chips.com> Change-Id: I40f80f9d6a0daee6aedbae07cadfe24e7e171e56
This commit is contained in:
@@ -480,6 +480,19 @@ static unsigned long rk628_cru_clk_set_rate_bt1120_dec(struct rk628 *rk628,
|
||||
return parent_rate / div;
|
||||
}
|
||||
|
||||
static unsigned long rk628_cru_clk_get_rate_bt1120_dec(struct rk628 *rk628)
|
||||
{
|
||||
unsigned long parent_rate;
|
||||
u32 div;
|
||||
|
||||
parent_rate = rk628_cru_clk_get_rate_bt1120_dec_parent(rk628);
|
||||
|
||||
rk628_i2c_read(rk628, CRU_CLKSEL_CON02, &div);
|
||||
div = (div & 0x1f) + 1;
|
||||
|
||||
return parent_rate / div;
|
||||
}
|
||||
|
||||
int rk628_cru_clk_set_rate(struct rk628 *rk628, unsigned int id,
|
||||
unsigned long rate)
|
||||
{
|
||||
@@ -536,6 +549,9 @@ unsigned long rk628_cru_clk_get_rate(struct rk628 *rk628, unsigned int id)
|
||||
case CGU_CLK_HDMIRX_AUD:
|
||||
rate = rk628_cru_clk_get_rate_sclk_hdmirx_aud(rk628);
|
||||
break;
|
||||
case CGU_BT1120DEC:
|
||||
rate = rk628_cru_clk_get_rate_bt1120_dec(rk628);
|
||||
break;
|
||||
default:
|
||||
return 0;
|
||||
}
|
||||
|
||||
@@ -297,7 +297,8 @@ static void rk628_bt1120_decoder_enable(struct rk628 *rk628)
|
||||
* so that the deviation between the actual clk and the required clk
|
||||
* frequency is not significant.
|
||||
*/
|
||||
dec_clk_rate = rk628_cru_clk_set_rate(rk628, CGU_BT1120DEC, mode->clock * 1000);
|
||||
rk628_cru_clk_set_rate(rk628, CGU_BT1120DEC, mode->clock * 1000);
|
||||
dec_clk_rate = rk628_cru_clk_get_rate(rk628, CGU_BT1120DEC);
|
||||
if (dec_clk_rate < mode->clock * 1000)
|
||||
rk628_cru_clk_set_rate(rk628, CGU_BT1120DEC, mode->clock * 1020);
|
||||
|
||||
|
||||
Reference in New Issue
Block a user