24
24
25
25
#define BM_PLL_POWER (0x1 << 12)
26
26
#define BM_PLL_LOCK (0x1 << 31)
27
+ #define IMX7_ENET_PLL_POWER (0x1 << 5)
27
28
28
29
/**
29
30
* struct clk_pllv3 - IMX PLL clock version 3
30
31
* @clk_hw: clock source
31
32
* @base: base address of PLL registers
32
33
* @powerup_set: set POWER bit to power up the PLL
34
+ * @powerdown: pll powerdown offset bit
33
35
* @div_mask: mask of divider bits
34
36
* @div_shift: shift of divider bits
35
37
*
@@ -40,6 +42,7 @@ struct clk_pllv3 {
40
42
struct clk_hw hw ;
41
43
void __iomem * base ;
42
44
bool powerup_set ;
45
+ u32 powerdown ;
43
46
u32 div_mask ;
44
47
u32 div_shift ;
45
48
};
@@ -49,7 +52,7 @@ struct clk_pllv3 {
49
52
static int clk_pllv3_wait_lock (struct clk_pllv3 * pll )
50
53
{
51
54
unsigned long timeout = jiffies + msecs_to_jiffies (10 );
52
- u32 val = readl_relaxed (pll -> base ) & BM_PLL_POWER ;
55
+ u32 val = readl_relaxed (pll -> base ) & pll -> powerdown ;
53
56
54
57
/* No need to wait for lock when pll is not powered up */
55
58
if ((pll -> powerup_set && !val ) || (!pll -> powerup_set && val ))
@@ -293,6 +296,8 @@ struct clk *imx_clk_pllv3(enum imx_pllv3_type type, const char *name,
293
296
if (!pll )
294
297
return ERR_PTR (- ENOMEM );
295
298
299
+ pll -> powerdown = BM_PLL_POWER ;
300
+
296
301
switch (type ) {
297
302
case IMX_PLLV3_SYS :
298
303
ops = & clk_pllv3_sys_ops ;
@@ -306,6 +311,8 @@ struct clk *imx_clk_pllv3(enum imx_pllv3_type type, const char *name,
306
311
case IMX_PLLV3_AV :
307
312
ops = & clk_pllv3_av_ops ;
308
313
break ;
314
+ case IMX_PLLV3_ENET_IMX7 :
315
+ pll -> powerdown = IMX7_ENET_PLL_POWER ;
309
316
case IMX_PLLV3_ENET :
310
317
ops = & clk_pllv3_enet_ops ;
311
318
break ;
0 commit comments