Skip to content

Commit

Permalink
phy/rockchip: inno-hdmi: round clock rate down to closest 1000 Hz
Browse files Browse the repository at this point in the history
Commit 287422a ("drm/rockchip: Round up _before_ giving to the clock framework")
changed what rate clk_round_rate() is called with, an additional 999 Hz
added to the requsted mode clock. This has caused a regression on RK3328
and presumably also on RK3228 because the inno-hdmi-phy clock requires an
exact match of the requested rate in the pre pll config table.

When an exact match is not found the parent clock rate (24MHz) is returned
to the clk_round_rate() caller. This cause wrong pixel clock to be used and
result in no-signal when configuring a mode on RK3328.

Fix this by rounding the rate down to closest 1000 Hz in round_rate func,
this allows an exact match to be found in pre pll config table.

Fixes: 287422a ("drm/rockchip: Round up _before_ giving to the clock framework")
Signed-off-by: Jonas Karlman <jonas@kwiboo.se>
Signed-off-by: Kishon Vijay Abraham I <kishon@ti.com>
  • Loading branch information
Jonas Karlman authored and Kishon Vijay Abraham I committed Dec 31, 2019
1 parent ea137a8 commit 4f510aa
Showing 1 changed file with 4 additions and 0 deletions.
4 changes: 4 additions & 0 deletions drivers/phy/rockchip/phy-rockchip-inno-hdmi.c
Original file line number Diff line number Diff line change
Expand Up @@ -603,6 +603,8 @@ static long inno_hdmi_phy_rk3228_clk_round_rate(struct clk_hw *hw,
{
const struct pre_pll_config *cfg = pre_pll_cfg_table;

rate = (rate / 1000) * 1000;

for (; cfg->pixclock != 0; cfg++)
if (cfg->pixclock == rate && !cfg->fracdiv)
break;
Expand Down Expand Up @@ -755,6 +757,8 @@ static long inno_hdmi_phy_rk3328_clk_round_rate(struct clk_hw *hw,
{
const struct pre_pll_config *cfg = pre_pll_cfg_table;

rate = (rate / 1000) * 1000;

for (; cfg->pixclock != 0; cfg++)
if (cfg->pixclock == rate)
break;
Expand Down

0 comments on commit 4f510aa

Please sign in to comment.