diff options
author | Peter De Schrijver <pdeschrijver@nvidia.com> | 2013-04-03 10:40:40 -0400 |
---|---|---|
committer | Stephen Warren <swarren@nvidia.com> | 2013-04-04 18:10:49 -0400 |
commit | 3e72771e210348fbd7ff0ea1b9e14cd88380c05b (patch) | |
tree | 5bb1543197683bdcaf8c8b4c5221147f717a7b6f /drivers/clk/tegra | |
parent | 0b6525acd13f2d33cd3be86d0dbd2ddd1ffeda8f (diff) |
clk: tegra: move from a lock bit idx to a lock mask
PLLC2 and PLLC3 on Tegra114 have separate phaselock and frequencylock bits.
So switch to a lock mask to be able to test both at the same time.
Signed-off-by: Peter De Schrijver <pdeschrijver@nvidia.com>
Acked-by: Mike Turquette <mturquette@linaro.org>
Signed-off-by: Stephen Warren <swarren@nvidia.com>
Diffstat (limited to 'drivers/clk/tegra')
-rw-r--r-- | drivers/clk/tegra/clk-pll.c | 6 | ||||
-rw-r--r-- | drivers/clk/tegra/clk-tegra20.c | 20 | ||||
-rw-r--r-- | drivers/clk/tegra/clk-tegra30.c | 22 | ||||
-rw-r--r-- | drivers/clk/tegra/clk.h | 2 |
4 files changed, 25 insertions, 25 deletions
diff --git a/drivers/clk/tegra/clk-pll.c b/drivers/clk/tegra/clk-pll.c index ccb367ee7e78..0b963522479b 100644 --- a/drivers/clk/tegra/clk-pll.c +++ b/drivers/clk/tegra/clk-pll.c | |||
@@ -119,7 +119,7 @@ static void clk_pll_enable_lock(struct tegra_clk_pll *pll) | |||
119 | static int clk_pll_wait_for_lock(struct tegra_clk_pll *pll) | 119 | static int clk_pll_wait_for_lock(struct tegra_clk_pll *pll) |
120 | { | 120 | { |
121 | int i; | 121 | int i; |
122 | u32 val, lock_bit; | 122 | u32 val, lock_mask; |
123 | void __iomem *lock_addr; | 123 | void __iomem *lock_addr; |
124 | 124 | ||
125 | if (!(pll->flags & TEGRA_PLL_USE_LOCK)) { | 125 | if (!(pll->flags & TEGRA_PLL_USE_LOCK)) { |
@@ -133,11 +133,11 @@ static int clk_pll_wait_for_lock(struct tegra_clk_pll *pll) | |||
133 | else | 133 | else |
134 | lock_addr += pll->params->base_reg; | 134 | lock_addr += pll->params->base_reg; |
135 | 135 | ||
136 | lock_bit = BIT(pll->params->lock_bit_idx); | 136 | lock_mask = pll->params->lock_mask; |
137 | 137 | ||
138 | for (i = 0; i < pll->params->lock_delay; i++) { | 138 | for (i = 0; i < pll->params->lock_delay; i++) { |
139 | val = readl_relaxed(lock_addr); | 139 | val = readl_relaxed(lock_addr); |
140 | if (val & lock_bit) { | 140 | if ((val & lock_mask) == lock_mask) { |
141 | udelay(PLL_POST_LOCK_DELAY); | 141 | udelay(PLL_POST_LOCK_DELAY); |
142 | return 0; | 142 | return 0; |
143 | } | 143 | } |
diff --git a/drivers/clk/tegra/clk-tegra20.c b/drivers/clk/tegra/clk-tegra20.c index f215bf10c9ff..5c7b58b96911 100644 --- a/drivers/clk/tegra/clk-tegra20.c +++ b/drivers/clk/tegra/clk-tegra20.c | |||
@@ -86,8 +86,8 @@ | |||
86 | #define PLLE_BASE 0xe8 | 86 | #define PLLE_BASE 0xe8 |
87 | #define PLLE_MISC 0xec | 87 | #define PLLE_MISC 0xec |
88 | 88 | ||
89 | #define PLL_BASE_LOCK 27 | 89 | #define PLL_BASE_LOCK BIT(27) |
90 | #define PLLE_MISC_LOCK 11 | 90 | #define PLLE_MISC_LOCK BIT(11) |
91 | 91 | ||
92 | #define PLL_MISC_LOCK_ENABLE 18 | 92 | #define PLL_MISC_LOCK_ENABLE 18 |
93 | #define PLLDU_MISC_LOCK_ENABLE 22 | 93 | #define PLLDU_MISC_LOCK_ENABLE 22 |
@@ -380,7 +380,7 @@ static struct tegra_clk_pll_params pll_c_params = { | |||
380 | .vco_max = 1400000000, | 380 | .vco_max = 1400000000, |
381 | .base_reg = PLLC_BASE, | 381 | .base_reg = PLLC_BASE, |
382 | .misc_reg = PLLC_MISC, | 382 | .misc_reg = PLLC_MISC, |
383 | .lock_bit_idx = PLL_BASE_LOCK, | 383 | .lock_mask = PLL_BASE_LOCK, |
384 | .lock_enable_bit_idx = PLL_MISC_LOCK_ENABLE, | 384 | .lock_enable_bit_idx = PLL_MISC_LOCK_ENABLE, |
385 | .lock_delay = 300, | 385 | .lock_delay = 300, |
386 | }; | 386 | }; |
@@ -394,7 +394,7 @@ static struct tegra_clk_pll_params pll_m_params = { | |||
394 | .vco_max = 1200000000, | 394 | .vco_max = 1200000000, |
395 | .base_reg = PLLM_BASE, | 395 | .base_reg = PLLM_BASE, |
396 | .misc_reg = PLLM_MISC, | 396 | .misc_reg = PLLM_MISC, |
397 | .lock_bit_idx = PLL_BASE_LOCK, | 397 | .lock_mask = PLL_BASE_LOCK, |
398 | .lock_enable_bit_idx = PLL_MISC_LOCK_ENABLE, | 398 | .lock_enable_bit_idx = PLL_MISC_LOCK_ENABLE, |
399 | .lock_delay = 300, | 399 | .lock_delay = 300, |
400 | }; | 400 | }; |
@@ -408,7 +408,7 @@ static struct tegra_clk_pll_params pll_p_params = { | |||
408 | .vco_max = 1400000000, | 408 | .vco_max = 1400000000, |
409 | .base_reg = PLLP_BASE, | 409 | .base_reg = PLLP_BASE, |
410 | .misc_reg = PLLP_MISC, | 410 | .misc_reg = PLLP_MISC, |
411 | .lock_bit_idx = PLL_BASE_LOCK, | 411 | .lock_mask = PLL_BASE_LOCK, |
412 | .lock_enable_bit_idx = PLL_MISC_LOCK_ENABLE, | 412 | .lock_enable_bit_idx = PLL_MISC_LOCK_ENABLE, |
413 | .lock_delay = 300, | 413 | .lock_delay = 300, |
414 | }; | 414 | }; |
@@ -422,7 +422,7 @@ static struct tegra_clk_pll_params pll_a_params = { | |||
422 | .vco_max = 1400000000, | 422 | .vco_max = 1400000000, |
423 | .base_reg = PLLA_BASE, | 423 | .base_reg = PLLA_BASE, |
424 | .misc_reg = PLLA_MISC, | 424 | .misc_reg = PLLA_MISC, |
425 | .lock_bit_idx = PLL_BASE_LOCK, | 425 | .lock_mask = PLL_BASE_LOCK, |
426 | .lock_enable_bit_idx = PLL_MISC_LOCK_ENABLE, | 426 | .lock_enable_bit_idx = PLL_MISC_LOCK_ENABLE, |
427 | .lock_delay = 300, | 427 | .lock_delay = 300, |
428 | }; | 428 | }; |
@@ -436,7 +436,7 @@ static struct tegra_clk_pll_params pll_d_params = { | |||
436 | .vco_max = 1000000000, | 436 | .vco_max = 1000000000, |
437 | .base_reg = PLLD_BASE, | 437 | .base_reg = PLLD_BASE, |
438 | .misc_reg = PLLD_MISC, | 438 | .misc_reg = PLLD_MISC, |
439 | .lock_bit_idx = PLL_BASE_LOCK, | 439 | .lock_mask = PLL_BASE_LOCK, |
440 | .lock_enable_bit_idx = PLLDU_MISC_LOCK_ENABLE, | 440 | .lock_enable_bit_idx = PLLDU_MISC_LOCK_ENABLE, |
441 | .lock_delay = 1000, | 441 | .lock_delay = 1000, |
442 | }; | 442 | }; |
@@ -456,7 +456,7 @@ static struct tegra_clk_pll_params pll_u_params = { | |||
456 | .vco_max = 960000000, | 456 | .vco_max = 960000000, |
457 | .base_reg = PLLU_BASE, | 457 | .base_reg = PLLU_BASE, |
458 | .misc_reg = PLLU_MISC, | 458 | .misc_reg = PLLU_MISC, |
459 | .lock_bit_idx = PLL_BASE_LOCK, | 459 | .lock_mask = PLL_BASE_LOCK, |
460 | .lock_enable_bit_idx = PLLDU_MISC_LOCK_ENABLE, | 460 | .lock_enable_bit_idx = PLLDU_MISC_LOCK_ENABLE, |
461 | .lock_delay = 1000, | 461 | .lock_delay = 1000, |
462 | .pdiv_tohw = pllu_p, | 462 | .pdiv_tohw = pllu_p, |
@@ -471,7 +471,7 @@ static struct tegra_clk_pll_params pll_x_params = { | |||
471 | .vco_max = 1200000000, | 471 | .vco_max = 1200000000, |
472 | .base_reg = PLLX_BASE, | 472 | .base_reg = PLLX_BASE, |
473 | .misc_reg = PLLX_MISC, | 473 | .misc_reg = PLLX_MISC, |
474 | .lock_bit_idx = PLL_BASE_LOCK, | 474 | .lock_mask = PLL_BASE_LOCK, |
475 | .lock_enable_bit_idx = PLL_MISC_LOCK_ENABLE, | 475 | .lock_enable_bit_idx = PLL_MISC_LOCK_ENABLE, |
476 | .lock_delay = 300, | 476 | .lock_delay = 300, |
477 | }; | 477 | }; |
@@ -485,7 +485,7 @@ static struct tegra_clk_pll_params pll_e_params = { | |||
485 | .vco_max = 0, | 485 | .vco_max = 0, |
486 | .base_reg = PLLE_BASE, | 486 | .base_reg = PLLE_BASE, |
487 | .misc_reg = PLLE_MISC, | 487 | .misc_reg = PLLE_MISC, |
488 | .lock_bit_idx = PLLE_MISC_LOCK, | 488 | .lock_mask = PLLE_MISC_LOCK, |
489 | .lock_enable_bit_idx = PLLE_MISC_LOCK_ENABLE, | 489 | .lock_enable_bit_idx = PLLE_MISC_LOCK_ENABLE, |
490 | .lock_delay = 0, | 490 | .lock_delay = 0, |
491 | }; | 491 | }; |
diff --git a/drivers/clk/tegra/clk-tegra30.c b/drivers/clk/tegra/clk-tegra30.c index fe768fe769b2..735f964edc65 100644 --- a/drivers/clk/tegra/clk-tegra30.c +++ b/drivers/clk/tegra/clk-tegra30.c | |||
@@ -116,8 +116,8 @@ | |||
116 | #define PLLDU_MISC_LOCK_ENABLE 22 | 116 | #define PLLDU_MISC_LOCK_ENABLE 22 |
117 | #define PLLE_MISC_LOCK_ENABLE 9 | 117 | #define PLLE_MISC_LOCK_ENABLE 9 |
118 | 118 | ||
119 | #define PLL_BASE_LOCK 27 | 119 | #define PLL_BASE_LOCK BIT(27) |
120 | #define PLLE_MISC_LOCK 11 | 120 | #define PLLE_MISC_LOCK BIT(11) |
121 | 121 | ||
122 | #define PLLE_AUX 0x48c | 122 | #define PLLE_AUX 0x48c |
123 | #define PLLC_OUT 0x84 | 123 | #define PLLC_OUT 0x84 |
@@ -559,7 +559,7 @@ static struct tegra_clk_pll_params pll_c_params = { | |||
559 | .vco_max = 1400000000, | 559 | .vco_max = 1400000000, |
560 | .base_reg = PLLC_BASE, | 560 | .base_reg = PLLC_BASE, |
561 | .misc_reg = PLLC_MISC, | 561 | .misc_reg = PLLC_MISC, |
562 | .lock_bit_idx = PLL_BASE_LOCK, | 562 | .lock_mask = PLL_BASE_LOCK, |
563 | .lock_enable_bit_idx = PLL_MISC_LOCK_ENABLE, | 563 | .lock_enable_bit_idx = PLL_MISC_LOCK_ENABLE, |
564 | .lock_delay = 300, | 564 | .lock_delay = 300, |
565 | }; | 565 | }; |
@@ -573,7 +573,7 @@ static struct tegra_clk_pll_params pll_m_params = { | |||
573 | .vco_max = 1200000000, | 573 | .vco_max = 1200000000, |
574 | .base_reg = PLLM_BASE, | 574 | .base_reg = PLLM_BASE, |
575 | .misc_reg = PLLM_MISC, | 575 | .misc_reg = PLLM_MISC, |
576 | .lock_bit_idx = PLL_BASE_LOCK, | 576 | .lock_mask = PLL_BASE_LOCK, |
577 | .lock_enable_bit_idx = PLL_MISC_LOCK_ENABLE, | 577 | .lock_enable_bit_idx = PLL_MISC_LOCK_ENABLE, |
578 | .lock_delay = 300, | 578 | .lock_delay = 300, |
579 | }; | 579 | }; |
@@ -587,7 +587,7 @@ static struct tegra_clk_pll_params pll_p_params = { | |||
587 | .vco_max = 1400000000, | 587 | .vco_max = 1400000000, |
588 | .base_reg = PLLP_BASE, | 588 | .base_reg = PLLP_BASE, |
589 | .misc_reg = PLLP_MISC, | 589 | .misc_reg = PLLP_MISC, |
590 | .lock_bit_idx = PLL_BASE_LOCK, | 590 | .lock_mask = PLL_BASE_LOCK, |
591 | .lock_enable_bit_idx = PLL_MISC_LOCK_ENABLE, | 591 | .lock_enable_bit_idx = PLL_MISC_LOCK_ENABLE, |
592 | .lock_delay = 300, | 592 | .lock_delay = 300, |
593 | }; | 593 | }; |
@@ -601,7 +601,7 @@ static struct tegra_clk_pll_params pll_a_params = { | |||
601 | .vco_max = 1400000000, | 601 | .vco_max = 1400000000, |
602 | .base_reg = PLLA_BASE, | 602 | .base_reg = PLLA_BASE, |
603 | .misc_reg = PLLA_MISC, | 603 | .misc_reg = PLLA_MISC, |
604 | .lock_bit_idx = PLL_BASE_LOCK, | 604 | .lock_mask = PLL_BASE_LOCK, |
605 | .lock_enable_bit_idx = PLL_MISC_LOCK_ENABLE, | 605 | .lock_enable_bit_idx = PLL_MISC_LOCK_ENABLE, |
606 | .lock_delay = 300, | 606 | .lock_delay = 300, |
607 | }; | 607 | }; |
@@ -615,7 +615,7 @@ static struct tegra_clk_pll_params pll_d_params = { | |||
615 | .vco_max = 1000000000, | 615 | .vco_max = 1000000000, |
616 | .base_reg = PLLD_BASE, | 616 | .base_reg = PLLD_BASE, |
617 | .misc_reg = PLLD_MISC, | 617 | .misc_reg = PLLD_MISC, |
618 | .lock_bit_idx = PLL_BASE_LOCK, | 618 | .lock_mask = PLL_BASE_LOCK, |
619 | .lock_enable_bit_idx = PLLDU_MISC_LOCK_ENABLE, | 619 | .lock_enable_bit_idx = PLLDU_MISC_LOCK_ENABLE, |
620 | .lock_delay = 1000, | 620 | .lock_delay = 1000, |
621 | }; | 621 | }; |
@@ -629,7 +629,7 @@ static struct tegra_clk_pll_params pll_d2_params = { | |||
629 | .vco_max = 1000000000, | 629 | .vco_max = 1000000000, |
630 | .base_reg = PLLD2_BASE, | 630 | .base_reg = PLLD2_BASE, |
631 | .misc_reg = PLLD2_MISC, | 631 | .misc_reg = PLLD2_MISC, |
632 | .lock_bit_idx = PLL_BASE_LOCK, | 632 | .lock_mask = PLL_BASE_LOCK, |
633 | .lock_enable_bit_idx = PLLDU_MISC_LOCK_ENABLE, | 633 | .lock_enable_bit_idx = PLLDU_MISC_LOCK_ENABLE, |
634 | .lock_delay = 1000, | 634 | .lock_delay = 1000, |
635 | }; | 635 | }; |
@@ -643,7 +643,7 @@ static struct tegra_clk_pll_params pll_u_params = { | |||
643 | .vco_max = 960000000, | 643 | .vco_max = 960000000, |
644 | .base_reg = PLLU_BASE, | 644 | .base_reg = PLLU_BASE, |
645 | .misc_reg = PLLU_MISC, | 645 | .misc_reg = PLLU_MISC, |
646 | .lock_bit_idx = PLL_BASE_LOCK, | 646 | .lock_mask = PLL_BASE_LOCK, |
647 | .lock_enable_bit_idx = PLLDU_MISC_LOCK_ENABLE, | 647 | .lock_enable_bit_idx = PLLDU_MISC_LOCK_ENABLE, |
648 | .lock_delay = 1000, | 648 | .lock_delay = 1000, |
649 | .pdiv_tohw = pllu_p, | 649 | .pdiv_tohw = pllu_p, |
@@ -658,7 +658,7 @@ static struct tegra_clk_pll_params pll_x_params = { | |||
658 | .vco_max = 1700000000, | 658 | .vco_max = 1700000000, |
659 | .base_reg = PLLX_BASE, | 659 | .base_reg = PLLX_BASE, |
660 | .misc_reg = PLLX_MISC, | 660 | .misc_reg = PLLX_MISC, |
661 | .lock_bit_idx = PLL_BASE_LOCK, | 661 | .lock_mask = PLL_BASE_LOCK, |
662 | .lock_enable_bit_idx = PLL_MISC_LOCK_ENABLE, | 662 | .lock_enable_bit_idx = PLL_MISC_LOCK_ENABLE, |
663 | .lock_delay = 300, | 663 | .lock_delay = 300, |
664 | }; | 664 | }; |
@@ -672,7 +672,7 @@ static struct tegra_clk_pll_params pll_e_params = { | |||
672 | .vco_max = 2400000000U, | 672 | .vco_max = 2400000000U, |
673 | .base_reg = PLLE_BASE, | 673 | .base_reg = PLLE_BASE, |
674 | .misc_reg = PLLE_MISC, | 674 | .misc_reg = PLLE_MISC, |
675 | .lock_bit_idx = PLLE_MISC_LOCK, | 675 | .lock_mask = PLLE_MISC_LOCK, |
676 | .lock_enable_bit_idx = PLLE_MISC_LOCK_ENABLE, | 676 | .lock_enable_bit_idx = PLLE_MISC_LOCK_ENABLE, |
677 | .lock_delay = 300, | 677 | .lock_delay = 300, |
678 | }; | 678 | }; |
diff --git a/drivers/clk/tegra/clk.h b/drivers/clk/tegra/clk.h index 925da451bd19..3b498e0c8ae5 100644 --- a/drivers/clk/tegra/clk.h +++ b/drivers/clk/tegra/clk.h | |||
@@ -154,7 +154,7 @@ struct tegra_clk_pll_params { | |||
154 | u32 base_reg; | 154 | u32 base_reg; |
155 | u32 misc_reg; | 155 | u32 misc_reg; |
156 | u32 lock_reg; | 156 | u32 lock_reg; |
157 | u32 lock_bit_idx; | 157 | u32 lock_mask; |
158 | u32 lock_enable_bit_idx; | 158 | u32 lock_enable_bit_idx; |
159 | int lock_delay; | 159 | int lock_delay; |
160 | int max_p; | 160 | int max_p; |