clk: rockchip: rv1126: Change some clocks' parent to GPLL
Change-Id: Ibba02fee3df6c98308d5fd657a30af3eba7321d5 Signed-off-by: Finley Xiao <finley.xiao@rock-chips.com>
This commit is contained in:
parent
6224aca828
commit
b865093666
|
|
@ -604,8 +604,7 @@ static ulong rv1126_pdcore_set_clk(struct rv1126_clk_priv *priv, ulong rate)
|
||||||
{
|
{
|
||||||
struct rv1126_cru *cru = priv->cru;
|
struct rv1126_cru *cru = priv->cru;
|
||||||
int src_clk_div;
|
int src_clk_div;
|
||||||
|
src_clk_div = DIV_ROUND_UP(priv->gpll_hz, rate);
|
||||||
src_clk_div = DIV_ROUND_UP(priv->cpll_hz, rate);
|
|
||||||
assert(src_clk_div - 1 <= 31);
|
assert(src_clk_div - 1 <= 31);
|
||||||
|
|
||||||
rk_clrsetreg(&cru->clksel_con[0], CORE_HCLK_DIV_MASK,
|
rk_clrsetreg(&cru->clksel_con[0], CORE_HCLK_DIV_MASK,
|
||||||
|
|
@ -634,12 +633,24 @@ static ulong rv1126_pdbus_get_clk(struct rv1126_clk_priv *priv, ulong clk_id)
|
||||||
case HCLK_PDBUS:
|
case HCLK_PDBUS:
|
||||||
con = readl(&cru->clksel_con[2]);
|
con = readl(&cru->clksel_con[2]);
|
||||||
div = (con & HCLK_PDBUS_DIV_MASK) >> HCLK_PDBUS_DIV_SHIFT;
|
div = (con & HCLK_PDBUS_DIV_MASK) >> HCLK_PDBUS_DIV_SHIFT;
|
||||||
|
sel = (con & HCLK_PDBUS_SEL_MASK) >> HCLK_PDBUS_SEL_SHIFT;
|
||||||
|
if (sel == HCLK_PDBUS_SEL_GPLL)
|
||||||
parent = priv->gpll_hz;
|
parent = priv->gpll_hz;
|
||||||
|
else if (sel == HCLK_PDBUS_SEL_CPLL)
|
||||||
|
parent = priv->cpll_hz;
|
||||||
|
else
|
||||||
|
return -ENOENT;
|
||||||
break;
|
break;
|
||||||
case PCLK_PDBUS:
|
case PCLK_PDBUS:
|
||||||
con = readl(&cru->clksel_con[3]);
|
con = readl(&cru->clksel_con[3]);
|
||||||
div = (con & PCLK_PDBUS_DIV_MASK) >> PCLK_PDBUS_DIV_SHIFT;
|
div = (con & PCLK_PDBUS_DIV_MASK) >> PCLK_PDBUS_DIV_SHIFT;
|
||||||
|
sel = (con & PCLK_PDBUS_SEL_MASK) >> PCLK_PDBUS_SEL_SHIFT;
|
||||||
|
if (sel == PCLK_PDBUS_SEL_GPLL)
|
||||||
parent = priv->gpll_hz;
|
parent = priv->gpll_hz;
|
||||||
|
else if (sel == PCLK_PDBUS_SEL_CPLL)
|
||||||
|
parent = priv->cpll_hz;
|
||||||
|
else
|
||||||
|
return -ENOENT;
|
||||||
break;
|
break;
|
||||||
default:
|
default:
|
||||||
return -ENOENT;
|
return -ENOENT;
|
||||||
|
|
@ -664,19 +675,19 @@ static ulong rv1126_pdbus_set_clk(struct rv1126_clk_priv *priv, ulong clk_id,
|
||||||
(src_clk_div - 1) << ACLK_PDBUS_DIV_SHIFT);
|
(src_clk_div - 1) << ACLK_PDBUS_DIV_SHIFT);
|
||||||
break;
|
break;
|
||||||
case HCLK_PDBUS:
|
case HCLK_PDBUS:
|
||||||
src_clk_div = DIV_ROUND_UP(priv->gpll_hz, rate);
|
src_clk_div = DIV_ROUND_UP(priv->cpll_hz, rate);
|
||||||
assert(src_clk_div - 1 <= 31);
|
assert(src_clk_div - 1 <= 31);
|
||||||
rk_clrsetreg(&cru->clksel_con[2],
|
rk_clrsetreg(&cru->clksel_con[2],
|
||||||
HCLK_PDBUS_SEL_MASK | HCLK_PDBUS_DIV_MASK,
|
HCLK_PDBUS_SEL_MASK | HCLK_PDBUS_DIV_MASK,
|
||||||
HCLK_PDBUS_SEL_GPLL << HCLK_PDBUS_SEL_SHIFT |
|
HCLK_PDBUS_SEL_CPLL << HCLK_PDBUS_SEL_SHIFT |
|
||||||
(src_clk_div - 1) << HCLK_PDBUS_DIV_SHIFT);
|
(src_clk_div - 1) << HCLK_PDBUS_DIV_SHIFT);
|
||||||
break;
|
break;
|
||||||
case PCLK_PDBUS:
|
case PCLK_PDBUS:
|
||||||
src_clk_div = DIV_ROUND_UP(priv->gpll_hz, rate);
|
src_clk_div = DIV_ROUND_UP(priv->cpll_hz, rate);
|
||||||
assert(src_clk_div - 1 <= 31);
|
assert(src_clk_div - 1 <= 31);
|
||||||
rk_clrsetreg(&cru->clksel_con[3],
|
rk_clrsetreg(&cru->clksel_con[3],
|
||||||
PCLK_PDBUS_SEL_MASK | PCLK_PDBUS_DIV_MASK,
|
PCLK_PDBUS_SEL_MASK | PCLK_PDBUS_DIV_MASK,
|
||||||
PCLK_PDBUS_SEL_GPLL << PCLK_PDBUS_SEL_SHIFT |
|
PCLK_PDBUS_SEL_CPLL << PCLK_PDBUS_SEL_SHIFT |
|
||||||
(src_clk_div - 1) << PCLK_PDBUS_DIV_SHIFT);
|
(src_clk_div - 1) << PCLK_PDBUS_DIV_SHIFT);
|
||||||
break;
|
break;
|
||||||
|
|
||||||
|
|
@ -717,7 +728,7 @@ static ulong rv1126_pdphp_set_clk(struct rv1126_clk_priv *priv, ulong clk_id,
|
||||||
struct rv1126_cru *cru = priv->cru;
|
struct rv1126_cru *cru = priv->cru;
|
||||||
int src_clk_div;
|
int src_clk_div;
|
||||||
|
|
||||||
src_clk_div = DIV_ROUND_UP(priv->cpll_hz, rate);
|
src_clk_div = DIV_ROUND_UP(priv->gpll_hz, rate);
|
||||||
assert(src_clk_div - 1 <= 31);
|
assert(src_clk_div - 1 <= 31);
|
||||||
|
|
||||||
switch (clk_id) {
|
switch (clk_id) {
|
||||||
|
|
@ -756,7 +767,7 @@ static ulong rv1126_pdaudio_set_clk(struct rv1126_clk_priv *priv, ulong rate)
|
||||||
struct rv1126_cru *cru = priv->cru;
|
struct rv1126_cru *cru = priv->cru;
|
||||||
int src_clk_div;
|
int src_clk_div;
|
||||||
|
|
||||||
src_clk_div = DIV_ROUND_UP(priv->cpll_hz, rate);
|
src_clk_div = DIV_ROUND_UP(priv->gpll_hz, rate);
|
||||||
assert(src_clk_div - 1 <= 31);
|
assert(src_clk_div - 1 <= 31);
|
||||||
|
|
||||||
rk_clrsetreg(&cru->clksel_con[26], HCLK_PDAUDIO_DIV_MASK,
|
rk_clrsetreg(&cru->clksel_con[26], HCLK_PDAUDIO_DIV_MASK,
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue