clk: rockchip: rk1808: fix up the dclk_raw/lite set rate error
Change-Id: I0b8c7d0e15501c7ecc3c5acb0e0844e722ad18ab Signed-off-by: Elaine Zhang <zhangqing@rock-chips.com>
This commit is contained in:
parent
25098c06f4
commit
1ae6d6e5c8
|
|
@ -122,9 +122,9 @@ enum {
|
||||||
HCLK_VOP_DIV_CON_MASK = 0x1f << HCLK_VOP_DIV_CON_SHIFT,
|
HCLK_VOP_DIV_CON_MASK = 0x1f << HCLK_VOP_DIV_CON_SHIFT,
|
||||||
|
|
||||||
/* CRU_CLK_SEL5_CON */
|
/* CRU_CLK_SEL5_CON */
|
||||||
DCLK_VOPRAW_SEL_VOPRAW = 1,
|
DCLK_VOPRAW_SEL_VOPRAW = 0,
|
||||||
DCLK_VOPRAW_SEL_VOPRAW_FRAC = 2,
|
DCLK_VOPRAW_SEL_VOPRAW_FRAC = 1,
|
||||||
DCLK_VOPRAW_SEL_XIN24M = 3,
|
DCLK_VOPRAW_SEL_XIN24M = 2,
|
||||||
DCLK_VOPRAW_SEL_SHIFT = 14,
|
DCLK_VOPRAW_SEL_SHIFT = 14,
|
||||||
DCLK_VOPRAW_SEL_MASK = 3 << DCLK_VOPRAW_SEL_SHIFT,
|
DCLK_VOPRAW_SEL_MASK = 3 << DCLK_VOPRAW_SEL_SHIFT,
|
||||||
DCLK_VOPRAW_PLL_SEL_CPLL = 0,
|
DCLK_VOPRAW_PLL_SEL_CPLL = 0,
|
||||||
|
|
@ -133,12 +133,12 @@ enum {
|
||||||
DCLK_VOPRAW_PLL_SEL_SHIFT = 10,
|
DCLK_VOPRAW_PLL_SEL_SHIFT = 10,
|
||||||
DCLK_VOPRAW_PLL_SEL_MASK = 3 << DCLK_VOPRAW_PLL_SEL_SHIFT,
|
DCLK_VOPRAW_PLL_SEL_MASK = 3 << DCLK_VOPRAW_PLL_SEL_SHIFT,
|
||||||
DCLK_VOPRAW_DIV_CON_SHIFT = 0,
|
DCLK_VOPRAW_DIV_CON_SHIFT = 0,
|
||||||
DCLK_VOPRAW_DIV_CON_MASK = 0xf << DCLK_VOPRAW_DIV_CON_SHIFT,
|
DCLK_VOPRAW_DIV_CON_MASK = 0xff << DCLK_VOPRAW_DIV_CON_SHIFT,
|
||||||
|
|
||||||
/* CRU_CLK_SEL7_CON */
|
/* CRU_CLK_SEL7_CON */
|
||||||
DCLK_VOPLITE_SEL_VOPRAW = 1,
|
DCLK_VOPLITE_SEL_VOPRAW = 0,
|
||||||
DCLK_VOPLITE_SEL_VOPRAW_FRAC = 2,
|
DCLK_VOPLITE_SEL_VOPRAW_FRAC = 1,
|
||||||
DCLK_VOPLITE_SEL_XIN24M = 3,
|
DCLK_VOPLITE_SEL_XIN24M = 2,
|
||||||
DCLK_VOPLITE_SEL_SHIFT = 14,
|
DCLK_VOPLITE_SEL_SHIFT = 14,
|
||||||
DCLK_VOPLITE_SEL_MASK = 3 << DCLK_VOPLITE_SEL_SHIFT,
|
DCLK_VOPLITE_SEL_MASK = 3 << DCLK_VOPLITE_SEL_SHIFT,
|
||||||
DCLK_VOPLITE_PLL_SEL_CPLL = 0,
|
DCLK_VOPLITE_PLL_SEL_CPLL = 0,
|
||||||
|
|
@ -147,7 +147,7 @@ enum {
|
||||||
DCLK_VOPLITE_PLL_SEL_SHIFT = 10,
|
DCLK_VOPLITE_PLL_SEL_SHIFT = 10,
|
||||||
DCLK_VOPLITE_PLL_SEL_MASK = 3 << DCLK_VOPLITE_PLL_SEL_SHIFT,
|
DCLK_VOPLITE_PLL_SEL_MASK = 3 << DCLK_VOPLITE_PLL_SEL_SHIFT,
|
||||||
DCLK_VOPLITE_DIV_CON_SHIFT = 0,
|
DCLK_VOPLITE_DIV_CON_SHIFT = 0,
|
||||||
DCLK_VOPLITE_DIV_CON_MASK = 0xf << DCLK_VOPLITE_DIV_CON_SHIFT,
|
DCLK_VOPLITE_DIV_CON_MASK = 0xff << DCLK_VOPLITE_DIV_CON_SHIFT,
|
||||||
|
|
||||||
/* CRU_CLK_SEL19_CON */
|
/* CRU_CLK_SEL19_CON */
|
||||||
CLK_PERI_PLL_SEL_GPLL = 0,
|
CLK_PERI_PLL_SEL_GPLL = 0,
|
||||||
|
|
|
||||||
|
|
@ -84,7 +84,7 @@ static struct rockchip_pll_clock rk1808_pll_clks[] = {
|
||||||
RK1808_MODE_CON, 4, 10, 0, rk1808_pll_rates),
|
RK1808_MODE_CON, 4, 10, 0, rk1808_pll_rates),
|
||||||
[GPLL] = PLL(pll_rk3036, PLL_GPLL, RK1808_PLL_CON(24),
|
[GPLL] = PLL(pll_rk3036, PLL_GPLL, RK1808_PLL_CON(24),
|
||||||
RK1808_MODE_CON, 6, 10, 0, rk1808_pll_rates),
|
RK1808_MODE_CON, 6, 10, 0, rk1808_pll_rates),
|
||||||
[NPLL] = PLL(pll_rk3036, PLL_NPLL, RK1808_PLL_CON(24),
|
[NPLL] = PLL(pll_rk3036, PLL_NPLL, RK1808_PLL_CON(32),
|
||||||
RK1808_MODE_CON, 8, 10, 0, rk1808_pll_rates),
|
RK1808_MODE_CON, 8, 10, 0, rk1808_pll_rates),
|
||||||
[PPLL] = PLL(pll_rk3036, PLL_PPLL, RK1808_PMU_PLL_CON(0),
|
[PPLL] = PLL(pll_rk3036, PLL_PPLL, RK1808_PMU_PLL_CON(0),
|
||||||
RK1808_PMU_MODE_CON, 0, 10, 0, rk1808_pll_rates),
|
RK1808_PMU_MODE_CON, 0, 10, 0, rk1808_pll_rates),
|
||||||
|
|
@ -517,8 +517,6 @@ static ulong rk1808_vop_set_clk(struct rk1808_clk_priv *priv,
|
||||||
* vopb dclk source from npll, and equals to
|
* vopb dclk source from npll, and equals to
|
||||||
*/
|
*/
|
||||||
src_clk_div = DIV_ROUND_UP(RK1808_VOP_PLL_LIMIT_FREQ, hz);
|
src_clk_div = DIV_ROUND_UP(RK1808_VOP_PLL_LIMIT_FREQ, hz);
|
||||||
rockchip_pll_set_rate(&rk1808_pll_clks[NPLL],
|
|
||||||
priv->cru, NPLL, src_clk_div * hz);
|
|
||||||
rk_clrsetreg(&cru->clksel_con[5],
|
rk_clrsetreg(&cru->clksel_con[5],
|
||||||
DCLK_VOPRAW_SEL_MASK |
|
DCLK_VOPRAW_SEL_MASK |
|
||||||
DCLK_VOPRAW_PLL_SEL_MASK |
|
DCLK_VOPRAW_PLL_SEL_MASK |
|
||||||
|
|
@ -528,6 +526,9 @@ static ulong rk1808_vop_set_clk(struct rk1808_clk_priv *priv,
|
||||||
DCLK_VOPRAW_PLL_SEL_NPLL <<
|
DCLK_VOPRAW_PLL_SEL_NPLL <<
|
||||||
DCLK_VOPRAW_PLL_SEL_SHIFT |
|
DCLK_VOPRAW_PLL_SEL_SHIFT |
|
||||||
(src_clk_div - 1) << DCLK_VOPRAW_DIV_CON_SHIFT);
|
(src_clk_div - 1) << DCLK_VOPRAW_DIV_CON_SHIFT);
|
||||||
|
rockchip_pll_set_rate(&rk1808_pll_clks[NPLL],
|
||||||
|
priv->cru, NPLL, src_clk_div * hz);
|
||||||
|
|
||||||
break;
|
break;
|
||||||
case DCLK_VOPLITE:
|
case DCLK_VOPLITE:
|
||||||
/*
|
/*
|
||||||
|
|
@ -546,9 +547,10 @@ static ulong rk1808_vop_set_clk(struct rk1808_clk_priv *priv,
|
||||||
rk_clrsetreg(&cru->clksel_con[7],
|
rk_clrsetreg(&cru->clksel_con[7],
|
||||||
DCLK_VOPLITE_SEL_MASK | DCLK_VOPLITE_PLL_SEL_MASK |
|
DCLK_VOPLITE_SEL_MASK | DCLK_VOPLITE_PLL_SEL_MASK |
|
||||||
DCLK_VOPLITE_DIV_CON_MASK,
|
DCLK_VOPLITE_DIV_CON_MASK,
|
||||||
DCLK_VOPLITE_SEL_VOPRAW << DCLK_VOPLITE_SEL_SHIFT |
|
(DCLK_VOPLITE_SEL_VOPRAW <<
|
||||||
parent << DCLK_VOPLITE_PLL_SEL_SHIFT |
|
DCLK_VOPLITE_SEL_SHIFT) |
|
||||||
(src_clk_div - 1) << DCLK_VOPLITE_DIV_CON_SHIFT);
|
(parent << DCLK_VOPLITE_PLL_SEL_SHIFT) |
|
||||||
|
((src_clk_div - 1) << DCLK_VOPLITE_DIV_CON_SHIFT));
|
||||||
break;
|
break;
|
||||||
default:
|
default:
|
||||||
printf("do not support this vop freq\n");
|
printf("do not support this vop freq\n");
|
||||||
|
|
@ -1076,6 +1078,8 @@ static int rk1808_clk_probe(struct udevice *dev)
|
||||||
priv->cru, CPLL);
|
priv->cru, CPLL);
|
||||||
priv->gpll_hz = rockchip_pll_get_rate(&rk1808_pll_clks[GPLL],
|
priv->gpll_hz = rockchip_pll_get_rate(&rk1808_pll_clks[GPLL],
|
||||||
priv->cru, GPLL);
|
priv->cru, GPLL);
|
||||||
|
priv->npll_hz = rockchip_pll_get_rate(&rk1808_pll_clks[NPLL],
|
||||||
|
priv->cru, NPLL);
|
||||||
|
|
||||||
/* Process 'assigned-{clocks/clock-parents/clock-rates}' properties */
|
/* Process 'assigned-{clocks/clock-parents/clock-rates}' properties */
|
||||||
ret = clk_set_defaults(dev);
|
ret = clk_set_defaults(dev);
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue