clk: imx: refine the powerdown bit of clk-pllv3
The powerdown bit is a bit confused, let's change it to power_bit to relfect both powerdown and powerup case according to different plls. Signed-off-by: Dong Aisheng <aisheng.dong@nxp.com> Signed-off-by: Shawn Guo <shawnguo@kernel.org>
This commit is contained in:
@@ -29,8 +29,8 @@
|
|||||||
* struct clk_pllv3 - IMX PLL clock version 3
|
* struct clk_pllv3 - IMX PLL clock version 3
|
||||||
* @clk_hw: clock source
|
* @clk_hw: clock source
|
||||||
* @base: base address of PLL registers
|
* @base: base address of PLL registers
|
||||||
* @powerup_set: set POWER bit to power up the PLL
|
* @power_bit: pll power bit mask
|
||||||
* @powerdown: pll powerdown offset bit
|
* @powerup_set: set power_bit to power up the PLL
|
||||||
* @div_mask: mask of divider bits
|
* @div_mask: mask of divider bits
|
||||||
* @div_shift: shift of divider bits
|
* @div_shift: shift of divider bits
|
||||||
*
|
*
|
||||||
@@ -40,8 +40,8 @@
|
|||||||
struct clk_pllv3 {
|
struct clk_pllv3 {
|
||||||
struct clk_hw hw;
|
struct clk_hw hw;
|
||||||
void __iomem *base;
|
void __iomem *base;
|
||||||
|
u32 power_bit;
|
||||||
bool powerup_set;
|
bool powerup_set;
|
||||||
u32 powerdown;
|
|
||||||
u32 div_mask;
|
u32 div_mask;
|
||||||
u32 div_shift;
|
u32 div_shift;
|
||||||
unsigned long ref_clock;
|
unsigned long ref_clock;
|
||||||
@@ -52,7 +52,7 @@ struct clk_pllv3 {
|
|||||||
static int clk_pllv3_wait_lock(struct clk_pllv3 *pll)
|
static int clk_pllv3_wait_lock(struct clk_pllv3 *pll)
|
||||||
{
|
{
|
||||||
unsigned long timeout = jiffies + msecs_to_jiffies(10);
|
unsigned long timeout = jiffies + msecs_to_jiffies(10);
|
||||||
u32 val = readl_relaxed(pll->base) & pll->powerdown;
|
u32 val = readl_relaxed(pll->base) & pll->power_bit;
|
||||||
|
|
||||||
/* No need to wait for lock when pll is not powered up */
|
/* No need to wait for lock when pll is not powered up */
|
||||||
if ((pll->powerup_set && !val) || (!pll->powerup_set && val))
|
if ((pll->powerup_set && !val) || (!pll->powerup_set && val))
|
||||||
@@ -77,9 +77,9 @@ static int clk_pllv3_prepare(struct clk_hw *hw)
|
|||||||
|
|
||||||
val = readl_relaxed(pll->base);
|
val = readl_relaxed(pll->base);
|
||||||
if (pll->powerup_set)
|
if (pll->powerup_set)
|
||||||
val |= pll->powerdown;
|
val |= pll->power_bit;
|
||||||
else
|
else
|
||||||
val &= ~pll->powerdown;
|
val &= ~pll->power_bit;
|
||||||
writel_relaxed(val, pll->base);
|
writel_relaxed(val, pll->base);
|
||||||
|
|
||||||
return clk_pllv3_wait_lock(pll);
|
return clk_pllv3_wait_lock(pll);
|
||||||
@@ -92,9 +92,9 @@ static void clk_pllv3_unprepare(struct clk_hw *hw)
|
|||||||
|
|
||||||
val = readl_relaxed(pll->base);
|
val = readl_relaxed(pll->base);
|
||||||
if (pll->powerup_set)
|
if (pll->powerup_set)
|
||||||
val &= ~pll->powerdown;
|
val &= ~pll->power_bit;
|
||||||
else
|
else
|
||||||
val |= pll->powerdown;
|
val |= pll->power_bit;
|
||||||
writel_relaxed(val, pll->base);
|
writel_relaxed(val, pll->base);
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -316,7 +316,7 @@ struct clk *imx_clk_pllv3(enum imx_pllv3_type type, const char *name,
|
|||||||
if (!pll)
|
if (!pll)
|
||||||
return ERR_PTR(-ENOMEM);
|
return ERR_PTR(-ENOMEM);
|
||||||
|
|
||||||
pll->powerdown = BM_PLL_POWER;
|
pll->power_bit = BM_PLL_POWER;
|
||||||
|
|
||||||
switch (type) {
|
switch (type) {
|
||||||
case IMX_PLLV3_SYS:
|
case IMX_PLLV3_SYS:
|
||||||
@@ -332,7 +332,7 @@ struct clk *imx_clk_pllv3(enum imx_pllv3_type type, const char *name,
|
|||||||
ops = &clk_pllv3_av_ops;
|
ops = &clk_pllv3_av_ops;
|
||||||
break;
|
break;
|
||||||
case IMX_PLLV3_ENET_IMX7:
|
case IMX_PLLV3_ENET_IMX7:
|
||||||
pll->powerdown = IMX7_ENET_PLL_POWER;
|
pll->power_bit = IMX7_ENET_PLL_POWER;
|
||||||
pll->ref_clock = 1000000000;
|
pll->ref_clock = 1000000000;
|
||||||
ops = &clk_pllv3_enet_ops;
|
ops = &clk_pllv3_enet_ops;
|
||||||
break;
|
break;
|
||||||
|
Reference in New Issue
Block a user