aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/clk/tegra
diff options
context:
space:
mode:
authorPeter De Schrijver <pdeschrijver@nvidia.com>2013-08-22 11:44:06 -0400
committerPeter De Schrijver <pdeschrijver@nvidia.com>2013-11-26 11:45:40 -0500
commitd5ff89a82a6d272d210db68a9487877682c94a24 (patch)
treec36ffdccfae461a88901eb3e470e7bea60eeb52f /drivers/clk/tegra
parent00c674e42c278e7af7b39b6c72dbbaa5e7ebd96c (diff)
clk: tegra: simplify periph clock data
This patch determines the register bank for clock enable/disable and reset based on the clock ID instead of hardcoding it in the tables describing the clocks. This results in less data to be maintained in the tables, making the code easier to understand. The full benefit of the change will be realized once also other clocktypes will be table based. Signed-off-by: Peter De Schrijver <pdeschrijver@nvidia.com>
Diffstat (limited to 'drivers/clk/tegra')
-rw-r--r--drivers/clk/tegra/clk-periph-gate.c8
-rw-r--r--drivers/clk/tegra/clk-periph.c6
-rw-r--r--drivers/clk/tegra/clk-tegra114.c376
-rw-r--r--drivers/clk/tegra/clk-tegra20.c220
-rw-r--r--drivers/clk/tegra/clk-tegra30.c317
-rw-r--r--drivers/clk/tegra/clk.c104
-rw-r--r--drivers/clk/tegra/clk.h17
7 files changed, 464 insertions, 584 deletions
diff --git a/drivers/clk/tegra/clk-periph-gate.c b/drivers/clk/tegra/clk-periph-gate.c
index bafee9895a24..f38f33e3c65d 100644
--- a/drivers/clk/tegra/clk-periph-gate.c
+++ b/drivers/clk/tegra/clk-periph-gate.c
@@ -151,12 +151,16 @@ const struct clk_ops tegra_clk_periph_gate_ops = {
151 151
152struct clk *tegra_clk_register_periph_gate(const char *name, 152struct clk *tegra_clk_register_periph_gate(const char *name,
153 const char *parent_name, u8 gate_flags, void __iomem *clk_base, 153 const char *parent_name, u8 gate_flags, void __iomem *clk_base,
154 unsigned long flags, int clk_num, 154 unsigned long flags, int clk_num, int *enable_refcnt)
155 struct tegra_clk_periph_regs *pregs, int *enable_refcnt)
156{ 155{
157 struct tegra_clk_periph_gate *gate; 156 struct tegra_clk_periph_gate *gate;
158 struct clk *clk; 157 struct clk *clk;
159 struct clk_init_data init; 158 struct clk_init_data init;
159 struct tegra_clk_periph_regs *pregs;
160
161 pregs = get_reg_bank(clk_num);
162 if (!pregs)
163 return ERR_PTR(-EINVAL);
160 164
161 gate = kzalloc(sizeof(*gate), GFP_KERNEL); 165 gate = kzalloc(sizeof(*gate), GFP_KERNEL);
162 if (!gate) { 166 if (!gate) {
diff --git a/drivers/clk/tegra/clk-periph.c b/drivers/clk/tegra/clk-periph.c
index b2309d37a963..735b0243261c 100644
--- a/drivers/clk/tegra/clk-periph.c
+++ b/drivers/clk/tegra/clk-periph.c
@@ -178,6 +178,7 @@ static struct clk *_tegra_clk_register_periph(const char *name,
178{ 178{
179 struct clk *clk; 179 struct clk *clk;
180 struct clk_init_data init; 180 struct clk_init_data init;
181 struct tegra_clk_periph_regs *bank;
181 182
182 init.name = name; 183 init.name = name;
183 init.ops = div ? &tegra_clk_periph_ops : &tegra_clk_periph_nodiv_ops; 184 init.ops = div ? &tegra_clk_periph_ops : &tegra_clk_periph_nodiv_ops;
@@ -185,12 +186,17 @@ static struct clk *_tegra_clk_register_periph(const char *name,
185 init.parent_names = parent_names; 186 init.parent_names = parent_names;
186 init.num_parents = num_parents; 187 init.num_parents = num_parents;
187 188
189 bank = get_reg_bank(periph->gate.clk_num);
190 if (!bank)
191 return ERR_PTR(-EINVAL);
192
188 /* Data in .init is copied by clk_register(), so stack variable OK */ 193 /* Data in .init is copied by clk_register(), so stack variable OK */
189 periph->hw.init = &init; 194 periph->hw.init = &init;
190 periph->magic = TEGRA_CLK_PERIPH_MAGIC; 195 periph->magic = TEGRA_CLK_PERIPH_MAGIC;
191 periph->mux.reg = clk_base + offset; 196 periph->mux.reg = clk_base + offset;
192 periph->divider.reg = div ? (clk_base + offset) : NULL; 197 periph->divider.reg = div ? (clk_base + offset) : NULL;
193 periph->gate.clk_base = clk_base; 198 periph->gate.clk_base = clk_base;
199 periph->gate.regs = bank;
194 200
195 clk = clk_register(NULL, &periph->hw); 201 clk = clk_register(NULL, &periph->hw);
196 if (IS_ERR(clk)) 202 if (IS_ERR(clk))
diff --git a/drivers/clk/tegra/clk-tegra114.c b/drivers/clk/tegra/clk-tegra114.c
index 2471742d68de..8507067d5dd6 100644
--- a/drivers/clk/tegra/clk-tegra114.c
+++ b/drivers/clk/tegra/clk-tegra114.c
@@ -27,27 +27,10 @@
27 27
28#include "clk.h" 28#include "clk.h"
29 29
30#define RST_DEVICES_L 0x004
31#define RST_DEVICES_H 0x008
32#define RST_DEVICES_U 0x00C
33#define RST_DFLL_DVCO 0x2F4 30#define RST_DFLL_DVCO 0x2F4
34#define RST_DEVICES_V 0x358
35#define RST_DEVICES_W 0x35C
36#define RST_DEVICES_X 0x28C
37#define RST_DEVICES_SET_L 0x300
38#define RST_DEVICES_CLR_L 0x304
39#define RST_DEVICES_SET_H 0x308
40#define RST_DEVICES_CLR_H 0x30c
41#define RST_DEVICES_SET_U 0x310
42#define RST_DEVICES_CLR_U 0x314
43#define RST_DEVICES_SET_V 0x430
44#define RST_DEVICES_CLR_V 0x434
45#define RST_DEVICES_SET_W 0x438
46#define RST_DEVICES_CLR_W 0x43c
47#define CPU_FINETRIM_SELECT 0x4d4 /* override default prop dlys */ 31#define CPU_FINETRIM_SELECT 0x4d4 /* override default prop dlys */
48#define CPU_FINETRIM_DR 0x4d8 /* rise->rise prop dly A */ 32#define CPU_FINETRIM_DR 0x4d8 /* rise->rise prop dly A */
49#define CPU_FINETRIM_R 0x4e4 /* rise->rise prop dly inc A */ 33#define CPU_FINETRIM_R 0x4e4 /* rise->rise prop dly inc A */
50#define RST_DEVICES_NUM 5
51 34
52/* RST_DFLL_DVCO bitfields */ 35/* RST_DFLL_DVCO bitfields */
53#define DVFS_DFLL_RESET_SHIFT 0 36#define DVFS_DFLL_RESET_SHIFT 0
@@ -74,26 +57,10 @@
74#define CPU_FINETRIM_R_FCPU_6_SHIFT 10 /* ftop */ 57#define CPU_FINETRIM_R_FCPU_6_SHIFT 10 /* ftop */
75#define CPU_FINETRIM_R_FCPU_6_MASK (0x3 << CPU_FINETRIM_R_FCPU_6_SHIFT) 58#define CPU_FINETRIM_R_FCPU_6_MASK (0x3 << CPU_FINETRIM_R_FCPU_6_SHIFT)
76 59
77#define CLK_OUT_ENB_L 0x010
78#define CLK_OUT_ENB_H 0x014
79#define CLK_OUT_ENB_U 0x018
80#define CLK_OUT_ENB_V 0x360
81#define CLK_OUT_ENB_W 0x364
82#define CLK_OUT_ENB_X 0x280
83#define CLK_OUT_ENB_SET_L 0x320
84#define CLK_OUT_ENB_CLR_L 0x324
85#define CLK_OUT_ENB_SET_H 0x328
86#define CLK_OUT_ENB_CLR_H 0x32c
87#define CLK_OUT_ENB_SET_U 0x330
88#define CLK_OUT_ENB_CLR_U 0x334
89#define CLK_OUT_ENB_SET_V 0x440
90#define CLK_OUT_ENB_CLR_V 0x444
91#define CLK_OUT_ENB_SET_W 0x448
92#define CLK_OUT_ENB_CLR_W 0x44c
93#define CLK_OUT_ENB_SET_X 0x284
94#define CLK_OUT_ENB_CLR_X 0x288
95#define CLK_OUT_ENB_NUM 6 60#define CLK_OUT_ENB_NUM 6
96 61
62#define TEGRA114_CLK_PERIPH_BANKS 5
63
97#define PLLC_BASE 0x80 64#define PLLC_BASE 0x80
98#define PLLC_MISC2 0x88 65#define PLLC_MISC2 0x88
99#define PLLC_MISC 0x8c 66#define PLLC_MISC 0x8c
@@ -728,53 +695,6 @@ static struct tegra_clk_pll_params pll_re_vco_params = {
728 .div_nmp = &pllre_nmp, 695 .div_nmp = &pllre_nmp,
729}; 696};
730 697
731/* Peripheral clock registers */
732
733static struct tegra_clk_periph_regs periph_l_regs = {
734 .enb_reg = CLK_OUT_ENB_L,
735 .enb_set_reg = CLK_OUT_ENB_SET_L,
736 .enb_clr_reg = CLK_OUT_ENB_CLR_L,
737 .rst_reg = RST_DEVICES_L,
738 .rst_set_reg = RST_DEVICES_SET_L,
739 .rst_clr_reg = RST_DEVICES_CLR_L,
740};
741
742static struct tegra_clk_periph_regs periph_h_regs = {
743 .enb_reg = CLK_OUT_ENB_H,
744 .enb_set_reg = CLK_OUT_ENB_SET_H,
745 .enb_clr_reg = CLK_OUT_ENB_CLR_H,
746 .rst_reg = RST_DEVICES_H,
747 .rst_set_reg = RST_DEVICES_SET_H,
748 .rst_clr_reg = RST_DEVICES_CLR_H,
749};
750
751static struct tegra_clk_periph_regs periph_u_regs = {
752 .enb_reg = CLK_OUT_ENB_U,
753 .enb_set_reg = CLK_OUT_ENB_SET_U,
754 .enb_clr_reg = CLK_OUT_ENB_CLR_U,
755 .rst_reg = RST_DEVICES_U,
756 .rst_set_reg = RST_DEVICES_SET_U,
757 .rst_clr_reg = RST_DEVICES_CLR_U,
758};
759
760static struct tegra_clk_periph_regs periph_v_regs = {
761 .enb_reg = CLK_OUT_ENB_V,
762 .enb_set_reg = CLK_OUT_ENB_SET_V,
763 .enb_clr_reg = CLK_OUT_ENB_CLR_V,
764 .rst_reg = RST_DEVICES_V,
765 .rst_set_reg = RST_DEVICES_SET_V,
766 .rst_clr_reg = RST_DEVICES_CLR_V,
767};
768
769static struct tegra_clk_periph_regs periph_w_regs = {
770 .enb_reg = CLK_OUT_ENB_W,
771 .enb_set_reg = CLK_OUT_ENB_SET_W,
772 .enb_clr_reg = CLK_OUT_ENB_CLR_W,
773 .rst_reg = RST_DEVICES_W,
774 .rst_set_reg = RST_DEVICES_SET_W,
775 .rst_clr_reg = RST_DEVICES_CLR_W,
776};
777
778/* possible OSC frequencies in Hz */ 698/* possible OSC frequencies in Hz */
779static unsigned long tegra114_input_freq[] = { 699static unsigned long tegra114_input_freq[] = {
780 [0] = 13000000, 700 [0] = 13000000,
@@ -789,77 +709,77 @@ static unsigned long tegra114_input_freq[] = {
789#define MASK(x) (BIT(x) - 1) 709#define MASK(x) (BIT(x) - 1)
790 710
791#define TEGRA_INIT_DATA_MUX(_name, _con_id, _dev_id, _parents, _offset, \ 711#define TEGRA_INIT_DATA_MUX(_name, _con_id, _dev_id, _parents, _offset, \
792 _clk_num, _regs, _gate_flags, _clk_id) \ 712 _clk_num, _gate_flags, _clk_id) \
793 TEGRA_INIT_DATA_TABLE(_name, _con_id, _dev_id, _parents, _offset,\ 713 TEGRA_INIT_DATA_TABLE(_name, _con_id, _dev_id, _parents, _offset,\
794 30, MASK(2), 0, 0, 8, 1, TEGRA_DIVIDER_ROUND_UP, \ 714 30, MASK(2), 0, 0, 8, 1, TEGRA_DIVIDER_ROUND_UP, \
795 _regs, _clk_num, periph_clk_enb_refcnt, _gate_flags,\ 715 _clk_num, periph_clk_enb_refcnt, _gate_flags,\
796 _clk_id, _parents##_idx, 0) 716 _clk_id, _parents##_idx, 0)
797 717
798#define TEGRA_INIT_DATA_MUX_FLAGS(_name, _con_id, _dev_id, _parents, _offset,\ 718#define TEGRA_INIT_DATA_MUX_FLAGS(_name, _con_id, _dev_id, _parents, _offset,\
799 _clk_num, _regs, _gate_flags, _clk_id, flags)\ 719 _clk_num, _gate_flags, _clk_id, flags)\
800 TEGRA_INIT_DATA_TABLE(_name, _con_id, _dev_id, _parents, _offset,\ 720 TEGRA_INIT_DATA_TABLE(_name, _con_id, _dev_id, _parents, _offset,\
801 30, MASK(2), 0, 0, 8, 1, TEGRA_DIVIDER_ROUND_UP,\ 721 30, MASK(2), 0, 0, 8, 1, TEGRA_DIVIDER_ROUND_UP,\
802 _regs, _clk_num, periph_clk_enb_refcnt, _gate_flags,\ 722 _clk_num, periph_clk_enb_refcnt, _gate_flags,\
803 _clk_id, _parents##_idx, flags) 723 _clk_id, _parents##_idx, flags)
804 724
805#define TEGRA_INIT_DATA_MUX8(_name, _con_id, _dev_id, _parents, _offset, \ 725#define TEGRA_INIT_DATA_MUX8(_name, _con_id, _dev_id, _parents, _offset, \
806 _clk_num, _regs, _gate_flags, _clk_id) \ 726 _clk_num, _gate_flags, _clk_id) \
807 TEGRA_INIT_DATA_TABLE(_name, _con_id, _dev_id, _parents, _offset,\ 727 TEGRA_INIT_DATA_TABLE(_name, _con_id, _dev_id, _parents, _offset,\
808 29, MASK(3), 0, 0, 8, 1, TEGRA_DIVIDER_ROUND_UP,\ 728 29, MASK(3), 0, 0, 8, 1, TEGRA_DIVIDER_ROUND_UP,\
809 _regs, _clk_num, periph_clk_enb_refcnt, _gate_flags,\ 729 _clk_num, periph_clk_enb_refcnt, _gate_flags,\
810 _clk_id, _parents##_idx, 0) 730 _clk_id, _parents##_idx, 0)
811 731
812#define TEGRA_INIT_DATA_INT_FLAGS(_name, _con_id, _dev_id, _parents, _offset,\ 732#define TEGRA_INIT_DATA_INT_FLAGS(_name, _con_id, _dev_id, _parents, _offset,\
813 _clk_num, _regs, _gate_flags, _clk_id, flags)\ 733 _clk_num, _gate_flags, _clk_id, flags)\
814 TEGRA_INIT_DATA_TABLE(_name, _con_id, _dev_id, _parents, _offset,\ 734 TEGRA_INIT_DATA_TABLE(_name, _con_id, _dev_id, _parents, _offset,\
815 30, MASK(2), 0, 0, 8, 1, TEGRA_DIVIDER_INT | \ 735 30, MASK(2), 0, 0, 8, 1, TEGRA_DIVIDER_INT | \
816 TEGRA_DIVIDER_ROUND_UP, _regs, _clk_num, \ 736 TEGRA_DIVIDER_ROUND_UP, _clk_num, \
817 periph_clk_enb_refcnt, _gate_flags, _clk_id, \ 737 periph_clk_enb_refcnt, _gate_flags, _clk_id, \
818 _parents##_idx, flags) 738 _parents##_idx, flags)
819 739
820#define TEGRA_INIT_DATA_INT8(_name, _con_id, _dev_id, _parents, _offset,\ 740#define TEGRA_INIT_DATA_INT8(_name, _con_id, _dev_id, _parents, _offset,\
821 _clk_num, _regs, _gate_flags, _clk_id) \ 741 _clk_num, _gate_flags, _clk_id) \
822 TEGRA_INIT_DATA_TABLE(_name, _con_id, _dev_id, _parents, _offset,\ 742 TEGRA_INIT_DATA_TABLE(_name, _con_id, _dev_id, _parents, _offset,\
823 29, MASK(3), 0, 0, 8, 1, TEGRA_DIVIDER_INT | \ 743 29, MASK(3), 0, 0, 8, 1, TEGRA_DIVIDER_INT | \
824 TEGRA_DIVIDER_ROUND_UP, _regs, _clk_num, \ 744 TEGRA_DIVIDER_ROUND_UP, _clk_num, \
825 periph_clk_enb_refcnt, _gate_flags, _clk_id, \ 745 periph_clk_enb_refcnt, _gate_flags, _clk_id, \
826 _parents##_idx, 0) 746 _parents##_idx, 0)
827 747
828#define TEGRA_INIT_DATA_UART(_name, _con_id, _dev_id, _parents, _offset,\ 748#define TEGRA_INIT_DATA_UART(_name, _con_id, _dev_id, _parents, _offset,\
829 _clk_num, _regs, _clk_id) \ 749 _clk_num, _clk_id) \
830 TEGRA_INIT_DATA_TABLE(_name, _con_id, _dev_id, _parents, _offset,\ 750 TEGRA_INIT_DATA_TABLE(_name, _con_id, _dev_id, _parents, _offset,\
831 30, MASK(2), 0, 0, 16, 1, TEGRA_DIVIDER_UART | \ 751 30, MASK(2), 0, 0, 16, 1, TEGRA_DIVIDER_UART | \
832 TEGRA_DIVIDER_ROUND_UP, _regs, _clk_num, \ 752 TEGRA_DIVIDER_ROUND_UP, _clk_num, \
833 periph_clk_enb_refcnt, 0, _clk_id, _parents##_idx, 0) 753 periph_clk_enb_refcnt, 0, _clk_id, _parents##_idx, 0)
834 754
835#define TEGRA_INIT_DATA_I2C(_name, _con_id, _dev_id, _parents, _offset,\ 755#define TEGRA_INIT_DATA_I2C(_name, _con_id, _dev_id, _parents, _offset,\
836 _clk_num, _regs, _clk_id) \ 756 _clk_num, _clk_id) \
837 TEGRA_INIT_DATA_TABLE(_name, _con_id, _dev_id, _parents, _offset,\ 757 TEGRA_INIT_DATA_TABLE(_name, _con_id, _dev_id, _parents, _offset,\
838 30, MASK(2), 0, 0, 16, 0, TEGRA_DIVIDER_ROUND_UP,\ 758 30, MASK(2), 0, 0, 16, 0, TEGRA_DIVIDER_ROUND_UP,\
839 _regs, _clk_num, periph_clk_enb_refcnt, 0, _clk_id,\ 759 _clk_num, periph_clk_enb_refcnt, 0, _clk_id,\
840 _parents##_idx, 0) 760 _parents##_idx, 0)
841 761
842#define TEGRA_INIT_DATA_NODIV(_name, _con_id, _dev_id, _parents, _offset, \ 762#define TEGRA_INIT_DATA_NODIV(_name, _con_id, _dev_id, _parents, _offset, \
843 _mux_shift, _mux_mask, _clk_num, _regs, \ 763 _mux_shift, _mux_mask, _clk_num, \
844 _gate_flags, _clk_id) \ 764 _gate_flags, _clk_id) \
845 TEGRA_INIT_DATA_TABLE(_name, _con_id, _dev_id, _parents, _offset,\ 765 TEGRA_INIT_DATA_TABLE(_name, _con_id, _dev_id, _parents, _offset,\
846 _mux_shift, _mux_mask, 0, 0, 0, 0, 0, _regs, \ 766 _mux_shift, _mux_mask, 0, 0, 0, 0, 0,\
847 _clk_num, periph_clk_enb_refcnt, _gate_flags, \ 767 _clk_num, periph_clk_enb_refcnt, _gate_flags, \
848 _clk_id, _parents##_idx, 0) 768 _clk_id, _parents##_idx, 0)
849 769
850#define TEGRA_INIT_DATA_XUSB(_name, _con_id, _dev_id, _parents, _offset, \ 770#define TEGRA_INIT_DATA_XUSB(_name, _con_id, _dev_id, _parents, _offset, \
851 _clk_num, _regs, _gate_flags, _clk_id) \ 771 _clk_num, _gate_flags, _clk_id) \
852 TEGRA_INIT_DATA_TABLE(_name, _con_id, _dev_id, _parents, _offset, \ 772 TEGRA_INIT_DATA_TABLE(_name, _con_id, _dev_id, _parents, _offset, \
853 29, MASK(3), 0, 0, 8, 1, TEGRA_DIVIDER_INT | \ 773 29, MASK(3), 0, 0, 8, 1, TEGRA_DIVIDER_INT | \
854 TEGRA_DIVIDER_ROUND_UP, _regs, _clk_num, \ 774 TEGRA_DIVIDER_ROUND_UP, _clk_num, \
855 periph_clk_enb_refcnt, _gate_flags, _clk_id, \ 775 periph_clk_enb_refcnt, _gate_flags, _clk_id, \
856 _parents##_idx, 0) 776 _parents##_idx, 0)
857 777
858#define TEGRA_INIT_DATA_AUDIO(_name, _con_id, _dev_id, _offset, _clk_num,\ 778#define TEGRA_INIT_DATA_AUDIO(_name, _con_id, _dev_id, _offset, _clk_num,\
859 _regs, _gate_flags, _clk_id) \ 779 _gate_flags, _clk_id) \
860 TEGRA_INIT_DATA_TABLE(_name, _con_id, _dev_id, mux_d_audio_clk, \ 780 TEGRA_INIT_DATA_TABLE(_name, _con_id, _dev_id, mux_d_audio_clk, \
861 _offset, 16, 0xE01F, 0, 0, 8, 1, \ 781 _offset, 16, 0xE01F, 0, 0, 8, 1, \
862 TEGRA_DIVIDER_ROUND_UP, _regs, _clk_num, \ 782 TEGRA_DIVIDER_ROUND_UP, _clk_num, \
863 periph_clk_enb_refcnt, _gate_flags , _clk_id, \ 783 periph_clk_enb_refcnt, _gate_flags , _clk_id, \
864 mux_d_audio_clk_idx, 0) 784 mux_d_audio_clk_idx, 0)
865 785
@@ -1612,7 +1532,7 @@ static void __init tegra114_audio_clk_init(void __iomem *clk_base)
1612 0, &clk_doubler_lock); 1532 0, &clk_doubler_lock);
1613 clk = tegra_clk_register_periph_gate("audio0_2x", "audio0_div", 1533 clk = tegra_clk_register_periph_gate("audio0_2x", "audio0_div",
1614 TEGRA_PERIPH_NO_RESET, clk_base, 1534 TEGRA_PERIPH_NO_RESET, clk_base,
1615 CLK_SET_RATE_PARENT, 113, &periph_v_regs, 1535 CLK_SET_RATE_PARENT, 113,
1616 periph_clk_enb_refcnt); 1536 periph_clk_enb_refcnt);
1617 clk_register_clkdev(clk, "audio0_2x", NULL); 1537 clk_register_clkdev(clk, "audio0_2x", NULL);
1618 clks[TEGRA114_CLK_AUDIO0_2X] = clk; 1538 clks[TEGRA114_CLK_AUDIO0_2X] = clk;
@@ -1625,7 +1545,7 @@ static void __init tegra114_audio_clk_init(void __iomem *clk_base)
1625 0, &clk_doubler_lock); 1545 0, &clk_doubler_lock);
1626 clk = tegra_clk_register_periph_gate("audio1_2x", "audio1_div", 1546 clk = tegra_clk_register_periph_gate("audio1_2x", "audio1_div",
1627 TEGRA_PERIPH_NO_RESET, clk_base, 1547 TEGRA_PERIPH_NO_RESET, clk_base,
1628 CLK_SET_RATE_PARENT, 114, &periph_v_regs, 1548 CLK_SET_RATE_PARENT, 114,
1629 periph_clk_enb_refcnt); 1549 periph_clk_enb_refcnt);
1630 clk_register_clkdev(clk, "audio1_2x", NULL); 1550 clk_register_clkdev(clk, "audio1_2x", NULL);
1631 clks[TEGRA114_CLK_AUDIO1_2X] = clk; 1551 clks[TEGRA114_CLK_AUDIO1_2X] = clk;
@@ -1638,7 +1558,7 @@ static void __init tegra114_audio_clk_init(void __iomem *clk_base)
1638 0, &clk_doubler_lock); 1558 0, &clk_doubler_lock);
1639 clk = tegra_clk_register_periph_gate("audio2_2x", "audio2_div", 1559 clk = tegra_clk_register_periph_gate("audio2_2x", "audio2_div",
1640 TEGRA_PERIPH_NO_RESET, clk_base, 1560 TEGRA_PERIPH_NO_RESET, clk_base,
1641 CLK_SET_RATE_PARENT, 115, &periph_v_regs, 1561 CLK_SET_RATE_PARENT, 115,
1642 periph_clk_enb_refcnt); 1562 periph_clk_enb_refcnt);
1643 clk_register_clkdev(clk, "audio2_2x", NULL); 1563 clk_register_clkdev(clk, "audio2_2x", NULL);
1644 clks[TEGRA114_CLK_AUDIO2_2X] = clk; 1564 clks[TEGRA114_CLK_AUDIO2_2X] = clk;
@@ -1651,7 +1571,7 @@ static void __init tegra114_audio_clk_init(void __iomem *clk_base)
1651 0, &clk_doubler_lock); 1571 0, &clk_doubler_lock);
1652 clk = tegra_clk_register_periph_gate("audio3_2x", "audio3_div", 1572 clk = tegra_clk_register_periph_gate("audio3_2x", "audio3_div",
1653 TEGRA_PERIPH_NO_RESET, clk_base, 1573 TEGRA_PERIPH_NO_RESET, clk_base,
1654 CLK_SET_RATE_PARENT, 116, &periph_v_regs, 1574 CLK_SET_RATE_PARENT, 116,
1655 periph_clk_enb_refcnt); 1575 periph_clk_enb_refcnt);
1656 clk_register_clkdev(clk, "audio3_2x", NULL); 1576 clk_register_clkdev(clk, "audio3_2x", NULL);
1657 clks[TEGRA114_CLK_AUDIO3_2X] = clk; 1577 clks[TEGRA114_CLK_AUDIO3_2X] = clk;
@@ -1664,7 +1584,7 @@ static void __init tegra114_audio_clk_init(void __iomem *clk_base)
1664 0, &clk_doubler_lock); 1584 0, &clk_doubler_lock);
1665 clk = tegra_clk_register_periph_gate("audio4_2x", "audio4_div", 1585 clk = tegra_clk_register_periph_gate("audio4_2x", "audio4_div",
1666 TEGRA_PERIPH_NO_RESET, clk_base, 1586 TEGRA_PERIPH_NO_RESET, clk_base,
1667 CLK_SET_RATE_PARENT, 117, &periph_v_regs, 1587 CLK_SET_RATE_PARENT, 117,
1668 periph_clk_enb_refcnt); 1588 periph_clk_enb_refcnt);
1669 clk_register_clkdev(clk, "audio4_2x", NULL); 1589 clk_register_clkdev(clk, "audio4_2x", NULL);
1670 clks[TEGRA114_CLK_AUDIO4_2X] = clk; 1590 clks[TEGRA114_CLK_AUDIO4_2X] = clk;
@@ -1678,7 +1598,7 @@ static void __init tegra114_audio_clk_init(void __iomem *clk_base)
1678 clk = tegra_clk_register_periph_gate("spdif_2x", "spdif_div", 1598 clk = tegra_clk_register_periph_gate("spdif_2x", "spdif_div",
1679 TEGRA_PERIPH_NO_RESET, clk_base, 1599 TEGRA_PERIPH_NO_RESET, clk_base,
1680 CLK_SET_RATE_PARENT, 118, 1600 CLK_SET_RATE_PARENT, 118,
1681 &periph_v_regs, periph_clk_enb_refcnt); 1601 periph_clk_enb_refcnt);
1682 clk_register_clkdev(clk, "spdif_2x", NULL); 1602 clk_register_clkdev(clk, "spdif_2x", NULL);
1683 clks[TEGRA114_CLK_SPDIF_2X] = clk; 1603 clks[TEGRA114_CLK_SPDIF_2X] = clk;
1684} 1604}
@@ -1805,86 +1725,86 @@ static void __init tegra114_super_clk_init(void __iomem *clk_base)
1805} 1725}
1806 1726
1807static struct tegra_periph_init_data tegra_periph_clk_list[] = { 1727static struct tegra_periph_init_data tegra_periph_clk_list[] = {
1808 TEGRA_INIT_DATA_MUX("i2s0", NULL, "tegra30-i2s.0", mux_pllaout0_audio0_2x_pllp_clkm, CLK_SOURCE_I2S0, 30, &periph_l_regs, TEGRA_PERIPH_ON_APB, TEGRA114_CLK_I2S0), 1728 TEGRA_INIT_DATA_MUX("i2s0", NULL, "tegra30-i2s.0", mux_pllaout0_audio0_2x_pllp_clkm, CLK_SOURCE_I2S0, 30, TEGRA_PERIPH_ON_APB, TEGRA114_CLK_I2S0),
1809 TEGRA_INIT_DATA_MUX("i2s1", NULL, "tegra30-i2s.1", mux_pllaout0_audio1_2x_pllp_clkm, CLK_SOURCE_I2S1, 11, &periph_l_regs, TEGRA_PERIPH_ON_APB, TEGRA114_CLK_I2S1), 1729 TEGRA_INIT_DATA_MUX("i2s1", NULL, "tegra30-i2s.1", mux_pllaout0_audio1_2x_pllp_clkm, CLK_SOURCE_I2S1, 11, TEGRA_PERIPH_ON_APB, TEGRA114_CLK_I2S1),
1810 TEGRA_INIT_DATA_MUX("i2s2", NULL, "tegra30-i2s.2", mux_pllaout0_audio2_2x_pllp_clkm, CLK_SOURCE_I2S2, 18, &periph_l_regs, TEGRA_PERIPH_ON_APB, TEGRA114_CLK_I2S2), 1730 TEGRA_INIT_DATA_MUX("i2s2", NULL, "tegra30-i2s.2", mux_pllaout0_audio2_2x_pllp_clkm, CLK_SOURCE_I2S2, 18, TEGRA_PERIPH_ON_APB, TEGRA114_CLK_I2S2),
1811 TEGRA_INIT_DATA_MUX("i2s3", NULL, "tegra30-i2s.3", mux_pllaout0_audio3_2x_pllp_clkm, CLK_SOURCE_I2S3, 101, &periph_v_regs, TEGRA_PERIPH_ON_APB, TEGRA114_CLK_I2S3), 1731 TEGRA_INIT_DATA_MUX("i2s3", NULL, "tegra30-i2s.3", mux_pllaout0_audio3_2x_pllp_clkm, CLK_SOURCE_I2S3, 101, TEGRA_PERIPH_ON_APB, TEGRA114_CLK_I2S3),
1812 TEGRA_INIT_DATA_MUX("i2s4", NULL, "tegra30-i2s.4", mux_pllaout0_audio4_2x_pllp_clkm, CLK_SOURCE_I2S4, 102, &periph_v_regs, TEGRA_PERIPH_ON_APB, TEGRA114_CLK_I2S4), 1732 TEGRA_INIT_DATA_MUX("i2s4", NULL, "tegra30-i2s.4", mux_pllaout0_audio4_2x_pllp_clkm, CLK_SOURCE_I2S4, 102, TEGRA_PERIPH_ON_APB, TEGRA114_CLK_I2S4),
1813 TEGRA_INIT_DATA_MUX("spdif_out", "spdif_out", "tegra30-spdif", mux_pllaout0_audio_2x_pllp_clkm, CLK_SOURCE_SPDIF_OUT, 10, &periph_l_regs, TEGRA_PERIPH_ON_APB, TEGRA114_CLK_SPDIF_OUT), 1733 TEGRA_INIT_DATA_MUX("spdif_out", "spdif_out", "tegra30-spdif", mux_pllaout0_audio_2x_pllp_clkm, CLK_SOURCE_SPDIF_OUT, 10, TEGRA_PERIPH_ON_APB, TEGRA114_CLK_SPDIF_OUT),
1814 TEGRA_INIT_DATA_MUX("spdif_in", "spdif_in", "tegra30-spdif", mux_pllp_pllc_pllm, CLK_SOURCE_SPDIF_IN, 10, &periph_l_regs, TEGRA_PERIPH_ON_APB, TEGRA114_CLK_SPDIF_IN), 1734 TEGRA_INIT_DATA_MUX("spdif_in", "spdif_in", "tegra30-spdif", mux_pllp_pllc_pllm, CLK_SOURCE_SPDIF_IN, 10, TEGRA_PERIPH_ON_APB, TEGRA114_CLK_SPDIF_IN),
1815 TEGRA_INIT_DATA_MUX("pwm", NULL, "pwm", mux_pllp_pllc_clk32_clkm, CLK_SOURCE_PWM, 17, &periph_l_regs, TEGRA_PERIPH_ON_APB, TEGRA114_CLK_PWM), 1735 TEGRA_INIT_DATA_MUX("pwm", NULL, "pwm", mux_pllp_pllc_clk32_clkm, CLK_SOURCE_PWM, 17, TEGRA_PERIPH_ON_APB, TEGRA114_CLK_PWM),
1816 TEGRA_INIT_DATA_MUX("adx", NULL, "adx", mux_plla_pllc_pllp_clkm, CLK_SOURCE_ADX, 154, &periph_w_regs, TEGRA_PERIPH_ON_APB, TEGRA114_CLK_ADX), 1736 TEGRA_INIT_DATA_MUX("adx", NULL, "adx", mux_plla_pllc_pllp_clkm, CLK_SOURCE_ADX, 154, TEGRA_PERIPH_ON_APB, TEGRA114_CLK_ADX),
1817 TEGRA_INIT_DATA_MUX("amx", NULL, "amx", mux_plla_pllc_pllp_clkm, CLK_SOURCE_AMX, 153, &periph_w_regs, TEGRA_PERIPH_ON_APB, TEGRA114_CLK_AMX), 1737 TEGRA_INIT_DATA_MUX("amx", NULL, "amx", mux_plla_pllc_pllp_clkm, CLK_SOURCE_AMX, 153, TEGRA_PERIPH_ON_APB, TEGRA114_CLK_AMX),
1818 TEGRA_INIT_DATA_MUX("hda", "hda", "tegra30-hda", mux_pllp_pllc_pllm_clkm, CLK_SOURCE_HDA, 125, &periph_v_regs, TEGRA_PERIPH_ON_APB, TEGRA114_CLK_HDA), 1738 TEGRA_INIT_DATA_MUX("hda", "hda", "tegra30-hda", mux_pllp_pllc_pllm_clkm, CLK_SOURCE_HDA, 125, TEGRA_PERIPH_ON_APB, TEGRA114_CLK_HDA),
1819 TEGRA_INIT_DATA_MUX("hda2codec_2x", "hda2codec", "tegra30-hda", mux_pllp_pllc_pllm_clkm, CLK_SOURCE_HDA2CODEC_2X, 111, &periph_v_regs, TEGRA_PERIPH_ON_APB, TEGRA114_CLK_HDA2CODEC_2X), 1739 TEGRA_INIT_DATA_MUX("hda2codec_2x", "hda2codec", "tegra30-hda", mux_pllp_pllc_pllm_clkm, CLK_SOURCE_HDA2CODEC_2X, 111, TEGRA_PERIPH_ON_APB, TEGRA114_CLK_HDA2CODEC_2X),
1820 TEGRA_INIT_DATA_MUX8("sbc1", NULL, "tegra11-spi.0", mux_pllp_pllc2_c_c3_pllm_clkm, CLK_SOURCE_SBC1, 41, &periph_h_regs, TEGRA_PERIPH_ON_APB, TEGRA114_CLK_SBC1), 1740 TEGRA_INIT_DATA_MUX8("sbc1", NULL, "tegra11-spi.0", mux_pllp_pllc2_c_c3_pllm_clkm, CLK_SOURCE_SBC1, 41, TEGRA_PERIPH_ON_APB, TEGRA114_CLK_SBC1),
1821 TEGRA_INIT_DATA_MUX8("sbc2", NULL, "tegra11-spi.1", mux_pllp_pllc2_c_c3_pllm_clkm, CLK_SOURCE_SBC2, 44, &periph_h_regs, TEGRA_PERIPH_ON_APB, TEGRA114_CLK_SBC2), 1741 TEGRA_INIT_DATA_MUX8("sbc2", NULL, "tegra11-spi.1", mux_pllp_pllc2_c_c3_pllm_clkm, CLK_SOURCE_SBC2, 44, TEGRA_PERIPH_ON_APB, TEGRA114_CLK_SBC2),
1822 TEGRA_INIT_DATA_MUX8("sbc3", NULL, "tegra11-spi.2", mux_pllp_pllc2_c_c3_pllm_clkm, CLK_SOURCE_SBC3, 46, &periph_h_regs, TEGRA_PERIPH_ON_APB, TEGRA114_CLK_SBC3), 1742 TEGRA_INIT_DATA_MUX8("sbc3", NULL, "tegra11-spi.2", mux_pllp_pllc2_c_c3_pllm_clkm, CLK_SOURCE_SBC3, 46, TEGRA_PERIPH_ON_APB, TEGRA114_CLK_SBC3),
1823 TEGRA_INIT_DATA_MUX8("sbc4", NULL, "tegra11-spi.3", mux_pllp_pllc2_c_c3_pllm_clkm, CLK_SOURCE_SBC4, 68, &periph_u_regs, TEGRA_PERIPH_ON_APB, TEGRA114_CLK_SBC4), 1743 TEGRA_INIT_DATA_MUX8("sbc4", NULL, "tegra11-spi.3", mux_pllp_pllc2_c_c3_pllm_clkm, CLK_SOURCE_SBC4, 68, TEGRA_PERIPH_ON_APB, TEGRA114_CLK_SBC4),
1824 TEGRA_INIT_DATA_MUX8("sbc5", NULL, "tegra11-spi.4", mux_pllp_pllc2_c_c3_pllm_clkm, CLK_SOURCE_SBC5, 104, &periph_v_regs, TEGRA_PERIPH_ON_APB, TEGRA114_CLK_SBC5), 1744 TEGRA_INIT_DATA_MUX8("sbc5", NULL, "tegra11-spi.4", mux_pllp_pllc2_c_c3_pllm_clkm, CLK_SOURCE_SBC5, 104, TEGRA_PERIPH_ON_APB, TEGRA114_CLK_SBC5),
1825 TEGRA_INIT_DATA_MUX8("sbc6", NULL, "tegra11-spi.5", mux_pllp_pllc2_c_c3_pllm_clkm, CLK_SOURCE_SBC6, 105, &periph_v_regs, TEGRA_PERIPH_ON_APB, TEGRA114_CLK_SBC6), 1745 TEGRA_INIT_DATA_MUX8("sbc6", NULL, "tegra11-spi.5", mux_pllp_pllc2_c_c3_pllm_clkm, CLK_SOURCE_SBC6, 105, TEGRA_PERIPH_ON_APB, TEGRA114_CLK_SBC6),
1826 TEGRA_INIT_DATA_MUX8("ndflash", NULL, "tegra_nand", mux_pllp_pllc2_c_c3_pllm_clkm, CLK_SOURCE_NDFLASH, 13, &periph_u_regs, TEGRA_PERIPH_ON_APB, TEGRA114_CLK_NDSPEED), 1746 TEGRA_INIT_DATA_MUX8("ndflash", NULL, "tegra_nand", mux_pllp_pllc2_c_c3_pllm_clkm, CLK_SOURCE_NDFLASH, 13, TEGRA_PERIPH_ON_APB, TEGRA114_CLK_NDSPEED),
1827 TEGRA_INIT_DATA_MUX8("ndspeed", NULL, "tegra_nand_speed", mux_pllp_pllc2_c_c3_pllm_clkm, CLK_SOURCE_NDSPEED, 80, &periph_u_regs, TEGRA_PERIPH_ON_APB, TEGRA114_CLK_NDSPEED), 1747 TEGRA_INIT_DATA_MUX8("ndspeed", NULL, "tegra_nand_speed", mux_pllp_pllc2_c_c3_pllm_clkm, CLK_SOURCE_NDSPEED, 80, TEGRA_PERIPH_ON_APB, TEGRA114_CLK_NDSPEED),
1828 TEGRA_INIT_DATA_MUX("vfir", NULL, "vfir", mux_pllp_pllc_pllm_clkm, CLK_SOURCE_VFIR, 7, &periph_l_regs, TEGRA_PERIPH_ON_APB, TEGRA114_CLK_VFIR), 1748 TEGRA_INIT_DATA_MUX("vfir", NULL, "vfir", mux_pllp_pllc_pllm_clkm, CLK_SOURCE_VFIR, 7, TEGRA_PERIPH_ON_APB, TEGRA114_CLK_VFIR),
1829 TEGRA_INIT_DATA_MUX("sdmmc1", NULL, "sdhci-tegra.0", mux_pllp_pllc_pllm_clkm, CLK_SOURCE_SDMMC1, 14, &periph_l_regs, 0, TEGRA114_CLK_SDMMC1), 1749 TEGRA_INIT_DATA_MUX("sdmmc1", NULL, "sdhci-tegra.0", mux_pllp_pllc_pllm_clkm, CLK_SOURCE_SDMMC1, 14, 0, TEGRA114_CLK_SDMMC1),
1830 TEGRA_INIT_DATA_MUX("sdmmc2", NULL, "sdhci-tegra.1", mux_pllp_pllc_pllm_clkm, CLK_SOURCE_SDMMC2, 9, &periph_l_regs, 0, TEGRA114_CLK_SDMMC2), 1750 TEGRA_INIT_DATA_MUX("sdmmc2", NULL, "sdhci-tegra.1", mux_pllp_pllc_pllm_clkm, CLK_SOURCE_SDMMC2, 9, 0, TEGRA114_CLK_SDMMC2),
1831 TEGRA_INIT_DATA_MUX("sdmmc3", NULL, "sdhci-tegra.2", mux_pllp_pllc_pllm_clkm, CLK_SOURCE_SDMMC3, 69, &periph_u_regs, 0, TEGRA114_CLK_SDMMC3), 1751 TEGRA_INIT_DATA_MUX("sdmmc3", NULL, "sdhci-tegra.2", mux_pllp_pllc_pllm_clkm, CLK_SOURCE_SDMMC3, 69, 0, TEGRA114_CLK_SDMMC3),
1832 TEGRA_INIT_DATA_MUX("sdmmc4", NULL, "sdhci-tegra.3", mux_pllp_pllc_pllm_clkm, CLK_SOURCE_SDMMC4, 15, &periph_l_regs, 0, TEGRA114_CLK_SDMMC4), 1752 TEGRA_INIT_DATA_MUX("sdmmc4", NULL, "sdhci-tegra.3", mux_pllp_pllc_pllm_clkm, CLK_SOURCE_SDMMC4, 15, 0, TEGRA114_CLK_SDMMC4),
1833 TEGRA_INIT_DATA_INT8("vde", NULL, "vde", mux_pllp_pllc2_c_c3_pllm_clkm, CLK_SOURCE_VDE, 61, &periph_h_regs, 0, TEGRA114_CLK_VDE), 1753 TEGRA_INIT_DATA_INT8("vde", NULL, "vde", mux_pllp_pllc2_c_c3_pllm_clkm, CLK_SOURCE_VDE, 61, 0, TEGRA114_CLK_VDE),
1834 TEGRA_INIT_DATA_MUX_FLAGS("csite", NULL, "csite", mux_pllp_pllc_pllm_clkm, CLK_SOURCE_CSITE, 73, &periph_u_regs, TEGRA_PERIPH_ON_APB, TEGRA114_CLK_CSITE, CLK_IGNORE_UNUSED), 1754 TEGRA_INIT_DATA_MUX_FLAGS("csite", NULL, "csite", mux_pllp_pllc_pllm_clkm, CLK_SOURCE_CSITE, 73, TEGRA_PERIPH_ON_APB, TEGRA114_CLK_CSITE, CLK_IGNORE_UNUSED),
1835 TEGRA_INIT_DATA_MUX("la", NULL, "la", mux_pllp_pllc_pllm_clkm, CLK_SOURCE_LA, 76, &periph_u_regs, TEGRA_PERIPH_ON_APB, TEGRA114_CLK_LA), 1755 TEGRA_INIT_DATA_MUX("la", NULL, "la", mux_pllp_pllc_pllm_clkm, CLK_SOURCE_LA, 76, TEGRA_PERIPH_ON_APB, TEGRA114_CLK_LA),
1836 TEGRA_INIT_DATA_MUX("trace", NULL, "trace", mux_pllp_pllc_pllm_clkm, CLK_SOURCE_TRACE, 77, &periph_u_regs, TEGRA_PERIPH_ON_APB, TEGRA114_CLK_TRACE), 1756 TEGRA_INIT_DATA_MUX("trace", NULL, "trace", mux_pllp_pllc_pllm_clkm, CLK_SOURCE_TRACE, 77, TEGRA_PERIPH_ON_APB, TEGRA114_CLK_TRACE),
1837 TEGRA_INIT_DATA_MUX("owr", NULL, "tegra_w1", mux_pllp_pllc_pllm_clkm, CLK_SOURCE_OWR, 71, &periph_u_regs, TEGRA_PERIPH_ON_APB, TEGRA114_CLK_OWR), 1757 TEGRA_INIT_DATA_MUX("owr", NULL, "tegra_w1", mux_pllp_pllc_pllm_clkm, CLK_SOURCE_OWR, 71, TEGRA_PERIPH_ON_APB, TEGRA114_CLK_OWR),
1838 TEGRA_INIT_DATA_MUX("nor", NULL, "tegra-nor", mux_pllp_pllc_pllm_clkm, CLK_SOURCE_NOR, 42, &periph_h_regs, 0, TEGRA114_CLK_NOR), 1758 TEGRA_INIT_DATA_MUX("nor", NULL, "tegra-nor", mux_pllp_pllc_pllm_clkm, CLK_SOURCE_NOR, 42, 0, TEGRA114_CLK_NOR),
1839 TEGRA_INIT_DATA_MUX("mipi", NULL, "mipi", mux_pllp_pllc_pllm_clkm, CLK_SOURCE_MIPI, 50, &periph_h_regs, TEGRA_PERIPH_ON_APB, TEGRA114_CLK_MIPI), 1759 TEGRA_INIT_DATA_MUX("mipi", NULL, "mipi", mux_pllp_pllc_pllm_clkm, CLK_SOURCE_MIPI, 50, TEGRA_PERIPH_ON_APB, TEGRA114_CLK_MIPI),
1840 TEGRA_INIT_DATA_I2C("i2c1", "div-clk", "tegra11-i2c.0", mux_pllp_clkm, CLK_SOURCE_I2C1, 12, &periph_l_regs, TEGRA114_CLK_I2C1), 1760 TEGRA_INIT_DATA_I2C("i2c1", "div-clk", "tegra11-i2c.0", mux_pllp_clkm, CLK_SOURCE_I2C1, 12, TEGRA114_CLK_I2C1),
1841 TEGRA_INIT_DATA_I2C("i2c2", "div-clk", "tegra11-i2c.1", mux_pllp_clkm, CLK_SOURCE_I2C2, 54, &periph_h_regs, TEGRA114_CLK_I2C2), 1761 TEGRA_INIT_DATA_I2C("i2c2", "div-clk", "tegra11-i2c.1", mux_pllp_clkm, CLK_SOURCE_I2C2, 54, TEGRA114_CLK_I2C2),
1842 TEGRA_INIT_DATA_I2C("i2c3", "div-clk", "tegra11-i2c.2", mux_pllp_clkm, CLK_SOURCE_I2C3, 67, &periph_u_regs, TEGRA114_CLK_I2C3), 1762 TEGRA_INIT_DATA_I2C("i2c3", "div-clk", "tegra11-i2c.2", mux_pllp_clkm, CLK_SOURCE_I2C3, 67, TEGRA114_CLK_I2C3),
1843 TEGRA_INIT_DATA_I2C("i2c4", "div-clk", "tegra11-i2c.3", mux_pllp_clkm, CLK_SOURCE_I2C4, 103, &periph_v_regs, TEGRA114_CLK_I2C4), 1763 TEGRA_INIT_DATA_I2C("i2c4", "div-clk", "tegra11-i2c.3", mux_pllp_clkm, CLK_SOURCE_I2C4, 103, TEGRA114_CLK_I2C4),
1844 TEGRA_INIT_DATA_I2C("i2c5", "div-clk", "tegra11-i2c.4", mux_pllp_clkm, CLK_SOURCE_I2C5, 47, &periph_h_regs, TEGRA114_CLK_I2C5), 1764 TEGRA_INIT_DATA_I2C("i2c5", "div-clk", "tegra11-i2c.4", mux_pllp_clkm, CLK_SOURCE_I2C5, 47, TEGRA114_CLK_I2C5),
1845 TEGRA_INIT_DATA_UART("uarta", NULL, "tegra_uart.0", mux_pllp_pllc_pllm_clkm, CLK_SOURCE_UARTA, 6, &periph_l_regs, TEGRA114_CLK_UARTA), 1765 TEGRA_INIT_DATA_UART("uarta", NULL, "tegra_uart.0", mux_pllp_pllc_pllm_clkm, CLK_SOURCE_UARTA, 6, TEGRA114_CLK_UARTA),
1846 TEGRA_INIT_DATA_UART("uartb", NULL, "tegra_uart.1", mux_pllp_pllc_pllm_clkm, CLK_SOURCE_UARTB, 7, &periph_l_regs, TEGRA114_CLK_UARTB), 1766 TEGRA_INIT_DATA_UART("uartb", NULL, "tegra_uart.1", mux_pllp_pllc_pllm_clkm, CLK_SOURCE_UARTB, 7, TEGRA114_CLK_UARTB),
1847 TEGRA_INIT_DATA_UART("uartc", NULL, "tegra_uart.2", mux_pllp_pllc_pllm_clkm, CLK_SOURCE_UARTC, 55, &periph_h_regs, TEGRA114_CLK_UARTC), 1767 TEGRA_INIT_DATA_UART("uartc", NULL, "tegra_uart.2", mux_pllp_pllc_pllm_clkm, CLK_SOURCE_UARTC, 55, TEGRA114_CLK_UARTC),
1848 TEGRA_INIT_DATA_UART("uartd", NULL, "tegra_uart.3", mux_pllp_pllc_pllm_clkm, CLK_SOURCE_UARTD, 65, &periph_u_regs, TEGRA114_CLK_UARTD), 1768 TEGRA_INIT_DATA_UART("uartd", NULL, "tegra_uart.3", mux_pllp_pllc_pllm_clkm, CLK_SOURCE_UARTD, 65, TEGRA114_CLK_UARTD),
1849 TEGRA_INIT_DATA_INT8("3d", NULL, "3d", mux_pllm_pllc2_c_c3_pllp_plla, CLK_SOURCE_3D, 24, &periph_l_regs, 0, TEGRA114_CLK_GR3D), 1769 TEGRA_INIT_DATA_INT8("3d", NULL, "3d", mux_pllm_pllc2_c_c3_pllp_plla, CLK_SOURCE_3D, 24, 0, TEGRA114_CLK_GR3D),
1850 TEGRA_INIT_DATA_INT8("2d", NULL, "2d", mux_pllm_pllc2_c_c3_pllp_plla, CLK_SOURCE_2D, 21, &periph_l_regs, 0, TEGRA114_CLK_GR2D), 1770 TEGRA_INIT_DATA_INT8("2d", NULL, "2d", mux_pllm_pllc2_c_c3_pllp_plla, CLK_SOURCE_2D, 21, 0, TEGRA114_CLK_GR2D),
1851 TEGRA_INIT_DATA_MUX("vi_sensor", "vi_sensor", "tegra_camera", mux_pllm_pllc2_c_c3_pllp_plla, CLK_SOURCE_VI_SENSOR, 20, &periph_l_regs, TEGRA_PERIPH_NO_RESET, TEGRA114_CLK_VI_SENSOR), 1771 TEGRA_INIT_DATA_MUX("vi_sensor", "vi_sensor", "tegra_camera", mux_pllm_pllc2_c_c3_pllp_plla, CLK_SOURCE_VI_SENSOR, 20, TEGRA_PERIPH_NO_RESET, TEGRA114_CLK_VI_SENSOR),
1852 TEGRA_INIT_DATA_INT8("vi", "vi", "tegra_camera", mux_pllm_pllc2_c_c3_pllp_plla, CLK_SOURCE_VI, 20, &periph_l_regs, 0, TEGRA114_CLK_VI), 1772 TEGRA_INIT_DATA_INT8("vi", "vi", "tegra_camera", mux_pllm_pllc2_c_c3_pllp_plla, CLK_SOURCE_VI, 20, 0, TEGRA114_CLK_VI),
1853 TEGRA_INIT_DATA_INT8("epp", NULL, "epp", mux_pllm_pllc2_c_c3_pllp_plla, CLK_SOURCE_EPP, 19, &periph_l_regs, 0, TEGRA114_CLK_EPP), 1773 TEGRA_INIT_DATA_INT8("epp", NULL, "epp", mux_pllm_pllc2_c_c3_pllp_plla, CLK_SOURCE_EPP, 19, 0, TEGRA114_CLK_EPP),
1854 TEGRA_INIT_DATA_INT8("msenc", NULL, "msenc", mux_pllm_pllc2_c_c3_pllp_plla, CLK_SOURCE_MSENC, 91, &periph_u_regs, TEGRA_PERIPH_WAR_1005168, TEGRA114_CLK_MSENC), 1774 TEGRA_INIT_DATA_INT8("msenc", NULL, "msenc", mux_pllm_pllc2_c_c3_pllp_plla, CLK_SOURCE_MSENC, 91, TEGRA_PERIPH_WAR_1005168, TEGRA114_CLK_MSENC),
1855 TEGRA_INIT_DATA_INT8("tsec", NULL, "tsec", mux_pllp_pllc2_c_c3_pllm_clkm, CLK_SOURCE_TSEC, 83, &periph_u_regs, 0, TEGRA114_CLK_TSEC), 1775 TEGRA_INIT_DATA_INT8("tsec", NULL, "tsec", mux_pllp_pllc2_c_c3_pllm_clkm, CLK_SOURCE_TSEC, 83, 0, TEGRA114_CLK_TSEC),
1856 TEGRA_INIT_DATA_INT8("host1x", NULL, "host1x", mux_pllm_pllc2_c_c3_pllp_plla, CLK_SOURCE_HOST1X, 28, &periph_l_regs, 0, TEGRA114_CLK_HOST1X), 1776 TEGRA_INIT_DATA_INT8("host1x", NULL, "host1x", mux_pllm_pllc2_c_c3_pllp_plla, CLK_SOURCE_HOST1X, 28, 0, TEGRA114_CLK_HOST1X),
1857 TEGRA_INIT_DATA_MUX8("hdmi", NULL, "hdmi", mux_pllp_pllm_plld_plla_pllc_plld2_clkm, CLK_SOURCE_HDMI, 51, &periph_h_regs, 0, TEGRA114_CLK_HDMI), 1777 TEGRA_INIT_DATA_MUX8("hdmi", NULL, "hdmi", mux_pllp_pllm_plld_plla_pllc_plld2_clkm, CLK_SOURCE_HDMI, 51, 0, TEGRA114_CLK_HDMI),
1858 TEGRA_INIT_DATA_MUX("cilab", "cilab", "tegra_camera", mux_pllp_pllc_clkm, CLK_SOURCE_CILAB, 144, &periph_w_regs, 0, TEGRA114_CLK_CILAB), 1778 TEGRA_INIT_DATA_MUX("cilab", "cilab", "tegra_camera", mux_pllp_pllc_clkm, CLK_SOURCE_CILAB, 144, 0, TEGRA114_CLK_CILAB),
1859 TEGRA_INIT_DATA_MUX("cilcd", "cilcd", "tegra_camera", mux_pllp_pllc_clkm, CLK_SOURCE_CILCD, 145, &periph_w_regs, 0, TEGRA114_CLK_CILCD), 1779 TEGRA_INIT_DATA_MUX("cilcd", "cilcd", "tegra_camera", mux_pllp_pllc_clkm, CLK_SOURCE_CILCD, 145, 0, TEGRA114_CLK_CILCD),
1860 TEGRA_INIT_DATA_MUX("cile", "cile", "tegra_camera", mux_pllp_pllc_clkm, CLK_SOURCE_CILE, 146, &periph_w_regs, 0, TEGRA114_CLK_CILE), 1780 TEGRA_INIT_DATA_MUX("cile", "cile", "tegra_camera", mux_pllp_pllc_clkm, CLK_SOURCE_CILE, 146, 0, TEGRA114_CLK_CILE),
1861 TEGRA_INIT_DATA_MUX("dsialp", "dsialp", "tegradc.0", mux_pllp_pllc_clkm, CLK_SOURCE_DSIALP, 147, &periph_w_regs, 0, TEGRA114_CLK_DSIALP), 1781 TEGRA_INIT_DATA_MUX("dsialp", "dsialp", "tegradc.0", mux_pllp_pllc_clkm, CLK_SOURCE_DSIALP, 147, 0, TEGRA114_CLK_DSIALP),
1862 TEGRA_INIT_DATA_MUX("dsiblp", "dsiblp", "tegradc.1", mux_pllp_pllc_clkm, CLK_SOURCE_DSIBLP, 148, &periph_w_regs, 0, TEGRA114_CLK_DSIBLP), 1782 TEGRA_INIT_DATA_MUX("dsiblp", "dsiblp", "tegradc.1", mux_pllp_pllc_clkm, CLK_SOURCE_DSIBLP, 148, 0, TEGRA114_CLK_DSIBLP),
1863 TEGRA_INIT_DATA_MUX("tsensor", NULL, "tegra-tsensor", mux_pllp_pllc_clkm_clk32, CLK_SOURCE_TSENSOR, 100, &periph_v_regs, TEGRA_PERIPH_ON_APB, TEGRA114_CLK_TSENSOR), 1783 TEGRA_INIT_DATA_MUX("tsensor", NULL, "tegra-tsensor", mux_pllp_pllc_clkm_clk32, CLK_SOURCE_TSENSOR, 100, TEGRA_PERIPH_ON_APB, TEGRA114_CLK_TSENSOR),
1864 TEGRA_INIT_DATA_MUX("actmon", NULL, "actmon", mux_pllp_pllc_clk32_clkm, CLK_SOURCE_ACTMON, 119, &periph_v_regs, 0, TEGRA114_CLK_ACTMON), 1784 TEGRA_INIT_DATA_MUX("actmon", NULL, "actmon", mux_pllp_pllc_clk32_clkm, CLK_SOURCE_ACTMON, 119, 0, TEGRA114_CLK_ACTMON),
1865 TEGRA_INIT_DATA_MUX8("extern1", NULL, "extern1", mux_plla_clk32_pllp_clkm_plle, CLK_SOURCE_EXTERN1, 120, &periph_v_regs, 0, TEGRA114_CLK_EXTERN1), 1785 TEGRA_INIT_DATA_MUX8("extern1", NULL, "extern1", mux_plla_clk32_pllp_clkm_plle, CLK_SOURCE_EXTERN1, 120, 0, TEGRA114_CLK_EXTERN1),
1866 TEGRA_INIT_DATA_MUX8("extern2", NULL, "extern2", mux_plla_clk32_pllp_clkm_plle, CLK_SOURCE_EXTERN2, 121, &periph_v_regs, 0, TEGRA114_CLK_EXTERN2), 1786 TEGRA_INIT_DATA_MUX8("extern2", NULL, "extern2", mux_plla_clk32_pllp_clkm_plle, CLK_SOURCE_EXTERN2, 121, 0, TEGRA114_CLK_EXTERN2),
1867 TEGRA_INIT_DATA_MUX8("extern3", NULL, "extern3", mux_plla_clk32_pllp_clkm_plle, CLK_SOURCE_EXTERN3, 122, &periph_v_regs, 0, TEGRA114_CLK_EXTERN3), 1787 TEGRA_INIT_DATA_MUX8("extern3", NULL, "extern3", mux_plla_clk32_pllp_clkm_plle, CLK_SOURCE_EXTERN3, 122, 0, TEGRA114_CLK_EXTERN3),
1868 TEGRA_INIT_DATA_MUX("i2cslow", NULL, "i2cslow", mux_pllp_pllc_clk32_clkm, CLK_SOURCE_I2CSLOW, 81, &periph_u_regs, TEGRA_PERIPH_ON_APB, TEGRA114_CLK_I2CSLOW), 1788 TEGRA_INIT_DATA_MUX("i2cslow", NULL, "i2cslow", mux_pllp_pllc_clk32_clkm, CLK_SOURCE_I2CSLOW, 81, TEGRA_PERIPH_ON_APB, TEGRA114_CLK_I2CSLOW),
1869 TEGRA_INIT_DATA_INT8("se", NULL, "se", mux_pllp_pllc2_c_c3_pllm_clkm, CLK_SOURCE_SE, 127, &periph_v_regs, TEGRA_PERIPH_ON_APB, TEGRA114_CLK_SE), 1789 TEGRA_INIT_DATA_INT8("se", NULL, "se", mux_pllp_pllc2_c_c3_pllm_clkm, CLK_SOURCE_SE, 127, TEGRA_PERIPH_ON_APB, TEGRA114_CLK_SE),
1870 TEGRA_INIT_DATA_INT_FLAGS("mselect", NULL, "mselect", mux_pllp_clkm, CLK_SOURCE_MSELECT, 99, &periph_v_regs, 0, TEGRA114_CLK_MSELECT, CLK_IGNORE_UNUSED), 1790 TEGRA_INIT_DATA_INT_FLAGS("mselect", NULL, "mselect", mux_pllp_clkm, CLK_SOURCE_MSELECT, 99, 0, TEGRA114_CLK_MSELECT, CLK_IGNORE_UNUSED),
1871 TEGRA_INIT_DATA_MUX("dfll_ref", "ref", "t114_dfll", mux_pllp_clkm, CLK_SOURCE_DFLL_REF, 155, &periph_w_regs, TEGRA_PERIPH_ON_APB, TEGRA114_CLK_DFLL_REF), 1791 TEGRA_INIT_DATA_MUX("dfll_ref", "ref", "t114_dfll", mux_pllp_clkm, CLK_SOURCE_DFLL_REF, 155, TEGRA_PERIPH_ON_APB, TEGRA114_CLK_DFLL_REF),
1872 TEGRA_INIT_DATA_MUX("dfll_soc", "soc", "t114_dfll", mux_pllp_clkm, CLK_SOURCE_DFLL_SOC, 155, &periph_w_regs, TEGRA_PERIPH_ON_APB, TEGRA114_CLK_DFLL_SOC), 1792 TEGRA_INIT_DATA_MUX("dfll_soc", "soc", "t114_dfll", mux_pllp_clkm, CLK_SOURCE_DFLL_SOC, 155, TEGRA_PERIPH_ON_APB, TEGRA114_CLK_DFLL_SOC),
1873 TEGRA_INIT_DATA_MUX8("soc_therm", NULL, "soc_therm", mux_pllm_pllc_pllp_plla, CLK_SOURCE_SOC_THERM, 78, &periph_u_regs, TEGRA_PERIPH_ON_APB, TEGRA114_CLK_SOC_THERM), 1793 TEGRA_INIT_DATA_MUX8("soc_therm", NULL, "soc_therm", mux_pllm_pllc_pllp_plla, CLK_SOURCE_SOC_THERM, 78, TEGRA_PERIPH_ON_APB, TEGRA114_CLK_SOC_THERM),
1874 TEGRA_INIT_DATA_XUSB("xusb_host_src", "host_src", "tegra_xhci", mux_clkm_pllp_pllc_pllre, CLK_SOURCE_XUSB_HOST_SRC, 143, &periph_w_regs, TEGRA_PERIPH_ON_APB | TEGRA_PERIPH_NO_RESET, TEGRA114_CLK_XUSB_HOST_SRC), 1794 TEGRA_INIT_DATA_XUSB("xusb_host_src", "host_src", "tegra_xhci", mux_clkm_pllp_pllc_pllre, CLK_SOURCE_XUSB_HOST_SRC, 143, TEGRA_PERIPH_ON_APB | TEGRA_PERIPH_NO_RESET, TEGRA114_CLK_XUSB_HOST_SRC),
1875 TEGRA_INIT_DATA_XUSB("xusb_falcon_src", "falcon_src", "tegra_xhci", mux_clkm_pllp_pllc_pllre, CLK_SOURCE_XUSB_FALCON_SRC, 143, &periph_w_regs, TEGRA_PERIPH_NO_RESET, TEGRA114_CLK_XUSB_FALCON_SRC), 1795 TEGRA_INIT_DATA_XUSB("xusb_falcon_src", "falcon_src", "tegra_xhci", mux_clkm_pllp_pllc_pllre, CLK_SOURCE_XUSB_FALCON_SRC, 143, TEGRA_PERIPH_NO_RESET, TEGRA114_CLK_XUSB_FALCON_SRC),
1876 TEGRA_INIT_DATA_XUSB("xusb_fs_src", "fs_src", "tegra_xhci", mux_clkm_48M_pllp_480M, CLK_SOURCE_XUSB_FS_SRC, 143, &periph_w_regs, TEGRA_PERIPH_NO_RESET, TEGRA114_CLK_XUSB_FS_SRC), 1796 TEGRA_INIT_DATA_XUSB("xusb_fs_src", "fs_src", "tegra_xhci", mux_clkm_48M_pllp_480M, CLK_SOURCE_XUSB_FS_SRC, 143, TEGRA_PERIPH_NO_RESET, TEGRA114_CLK_XUSB_FS_SRC),
1877 TEGRA_INIT_DATA_XUSB("xusb_ss_src", "ss_src", "tegra_xhci", mux_clkm_pllre_clk32_480M_pllc_ref, CLK_SOURCE_XUSB_SS_SRC, 143, &periph_w_regs, TEGRA_PERIPH_NO_RESET, TEGRA114_CLK_XUSB_SS_SRC), 1797 TEGRA_INIT_DATA_XUSB("xusb_ss_src", "ss_src", "tegra_xhci", mux_clkm_pllre_clk32_480M_pllc_ref, CLK_SOURCE_XUSB_SS_SRC, 143, TEGRA_PERIPH_NO_RESET, TEGRA114_CLK_XUSB_SS_SRC),
1878 TEGRA_INIT_DATA_XUSB("xusb_dev_src", "dev_src", "tegra_xhci", mux_clkm_pllp_pllc_pllre, CLK_SOURCE_XUSB_DEV_SRC, 95, &periph_u_regs, TEGRA_PERIPH_ON_APB | TEGRA_PERIPH_NO_RESET, TEGRA114_CLK_XUSB_DEV_SRC), 1798 TEGRA_INIT_DATA_XUSB("xusb_dev_src", "dev_src", "tegra_xhci", mux_clkm_pllp_pllc_pllre, CLK_SOURCE_XUSB_DEV_SRC, 95, TEGRA_PERIPH_ON_APB | TEGRA_PERIPH_NO_RESET, TEGRA114_CLK_XUSB_DEV_SRC),
1879 TEGRA_INIT_DATA_AUDIO("d_audio", "d_audio", "tegra30-ahub", CLK_SOURCE_D_AUDIO, 106, &periph_v_regs, TEGRA_PERIPH_ON_APB, TEGRA114_CLK_D_AUDIO), 1799 TEGRA_INIT_DATA_AUDIO("d_audio", "d_audio", "tegra30-ahub", CLK_SOURCE_D_AUDIO, 106, TEGRA_PERIPH_ON_APB, TEGRA114_CLK_D_AUDIO),
1880 TEGRA_INIT_DATA_AUDIO("dam0", NULL, "tegra30-dam.0", CLK_SOURCE_DAM0, 108, &periph_v_regs, TEGRA_PERIPH_ON_APB, TEGRA114_CLK_DAM0), 1800 TEGRA_INIT_DATA_AUDIO("dam0", NULL, "tegra30-dam.0", CLK_SOURCE_DAM0, 108, TEGRA_PERIPH_ON_APB, TEGRA114_CLK_DAM0),
1881 TEGRA_INIT_DATA_AUDIO("dam1", NULL, "tegra30-dam.1", CLK_SOURCE_DAM1, 109, &periph_v_regs, TEGRA_PERIPH_ON_APB, TEGRA114_CLK_DAM1), 1801 TEGRA_INIT_DATA_AUDIO("dam1", NULL, "tegra30-dam.1", CLK_SOURCE_DAM1, 109, TEGRA_PERIPH_ON_APB, TEGRA114_CLK_DAM1),
1882 TEGRA_INIT_DATA_AUDIO("dam2", NULL, "tegra30-dam.2", CLK_SOURCE_DAM2, 110, &periph_v_regs, TEGRA_PERIPH_ON_APB, TEGRA114_CLK_DAM2), 1802 TEGRA_INIT_DATA_AUDIO("dam2", NULL, "tegra30-dam.2", CLK_SOURCE_DAM2, 110, TEGRA_PERIPH_ON_APB, TEGRA114_CLK_DAM2),
1883}; 1803};
1884 1804
1885static struct tegra_periph_init_data tegra_periph_nodiv_clk_list[] = { 1805static struct tegra_periph_init_data tegra_periph_nodiv_clk_list[] = {
1886 TEGRA_INIT_DATA_NODIV("disp1", NULL, "tegradc.0", mux_pllp_pllm_plld_plla_pllc_plld2_clkm, CLK_SOURCE_DISP1, 29, 7, 27, &periph_l_regs, 0, TEGRA114_CLK_DISP1), 1806 TEGRA_INIT_DATA_NODIV("disp1", NULL, "tegradc.0", mux_pllp_pllm_plld_plla_pllc_plld2_clkm, CLK_SOURCE_DISP1, 29, 7, 27, 0, TEGRA114_CLK_DISP1),
1887 TEGRA_INIT_DATA_NODIV("disp2", NULL, "tegradc.1", mux_pllp_pllm_plld_plla_pllc_plld2_clkm, CLK_SOURCE_DISP2, 29, 7, 26, &periph_l_regs, 0, TEGRA114_CLK_DISP2), 1807 TEGRA_INIT_DATA_NODIV("disp2", NULL, "tegradc.1", mux_pllp_pllm_plld_plla_pllc_plld2_clkm, CLK_SOURCE_DISP2, 29, 7, 26, 0, TEGRA114_CLK_DISP2),
1888}; 1808};
1889 1809
1890static __init void tegra114_periph_clk_init(void __iomem *clk_base) 1810static __init void tegra114_periph_clk_init(void __iomem *clk_base)
@@ -1896,16 +1816,14 @@ static __init void tegra114_periph_clk_init(void __iomem *clk_base)
1896 1816
1897 /* apbdma */ 1817 /* apbdma */
1898 clk = tegra_clk_register_periph_gate("apbdma", "clk_m", 0, clk_base, 1818 clk = tegra_clk_register_periph_gate("apbdma", "clk_m", 0, clk_base,
1899 0, 34, &periph_h_regs, 1819 0, 34, periph_clk_enb_refcnt);
1900 periph_clk_enb_refcnt);
1901 clks[TEGRA114_CLK_APBDMA] = clk; 1820 clks[TEGRA114_CLK_APBDMA] = clk;
1902 1821
1903 /* rtc */ 1822 /* rtc */
1904 clk = tegra_clk_register_periph_gate("rtc", "clk_32k", 1823 clk = tegra_clk_register_periph_gate("rtc", "clk_32k",
1905 TEGRA_PERIPH_ON_APB | 1824 TEGRA_PERIPH_ON_APB |
1906 TEGRA_PERIPH_NO_RESET, clk_base, 1825 TEGRA_PERIPH_NO_RESET, clk_base,
1907 0, 4, &periph_l_regs, 1826 0, 4, periph_clk_enb_refcnt);
1908 periph_clk_enb_refcnt);
1909 clk_register_clkdev(clk, NULL, "rtc-tegra"); 1827 clk_register_clkdev(clk, NULL, "rtc-tegra");
1910 clks[TEGRA114_CLK_RTC] = clk; 1828 clks[TEGRA114_CLK_RTC] = clk;
1911 1829
@@ -1913,123 +1831,112 @@ static __init void tegra114_periph_clk_init(void __iomem *clk_base)
1913 clk = tegra_clk_register_periph_gate("kbc", "clk_32k", 1831 clk = tegra_clk_register_periph_gate("kbc", "clk_32k",
1914 TEGRA_PERIPH_ON_APB | 1832 TEGRA_PERIPH_ON_APB |
1915 TEGRA_PERIPH_NO_RESET, clk_base, 1833 TEGRA_PERIPH_NO_RESET, clk_base,
1916 0, 36, &periph_h_regs, 1834 0, 36, periph_clk_enb_refcnt);
1917 periph_clk_enb_refcnt);
1918 clks[TEGRA114_CLK_KBC] = clk; 1835 clks[TEGRA114_CLK_KBC] = clk;
1919 1836
1920 /* timer */ 1837 /* timer */
1921 clk = tegra_clk_register_periph_gate("timer", "clk_m", 0, clk_base, 1838 clk = tegra_clk_register_periph_gate("timer", "clk_m", 0, clk_base,
1922 0, 5, &periph_l_regs, 1839 0, 5, periph_clk_enb_refcnt);
1923 periph_clk_enb_refcnt);
1924 clk_register_clkdev(clk, NULL, "timer"); 1840 clk_register_clkdev(clk, NULL, "timer");
1925 clks[TEGRA114_CLK_TIMER] = clk; 1841 clks[TEGRA114_CLK_TIMER] = clk;
1926 1842
1927 /* kfuse */ 1843 /* kfuse */
1928 clk = tegra_clk_register_periph_gate("kfuse", "clk_m", 1844 clk = tegra_clk_register_periph_gate("kfuse", "clk_m",
1929 TEGRA_PERIPH_ON_APB, clk_base, 0, 40, 1845 TEGRA_PERIPH_ON_APB, clk_base, 0, 40,
1930 &periph_h_regs, periph_clk_enb_refcnt); 1846 periph_clk_enb_refcnt);
1931 clks[TEGRA114_CLK_KFUSE] = clk; 1847 clks[TEGRA114_CLK_KFUSE] = clk;
1932 1848
1933 /* fuse */ 1849 /* fuse */
1934 clk = tegra_clk_register_periph_gate("fuse", "clk_m", 1850 clk = tegra_clk_register_periph_gate("fuse", "clk_m",
1935 TEGRA_PERIPH_ON_APB, clk_base, 0, 39, 1851 TEGRA_PERIPH_ON_APB, clk_base, 0, 39,
1936 &periph_h_regs, periph_clk_enb_refcnt); 1852 periph_clk_enb_refcnt);
1937 clks[TEGRA114_CLK_FUSE] = clk; 1853 clks[TEGRA114_CLK_FUSE] = clk;
1938 1854
1939 /* fuse_burn */ 1855 /* fuse_burn */
1940 clk = tegra_clk_register_periph_gate("fuse_burn", "clk_m", 1856 clk = tegra_clk_register_periph_gate("fuse_burn", "clk_m",
1941 TEGRA_PERIPH_ON_APB, clk_base, 0, 39, 1857 TEGRA_PERIPH_ON_APB, clk_base, 0, 39,
1942 &periph_h_regs, periph_clk_enb_refcnt); 1858 periph_clk_enb_refcnt);
1943 clks[TEGRA114_CLK_FUSE_BURN] = clk; 1859 clks[TEGRA114_CLK_FUSE_BURN] = clk;
1944 1860
1945 /* apbif */ 1861 /* apbif */
1946 clk = tegra_clk_register_periph_gate("apbif", "clk_m", 1862 clk = tegra_clk_register_periph_gate("apbif", "clk_m",
1947 TEGRA_PERIPH_ON_APB, clk_base, 0, 107, 1863 TEGRA_PERIPH_ON_APB, clk_base, 0, 107,
1948 &periph_v_regs, periph_clk_enb_refcnt); 1864 periph_clk_enb_refcnt);
1949 clks[TEGRA114_CLK_APBIF] = clk; 1865 clks[TEGRA114_CLK_APBIF] = clk;
1950 1866
1951 /* hda2hdmi */ 1867 /* hda2hdmi */
1952 clk = tegra_clk_register_periph_gate("hda2hdmi", "clk_m", 1868 clk = tegra_clk_register_periph_gate("hda2hdmi", "clk_m",
1953 TEGRA_PERIPH_ON_APB, clk_base, 0, 128, 1869 TEGRA_PERIPH_ON_APB, clk_base, 0, 128,
1954 &periph_w_regs, periph_clk_enb_refcnt); 1870 periph_clk_enb_refcnt);
1955 clks[TEGRA114_CLK_HDA2HDMI] = clk; 1871 clks[TEGRA114_CLK_HDA2HDMI] = clk;
1956 1872
1957 /* vcp */ 1873 /* vcp */
1958 clk = tegra_clk_register_periph_gate("vcp", "clk_m", 0, clk_base, 0, 1874 clk = tegra_clk_register_periph_gate("vcp", "clk_m", 0, clk_base, 0,
1959 29, &periph_l_regs, 1875 29, periph_clk_enb_refcnt);
1960 periph_clk_enb_refcnt);
1961 clks[TEGRA114_CLK_VCP] = clk; 1876 clks[TEGRA114_CLK_VCP] = clk;
1962 1877
1963 /* bsea */ 1878 /* bsea */
1964 clk = tegra_clk_register_periph_gate("bsea", "clk_m", 0, clk_base, 1879 clk = tegra_clk_register_periph_gate("bsea", "clk_m", 0, clk_base,
1965 0, 62, &periph_h_regs, 1880 0, 62, periph_clk_enb_refcnt);
1966 periph_clk_enb_refcnt);
1967 clks[TEGRA114_CLK_BSEA] = clk; 1881 clks[TEGRA114_CLK_BSEA] = clk;
1968 1882
1969 /* bsev */ 1883 /* bsev */
1970 clk = tegra_clk_register_periph_gate("bsev", "clk_m", 0, clk_base, 1884 clk = tegra_clk_register_periph_gate("bsev", "clk_m", 0, clk_base,
1971 0, 63, &periph_h_regs, 1885 0, 63, periph_clk_enb_refcnt);
1972 periph_clk_enb_refcnt);
1973 clks[TEGRA114_CLK_BSEV] = clk; 1886 clks[TEGRA114_CLK_BSEV] = clk;
1974 1887
1975 /* mipi-cal */ 1888 /* mipi-cal */
1976 clk = tegra_clk_register_periph_gate("mipi-cal", "clk_m", 0, clk_base, 1889 clk = tegra_clk_register_periph_gate("mipi-cal", "clk_m", 0, clk_base,
1977 0, 56, &periph_h_regs, 1890 0, 56, periph_clk_enb_refcnt);
1978 periph_clk_enb_refcnt);
1979 clks[TEGRA114_CLK_MIPI_CAL] = clk; 1891 clks[TEGRA114_CLK_MIPI_CAL] = clk;
1980 1892
1981 /* usbd */ 1893 /* usbd */
1982 clk = tegra_clk_register_periph_gate("usbd", "clk_m", 0, clk_base, 1894 clk = tegra_clk_register_periph_gate("usbd", "clk_m", 0, clk_base,
1983 0, 22, &periph_l_regs, 1895 0, 22, periph_clk_enb_refcnt);
1984 periph_clk_enb_refcnt);
1985 clks[TEGRA114_CLK_USBD] = clk; 1896 clks[TEGRA114_CLK_USBD] = clk;
1986 1897
1987 /* usb2 */ 1898 /* usb2 */
1988 clk = tegra_clk_register_periph_gate("usb2", "clk_m", 0, clk_base, 1899 clk = tegra_clk_register_periph_gate("usb2", "clk_m", 0, clk_base,
1989 0, 58, &periph_h_regs, 1900 0, 58, periph_clk_enb_refcnt);
1990 periph_clk_enb_refcnt);
1991 clks[TEGRA114_CLK_USB2] = clk; 1901 clks[TEGRA114_CLK_USB2] = clk;
1992 1902
1993 /* usb3 */ 1903 /* usb3 */
1994 clk = tegra_clk_register_periph_gate("usb3", "clk_m", 0, clk_base, 1904 clk = tegra_clk_register_periph_gate("usb3", "clk_m", 0, clk_base,
1995 0, 59, &periph_h_regs, 1905 0, 59, periph_clk_enb_refcnt);
1996 periph_clk_enb_refcnt);
1997 clks[TEGRA114_CLK_USB3] = clk; 1906 clks[TEGRA114_CLK_USB3] = clk;
1998 1907
1999 /* csi */ 1908 /* csi */
2000 clk = tegra_clk_register_periph_gate("csi", "pll_p_out3", 0, clk_base, 1909 clk = tegra_clk_register_periph_gate("csi", "pll_p_out3", 0, clk_base,
2001 0, 52, &periph_h_regs, 1910 0, 52, periph_clk_enb_refcnt);
2002 periph_clk_enb_refcnt);
2003 clks[TEGRA114_CLK_CSI] = clk; 1911 clks[TEGRA114_CLK_CSI] = clk;
2004 1912
2005 /* isp */ 1913 /* isp */
2006 clk = tegra_clk_register_periph_gate("isp", "clk_m", 0, clk_base, 0, 1914 clk = tegra_clk_register_periph_gate("isp", "clk_m", 0, clk_base, 0,
2007 23, &periph_l_regs, 1915 23, periph_clk_enb_refcnt);
2008 periph_clk_enb_refcnt);
2009 clks[TEGRA114_CLK_ISP] = clk; 1916 clks[TEGRA114_CLK_ISP] = clk;
2010 1917
2011 /* csus */ 1918 /* csus */
2012 clk = tegra_clk_register_periph_gate("csus", "clk_m", 1919 clk = tegra_clk_register_periph_gate("csus", "clk_m",
2013 TEGRA_PERIPH_NO_RESET, clk_base, 0, 92, 1920 TEGRA_PERIPH_NO_RESET, clk_base, 0, 92,
2014 &periph_u_regs, periph_clk_enb_refcnt); 1921 periph_clk_enb_refcnt);
2015 clks[TEGRA114_CLK_CSUS] = clk; 1922 clks[TEGRA114_CLK_CSUS] = clk;
2016 1923
2017 /* dds */ 1924 /* dds */
2018 clk = tegra_clk_register_periph_gate("dds", "clk_m", 1925 clk = tegra_clk_register_periph_gate("dds", "clk_m",
2019 TEGRA_PERIPH_ON_APB, clk_base, 0, 150, 1926 TEGRA_PERIPH_ON_APB, clk_base, 0, 150,
2020 &periph_w_regs, periph_clk_enb_refcnt); 1927 periph_clk_enb_refcnt);
2021 clks[TEGRA114_CLK_DDS] = clk; 1928 clks[TEGRA114_CLK_DDS] = clk;
2022 1929
2023 /* dp2 */ 1930 /* dp2 */
2024 clk = tegra_clk_register_periph_gate("dp2", "clk_m", 1931 clk = tegra_clk_register_periph_gate("dp2", "clk_m",
2025 TEGRA_PERIPH_ON_APB, clk_base, 0, 152, 1932 TEGRA_PERIPH_ON_APB, clk_base, 0, 152,
2026 &periph_w_regs, periph_clk_enb_refcnt); 1933 periph_clk_enb_refcnt);
2027 clks[TEGRA114_CLK_DP2] = clk; 1934 clks[TEGRA114_CLK_DP2] = clk;
2028 1935
2029 /* dtv */ 1936 /* dtv */
2030 clk = tegra_clk_register_periph_gate("dtv", "clk_m", 1937 clk = tegra_clk_register_periph_gate("dtv", "clk_m",
2031 TEGRA_PERIPH_ON_APB, clk_base, 0, 79, 1938 TEGRA_PERIPH_ON_APB, clk_base, 0, 79,
2032 &periph_u_regs, periph_clk_enb_refcnt); 1939 periph_clk_enb_refcnt);
2033 clks[TEGRA114_CLK_DTV] = clk; 1940 clks[TEGRA114_CLK_DTV] = clk;
2034 1941
2035 /* dsia */ 1942 /* dsia */
@@ -2039,8 +1946,7 @@ static __init void tegra114_periph_clk_init(void __iomem *clk_base)
2039 clk_base + PLLD_BASE, 25, 1, 0, &pll_d_lock); 1946 clk_base + PLLD_BASE, 25, 1, 0, &pll_d_lock);
2040 clks[TEGRA114_CLK_DSIA_MUX] = clk; 1947 clks[TEGRA114_CLK_DSIA_MUX] = clk;
2041 clk = tegra_clk_register_periph_gate("dsia", "dsia_mux", 0, clk_base, 1948 clk = tegra_clk_register_periph_gate("dsia", "dsia_mux", 0, clk_base,
2042 0, 48, &periph_h_regs, 1949 0, 48, periph_clk_enb_refcnt);
2043 periph_clk_enb_refcnt);
2044 clks[TEGRA114_CLK_DSIA] = clk; 1950 clks[TEGRA114_CLK_DSIA] = clk;
2045 1951
2046 /* dsib */ 1952 /* dsib */
@@ -2050,8 +1956,7 @@ static __init void tegra114_periph_clk_init(void __iomem *clk_base)
2050 clk_base + PLLD2_BASE, 25, 1, 0, &pll_d2_lock); 1956 clk_base + PLLD2_BASE, 25, 1, 0, &pll_d2_lock);
2051 clks[TEGRA114_CLK_DSIB_MUX] = clk; 1957 clks[TEGRA114_CLK_DSIB_MUX] = clk;
2052 clk = tegra_clk_register_periph_gate("dsib", "dsib_mux", 0, clk_base, 1958 clk = tegra_clk_register_periph_gate("dsib", "dsib_mux", 0, clk_base,
2053 0, 82, &periph_u_regs, 1959 0, 82, periph_clk_enb_refcnt);
2054 periph_clk_enb_refcnt);
2055 clks[TEGRA114_CLK_DSIB] = clk; 1960 clks[TEGRA114_CLK_DSIB] = clk;
2056 1961
2057 /* xusb_hs_src */ 1962 /* xusb_hs_src */
@@ -2065,20 +1970,17 @@ static __init void tegra114_periph_clk_init(void __iomem *clk_base)
2065 1970
2066 /* xusb_host */ 1971 /* xusb_host */
2067 clk = tegra_clk_register_periph_gate("xusb_host", "xusb_host_src", 0, 1972 clk = tegra_clk_register_periph_gate("xusb_host", "xusb_host_src", 0,
2068 clk_base, 0, 89, &periph_u_regs, 1973 clk_base, 0, 89, periph_clk_enb_refcnt);
2069 periph_clk_enb_refcnt);
2070 clks[TEGRA114_CLK_XUSB_HOST] = clk; 1974 clks[TEGRA114_CLK_XUSB_HOST] = clk;
2071 1975
2072 /* xusb_ss */ 1976 /* xusb_ss */
2073 clk = tegra_clk_register_periph_gate("xusb_ss", "xusb_ss_src", 0, 1977 clk = tegra_clk_register_periph_gate("xusb_ss", "xusb_ss_src", 0,
2074 clk_base, 0, 156, &periph_w_regs, 1978 clk_base, 0, 156, periph_clk_enb_refcnt);
2075 periph_clk_enb_refcnt);
2076 clks[TEGRA114_CLK_XUSB_HOST] = clk; 1979 clks[TEGRA114_CLK_XUSB_HOST] = clk;
2077 1980
2078 /* xusb_dev */ 1981 /* xusb_dev */
2079 clk = tegra_clk_register_periph_gate("xusb_dev", "xusb_dev_src", 0, 1982 clk = tegra_clk_register_periph_gate("xusb_dev", "xusb_dev_src", 0,
2080 clk_base, 0, 95, &periph_u_regs, 1983 clk_base, 0, 95, periph_clk_enb_refcnt);
2081 periph_clk_enb_refcnt);
2082 clks[TEGRA114_CLK_XUSB_DEV] = clk; 1984 clks[TEGRA114_CLK_XUSB_DEV] = clk;
2083 1985
2084 /* emc */ 1986 /* emc */
@@ -2088,20 +1990,21 @@ static __init void tegra114_periph_clk_init(void __iomem *clk_base)
2088 clk_base + CLK_SOURCE_EMC, 1990 clk_base + CLK_SOURCE_EMC,
2089 29, 3, 0, NULL); 1991 29, 3, 0, NULL);
2090 clk = tegra_clk_register_periph_gate("emc", "emc_mux", 0, clk_base, 1992 clk = tegra_clk_register_periph_gate("emc", "emc_mux", 0, clk_base,
2091 CLK_IGNORE_UNUSED, 57, &periph_h_regs, 1993 CLK_IGNORE_UNUSED, 57, periph_clk_enb_refcnt);
2092 periph_clk_enb_refcnt);
2093 clks[TEGRA114_CLK_EMC] = clk; 1994 clks[TEGRA114_CLK_EMC] = clk;
2094 1995
2095 for (i = 0; i < ARRAY_SIZE(tegra_periph_clk_list); i++) { 1996 for (i = 0; i < ARRAY_SIZE(tegra_periph_clk_list); i++) {
2096 data = &tegra_periph_clk_list[i]; 1997 data = &tegra_periph_clk_list[i];
2097 clk = tegra_clk_register_periph(data->name, data->parent_names, 1998
2098 data->num_parents, &data->periph, 1999 clk = tegra_clk_register_periph(data->name,
2099 clk_base, data->offset, data->flags); 2000 data->parent_names, data->num_parents, &data->periph,
2001 clk_base, data->offset, data->flags);
2100 clks[data->clk_id] = clk; 2002 clks[data->clk_id] = clk;
2101 } 2003 }
2102 2004
2103 for (i = 0; i < ARRAY_SIZE(tegra_periph_nodiv_clk_list); i++) { 2005 for (i = 0; i < ARRAY_SIZE(tegra_periph_nodiv_clk_list); i++) {
2104 data = &tegra_periph_nodiv_clk_list[i]; 2006 data = &tegra_periph_nodiv_clk_list[i];
2007
2105 clk = tegra_clk_register_periph_nodiv(data->name, 2008 clk = tegra_clk_register_periph_nodiv(data->name,
2106 data->parent_names, data->num_parents, 2009 data->parent_names, data->num_parents,
2107 &data->periph, clk_base, data->offset); 2010 &data->periph, clk_base, data->offset);
@@ -2351,6 +2254,9 @@ static void __init tegra114_clock_init(struct device_node *np)
2351 if (tegra114_osc_clk_init(clk_base) < 0) 2254 if (tegra114_osc_clk_init(clk_base) < 0)
2352 return; 2255 return;
2353 2256
2257 if (tegra_clk_set_periph_banks(TEGRA114_CLK_PERIPH_BANKS) < 0)
2258 return;
2259
2354 tegra114_fixed_clk_init(clk_base); 2260 tegra114_fixed_clk_init(clk_base);
2355 tegra114_pll_init(clk_base, pmc_base); 2261 tegra114_pll_init(clk_base, pmc_base);
2356 tegra114_periph_clk_init(clk_base); 2262 tegra114_periph_clk_init(clk_base);
diff --git a/drivers/clk/tegra/clk-tegra20.c b/drivers/clk/tegra/clk-tegra20.c
index 056f649d0d89..929a46278d83 100644
--- a/drivers/clk/tegra/clk-tegra20.c
+++ b/drivers/clk/tegra/clk-tegra20.c
@@ -25,26 +25,6 @@
25 25
26#include "clk.h" 26#include "clk.h"
27 27
28#define RST_DEVICES_L 0x004
29#define RST_DEVICES_H 0x008
30#define RST_DEVICES_U 0x00c
31#define RST_DEVICES_SET_L 0x300
32#define RST_DEVICES_CLR_L 0x304
33#define RST_DEVICES_SET_H 0x308
34#define RST_DEVICES_CLR_H 0x30c
35#define RST_DEVICES_SET_U 0x310
36#define RST_DEVICES_CLR_U 0x314
37#define RST_DEVICES_NUM 3
38
39#define CLK_OUT_ENB_L 0x010
40#define CLK_OUT_ENB_H 0x014
41#define CLK_OUT_ENB_U 0x018
42#define CLK_OUT_ENB_SET_L 0x320
43#define CLK_OUT_ENB_CLR_L 0x324
44#define CLK_OUT_ENB_SET_H 0x328
45#define CLK_OUT_ENB_CLR_H 0x32c
46#define CLK_OUT_ENB_SET_U 0x330
47#define CLK_OUT_ENB_CLR_U 0x334
48#define CLK_OUT_ENB_NUM 3 28#define CLK_OUT_ENB_NUM 3
49 29
50#define OSC_CTRL 0x50 30#define OSC_CTRL 0x50
@@ -67,6 +47,8 @@
67#define OSC_FREQ_DET_BUSY (1<<31) 47#define OSC_FREQ_DET_BUSY (1<<31)
68#define OSC_FREQ_DET_CNT_MASK 0xFFFF 48#define OSC_FREQ_DET_CNT_MASK 0xFFFF
69 49
50#define TEGRA20_CLK_PERIPH_BANKS 3
51
70#define PLLS_BASE 0xf0 52#define PLLS_BASE 0xf0
71#define PLLS_MISC 0xf4 53#define PLLS_MISC 0xf4
72#define PLLC_BASE 0x80 54#define PLLC_BASE 0x80
@@ -197,31 +179,31 @@ static DEFINE_SPINLOCK(pll_div_lock);
197static DEFINE_SPINLOCK(sysrate_lock); 179static DEFINE_SPINLOCK(sysrate_lock);
198 180
199#define TEGRA_INIT_DATA_MUX(_name, _con_id, _dev_id, _parents, _offset, \ 181#define TEGRA_INIT_DATA_MUX(_name, _con_id, _dev_id, _parents, _offset, \
200 _clk_num, _regs, _gate_flags, _clk_id) \ 182 _clk_num, _gate_flags, _clk_id) \
201 TEGRA_INIT_DATA(_name, _con_id, _dev_id, _parents, _offset, \ 183 TEGRA_INIT_DATA(_name, _con_id, _dev_id, _parents, _offset, \
202 30, 2, 0, 0, 8, 1, TEGRA_DIVIDER_ROUND_UP, \ 184 30, 2, 0, 0, 8, 1, TEGRA_DIVIDER_ROUND_UP, \
203 _regs, _clk_num, periph_clk_enb_refcnt, \ 185 _clk_num, periph_clk_enb_refcnt, \
204 _gate_flags, _clk_id) 186 _gate_flags, _clk_id)
205 187
206#define TEGRA_INIT_DATA_INT(_name, _con_id, _dev_id, _parents, _offset, \ 188#define TEGRA_INIT_DATA_INT(_name, _con_id, _dev_id, _parents, _offset, \
207 _clk_num, _regs, _gate_flags, _clk_id) \ 189 _clk_num, _gate_flags, _clk_id) \
208 TEGRA_INIT_DATA(_name, _con_id, _dev_id, _parents, _offset, \ 190 TEGRA_INIT_DATA(_name, _con_id, _dev_id, _parents, _offset, \
209 30, 2, 0, 0, 8, 1, TEGRA_DIVIDER_INT, _regs, \ 191 30, 2, 0, 0, 8, 1, TEGRA_DIVIDER_INT, \
210 _clk_num, periph_clk_enb_refcnt, _gate_flags, \ 192 _clk_num, periph_clk_enb_refcnt, _gate_flags, \
211 _clk_id) 193 _clk_id)
212 194
213#define TEGRA_INIT_DATA_DIV16(_name, _con_id, _dev_id, _parents, _offset, \ 195#define TEGRA_INIT_DATA_DIV16(_name, _con_id, _dev_id, _parents, _offset, \
214 _clk_num, _regs, _gate_flags, _clk_id) \ 196 _clk_num, _gate_flags, _clk_id) \
215 TEGRA_INIT_DATA(_name, _con_id, _dev_id, _parents, _offset, \ 197 TEGRA_INIT_DATA(_name, _con_id, _dev_id, _parents, _offset, \
216 30, 2, 0, 0, 16, 0, TEGRA_DIVIDER_ROUND_UP, _regs, \ 198 30, 2, 0, 0, 16, 0, TEGRA_DIVIDER_ROUND_UP, \
217 _clk_num, periph_clk_enb_refcnt, _gate_flags, \ 199 _clk_num, periph_clk_enb_refcnt, _gate_flags, \
218 _clk_id) 200 _clk_id)
219 201
220#define TEGRA_INIT_DATA_NODIV(_name, _con_id, _dev_id, _parents, _offset, \ 202#define TEGRA_INIT_DATA_NODIV(_name, _con_id, _dev_id, _parents, _offset, \
221 _mux_shift, _mux_width, _clk_num, _regs, \ 203 _mux_shift, _mux_width, _clk_num, \
222 _gate_flags, _clk_id) \ 204 _gate_flags, _clk_id) \
223 TEGRA_INIT_DATA(_name, _con_id, _dev_id, _parents, _offset, \ 205 TEGRA_INIT_DATA(_name, _con_id, _dev_id, _parents, _offset, \
224 _mux_shift, _mux_width, 0, 0, 0, 0, 0, _regs, \ 206 _mux_shift, _mux_width, 0, 0, 0, 0, 0, \
225 _clk_num, periph_clk_enb_refcnt, _gate_flags, \ 207 _clk_num, periph_clk_enb_refcnt, _gate_flags, \
226 _clk_id) 208 _clk_id)
227 209
@@ -490,34 +472,6 @@ static struct tegra_clk_pll_params pll_e_params = {
490 .lock_delay = 0, 472 .lock_delay = 0,
491}; 473};
492 474
493/* Peripheral clock registers */
494static struct tegra_clk_periph_regs periph_l_regs = {
495 .enb_reg = CLK_OUT_ENB_L,
496 .enb_set_reg = CLK_OUT_ENB_SET_L,
497 .enb_clr_reg = CLK_OUT_ENB_CLR_L,
498 .rst_reg = RST_DEVICES_L,
499 .rst_set_reg = RST_DEVICES_SET_L,
500 .rst_clr_reg = RST_DEVICES_CLR_L,
501};
502
503static struct tegra_clk_periph_regs periph_h_regs = {
504 .enb_reg = CLK_OUT_ENB_H,
505 .enb_set_reg = CLK_OUT_ENB_SET_H,
506 .enb_clr_reg = CLK_OUT_ENB_CLR_H,
507 .rst_reg = RST_DEVICES_H,
508 .rst_set_reg = RST_DEVICES_SET_H,
509 .rst_clr_reg = RST_DEVICES_CLR_H,
510};
511
512static struct tegra_clk_periph_regs periph_u_regs = {
513 .enb_reg = CLK_OUT_ENB_U,
514 .enb_set_reg = CLK_OUT_ENB_SET_U,
515 .enb_clr_reg = CLK_OUT_ENB_CLR_U,
516 .rst_reg = RST_DEVICES_U,
517 .rst_set_reg = RST_DEVICES_SET_U,
518 .rst_clr_reg = RST_DEVICES_CLR_U,
519};
520
521static unsigned long tegra20_clk_measure_input_freq(void) 475static unsigned long tegra20_clk_measure_input_freq(void)
522{ 476{
523 u32 osc_ctrl = readl_relaxed(clk_base + OSC_CTRL); 477 u32 osc_ctrl = readl_relaxed(clk_base + OSC_CTRL);
@@ -792,7 +746,7 @@ static void __init tegra20_audio_clk_init(void)
792 CLK_SET_RATE_PARENT, 2, 1); 746 CLK_SET_RATE_PARENT, 2, 1);
793 clk = tegra_clk_register_periph_gate("audio_2x", "audio_doubler", 747 clk = tegra_clk_register_periph_gate("audio_2x", "audio_doubler",
794 TEGRA_PERIPH_NO_RESET, clk_base, 748 TEGRA_PERIPH_NO_RESET, clk_base,
795 CLK_SET_RATE_PARENT, 89, &periph_u_regs, 749 CLK_SET_RATE_PARENT, 89,
796 periph_clk_enb_refcnt); 750 periph_clk_enb_refcnt);
797 clk_register_clkdev(clk, "audio_2x", NULL); 751 clk_register_clkdev(clk, "audio_2x", NULL);
798 clks[audio_2x] = clk; 752 clks[audio_2x] = clk;
@@ -815,56 +769,56 @@ static const char *mux_pllpdc_clkm[] = {"pll_p", "pll_d_out0", "pll_c",
815static const char *mux_pllmcp_clkm[] = {"pll_m", "pll_c", "pll_p", "clk_m"}; 769static const char *mux_pllmcp_clkm[] = {"pll_m", "pll_c", "pll_p", "clk_m"};
816 770
817static struct tegra_periph_init_data tegra_periph_clk_list[] = { 771static struct tegra_periph_init_data tegra_periph_clk_list[] = {
818 TEGRA_INIT_DATA_MUX("i2s1", NULL, "tegra20-i2s.0", i2s1_parents, CLK_SOURCE_I2S1, 11, &periph_l_regs, TEGRA_PERIPH_ON_APB, i2s1), 772 TEGRA_INIT_DATA_MUX("i2s1", NULL, "tegra20-i2s.0", i2s1_parents, CLK_SOURCE_I2S1, 11, TEGRA_PERIPH_ON_APB, i2s1),
819 TEGRA_INIT_DATA_MUX("i2s2", NULL, "tegra20-i2s.1", i2s2_parents, CLK_SOURCE_I2S2, 18, &periph_l_regs, TEGRA_PERIPH_ON_APB, i2s2), 773 TEGRA_INIT_DATA_MUX("i2s2", NULL, "tegra20-i2s.1", i2s2_parents, CLK_SOURCE_I2S2, 18, TEGRA_PERIPH_ON_APB, i2s2),
820 TEGRA_INIT_DATA_MUX("spdif_out", "spdif_out", "tegra20-spdif", spdif_out_parents, CLK_SOURCE_SPDIF_OUT, 10, &periph_l_regs, TEGRA_PERIPH_ON_APB, spdif_out), 774 TEGRA_INIT_DATA_MUX("spdif_out", "spdif_out", "tegra20-spdif", spdif_out_parents, CLK_SOURCE_SPDIF_OUT, 10, TEGRA_PERIPH_ON_APB, spdif_out),
821 TEGRA_INIT_DATA_MUX("spdif_in", "spdif_in", "tegra20-spdif", spdif_in_parents, CLK_SOURCE_SPDIF_IN, 10, &periph_l_regs, TEGRA_PERIPH_ON_APB, spdif_in), 775 TEGRA_INIT_DATA_MUX("spdif_in", "spdif_in", "tegra20-spdif", spdif_in_parents, CLK_SOURCE_SPDIF_IN, 10, TEGRA_PERIPH_ON_APB, spdif_in),
822 TEGRA_INIT_DATA_MUX("sbc1", NULL, "spi_tegra.0", mux_pllpcm_clkm, CLK_SOURCE_SBC1, 41, &periph_h_regs, TEGRA_PERIPH_ON_APB, sbc1), 776 TEGRA_INIT_DATA_MUX("sbc1", NULL, "spi_tegra.0", mux_pllpcm_clkm, CLK_SOURCE_SBC1, 41, TEGRA_PERIPH_ON_APB, sbc1),
823 TEGRA_INIT_DATA_MUX("sbc2", NULL, "spi_tegra.1", mux_pllpcm_clkm, CLK_SOURCE_SBC2, 44, &periph_h_regs, TEGRA_PERIPH_ON_APB, sbc2), 777 TEGRA_INIT_DATA_MUX("sbc2", NULL, "spi_tegra.1", mux_pllpcm_clkm, CLK_SOURCE_SBC2, 44, TEGRA_PERIPH_ON_APB, sbc2),
824 TEGRA_INIT_DATA_MUX("sbc3", NULL, "spi_tegra.2", mux_pllpcm_clkm, CLK_SOURCE_SBC3, 46, &periph_h_regs, TEGRA_PERIPH_ON_APB, sbc3), 778 TEGRA_INIT_DATA_MUX("sbc3", NULL, "spi_tegra.2", mux_pllpcm_clkm, CLK_SOURCE_SBC3, 46, TEGRA_PERIPH_ON_APB, sbc3),
825 TEGRA_INIT_DATA_MUX("sbc4", NULL, "spi_tegra.3", mux_pllpcm_clkm, CLK_SOURCE_SBC4, 68, &periph_u_regs, TEGRA_PERIPH_ON_APB, sbc4), 779 TEGRA_INIT_DATA_MUX("sbc4", NULL, "spi_tegra.3", mux_pllpcm_clkm, CLK_SOURCE_SBC4, 68, TEGRA_PERIPH_ON_APB, sbc4),
826 TEGRA_INIT_DATA_MUX("spi", NULL, "spi", mux_pllpcm_clkm, CLK_SOURCE_SPI, 43, &periph_h_regs, TEGRA_PERIPH_ON_APB, spi), 780 TEGRA_INIT_DATA_MUX("spi", NULL, "spi", mux_pllpcm_clkm, CLK_SOURCE_SPI, 43, TEGRA_PERIPH_ON_APB, spi),
827 TEGRA_INIT_DATA_MUX("xio", NULL, "xio", mux_pllpcm_clkm, CLK_SOURCE_XIO, 45, &periph_h_regs, 0, xio), 781 TEGRA_INIT_DATA_MUX("xio", NULL, "xio", mux_pllpcm_clkm, CLK_SOURCE_XIO, 45, 0, xio),
828 TEGRA_INIT_DATA_MUX("twc", NULL, "twc", mux_pllpcm_clkm, CLK_SOURCE_TWC, 16, &periph_l_regs, TEGRA_PERIPH_ON_APB, twc), 782 TEGRA_INIT_DATA_MUX("twc", NULL, "twc", mux_pllpcm_clkm, CLK_SOURCE_TWC, 16, TEGRA_PERIPH_ON_APB, twc),
829 TEGRA_INIT_DATA_MUX("ide", NULL, "ide", mux_pllpcm_clkm, CLK_SOURCE_XIO, 25, &periph_l_regs, 0, ide), 783 TEGRA_INIT_DATA_MUX("ide", NULL, "ide", mux_pllpcm_clkm, CLK_SOURCE_XIO, 25, 0, ide),
830 TEGRA_INIT_DATA_MUX("ndflash", NULL, "tegra_nand", mux_pllpcm_clkm, CLK_SOURCE_NDFLASH, 13, &periph_l_regs, 0, ndflash), 784 TEGRA_INIT_DATA_MUX("ndflash", NULL, "tegra_nand", mux_pllpcm_clkm, CLK_SOURCE_NDFLASH, 13, 0, ndflash),
831 TEGRA_INIT_DATA_MUX("vfir", NULL, "vfir", mux_pllpcm_clkm, CLK_SOURCE_VFIR, 7, &periph_l_regs, TEGRA_PERIPH_ON_APB, vfir), 785 TEGRA_INIT_DATA_MUX("vfir", NULL, "vfir", mux_pllpcm_clkm, CLK_SOURCE_VFIR, 7, TEGRA_PERIPH_ON_APB, vfir),
832 TEGRA_INIT_DATA_MUX("csite", NULL, "csite", mux_pllpcm_clkm, CLK_SOURCE_CSITE, 73, &periph_u_regs, 0, csite), 786 TEGRA_INIT_DATA_MUX("csite", NULL, "csite", mux_pllpcm_clkm, CLK_SOURCE_CSITE, 73, 0, csite),
833 TEGRA_INIT_DATA_MUX("la", NULL, "la", mux_pllpcm_clkm, CLK_SOURCE_LA, 76, &periph_u_regs, 0, la), 787 TEGRA_INIT_DATA_MUX("la", NULL, "la", mux_pllpcm_clkm, CLK_SOURCE_LA, 76, 0, la),
834 TEGRA_INIT_DATA_MUX("owr", NULL, "tegra_w1", mux_pllpcm_clkm, CLK_SOURCE_OWR, 71, &periph_u_regs, TEGRA_PERIPH_ON_APB, owr), 788 TEGRA_INIT_DATA_MUX("owr", NULL, "tegra_w1", mux_pllpcm_clkm, CLK_SOURCE_OWR, 71, TEGRA_PERIPH_ON_APB, owr),
835 TEGRA_INIT_DATA_MUX("mipi", NULL, "mipi", mux_pllpcm_clkm, CLK_SOURCE_MIPI, 50, &periph_h_regs, TEGRA_PERIPH_ON_APB, mipi), 789 TEGRA_INIT_DATA_MUX("mipi", NULL, "mipi", mux_pllpcm_clkm, CLK_SOURCE_MIPI, 50, TEGRA_PERIPH_ON_APB, mipi),
836 TEGRA_INIT_DATA_MUX("vde", NULL, "vde", mux_pllpcm_clkm, CLK_SOURCE_VDE, 61, &periph_h_regs, 0, vde), 790 TEGRA_INIT_DATA_MUX("vde", NULL, "vde", mux_pllpcm_clkm, CLK_SOURCE_VDE, 61, 0, vde),
837 TEGRA_INIT_DATA_MUX("vi", "vi", "tegra_camera", mux_pllmcpa, CLK_SOURCE_VI, 20, &periph_l_regs, 0, vi), 791 TEGRA_INIT_DATA_MUX("vi", "vi", "tegra_camera", mux_pllmcpa, CLK_SOURCE_VI, 20, 0, vi),
838 TEGRA_INIT_DATA_MUX("epp", NULL, "epp", mux_pllmcpa, CLK_SOURCE_EPP, 19, &periph_l_regs, 0, epp), 792 TEGRA_INIT_DATA_MUX("epp", NULL, "epp", mux_pllmcpa, CLK_SOURCE_EPP, 19, 0, epp),
839 TEGRA_INIT_DATA_MUX("mpe", NULL, "mpe", mux_pllmcpa, CLK_SOURCE_MPE, 60, &periph_h_regs, 0, mpe), 793 TEGRA_INIT_DATA_MUX("mpe", NULL, "mpe", mux_pllmcpa, CLK_SOURCE_MPE, 60, 0, mpe),
840 TEGRA_INIT_DATA_MUX("host1x", NULL, "host1x", mux_pllmcpa, CLK_SOURCE_HOST1X, 28, &periph_l_regs, 0, host1x), 794 TEGRA_INIT_DATA_MUX("host1x", NULL, "host1x", mux_pllmcpa, CLK_SOURCE_HOST1X, 28, 0, host1x),
841 TEGRA_INIT_DATA_MUX("3d", NULL, "3d", mux_pllmcpa, CLK_SOURCE_3D, 24, &periph_l_regs, TEGRA_PERIPH_MANUAL_RESET, gr3d), 795 TEGRA_INIT_DATA_MUX("3d", NULL, "3d", mux_pllmcpa, CLK_SOURCE_3D, 24, TEGRA_PERIPH_MANUAL_RESET, gr3d),
842 TEGRA_INIT_DATA_MUX("2d", NULL, "2d", mux_pllmcpa, CLK_SOURCE_2D, 21, &periph_l_regs, 0, gr2d), 796 TEGRA_INIT_DATA_MUX("2d", NULL, "2d", mux_pllmcpa, CLK_SOURCE_2D, 21, 0, gr2d),
843 TEGRA_INIT_DATA_MUX("nor", NULL, "tegra-nor", mux_pllpcm_clkm, CLK_SOURCE_NOR, 42, &periph_h_regs, 0, nor), 797 TEGRA_INIT_DATA_MUX("nor", NULL, "tegra-nor", mux_pllpcm_clkm, CLK_SOURCE_NOR, 42, 0, nor),
844 TEGRA_INIT_DATA_MUX("sdmmc1", NULL, "sdhci-tegra.0", mux_pllpcm_clkm, CLK_SOURCE_SDMMC1, 14, &periph_l_regs, 0, sdmmc1), 798 TEGRA_INIT_DATA_MUX("sdmmc1", NULL, "sdhci-tegra.0", mux_pllpcm_clkm, CLK_SOURCE_SDMMC1, 14, 0, sdmmc1),
845 TEGRA_INIT_DATA_MUX("sdmmc2", NULL, "sdhci-tegra.1", mux_pllpcm_clkm, CLK_SOURCE_SDMMC2, 9, &periph_l_regs, 0, sdmmc2), 799 TEGRA_INIT_DATA_MUX("sdmmc2", NULL, "sdhci-tegra.1", mux_pllpcm_clkm, CLK_SOURCE_SDMMC2, 9, 0, sdmmc2),
846 TEGRA_INIT_DATA_MUX("sdmmc3", NULL, "sdhci-tegra.2", mux_pllpcm_clkm, CLK_SOURCE_SDMMC3, 69, &periph_u_regs, 0, sdmmc3), 800 TEGRA_INIT_DATA_MUX("sdmmc3", NULL, "sdhci-tegra.2", mux_pllpcm_clkm, CLK_SOURCE_SDMMC3, 69, 0, sdmmc3),
847 TEGRA_INIT_DATA_MUX("sdmmc4", NULL, "sdhci-tegra.3", mux_pllpcm_clkm, CLK_SOURCE_SDMMC4, 15, &periph_l_regs, 0, sdmmc4), 801 TEGRA_INIT_DATA_MUX("sdmmc4", NULL, "sdhci-tegra.3", mux_pllpcm_clkm, CLK_SOURCE_SDMMC4, 15, 0, sdmmc4),
848 TEGRA_INIT_DATA_MUX("cve", NULL, "cve", mux_pllpdc_clkm, CLK_SOURCE_CVE, 49, &periph_h_regs, 0, cve), 802 TEGRA_INIT_DATA_MUX("cve", NULL, "cve", mux_pllpdc_clkm, CLK_SOURCE_CVE, 49, 0, cve),
849 TEGRA_INIT_DATA_MUX("tvo", NULL, "tvo", mux_pllpdc_clkm, CLK_SOURCE_TVO, 49, &periph_h_regs, 0, tvo), 803 TEGRA_INIT_DATA_MUX("tvo", NULL, "tvo", mux_pllpdc_clkm, CLK_SOURCE_TVO, 49, 0, tvo),
850 TEGRA_INIT_DATA_MUX("tvdac", NULL, "tvdac", mux_pllpdc_clkm, CLK_SOURCE_TVDAC, 53, &periph_h_regs, 0, tvdac), 804 TEGRA_INIT_DATA_MUX("tvdac", NULL, "tvdac", mux_pllpdc_clkm, CLK_SOURCE_TVDAC, 53, 0, tvdac),
851 TEGRA_INIT_DATA_MUX("vi_sensor", "vi_sensor", "tegra_camera", mux_pllmcpa, CLK_SOURCE_VI_SENSOR, 20, &periph_l_regs, TEGRA_PERIPH_NO_RESET, vi_sensor), 805 TEGRA_INIT_DATA_MUX("vi_sensor", "vi_sensor", "tegra_camera", mux_pllmcpa, CLK_SOURCE_VI_SENSOR, 20, TEGRA_PERIPH_NO_RESET, vi_sensor),
852 TEGRA_INIT_DATA_DIV16("i2c1", "div-clk", "tegra-i2c.0", mux_pllpcm_clkm, CLK_SOURCE_I2C1, 12, &periph_l_regs, TEGRA_PERIPH_ON_APB, i2c1), 806 TEGRA_INIT_DATA_DIV16("i2c1", "div-clk", "tegra-i2c.0", mux_pllpcm_clkm, CLK_SOURCE_I2C1, 12, TEGRA_PERIPH_ON_APB, i2c1),
853 TEGRA_INIT_DATA_DIV16("i2c2", "div-clk", "tegra-i2c.1", mux_pllpcm_clkm, CLK_SOURCE_I2C2, 54, &periph_h_regs, TEGRA_PERIPH_ON_APB, i2c2), 807 TEGRA_INIT_DATA_DIV16("i2c2", "div-clk", "tegra-i2c.1", mux_pllpcm_clkm, CLK_SOURCE_I2C2, 54, TEGRA_PERIPH_ON_APB, i2c2),
854 TEGRA_INIT_DATA_DIV16("i2c3", "div-clk", "tegra-i2c.2", mux_pllpcm_clkm, CLK_SOURCE_I2C3, 67, &periph_u_regs, TEGRA_PERIPH_ON_APB, i2c3), 808 TEGRA_INIT_DATA_DIV16("i2c3", "div-clk", "tegra-i2c.2", mux_pllpcm_clkm, CLK_SOURCE_I2C3, 67, TEGRA_PERIPH_ON_APB, i2c3),
855 TEGRA_INIT_DATA_DIV16("dvc", "div-clk", "tegra-i2c.3", mux_pllpcm_clkm, CLK_SOURCE_DVC, 47, &periph_h_regs, TEGRA_PERIPH_ON_APB, dvc), 809 TEGRA_INIT_DATA_DIV16("dvc", "div-clk", "tegra-i2c.3", mux_pllpcm_clkm, CLK_SOURCE_DVC, 47, TEGRA_PERIPH_ON_APB, dvc),
856 TEGRA_INIT_DATA_MUX("hdmi", NULL, "hdmi", mux_pllpdc_clkm, CLK_SOURCE_HDMI, 51, &periph_h_regs, 0, hdmi), 810 TEGRA_INIT_DATA_MUX("hdmi", NULL, "hdmi", mux_pllpdc_clkm, CLK_SOURCE_HDMI, 51, 0, hdmi),
857 TEGRA_INIT_DATA("pwm", NULL, "tegra-pwm", pwm_parents, CLK_SOURCE_PWM, 28, 3, 0, 0, 8, 1, 0, &periph_l_regs, 17, periph_clk_enb_refcnt, TEGRA_PERIPH_ON_APB, pwm), 811 TEGRA_INIT_DATA("pwm", NULL, "tegra-pwm", pwm_parents, CLK_SOURCE_PWM, 28, 3, 0, 0, 8, 1, 0, 17, periph_clk_enb_refcnt, TEGRA_PERIPH_ON_APB, pwm),
858}; 812};
859 813
860static struct tegra_periph_init_data tegra_periph_nodiv_clk_list[] = { 814static struct tegra_periph_init_data tegra_periph_nodiv_clk_list[] = {
861 TEGRA_INIT_DATA_NODIV("uarta", NULL, "tegra_uart.0", mux_pllpcm_clkm, CLK_SOURCE_UARTA, 30, 2, 6, &periph_l_regs, TEGRA_PERIPH_ON_APB, uarta), 815 TEGRA_INIT_DATA_NODIV("uarta", NULL, "tegra_uart.0", mux_pllpcm_clkm, CLK_SOURCE_UARTA, 30, 2, 6, TEGRA_PERIPH_ON_APB, uarta),
862 TEGRA_INIT_DATA_NODIV("uartb", NULL, "tegra_uart.1", mux_pllpcm_clkm, CLK_SOURCE_UARTB, 30, 2, 7, &periph_l_regs, TEGRA_PERIPH_ON_APB, uartb), 816 TEGRA_INIT_DATA_NODIV("uartb", NULL, "tegra_uart.1", mux_pllpcm_clkm, CLK_SOURCE_UARTB, 30, 2, 7, TEGRA_PERIPH_ON_APB, uartb),
863 TEGRA_INIT_DATA_NODIV("uartc", NULL, "tegra_uart.2", mux_pllpcm_clkm, CLK_SOURCE_UARTC, 30, 2, 55, &periph_h_regs, TEGRA_PERIPH_ON_APB, uartc), 817 TEGRA_INIT_DATA_NODIV("uartc", NULL, "tegra_uart.2", mux_pllpcm_clkm, CLK_SOURCE_UARTC, 30, 2, 55, TEGRA_PERIPH_ON_APB, uartc),
864 TEGRA_INIT_DATA_NODIV("uartd", NULL, "tegra_uart.3", mux_pllpcm_clkm, CLK_SOURCE_UARTD, 30, 2, 65, &periph_u_regs, TEGRA_PERIPH_ON_APB, uartd), 818 TEGRA_INIT_DATA_NODIV("uartd", NULL, "tegra_uart.3", mux_pllpcm_clkm, CLK_SOURCE_UARTD, 30, 2, 65, TEGRA_PERIPH_ON_APB, uartd),
865 TEGRA_INIT_DATA_NODIV("uarte", NULL, "tegra_uart.4", mux_pllpcm_clkm, CLK_SOURCE_UARTE, 30, 2, 66, &periph_u_regs, TEGRA_PERIPH_ON_APB, uarte), 819 TEGRA_INIT_DATA_NODIV("uarte", NULL, "tegra_uart.4", mux_pllpcm_clkm, CLK_SOURCE_UARTE, 30, 2, 66, TEGRA_PERIPH_ON_APB, uarte),
866 TEGRA_INIT_DATA_NODIV("disp1", NULL, "tegradc.0", mux_pllpdc_clkm, CLK_SOURCE_DISP1, 30, 2, 27, &periph_l_regs, 0, disp1), 820 TEGRA_INIT_DATA_NODIV("disp1", NULL, "tegradc.0", mux_pllpdc_clkm, CLK_SOURCE_DISP1, 30, 2, 27, 0, disp1),
867 TEGRA_INIT_DATA_NODIV("disp2", NULL, "tegradc.1", mux_pllpdc_clkm, CLK_SOURCE_DISP2, 30, 2, 26, &periph_l_regs, 0, disp2), 821 TEGRA_INIT_DATA_NODIV("disp2", NULL, "tegradc.1", mux_pllpdc_clkm, CLK_SOURCE_DISP2, 30, 2, 26, 0, disp2),
868}; 822};
869 823
870static void __init tegra20_periph_clk_init(void) 824static void __init tegra20_periph_clk_init(void)
@@ -876,67 +830,58 @@ static void __init tegra20_periph_clk_init(void)
876 /* ac97 */ 830 /* ac97 */
877 clk = tegra_clk_register_periph_gate("ac97", "pll_a_out0", 831 clk = tegra_clk_register_periph_gate("ac97", "pll_a_out0",
878 TEGRA_PERIPH_ON_APB, 832 TEGRA_PERIPH_ON_APB,
879 clk_base, 0, 3, &periph_l_regs, 833 clk_base, 0, 3, periph_clk_enb_refcnt);
880 periph_clk_enb_refcnt);
881 clk_register_clkdev(clk, NULL, "tegra20-ac97"); 834 clk_register_clkdev(clk, NULL, "tegra20-ac97");
882 clks[ac97] = clk; 835 clks[ac97] = clk;
883 836
884 /* apbdma */ 837 /* apbdma */
885 clk = tegra_clk_register_periph_gate("apbdma", "pclk", 0, clk_base, 838 clk = tegra_clk_register_periph_gate("apbdma", "pclk", 0, clk_base,
886 0, 34, &periph_h_regs, 839 0, 34, periph_clk_enb_refcnt);
887 periph_clk_enb_refcnt);
888 clk_register_clkdev(clk, NULL, "tegra-apbdma"); 840 clk_register_clkdev(clk, NULL, "tegra-apbdma");
889 clks[apbdma] = clk; 841 clks[apbdma] = clk;
890 842
891 /* rtc */ 843 /* rtc */
892 clk = tegra_clk_register_periph_gate("rtc", "clk_32k", 844 clk = tegra_clk_register_periph_gate("rtc", "clk_32k",
893 TEGRA_PERIPH_NO_RESET, 845 TEGRA_PERIPH_NO_RESET,
894 clk_base, 0, 4, &periph_l_regs, 846 clk_base, 0, 4, periph_clk_enb_refcnt);
895 periph_clk_enb_refcnt);
896 clk_register_clkdev(clk, NULL, "rtc-tegra"); 847 clk_register_clkdev(clk, NULL, "rtc-tegra");
897 clks[rtc] = clk; 848 clks[rtc] = clk;
898 849
899 /* timer */ 850 /* timer */
900 clk = tegra_clk_register_periph_gate("timer", "clk_m", 0, clk_base, 851 clk = tegra_clk_register_periph_gate("timer", "clk_m", 0, clk_base,
901 0, 5, &periph_l_regs, 852 0, 5, periph_clk_enb_refcnt);
902 periph_clk_enb_refcnt);
903 clk_register_clkdev(clk, NULL, "timer"); 853 clk_register_clkdev(clk, NULL, "timer");
904 clks[timer] = clk; 854 clks[timer] = clk;
905 855
906 /* kbc */ 856 /* kbc */
907 clk = tegra_clk_register_periph_gate("kbc", "clk_32k", 857 clk = tegra_clk_register_periph_gate("kbc", "clk_32k",
908 TEGRA_PERIPH_NO_RESET | TEGRA_PERIPH_ON_APB, 858 TEGRA_PERIPH_NO_RESET | TEGRA_PERIPH_ON_APB,
909 clk_base, 0, 36, &periph_h_regs, 859 clk_base, 0, 36, periph_clk_enb_refcnt);
910 periph_clk_enb_refcnt);
911 clk_register_clkdev(clk, NULL, "tegra-kbc"); 860 clk_register_clkdev(clk, NULL, "tegra-kbc");
912 clks[kbc] = clk; 861 clks[kbc] = clk;
913 862
914 /* csus */ 863 /* csus */
915 clk = tegra_clk_register_periph_gate("csus", "clk_m", 864 clk = tegra_clk_register_periph_gate("csus", "clk_m",
916 TEGRA_PERIPH_NO_RESET, 865 TEGRA_PERIPH_NO_RESET,
917 clk_base, 0, 92, &periph_u_regs, 866 clk_base, 0, 92, periph_clk_enb_refcnt);
918 periph_clk_enb_refcnt);
919 clk_register_clkdev(clk, "csus", "tengra_camera"); 867 clk_register_clkdev(clk, "csus", "tengra_camera");
920 clks[csus] = clk; 868 clks[csus] = clk;
921 869
922 /* vcp */ 870 /* vcp */
923 clk = tegra_clk_register_periph_gate("vcp", "clk_m", 0, 871 clk = tegra_clk_register_periph_gate("vcp", "clk_m", 0,
924 clk_base, 0, 29, &periph_l_regs, 872 clk_base, 0, 29, periph_clk_enb_refcnt);
925 periph_clk_enb_refcnt);
926 clk_register_clkdev(clk, "vcp", "tegra-avp"); 873 clk_register_clkdev(clk, "vcp", "tegra-avp");
927 clks[vcp] = clk; 874 clks[vcp] = clk;
928 875
929 /* bsea */ 876 /* bsea */
930 clk = tegra_clk_register_periph_gate("bsea", "clk_m", 0, 877 clk = tegra_clk_register_periph_gate("bsea", "clk_m", 0,
931 clk_base, 0, 62, &periph_h_regs, 878 clk_base, 0, 62, periph_clk_enb_refcnt);
932 periph_clk_enb_refcnt);
933 clk_register_clkdev(clk, "bsea", "tegra-avp"); 879 clk_register_clkdev(clk, "bsea", "tegra-avp");
934 clks[bsea] = clk; 880 clks[bsea] = clk;
935 881
936 /* bsev */ 882 /* bsev */
937 clk = tegra_clk_register_periph_gate("bsev", "clk_m", 0, 883 clk = tegra_clk_register_periph_gate("bsev", "clk_m", 0,
938 clk_base, 0, 63, &periph_h_regs, 884 clk_base, 0, 63, periph_clk_enb_refcnt);
939 periph_clk_enb_refcnt);
940 clk_register_clkdev(clk, "bsev", "tegra-aes"); 885 clk_register_clkdev(clk, "bsev", "tegra-aes");
941 clks[bsev] = clk; 886 clks[bsev] = clk;
942 887
@@ -947,63 +892,61 @@ static void __init tegra20_periph_clk_init(void)
947 clk_base + CLK_SOURCE_EMC, 892 clk_base + CLK_SOURCE_EMC,
948 30, 2, 0, NULL); 893 30, 2, 0, NULL);
949 clk = tegra_clk_register_periph_gate("emc", "emc_mux", 0, clk_base, 0, 894 clk = tegra_clk_register_periph_gate("emc", "emc_mux", 0, clk_base, 0,
950 57, &periph_h_regs, periph_clk_enb_refcnt); 895 57, periph_clk_enb_refcnt);
951 clk_register_clkdev(clk, "emc", NULL); 896 clk_register_clkdev(clk, "emc", NULL);
952 clks[emc] = clk; 897 clks[emc] = clk;
953 898
954 /* usbd */ 899 /* usbd */
955 clk = tegra_clk_register_periph_gate("usbd", "clk_m", 0, clk_base, 0, 900 clk = tegra_clk_register_periph_gate("usbd", "clk_m", 0, clk_base, 0,
956 22, &periph_l_regs, periph_clk_enb_refcnt); 901 22, periph_clk_enb_refcnt);
957 clk_register_clkdev(clk, NULL, "fsl-tegra-udc"); 902 clk_register_clkdev(clk, NULL, "fsl-tegra-udc");
958 clks[usbd] = clk; 903 clks[usbd] = clk;
959 904
960 /* usb2 */ 905 /* usb2 */
961 clk = tegra_clk_register_periph_gate("usb2", "clk_m", 0, clk_base, 0, 906 clk = tegra_clk_register_periph_gate("usb2", "clk_m", 0, clk_base, 0,
962 58, &periph_h_regs, periph_clk_enb_refcnt); 907 58, periph_clk_enb_refcnt);
963 clk_register_clkdev(clk, NULL, "tegra-ehci.1"); 908 clk_register_clkdev(clk, NULL, "tegra-ehci.1");
964 clks[usb2] = clk; 909 clks[usb2] = clk;
965 910
966 /* usb3 */ 911 /* usb3 */
967 clk = tegra_clk_register_periph_gate("usb3", "clk_m", 0, clk_base, 0, 912 clk = tegra_clk_register_periph_gate("usb3", "clk_m", 0, clk_base, 0,
968 59, &periph_h_regs, periph_clk_enb_refcnt); 913 59, periph_clk_enb_refcnt);
969 clk_register_clkdev(clk, NULL, "tegra-ehci.2"); 914 clk_register_clkdev(clk, NULL, "tegra-ehci.2");
970 clks[usb3] = clk; 915 clks[usb3] = clk;
971 916
972 /* dsi */ 917 /* dsi */
973 clk = tegra_clk_register_periph_gate("dsi", "pll_d", 0, clk_base, 0, 918 clk = tegra_clk_register_periph_gate("dsi", "pll_d", 0, clk_base, 0,
974 48, &periph_h_regs, periph_clk_enb_refcnt); 919 48, periph_clk_enb_refcnt);
975 clk_register_clkdev(clk, NULL, "dsi"); 920 clk_register_clkdev(clk, NULL, "dsi");
976 clks[dsi] = clk; 921 clks[dsi] = clk;
977 922
978 /* csi */ 923 /* csi */
979 clk = tegra_clk_register_periph_gate("csi", "pll_p_out3", 0, clk_base, 924 clk = tegra_clk_register_periph_gate("csi", "pll_p_out3", 0, clk_base,
980 0, 52, &periph_h_regs, 925 0, 52, periph_clk_enb_refcnt);
981 periph_clk_enb_refcnt);
982 clk_register_clkdev(clk, "csi", "tegra_camera"); 926 clk_register_clkdev(clk, "csi", "tegra_camera");
983 clks[csi] = clk; 927 clks[csi] = clk;
984 928
985 /* isp */ 929 /* isp */
986 clk = tegra_clk_register_periph_gate("isp", "clk_m", 0, clk_base, 0, 23, 930 clk = tegra_clk_register_periph_gate("isp", "clk_m", 0, clk_base, 0, 23,
987 &periph_l_regs, periph_clk_enb_refcnt); 931 periph_clk_enb_refcnt);
988 clk_register_clkdev(clk, "isp", "tegra_camera"); 932 clk_register_clkdev(clk, "isp", "tegra_camera");
989 clks[isp] = clk; 933 clks[isp] = clk;
990 934
991 /* pex */ 935 /* pex */
992 clk = tegra_clk_register_periph_gate("pex", "clk_m", 0, clk_base, 0, 70, 936 clk = tegra_clk_register_periph_gate("pex", "clk_m", 0, clk_base, 0, 70,
993 &periph_u_regs, periph_clk_enb_refcnt); 937 periph_clk_enb_refcnt);
994 clk_register_clkdev(clk, "pex", NULL); 938 clk_register_clkdev(clk, "pex", NULL);
995 clks[pex] = clk; 939 clks[pex] = clk;
996 940
997 /* afi */ 941 /* afi */
998 clk = tegra_clk_register_periph_gate("afi", "clk_m", 0, clk_base, 0, 72, 942 clk = tegra_clk_register_periph_gate("afi", "clk_m", 0, clk_base, 0, 72,
999 &periph_u_regs, periph_clk_enb_refcnt); 943 periph_clk_enb_refcnt);
1000 clk_register_clkdev(clk, "afi", NULL); 944 clk_register_clkdev(clk, "afi", NULL);
1001 clks[afi] = clk; 945 clks[afi] = clk;
1002 946
1003 /* pcie_xclk */ 947 /* pcie_xclk */
1004 clk = tegra_clk_register_periph_gate("pcie_xclk", "clk_m", 0, clk_base, 948 clk = tegra_clk_register_periph_gate("pcie_xclk", "clk_m", 0, clk_base,
1005 0, 74, &periph_u_regs, 949 0, 74, periph_clk_enb_refcnt);
1006 periph_clk_enb_refcnt);
1007 clk_register_clkdev(clk, "pcie_xclk", NULL); 950 clk_register_clkdev(clk, "pcie_xclk", NULL);
1008 clks[pcie_xclk] = clk; 951 clks[pcie_xclk] = clk;
1009 952
@@ -1011,8 +954,7 @@ static void __init tegra20_periph_clk_init(void)
1011 clk = clk_register_fixed_rate(NULL, "cdev1_fixed", NULL, CLK_IS_ROOT, 954 clk = clk_register_fixed_rate(NULL, "cdev1_fixed", NULL, CLK_IS_ROOT,
1012 26000000); 955 26000000);
1013 clk = tegra_clk_register_periph_gate("cdev1", "cdev1_fixed", 0, 956 clk = tegra_clk_register_periph_gate("cdev1", "cdev1_fixed", 0,
1014 clk_base, 0, 94, &periph_u_regs, 957 clk_base, 0, 94, periph_clk_enb_refcnt);
1015 periph_clk_enb_refcnt);
1016 clk_register_clkdev(clk, "cdev1", NULL); 958 clk_register_clkdev(clk, "cdev1", NULL);
1017 clks[cdev1] = clk; 959 clks[cdev1] = clk;
1018 960
@@ -1020,8 +962,7 @@ static void __init tegra20_periph_clk_init(void)
1020 clk = clk_register_fixed_rate(NULL, "cdev2_fixed", NULL, CLK_IS_ROOT, 962 clk = clk_register_fixed_rate(NULL, "cdev2_fixed", NULL, CLK_IS_ROOT,
1021 26000000); 963 26000000);
1022 clk = tegra_clk_register_periph_gate("cdev2", "cdev2_fixed", 0, 964 clk = tegra_clk_register_periph_gate("cdev2", "cdev2_fixed", 0,
1023 clk_base, 0, 93, &periph_u_regs, 965 clk_base, 0, 93, periph_clk_enb_refcnt);
1024 periph_clk_enb_refcnt);
1025 clk_register_clkdev(clk, "cdev2", NULL); 966 clk_register_clkdev(clk, "cdev2", NULL);
1026 clks[cdev2] = clk; 967 clks[cdev2] = clk;
1027 968
@@ -1312,6 +1253,9 @@ static void __init tegra20_clock_init(struct device_node *np)
1312 BUG(); 1253 BUG();
1313 } 1254 }
1314 1255
1256 if (tegra_clk_set_periph_banks(TEGRA20_CLK_PERIPH_BANKS) < 0)
1257 return;
1258
1315 tegra20_osc_clk_init(); 1259 tegra20_osc_clk_init();
1316 tegra20_pmc_clk_init(); 1260 tegra20_pmc_clk_init();
1317 tegra20_fixed_clk_init(); 1261 tegra20_fixed_clk_init();
diff --git a/drivers/clk/tegra/clk-tegra30.c b/drivers/clk/tegra/clk-tegra30.c
index 147f5b9fed11..a66bdabb5c5c 100644
--- a/drivers/clk/tegra/clk-tegra30.c
+++ b/drivers/clk/tegra/clk-tegra30.c
@@ -26,38 +26,6 @@
26 26
27#include "clk.h" 27#include "clk.h"
28 28
29#define RST_DEVICES_L 0x004
30#define RST_DEVICES_H 0x008
31#define RST_DEVICES_U 0x00c
32#define RST_DEVICES_V 0x358
33#define RST_DEVICES_W 0x35c
34#define RST_DEVICES_SET_L 0x300
35#define RST_DEVICES_CLR_L 0x304
36#define RST_DEVICES_SET_H 0x308
37#define RST_DEVICES_CLR_H 0x30c
38#define RST_DEVICES_SET_U 0x310
39#define RST_DEVICES_CLR_U 0x314
40#define RST_DEVICES_SET_V 0x430
41#define RST_DEVICES_CLR_V 0x434
42#define RST_DEVICES_SET_W 0x438
43#define RST_DEVICES_CLR_W 0x43c
44#define RST_DEVICES_NUM 5
45
46#define CLK_OUT_ENB_L 0x010
47#define CLK_OUT_ENB_H 0x014
48#define CLK_OUT_ENB_U 0x018
49#define CLK_OUT_ENB_V 0x360
50#define CLK_OUT_ENB_W 0x364
51#define CLK_OUT_ENB_SET_L 0x320
52#define CLK_OUT_ENB_CLR_L 0x324
53#define CLK_OUT_ENB_SET_H 0x328
54#define CLK_OUT_ENB_CLR_H 0x32c
55#define CLK_OUT_ENB_SET_U 0x330
56#define CLK_OUT_ENB_CLR_U 0x334
57#define CLK_OUT_ENB_SET_V 0x440
58#define CLK_OUT_ENB_CLR_V 0x444
59#define CLK_OUT_ENB_SET_W 0x448
60#define CLK_OUT_ENB_CLR_W 0x44c
61#define CLK_OUT_ENB_NUM 5 29#define CLK_OUT_ENB_NUM 5
62 30
63#define OSC_CTRL 0x50 31#define OSC_CTRL 0x50
@@ -92,6 +60,8 @@
92 60
93#define SYSTEM_CLK_RATE 0x030 61#define SYSTEM_CLK_RATE 0x030
94 62
63#define TEGRA30_CLK_PERIPH_BANKS 5
64
95#define PLLC_BASE 0x80 65#define PLLC_BASE 0x80
96#define PLLC_MISC 0x8c 66#define PLLC_MISC 0x8c
97#define PLLM_BASE 0x90 67#define PLLM_BASE 0x90
@@ -280,43 +250,43 @@ static DEFINE_SPINLOCK(pll_d_lock);
280static DEFINE_SPINLOCK(sysrate_lock); 250static DEFINE_SPINLOCK(sysrate_lock);
281 251
282#define TEGRA_INIT_DATA_MUX(_name, _con_id, _dev_id, _parents, _offset, \ 252#define TEGRA_INIT_DATA_MUX(_name, _con_id, _dev_id, _parents, _offset, \
283 _clk_num, _regs, _gate_flags, _clk_id) \ 253 _clk_num, _gate_flags, _clk_id) \
284 TEGRA_INIT_DATA(_name, _con_id, _dev_id, _parents, _offset, \ 254 TEGRA_INIT_DATA(_name, _con_id, _dev_id, _parents, _offset, \
285 30, 2, 0, 0, 8, 1, TEGRA_DIVIDER_ROUND_UP, _regs, \ 255 30, 2, 0, 0, 8, 1, TEGRA_DIVIDER_ROUND_UP, \
286 _clk_num, periph_clk_enb_refcnt, _gate_flags, _clk_id) 256 _clk_num, periph_clk_enb_refcnt, _gate_flags, _clk_id)
287 257
288#define TEGRA_INIT_DATA_DIV16(_name, _con_id, _dev_id, _parents, _offset, \ 258#define TEGRA_INIT_DATA_DIV16(_name, _con_id, _dev_id, _parents, _offset, \
289 _clk_num, _regs, _gate_flags, _clk_id) \ 259 _clk_num, _gate_flags, _clk_id) \
290 TEGRA_INIT_DATA(_name, _con_id, _dev_id, _parents, _offset, \ 260 TEGRA_INIT_DATA(_name, _con_id, _dev_id, _parents, _offset, \
291 30, 2, 0, 0, 16, 0, TEGRA_DIVIDER_ROUND_UP, \ 261 30, 2, 0, 0, 16, 0, TEGRA_DIVIDER_ROUND_UP, \
292 _regs, _clk_num, periph_clk_enb_refcnt, \ 262 _clk_num, periph_clk_enb_refcnt, \
293 _gate_flags, _clk_id) 263 _gate_flags, _clk_id)
294 264
295#define TEGRA_INIT_DATA_MUX8(_name, _con_id, _dev_id, _parents, _offset, \ 265#define TEGRA_INIT_DATA_MUX8(_name, _con_id, _dev_id, _parents, _offset, \
296 _clk_num, _regs, _gate_flags, _clk_id) \ 266 _clk_num, _gate_flags, _clk_id) \
297 TEGRA_INIT_DATA(_name, _con_id, _dev_id, _parents, _offset, \ 267 TEGRA_INIT_DATA(_name, _con_id, _dev_id, _parents, _offset, \
298 29, 3, 0, 0, 8, 1, TEGRA_DIVIDER_ROUND_UP, _regs,\ 268 29, 3, 0, 0, 8, 1, TEGRA_DIVIDER_ROUND_UP, \
299 _clk_num, periph_clk_enb_refcnt, _gate_flags, _clk_id) 269 _clk_num, periph_clk_enb_refcnt, _gate_flags, _clk_id)
300 270
301#define TEGRA_INIT_DATA_INT(_name, _con_id, _dev_id, _parents, _offset, \ 271#define TEGRA_INIT_DATA_INT(_name, _con_id, _dev_id, _parents, _offset, \
302 _clk_num, _regs, _gate_flags, _clk_id) \ 272 _clk_num, _gate_flags, _clk_id) \
303 TEGRA_INIT_DATA(_name, _con_id, _dev_id, _parents, _offset, \ 273 TEGRA_INIT_DATA(_name, _con_id, _dev_id, _parents, _offset, \
304 30, 2, 0, 0, 8, 1, TEGRA_DIVIDER_INT | \ 274 30, 2, 0, 0, 8, 1, TEGRA_DIVIDER_INT | \
305 TEGRA_DIVIDER_ROUND_UP, _regs, _clk_num, \ 275 TEGRA_DIVIDER_ROUND_UP, _clk_num, \
306 periph_clk_enb_refcnt, _gate_flags, _clk_id) 276 periph_clk_enb_refcnt, _gate_flags, _clk_id)
307 277
308#define TEGRA_INIT_DATA_UART(_name, _con_id, _dev_id, _parents, _offset,\ 278#define TEGRA_INIT_DATA_UART(_name, _con_id, _dev_id, _parents, _offset,\
309 _clk_num, _regs, _clk_id) \ 279 _clk_num, _clk_id) \
310 TEGRA_INIT_DATA(_name, _con_id, _dev_id, _parents, _offset, \ 280 TEGRA_INIT_DATA(_name, _con_id, _dev_id, _parents, _offset, \
311 30, 2, 0, 0, 16, 1, TEGRA_DIVIDER_UART | \ 281 30, 2, 0, 0, 16, 1, TEGRA_DIVIDER_UART | \
312 TEGRA_DIVIDER_ROUND_UP, _regs, _clk_num, \ 282 TEGRA_DIVIDER_ROUND_UP, _clk_num, \
313 periph_clk_enb_refcnt, 0, _clk_id) 283 periph_clk_enb_refcnt, 0, _clk_id)
314 284
315#define TEGRA_INIT_DATA_NODIV(_name, _con_id, _dev_id, _parents, _offset, \ 285#define TEGRA_INIT_DATA_NODIV(_name, _con_id, _dev_id, _parents, _offset, \
316 _mux_shift, _mux_width, _clk_num, _regs, \ 286 _mux_shift, _mux_width, _clk_num, \
317 _gate_flags, _clk_id) \ 287 _gate_flags, _clk_id) \
318 TEGRA_INIT_DATA(_name, _con_id, _dev_id, _parents, _offset, \ 288 TEGRA_INIT_DATA(_name, _con_id, _dev_id, _parents, _offset, \
319 _mux_shift, _mux_width, 0, 0, 0, 0, 0, _regs, \ 289 _mux_shift, _mux_width, 0, 0, 0, 0, 0,\
320 _clk_num, periph_clk_enb_refcnt, _gate_flags, \ 290 _clk_num, periph_clk_enb_refcnt, _gate_flags, \
321 _clk_id) 291 _clk_id)
322 292
@@ -695,52 +665,6 @@ static struct tegra_clk_pll_params pll_e_params = {
695 .lock_delay = 300, 665 .lock_delay = 300,
696}; 666};
697 667
698/* Peripheral clock registers */
699static struct tegra_clk_periph_regs periph_l_regs = {
700 .enb_reg = CLK_OUT_ENB_L,
701 .enb_set_reg = CLK_OUT_ENB_SET_L,
702 .enb_clr_reg = CLK_OUT_ENB_CLR_L,
703 .rst_reg = RST_DEVICES_L,
704 .rst_set_reg = RST_DEVICES_SET_L,
705 .rst_clr_reg = RST_DEVICES_CLR_L,
706};
707
708static struct tegra_clk_periph_regs periph_h_regs = {
709 .enb_reg = CLK_OUT_ENB_H,
710 .enb_set_reg = CLK_OUT_ENB_SET_H,
711 .enb_clr_reg = CLK_OUT_ENB_CLR_H,
712 .rst_reg = RST_DEVICES_H,
713 .rst_set_reg = RST_DEVICES_SET_H,
714 .rst_clr_reg = RST_DEVICES_CLR_H,
715};
716
717static struct tegra_clk_periph_regs periph_u_regs = {
718 .enb_reg = CLK_OUT_ENB_U,
719 .enb_set_reg = CLK_OUT_ENB_SET_U,
720 .enb_clr_reg = CLK_OUT_ENB_CLR_U,
721 .rst_reg = RST_DEVICES_U,
722 .rst_set_reg = RST_DEVICES_SET_U,
723 .rst_clr_reg = RST_DEVICES_CLR_U,
724};
725
726static struct tegra_clk_periph_regs periph_v_regs = {
727 .enb_reg = CLK_OUT_ENB_V,
728 .enb_set_reg = CLK_OUT_ENB_SET_V,
729 .enb_clr_reg = CLK_OUT_ENB_CLR_V,
730 .rst_reg = RST_DEVICES_V,
731 .rst_set_reg = RST_DEVICES_SET_V,
732 .rst_clr_reg = RST_DEVICES_CLR_V,
733};
734
735static struct tegra_clk_periph_regs periph_w_regs = {
736 .enb_reg = CLK_OUT_ENB_W,
737 .enb_set_reg = CLK_OUT_ENB_SET_W,
738 .enb_clr_reg = CLK_OUT_ENB_CLR_W,
739 .rst_reg = RST_DEVICES_W,
740 .rst_set_reg = RST_DEVICES_SET_W,
741 .rst_clr_reg = RST_DEVICES_CLR_W,
742};
743
744static void tegra30_clk_measure_input_freq(void) 668static void tegra30_clk_measure_input_freq(void)
745{ 669{
746 u32 osc_ctrl = readl_relaxed(clk_base + OSC_CTRL); 670 u32 osc_ctrl = readl_relaxed(clk_base + OSC_CTRL);
@@ -1160,7 +1084,7 @@ static void __init tegra30_audio_clk_init(void)
1160 &clk_doubler_lock); 1084 &clk_doubler_lock);
1161 clk = tegra_clk_register_periph_gate("audio0_2x", "audio0_div", 1085 clk = tegra_clk_register_periph_gate("audio0_2x", "audio0_div",
1162 TEGRA_PERIPH_NO_RESET, clk_base, 1086 TEGRA_PERIPH_NO_RESET, clk_base,
1163 CLK_SET_RATE_PARENT, 113, &periph_v_regs, 1087 CLK_SET_RATE_PARENT, 113,
1164 periph_clk_enb_refcnt); 1088 periph_clk_enb_refcnt);
1165 clk_register_clkdev(clk, "audio0_2x", NULL); 1089 clk_register_clkdev(clk, "audio0_2x", NULL);
1166 clks[audio0_2x] = clk; 1090 clks[audio0_2x] = clk;
@@ -1173,7 +1097,7 @@ static void __init tegra30_audio_clk_init(void)
1173 &clk_doubler_lock); 1097 &clk_doubler_lock);
1174 clk = tegra_clk_register_periph_gate("audio1_2x", "audio1_div", 1098 clk = tegra_clk_register_periph_gate("audio1_2x", "audio1_div",
1175 TEGRA_PERIPH_NO_RESET, clk_base, 1099 TEGRA_PERIPH_NO_RESET, clk_base,
1176 CLK_SET_RATE_PARENT, 114, &periph_v_regs, 1100 CLK_SET_RATE_PARENT, 114,
1177 periph_clk_enb_refcnt); 1101 periph_clk_enb_refcnt);
1178 clk_register_clkdev(clk, "audio1_2x", NULL); 1102 clk_register_clkdev(clk, "audio1_2x", NULL);
1179 clks[audio1_2x] = clk; 1103 clks[audio1_2x] = clk;
@@ -1186,7 +1110,7 @@ static void __init tegra30_audio_clk_init(void)
1186 &clk_doubler_lock); 1110 &clk_doubler_lock);
1187 clk = tegra_clk_register_periph_gate("audio2_2x", "audio2_div", 1111 clk = tegra_clk_register_periph_gate("audio2_2x", "audio2_div",
1188 TEGRA_PERIPH_NO_RESET, clk_base, 1112 TEGRA_PERIPH_NO_RESET, clk_base,
1189 CLK_SET_RATE_PARENT, 115, &periph_v_regs, 1113 CLK_SET_RATE_PARENT, 115,
1190 periph_clk_enb_refcnt); 1114 periph_clk_enb_refcnt);
1191 clk_register_clkdev(clk, "audio2_2x", NULL); 1115 clk_register_clkdev(clk, "audio2_2x", NULL);
1192 clks[audio2_2x] = clk; 1116 clks[audio2_2x] = clk;
@@ -1199,7 +1123,7 @@ static void __init tegra30_audio_clk_init(void)
1199 &clk_doubler_lock); 1123 &clk_doubler_lock);
1200 clk = tegra_clk_register_periph_gate("audio3_2x", "audio3_div", 1124 clk = tegra_clk_register_periph_gate("audio3_2x", "audio3_div",
1201 TEGRA_PERIPH_NO_RESET, clk_base, 1125 TEGRA_PERIPH_NO_RESET, clk_base,
1202 CLK_SET_RATE_PARENT, 116, &periph_v_regs, 1126 CLK_SET_RATE_PARENT, 116,
1203 periph_clk_enb_refcnt); 1127 periph_clk_enb_refcnt);
1204 clk_register_clkdev(clk, "audio3_2x", NULL); 1128 clk_register_clkdev(clk, "audio3_2x", NULL);
1205 clks[audio3_2x] = clk; 1129 clks[audio3_2x] = clk;
@@ -1212,7 +1136,7 @@ static void __init tegra30_audio_clk_init(void)
1212 &clk_doubler_lock); 1136 &clk_doubler_lock);
1213 clk = tegra_clk_register_periph_gate("audio4_2x", "audio4_div", 1137 clk = tegra_clk_register_periph_gate("audio4_2x", "audio4_div",
1214 TEGRA_PERIPH_NO_RESET, clk_base, 1138 TEGRA_PERIPH_NO_RESET, clk_base,
1215 CLK_SET_RATE_PARENT, 117, &periph_v_regs, 1139 CLK_SET_RATE_PARENT, 117,
1216 periph_clk_enb_refcnt); 1140 periph_clk_enb_refcnt);
1217 clk_register_clkdev(clk, "audio4_2x", NULL); 1141 clk_register_clkdev(clk, "audio4_2x", NULL);
1218 clks[audio4_2x] = clk; 1142 clks[audio4_2x] = clk;
@@ -1225,7 +1149,7 @@ static void __init tegra30_audio_clk_init(void)
1225 &clk_doubler_lock); 1149 &clk_doubler_lock);
1226 clk = tegra_clk_register_periph_gate("spdif_2x", "spdif_div", 1150 clk = tegra_clk_register_periph_gate("spdif_2x", "spdif_div",
1227 TEGRA_PERIPH_NO_RESET, clk_base, 1151 TEGRA_PERIPH_NO_RESET, clk_base,
1228 CLK_SET_RATE_PARENT, 118, &periph_v_regs, 1152 CLK_SET_RATE_PARENT, 118,
1229 periph_clk_enb_refcnt); 1153 periph_clk_enb_refcnt);
1230 clk_register_clkdev(clk, "spdif_2x", NULL); 1154 clk_register_clkdev(clk, "spdif_2x", NULL);
1231 clks[spdif_2x] = clk; 1155 clks[spdif_2x] = clk;
@@ -1444,77 +1368,77 @@ static const char *mux_plld_out0_plld2_out0[] = { "pll_d_out0",
1444 "pll_d2_out0" }; 1368 "pll_d2_out0" };
1445 1369
1446static struct tegra_periph_init_data tegra_periph_clk_list[] = { 1370static struct tegra_periph_init_data tegra_periph_clk_list[] = {
1447 TEGRA_INIT_DATA_MUX("i2s0", NULL, "tegra30-i2s.0", i2s0_parents, CLK_SOURCE_I2S0, 30, &periph_l_regs, TEGRA_PERIPH_ON_APB, i2s0), 1371 TEGRA_INIT_DATA_MUX("i2s0", NULL, "tegra30-i2s.0", i2s0_parents, CLK_SOURCE_I2S0, 30, TEGRA_PERIPH_ON_APB, i2s0),
1448 TEGRA_INIT_DATA_MUX("i2s1", NULL, "tegra30-i2s.1", i2s1_parents, CLK_SOURCE_I2S1, 11, &periph_l_regs, TEGRA_PERIPH_ON_APB, i2s1), 1372 TEGRA_INIT_DATA_MUX("i2s1", NULL, "tegra30-i2s.1", i2s1_parents, CLK_SOURCE_I2S1, 11, TEGRA_PERIPH_ON_APB, i2s1),
1449 TEGRA_INIT_DATA_MUX("i2s2", NULL, "tegra30-i2s.2", i2s2_parents, CLK_SOURCE_I2S2, 18, &periph_l_regs, TEGRA_PERIPH_ON_APB, i2s2), 1373 TEGRA_INIT_DATA_MUX("i2s2", NULL, "tegra30-i2s.2", i2s2_parents, CLK_SOURCE_I2S2, 18, TEGRA_PERIPH_ON_APB, i2s2),
1450 TEGRA_INIT_DATA_MUX("i2s3", NULL, "tegra30-i2s.3", i2s3_parents, CLK_SOURCE_I2S3, 101, &periph_v_regs, TEGRA_PERIPH_ON_APB, i2s3), 1374 TEGRA_INIT_DATA_MUX("i2s3", NULL, "tegra30-i2s.3", i2s3_parents, CLK_SOURCE_I2S3, 101, TEGRA_PERIPH_ON_APB, i2s3),
1451 TEGRA_INIT_DATA_MUX("i2s4", NULL, "tegra30-i2s.4", i2s4_parents, CLK_SOURCE_I2S4, 102, &periph_v_regs, TEGRA_PERIPH_ON_APB, i2s4), 1375 TEGRA_INIT_DATA_MUX("i2s4", NULL, "tegra30-i2s.4", i2s4_parents, CLK_SOURCE_I2S4, 102, TEGRA_PERIPH_ON_APB, i2s4),
1452 TEGRA_INIT_DATA_MUX("spdif_out", "spdif_out", "tegra30-spdif", spdif_out_parents, CLK_SOURCE_SPDIF_OUT, 10, &periph_l_regs, TEGRA_PERIPH_ON_APB, spdif_out), 1376 TEGRA_INIT_DATA_MUX("spdif_out", "spdif_out", "tegra30-spdif", spdif_out_parents, CLK_SOURCE_SPDIF_OUT, 10, TEGRA_PERIPH_ON_APB, spdif_out),
1453 TEGRA_INIT_DATA_MUX("spdif_in", "spdif_in", "tegra30-spdif", spdif_in_parents, CLK_SOURCE_SPDIF_IN, 10, &periph_l_regs, TEGRA_PERIPH_ON_APB, spdif_in), 1377 TEGRA_INIT_DATA_MUX("spdif_in", "spdif_in", "tegra30-spdif", spdif_in_parents, CLK_SOURCE_SPDIF_IN, 10, TEGRA_PERIPH_ON_APB, spdif_in),
1454 TEGRA_INIT_DATA_MUX("d_audio", "d_audio", "tegra30-ahub", mux_pllacp_clkm, CLK_SOURCE_D_AUDIO, 106, &periph_v_regs, 0, d_audio), 1378 TEGRA_INIT_DATA_MUX("d_audio", "d_audio", "tegra30-ahub", mux_pllacp_clkm, CLK_SOURCE_D_AUDIO, 106, 0, d_audio),
1455 TEGRA_INIT_DATA_MUX("dam0", NULL, "tegra30-dam.0", mux_pllacp_clkm, CLK_SOURCE_DAM0, 108, &periph_v_regs, 0, dam0), 1379 TEGRA_INIT_DATA_MUX("dam0", NULL, "tegra30-dam.0", mux_pllacp_clkm, CLK_SOURCE_DAM0, 108, 0, dam0),
1456 TEGRA_INIT_DATA_MUX("dam1", NULL, "tegra30-dam.1", mux_pllacp_clkm, CLK_SOURCE_DAM1, 109, &periph_v_regs, 0, dam1), 1380 TEGRA_INIT_DATA_MUX("dam1", NULL, "tegra30-dam.1", mux_pllacp_clkm, CLK_SOURCE_DAM1, 109, 0, dam1),
1457 TEGRA_INIT_DATA_MUX("dam2", NULL, "tegra30-dam.2", mux_pllacp_clkm, CLK_SOURCE_DAM2, 110, &periph_v_regs, 0, dam2), 1381 TEGRA_INIT_DATA_MUX("dam2", NULL, "tegra30-dam.2", mux_pllacp_clkm, CLK_SOURCE_DAM2, 110, 0, dam2),
1458 TEGRA_INIT_DATA_MUX("hda", "hda", "tegra30-hda", mux_pllpcm_clkm, CLK_SOURCE_HDA, 125, &periph_v_regs, 0, hda), 1382 TEGRA_INIT_DATA_MUX("hda", "hda", "tegra30-hda", mux_pllpcm_clkm, CLK_SOURCE_HDA, 125, 0, hda),
1459 TEGRA_INIT_DATA_MUX("hda2codec_2x", "hda2codec", "tegra30-hda", mux_pllpcm_clkm, CLK_SOURCE_HDA2CODEC_2X, 111, &periph_v_regs, 0, hda2codec_2x), 1383 TEGRA_INIT_DATA_MUX("hda2codec_2x", "hda2codec", "tegra30-hda", mux_pllpcm_clkm, CLK_SOURCE_HDA2CODEC_2X, 111, 0, hda2codec_2x),
1460 TEGRA_INIT_DATA_MUX("sbc1", NULL, "spi_tegra.0", mux_pllpcm_clkm, CLK_SOURCE_SBC1, 41, &periph_h_regs, TEGRA_PERIPH_ON_APB, sbc1), 1384 TEGRA_INIT_DATA_MUX("sbc1", NULL, "spi_tegra.0", mux_pllpcm_clkm, CLK_SOURCE_SBC1, 41, TEGRA_PERIPH_ON_APB, sbc1),
1461 TEGRA_INIT_DATA_MUX("sbc2", NULL, "spi_tegra.1", mux_pllpcm_clkm, CLK_SOURCE_SBC2, 44, &periph_h_regs, TEGRA_PERIPH_ON_APB, sbc2), 1385 TEGRA_INIT_DATA_MUX("sbc2", NULL, "spi_tegra.1", mux_pllpcm_clkm, CLK_SOURCE_SBC2, 44, TEGRA_PERIPH_ON_APB, sbc2),
1462 TEGRA_INIT_DATA_MUX("sbc3", NULL, "spi_tegra.2", mux_pllpcm_clkm, CLK_SOURCE_SBC3, 46, &periph_h_regs, TEGRA_PERIPH_ON_APB, sbc3), 1386 TEGRA_INIT_DATA_MUX("sbc3", NULL, "spi_tegra.2", mux_pllpcm_clkm, CLK_SOURCE_SBC3, 46, TEGRA_PERIPH_ON_APB, sbc3),
1463 TEGRA_INIT_DATA_MUX("sbc4", NULL, "spi_tegra.3", mux_pllpcm_clkm, CLK_SOURCE_SBC4, 68, &periph_u_regs, TEGRA_PERIPH_ON_APB, sbc4), 1387 TEGRA_INIT_DATA_MUX("sbc4", NULL, "spi_tegra.3", mux_pllpcm_clkm, CLK_SOURCE_SBC4, 68, TEGRA_PERIPH_ON_APB, sbc4),
1464 TEGRA_INIT_DATA_MUX("sbc5", NULL, "spi_tegra.4", mux_pllpcm_clkm, CLK_SOURCE_SBC5, 104, &periph_v_regs, TEGRA_PERIPH_ON_APB, sbc5), 1388 TEGRA_INIT_DATA_MUX("sbc5", NULL, "spi_tegra.4", mux_pllpcm_clkm, CLK_SOURCE_SBC5, 104, TEGRA_PERIPH_ON_APB, sbc5),
1465 TEGRA_INIT_DATA_MUX("sbc6", NULL, "spi_tegra.5", mux_pllpcm_clkm, CLK_SOURCE_SBC6, 105, &periph_v_regs, TEGRA_PERIPH_ON_APB, sbc6), 1389 TEGRA_INIT_DATA_MUX("sbc6", NULL, "spi_tegra.5", mux_pllpcm_clkm, CLK_SOURCE_SBC6, 105, TEGRA_PERIPH_ON_APB, sbc6),
1466 TEGRA_INIT_DATA_MUX("sata_oob", NULL, "tegra_sata_oob", mux_pllpcm_clkm, CLK_SOURCE_SATA_OOB, 123, &periph_v_regs, TEGRA_PERIPH_ON_APB, sata_oob), 1390 TEGRA_INIT_DATA_MUX("sata_oob", NULL, "tegra_sata_oob", mux_pllpcm_clkm, CLK_SOURCE_SATA_OOB, 123, TEGRA_PERIPH_ON_APB, sata_oob),
1467 TEGRA_INIT_DATA_MUX("sata", NULL, "tegra_sata", mux_pllpcm_clkm, CLK_SOURCE_SATA, 124, &periph_v_regs, TEGRA_PERIPH_ON_APB, sata), 1391 TEGRA_INIT_DATA_MUX("sata", NULL, "tegra_sata", mux_pllpcm_clkm, CLK_SOURCE_SATA, 124, TEGRA_PERIPH_ON_APB, sata),
1468 TEGRA_INIT_DATA_MUX("ndflash", NULL, "tegra_nand", mux_pllpcm_clkm, CLK_SOURCE_NDFLASH, 13, &periph_l_regs, TEGRA_PERIPH_ON_APB, ndflash), 1392 TEGRA_INIT_DATA_MUX("ndflash", NULL, "tegra_nand", mux_pllpcm_clkm, CLK_SOURCE_NDFLASH, 13, TEGRA_PERIPH_ON_APB, ndflash),
1469 TEGRA_INIT_DATA_MUX("ndspeed", NULL, "tegra_nand_speed", mux_pllpcm_clkm, CLK_SOURCE_NDSPEED, 80, &periph_u_regs, TEGRA_PERIPH_ON_APB, ndspeed), 1393 TEGRA_INIT_DATA_MUX("ndspeed", NULL, "tegra_nand_speed", mux_pllpcm_clkm, CLK_SOURCE_NDSPEED, 80, TEGRA_PERIPH_ON_APB, ndspeed),
1470 TEGRA_INIT_DATA_MUX("vfir", NULL, "vfir", mux_pllpcm_clkm, CLK_SOURCE_VFIR, 7, &periph_l_regs, TEGRA_PERIPH_ON_APB, vfir), 1394 TEGRA_INIT_DATA_MUX("vfir", NULL, "vfir", mux_pllpcm_clkm, CLK_SOURCE_VFIR, 7, TEGRA_PERIPH_ON_APB, vfir),
1471 TEGRA_INIT_DATA_MUX("csite", NULL, "csite", mux_pllpcm_clkm, CLK_SOURCE_CSITE, 73, &periph_u_regs, TEGRA_PERIPH_ON_APB, csite), 1395 TEGRA_INIT_DATA_MUX("csite", NULL, "csite", mux_pllpcm_clkm, CLK_SOURCE_CSITE, 73, TEGRA_PERIPH_ON_APB, csite),
1472 TEGRA_INIT_DATA_MUX("la", NULL, "la", mux_pllpcm_clkm, CLK_SOURCE_LA, 76, &periph_u_regs, TEGRA_PERIPH_ON_APB, la), 1396 TEGRA_INIT_DATA_MUX("la", NULL, "la", mux_pllpcm_clkm, CLK_SOURCE_LA, 76, TEGRA_PERIPH_ON_APB, la),
1473 TEGRA_INIT_DATA_MUX("owr", NULL, "tegra_w1", mux_pllpcm_clkm, CLK_SOURCE_OWR, 71, &periph_u_regs, TEGRA_PERIPH_ON_APB, owr), 1397 TEGRA_INIT_DATA_MUX("owr", NULL, "tegra_w1", mux_pllpcm_clkm, CLK_SOURCE_OWR, 71, TEGRA_PERIPH_ON_APB, owr),
1474 TEGRA_INIT_DATA_MUX("mipi", NULL, "mipi", mux_pllpcm_clkm, CLK_SOURCE_MIPI, 50, &periph_h_regs, TEGRA_PERIPH_ON_APB, mipi), 1398 TEGRA_INIT_DATA_MUX("mipi", NULL, "mipi", mux_pllpcm_clkm, CLK_SOURCE_MIPI, 50, TEGRA_PERIPH_ON_APB, mipi),
1475 TEGRA_INIT_DATA_MUX("tsensor", NULL, "tegra-tsensor", mux_pllpc_clkm_clk32k, CLK_SOURCE_TSENSOR, 100, &periph_v_regs, TEGRA_PERIPH_ON_APB, tsensor), 1399 TEGRA_INIT_DATA_MUX("tsensor", NULL, "tegra-tsensor", mux_pllpc_clkm_clk32k, CLK_SOURCE_TSENSOR, 100, TEGRA_PERIPH_ON_APB, tsensor),
1476 TEGRA_INIT_DATA_MUX("i2cslow", NULL, "i2cslow", mux_pllpc_clk32k_clkm, CLK_SOURCE_I2CSLOW, 81, &periph_u_regs, TEGRA_PERIPH_ON_APB, i2cslow), 1400 TEGRA_INIT_DATA_MUX("i2cslow", NULL, "i2cslow", mux_pllpc_clk32k_clkm, CLK_SOURCE_I2CSLOW, 81, TEGRA_PERIPH_ON_APB, i2cslow),
1477 TEGRA_INIT_DATA_INT("vde", NULL, "vde", mux_pllpcm_clkm, CLK_SOURCE_VDE, 61, &periph_h_regs, 0, vde), 1401 TEGRA_INIT_DATA_INT("vde", NULL, "vde", mux_pllpcm_clkm, CLK_SOURCE_VDE, 61, 0, vde),
1478 TEGRA_INIT_DATA_INT("vi", "vi", "tegra_camera", mux_pllmcpa, CLK_SOURCE_VI, 20, &periph_l_regs, 0, vi), 1402 TEGRA_INIT_DATA_INT("vi", "vi", "tegra_camera", mux_pllmcpa, CLK_SOURCE_VI, 20, 0, vi),
1479 TEGRA_INIT_DATA_INT("epp", NULL, "epp", mux_pllmcpa, CLK_SOURCE_EPP, 19, &periph_l_regs, 0, epp), 1403 TEGRA_INIT_DATA_INT("epp", NULL, "epp", mux_pllmcpa, CLK_SOURCE_EPP, 19, 0, epp),
1480 TEGRA_INIT_DATA_INT("mpe", NULL, "mpe", mux_pllmcpa, CLK_SOURCE_MPE, 60, &periph_h_regs, 0, mpe), 1404 TEGRA_INIT_DATA_INT("mpe", NULL, "mpe", mux_pllmcpa, CLK_SOURCE_MPE, 60, 0, mpe),
1481 TEGRA_INIT_DATA_INT("host1x", NULL, "host1x", mux_pllmcpa, CLK_SOURCE_HOST1X, 28, &periph_l_regs, 0, host1x), 1405 TEGRA_INIT_DATA_INT("host1x", NULL, "host1x", mux_pllmcpa, CLK_SOURCE_HOST1X, 28, 0, host1x),
1482 TEGRA_INIT_DATA_INT("3d", NULL, "3d", mux_pllmcpa, CLK_SOURCE_3D, 24, &periph_l_regs, TEGRA_PERIPH_MANUAL_RESET, gr3d), 1406 TEGRA_INIT_DATA_INT("3d", NULL, "3d", mux_pllmcpa, CLK_SOURCE_3D, 24, TEGRA_PERIPH_MANUAL_RESET, gr3d),
1483 TEGRA_INIT_DATA_INT("3d2", NULL, "3d2", mux_pllmcpa, CLK_SOURCE_3D2, 98, &periph_v_regs, TEGRA_PERIPH_MANUAL_RESET, gr3d2), 1407 TEGRA_INIT_DATA_INT("3d2", NULL, "3d2", mux_pllmcpa, CLK_SOURCE_3D2, 98, TEGRA_PERIPH_MANUAL_RESET, gr3d2),
1484 TEGRA_INIT_DATA_INT("2d", NULL, "2d", mux_pllmcpa, CLK_SOURCE_2D, 21, &periph_l_regs, 0, gr2d), 1408 TEGRA_INIT_DATA_INT("2d", NULL, "2d", mux_pllmcpa, CLK_SOURCE_2D, 21, 0, gr2d),
1485 TEGRA_INIT_DATA_INT("se", NULL, "se", mux_pllpcm_clkm, CLK_SOURCE_SE, 127, &periph_v_regs, 0, se), 1409 TEGRA_INIT_DATA_INT("se", NULL, "se", mux_pllpcm_clkm, CLK_SOURCE_SE, 127, 0, se),
1486 TEGRA_INIT_DATA_MUX("mselect", NULL, "mselect", mux_pllp_clkm, CLK_SOURCE_MSELECT, 99, &periph_v_regs, 0, mselect), 1410 TEGRA_INIT_DATA_MUX("mselect", NULL, "mselect", mux_pllp_clkm, CLK_SOURCE_MSELECT, 99, 0, mselect),
1487 TEGRA_INIT_DATA_MUX("nor", NULL, "tegra-nor", mux_pllpcm_clkm, CLK_SOURCE_NOR, 42, &periph_h_regs, 0, nor), 1411 TEGRA_INIT_DATA_MUX("nor", NULL, "tegra-nor", mux_pllpcm_clkm, CLK_SOURCE_NOR, 42, 0, nor),
1488 TEGRA_INIT_DATA_MUX("sdmmc1", NULL, "sdhci-tegra.0", mux_pllpcm_clkm, CLK_SOURCE_SDMMC1, 14, &periph_l_regs, 0, sdmmc1), 1412 TEGRA_INIT_DATA_MUX("sdmmc1", NULL, "sdhci-tegra.0", mux_pllpcm_clkm, CLK_SOURCE_SDMMC1, 14, 0, sdmmc1),
1489 TEGRA_INIT_DATA_MUX("sdmmc2", NULL, "sdhci-tegra.1", mux_pllpcm_clkm, CLK_SOURCE_SDMMC2, 9, &periph_l_regs, 0, sdmmc2), 1413 TEGRA_INIT_DATA_MUX("sdmmc2", NULL, "sdhci-tegra.1", mux_pllpcm_clkm, CLK_SOURCE_SDMMC2, 9, 0, sdmmc2),
1490 TEGRA_INIT_DATA_MUX("sdmmc3", NULL, "sdhci-tegra.2", mux_pllpcm_clkm, CLK_SOURCE_SDMMC3, 69, &periph_u_regs, 0, sdmmc3), 1414 TEGRA_INIT_DATA_MUX("sdmmc3", NULL, "sdhci-tegra.2", mux_pllpcm_clkm, CLK_SOURCE_SDMMC3, 69, 0, sdmmc3),
1491 TEGRA_INIT_DATA_MUX("sdmmc4", NULL, "sdhci-tegra.3", mux_pllpcm_clkm, CLK_SOURCE_SDMMC4, 15, &periph_l_regs, 0, sdmmc4), 1415 TEGRA_INIT_DATA_MUX("sdmmc4", NULL, "sdhci-tegra.3", mux_pllpcm_clkm, CLK_SOURCE_SDMMC4, 15, 0, sdmmc4),
1492 TEGRA_INIT_DATA_MUX("cve", NULL, "cve", mux_pllpdc_clkm, CLK_SOURCE_CVE, 49, &periph_h_regs, 0, cve), 1416 TEGRA_INIT_DATA_MUX("cve", NULL, "cve", mux_pllpdc_clkm, CLK_SOURCE_CVE, 49, 0, cve),
1493 TEGRA_INIT_DATA_MUX("tvo", NULL, "tvo", mux_pllpdc_clkm, CLK_SOURCE_TVO, 49, &periph_h_regs, 0, tvo), 1417 TEGRA_INIT_DATA_MUX("tvo", NULL, "tvo", mux_pllpdc_clkm, CLK_SOURCE_TVO, 49, 0, tvo),
1494 TEGRA_INIT_DATA_MUX("tvdac", NULL, "tvdac", mux_pllpdc_clkm, CLK_SOURCE_TVDAC, 53, &periph_h_regs, 0, tvdac), 1418 TEGRA_INIT_DATA_MUX("tvdac", NULL, "tvdac", mux_pllpdc_clkm, CLK_SOURCE_TVDAC, 53, 0, tvdac),
1495 TEGRA_INIT_DATA_MUX("actmon", NULL, "actmon", mux_pllpc_clk32k_clkm, CLK_SOURCE_ACTMON, 119, &periph_v_regs, 0, actmon), 1419 TEGRA_INIT_DATA_MUX("actmon", NULL, "actmon", mux_pllpc_clk32k_clkm, CLK_SOURCE_ACTMON, 119, 0, actmon),
1496 TEGRA_INIT_DATA_MUX("vi_sensor", "vi_sensor", "tegra_camera", mux_pllmcpa, CLK_SOURCE_VI_SENSOR, 20, &periph_l_regs, TEGRA_PERIPH_NO_RESET, vi_sensor), 1420 TEGRA_INIT_DATA_MUX("vi_sensor", "vi_sensor", "tegra_camera", mux_pllmcpa, CLK_SOURCE_VI_SENSOR, 20, TEGRA_PERIPH_NO_RESET, vi_sensor),
1497 TEGRA_INIT_DATA_DIV16("i2c1", "div-clk", "tegra-i2c.0", mux_pllp_clkm, CLK_SOURCE_I2C1, 12, &periph_l_regs, TEGRA_PERIPH_ON_APB, i2c1), 1421 TEGRA_INIT_DATA_DIV16("i2c1", "div-clk", "tegra-i2c.0", mux_pllp_clkm, CLK_SOURCE_I2C1, 12, TEGRA_PERIPH_ON_APB, i2c1),
1498 TEGRA_INIT_DATA_DIV16("i2c2", "div-clk", "tegra-i2c.1", mux_pllp_clkm, CLK_SOURCE_I2C2, 54, &periph_h_regs, TEGRA_PERIPH_ON_APB, i2c2), 1422 TEGRA_INIT_DATA_DIV16("i2c2", "div-clk", "tegra-i2c.1", mux_pllp_clkm, CLK_SOURCE_I2C2, 54, TEGRA_PERIPH_ON_APB, i2c2),
1499 TEGRA_INIT_DATA_DIV16("i2c3", "div-clk", "tegra-i2c.2", mux_pllp_clkm, CLK_SOURCE_I2C3, 67, &periph_u_regs, TEGRA_PERIPH_ON_APB, i2c3), 1423 TEGRA_INIT_DATA_DIV16("i2c3", "div-clk", "tegra-i2c.2", mux_pllp_clkm, CLK_SOURCE_I2C3, 67, TEGRA_PERIPH_ON_APB, i2c3),
1500 TEGRA_INIT_DATA_DIV16("i2c4", "div-clk", "tegra-i2c.3", mux_pllp_clkm, CLK_SOURCE_I2C4, 103, &periph_v_regs, TEGRA_PERIPH_ON_APB, i2c4), 1424 TEGRA_INIT_DATA_DIV16("i2c4", "div-clk", "tegra-i2c.3", mux_pllp_clkm, CLK_SOURCE_I2C4, 103, TEGRA_PERIPH_ON_APB, i2c4),
1501 TEGRA_INIT_DATA_DIV16("i2c5", "div-clk", "tegra-i2c.4", mux_pllp_clkm, CLK_SOURCE_I2C5, 47, &periph_h_regs, TEGRA_PERIPH_ON_APB, i2c5), 1425 TEGRA_INIT_DATA_DIV16("i2c5", "div-clk", "tegra-i2c.4", mux_pllp_clkm, CLK_SOURCE_I2C5, 47, TEGRA_PERIPH_ON_APB, i2c5),
1502 TEGRA_INIT_DATA_UART("uarta", NULL, "tegra_uart.0", mux_pllpcm_clkm, CLK_SOURCE_UARTA, 6, &periph_l_regs, uarta), 1426 TEGRA_INIT_DATA_UART("uarta", NULL, "tegra_uart.0", mux_pllpcm_clkm, CLK_SOURCE_UARTA, 6, uarta),
1503 TEGRA_INIT_DATA_UART("uartb", NULL, "tegra_uart.1", mux_pllpcm_clkm, CLK_SOURCE_UARTB, 7, &periph_l_regs, uartb), 1427 TEGRA_INIT_DATA_UART("uartb", NULL, "tegra_uart.1", mux_pllpcm_clkm, CLK_SOURCE_UARTB, 7, uartb),
1504 TEGRA_INIT_DATA_UART("uartc", NULL, "tegra_uart.2", mux_pllpcm_clkm, CLK_SOURCE_UARTC, 55, &periph_h_regs, uartc), 1428 TEGRA_INIT_DATA_UART("uartc", NULL, "tegra_uart.2", mux_pllpcm_clkm, CLK_SOURCE_UARTC, 55, uartc),
1505 TEGRA_INIT_DATA_UART("uartd", NULL, "tegra_uart.3", mux_pllpcm_clkm, CLK_SOURCE_UARTD, 65, &periph_u_regs, uartd), 1429 TEGRA_INIT_DATA_UART("uartd", NULL, "tegra_uart.3", mux_pllpcm_clkm, CLK_SOURCE_UARTD, 65, uartd),
1506 TEGRA_INIT_DATA_UART("uarte", NULL, "tegra_uart.4", mux_pllpcm_clkm, CLK_SOURCE_UARTE, 66, &periph_u_regs, uarte), 1430 TEGRA_INIT_DATA_UART("uarte", NULL, "tegra_uart.4", mux_pllpcm_clkm, CLK_SOURCE_UARTE, 66, uarte),
1507 TEGRA_INIT_DATA_MUX8("hdmi", NULL, "hdmi", mux_pllpmdacd2_clkm, CLK_SOURCE_HDMI, 51, &periph_h_regs, 0, hdmi), 1431 TEGRA_INIT_DATA_MUX8("hdmi", NULL, "hdmi", mux_pllpmdacd2_clkm, CLK_SOURCE_HDMI, 51, 0, hdmi),
1508 TEGRA_INIT_DATA_MUX8("extern1", NULL, "extern1", mux_plla_clk32k_pllp_clkm_plle, CLK_SOURCE_EXTERN1, 120, &periph_v_regs, 0, extern1), 1432 TEGRA_INIT_DATA_MUX8("extern1", NULL, "extern1", mux_plla_clk32k_pllp_clkm_plle, CLK_SOURCE_EXTERN1, 120, 0, extern1),
1509 TEGRA_INIT_DATA_MUX8("extern2", NULL, "extern2", mux_plla_clk32k_pllp_clkm_plle, CLK_SOURCE_EXTERN2, 121, &periph_v_regs, 0, extern2), 1433 TEGRA_INIT_DATA_MUX8("extern2", NULL, "extern2", mux_plla_clk32k_pllp_clkm_plle, CLK_SOURCE_EXTERN2, 121, 0, extern2),
1510 TEGRA_INIT_DATA_MUX8("extern3", NULL, "extern3", mux_plla_clk32k_pllp_clkm_plle, CLK_SOURCE_EXTERN3, 122, &periph_v_regs, 0, extern3), 1434 TEGRA_INIT_DATA_MUX8("extern3", NULL, "extern3", mux_plla_clk32k_pllp_clkm_plle, CLK_SOURCE_EXTERN3, 122, 0, extern3),
1511 TEGRA_INIT_DATA("pwm", NULL, "pwm", mux_pllpc_clk32k_clkm, CLK_SOURCE_PWM, 28, 2, 0, 0, 8, 1, 0, &periph_l_regs, 17, periph_clk_enb_refcnt, 0, pwm), 1435 TEGRA_INIT_DATA("pwm", NULL, "pwm", mux_pllpc_clk32k_clkm, CLK_SOURCE_PWM, 28, 2, 0, 0, 8, 1, 0, 17, periph_clk_enb_refcnt, 0, pwm),
1512}; 1436};
1513 1437
1514static struct tegra_periph_init_data tegra_periph_nodiv_clk_list[] = { 1438static struct tegra_periph_init_data tegra_periph_nodiv_clk_list[] = {
1515 TEGRA_INIT_DATA_NODIV("disp1", NULL, "tegradc.0", mux_pllpmdacd2_clkm, CLK_SOURCE_DISP1, 29, 3, 27, &periph_l_regs, 0, disp1), 1439 TEGRA_INIT_DATA_NODIV("disp1", NULL, "tegradc.0", mux_pllpmdacd2_clkm, CLK_SOURCE_DISP1, 29, 3, 27, 0, disp1),
1516 TEGRA_INIT_DATA_NODIV("disp2", NULL, "tegradc.1", mux_pllpmdacd2_clkm, CLK_SOURCE_DISP2, 29, 3, 26, &periph_l_regs, 0, disp2), 1440 TEGRA_INIT_DATA_NODIV("disp2", NULL, "tegradc.1", mux_pllpmdacd2_clkm, CLK_SOURCE_DISP2, 29, 3, 26, 0, disp2),
1517 TEGRA_INIT_DATA_NODIV("dsib", NULL, "tegradc.1", mux_plld_out0_plld2_out0, CLK_SOURCE_DSIB, 25, 1, 82, &periph_u_regs, 0, dsib), 1441 TEGRA_INIT_DATA_NODIV("dsib", NULL, "tegradc.1", mux_plld_out0_plld2_out0, CLK_SOURCE_DSIB, 25, 1, 82, 0, dsib),
1518}; 1442};
1519 1443
1520static void __init tegra30_periph_clk_init(void) 1444static void __init tegra30_periph_clk_init(void)
@@ -1525,166 +1449,154 @@ static void __init tegra30_periph_clk_init(void)
1525 1449
1526 /* apbdma */ 1450 /* apbdma */
1527 clk = tegra_clk_register_periph_gate("apbdma", "clk_m", 0, clk_base, 0, 34, 1451 clk = tegra_clk_register_periph_gate("apbdma", "clk_m", 0, clk_base, 0, 34,
1528 &periph_h_regs, periph_clk_enb_refcnt); 1452 periph_clk_enb_refcnt);
1529 clk_register_clkdev(clk, NULL, "tegra-apbdma"); 1453 clk_register_clkdev(clk, NULL, "tegra-apbdma");
1530 clks[apbdma] = clk; 1454 clks[apbdma] = clk;
1531 1455
1532 /* rtc */ 1456 /* rtc */
1533 clk = tegra_clk_register_periph_gate("rtc", "clk_32k", 1457 clk = tegra_clk_register_periph_gate("rtc", "clk_32k",
1534 TEGRA_PERIPH_NO_RESET | TEGRA_PERIPH_ON_APB, 1458 TEGRA_PERIPH_NO_RESET | TEGRA_PERIPH_ON_APB,
1535 clk_base, 0, 4, &periph_l_regs, 1459 clk_base, 0, 4, periph_clk_enb_refcnt);
1536 periph_clk_enb_refcnt);
1537 clk_register_clkdev(clk, NULL, "rtc-tegra"); 1460 clk_register_clkdev(clk, NULL, "rtc-tegra");
1538 clks[rtc] = clk; 1461 clks[rtc] = clk;
1539 1462
1540 /* timer */ 1463 /* timer */
1541 clk = tegra_clk_register_periph_gate("timer", "clk_m", 0, clk_base, 0, 1464 clk = tegra_clk_register_periph_gate("timer", "clk_m", 0, clk_base, 0,
1542 5, &periph_l_regs, periph_clk_enb_refcnt); 1465 5, periph_clk_enb_refcnt);
1543 clk_register_clkdev(clk, NULL, "timer"); 1466 clk_register_clkdev(clk, NULL, "timer");
1544 clks[timer] = clk; 1467 clks[timer] = clk;
1545 1468
1546 /* kbc */ 1469 /* kbc */
1547 clk = tegra_clk_register_periph_gate("kbc", "clk_32k", 1470 clk = tegra_clk_register_periph_gate("kbc", "clk_32k",
1548 TEGRA_PERIPH_NO_RESET | TEGRA_PERIPH_ON_APB, 1471 TEGRA_PERIPH_NO_RESET | TEGRA_PERIPH_ON_APB,
1549 clk_base, 0, 36, &periph_h_regs, 1472 clk_base, 0, 36, periph_clk_enb_refcnt);
1550 periph_clk_enb_refcnt);
1551 clk_register_clkdev(clk, NULL, "tegra-kbc"); 1473 clk_register_clkdev(clk, NULL, "tegra-kbc");
1552 clks[kbc] = clk; 1474 clks[kbc] = clk;
1553 1475
1554 /* csus */ 1476 /* csus */
1555 clk = tegra_clk_register_periph_gate("csus", "clk_m", 1477 clk = tegra_clk_register_periph_gate("csus", "clk_m",
1556 TEGRA_PERIPH_NO_RESET | TEGRA_PERIPH_ON_APB, 1478 TEGRA_PERIPH_NO_RESET | TEGRA_PERIPH_ON_APB,
1557 clk_base, 0, 92, &periph_u_regs, 1479 clk_base, 0, 92, periph_clk_enb_refcnt);
1558 periph_clk_enb_refcnt);
1559 clk_register_clkdev(clk, "csus", "tengra_camera"); 1480 clk_register_clkdev(clk, "csus", "tengra_camera");
1560 clks[csus] = clk; 1481 clks[csus] = clk;
1561 1482
1562 /* vcp */ 1483 /* vcp */
1563 clk = tegra_clk_register_periph_gate("vcp", "clk_m", 0, clk_base, 0, 29, 1484 clk = tegra_clk_register_periph_gate("vcp", "clk_m", 0, clk_base, 0, 29,
1564 &periph_l_regs, periph_clk_enb_refcnt); 1485 periph_clk_enb_refcnt);
1565 clk_register_clkdev(clk, "vcp", "tegra-avp"); 1486 clk_register_clkdev(clk, "vcp", "tegra-avp");
1566 clks[vcp] = clk; 1487 clks[vcp] = clk;
1567 1488
1568 /* bsea */ 1489 /* bsea */
1569 clk = tegra_clk_register_periph_gate("bsea", "clk_m", 0, clk_base, 0, 1490 clk = tegra_clk_register_periph_gate("bsea", "clk_m", 0, clk_base, 0,
1570 62, &periph_h_regs, periph_clk_enb_refcnt); 1491 62, periph_clk_enb_refcnt);
1571 clk_register_clkdev(clk, "bsea", "tegra-avp"); 1492 clk_register_clkdev(clk, "bsea", "tegra-avp");
1572 clks[bsea] = clk; 1493 clks[bsea] = clk;
1573 1494
1574 /* bsev */ 1495 /* bsev */
1575 clk = tegra_clk_register_periph_gate("bsev", "clk_m", 0, clk_base, 0, 1496 clk = tegra_clk_register_periph_gate("bsev", "clk_m", 0, clk_base, 0,
1576 63, &periph_h_regs, periph_clk_enb_refcnt); 1497 63, periph_clk_enb_refcnt);
1577 clk_register_clkdev(clk, "bsev", "tegra-aes"); 1498 clk_register_clkdev(clk, "bsev", "tegra-aes");
1578 clks[bsev] = clk; 1499 clks[bsev] = clk;
1579 1500
1580 /* usbd */ 1501 /* usbd */
1581 clk = tegra_clk_register_periph_gate("usbd", "clk_m", 0, clk_base, 0, 1502 clk = tegra_clk_register_periph_gate("usbd", "clk_m", 0, clk_base, 0,
1582 22, &periph_l_regs, periph_clk_enb_refcnt); 1503 22, periph_clk_enb_refcnt);
1583 clk_register_clkdev(clk, NULL, "fsl-tegra-udc"); 1504 clk_register_clkdev(clk, NULL, "fsl-tegra-udc");
1584 clks[usbd] = clk; 1505 clks[usbd] = clk;
1585 1506
1586 /* usb2 */ 1507 /* usb2 */
1587 clk = tegra_clk_register_periph_gate("usb2", "clk_m", 0, clk_base, 0, 1508 clk = tegra_clk_register_periph_gate("usb2", "clk_m", 0, clk_base, 0,
1588 58, &periph_h_regs, periph_clk_enb_refcnt); 1509 58, periph_clk_enb_refcnt);
1589 clk_register_clkdev(clk, NULL, "tegra-ehci.1"); 1510 clk_register_clkdev(clk, NULL, "tegra-ehci.1");
1590 clks[usb2] = clk; 1511 clks[usb2] = clk;
1591 1512
1592 /* usb3 */ 1513 /* usb3 */
1593 clk = tegra_clk_register_periph_gate("usb3", "clk_m", 0, clk_base, 0, 1514 clk = tegra_clk_register_periph_gate("usb3", "clk_m", 0, clk_base, 0,
1594 59, &periph_h_regs, periph_clk_enb_refcnt); 1515 59, periph_clk_enb_refcnt);
1595 clk_register_clkdev(clk, NULL, "tegra-ehci.2"); 1516 clk_register_clkdev(clk, NULL, "tegra-ehci.2");
1596 clks[usb3] = clk; 1517 clks[usb3] = clk;
1597 1518
1598 /* dsia */ 1519 /* dsia */
1599 clk = tegra_clk_register_periph_gate("dsia", "pll_d_out0", 0, clk_base, 1520 clk = tegra_clk_register_periph_gate("dsia", "pll_d_out0", 0, clk_base,
1600 0, 48, &periph_h_regs, 1521 0, 48, periph_clk_enb_refcnt);
1601 periph_clk_enb_refcnt);
1602 clk_register_clkdev(clk, "dsia", "tegradc.0"); 1522 clk_register_clkdev(clk, "dsia", "tegradc.0");
1603 clks[dsia] = clk; 1523 clks[dsia] = clk;
1604 1524
1605 /* csi */ 1525 /* csi */
1606 clk = tegra_clk_register_periph_gate("csi", "pll_p_out3", 0, clk_base, 1526 clk = tegra_clk_register_periph_gate("csi", "pll_p_out3", 0, clk_base,
1607 0, 52, &periph_h_regs, 1527 0, 52, periph_clk_enb_refcnt);
1608 periph_clk_enb_refcnt);
1609 clk_register_clkdev(clk, "csi", "tegra_camera"); 1528 clk_register_clkdev(clk, "csi", "tegra_camera");
1610 clks[csi] = clk; 1529 clks[csi] = clk;
1611 1530
1612 /* isp */ 1531 /* isp */
1613 clk = tegra_clk_register_periph_gate("isp", "clk_m", 0, clk_base, 0, 23, 1532 clk = tegra_clk_register_periph_gate("isp", "clk_m", 0, clk_base, 0, 23,
1614 &periph_l_regs, periph_clk_enb_refcnt); 1533 periph_clk_enb_refcnt);
1615 clk_register_clkdev(clk, "isp", "tegra_camera"); 1534 clk_register_clkdev(clk, "isp", "tegra_camera");
1616 clks[isp] = clk; 1535 clks[isp] = clk;
1617 1536
1618 /* pcie */ 1537 /* pcie */
1619 clk = tegra_clk_register_periph_gate("pcie", "clk_m", 0, clk_base, 0, 1538 clk = tegra_clk_register_periph_gate("pcie", "clk_m", 0, clk_base, 0,
1620 70, &periph_u_regs, periph_clk_enb_refcnt); 1539 70, periph_clk_enb_refcnt);
1621 clk_register_clkdev(clk, "pcie", "tegra-pcie"); 1540 clk_register_clkdev(clk, "pcie", "tegra-pcie");
1622 clks[pcie] = clk; 1541 clks[pcie] = clk;
1623 1542
1624 /* afi */ 1543 /* afi */
1625 clk = tegra_clk_register_periph_gate("afi", "clk_m", 0, clk_base, 0, 72, 1544 clk = tegra_clk_register_periph_gate("afi", "clk_m", 0, clk_base, 0, 72,
1626 &periph_u_regs, periph_clk_enb_refcnt); 1545 periph_clk_enb_refcnt);
1627 clk_register_clkdev(clk, "afi", "tegra-pcie"); 1546 clk_register_clkdev(clk, "afi", "tegra-pcie");
1628 clks[afi] = clk; 1547 clks[afi] = clk;
1629 1548
1630 /* pciex */ 1549 /* pciex */
1631 clk = tegra_clk_register_periph_gate("pciex", "pll_e", 0, clk_base, 0, 1550 clk = tegra_clk_register_periph_gate("pciex", "pll_e", 0, clk_base, 0,
1632 74, &periph_u_regs, periph_clk_enb_refcnt); 1551 74, periph_clk_enb_refcnt);
1633 clk_register_clkdev(clk, "pciex", "tegra-pcie"); 1552 clk_register_clkdev(clk, "pciex", "tegra-pcie");
1634 clks[pciex] = clk; 1553 clks[pciex] = clk;
1635 1554
1636 /* kfuse */ 1555 /* kfuse */
1637 clk = tegra_clk_register_periph_gate("kfuse", "clk_m", 1556 clk = tegra_clk_register_periph_gate("kfuse", "clk_m",
1638 TEGRA_PERIPH_ON_APB, 1557 TEGRA_PERIPH_ON_APB,
1639 clk_base, 0, 40, &periph_h_regs, 1558 clk_base, 0, 40, periph_clk_enb_refcnt);
1640 periph_clk_enb_refcnt);
1641 clk_register_clkdev(clk, NULL, "kfuse-tegra"); 1559 clk_register_clkdev(clk, NULL, "kfuse-tegra");
1642 clks[kfuse] = clk; 1560 clks[kfuse] = clk;
1643 1561
1644 /* fuse */ 1562 /* fuse */
1645 clk = tegra_clk_register_periph_gate("fuse", "clk_m", 1563 clk = tegra_clk_register_periph_gate("fuse", "clk_m",
1646 TEGRA_PERIPH_ON_APB, 1564 TEGRA_PERIPH_ON_APB,
1647 clk_base, 0, 39, &periph_h_regs, 1565 clk_base, 0, 39, periph_clk_enb_refcnt);
1648 periph_clk_enb_refcnt);
1649 clk_register_clkdev(clk, "fuse", "fuse-tegra"); 1566 clk_register_clkdev(clk, "fuse", "fuse-tegra");
1650 clks[fuse] = clk; 1567 clks[fuse] = clk;
1651 1568
1652 /* fuse_burn */ 1569 /* fuse_burn */
1653 clk = tegra_clk_register_periph_gate("fuse_burn", "clk_m", 1570 clk = tegra_clk_register_periph_gate("fuse_burn", "clk_m",
1654 TEGRA_PERIPH_ON_APB, 1571 TEGRA_PERIPH_ON_APB,
1655 clk_base, 0, 39, &periph_h_regs, 1572 clk_base, 0, 39, periph_clk_enb_refcnt);
1656 periph_clk_enb_refcnt);
1657 clk_register_clkdev(clk, "fuse_burn", "fuse-tegra"); 1573 clk_register_clkdev(clk, "fuse_burn", "fuse-tegra");
1658 clks[fuse_burn] = clk; 1574 clks[fuse_burn] = clk;
1659 1575
1660 /* apbif */ 1576 /* apbif */
1661 clk = tegra_clk_register_periph_gate("apbif", "clk_m", 0, 1577 clk = tegra_clk_register_periph_gate("apbif", "clk_m", 0,
1662 clk_base, 0, 107, &periph_v_regs, 1578 clk_base, 0, 107, periph_clk_enb_refcnt);
1663 periph_clk_enb_refcnt);
1664 clk_register_clkdev(clk, "apbif", "tegra30-ahub"); 1579 clk_register_clkdev(clk, "apbif", "tegra30-ahub");
1665 clks[apbif] = clk; 1580 clks[apbif] = clk;
1666 1581
1667 /* hda2hdmi */ 1582 /* hda2hdmi */
1668 clk = tegra_clk_register_periph_gate("hda2hdmi", "clk_m", 1583 clk = tegra_clk_register_periph_gate("hda2hdmi", "clk_m",
1669 TEGRA_PERIPH_ON_APB, 1584 TEGRA_PERIPH_ON_APB,
1670 clk_base, 0, 128, &periph_w_regs, 1585 clk_base, 0, 128, periph_clk_enb_refcnt);
1671 periph_clk_enb_refcnt);
1672 clk_register_clkdev(clk, "hda2hdmi", "tegra30-hda"); 1586 clk_register_clkdev(clk, "hda2hdmi", "tegra30-hda");
1673 clks[hda2hdmi] = clk; 1587 clks[hda2hdmi] = clk;
1674 1588
1675 /* sata_cold */ 1589 /* sata_cold */
1676 clk = tegra_clk_register_periph_gate("sata_cold", "clk_m", 1590 clk = tegra_clk_register_periph_gate("sata_cold", "clk_m",
1677 TEGRA_PERIPH_ON_APB, 1591 TEGRA_PERIPH_ON_APB,
1678 clk_base, 0, 129, &periph_w_regs, 1592 clk_base, 0, 129, periph_clk_enb_refcnt);
1679 periph_clk_enb_refcnt);
1680 clk_register_clkdev(clk, NULL, "tegra_sata_cold"); 1593 clk_register_clkdev(clk, NULL, "tegra_sata_cold");
1681 clks[sata_cold] = clk; 1594 clks[sata_cold] = clk;
1682 1595
1683 /* dtv */ 1596 /* dtv */
1684 clk = tegra_clk_register_periph_gate("dtv", "clk_m", 1597 clk = tegra_clk_register_periph_gate("dtv", "clk_m",
1685 TEGRA_PERIPH_ON_APB, 1598 TEGRA_PERIPH_ON_APB,
1686 clk_base, 0, 79, &periph_u_regs, 1599 clk_base, 0, 79, periph_clk_enb_refcnt);
1687 periph_clk_enb_refcnt);
1688 clk_register_clkdev(clk, NULL, "dtv"); 1600 clk_register_clkdev(clk, NULL, "dtv");
1689 clks[dtv] = clk; 1601 clks[dtv] = clk;
1690 1602
@@ -1695,7 +1607,7 @@ static void __init tegra30_periph_clk_init(void)
1695 clk_base + CLK_SOURCE_EMC, 1607 clk_base + CLK_SOURCE_EMC,
1696 30, 2, 0, NULL); 1608 30, 2, 0, NULL);
1697 clk = tegra_clk_register_periph_gate("emc", "emc_mux", 0, clk_base, 0, 1609 clk = tegra_clk_register_periph_gate("emc", "emc_mux", 0, clk_base, 0,
1698 57, &periph_h_regs, periph_clk_enb_refcnt); 1610 57, periph_clk_enb_refcnt);
1699 clk_register_clkdev(clk, "emc", NULL); 1611 clk_register_clkdev(clk, "emc", NULL);
1700 clks[emc] = clk; 1612 clks[emc] = clk;
1701 1613
@@ -2007,6 +1919,9 @@ static void __init tegra30_clock_init(struct device_node *np)
2007 BUG(); 1919 BUG();
2008 } 1920 }
2009 1921
1922 if (tegra_clk_set_periph_banks(TEGRA30_CLK_PERIPH_BANKS) < 0)
1923 return;
1924
2010 tegra30_osc_clk_init(); 1925 tegra30_osc_clk_init();
2011 tegra30_fixed_clk_init(); 1926 tegra30_fixed_clk_init();
2012 tegra30_pll_init(); 1927 tegra30_pll_init();
diff --git a/drivers/clk/tegra/clk.c b/drivers/clk/tegra/clk.c
index 86581ac1fd69..07f76df2583b 100644
--- a/drivers/clk/tegra/clk.c
+++ b/drivers/clk/tegra/clk.c
@@ -21,10 +21,114 @@
21 21
22#include "clk.h" 22#include "clk.h"
23 23
24#define CLK_OUT_ENB_L 0x010
25#define CLK_OUT_ENB_H 0x014
26#define CLK_OUT_ENB_U 0x018
27#define CLK_OUT_ENB_V 0x360
28#define CLK_OUT_ENB_W 0x364
29#define CLK_OUT_ENB_X 0x280
30#define CLK_OUT_ENB_SET_L 0x320
31#define CLK_OUT_ENB_CLR_L 0x324
32#define CLK_OUT_ENB_SET_H 0x328
33#define CLK_OUT_ENB_CLR_H 0x32c
34#define CLK_OUT_ENB_SET_U 0x330
35#define CLK_OUT_ENB_CLR_U 0x334
36#define CLK_OUT_ENB_SET_V 0x440
37#define CLK_OUT_ENB_CLR_V 0x444
38#define CLK_OUT_ENB_SET_W 0x448
39#define CLK_OUT_ENB_CLR_W 0x44c
40#define CLK_OUT_ENB_SET_X 0x284
41#define CLK_OUT_ENB_CLR_X 0x288
42
43#define RST_DEVICES_L 0x004
44#define RST_DEVICES_H 0x008
45#define RST_DEVICES_U 0x00C
46#define RST_DFLL_DVCO 0x2F4
47#define RST_DEVICES_V 0x358
48#define RST_DEVICES_W 0x35C
49#define RST_DEVICES_X 0x28C
50#define RST_DEVICES_SET_L 0x300
51#define RST_DEVICES_CLR_L 0x304
52#define RST_DEVICES_SET_H 0x308
53#define RST_DEVICES_CLR_H 0x30c
54#define RST_DEVICES_SET_U 0x310
55#define RST_DEVICES_CLR_U 0x314
56#define RST_DEVICES_SET_V 0x430
57#define RST_DEVICES_CLR_V 0x434
58#define RST_DEVICES_SET_W 0x438
59#define RST_DEVICES_CLR_W 0x43c
60
24/* Global data of Tegra CPU CAR ops */ 61/* Global data of Tegra CPU CAR ops */
25static struct tegra_cpu_car_ops dummy_car_ops; 62static struct tegra_cpu_car_ops dummy_car_ops;
26struct tegra_cpu_car_ops *tegra_cpu_car_ops = &dummy_car_ops; 63struct tegra_cpu_car_ops *tegra_cpu_car_ops = &dummy_car_ops;
27 64
65static int periph_banks;
66
67static struct tegra_clk_periph_regs periph_regs[] = {
68 [0] = {
69 .enb_reg = CLK_OUT_ENB_L,
70 .enb_set_reg = CLK_OUT_ENB_SET_L,
71 .enb_clr_reg = CLK_OUT_ENB_CLR_L,
72 .rst_reg = RST_DEVICES_L,
73 .rst_set_reg = RST_DEVICES_SET_L,
74 .rst_clr_reg = RST_DEVICES_CLR_L,
75 },
76 [1] = {
77 .enb_reg = CLK_OUT_ENB_H,
78 .enb_set_reg = CLK_OUT_ENB_SET_H,
79 .enb_clr_reg = CLK_OUT_ENB_CLR_H,
80 .rst_reg = RST_DEVICES_H,
81 .rst_set_reg = RST_DEVICES_SET_H,
82 .rst_clr_reg = RST_DEVICES_CLR_H,
83 },
84 [2] = {
85 .enb_reg = CLK_OUT_ENB_U,
86 .enb_set_reg = CLK_OUT_ENB_SET_U,
87 .enb_clr_reg = CLK_OUT_ENB_CLR_U,
88 .rst_reg = RST_DEVICES_U,
89 .rst_set_reg = RST_DEVICES_SET_U,
90 .rst_clr_reg = RST_DEVICES_CLR_U,
91 },
92 [3] = {
93 .enb_reg = CLK_OUT_ENB_V,
94 .enb_set_reg = CLK_OUT_ENB_SET_V,
95 .enb_clr_reg = CLK_OUT_ENB_CLR_V,
96 .rst_reg = RST_DEVICES_V,
97 .rst_set_reg = RST_DEVICES_SET_V,
98 .rst_clr_reg = RST_DEVICES_CLR_V,
99 },
100 [4] = {
101 .enb_reg = CLK_OUT_ENB_W,
102 .enb_set_reg = CLK_OUT_ENB_SET_W,
103 .enb_clr_reg = CLK_OUT_ENB_CLR_W,
104 .rst_reg = RST_DEVICES_W,
105 .rst_set_reg = RST_DEVICES_SET_W,
106 .rst_clr_reg = RST_DEVICES_CLR_W,
107 },
108};
109
110struct tegra_clk_periph_regs *get_reg_bank(int clkid)
111{
112 int reg_bank = clkid / 32;
113
114 if (reg_bank < periph_banks)
115 return &periph_regs[reg_bank];
116 else {
117 WARN_ON(1);
118 return NULL;
119 }
120}
121
122int __init tegra_clk_set_periph_banks(int num)
123{
124 if (num > ARRAY_SIZE(periph_regs))
125 return -EINVAL;
126
127 periph_banks = num;
128
129 return 0;
130}
131
28void __init tegra_init_dup_clks(struct tegra_clk_duplicate *dup_list, 132void __init tegra_init_dup_clks(struct tegra_clk_duplicate *dup_list,
29 struct clk *clks[], int clk_max) 133 struct clk *clks[], int clk_max)
30{ 134{
diff --git a/drivers/clk/tegra/clk.h b/drivers/clk/tegra/clk.h
index 07cfacd91686..730d37b39488 100644
--- a/drivers/clk/tegra/clk.h
+++ b/drivers/clk/tegra/clk.h
@@ -400,8 +400,7 @@ void tegra_periph_reset(struct tegra_clk_periph_gate *gate, bool assert);
400extern const struct clk_ops tegra_clk_periph_gate_ops; 400extern const struct clk_ops tegra_clk_periph_gate_ops;
401struct clk *tegra_clk_register_periph_gate(const char *name, 401struct clk *tegra_clk_register_periph_gate(const char *name,
402 const char *parent_name, u8 gate_flags, void __iomem *clk_base, 402 const char *parent_name, u8 gate_flags, void __iomem *clk_base,
403 unsigned long flags, int clk_num, 403 unsigned long flags, int clk_num, int *enable_refcnt);
404 struct tegra_clk_periph_regs *pregs, int *enable_refcnt);
405 404
406/** 405/**
407 * struct clk-periph - peripheral clock 406 * struct clk-periph - peripheral clock
@@ -443,7 +442,7 @@ struct clk *tegra_clk_register_periph_nodiv(const char *name,
443 442
444#define TEGRA_CLK_PERIPH(_mux_shift, _mux_mask, _mux_flags, \ 443#define TEGRA_CLK_PERIPH(_mux_shift, _mux_mask, _mux_flags, \
445 _div_shift, _div_width, _div_frac_width, \ 444 _div_shift, _div_width, _div_frac_width, \
446 _div_flags, _clk_num, _enb_refcnt, _regs, \ 445 _div_flags, _clk_num, _enb_refcnt, \
447 _gate_flags, _table) \ 446 _gate_flags, _table) \
448 { \ 447 { \
449 .mux = { \ 448 .mux = { \
@@ -462,7 +461,6 @@ struct clk *tegra_clk_register_periph_nodiv(const char *name,
462 .flags = _gate_flags, \ 461 .flags = _gate_flags, \
463 .clk_num = _clk_num, \ 462 .clk_num = _clk_num, \
464 .enable_refcnt = _enb_refcnt, \ 463 .enable_refcnt = _enb_refcnt, \
465 .regs = _regs, \
466 }, \ 464 }, \
467 .mux_ops = &clk_mux_ops, \ 465 .mux_ops = &clk_mux_ops, \
468 .div_ops = &tegra_clk_frac_div_ops, \ 466 .div_ops = &tegra_clk_frac_div_ops, \
@@ -483,7 +481,7 @@ struct tegra_periph_init_data {
483 481
484#define TEGRA_INIT_DATA_TABLE(_name, _con_id, _dev_id, _parent_names, _offset,\ 482#define TEGRA_INIT_DATA_TABLE(_name, _con_id, _dev_id, _parent_names, _offset,\
485 _mux_shift, _mux_mask, _mux_flags, _div_shift, \ 483 _mux_shift, _mux_mask, _mux_flags, _div_shift, \
486 _div_width, _div_frac_width, _div_flags, _regs, \ 484 _div_width, _div_frac_width, _div_flags, \
487 _clk_num, _enb_refcnt, _gate_flags, _clk_id, _table,\ 485 _clk_num, _enb_refcnt, _gate_flags, _clk_id, _table,\
488 _flags) \ 486 _flags) \
489 { \ 487 { \
@@ -495,7 +493,7 @@ struct tegra_periph_init_data {
495 _mux_flags, _div_shift, \ 493 _mux_flags, _div_shift, \
496 _div_width, _div_frac_width, \ 494 _div_width, _div_frac_width, \
497 _div_flags, _clk_num, \ 495 _div_flags, _clk_num, \
498 _enb_refcnt, _regs, \ 496 _enb_refcnt, \
499 _gate_flags, _table), \ 497 _gate_flags, _table), \
500 .offset = _offset, \ 498 .offset = _offset, \
501 .con_id = _con_id, \ 499 .con_id = _con_id, \
@@ -505,12 +503,12 @@ struct tegra_periph_init_data {
505 503
506#define TEGRA_INIT_DATA(_name, _con_id, _dev_id, _parent_names, _offset,\ 504#define TEGRA_INIT_DATA(_name, _con_id, _dev_id, _parent_names, _offset,\
507 _mux_shift, _mux_width, _mux_flags, _div_shift, \ 505 _mux_shift, _mux_width, _mux_flags, _div_shift, \
508 _div_width, _div_frac_width, _div_flags, _regs, \ 506 _div_width, _div_frac_width, _div_flags, \
509 _clk_num, _enb_refcnt, _gate_flags, _clk_id) \ 507 _clk_num, _enb_refcnt, _gate_flags, _clk_id) \
510 TEGRA_INIT_DATA_TABLE(_name, _con_id, _dev_id, _parent_names, _offset,\ 508 TEGRA_INIT_DATA_TABLE(_name, _con_id, _dev_id, _parent_names, _offset,\
511 _mux_shift, BIT(_mux_width) - 1, _mux_flags, \ 509 _mux_shift, BIT(_mux_width) - 1, _mux_flags, \
512 _div_shift, _div_width, _div_frac_width, _div_flags, \ 510 _div_shift, _div_width, _div_frac_width, _div_flags, \
513 _regs, _clk_num, _enb_refcnt, _gate_flags, _clk_id,\ 511 _clk_num, _enb_refcnt, _gate_flags, _clk_id,\
514 NULL, 0) 512 NULL, 0)
515 513
516/** 514/**
@@ -587,6 +585,9 @@ void tegra_init_from_table(struct tegra_clk_init_table *tbl,
587void tegra_init_dup_clks(struct tegra_clk_duplicate *dup_list, 585void tegra_init_dup_clks(struct tegra_clk_duplicate *dup_list,
588 struct clk *clks[], int clk_max); 586 struct clk *clks[], int clk_max);
589 587
588struct tegra_clk_periph_regs *get_reg_bank(int clkid);
589int tegra_clk_set_periph_banks(int num);
590
590void tegra114_clock_tune_cpu_trimmers_high(void); 591void tegra114_clock_tune_cpu_trimmers_high(void);
591void tegra114_clock_tune_cpu_trimmers_low(void); 592void tegra114_clock_tune_cpu_trimmers_low(void);
592void tegra114_clock_tune_cpu_trimmers_init(void); 593void tegra114_clock_tune_cpu_trimmers_init(void);