.. | .. |
---|
745 | 745 | do_div(vco, (nd * (no_a == 1 ? no_b : no_a) * no_d * 2)); |
---|
746 | 746 | } |
---|
747 | 747 | |
---|
748 | | - inno->pixclock = vco; |
---|
749 | | - dev_dbg(inno->dev, "%s rate %lu\n", __func__, inno->pixclock); |
---|
| 748 | + inno->pixclock = DIV_ROUND_CLOSEST((unsigned long)vco, 1000) * 1000; |
---|
750 | 749 | |
---|
751 | | - return vco; |
---|
| 750 | + dev_dbg(inno->dev, "%s rate %lu vco %llu\n", |
---|
| 751 | + __func__, inno->pixclock, vco); |
---|
| 752 | + |
---|
| 753 | + return inno->pixclock; |
---|
752 | 754 | } |
---|
753 | 755 | |
---|
754 | 756 | static long inno_hdmi_phy_rk3328_clk_round_rate(struct clk_hw *hw, |
---|
.. | .. |
---|
790 | 792 | RK3328_PRE_PLL_POWER_DOWN); |
---|
791 | 793 | |
---|
792 | 794 | /* Configure pre-pll */ |
---|
793 | | - inno_update_bits(inno, 0xa0, RK3228_PCLK_VCO_DIV_5_MASK, |
---|
794 | | - RK3228_PCLK_VCO_DIV_5(cfg->vco_div_5_en)); |
---|
| 795 | + inno_update_bits(inno, 0xa0, RK3328_PCLK_VCO_DIV_5_MASK, |
---|
| 796 | + RK3328_PCLK_VCO_DIV_5(cfg->vco_div_5_en)); |
---|
795 | 797 | inno_write(inno, 0xa1, RK3328_PRE_PLL_PRE_DIV(cfg->prediv)); |
---|
796 | 798 | |
---|
797 | 799 | val = RK3328_SPREAD_SPECTRUM_MOD_DISABLE; |
---|
.. | .. |
---|
1021 | 1023 | |
---|
1022 | 1024 | inno_write(inno, 0xac, RK3328_POST_PLL_FB_DIV_7_0(cfg->fbdiv)); |
---|
1023 | 1025 | if (cfg->postdiv == 1) { |
---|
1024 | | - inno_write(inno, 0xaa, RK3328_POST_PLL_REFCLK_SEL_TMDS); |
---|
1025 | 1026 | inno_write(inno, 0xab, RK3328_POST_PLL_FB_DIV_8(cfg->fbdiv) | |
---|
1026 | 1027 | RK3328_POST_PLL_PRE_DIV(cfg->prediv)); |
---|
| 1028 | + inno_write(inno, 0xaa, RK3328_POST_PLL_REFCLK_SEL_TMDS | |
---|
| 1029 | + RK3328_POST_PLL_POWER_DOWN); |
---|
1027 | 1030 | } else { |
---|
1028 | 1031 | v = (cfg->postdiv / 2) - 1; |
---|
1029 | 1032 | v &= RK3328_POST_PLL_POST_DIV_MASK; |
---|
.. | .. |
---|
1031 | 1034 | inno_write(inno, 0xab, RK3328_POST_PLL_FB_DIV_8(cfg->fbdiv) | |
---|
1032 | 1035 | RK3328_POST_PLL_PRE_DIV(cfg->prediv)); |
---|
1033 | 1036 | inno_write(inno, 0xaa, RK3328_POST_PLL_POST_DIV_ENABLE | |
---|
1034 | | - RK3328_POST_PLL_REFCLK_SEL_TMDS); |
---|
| 1037 | + RK3328_POST_PLL_REFCLK_SEL_TMDS | |
---|
| 1038 | + RK3328_POST_PLL_POWER_DOWN); |
---|
1035 | 1039 | } |
---|
1036 | 1040 | |
---|
1037 | 1041 | for (v = 0; v < 14; v++) |
---|