aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/clk
diff options
context:
space:
mode:
authorPeter De Schrijver <pdeschrijver@nvidia.com>2013-04-03 10:40:40 -0400
committerStephen Warren <swarren@nvidia.com>2013-04-04 18:10:49 -0400
commit3e72771e210348fbd7ff0ea1b9e14cd88380c05b (patch)
tree5bb1543197683bdcaf8c8b4c5221147f717a7b6f /drivers/clk
parent0b6525acd13f2d33cd3be86d0dbd2ddd1ffeda8f (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')
-rw-r--r--drivers/clk/tegra/clk-pll.c6
-rw-r--r--drivers/clk/tegra/clk-tegra20.c20
-rw-r--r--drivers/clk/tegra/clk-tegra30.c22
-rw-r--r--drivers/clk/tegra/clk.h2
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)
119static int clk_pll_wait_for_lock(struct tegra_clk_pll *pll) 119static 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;