rockchip: clk: Add rk322x bus pclk clock support
Change-Id: I63fcd3527ac2d4447b0f49f4665ca99caa90d6e5 Signed-off-by: Zhangbin Tong <zebulun.tong@rock-chips.com>
This commit is contained in:
parent
c634813016
commit
eecd6f34ae
|
|
@ -314,6 +314,29 @@ static int rk322x_ddr_set_clk(struct rk322x_cru *cru, unsigned int set_rate)
|
|||
|
||||
return set_rate;
|
||||
}
|
||||
|
||||
static ulong rk322x_get_bus_aclk(struct rk322x_cru *cru, ulong gclk_rate)
|
||||
{
|
||||
u32 con;
|
||||
u32 aclk_div;
|
||||
|
||||
con = readl(&cru->cru_clksel_con[0]);
|
||||
aclk_div = ((con & BUS_ACLK_DIV_MASK) >> BUS_ACLK_DIV_SHIFT) + 1;
|
||||
|
||||
return gclk_rate / aclk_div;
|
||||
}
|
||||
|
||||
static ulong rk322x_get_bus_pclk(struct rk322x_cru *cru, ulong gclk_rate)
|
||||
{
|
||||
u32 con;
|
||||
u32 pclk_div;
|
||||
|
||||
con = readl(&cru->cru_clksel_con[1]);
|
||||
pclk_div = ((con & BUS_PCLK_DIV_MASK) >> BUS_PCLK_DIV_SHIFT) + 1;
|
||||
|
||||
return rk322x_get_bus_aclk(cru, gclk_rate) / pclk_div;
|
||||
}
|
||||
|
||||
static ulong rk322x_clk_get_rate(struct clk *clk)
|
||||
{
|
||||
struct rk322x_clk_priv *priv = dev_get_priv(clk->dev);
|
||||
|
|
@ -330,6 +353,9 @@ static ulong rk322x_clk_get_rate(struct clk *clk)
|
|||
case SCLK_SDMMC:
|
||||
rate = rockchip_mmc_get_clk(priv->cru, gclk_rate, clk->id);
|
||||
break;
|
||||
case PCLK_GPIO0 ... PCLK_TIMER:
|
||||
rate = rk322x_get_bus_pclk(priv->cru, gclk_rate);
|
||||
break;
|
||||
default:
|
||||
return -ENOENT;
|
||||
}
|
||||
|
|
|
|||
Loading…
Reference in New Issue