diff options
author | Mike Turquette <mturquette@linaro.org> | 2014-01-08 19:38:10 -0500 |
---|---|---|
committer | Mike Turquette <mturquette@linaro.org> | 2014-01-08 19:38:10 -0500 |
commit | baa39cd20ece9705e7e42015a1c7a898a36c31c8 (patch) | |
tree | 6f5cc02889c1d4f8b29716e48b7784d326e6e54f | |
parent | ada12c4798bcd01128e8e30f45e889083bb68730 (diff) | |
parent | 59d711e9ddd2f68822a2a99fc939e11a9288b73e (diff) |
Merge tag 'for_3.14/samsung-clk' of git://git.kernel.org/pub/scm/linux/kernel/git/tfiga/samsung-clk into clk-next-samsung
(A bit late) first round of Samsung clock patches for v3.14.
-rw-r--r-- | Documentation/devicetree/bindings/clock/clk-exynos-audss.txt | 39 | ||||
-rw-r--r-- | Documentation/devicetree/bindings/clock/exynos5250-clock.txt | 3 | ||||
-rw-r--r-- | arch/arm/boot/dts/exynos5250.dtsi | 4 | ||||
-rw-r--r-- | arch/arm/boot/dts/exynos5420.dtsi | 4 | ||||
-rw-r--r-- | drivers/clk/samsung/clk-exynos-audss.c | 161 | ||||
-rw-r--r-- | drivers/clk/samsung/clk-exynos4.c | 859 | ||||
-rw-r--r-- | drivers/clk/samsung/clk-exynos5250.c | 697 | ||||
-rw-r--r-- | drivers/clk/samsung/clk-exynos5420.c | 648 | ||||
-rw-r--r-- | drivers/clk/samsung/clk-exynos5440.c | 81 | ||||
-rw-r--r-- | include/dt-bindings/clk/exynos-audss-clk.h | 3 | ||||
-rw-r--r-- | include/dt-bindings/clock/exynos4.h | 244 | ||||
-rw-r--r-- | include/dt-bindings/clock/exynos5250.h | 160 | ||||
-rw-r--r-- | include/dt-bindings/clock/exynos5420.h | 188 | ||||
-rw-r--r-- | include/dt-bindings/clock/exynos5440.h | 42 |
14 files changed, 1963 insertions, 1170 deletions
diff --git a/Documentation/devicetree/bindings/clock/clk-exynos-audss.txt b/Documentation/devicetree/bindings/clock/clk-exynos-audss.txt index 75e2e1999f87..180e8835569e 100644 --- a/Documentation/devicetree/bindings/clock/clk-exynos-audss.txt +++ b/Documentation/devicetree/bindings/clock/clk-exynos-audss.txt | |||
@@ -8,12 +8,29 @@ Required Properties: | |||
8 | 8 | ||
9 | - compatible: should be one of the following: | 9 | - compatible: should be one of the following: |
10 | - "samsung,exynos4210-audss-clock" - controller compatible with all Exynos4 SoCs. | 10 | - "samsung,exynos4210-audss-clock" - controller compatible with all Exynos4 SoCs. |
11 | - "samsung,exynos5250-audss-clock" - controller compatible with all Exynos5 SoCs. | 11 | - "samsung,exynos5250-audss-clock" - controller compatible with Exynos5250 |
12 | 12 | SoCs. | |
13 | - "samsung,exynos5420-audss-clock" - controller compatible with Exynos5420 | ||
14 | SoCs. | ||
13 | - reg: physical base address and length of the controller's register set. | 15 | - reg: physical base address and length of the controller's register set. |
14 | 16 | ||
15 | - #clock-cells: should be 1. | 17 | - #clock-cells: should be 1. |
16 | 18 | ||
19 | - clocks: | ||
20 | - pll_ref: Fixed rate PLL reference clock, parent of mout_audss. "fin_pll" | ||
21 | is used if not specified. | ||
22 | - pll_in: Input PLL to the AudioSS block, parent of mout_audss. "fout_epll" | ||
23 | is used if not specified. | ||
24 | - cdclk: External i2s clock, parent of mout_i2s. "cdclk0" is used if not | ||
25 | specified. | ||
26 | - sclk_audio: Audio bus clock, parent of mout_i2s. "sclk_audio0" is used if | ||
27 | not specified. | ||
28 | - sclk_pcm_in: PCM clock, parent of sclk_pcm. "sclk_pcm0" is used if not | ||
29 | specified. | ||
30 | |||
31 | - clock-names: Aliases for the above clocks. They should be "pll_ref", | ||
32 | "pll_in", "cdclk", "sclk_audio", and "sclk_pcm_in" respectively. | ||
33 | |||
17 | The following is the list of clocks generated by the controller. Each clock is | 34 | The following is the list of clocks generated by the controller. Each clock is |
18 | assigned an identifier and client nodes use this identifier to specify the | 35 | assigned an identifier and client nodes use this identifier to specify the |
19 | clock which they consume. Some of the clocks are available only on a particular | 36 | clock which they consume. Some of the clocks are available only on a particular |
@@ -34,16 +51,30 @@ i2s_bus 6 | |||
34 | sclk_i2s 7 | 51 | sclk_i2s 7 |
35 | pcm_bus 8 | 52 | pcm_bus 8 |
36 | sclk_pcm 9 | 53 | sclk_pcm 9 |
54 | adma 10 Exynos5420 | ||
55 | |||
56 | Example 1: An example of a clock controller node using the default input | ||
57 | clock names is listed below. | ||
58 | |||
59 | clock_audss: audss-clock-controller@3810000 { | ||
60 | compatible = "samsung,exynos5250-audss-clock"; | ||
61 | reg = <0x03810000 0x0C>; | ||
62 | #clock-cells = <1>; | ||
63 | }; | ||
37 | 64 | ||
38 | Example 1: An example of a clock controller node is listed below. | 65 | Example 2: An example of a clock controller node with the input clocks |
66 | specified. | ||
39 | 67 | ||
40 | clock_audss: audss-clock-controller@3810000 { | 68 | clock_audss: audss-clock-controller@3810000 { |
41 | compatible = "samsung,exynos5250-audss-clock"; | 69 | compatible = "samsung,exynos5250-audss-clock"; |
42 | reg = <0x03810000 0x0C>; | 70 | reg = <0x03810000 0x0C>; |
43 | #clock-cells = <1>; | 71 | #clock-cells = <1>; |
72 | clocks = <&clock 1>, <&clock 7>, <&clock 138>, <&clock 160>, | ||
73 | <&ext_i2s_clk>; | ||
74 | clock-names = "pll_ref", "pll_in", "sclk_audio", "sclk_pcm_in", "cdclk"; | ||
44 | }; | 75 | }; |
45 | 76 | ||
46 | Example 2: I2S controller node that consumes the clock generated by the clock | 77 | Example 3: I2S controller node that consumes the clock generated by the clock |
47 | controller. Refer to the standard clock bindings for information | 78 | controller. Refer to the standard clock bindings for information |
48 | about 'clocks' and 'clock-names' property. | 79 | about 'clocks' and 'clock-names' property. |
49 | 80 | ||
diff --git a/Documentation/devicetree/bindings/clock/exynos5250-clock.txt b/Documentation/devicetree/bindings/clock/exynos5250-clock.txt index 24765c146e31..492ed09ea8c8 100644 --- a/Documentation/devicetree/bindings/clock/exynos5250-clock.txt +++ b/Documentation/devicetree/bindings/clock/exynos5250-clock.txt | |||
@@ -62,6 +62,7 @@ clock which they consume. | |||
62 | div_i2s1 157 | 62 | div_i2s1 157 |
63 | div_i2s2 158 | 63 | div_i2s2 158 |
64 | sclk_hdmiphy 159 | 64 | sclk_hdmiphy 159 |
65 | div_pcm0 160 | ||
65 | 66 | ||
66 | 67 | ||
67 | [Peripheral Clock Gates] | 68 | [Peripheral Clock Gates] |
@@ -159,6 +160,8 @@ clock which they consume. | |||
159 | mixer 343 | 160 | mixer 343 |
160 | hdmi 344 | 161 | hdmi 344 |
161 | g2d 345 | 162 | g2d 345 |
163 | mdma0 346 | ||
164 | smmu_mdma0 347 | ||
162 | 165 | ||
163 | 166 | ||
164 | [Clock Muxes] | 167 | [Clock Muxes] |
diff --git a/arch/arm/boot/dts/exynos5250.dtsi b/arch/arm/boot/dts/exynos5250.dtsi index 9db5047812f3..c70843fe1e28 100644 --- a/arch/arm/boot/dts/exynos5250.dtsi +++ b/arch/arm/boot/dts/exynos5250.dtsi | |||
@@ -88,6 +88,8 @@ | |||
88 | compatible = "samsung,exynos5250-audss-clock"; | 88 | compatible = "samsung,exynos5250-audss-clock"; |
89 | reg = <0x03810000 0x0C>; | 89 | reg = <0x03810000 0x0C>; |
90 | #clock-cells = <1>; | 90 | #clock-cells = <1>; |
91 | clocks = <&clock 1>, <&clock 7>, <&clock 138>, <&clock 160>; | ||
92 | clock-names = "pll_ref", "pll_in", "sclk_audio", "sclk_pcm_in"; | ||
91 | }; | 93 | }; |
92 | 94 | ||
93 | timer { | 95 | timer { |
@@ -559,7 +561,7 @@ | |||
559 | compatible = "arm,pl330", "arm,primecell"; | 561 | compatible = "arm,pl330", "arm,primecell"; |
560 | reg = <0x10800000 0x1000>; | 562 | reg = <0x10800000 0x1000>; |
561 | interrupts = <0 33 0>; | 563 | interrupts = <0 33 0>; |
562 | clocks = <&clock 271>; | 564 | clocks = <&clock 346>; |
563 | clock-names = "apb_pclk"; | 565 | clock-names = "apb_pclk"; |
564 | #dma-cells = <1>; | 566 | #dma-cells = <1>; |
565 | #dma-channels = <8>; | 567 | #dma-channels = <8>; |
diff --git a/arch/arm/boot/dts/exynos5420.dtsi b/arch/arm/boot/dts/exynos5420.dtsi index 09aa06cb3d3a..25a1120d88a5 100644 --- a/arch/arm/boot/dts/exynos5420.dtsi +++ b/arch/arm/boot/dts/exynos5420.dtsi | |||
@@ -76,8 +76,8 @@ | |||
76 | compatible = "samsung,exynos5420-audss-clock"; | 76 | compatible = "samsung,exynos5420-audss-clock"; |
77 | reg = <0x03810000 0x0C>; | 77 | reg = <0x03810000 0x0C>; |
78 | #clock-cells = <1>; | 78 | #clock-cells = <1>; |
79 | clocks = <&clock 148>; | 79 | clocks = <&clock 1>, <&clock 5>, <&clock 148>, <&clock 149>; |
80 | clock-names = "sclk_audio"; | 80 | clock-names = "pll_ref", "pll_in", "sclk_audio", "sclk_pcm_in"; |
81 | }; | 81 | }; |
82 | 82 | ||
83 | codec@11000000 { | 83 | codec@11000000 { |
diff --git a/drivers/clk/samsung/clk-exynos-audss.c b/drivers/clk/samsung/clk-exynos-audss.c index 39b40aaede2b..884187fbfe00 100644 --- a/drivers/clk/samsung/clk-exynos-audss.c +++ b/drivers/clk/samsung/clk-exynos-audss.c | |||
@@ -14,9 +14,17 @@ | |||
14 | #include <linux/clk-provider.h> | 14 | #include <linux/clk-provider.h> |
15 | #include <linux/of_address.h> | 15 | #include <linux/of_address.h> |
16 | #include <linux/syscore_ops.h> | 16 | #include <linux/syscore_ops.h> |
17 | #include <linux/module.h> | ||
18 | #include <linux/platform_device.h> | ||
17 | 19 | ||
18 | #include <dt-bindings/clk/exynos-audss-clk.h> | 20 | #include <dt-bindings/clk/exynos-audss-clk.h> |
19 | 21 | ||
22 | enum exynos_audss_clk_type { | ||
23 | TYPE_EXYNOS4210, | ||
24 | TYPE_EXYNOS5250, | ||
25 | TYPE_EXYNOS5420, | ||
26 | }; | ||
27 | |||
20 | static DEFINE_SPINLOCK(lock); | 28 | static DEFINE_SPINLOCK(lock); |
21 | static struct clk **clk_table; | 29 | static struct clk **clk_table; |
22 | static void __iomem *reg_base; | 30 | static void __iomem *reg_base; |
@@ -26,17 +34,13 @@ static struct clk_onecell_data clk_data; | |||
26 | #define ASS_CLK_DIV 0x4 | 34 | #define ASS_CLK_DIV 0x4 |
27 | #define ASS_CLK_GATE 0x8 | 35 | #define ASS_CLK_GATE 0x8 |
28 | 36 | ||
37 | #ifdef CONFIG_PM_SLEEP | ||
29 | static unsigned long reg_save[][2] = { | 38 | static unsigned long reg_save[][2] = { |
30 | {ASS_CLK_SRC, 0}, | 39 | {ASS_CLK_SRC, 0}, |
31 | {ASS_CLK_DIV, 0}, | 40 | {ASS_CLK_DIV, 0}, |
32 | {ASS_CLK_GATE, 0}, | 41 | {ASS_CLK_GATE, 0}, |
33 | }; | 42 | }; |
34 | 43 | ||
35 | /* list of all parent clock list */ | ||
36 | static const char *mout_audss_p[] = { "fin_pll", "fout_epll" }; | ||
37 | static const char *mout_i2s_p[] = { "mout_audss", "cdclk0", "sclk_audio0" }; | ||
38 | |||
39 | #ifdef CONFIG_PM_SLEEP | ||
40 | static int exynos_audss_clk_suspend(void) | 44 | static int exynos_audss_clk_suspend(void) |
41 | { | 45 | { |
42 | int i; | 46 | int i; |
@@ -61,31 +65,69 @@ static struct syscore_ops exynos_audss_clk_syscore_ops = { | |||
61 | }; | 65 | }; |
62 | #endif /* CONFIG_PM_SLEEP */ | 66 | #endif /* CONFIG_PM_SLEEP */ |
63 | 67 | ||
68 | static const struct of_device_id exynos_audss_clk_of_match[] = { | ||
69 | { .compatible = "samsung,exynos4210-audss-clock", | ||
70 | .data = (void *)TYPE_EXYNOS4210, }, | ||
71 | { .compatible = "samsung,exynos5250-audss-clock", | ||
72 | .data = (void *)TYPE_EXYNOS5250, }, | ||
73 | { .compatible = "samsung,exynos5420-audss-clock", | ||
74 | .data = (void *)TYPE_EXYNOS5420, }, | ||
75 | {}, | ||
76 | }; | ||
77 | |||
64 | /* register exynos_audss clocks */ | 78 | /* register exynos_audss clocks */ |
65 | static void __init exynos_audss_clk_init(struct device_node *np) | 79 | static int exynos_audss_clk_probe(struct platform_device *pdev) |
66 | { | 80 | { |
67 | reg_base = of_iomap(np, 0); | 81 | int i, ret = 0; |
68 | if (!reg_base) { | 82 | struct resource *res; |
69 | pr_err("%s: failed to map audss registers\n", __func__); | 83 | const char *mout_audss_p[] = {"fin_pll", "fout_epll"}; |
70 | return; | 84 | const char *mout_i2s_p[] = {"mout_audss", "cdclk0", "sclk_audio0"}; |
85 | const char *sclk_pcm_p = "sclk_pcm0"; | ||
86 | struct clk *pll_ref, *pll_in, *cdclk, *sclk_audio, *sclk_pcm_in; | ||
87 | const struct of_device_id *match; | ||
88 | enum exynos_audss_clk_type variant; | ||
89 | |||
90 | match = of_match_node(exynos_audss_clk_of_match, pdev->dev.of_node); | ||
91 | if (!match) | ||
92 | return -EINVAL; | ||
93 | variant = (enum exynos_audss_clk_type)match->data; | ||
94 | |||
95 | res = platform_get_resource(pdev, IORESOURCE_MEM, 0); | ||
96 | reg_base = devm_ioremap_resource(&pdev->dev, res); | ||
97 | if (IS_ERR(reg_base)) { | ||
98 | dev_err(&pdev->dev, "failed to map audss registers\n"); | ||
99 | return PTR_ERR(reg_base); | ||
71 | } | 100 | } |
72 | 101 | ||
73 | clk_table = kzalloc(sizeof(struct clk *) * EXYNOS_AUDSS_MAX_CLKS, | 102 | clk_table = devm_kzalloc(&pdev->dev, |
103 | sizeof(struct clk *) * EXYNOS_AUDSS_MAX_CLKS, | ||
74 | GFP_KERNEL); | 104 | GFP_KERNEL); |
75 | if (!clk_table) { | 105 | if (!clk_table) |
76 | pr_err("%s: could not allocate clk lookup table\n", __func__); | 106 | return -ENOMEM; |
77 | return; | ||
78 | } | ||
79 | 107 | ||
80 | clk_data.clks = clk_table; | 108 | clk_data.clks = clk_table; |
81 | clk_data.clk_num = EXYNOS_AUDSS_MAX_CLKS; | 109 | if (variant == TYPE_EXYNOS5420) |
82 | of_clk_add_provider(np, of_clk_src_onecell_get, &clk_data); | 110 | clk_data.clk_num = EXYNOS_AUDSS_MAX_CLKS; |
83 | 111 | else | |
112 | clk_data.clk_num = EXYNOS_AUDSS_MAX_CLKS - 1; | ||
113 | |||
114 | pll_ref = devm_clk_get(&pdev->dev, "pll_ref"); | ||
115 | pll_in = devm_clk_get(&pdev->dev, "pll_in"); | ||
116 | if (!IS_ERR(pll_ref)) | ||
117 | mout_audss_p[0] = __clk_get_name(pll_ref); | ||
118 | if (!IS_ERR(pll_in)) | ||
119 | mout_audss_p[1] = __clk_get_name(pll_in); | ||
84 | clk_table[EXYNOS_MOUT_AUDSS] = clk_register_mux(NULL, "mout_audss", | 120 | clk_table[EXYNOS_MOUT_AUDSS] = clk_register_mux(NULL, "mout_audss", |
85 | mout_audss_p, ARRAY_SIZE(mout_audss_p), | 121 | mout_audss_p, ARRAY_SIZE(mout_audss_p), |
86 | CLK_SET_RATE_NO_REPARENT, | 122 | CLK_SET_RATE_NO_REPARENT, |
87 | reg_base + ASS_CLK_SRC, 0, 1, 0, &lock); | 123 | reg_base + ASS_CLK_SRC, 0, 1, 0, &lock); |
88 | 124 | ||
125 | cdclk = devm_clk_get(&pdev->dev, "cdclk"); | ||
126 | sclk_audio = devm_clk_get(&pdev->dev, "sclk_audio"); | ||
127 | if (!IS_ERR(cdclk)) | ||
128 | mout_i2s_p[1] = __clk_get_name(cdclk); | ||
129 | if (!IS_ERR(sclk_audio)) | ||
130 | mout_i2s_p[2] = __clk_get_name(sclk_audio); | ||
89 | clk_table[EXYNOS_MOUT_I2S] = clk_register_mux(NULL, "mout_i2s", | 131 | clk_table[EXYNOS_MOUT_I2S] = clk_register_mux(NULL, "mout_i2s", |
90 | mout_i2s_p, ARRAY_SIZE(mout_i2s_p), | 132 | mout_i2s_p, ARRAY_SIZE(mout_i2s_p), |
91 | CLK_SET_RATE_NO_REPARENT, | 133 | CLK_SET_RATE_NO_REPARENT, |
@@ -119,17 +161,88 @@ static void __init exynos_audss_clk_init(struct device_node *np) | |||
119 | "sclk_pcm", CLK_SET_RATE_PARENT, | 161 | "sclk_pcm", CLK_SET_RATE_PARENT, |
120 | reg_base + ASS_CLK_GATE, 4, 0, &lock); | 162 | reg_base + ASS_CLK_GATE, 4, 0, &lock); |
121 | 163 | ||
164 | sclk_pcm_in = devm_clk_get(&pdev->dev, "sclk_pcm_in"); | ||
165 | if (!IS_ERR(sclk_pcm_in)) | ||
166 | sclk_pcm_p = __clk_get_name(sclk_pcm_in); | ||
122 | clk_table[EXYNOS_SCLK_PCM] = clk_register_gate(NULL, "sclk_pcm", | 167 | clk_table[EXYNOS_SCLK_PCM] = clk_register_gate(NULL, "sclk_pcm", |
123 | "div_pcm0", CLK_SET_RATE_PARENT, | 168 | sclk_pcm_p, CLK_SET_RATE_PARENT, |
124 | reg_base + ASS_CLK_GATE, 5, 0, &lock); | 169 | reg_base + ASS_CLK_GATE, 5, 0, &lock); |
125 | 170 | ||
171 | if (variant == TYPE_EXYNOS5420) { | ||
172 | clk_table[EXYNOS_ADMA] = clk_register_gate(NULL, "adma", | ||
173 | "dout_srp", CLK_SET_RATE_PARENT, | ||
174 | reg_base + ASS_CLK_GATE, 9, 0, &lock); | ||
175 | } | ||
176 | |||
177 | for (i = 0; i < clk_data.clk_num; i++) { | ||
178 | if (IS_ERR(clk_table[i])) { | ||
179 | dev_err(&pdev->dev, "failed to register clock %d\n", i); | ||
180 | ret = PTR_ERR(clk_table[i]); | ||
181 | goto unregister; | ||
182 | } | ||
183 | } | ||
184 | |||
185 | ret = of_clk_add_provider(pdev->dev.of_node, of_clk_src_onecell_get, | ||
186 | &clk_data); | ||
187 | if (ret) { | ||
188 | dev_err(&pdev->dev, "failed to add clock provider\n"); | ||
189 | goto unregister; | ||
190 | } | ||
191 | |||
126 | #ifdef CONFIG_PM_SLEEP | 192 | #ifdef CONFIG_PM_SLEEP |
127 | register_syscore_ops(&exynos_audss_clk_syscore_ops); | 193 | register_syscore_ops(&exynos_audss_clk_syscore_ops); |
128 | #endif | 194 | #endif |
129 | 195 | ||
130 | pr_info("Exynos: Audss: clock setup completed\n"); | 196 | dev_info(&pdev->dev, "setup completed\n"); |
197 | |||
198 | return 0; | ||
199 | |||
200 | unregister: | ||
201 | for (i = 0; i < clk_data.clk_num; i++) { | ||
202 | if (!IS_ERR(clk_table[i])) | ||
203 | clk_unregister(clk_table[i]); | ||
204 | } | ||
205 | |||
206 | return ret; | ||
207 | } | ||
208 | |||
209 | static int exynos_audss_clk_remove(struct platform_device *pdev) | ||
210 | { | ||
211 | int i; | ||
212 | |||
213 | of_clk_del_provider(pdev->dev.of_node); | ||
214 | |||
215 | for (i = 0; i < clk_data.clk_num; i++) { | ||
216 | if (!IS_ERR(clk_table[i])) | ||
217 | clk_unregister(clk_table[i]); | ||
218 | } | ||
219 | |||
220 | return 0; | ||
131 | } | 221 | } |
132 | CLK_OF_DECLARE(exynos4210_audss_clk, "samsung,exynos4210-audss-clock", | 222 | |
133 | exynos_audss_clk_init); | 223 | static struct platform_driver exynos_audss_clk_driver = { |
134 | CLK_OF_DECLARE(exynos5250_audss_clk, "samsung,exynos5250-audss-clock", | 224 | .driver = { |
135 | exynos_audss_clk_init); | 225 | .name = "exynos-audss-clk", |
226 | .owner = THIS_MODULE, | ||
227 | .of_match_table = exynos_audss_clk_of_match, | ||
228 | }, | ||
229 | .probe = exynos_audss_clk_probe, | ||
230 | .remove = exynos_audss_clk_remove, | ||
231 | }; | ||
232 | |||
233 | static int __init exynos_audss_clk_init(void) | ||
234 | { | ||
235 | return platform_driver_register(&exynos_audss_clk_driver); | ||
236 | } | ||
237 | core_initcall(exynos_audss_clk_init); | ||
238 | |||
239 | static void __exit exynos_audss_clk_exit(void) | ||
240 | { | ||
241 | platform_driver_unregister(&exynos_audss_clk_driver); | ||
242 | } | ||
243 | module_exit(exynos_audss_clk_exit); | ||
244 | |||
245 | MODULE_AUTHOR("Padmavathi Venna <padma.v@samsung.com>"); | ||
246 | MODULE_DESCRIPTION("Exynos Audio Subsystem Clock Controller"); | ||
247 | MODULE_LICENSE("GPL v2"); | ||
248 | MODULE_ALIAS("platform:exynos-audss-clk"); | ||
diff --git a/drivers/clk/samsung/clk-exynos4.c b/drivers/clk/samsung/clk-exynos4.c index ad5ff50c5f28..2f7e440aebf8 100644 --- a/drivers/clk/samsung/clk-exynos4.c +++ b/drivers/clk/samsung/clk-exynos4.c | |||
@@ -10,6 +10,7 @@ | |||
10 | * Common Clock Framework support for all Exynos4 SoCs. | 10 | * Common Clock Framework support for all Exynos4 SoCs. |
11 | */ | 11 | */ |
12 | 12 | ||
13 | #include <dt-bindings/clock/exynos4.h> | ||
13 | #include <linux/clk.h> | 14 | #include <linux/clk.h> |
14 | #include <linux/clkdev.h> | 15 | #include <linux/clkdev.h> |
15 | #include <linux/clk-provider.h> | 16 | #include <linux/clk-provider.h> |
@@ -39,7 +40,7 @@ | |||
39 | #define SRC_TOP1 0xc214 | 40 | #define SRC_TOP1 0xc214 |
40 | #define SRC_CAM 0xc220 | 41 | #define SRC_CAM 0xc220 |
41 | #define SRC_TV 0xc224 | 42 | #define SRC_TV 0xc224 |
42 | #define SRC_MFC 0xcc28 | 43 | #define SRC_MFC 0xc228 |
43 | #define SRC_G3D 0xc22c | 44 | #define SRC_G3D 0xc22c |
44 | #define E4210_SRC_IMAGE 0xc230 | 45 | #define E4210_SRC_IMAGE 0xc230 |
45 | #define SRC_LCD0 0xc234 | 46 | #define SRC_LCD0 0xc234 |
@@ -130,68 +131,6 @@ enum exynos4_plls { | |||
130 | }; | 131 | }; |
131 | 132 | ||
132 | /* | 133 | /* |
133 | * Let each supported clock get a unique id. This id is used to lookup the clock | ||
134 | * for device tree based platforms. The clocks are categorized into three | ||
135 | * sections: core, sclk gate and bus interface gate clocks. | ||
136 | * | ||
137 | * When adding a new clock to this list, it is advised to choose a clock | ||
138 | * category and add it to the end of that category. That is because the the | ||
139 | * device tree source file is referring to these ids and any change in the | ||
140 | * sequence number of existing clocks will require corresponding change in the | ||
141 | * device tree files. This limitation would go away when pre-processor support | ||
142 | * for dtc would be available. | ||
143 | */ | ||
144 | enum exynos4_clks { | ||
145 | none, | ||
146 | |||
147 | /* core clocks */ | ||
148 | xxti, xusbxti, fin_pll, fout_apll, fout_mpll, fout_epll, fout_vpll, | ||
149 | sclk_apll, sclk_mpll, sclk_epll, sclk_vpll, arm_clk, aclk200, aclk100, | ||
150 | aclk160, aclk133, mout_mpll_user_t, mout_mpll_user_c, mout_core, | ||
151 | mout_apll, /* 20 */ | ||
152 | |||
153 | /* gate for special clocks (sclk) */ | ||
154 | sclk_fimc0 = 128, sclk_fimc1, sclk_fimc2, sclk_fimc3, sclk_cam0, | ||
155 | sclk_cam1, sclk_csis0, sclk_csis1, sclk_hdmi, sclk_mixer, sclk_dac, | ||
156 | sclk_pixel, sclk_fimd0, sclk_mdnie0, sclk_mdnie_pwm0, sclk_mipi0, | ||
157 | sclk_audio0, sclk_mmc0, sclk_mmc1, sclk_mmc2, sclk_mmc3, sclk_mmc4, | ||
158 | sclk_sata, sclk_uart0, sclk_uart1, sclk_uart2, sclk_uart3, sclk_uart4, | ||
159 | sclk_audio1, sclk_audio2, sclk_spdif, sclk_spi0, sclk_spi1, sclk_spi2, | ||
160 | sclk_slimbus, sclk_fimd1, sclk_mipi1, sclk_pcm1, sclk_pcm2, sclk_i2s1, | ||
161 | sclk_i2s2, sclk_mipihsi, sclk_mfc, sclk_pcm0, sclk_g3d, sclk_pwm_isp, | ||
162 | sclk_spi0_isp, sclk_spi1_isp, sclk_uart_isp, sclk_fimg2d, | ||
163 | |||
164 | /* gate clocks */ | ||
165 | fimc0 = 256, fimc1, fimc2, fimc3, csis0, csis1, jpeg, smmu_fimc0, | ||
166 | smmu_fimc1, smmu_fimc2, smmu_fimc3, smmu_jpeg, vp, mixer, tvenc, hdmi, | ||
167 | smmu_tv, mfc, smmu_mfcl, smmu_mfcr, g3d, g2d, rotator, mdma, smmu_g2d, | ||
168 | smmu_rotator, smmu_mdma, fimd0, mie0, mdnie0, dsim0, smmu_fimd0, fimd1, | ||
169 | mie1, dsim1, smmu_fimd1, pdma0, pdma1, pcie_phy, sata_phy, tsi, sdmmc0, | ||
170 | sdmmc1, sdmmc2, sdmmc3, sdmmc4, sata, sromc, usb_host, usb_device, pcie, | ||
171 | onenand, nfcon, smmu_pcie, gps, smmu_gps, uart0, uart1, uart2, uart3, | ||
172 | uart4, i2c0, i2c1, i2c2, i2c3, i2c4, i2c5, i2c6, i2c7, i2c_hdmi, tsadc, | ||
173 | spi0, spi1, spi2, i2s1, i2s2, pcm0, i2s0, pcm1, pcm2, pwm, slimbus, | ||
174 | spdif, ac97, modemif, chipid, sysreg, hdmi_cec, mct, wdt, rtc, keyif, | ||
175 | audss, mipi_hsi, mdma2, pixelasyncm0, pixelasyncm1, fimc_lite0, | ||
176 | fimc_lite1, ppmuispx, ppmuispmx, fimc_isp, fimc_drc, fimc_fd, mcuisp, | ||
177 | gicisp, smmu_isp, smmu_drc, smmu_fd, smmu_lite0, smmu_lite1, mcuctl_isp, | ||
178 | mpwm_isp, i2c0_isp, i2c1_isp, mtcadc_isp, pwm_isp, wdt_isp, uart_isp, | ||
179 | asyncaxim, smmu_ispcx, spi0_isp, spi1_isp, pwm_isp_sclk, spi0_isp_sclk, | ||
180 | spi1_isp_sclk, uart_isp_sclk, tmu_apbif, | ||
181 | |||
182 | /* mux clocks */ | ||
183 | mout_fimc0 = 384, mout_fimc1, mout_fimc2, mout_fimc3, mout_cam0, | ||
184 | mout_cam1, mout_csis0, mout_csis1, mout_g3d0, mout_g3d1, mout_g3d, | ||
185 | aclk400_mcuisp, | ||
186 | |||
187 | /* div clocks */ | ||
188 | div_isp0 = 450, div_isp1, div_mcuisp0, div_mcuisp1, div_aclk200, | ||
189 | div_aclk400_mcuisp, | ||
190 | |||
191 | nr_clks, | ||
192 | }; | ||
193 | |||
194 | /* | ||
195 | * list of controller registers to be saved and restored during a | 134 | * list of controller registers to be saved and restored during a |
196 | * suspend/resume cycle. | 135 | * suspend/resume cycle. |
197 | */ | 136 | */ |
@@ -347,255 +286,255 @@ PNAME(mout_user_aclk266_gps_p4x12) = {"fin_pll", "div_aclk266_gps", }; | |||
347 | 286 | ||
348 | /* fixed rate clocks generated outside the soc */ | 287 | /* fixed rate clocks generated outside the soc */ |
349 | static struct samsung_fixed_rate_clock exynos4_fixed_rate_ext_clks[] __initdata = { | 288 | static struct samsung_fixed_rate_clock exynos4_fixed_rate_ext_clks[] __initdata = { |
350 | FRATE(xxti, "xxti", NULL, CLK_IS_ROOT, 0), | 289 | FRATE(CLK_XXTI, "xxti", NULL, CLK_IS_ROOT, 0), |
351 | FRATE(xusbxti, "xusbxti", NULL, CLK_IS_ROOT, 0), | 290 | FRATE(CLK_XUSBXTI, "xusbxti", NULL, CLK_IS_ROOT, 0), |
352 | }; | 291 | }; |
353 | 292 | ||
354 | /* fixed rate clocks generated inside the soc */ | 293 | /* fixed rate clocks generated inside the soc */ |
355 | static struct samsung_fixed_rate_clock exynos4_fixed_rate_clks[] __initdata = { | 294 | static struct samsung_fixed_rate_clock exynos4_fixed_rate_clks[] __initdata = { |
356 | FRATE(none, "sclk_hdmi24m", NULL, CLK_IS_ROOT, 24000000), | 295 | FRATE(0, "sclk_hdmi24m", NULL, CLK_IS_ROOT, 24000000), |
357 | FRATE(none, "sclk_hdmiphy", NULL, CLK_IS_ROOT, 27000000), | 296 | FRATE(0, "sclk_hdmiphy", NULL, CLK_IS_ROOT, 27000000), |
358 | FRATE(none, "sclk_usbphy0", NULL, CLK_IS_ROOT, 48000000), | 297 | FRATE(0, "sclk_usbphy0", NULL, CLK_IS_ROOT, 48000000), |
359 | }; | 298 | }; |
360 | 299 | ||
361 | static struct samsung_fixed_rate_clock exynos4210_fixed_rate_clks[] __initdata = { | 300 | static struct samsung_fixed_rate_clock exynos4210_fixed_rate_clks[] __initdata = { |
362 | FRATE(none, "sclk_usbphy1", NULL, CLK_IS_ROOT, 48000000), | 301 | FRATE(0, "sclk_usbphy1", NULL, CLK_IS_ROOT, 48000000), |
363 | }; | 302 | }; |
364 | 303 | ||
365 | /* list of mux clocks supported in all exynos4 soc's */ | 304 | /* list of mux clocks supported in all exynos4 soc's */ |
366 | static struct samsung_mux_clock exynos4_mux_clks[] __initdata = { | 305 | static struct samsung_mux_clock exynos4_mux_clks[] __initdata = { |
367 | MUX_FA(mout_apll, "mout_apll", mout_apll_p, SRC_CPU, 0, 1, | 306 | MUX_FA(CLK_MOUT_APLL, "mout_apll", mout_apll_p, SRC_CPU, 0, 1, |
368 | CLK_SET_RATE_PARENT, 0, "mout_apll"), | 307 | CLK_SET_RATE_PARENT, 0, "mout_apll"), |
369 | MUX(none, "mout_hdmi", mout_hdmi_p, SRC_TV, 0, 1), | 308 | MUX(0, "mout_hdmi", mout_hdmi_p, SRC_TV, 0, 1), |
370 | MUX(none, "mout_mfc1", sclk_evpll_p, SRC_MFC, 4, 1), | 309 | MUX(0, "mout_mfc1", sclk_evpll_p, SRC_MFC, 4, 1), |
371 | MUX(none, "mout_mfc", mout_mfc_p, SRC_MFC, 8, 1), | 310 | MUX(0, "mout_mfc", mout_mfc_p, SRC_MFC, 8, 1), |
372 | MUX_F(mout_g3d1, "mout_g3d1", sclk_evpll_p, SRC_G3D, 4, 1, | 311 | MUX_F(CLK_MOUT_G3D1, "mout_g3d1", sclk_evpll_p, SRC_G3D, 4, 1, |
373 | CLK_SET_RATE_PARENT, 0), | 312 | CLK_SET_RATE_PARENT, 0), |
374 | MUX_F(mout_g3d, "mout_g3d", mout_g3d_p, SRC_G3D, 8, 1, | 313 | MUX_F(CLK_MOUT_G3D, "mout_g3d", mout_g3d_p, SRC_G3D, 8, 1, |
375 | CLK_SET_RATE_PARENT, 0), | 314 | CLK_SET_RATE_PARENT, 0), |
376 | MUX(none, "mout_spdif", mout_spdif_p, SRC_PERIL1, 8, 2), | 315 | MUX(0, "mout_spdif", mout_spdif_p, SRC_PERIL1, 8, 2), |
377 | MUX(none, "mout_onenand1", mout_onenand1_p, SRC_TOP0, 0, 1), | 316 | MUX(0, "mout_onenand1", mout_onenand1_p, SRC_TOP0, 0, 1), |
378 | MUX(sclk_epll, "sclk_epll", mout_epll_p, SRC_TOP0, 4, 1), | 317 | MUX(CLK_SCLK_EPLL, "sclk_epll", mout_epll_p, SRC_TOP0, 4, 1), |
379 | MUX(none, "mout_onenand", mout_onenand_p, SRC_TOP0, 28, 1), | 318 | MUX(0, "mout_onenand", mout_onenand_p, SRC_TOP0, 28, 1), |
380 | }; | 319 | }; |
381 | 320 | ||
382 | /* list of mux clocks supported in exynos4210 soc */ | 321 | /* list of mux clocks supported in exynos4210 soc */ |
383 | static struct samsung_mux_clock exynos4210_mux_early[] __initdata = { | 322 | static struct samsung_mux_clock exynos4210_mux_early[] __initdata = { |
384 | MUX(none, "mout_vpllsrc", mout_vpllsrc_p, SRC_TOP1, 0, 1), | 323 | MUX(0, "mout_vpllsrc", mout_vpllsrc_p, SRC_TOP1, 0, 1), |
385 | }; | 324 | }; |
386 | 325 | ||
387 | static struct samsung_mux_clock exynos4210_mux_clks[] __initdata = { | 326 | static struct samsung_mux_clock exynos4210_mux_clks[] __initdata = { |
388 | MUX(none, "mout_aclk200", sclk_ampll_p4210, SRC_TOP0, 12, 1), | 327 | MUX(0, "mout_aclk200", sclk_ampll_p4210, SRC_TOP0, 12, 1), |
389 | MUX(none, "mout_aclk100", sclk_ampll_p4210, SRC_TOP0, 16, 1), | 328 | MUX(0, "mout_aclk100", sclk_ampll_p4210, SRC_TOP0, 16, 1), |
390 | MUX(none, "mout_aclk160", sclk_ampll_p4210, SRC_TOP0, 20, 1), | 329 | MUX(0, "mout_aclk160", sclk_ampll_p4210, SRC_TOP0, 20, 1), |
391 | MUX(none, "mout_aclk133", sclk_ampll_p4210, SRC_TOP0, 24, 1), | 330 | MUX(0, "mout_aclk133", sclk_ampll_p4210, SRC_TOP0, 24, 1), |
392 | MUX(none, "mout_mixer", mout_mixer_p4210, SRC_TV, 4, 1), | 331 | MUX(0, "mout_mixer", mout_mixer_p4210, SRC_TV, 4, 1), |
393 | MUX(none, "mout_dac", mout_dac_p4210, SRC_TV, 8, 1), | 332 | MUX(0, "mout_dac", mout_dac_p4210, SRC_TV, 8, 1), |
394 | MUX(none, "mout_g2d0", sclk_ampll_p4210, E4210_SRC_IMAGE, 0, 1), | 333 | MUX(0, "mout_g2d0", sclk_ampll_p4210, E4210_SRC_IMAGE, 0, 1), |
395 | MUX(none, "mout_g2d1", sclk_evpll_p, E4210_SRC_IMAGE, 4, 1), | 334 | MUX(0, "mout_g2d1", sclk_evpll_p, E4210_SRC_IMAGE, 4, 1), |
396 | MUX(none, "mout_g2d", mout_g2d_p, E4210_SRC_IMAGE, 8, 1), | 335 | MUX(0, "mout_g2d", mout_g2d_p, E4210_SRC_IMAGE, 8, 1), |
397 | MUX(none, "mout_fimd1", group1_p4210, E4210_SRC_LCD1, 0, 4), | 336 | MUX(0, "mout_fimd1", group1_p4210, E4210_SRC_LCD1, 0, 4), |
398 | MUX(none, "mout_mipi1", group1_p4210, E4210_SRC_LCD1, 12, 4), | 337 | MUX(0, "mout_mipi1", group1_p4210, E4210_SRC_LCD1, 12, 4), |
399 | MUX(sclk_mpll, "sclk_mpll", mout_mpll_p, SRC_CPU, 8, 1), | 338 | MUX(CLK_SCLK_MPLL, "sclk_mpll", mout_mpll_p, SRC_CPU, 8, 1), |
400 | MUX(mout_core, "mout_core", mout_core_p4210, SRC_CPU, 16, 1), | 339 | MUX(CLK_MOUT_CORE, "mout_core", mout_core_p4210, SRC_CPU, 16, 1), |
401 | MUX(sclk_vpll, "sclk_vpll", sclk_vpll_p4210, SRC_TOP0, 8, 1), | 340 | MUX(CLK_SCLK_VPLL, "sclk_vpll", sclk_vpll_p4210, SRC_TOP0, 8, 1), |
402 | MUX(mout_fimc0, "mout_fimc0", group1_p4210, SRC_CAM, 0, 4), | 341 | MUX(CLK_MOUT_FIMC0, "mout_fimc0", group1_p4210, SRC_CAM, 0, 4), |
403 | MUX(mout_fimc1, "mout_fimc1", group1_p4210, SRC_CAM, 4, 4), | 342 | MUX(CLK_MOUT_FIMC1, "mout_fimc1", group1_p4210, SRC_CAM, 4, 4), |
404 | MUX(mout_fimc2, "mout_fimc2", group1_p4210, SRC_CAM, 8, 4), | 343 | MUX(CLK_MOUT_FIMC2, "mout_fimc2", group1_p4210, SRC_CAM, 8, 4), |
405 | MUX(mout_fimc3, "mout_fimc3", group1_p4210, SRC_CAM, 12, 4), | 344 | MUX(CLK_MOUT_FIMC3, "mout_fimc3", group1_p4210, SRC_CAM, 12, 4), |
406 | MUX(mout_cam0, "mout_cam0", group1_p4210, SRC_CAM, 16, 4), | 345 | MUX(CLK_MOUT_CAM0, "mout_cam0", group1_p4210, SRC_CAM, 16, 4), |
407 | MUX(mout_cam1, "mout_cam1", group1_p4210, SRC_CAM, 20, 4), | 346 | MUX(CLK_MOUT_CAM1, "mout_cam1", group1_p4210, SRC_CAM, 20, 4), |
408 | MUX(mout_csis0, "mout_csis0", group1_p4210, SRC_CAM, 24, 4), | 347 | MUX(CLK_MOUT_CSIS0, "mout_csis0", group1_p4210, SRC_CAM, 24, 4), |
409 | MUX(mout_csis1, "mout_csis1", group1_p4210, SRC_CAM, 28, 4), | 348 | MUX(CLK_MOUT_CSIS1, "mout_csis1", group1_p4210, SRC_CAM, 28, 4), |
410 | MUX(none, "mout_mfc0", sclk_ampll_p4210, SRC_MFC, 0, 1), | 349 | MUX(0, "mout_mfc0", sclk_ampll_p4210, SRC_MFC, 0, 1), |
411 | MUX_F(mout_g3d0, "mout_g3d0", sclk_ampll_p4210, SRC_G3D, 0, 1, | 350 | MUX_F(CLK_MOUT_G3D0, "mout_g3d0", sclk_ampll_p4210, SRC_G3D, 0, 1, |
412 | CLK_SET_RATE_PARENT, 0), | 351 | CLK_SET_RATE_PARENT, 0), |
413 | MUX(none, "mout_fimd0", group1_p4210, SRC_LCD0, 0, 4), | 352 | MUX(0, "mout_fimd0", group1_p4210, SRC_LCD0, 0, 4), |
414 | MUX(none, "mout_mipi0", group1_p4210, SRC_LCD0, 12, 4), | 353 | MUX(0, "mout_mipi0", group1_p4210, SRC_LCD0, 12, 4), |
415 | MUX(none, "mout_audio0", mout_audio0_p4210, SRC_MAUDIO, 0, 4), | 354 | MUX(0, "mout_audio0", mout_audio0_p4210, SRC_MAUDIO, 0, 4), |
416 | MUX(none, "mout_mmc0", group1_p4210, SRC_FSYS, 0, 4), | 355 | MUX(0, "mout_mmc0", group1_p4210, SRC_FSYS, 0, 4), |
417 | MUX(none, "mout_mmc1", group1_p4210, SRC_FSYS, 4, 4), | 356 | MUX(0, "mout_mmc1", group1_p4210, SRC_FSYS, 4, 4), |
418 | MUX(none, "mout_mmc2", group1_p4210, SRC_FSYS, 8, 4), | 357 | MUX(0, "mout_mmc2", group1_p4210, SRC_FSYS, 8, 4), |
419 | MUX(none, "mout_mmc3", group1_p4210, SRC_FSYS, 12, 4), | 358 | MUX(0, "mout_mmc3", group1_p4210, SRC_FSYS, 12, 4), |
420 | MUX(none, "mout_mmc4", group1_p4210, SRC_FSYS, 16, 4), | 359 | MUX(0, "mout_mmc4", group1_p4210, SRC_FSYS, 16, 4), |
421 | MUX(none, "mout_sata", sclk_ampll_p4210, SRC_FSYS, 24, 1), | 360 | MUX(0, "mout_sata", sclk_ampll_p4210, SRC_FSYS, 24, 1), |
422 | MUX(none, "mout_uart0", group1_p4210, SRC_PERIL0, 0, 4), | 361 | MUX(0, "mout_uart0", group1_p4210, SRC_PERIL0, 0, 4), |
423 | MUX(none, "mout_uart1", group1_p4210, SRC_PERIL0, 4, 4), | 362 | MUX(0, "mout_uart1", group1_p4210, SRC_PERIL0, 4, 4), |
424 | MUX(none, "mout_uart2", group1_p4210, SRC_PERIL0, 8, 4), | 363 | MUX(0, "mout_uart2", group1_p4210, SRC_PERIL0, 8, 4), |
425 | MUX(none, "mout_uart3", group1_p4210, SRC_PERIL0, 12, 4), | 364 | MUX(0, "mout_uart3", group1_p4210, SRC_PERIL0, 12, 4), |
426 | MUX(none, "mout_uart4", group1_p4210, SRC_PERIL0, 16, 4), | 365 | MUX(0, "mout_uart4", group1_p4210, SRC_PERIL0, 16, 4), |
427 | MUX(none, "mout_audio1", mout_audio1_p4210, SRC_PERIL1, 0, 4), | 366 | MUX(0, "mout_audio1", mout_audio1_p4210, SRC_PERIL1, 0, 4), |
428 | MUX(none, "mout_audio2", mout_audio2_p4210, SRC_PERIL1, 4, 4), | 367 | MUX(0, "mout_audio2", mout_audio2_p4210, SRC_PERIL1, 4, 4), |
429 | MUX(none, "mout_spi0", group1_p4210, SRC_PERIL1, 16, 4), | 368 | MUX(0, "mout_spi0", group1_p4210, SRC_PERIL1, 16, 4), |
430 | MUX(none, "mout_spi1", group1_p4210, SRC_PERIL1, 20, 4), | 369 | MUX(0, "mout_spi1", group1_p4210, SRC_PERIL1, 20, 4), |
431 | MUX(none, "mout_spi2", group1_p4210, SRC_PERIL1, 24, 4), | 370 | MUX(0, "mout_spi2", group1_p4210, SRC_PERIL1, 24, 4), |
432 | }; | 371 | }; |
433 | 372 | ||
434 | /* list of mux clocks supported in exynos4x12 soc */ | 373 | /* list of mux clocks supported in exynos4x12 soc */ |
435 | static struct samsung_mux_clock exynos4x12_mux_clks[] __initdata = { | 374 | static struct samsung_mux_clock exynos4x12_mux_clks[] __initdata = { |
436 | MUX(mout_mpll_user_c, "mout_mpll_user_c", mout_mpll_user_p4x12, | 375 | MUX(CLK_MOUT_MPLL_USER_C, "mout_mpll_user_c", mout_mpll_user_p4x12, |
437 | SRC_CPU, 24, 1), | 376 | SRC_CPU, 24, 1), |
438 | MUX(none, "mout_aclk266_gps", aclk_p4412, SRC_TOP1, 4, 1), | 377 | MUX(0, "mout_aclk266_gps", aclk_p4412, SRC_TOP1, 4, 1), |
439 | MUX(none, "mout_aclk400_mcuisp", aclk_p4412, SRC_TOP1, 8, 1), | 378 | MUX(0, "mout_aclk400_mcuisp", aclk_p4412, SRC_TOP1, 8, 1), |
440 | MUX(mout_mpll_user_t, "mout_mpll_user_t", mout_mpll_user_p4x12, | 379 | MUX(CLK_MOUT_MPLL_USER_T, "mout_mpll_user_t", mout_mpll_user_p4x12, |
441 | SRC_TOP1, 12, 1), | 380 | SRC_TOP1, 12, 1), |
442 | MUX(none, "mout_user_aclk266_gps", mout_user_aclk266_gps_p4x12, | 381 | MUX(0, "mout_user_aclk266_gps", mout_user_aclk266_gps_p4x12, |
443 | SRC_TOP1, 16, 1), | 382 | SRC_TOP1, 16, 1), |
444 | MUX(aclk200, "aclk200", mout_user_aclk200_p4x12, SRC_TOP1, 20, 1), | 383 | MUX(CLK_ACLK200, "aclk200", mout_user_aclk200_p4x12, SRC_TOP1, 20, 1), |
445 | MUX(aclk400_mcuisp, "aclk400_mcuisp", mout_user_aclk400_mcuisp_p4x12, | 384 | MUX(CLK_ACLK400_MCUISP, "aclk400_mcuisp", |
446 | SRC_TOP1, 24, 1), | 385 | mout_user_aclk400_mcuisp_p4x12, SRC_TOP1, 24, 1), |
447 | MUX(none, "mout_aclk200", aclk_p4412, SRC_TOP0, 12, 1), | 386 | MUX(0, "mout_aclk200", aclk_p4412, SRC_TOP0, 12, 1), |
448 | MUX(none, "mout_aclk100", aclk_p4412, SRC_TOP0, 16, 1), | 387 | MUX(0, "mout_aclk100", aclk_p4412, SRC_TOP0, 16, 1), |
449 | MUX(none, "mout_aclk160", aclk_p4412, SRC_TOP0, 20, 1), | 388 | MUX(0, "mout_aclk160", aclk_p4412, SRC_TOP0, 20, 1), |
450 | MUX(none, "mout_aclk133", aclk_p4412, SRC_TOP0, 24, 1), | 389 | MUX(0, "mout_aclk133", aclk_p4412, SRC_TOP0, 24, 1), |
451 | MUX(none, "mout_mdnie0", group1_p4x12, SRC_LCD0, 4, 4), | 390 | MUX(0, "mout_mdnie0", group1_p4x12, SRC_LCD0, 4, 4), |
452 | MUX(none, "mout_mdnie_pwm0", group1_p4x12, SRC_LCD0, 8, 4), | 391 | MUX(0, "mout_mdnie_pwm0", group1_p4x12, SRC_LCD0, 8, 4), |
453 | MUX(none, "mout_sata", sclk_ampll_p4x12, SRC_FSYS, 24, 1), | 392 | MUX(0, "mout_sata", sclk_ampll_p4x12, SRC_FSYS, 24, 1), |
454 | MUX(none, "mout_jpeg0", sclk_ampll_p4x12, E4X12_SRC_CAM1, 0, 1), | 393 | MUX(0, "mout_jpeg0", sclk_ampll_p4x12, E4X12_SRC_CAM1, 0, 1), |
455 | MUX(none, "mout_jpeg1", sclk_evpll_p, E4X12_SRC_CAM1, 4, 1), | 394 | MUX(0, "mout_jpeg1", sclk_evpll_p, E4X12_SRC_CAM1, 4, 1), |
456 | MUX(none, "mout_jpeg", mout_jpeg_p, E4X12_SRC_CAM1, 8, 1), | 395 | MUX(0, "mout_jpeg", mout_jpeg_p, E4X12_SRC_CAM1, 8, 1), |
457 | MUX(sclk_mpll, "sclk_mpll", mout_mpll_p, SRC_DMC, 12, 1), | 396 | MUX(CLK_SCLK_MPLL, "sclk_mpll", mout_mpll_p, SRC_DMC, 12, 1), |
458 | MUX(sclk_vpll, "sclk_vpll", mout_vpll_p, SRC_TOP0, 8, 1), | 397 | MUX(CLK_SCLK_VPLL, "sclk_vpll", mout_vpll_p, SRC_TOP0, 8, 1), |
459 | MUX(mout_core, "mout_core", mout_core_p4x12, SRC_CPU, 16, 1), | 398 | MUX(CLK_MOUT_CORE, "mout_core", mout_core_p4x12, SRC_CPU, 16, 1), |
460 | MUX(mout_fimc0, "mout_fimc0", group1_p4x12, SRC_CAM, 0, 4), | 399 | MUX(CLK_MOUT_FIMC0, "mout_fimc0", group1_p4x12, SRC_CAM, 0, 4), |
461 | MUX(mout_fimc1, "mout_fimc1", group1_p4x12, SRC_CAM, 4, 4), | 400 | MUX(CLK_MOUT_FIMC1, "mout_fimc1", group1_p4x12, SRC_CAM, 4, 4), |
462 | MUX(mout_fimc2, "mout_fimc2", group1_p4x12, SRC_CAM, 8, 4), | 401 | MUX(CLK_MOUT_FIMC2, "mout_fimc2", group1_p4x12, SRC_CAM, 8, 4), |
463 | MUX(mout_fimc3, "mout_fimc3", group1_p4x12, SRC_CAM, 12, 4), | 402 | MUX(CLK_MOUT_FIMC3, "mout_fimc3", group1_p4x12, SRC_CAM, 12, 4), |
464 | MUX(mout_cam0, "mout_cam0", group1_p4x12, SRC_CAM, 16, 4), | 403 | MUX(CLK_MOUT_CAM0, "mout_cam0", group1_p4x12, SRC_CAM, 16, 4), |
465 | MUX(mout_cam1, "mout_cam1", group1_p4x12, SRC_CAM, 20, 4), | 404 | MUX(CLK_MOUT_CAM1, "mout_cam1", group1_p4x12, SRC_CAM, 20, 4), |
466 | MUX(mout_csis0, "mout_csis0", group1_p4x12, SRC_CAM, 24, 4), | 405 | MUX(CLK_MOUT_CSIS0, "mout_csis0", group1_p4x12, SRC_CAM, 24, 4), |
467 | MUX(mout_csis1, "mout_csis1", group1_p4x12, SRC_CAM, 28, 4), | 406 | MUX(CLK_MOUT_CSIS1, "mout_csis1", group1_p4x12, SRC_CAM, 28, 4), |
468 | MUX(none, "mout_mfc0", sclk_ampll_p4x12, SRC_MFC, 0, 1), | 407 | MUX(0, "mout_mfc0", sclk_ampll_p4x12, SRC_MFC, 0, 1), |
469 | MUX_F(mout_g3d0, "mout_g3d0", sclk_ampll_p4x12, SRC_G3D, 0, 1, | 408 | MUX_F(CLK_MOUT_G3D0, "mout_g3d0", sclk_ampll_p4x12, SRC_G3D, 0, 1, |
470 | CLK_SET_RATE_PARENT, 0), | 409 | CLK_SET_RATE_PARENT, 0), |
471 | MUX(none, "mout_fimd0", group1_p4x12, SRC_LCD0, 0, 4), | 410 | MUX(0, "mout_fimd0", group1_p4x12, SRC_LCD0, 0, 4), |
472 | MUX(none, "mout_mipi0", group1_p4x12, SRC_LCD0, 12, 4), | 411 | MUX(0, "mout_mipi0", group1_p4x12, SRC_LCD0, 12, 4), |
473 | MUX(none, "mout_audio0", mout_audio0_p4x12, SRC_MAUDIO, 0, 4), | 412 | MUX(0, "mout_audio0", mout_audio0_p4x12, SRC_MAUDIO, 0, 4), |
474 | MUX(none, "mout_mmc0", group1_p4x12, SRC_FSYS, 0, 4), | 413 | MUX(0, "mout_mmc0", group1_p4x12, SRC_FSYS, 0, 4), |
475 | MUX(none, "mout_mmc1", group1_p4x12, SRC_FSYS, 4, 4), | 414 | MUX(0, "mout_mmc1", group1_p4x12, SRC_FSYS, 4, 4), |
476 | MUX(none, "mout_mmc2", group1_p4x12, SRC_FSYS, 8, 4), | 415 | MUX(0, "mout_mmc2", group1_p4x12, SRC_FSYS, 8, 4), |
477 | MUX(none, "mout_mmc3", group1_p4x12, SRC_FSYS, 12, 4), | 416 | MUX(0, "mout_mmc3", group1_p4x12, SRC_FSYS, 12, 4), |
478 | MUX(none, "mout_mmc4", group1_p4x12, SRC_FSYS, 16, 4), | 417 | MUX(0, "mout_mmc4", group1_p4x12, SRC_FSYS, 16, 4), |
479 | MUX(none, "mout_mipihsi", aclk_p4412, SRC_FSYS, 24, 1), | 418 | MUX(0, "mout_mipihsi", aclk_p4412, SRC_FSYS, 24, 1), |
480 | MUX(none, "mout_uart0", group1_p4x12, SRC_PERIL0, 0, 4), | 419 | MUX(0, "mout_uart0", group1_p4x12, SRC_PERIL0, 0, 4), |
481 | MUX(none, "mout_uart1", group1_p4x12, SRC_PERIL0, 4, 4), | 420 | MUX(0, "mout_uart1", group1_p4x12, SRC_PERIL0, 4, 4), |
482 | MUX(none, "mout_uart2", group1_p4x12, SRC_PERIL0, 8, 4), | 421 | MUX(0, "mout_uart2", group1_p4x12, SRC_PERIL0, 8, 4), |
483 | MUX(none, "mout_uart3", group1_p4x12, SRC_PERIL0, 12, 4), | 422 | MUX(0, "mout_uart3", group1_p4x12, SRC_PERIL0, 12, 4), |
484 | MUX(none, "mout_uart4", group1_p4x12, SRC_PERIL0, 16, 4), | 423 | MUX(0, "mout_uart4", group1_p4x12, SRC_PERIL0, 16, 4), |
485 | MUX(none, "mout_audio1", mout_audio1_p4x12, SRC_PERIL1, 0, 4), | 424 | MUX(0, "mout_audio1", mout_audio1_p4x12, SRC_PERIL1, 0, 4), |
486 | MUX(none, "mout_audio2", mout_audio2_p4x12, SRC_PERIL1, 4, 4), | 425 | MUX(0, "mout_audio2", mout_audio2_p4x12, SRC_PERIL1, 4, 4), |
487 | MUX(none, "mout_spi0", group1_p4x12, SRC_PERIL1, 16, 4), | 426 | MUX(0, "mout_spi0", group1_p4x12, SRC_PERIL1, 16, 4), |
488 | MUX(none, "mout_spi1", group1_p4x12, SRC_PERIL1, 20, 4), | 427 | MUX(0, "mout_spi1", group1_p4x12, SRC_PERIL1, 20, 4), |
489 | MUX(none, "mout_spi2", group1_p4x12, SRC_PERIL1, 24, 4), | 428 | MUX(0, "mout_spi2", group1_p4x12, SRC_PERIL1, 24, 4), |
490 | MUX(none, "mout_pwm_isp", group1_p4x12, E4X12_SRC_ISP, 0, 4), | 429 | MUX(0, "mout_pwm_isp", group1_p4x12, E4X12_SRC_ISP, 0, 4), |
491 | MUX(none, "mout_spi0_isp", group1_p4x12, E4X12_SRC_ISP, 4, 4), | 430 | MUX(0, "mout_spi0_isp", group1_p4x12, E4X12_SRC_ISP, 4, 4), |
492 | MUX(none, "mout_spi1_isp", group1_p4x12, E4X12_SRC_ISP, 8, 4), | 431 | MUX(0, "mout_spi1_isp", group1_p4x12, E4X12_SRC_ISP, 8, 4), |
493 | MUX(none, "mout_uart_isp", group1_p4x12, E4X12_SRC_ISP, 12, 4), | 432 | MUX(0, "mout_uart_isp", group1_p4x12, E4X12_SRC_ISP, 12, 4), |
494 | MUX(none, "mout_g2d0", sclk_ampll_p4210, SRC_DMC, 20, 1), | 433 | MUX(0, "mout_g2d0", sclk_ampll_p4210, SRC_DMC, 20, 1), |
495 | MUX(none, "mout_g2d1", sclk_evpll_p, SRC_DMC, 24, 1), | 434 | MUX(0, "mout_g2d1", sclk_evpll_p, SRC_DMC, 24, 1), |
496 | MUX(none, "mout_g2d", mout_g2d_p, SRC_DMC, 28, 1), | 435 | MUX(0, "mout_g2d", mout_g2d_p, SRC_DMC, 28, 1), |
497 | }; | 436 | }; |
498 | 437 | ||
499 | /* list of divider clocks supported in all exynos4 soc's */ | 438 | /* list of divider clocks supported in all exynos4 soc's */ |
500 | static struct samsung_div_clock exynos4_div_clks[] __initdata = { | 439 | static struct samsung_div_clock exynos4_div_clks[] __initdata = { |
501 | DIV(none, "div_core", "mout_core", DIV_CPU0, 0, 3), | 440 | DIV(0, "div_core", "mout_core", DIV_CPU0, 0, 3), |
502 | DIV(none, "div_core2", "div_core", DIV_CPU0, 28, 3), | 441 | DIV(0, "div_core2", "div_core", DIV_CPU0, 28, 3), |
503 | DIV(none, "div_fimc0", "mout_fimc0", DIV_CAM, 0, 4), | 442 | DIV(0, "div_fimc0", "mout_fimc0", DIV_CAM, 0, 4), |
504 | DIV(none, "div_fimc1", "mout_fimc1", DIV_CAM, 4, 4), | 443 | DIV(0, "div_fimc1", "mout_fimc1", DIV_CAM, 4, 4), |
505 | DIV(none, "div_fimc2", "mout_fimc2", DIV_CAM, 8, 4), | 444 | DIV(0, "div_fimc2", "mout_fimc2", DIV_CAM, 8, 4), |
506 | DIV(none, "div_fimc3", "mout_fimc3", DIV_CAM, 12, 4), | 445 | DIV(0, "div_fimc3", "mout_fimc3", DIV_CAM, 12, 4), |
507 | DIV(none, "div_cam0", "mout_cam0", DIV_CAM, 16, 4), | 446 | DIV(0, "div_cam0", "mout_cam0", DIV_CAM, 16, 4), |
508 | DIV(none, "div_cam1", "mout_cam1", DIV_CAM, 20, 4), | 447 | DIV(0, "div_cam1", "mout_cam1", DIV_CAM, 20, 4), |
509 | DIV(none, "div_csis0", "mout_csis0", DIV_CAM, 24, 4), | 448 | DIV(0, "div_csis0", "mout_csis0", DIV_CAM, 24, 4), |
510 | DIV(none, "div_csis1", "mout_csis1", DIV_CAM, 28, 4), | 449 | DIV(0, "div_csis1", "mout_csis1", DIV_CAM, 28, 4), |
511 | DIV(sclk_mfc, "sclk_mfc", "mout_mfc", DIV_MFC, 0, 4), | 450 | DIV(CLK_SCLK_MFC, "sclk_mfc", "mout_mfc", DIV_MFC, 0, 4), |
512 | DIV_F(none, "div_g3d", "mout_g3d", DIV_G3D, 0, 4, | 451 | DIV_F(0, "div_g3d", "mout_g3d", DIV_G3D, 0, 4, |
513 | CLK_SET_RATE_PARENT, 0), | 452 | CLK_SET_RATE_PARENT, 0), |
514 | DIV(none, "div_fimd0", "mout_fimd0", DIV_LCD0, 0, 4), | 453 | DIV(0, "div_fimd0", "mout_fimd0", DIV_LCD0, 0, 4), |
515 | DIV(none, "div_mipi0", "mout_mipi0", DIV_LCD0, 16, 4), | 454 | DIV(0, "div_mipi0", "mout_mipi0", DIV_LCD0, 16, 4), |
516 | DIV(none, "div_audio0", "mout_audio0", DIV_MAUDIO, 0, 4), | 455 | DIV(0, "div_audio0", "mout_audio0", DIV_MAUDIO, 0, 4), |
517 | DIV(sclk_pcm0, "sclk_pcm0", "sclk_audio0", DIV_MAUDIO, 4, 8), | 456 | DIV(CLK_SCLK_PCM0, "sclk_pcm0", "sclk_audio0", DIV_MAUDIO, 4, 8), |
518 | DIV(none, "div_mmc0", "mout_mmc0", DIV_FSYS1, 0, 4), | 457 | DIV(0, "div_mmc0", "mout_mmc0", DIV_FSYS1, 0, 4), |
519 | DIV(none, "div_mmc1", "mout_mmc1", DIV_FSYS1, 16, 4), | 458 | DIV(0, "div_mmc1", "mout_mmc1", DIV_FSYS1, 16, 4), |
520 | DIV(none, "div_mmc2", "mout_mmc2", DIV_FSYS2, 0, 4), | 459 | DIV(0, "div_mmc2", "mout_mmc2", DIV_FSYS2, 0, 4), |
521 | DIV(none, "div_mmc3", "mout_mmc3", DIV_FSYS2, 16, 4), | 460 | DIV(0, "div_mmc3", "mout_mmc3", DIV_FSYS2, 16, 4), |
522 | DIV(sclk_pixel, "sclk_pixel", "sclk_vpll", DIV_TV, 0, 4), | 461 | DIV(CLK_SCLK_PIXEL, "sclk_pixel", "sclk_vpll", DIV_TV, 0, 4), |
523 | DIV(aclk100, "aclk100", "mout_aclk100", DIV_TOP, 4, 4), | 462 | DIV(CLK_ACLK100, "aclk100", "mout_aclk100", DIV_TOP, 4, 4), |
524 | DIV(aclk160, "aclk160", "mout_aclk160", DIV_TOP, 8, 3), | 463 | DIV(CLK_ACLK160, "aclk160", "mout_aclk160", DIV_TOP, 8, 3), |
525 | DIV(aclk133, "aclk133", "mout_aclk133", DIV_TOP, 12, 3), | 464 | DIV(CLK_ACLK133, "aclk133", "mout_aclk133", DIV_TOP, 12, 3), |
526 | DIV(none, "div_onenand", "mout_onenand1", DIV_TOP, 16, 3), | 465 | DIV(0, "div_onenand", "mout_onenand1", DIV_TOP, 16, 3), |
527 | DIV(sclk_slimbus, "sclk_slimbus", "sclk_epll", DIV_PERIL3, 4, 4), | 466 | DIV(CLK_SCLK_SLIMBUS, "sclk_slimbus", "sclk_epll", DIV_PERIL3, 4, 4), |
528 | DIV(sclk_pcm1, "sclk_pcm1", "sclk_audio1", DIV_PERIL4, 4, 8), | 467 | DIV(CLK_SCLK_PCM1, "sclk_pcm1", "sclk_audio1", DIV_PERIL4, 4, 8), |
529 | DIV(sclk_pcm2, "sclk_pcm2", "sclk_audio2", DIV_PERIL4, 20, 8), | 468 | DIV(CLK_SCLK_PCM2, "sclk_pcm2", "sclk_audio2", DIV_PERIL4, 20, 8), |
530 | DIV(sclk_i2s1, "sclk_i2s1", "sclk_audio1", DIV_PERIL5, 0, 6), | 469 | DIV(CLK_SCLK_I2S1, "sclk_i2s1", "sclk_audio1", DIV_PERIL5, 0, 6), |
531 | DIV(sclk_i2s2, "sclk_i2s2", "sclk_audio2", DIV_PERIL5, 8, 6), | 470 | DIV(CLK_SCLK_I2S2, "sclk_i2s2", "sclk_audio2", DIV_PERIL5, 8, 6), |
532 | DIV(none, "div_mmc4", "mout_mmc4", DIV_FSYS3, 0, 4), | 471 | DIV(0, "div_mmc4", "mout_mmc4", DIV_FSYS3, 0, 4), |
533 | DIV(none, "div_mmc_pre4", "div_mmc4", DIV_FSYS3, 8, 8), | 472 | DIV(0, "div_mmc_pre4", "div_mmc4", DIV_FSYS3, 8, 8), |
534 | DIV(none, "div_uart0", "mout_uart0", DIV_PERIL0, 0, 4), | 473 | DIV(0, "div_uart0", "mout_uart0", DIV_PERIL0, 0, 4), |
535 | DIV(none, "div_uart1", "mout_uart1", DIV_PERIL0, 4, 4), | 474 | DIV(0, "div_uart1", "mout_uart1", DIV_PERIL0, 4, 4), |
536 | DIV(none, "div_uart2", "mout_uart2", DIV_PERIL0, 8, 4), | 475 | DIV(0, "div_uart2", "mout_uart2", DIV_PERIL0, 8, 4), |
537 | DIV(none, "div_uart3", "mout_uart3", DIV_PERIL0, 12, 4), | 476 | DIV(0, "div_uart3", "mout_uart3", DIV_PERIL0, 12, 4), |
538 | DIV(none, "div_uart4", "mout_uart4", DIV_PERIL0, 16, 4), | 477 | DIV(0, "div_uart4", "mout_uart4", DIV_PERIL0, 16, 4), |
539 | DIV(none, "div_spi0", "mout_spi0", DIV_PERIL1, 0, 4), | 478 | DIV(0, "div_spi0", "mout_spi0", DIV_PERIL1, 0, 4), |
540 | DIV(none, "div_spi_pre0", "div_spi0", DIV_PERIL1, 8, 8), | 479 | DIV(0, "div_spi_pre0", "div_spi0", DIV_PERIL1, 8, 8), |
541 | DIV(none, "div_spi1", "mout_spi1", DIV_PERIL1, 16, 4), | 480 | DIV(0, "div_spi1", "mout_spi1", DIV_PERIL1, 16, 4), |
542 | DIV(none, "div_spi_pre1", "div_spi1", DIV_PERIL1, 24, 8), | 481 | DIV(0, "div_spi_pre1", "div_spi1", DIV_PERIL1, 24, 8), |
543 | DIV(none, "div_spi2", "mout_spi2", DIV_PERIL2, 0, 4), | 482 | DIV(0, "div_spi2", "mout_spi2", DIV_PERIL2, 0, 4), |
544 | DIV(none, "div_spi_pre2", "div_spi2", DIV_PERIL2, 8, 8), | 483 | DIV(0, "div_spi_pre2", "div_spi2", DIV_PERIL2, 8, 8), |
545 | DIV(none, "div_audio1", "mout_audio1", DIV_PERIL4, 0, 4), | 484 | DIV(0, "div_audio1", "mout_audio1", DIV_PERIL4, 0, 4), |
546 | DIV(none, "div_audio2", "mout_audio2", DIV_PERIL4, 16, 4), | 485 | DIV(0, "div_audio2", "mout_audio2", DIV_PERIL4, 16, 4), |
547 | DIV(arm_clk, "arm_clk", "div_core2", DIV_CPU0, 28, 3), | 486 | DIV(CLK_ARM_CLK, "arm_clk", "div_core2", DIV_CPU0, 28, 3), |
548 | DIV(sclk_apll, "sclk_apll", "mout_apll", DIV_CPU0, 24, 3), | 487 | DIV(CLK_SCLK_APLL, "sclk_apll", "mout_apll", DIV_CPU0, 24, 3), |
549 | DIV_F(none, "div_mipi_pre0", "div_mipi0", DIV_LCD0, 20, 4, | 488 | DIV_F(0, "div_mipi_pre0", "div_mipi0", DIV_LCD0, 20, 4, |
550 | CLK_SET_RATE_PARENT, 0), | 489 | CLK_SET_RATE_PARENT, 0), |
551 | DIV_F(none, "div_mmc_pre0", "div_mmc0", DIV_FSYS1, 8, 8, | 490 | DIV_F(0, "div_mmc_pre0", "div_mmc0", DIV_FSYS1, 8, 8, |
552 | CLK_SET_RATE_PARENT, 0), | 491 | CLK_SET_RATE_PARENT, 0), |
553 | DIV_F(none, "div_mmc_pre1", "div_mmc1", DIV_FSYS1, 24, 8, | 492 | DIV_F(0, "div_mmc_pre1", "div_mmc1", DIV_FSYS1, 24, 8, |
554 | CLK_SET_RATE_PARENT, 0), | 493 | CLK_SET_RATE_PARENT, 0), |
555 | DIV_F(none, "div_mmc_pre2", "div_mmc2", DIV_FSYS2, 8, 8, | 494 | DIV_F(0, "div_mmc_pre2", "div_mmc2", DIV_FSYS2, 8, 8, |
556 | CLK_SET_RATE_PARENT, 0), | 495 | CLK_SET_RATE_PARENT, 0), |
557 | DIV_F(none, "div_mmc_pre3", "div_mmc3", DIV_FSYS2, 24, 8, | 496 | DIV_F(0, "div_mmc_pre3", "div_mmc3", DIV_FSYS2, 24, 8, |
558 | CLK_SET_RATE_PARENT, 0), | 497 | CLK_SET_RATE_PARENT, 0), |
559 | }; | 498 | }; |
560 | 499 | ||
561 | /* list of divider clocks supported in exynos4210 soc */ | 500 | /* list of divider clocks supported in exynos4210 soc */ |
562 | static struct samsung_div_clock exynos4210_div_clks[] __initdata = { | 501 | static struct samsung_div_clock exynos4210_div_clks[] __initdata = { |
563 | DIV(aclk200, "aclk200", "mout_aclk200", DIV_TOP, 0, 3), | 502 | DIV(CLK_ACLK200, "aclk200", "mout_aclk200", DIV_TOP, 0, 3), |
564 | DIV(sclk_fimg2d, "sclk_fimg2d", "mout_g2d", DIV_IMAGE, 0, 4), | 503 | DIV(CLK_SCLK_FIMG2D, "sclk_fimg2d", "mout_g2d", DIV_IMAGE, 0, 4), |
565 | DIV(none, "div_fimd1", "mout_fimd1", E4210_DIV_LCD1, 0, 4), | 504 | DIV(0, "div_fimd1", "mout_fimd1", E4210_DIV_LCD1, 0, 4), |
566 | DIV(none, "div_mipi1", "mout_mipi1", E4210_DIV_LCD1, 16, 4), | 505 | DIV(0, "div_mipi1", "mout_mipi1", E4210_DIV_LCD1, 16, 4), |
567 | DIV(none, "div_sata", "mout_sata", DIV_FSYS0, 20, 4), | 506 | DIV(0, "div_sata", "mout_sata", DIV_FSYS0, 20, 4), |
568 | DIV_F(none, "div_mipi_pre1", "div_mipi1", E4210_DIV_LCD1, 20, 4, | 507 | DIV_F(0, "div_mipi_pre1", "div_mipi1", E4210_DIV_LCD1, 20, 4, |
569 | CLK_SET_RATE_PARENT, 0), | 508 | CLK_SET_RATE_PARENT, 0), |
570 | }; | 509 | }; |
571 | 510 | ||
572 | /* list of divider clocks supported in exynos4x12 soc */ | 511 | /* list of divider clocks supported in exynos4x12 soc */ |
573 | static struct samsung_div_clock exynos4x12_div_clks[] __initdata = { | 512 | static struct samsung_div_clock exynos4x12_div_clks[] __initdata = { |
574 | DIV(none, "div_mdnie0", "mout_mdnie0", DIV_LCD0, 4, 4), | 513 | DIV(0, "div_mdnie0", "mout_mdnie0", DIV_LCD0, 4, 4), |
575 | DIV(none, "div_mdnie_pwm0", "mout_mdnie_pwm0", DIV_LCD0, 8, 4), | 514 | DIV(0, "div_mdnie_pwm0", "mout_mdnie_pwm0", DIV_LCD0, 8, 4), |
576 | DIV(none, "div_mdnie_pwm_pre0", "div_mdnie_pwm0", DIV_LCD0, 12, 4), | 515 | DIV(0, "div_mdnie_pwm_pre0", "div_mdnie_pwm0", DIV_LCD0, 12, 4), |
577 | DIV(none, "div_mipihsi", "mout_mipihsi", DIV_FSYS0, 20, 4), | 516 | DIV(0, "div_mipihsi", "mout_mipihsi", DIV_FSYS0, 20, 4), |
578 | DIV(none, "div_jpeg", "mout_jpeg", E4X12_DIV_CAM1, 0, 4), | 517 | DIV(0, "div_jpeg", "mout_jpeg", E4X12_DIV_CAM1, 0, 4), |
579 | DIV(div_aclk200, "div_aclk200", "mout_aclk200", DIV_TOP, 0, 3), | 518 | DIV(CLK_DIV_ACLK200, "div_aclk200", "mout_aclk200", DIV_TOP, 0, 3), |
580 | DIV(none, "div_aclk266_gps", "mout_aclk266_gps", DIV_TOP, 20, 3), | 519 | DIV(0, "div_aclk266_gps", "mout_aclk266_gps", DIV_TOP, 20, 3), |
581 | DIV(div_aclk400_mcuisp, "div_aclk400_mcuisp", "mout_aclk400_mcuisp", | 520 | DIV(CLK_DIV_ACLK400_MCUISP, "div_aclk400_mcuisp", "mout_aclk400_mcuisp", |
582 | DIV_TOP, 24, 3), | 521 | DIV_TOP, 24, 3), |
583 | DIV(none, "div_pwm_isp", "mout_pwm_isp", E4X12_DIV_ISP, 0, 4), | 522 | DIV(0, "div_pwm_isp", "mout_pwm_isp", E4X12_DIV_ISP, 0, 4), |
584 | DIV(none, "div_spi0_isp", "mout_spi0_isp", E4X12_DIV_ISP, 4, 4), | 523 | DIV(0, "div_spi0_isp", "mout_spi0_isp", E4X12_DIV_ISP, 4, 4), |
585 | DIV(none, "div_spi0_isp_pre", "div_spi0_isp", E4X12_DIV_ISP, 8, 8), | 524 | DIV(0, "div_spi0_isp_pre", "div_spi0_isp", E4X12_DIV_ISP, 8, 8), |
586 | DIV(none, "div_spi1_isp", "mout_spi1_isp", E4X12_DIV_ISP, 16, 4), | 525 | DIV(0, "div_spi1_isp", "mout_spi1_isp", E4X12_DIV_ISP, 16, 4), |
587 | DIV(none, "div_spi1_isp_pre", "div_spi1_isp", E4X12_DIV_ISP, 20, 8), | 526 | DIV(0, "div_spi1_isp_pre", "div_spi1_isp", E4X12_DIV_ISP, 20, 8), |
588 | DIV(none, "div_uart_isp", "mout_uart_isp", E4X12_DIV_ISP, 28, 4), | 527 | DIV(0, "div_uart_isp", "mout_uart_isp", E4X12_DIV_ISP, 28, 4), |
589 | DIV_F(div_isp0, "div_isp0", "aclk200", E4X12_DIV_ISP0, 0, 3, | 528 | DIV_F(CLK_DIV_ISP0, "div_isp0", "aclk200", E4X12_DIV_ISP0, 0, 3, |
590 | CLK_GET_RATE_NOCACHE, 0), | 529 | CLK_GET_RATE_NOCACHE, 0), |
591 | DIV_F(div_isp1, "div_isp1", "aclk200", E4X12_DIV_ISP0, 4, 3, | 530 | DIV_F(CLK_DIV_ISP1, "div_isp1", "aclk200", E4X12_DIV_ISP0, 4, 3, |
592 | CLK_GET_RATE_NOCACHE, 0), | 531 | CLK_GET_RATE_NOCACHE, 0), |
593 | DIV(none, "div_mpwm", "div_isp1", E4X12_DIV_ISP1, 0, 3), | 532 | DIV(0, "div_mpwm", "div_isp1", E4X12_DIV_ISP1, 0, 3), |
594 | DIV_F(div_mcuisp0, "div_mcuisp0", "aclk400_mcuisp", E4X12_DIV_ISP1, | 533 | DIV_F(CLK_DIV_MCUISP0, "div_mcuisp0", "aclk400_mcuisp", E4X12_DIV_ISP1, |
595 | 4, 3, CLK_GET_RATE_NOCACHE, 0), | 534 | 4, 3, CLK_GET_RATE_NOCACHE, 0), |
596 | DIV_F(div_mcuisp1, "div_mcuisp1", "div_mcuisp0", E4X12_DIV_ISP1, | 535 | DIV_F(CLK_DIV_MCUISP1, "div_mcuisp1", "div_mcuisp0", E4X12_DIV_ISP1, |
597 | 8, 3, CLK_GET_RATE_NOCACHE, 0), | 536 | 8, 3, CLK_GET_RATE_NOCACHE, 0), |
598 | DIV(sclk_fimg2d, "sclk_fimg2d", "mout_g2d", DIV_DMC1, 0, 4), | 537 | DIV(CLK_SCLK_FIMG2D, "sclk_fimg2d", "mout_g2d", DIV_DMC1, 0, 4), |
599 | }; | 538 | }; |
600 | 539 | ||
601 | /* list of gate clocks supported in all exynos4 soc's */ | 540 | /* list of gate clocks supported in all exynos4 soc's */ |
@@ -605,333 +544,341 @@ static struct samsung_gate_clock exynos4_gate_clks[] __initdata = { | |||
605 | * the device name and clock alias names specified below for some | 544 | * the device name and clock alias names specified below for some |
606 | * of the clocks can be removed. | 545 | * of the clocks can be removed. |
607 | */ | 546 | */ |
608 | GATE(sclk_hdmi, "sclk_hdmi", "mout_hdmi", SRC_MASK_TV, 0, 0, 0), | 547 | GATE(CLK_SCLK_HDMI, "sclk_hdmi", "mout_hdmi", SRC_MASK_TV, 0, 0, 0), |
609 | GATE(sclk_spdif, "sclk_spdif", "mout_spdif", SRC_MASK_PERIL1, 8, 0, 0), | 548 | GATE(CLK_SCLK_SPDIF, "sclk_spdif", "mout_spdif", SRC_MASK_PERIL1, 8, 0, |
610 | GATE(jpeg, "jpeg", "aclk160", GATE_IP_CAM, 6, 0, 0), | 549 | 0), |
611 | GATE(mie0, "mie0", "aclk160", GATE_IP_LCD0, 1, 0, 0), | 550 | GATE(CLK_JPEG, "jpeg", "aclk160", GATE_IP_CAM, 6, 0, 0), |
612 | GATE(dsim0, "dsim0", "aclk160", GATE_IP_LCD0, 3, 0, 0), | 551 | GATE(CLK_MIE0, "mie0", "aclk160", GATE_IP_LCD0, 1, 0, 0), |
613 | GATE(fimd1, "fimd1", "aclk160", E4210_GATE_IP_LCD1, 0, 0, 0), | 552 | GATE(CLK_DSIM0, "dsim0", "aclk160", GATE_IP_LCD0, 3, 0, 0), |
614 | GATE(mie1, "mie1", "aclk160", E4210_GATE_IP_LCD1, 1, 0, 0), | 553 | GATE(CLK_FIMD1, "fimd1", "aclk160", E4210_GATE_IP_LCD1, 0, 0, 0), |
615 | GATE(dsim1, "dsim1", "aclk160", E4210_GATE_IP_LCD1, 3, 0, 0), | 554 | GATE(CLK_MIE1, "mie1", "aclk160", E4210_GATE_IP_LCD1, 1, 0, 0), |
616 | GATE(smmu_fimd1, "smmu_fimd1", "aclk160", E4210_GATE_IP_LCD1, 4, 0, 0), | 555 | GATE(CLK_DSIM1, "dsim1", "aclk160", E4210_GATE_IP_LCD1, 3, 0, 0), |
617 | GATE(tsi, "tsi", "aclk133", GATE_IP_FSYS, 4, 0, 0), | 556 | GATE(CLK_SMMU_FIMD1, "smmu_fimd1", "aclk160", E4210_GATE_IP_LCD1, 4, 0, |
618 | GATE(sromc, "sromc", "aclk133", GATE_IP_FSYS, 11, 0, 0), | 557 | 0), |
619 | GATE(sclk_g3d, "sclk_g3d", "div_g3d", GATE_IP_G3D, 0, | 558 | GATE(CLK_TSI, "tsi", "aclk133", GATE_IP_FSYS, 4, 0, 0), |
559 | GATE(CLK_SROMC, "sromc", "aclk133", GATE_IP_FSYS, 11, 0, 0), | ||
560 | GATE(CLK_SCLK_G3D, "sclk_g3d", "div_g3d", GATE_IP_G3D, 0, | ||
620 | CLK_SET_RATE_PARENT, 0), | 561 | CLK_SET_RATE_PARENT, 0), |
621 | GATE(usb_device, "usb_device", "aclk133", GATE_IP_FSYS, 13, 0, 0), | 562 | GATE(CLK_USB_DEVICE, "usb_device", "aclk133", GATE_IP_FSYS, 13, 0, 0), |
622 | GATE(onenand, "onenand", "aclk133", GATE_IP_FSYS, 15, 0, 0), | 563 | GATE(CLK_ONENAND, "onenand", "aclk133", GATE_IP_FSYS, 15, 0, 0), |
623 | GATE(nfcon, "nfcon", "aclk133", GATE_IP_FSYS, 16, 0, 0), | 564 | GATE(CLK_NFCON, "nfcon", "aclk133", GATE_IP_FSYS, 16, 0, 0), |
624 | GATE(gps, "gps", "aclk133", GATE_IP_GPS, 0, 0, 0), | 565 | GATE(CLK_GPS, "gps", "aclk133", GATE_IP_GPS, 0, 0, 0), |
625 | GATE(smmu_gps, "smmu_gps", "aclk133", GATE_IP_GPS, 1, 0, 0), | 566 | GATE(CLK_SMMU_GPS, "smmu_gps", "aclk133", GATE_IP_GPS, 1, 0, 0), |
626 | GATE(slimbus, "slimbus", "aclk100", GATE_IP_PERIL, 25, 0, 0), | 567 | GATE(CLK_SLIMBUS, "slimbus", "aclk100", GATE_IP_PERIL, 25, 0, 0), |
627 | GATE(sclk_cam0, "sclk_cam0", "div_cam0", GATE_SCLK_CAM, 4, | 568 | GATE(CLK_SCLK_CAM0, "sclk_cam0", "div_cam0", GATE_SCLK_CAM, 4, |
628 | CLK_SET_RATE_PARENT, 0), | 569 | CLK_SET_RATE_PARENT, 0), |
629 | GATE(sclk_cam1, "sclk_cam1", "div_cam1", GATE_SCLK_CAM, 5, | 570 | GATE(CLK_SCLK_CAM1, "sclk_cam1", "div_cam1", GATE_SCLK_CAM, 5, |
630 | CLK_SET_RATE_PARENT, 0), | 571 | CLK_SET_RATE_PARENT, 0), |
631 | GATE(sclk_mipi0, "sclk_mipi0", "div_mipi_pre0", | 572 | GATE(CLK_SCLK_MIPI0, "sclk_mipi0", "div_mipi_pre0", |
632 | SRC_MASK_LCD0, 12, CLK_SET_RATE_PARENT, 0), | 573 | SRC_MASK_LCD0, 12, CLK_SET_RATE_PARENT, 0), |
633 | GATE(sclk_audio0, "sclk_audio0", "div_audio0", SRC_MASK_MAUDIO, 0, | 574 | GATE(CLK_SCLK_AUDIO0, "sclk_audio0", "div_audio0", SRC_MASK_MAUDIO, 0, |
634 | CLK_SET_RATE_PARENT, 0), | 575 | CLK_SET_RATE_PARENT, 0), |
635 | GATE(sclk_audio1, "sclk_audio1", "div_audio1", SRC_MASK_PERIL1, 0, | 576 | GATE(CLK_SCLK_AUDIO1, "sclk_audio1", "div_audio1", SRC_MASK_PERIL1, 0, |
636 | CLK_SET_RATE_PARENT, 0), | 577 | CLK_SET_RATE_PARENT, 0), |
637 | GATE(vp, "vp", "aclk160", GATE_IP_TV, 0, 0, 0), | 578 | GATE(CLK_VP, "vp", "aclk160", GATE_IP_TV, 0, 0, 0), |
638 | GATE(mixer, "mixer", "aclk160", GATE_IP_TV, 1, 0, 0), | 579 | GATE(CLK_MIXER, "mixer", "aclk160", GATE_IP_TV, 1, 0, 0), |
639 | GATE(hdmi, "hdmi", "aclk160", GATE_IP_TV, 3, 0, 0), | 580 | GATE(CLK_HDMI, "hdmi", "aclk160", GATE_IP_TV, 3, 0, 0), |
640 | GATE(pwm, "pwm", "aclk100", GATE_IP_PERIL, 24, 0, 0), | 581 | GATE(CLK_PWM, "pwm", "aclk100", GATE_IP_PERIL, 24, 0, 0), |
641 | GATE(sdmmc4, "sdmmc4", "aclk133", GATE_IP_FSYS, 9, 0, 0), | 582 | GATE(CLK_SDMMC4, "sdmmc4", "aclk133", GATE_IP_FSYS, 9, 0, 0), |
642 | GATE(usb_host, "usb_host", "aclk133", GATE_IP_FSYS, 12, 0, 0), | 583 | GATE(CLK_USB_HOST, "usb_host", "aclk133", GATE_IP_FSYS, 12, 0, 0), |
643 | GATE(sclk_fimc0, "sclk_fimc0", "div_fimc0", SRC_MASK_CAM, 0, | 584 | GATE(CLK_SCLK_FIMC0, "sclk_fimc0", "div_fimc0", SRC_MASK_CAM, 0, |
644 | CLK_SET_RATE_PARENT, 0), | 585 | CLK_SET_RATE_PARENT, 0), |
645 | GATE(sclk_fimc1, "sclk_fimc1", "div_fimc1", SRC_MASK_CAM, 4, | 586 | GATE(CLK_SCLK_FIMC1, "sclk_fimc1", "div_fimc1", SRC_MASK_CAM, 4, |
646 | CLK_SET_RATE_PARENT, 0), | 587 | CLK_SET_RATE_PARENT, 0), |
647 | GATE(sclk_fimc2, "sclk_fimc2", "div_fimc2", SRC_MASK_CAM, 8, | 588 | GATE(CLK_SCLK_FIMC2, "sclk_fimc2", "div_fimc2", SRC_MASK_CAM, 8, |
648 | CLK_SET_RATE_PARENT, 0), | 589 | CLK_SET_RATE_PARENT, 0), |
649 | GATE(sclk_fimc3, "sclk_fimc3", "div_fimc3", SRC_MASK_CAM, 12, | 590 | GATE(CLK_SCLK_FIMC3, "sclk_fimc3", "div_fimc3", SRC_MASK_CAM, 12, |
650 | CLK_SET_RATE_PARENT, 0), | 591 | CLK_SET_RATE_PARENT, 0), |
651 | GATE(sclk_csis0, "sclk_csis0", "div_csis0", SRC_MASK_CAM, 24, | 592 | GATE(CLK_SCLK_CSIS0, "sclk_csis0", "div_csis0", SRC_MASK_CAM, 24, |
652 | CLK_SET_RATE_PARENT, 0), | 593 | CLK_SET_RATE_PARENT, 0), |
653 | GATE(sclk_csis1, "sclk_csis1", "div_csis1", SRC_MASK_CAM, 28, | 594 | GATE(CLK_SCLK_CSIS1, "sclk_csis1", "div_csis1", SRC_MASK_CAM, 28, |
654 | CLK_SET_RATE_PARENT, 0), | 595 | CLK_SET_RATE_PARENT, 0), |
655 | GATE(sclk_fimd0, "sclk_fimd0", "div_fimd0", SRC_MASK_LCD0, 0, | 596 | GATE(CLK_SCLK_FIMD0, "sclk_fimd0", "div_fimd0", SRC_MASK_LCD0, 0, |
656 | CLK_SET_RATE_PARENT, 0), | 597 | CLK_SET_RATE_PARENT, 0), |
657 | GATE(sclk_mmc0, "sclk_mmc0", "div_mmc_pre0", SRC_MASK_FSYS, 0, | 598 | GATE(CLK_SCLK_MMC0, "sclk_mmc0", "div_mmc_pre0", SRC_MASK_FSYS, 0, |
658 | CLK_SET_RATE_PARENT, 0), | 599 | CLK_SET_RATE_PARENT, 0), |
659 | GATE(sclk_mmc1, "sclk_mmc1", "div_mmc_pre1", SRC_MASK_FSYS, 4, | 600 | GATE(CLK_SCLK_MMC1, "sclk_mmc1", "div_mmc_pre1", SRC_MASK_FSYS, 4, |
660 | CLK_SET_RATE_PARENT, 0), | 601 | CLK_SET_RATE_PARENT, 0), |
661 | GATE(sclk_mmc2, "sclk_mmc2", "div_mmc_pre2", SRC_MASK_FSYS, 8, | 602 | GATE(CLK_SCLK_MMC2, "sclk_mmc2", "div_mmc_pre2", SRC_MASK_FSYS, 8, |
662 | CLK_SET_RATE_PARENT, 0), | 603 | CLK_SET_RATE_PARENT, 0), |
663 | GATE(sclk_mmc3, "sclk_mmc3", "div_mmc_pre3", SRC_MASK_FSYS, 12, | 604 | GATE(CLK_SCLK_MMC3, "sclk_mmc3", "div_mmc_pre3", SRC_MASK_FSYS, 12, |
664 | CLK_SET_RATE_PARENT, 0), | 605 | CLK_SET_RATE_PARENT, 0), |
665 | GATE(sclk_mmc4, "sclk_mmc4", "div_mmc_pre4", SRC_MASK_FSYS, 16, | 606 | GATE(CLK_SCLK_MMC4, "sclk_mmc4", "div_mmc_pre4", SRC_MASK_FSYS, 16, |
666 | CLK_SET_RATE_PARENT, 0), | 607 | CLK_SET_RATE_PARENT, 0), |
667 | GATE(sclk_uart0, "uclk0", "div_uart0", SRC_MASK_PERIL0, 0, | 608 | GATE(CLK_SCLK_UART0, "uclk0", "div_uart0", SRC_MASK_PERIL0, 0, |
668 | CLK_SET_RATE_PARENT, 0), | 609 | CLK_SET_RATE_PARENT, 0), |
669 | GATE(sclk_uart1, "uclk1", "div_uart1", SRC_MASK_PERIL0, 4, | 610 | GATE(CLK_SCLK_UART1, "uclk1", "div_uart1", SRC_MASK_PERIL0, 4, |
670 | CLK_SET_RATE_PARENT, 0), | 611 | CLK_SET_RATE_PARENT, 0), |
671 | GATE(sclk_uart2, "uclk2", "div_uart2", SRC_MASK_PERIL0, 8, | 612 | GATE(CLK_SCLK_UART2, "uclk2", "div_uart2", SRC_MASK_PERIL0, 8, |
672 | CLK_SET_RATE_PARENT, 0), | 613 | CLK_SET_RATE_PARENT, 0), |
673 | GATE(sclk_uart3, "uclk3", "div_uart3", SRC_MASK_PERIL0, 12, | 614 | GATE(CLK_SCLK_UART3, "uclk3", "div_uart3", SRC_MASK_PERIL0, 12, |
674 | CLK_SET_RATE_PARENT, 0), | 615 | CLK_SET_RATE_PARENT, 0), |
675 | GATE(sclk_uart4, "uclk4", "div_uart4", SRC_MASK_PERIL0, 16, | 616 | GATE(CLK_SCLK_UART4, "uclk4", "div_uart4", SRC_MASK_PERIL0, 16, |
676 | CLK_SET_RATE_PARENT, 0), | 617 | CLK_SET_RATE_PARENT, 0), |
677 | GATE(sclk_audio2, "sclk_audio2", "div_audio2", SRC_MASK_PERIL1, 4, | 618 | GATE(CLK_SCLK_AUDIO2, "sclk_audio2", "div_audio2", SRC_MASK_PERIL1, 4, |
678 | CLK_SET_RATE_PARENT, 0), | 619 | CLK_SET_RATE_PARENT, 0), |
679 | GATE(sclk_spi0, "sclk_spi0", "div_spi_pre0", SRC_MASK_PERIL1, 16, | 620 | GATE(CLK_SCLK_SPI0, "sclk_spi0", "div_spi_pre0", SRC_MASK_PERIL1, 16, |
680 | CLK_SET_RATE_PARENT, 0), | 621 | CLK_SET_RATE_PARENT, 0), |
681 | GATE(sclk_spi1, "sclk_spi1", "div_spi_pre1", SRC_MASK_PERIL1, 20, | 622 | GATE(CLK_SCLK_SPI1, "sclk_spi1", "div_spi_pre1", SRC_MASK_PERIL1, 20, |
682 | CLK_SET_RATE_PARENT, 0), | 623 | CLK_SET_RATE_PARENT, 0), |
683 | GATE(sclk_spi2, "sclk_spi2", "div_spi_pre2", SRC_MASK_PERIL1, 24, | 624 | GATE(CLK_SCLK_SPI2, "sclk_spi2", "div_spi_pre2", SRC_MASK_PERIL1, 24, |
684 | CLK_SET_RATE_PARENT, 0), | 625 | CLK_SET_RATE_PARENT, 0), |
685 | GATE(fimc0, "fimc0", "aclk160", GATE_IP_CAM, 0, | 626 | GATE(CLK_FIMC0, "fimc0", "aclk160", GATE_IP_CAM, 0, |
686 | 0, 0), | 627 | 0, 0), |
687 | GATE(fimc1, "fimc1", "aclk160", GATE_IP_CAM, 1, | 628 | GATE(CLK_FIMC1, "fimc1", "aclk160", GATE_IP_CAM, 1, |
688 | 0, 0), | 629 | 0, 0), |
689 | GATE(fimc2, "fimc2", "aclk160", GATE_IP_CAM, 2, | 630 | GATE(CLK_FIMC2, "fimc2", "aclk160", GATE_IP_CAM, 2, |
690 | 0, 0), | 631 | 0, 0), |
691 | GATE(fimc3, "fimc3", "aclk160", GATE_IP_CAM, 3, | 632 | GATE(CLK_FIMC3, "fimc3", "aclk160", GATE_IP_CAM, 3, |
692 | 0, 0), | 633 | 0, 0), |
693 | GATE(csis0, "csis0", "aclk160", GATE_IP_CAM, 4, | 634 | GATE(CLK_CSIS0, "csis0", "aclk160", GATE_IP_CAM, 4, |
694 | 0, 0), | 635 | 0, 0), |
695 | GATE(csis1, "csis1", "aclk160", GATE_IP_CAM, 5, | 636 | GATE(CLK_CSIS1, "csis1", "aclk160", GATE_IP_CAM, 5, |
696 | 0, 0), | 637 | 0, 0), |
697 | GATE(smmu_fimc0, "smmu_fimc0", "aclk160", GATE_IP_CAM, 7, | 638 | GATE(CLK_SMMU_FIMC0, "smmu_fimc0", "aclk160", GATE_IP_CAM, 7, |
698 | 0, 0), | 639 | 0, 0), |
699 | GATE(smmu_fimc1, "smmu_fimc1", "aclk160", GATE_IP_CAM, 8, | 640 | GATE(CLK_SMMU_FIMC1, "smmu_fimc1", "aclk160", GATE_IP_CAM, 8, |
700 | 0, 0), | 641 | 0, 0), |
701 | GATE(smmu_fimc2, "smmu_fimc2", "aclk160", GATE_IP_CAM, 9, | 642 | GATE(CLK_SMMU_FIMC2, "smmu_fimc2", "aclk160", GATE_IP_CAM, 9, |
702 | 0, 0), | 643 | 0, 0), |
703 | GATE(smmu_fimc3, "smmu_fimc3", "aclk160", GATE_IP_CAM, 10, | 644 | GATE(CLK_SMMU_FIMC3, "smmu_fimc3", "aclk160", GATE_IP_CAM, 10, |
704 | 0, 0), | 645 | 0, 0), |
705 | GATE(smmu_jpeg, "smmu_jpeg", "aclk160", GATE_IP_CAM, 11, | 646 | GATE(CLK_SMMU_JPEG, "smmu_jpeg", "aclk160", GATE_IP_CAM, 11, |
706 | 0, 0), | 647 | 0, 0), |
707 | GATE(pixelasyncm0, "pxl_async0", "aclk160", GATE_IP_CAM, 17, 0, 0), | 648 | GATE(CLK_PIXELASYNCM0, "pxl_async0", "aclk160", GATE_IP_CAM, 17, 0, 0), |
708 | GATE(pixelasyncm1, "pxl_async1", "aclk160", GATE_IP_CAM, 18, 0, 0), | 649 | GATE(CLK_PIXELASYNCM1, "pxl_async1", "aclk160", GATE_IP_CAM, 18, 0, 0), |
709 | GATE(smmu_tv, "smmu_tv", "aclk160", GATE_IP_TV, 4, | 650 | GATE(CLK_SMMU_TV, "smmu_tv", "aclk160", GATE_IP_TV, 4, |
710 | 0, 0), | 651 | 0, 0), |
711 | GATE(mfc, "mfc", "aclk100", GATE_IP_MFC, 0, 0, 0), | 652 | GATE(CLK_MFC, "mfc", "aclk100", GATE_IP_MFC, 0, 0, 0), |
712 | GATE(smmu_mfcl, "smmu_mfcl", "aclk100", GATE_IP_MFC, 1, | 653 | GATE(CLK_SMMU_MFCL, "smmu_mfcl", "aclk100", GATE_IP_MFC, 1, |
713 | 0, 0), | 654 | 0, 0), |
714 | GATE(smmu_mfcr, "smmu_mfcr", "aclk100", GATE_IP_MFC, 2, | 655 | GATE(CLK_SMMU_MFCR, "smmu_mfcr", "aclk100", GATE_IP_MFC, 2, |
715 | 0, 0), | 656 | 0, 0), |
716 | GATE(fimd0, "fimd0", "aclk160", GATE_IP_LCD0, 0, | 657 | GATE(CLK_FIMD0, "fimd0", "aclk160", GATE_IP_LCD0, 0, |
717 | 0, 0), | 658 | 0, 0), |
718 | GATE(smmu_fimd0, "smmu_fimd0", "aclk160", GATE_IP_LCD0, 4, | 659 | GATE(CLK_SMMU_FIMD0, "smmu_fimd0", "aclk160", GATE_IP_LCD0, 4, |
719 | 0, 0), | 660 | 0, 0), |
720 | GATE(pdma0, "pdma0", "aclk133", GATE_IP_FSYS, 0, | 661 | GATE(CLK_PDMA0, "pdma0", "aclk133", GATE_IP_FSYS, 0, |
721 | 0, 0), | 662 | 0, 0), |
722 | GATE(pdma1, "pdma1", "aclk133", GATE_IP_FSYS, 1, | 663 | GATE(CLK_PDMA1, "pdma1", "aclk133", GATE_IP_FSYS, 1, |
723 | 0, 0), | 664 | 0, 0), |
724 | GATE(sdmmc0, "sdmmc0", "aclk133", GATE_IP_FSYS, 5, | 665 | GATE(CLK_SDMMC0, "sdmmc0", "aclk133", GATE_IP_FSYS, 5, |
725 | 0, 0), | 666 | 0, 0), |
726 | GATE(sdmmc1, "sdmmc1", "aclk133", GATE_IP_FSYS, 6, | 667 | GATE(CLK_SDMMC1, "sdmmc1", "aclk133", GATE_IP_FSYS, 6, |
727 | 0, 0), | 668 | 0, 0), |
728 | GATE(sdmmc2, "sdmmc2", "aclk133", GATE_IP_FSYS, 7, | 669 | GATE(CLK_SDMMC2, "sdmmc2", "aclk133", GATE_IP_FSYS, 7, |
729 | 0, 0), | 670 | 0, 0), |
730 | GATE(sdmmc3, "sdmmc3", "aclk133", GATE_IP_FSYS, 8, | 671 | GATE(CLK_SDMMC3, "sdmmc3", "aclk133", GATE_IP_FSYS, 8, |
731 | 0, 0), | 672 | 0, 0), |
732 | GATE(uart0, "uart0", "aclk100", GATE_IP_PERIL, 0, | 673 | GATE(CLK_UART0, "uart0", "aclk100", GATE_IP_PERIL, 0, |
733 | 0, 0), | 674 | 0, 0), |
734 | GATE(uart1, "uart1", "aclk100", GATE_IP_PERIL, 1, | 675 | GATE(CLK_UART1, "uart1", "aclk100", GATE_IP_PERIL, 1, |
735 | 0, 0), | 676 | 0, 0), |
736 | GATE(uart2, "uart2", "aclk100", GATE_IP_PERIL, 2, | 677 | GATE(CLK_UART2, "uart2", "aclk100", GATE_IP_PERIL, 2, |
737 | 0, 0), | 678 | 0, 0), |
738 | GATE(uart3, "uart3", "aclk100", GATE_IP_PERIL, 3, | 679 | GATE(CLK_UART3, "uart3", "aclk100", GATE_IP_PERIL, 3, |
739 | 0, 0), | 680 | 0, 0), |
740 | GATE(uart4, "uart4", "aclk100", GATE_IP_PERIL, 4, | 681 | GATE(CLK_UART4, "uart4", "aclk100", GATE_IP_PERIL, 4, |
741 | 0, 0), | 682 | 0, 0), |
742 | GATE(i2c0, "i2c0", "aclk100", GATE_IP_PERIL, 6, | 683 | GATE(CLK_I2C0, "i2c0", "aclk100", GATE_IP_PERIL, 6, |
743 | 0, 0), | 684 | 0, 0), |
744 | GATE(i2c1, "i2c1", "aclk100", GATE_IP_PERIL, 7, | 685 | GATE(CLK_I2C1, "i2c1", "aclk100", GATE_IP_PERIL, 7, |
745 | 0, 0), | 686 | 0, 0), |
746 | GATE(i2c2, "i2c2", "aclk100", GATE_IP_PERIL, 8, | 687 | GATE(CLK_I2C2, "i2c2", "aclk100", GATE_IP_PERIL, 8, |
747 | 0, 0), | 688 | 0, 0), |
748 | GATE(i2c3, "i2c3", "aclk100", GATE_IP_PERIL, 9, | 689 | GATE(CLK_I2C3, "i2c3", "aclk100", GATE_IP_PERIL, 9, |
749 | 0, 0), | 690 | 0, 0), |
750 | GATE(i2c4, "i2c4", "aclk100", GATE_IP_PERIL, 10, | 691 | GATE(CLK_I2C4, "i2c4", "aclk100", GATE_IP_PERIL, 10, |
751 | 0, 0), | 692 | 0, 0), |
752 | GATE(i2c5, "i2c5", "aclk100", GATE_IP_PERIL, 11, | 693 | GATE(CLK_I2C5, "i2c5", "aclk100", GATE_IP_PERIL, 11, |
753 | 0, 0), | 694 | 0, 0), |
754 | GATE(i2c6, "i2c6", "aclk100", GATE_IP_PERIL, 12, | 695 | GATE(CLK_I2C6, "i2c6", "aclk100", GATE_IP_PERIL, 12, |
755 | 0, 0), | 696 | 0, 0), |
756 | GATE(i2c7, "i2c7", "aclk100", GATE_IP_PERIL, 13, | 697 | GATE(CLK_I2C7, "i2c7", "aclk100", GATE_IP_PERIL, 13, |
757 | 0, 0), | 698 | 0, 0), |
758 | GATE(i2c_hdmi, "i2c-hdmi", "aclk100", GATE_IP_PERIL, 14, | 699 | GATE(CLK_I2C_HDMI, "i2c-hdmi", "aclk100", GATE_IP_PERIL, 14, |
759 | 0, 0), | 700 | 0, 0), |
760 | GATE(spi0, "spi0", "aclk100", GATE_IP_PERIL, 16, | 701 | GATE(CLK_SPI0, "spi0", "aclk100", GATE_IP_PERIL, 16, |
761 | 0, 0), | 702 | 0, 0), |
762 | GATE(spi1, "spi1", "aclk100", GATE_IP_PERIL, 17, | 703 | GATE(CLK_SPI1, "spi1", "aclk100", GATE_IP_PERIL, 17, |
763 | 0, 0), | 704 | 0, 0), |
764 | GATE(spi2, "spi2", "aclk100", GATE_IP_PERIL, 18, | 705 | GATE(CLK_SPI2, "spi2", "aclk100", GATE_IP_PERIL, 18, |
765 | 0, 0), | 706 | 0, 0), |
766 | GATE(i2s1, "i2s1", "aclk100", GATE_IP_PERIL, 20, | 707 | GATE(CLK_I2S1, "i2s1", "aclk100", GATE_IP_PERIL, 20, |
767 | 0, 0), | 708 | 0, 0), |
768 | GATE(i2s2, "i2s2", "aclk100", GATE_IP_PERIL, 21, | 709 | GATE(CLK_I2S2, "i2s2", "aclk100", GATE_IP_PERIL, 21, |
769 | 0, 0), | 710 | 0, 0), |
770 | GATE(pcm1, "pcm1", "aclk100", GATE_IP_PERIL, 22, | 711 | GATE(CLK_PCM1, "pcm1", "aclk100", GATE_IP_PERIL, 22, |
771 | 0, 0), | 712 | 0, 0), |
772 | GATE(pcm2, "pcm2", "aclk100", GATE_IP_PERIL, 23, | 713 | GATE(CLK_PCM2, "pcm2", "aclk100", GATE_IP_PERIL, 23, |
773 | 0, 0), | 714 | 0, 0), |
774 | GATE(spdif, "spdif", "aclk100", GATE_IP_PERIL, 26, | 715 | GATE(CLK_SPDIF, "spdif", "aclk100", GATE_IP_PERIL, 26, |
775 | 0, 0), | 716 | 0, 0), |
776 | GATE(ac97, "ac97", "aclk100", GATE_IP_PERIL, 27, | 717 | GATE(CLK_AC97, "ac97", "aclk100", GATE_IP_PERIL, 27, |
777 | 0, 0), | 718 | 0, 0), |
778 | }; | 719 | }; |
779 | 720 | ||
780 | /* list of gate clocks supported in exynos4210 soc */ | 721 | /* list of gate clocks supported in exynos4210 soc */ |
781 | static struct samsung_gate_clock exynos4210_gate_clks[] __initdata = { | 722 | static struct samsung_gate_clock exynos4210_gate_clks[] __initdata = { |
782 | GATE(tvenc, "tvenc", "aclk160", GATE_IP_TV, 2, 0, 0), | 723 | GATE(CLK_TVENC, "tvenc", "aclk160", GATE_IP_TV, 2, 0, 0), |
783 | GATE(g2d, "g2d", "aclk200", E4210_GATE_IP_IMAGE, 0, 0, 0), | 724 | GATE(CLK_G2D, "g2d", "aclk200", E4210_GATE_IP_IMAGE, 0, 0, 0), |
784 | GATE(rotator, "rotator", "aclk200", E4210_GATE_IP_IMAGE, 1, 0, 0), | 725 | GATE(CLK_ROTATOR, "rotator", "aclk200", E4210_GATE_IP_IMAGE, 1, 0, 0), |
785 | GATE(mdma, "mdma", "aclk200", E4210_GATE_IP_IMAGE, 2, 0, 0), | 726 | GATE(CLK_MDMA, "mdma", "aclk200", E4210_GATE_IP_IMAGE, 2, 0, 0), |
786 | GATE(smmu_g2d, "smmu_g2d", "aclk200", E4210_GATE_IP_IMAGE, 3, 0, 0), | 727 | GATE(CLK_SMMU_G2D, "smmu_g2d", "aclk200", E4210_GATE_IP_IMAGE, 3, 0, 0), |
787 | GATE(smmu_mdma, "smmu_mdma", "aclk200", E4210_GATE_IP_IMAGE, 5, 0, 0), | 728 | GATE(CLK_SMMU_MDMA, "smmu_mdma", "aclk200", E4210_GATE_IP_IMAGE, 5, 0, |
788 | GATE(pcie_phy, "pcie_phy", "aclk133", GATE_IP_FSYS, 2, 0, 0), | 729 | 0), |
789 | GATE(sata_phy, "sata_phy", "aclk133", GATE_IP_FSYS, 3, 0, 0), | 730 | GATE(CLK_PCIE_PHY, "pcie_phy", "aclk133", GATE_IP_FSYS, 2, 0, 0), |
790 | GATE(sata, "sata", "aclk133", GATE_IP_FSYS, 10, 0, 0), | 731 | GATE(CLK_SATA_PHY, "sata_phy", "aclk133", GATE_IP_FSYS, 3, 0, 0), |
791 | GATE(pcie, "pcie", "aclk133", GATE_IP_FSYS, 14, 0, 0), | 732 | GATE(CLK_SATA, "sata", "aclk133", GATE_IP_FSYS, 10, 0, 0), |
792 | GATE(smmu_pcie, "smmu_pcie", "aclk133", GATE_IP_FSYS, 18, 0, 0), | 733 | GATE(CLK_PCIE, "pcie", "aclk133", GATE_IP_FSYS, 14, 0, 0), |
793 | GATE(modemif, "modemif", "aclk100", GATE_IP_PERIL, 28, 0, 0), | 734 | GATE(CLK_SMMU_PCIE, "smmu_pcie", "aclk133", GATE_IP_FSYS, 18, 0, 0), |
794 | GATE(chipid, "chipid", "aclk100", E4210_GATE_IP_PERIR, 0, 0, 0), | 735 | GATE(CLK_MODEMIF, "modemif", "aclk100", GATE_IP_PERIL, 28, 0, 0), |
795 | GATE(sysreg, "sysreg", "aclk100", E4210_GATE_IP_PERIR, 0, | 736 | GATE(CLK_CHIPID, "chipid", "aclk100", E4210_GATE_IP_PERIR, 0, 0, 0), |
737 | GATE(CLK_SYSREG, "sysreg", "aclk100", E4210_GATE_IP_PERIR, 0, | ||
796 | CLK_IGNORE_UNUSED, 0), | 738 | CLK_IGNORE_UNUSED, 0), |
797 | GATE(hdmi_cec, "hdmi_cec", "aclk100", E4210_GATE_IP_PERIR, 11, 0, 0), | 739 | GATE(CLK_HDMI_CEC, "hdmi_cec", "aclk100", E4210_GATE_IP_PERIR, 11, 0, |
798 | GATE(smmu_rotator, "smmu_rotator", "aclk200", | 740 | 0), |
741 | GATE(CLK_SMMU_ROTATOR, "smmu_rotator", "aclk200", | ||
799 | E4210_GATE_IP_IMAGE, 4, 0, 0), | 742 | E4210_GATE_IP_IMAGE, 4, 0, 0), |
800 | GATE(sclk_mipi1, "sclk_mipi1", "div_mipi_pre1", | 743 | GATE(CLK_SCLK_MIPI1, "sclk_mipi1", "div_mipi_pre1", |
801 | E4210_SRC_MASK_LCD1, 12, CLK_SET_RATE_PARENT, 0), | 744 | E4210_SRC_MASK_LCD1, 12, CLK_SET_RATE_PARENT, 0), |
802 | GATE(sclk_sata, "sclk_sata", "div_sata", | 745 | GATE(CLK_SCLK_SATA, "sclk_sata", "div_sata", |
803 | SRC_MASK_FSYS, 24, CLK_SET_RATE_PARENT, 0), | 746 | SRC_MASK_FSYS, 24, CLK_SET_RATE_PARENT, 0), |
804 | GATE(sclk_mixer, "sclk_mixer", "mout_mixer", SRC_MASK_TV, 4, 0, 0), | 747 | GATE(CLK_SCLK_MIXER, "sclk_mixer", "mout_mixer", SRC_MASK_TV, 4, 0, 0), |
805 | GATE(sclk_dac, "sclk_dac", "mout_dac", SRC_MASK_TV, 8, 0, 0), | 748 | GATE(CLK_SCLK_DAC, "sclk_dac", "mout_dac", SRC_MASK_TV, 8, 0, 0), |
806 | GATE(tsadc, "tsadc", "aclk100", GATE_IP_PERIL, 15, | 749 | GATE(CLK_TSADC, "tsadc", "aclk100", GATE_IP_PERIL, 15, |
807 | 0, 0), | 750 | 0, 0), |
808 | GATE(mct, "mct", "aclk100", E4210_GATE_IP_PERIR, 13, | 751 | GATE(CLK_MCT, "mct", "aclk100", E4210_GATE_IP_PERIR, 13, |
809 | 0, 0), | 752 | 0, 0), |
810 | GATE(wdt, "watchdog", "aclk100", E4210_GATE_IP_PERIR, 14, | 753 | GATE(CLK_WDT, "watchdog", "aclk100", E4210_GATE_IP_PERIR, 14, |
811 | 0, 0), | 754 | 0, 0), |
812 | GATE(rtc, "rtc", "aclk100", E4210_GATE_IP_PERIR, 15, | 755 | GATE(CLK_RTC, "rtc", "aclk100", E4210_GATE_IP_PERIR, 15, |
813 | 0, 0), | 756 | 0, 0), |
814 | GATE(keyif, "keyif", "aclk100", E4210_GATE_IP_PERIR, 16, | 757 | GATE(CLK_KEYIF, "keyif", "aclk100", E4210_GATE_IP_PERIR, 16, |
815 | 0, 0), | 758 | 0, 0), |
816 | GATE(sclk_fimd1, "sclk_fimd1", "div_fimd1", E4210_SRC_MASK_LCD1, 0, | 759 | GATE(CLK_SCLK_FIMD1, "sclk_fimd1", "div_fimd1", E4210_SRC_MASK_LCD1, 0, |
817 | CLK_SET_RATE_PARENT, 0), | 760 | CLK_SET_RATE_PARENT, 0), |
818 | GATE(tmu_apbif, "tmu_apbif", "aclk100", E4210_GATE_IP_PERIR, 17, 0, 0), | 761 | GATE(CLK_TMU_APBIF, "tmu_apbif", "aclk100", E4210_GATE_IP_PERIR, 17, 0, |
762 | 0), | ||
819 | }; | 763 | }; |
820 | 764 | ||
821 | /* list of gate clocks supported in exynos4x12 soc */ | 765 | /* list of gate clocks supported in exynos4x12 soc */ |
822 | static struct samsung_gate_clock exynos4x12_gate_clks[] __initdata = { | 766 | static struct samsung_gate_clock exynos4x12_gate_clks[] __initdata = { |
823 | GATE(audss, "audss", "sclk_epll", E4X12_GATE_IP_MAUDIO, 0, 0, 0), | 767 | GATE(CLK_AUDSS, "audss", "sclk_epll", E4X12_GATE_IP_MAUDIO, 0, 0, 0), |
824 | GATE(mdnie0, "mdnie0", "aclk160", GATE_IP_LCD0, 2, 0, 0), | 768 | GATE(CLK_MDNIE0, "mdnie0", "aclk160", GATE_IP_LCD0, 2, 0, 0), |
825 | GATE(rotator, "rotator", "aclk200", E4X12_GATE_IP_IMAGE, 1, 0, 0), | 769 | GATE(CLK_ROTATOR, "rotator", "aclk200", E4X12_GATE_IP_IMAGE, 1, 0, 0), |
826 | GATE(mdma2, "mdma2", "aclk200", E4X12_GATE_IP_IMAGE, 2, 0, 0), | 770 | GATE(CLK_MDMA2, "mdma2", "aclk200", E4X12_GATE_IP_IMAGE, 2, 0, 0), |
827 | GATE(smmu_mdma, "smmu_mdma", "aclk200", E4X12_GATE_IP_IMAGE, 5, 0, 0), | 771 | GATE(CLK_SMMU_MDMA, "smmu_mdma", "aclk200", E4X12_GATE_IP_IMAGE, 5, 0, |
828 | GATE(mipi_hsi, "mipi_hsi", "aclk133", GATE_IP_FSYS, 10, 0, 0), | 772 | 0), |
829 | GATE(chipid, "chipid", "aclk100", E4X12_GATE_IP_PERIR, 0, 0, 0), | 773 | GATE(CLK_MIPI_HSI, "mipi_hsi", "aclk133", GATE_IP_FSYS, 10, 0, 0), |
830 | GATE(sysreg, "sysreg", "aclk100", E4X12_GATE_IP_PERIR, 1, | 774 | GATE(CLK_CHIPID, "chipid", "aclk100", E4X12_GATE_IP_PERIR, 0, 0, 0), |
775 | GATE(CLK_SYSREG, "sysreg", "aclk100", E4X12_GATE_IP_PERIR, 1, | ||
831 | CLK_IGNORE_UNUSED, 0), | 776 | CLK_IGNORE_UNUSED, 0), |
832 | GATE(hdmi_cec, "hdmi_cec", "aclk100", E4X12_GATE_IP_PERIR, 11, 0, 0), | 777 | GATE(CLK_HDMI_CEC, "hdmi_cec", "aclk100", E4X12_GATE_IP_PERIR, 11, 0, |
833 | GATE(sclk_mdnie0, "sclk_mdnie0", "div_mdnie0", | 778 | 0), |
779 | GATE(CLK_SCLK_MDNIE0, "sclk_mdnie0", "div_mdnie0", | ||
834 | SRC_MASK_LCD0, 4, CLK_SET_RATE_PARENT, 0), | 780 | SRC_MASK_LCD0, 4, CLK_SET_RATE_PARENT, 0), |
835 | GATE(sclk_mdnie_pwm0, "sclk_mdnie_pwm0", "div_mdnie_pwm_pre0", | 781 | GATE(CLK_SCLK_MDNIE_PWM0, "sclk_mdnie_pwm0", "div_mdnie_pwm_pre0", |
836 | SRC_MASK_LCD0, 8, CLK_SET_RATE_PARENT, 0), | 782 | SRC_MASK_LCD0, 8, CLK_SET_RATE_PARENT, 0), |
837 | GATE(sclk_mipihsi, "sclk_mipihsi", "div_mipihsi", | 783 | GATE(CLK_SCLK_MIPIHSI, "sclk_mipihsi", "div_mipihsi", |
838 | SRC_MASK_FSYS, 24, CLK_SET_RATE_PARENT, 0), | 784 | SRC_MASK_FSYS, 24, CLK_SET_RATE_PARENT, 0), |
839 | GATE(smmu_rotator, "smmu_rotator", "aclk200", | 785 | GATE(CLK_SMMU_ROTATOR, "smmu_rotator", "aclk200", |
840 | E4X12_GATE_IP_IMAGE, 4, 0, 0), | 786 | E4X12_GATE_IP_IMAGE, 4, 0, 0), |
841 | GATE(mct, "mct", "aclk100", E4X12_GATE_IP_PERIR, 13, | 787 | GATE(CLK_MCT, "mct", "aclk100", E4X12_GATE_IP_PERIR, 13, |
842 | 0, 0), | 788 | 0, 0), |
843 | GATE(rtc, "rtc", "aclk100", E4X12_GATE_IP_PERIR, 15, | 789 | GATE(CLK_RTC, "rtc", "aclk100", E4X12_GATE_IP_PERIR, 15, |
844 | 0, 0), | 790 | 0, 0), |
845 | GATE(keyif, "keyif", "aclk100", E4X12_GATE_IP_PERIR, 16, 0, 0), | 791 | GATE(CLK_KEYIF, "keyif", "aclk100", E4X12_GATE_IP_PERIR, 16, 0, 0), |
846 | GATE(sclk_pwm_isp, "sclk_pwm_isp", "div_pwm_isp", | 792 | GATE(CLK_SCLK_PWM_ISP, "sclk_pwm_isp", "div_pwm_isp", |
847 | E4X12_SRC_MASK_ISP, 0, CLK_SET_RATE_PARENT, 0), | 793 | E4X12_SRC_MASK_ISP, 0, CLK_SET_RATE_PARENT, 0), |
848 | GATE(sclk_spi0_isp, "sclk_spi0_isp", "div_spi0_isp_pre", | 794 | GATE(CLK_SCLK_SPI0_ISP, "sclk_spi0_isp", "div_spi0_isp_pre", |
849 | E4X12_SRC_MASK_ISP, 4, CLK_SET_RATE_PARENT, 0), | 795 | E4X12_SRC_MASK_ISP, 4, CLK_SET_RATE_PARENT, 0), |
850 | GATE(sclk_spi1_isp, "sclk_spi1_isp", "div_spi1_isp_pre", | 796 | GATE(CLK_SCLK_SPI1_ISP, "sclk_spi1_isp", "div_spi1_isp_pre", |
851 | E4X12_SRC_MASK_ISP, 8, CLK_SET_RATE_PARENT, 0), | 797 | E4X12_SRC_MASK_ISP, 8, CLK_SET_RATE_PARENT, 0), |
852 | GATE(sclk_uart_isp, "sclk_uart_isp", "div_uart_isp", | 798 | GATE(CLK_SCLK_UART_ISP, "sclk_uart_isp", "div_uart_isp", |
853 | E4X12_SRC_MASK_ISP, 12, CLK_SET_RATE_PARENT, 0), | 799 | E4X12_SRC_MASK_ISP, 12, CLK_SET_RATE_PARENT, 0), |
854 | GATE(pwm_isp_sclk, "pwm_isp_sclk", "sclk_pwm_isp", | 800 | GATE(CLK_PWM_ISP_SCLK, "pwm_isp_sclk", "sclk_pwm_isp", |
855 | E4X12_GATE_IP_ISP, 0, 0, 0), | 801 | E4X12_GATE_IP_ISP, 0, 0, 0), |
856 | GATE(spi0_isp_sclk, "spi0_isp_sclk", "sclk_spi0_isp", | 802 | GATE(CLK_SPI0_ISP_SCLK, "spi0_isp_sclk", "sclk_spi0_isp", |
857 | E4X12_GATE_IP_ISP, 1, 0, 0), | 803 | E4X12_GATE_IP_ISP, 1, 0, 0), |
858 | GATE(spi1_isp_sclk, "spi1_isp_sclk", "sclk_spi1_isp", | 804 | GATE(CLK_SPI1_ISP_SCLK, "spi1_isp_sclk", "sclk_spi1_isp", |
859 | E4X12_GATE_IP_ISP, 2, 0, 0), | 805 | E4X12_GATE_IP_ISP, 2, 0, 0), |
860 | GATE(uart_isp_sclk, "uart_isp_sclk", "sclk_uart_isp", | 806 | GATE(CLK_UART_ISP_SCLK, "uart_isp_sclk", "sclk_uart_isp", |
861 | E4X12_GATE_IP_ISP, 3, 0, 0), | 807 | E4X12_GATE_IP_ISP, 3, 0, 0), |
862 | GATE(wdt, "watchdog", "aclk100", E4X12_GATE_IP_PERIR, 14, 0, 0), | 808 | GATE(CLK_WDT, "watchdog", "aclk100", E4X12_GATE_IP_PERIR, 14, 0, 0), |
863 | GATE(pcm0, "pcm0", "aclk100", E4X12_GATE_IP_MAUDIO, 2, | 809 | GATE(CLK_PCM0, "pcm0", "aclk100", E4X12_GATE_IP_MAUDIO, 2, |
864 | 0, 0), | 810 | 0, 0), |
865 | GATE(i2s0, "i2s0", "aclk100", E4X12_GATE_IP_MAUDIO, 3, | 811 | GATE(CLK_I2S0, "i2s0", "aclk100", E4X12_GATE_IP_MAUDIO, 3, |
866 | 0, 0), | 812 | 0, 0), |
867 | GATE(fimc_isp, "isp", "aclk200", E4X12_GATE_ISP0, 0, | 813 | GATE(CLK_FIMC_ISP, "isp", "aclk200", E4X12_GATE_ISP0, 0, |
868 | CLK_IGNORE_UNUSED | CLK_GET_RATE_NOCACHE, 0), | 814 | CLK_IGNORE_UNUSED | CLK_GET_RATE_NOCACHE, 0), |
869 | GATE(fimc_drc, "drc", "aclk200", E4X12_GATE_ISP0, 1, | 815 | GATE(CLK_FIMC_DRC, "drc", "aclk200", E4X12_GATE_ISP0, 1, |
870 | CLK_IGNORE_UNUSED | CLK_GET_RATE_NOCACHE, 0), | 816 | CLK_IGNORE_UNUSED | CLK_GET_RATE_NOCACHE, 0), |
871 | GATE(fimc_fd, "fd", "aclk200", E4X12_GATE_ISP0, 2, | 817 | GATE(CLK_FIMC_FD, "fd", "aclk200", E4X12_GATE_ISP0, 2, |
872 | CLK_IGNORE_UNUSED | CLK_GET_RATE_NOCACHE, 0), | 818 | CLK_IGNORE_UNUSED | CLK_GET_RATE_NOCACHE, 0), |
873 | GATE(fimc_lite0, "lite0", "aclk200", E4X12_GATE_ISP0, 3, | 819 | GATE(CLK_FIMC_LITE0, "lite0", "aclk200", E4X12_GATE_ISP0, 3, |
874 | CLK_IGNORE_UNUSED | CLK_GET_RATE_NOCACHE, 0), | 820 | CLK_IGNORE_UNUSED | CLK_GET_RATE_NOCACHE, 0), |
875 | GATE(fimc_lite1, "lite1", "aclk200", E4X12_GATE_ISP0, 4, | 821 | GATE(CLK_FIMC_LITE1, "lite1", "aclk200", E4X12_GATE_ISP0, 4, |
876 | CLK_IGNORE_UNUSED | CLK_GET_RATE_NOCACHE, 0), | 822 | CLK_IGNORE_UNUSED | CLK_GET_RATE_NOCACHE, 0), |
877 | GATE(mcuisp, "mcuisp", "aclk200", E4X12_GATE_ISP0, 5, | 823 | GATE(CLK_MCUISP, "mcuisp", "aclk200", E4X12_GATE_ISP0, 5, |
878 | CLK_IGNORE_UNUSED | CLK_GET_RATE_NOCACHE, 0), | 824 | CLK_IGNORE_UNUSED | CLK_GET_RATE_NOCACHE, 0), |
879 | GATE(gicisp, "gicisp", "aclk200", E4X12_GATE_ISP0, 7, | 825 | GATE(CLK_GICISP, "gicisp", "aclk200", E4X12_GATE_ISP0, 7, |
880 | CLK_IGNORE_UNUSED | CLK_GET_RATE_NOCACHE, 0), | 826 | CLK_IGNORE_UNUSED | CLK_GET_RATE_NOCACHE, 0), |
881 | GATE(smmu_isp, "smmu_isp", "aclk200", E4X12_GATE_ISP0, 8, | 827 | GATE(CLK_SMMU_ISP, "smmu_isp", "aclk200", E4X12_GATE_ISP0, 8, |
882 | CLK_IGNORE_UNUSED | CLK_GET_RATE_NOCACHE, 0), | 828 | CLK_IGNORE_UNUSED | CLK_GET_RATE_NOCACHE, 0), |
883 | GATE(smmu_drc, "smmu_drc", "aclk200", E4X12_GATE_ISP0, 9, | 829 | GATE(CLK_SMMU_DRC, "smmu_drc", "aclk200", E4X12_GATE_ISP0, 9, |
884 | CLK_IGNORE_UNUSED | CLK_GET_RATE_NOCACHE, 0), | 830 | CLK_IGNORE_UNUSED | CLK_GET_RATE_NOCACHE, 0), |
885 | GATE(smmu_fd, "smmu_fd", "aclk200", E4X12_GATE_ISP0, 10, | 831 | GATE(CLK_SMMU_FD, "smmu_fd", "aclk200", E4X12_GATE_ISP0, 10, |
886 | CLK_IGNORE_UNUSED | CLK_GET_RATE_NOCACHE, 0), | 832 | CLK_IGNORE_UNUSED | CLK_GET_RATE_NOCACHE, 0), |
887 | GATE(smmu_lite0, "smmu_lite0", "aclk200", E4X12_GATE_ISP0, 11, | 833 | GATE(CLK_SMMU_LITE0, "smmu_lite0", "aclk200", E4X12_GATE_ISP0, 11, |
888 | CLK_IGNORE_UNUSED | CLK_GET_RATE_NOCACHE, 0), | 834 | CLK_IGNORE_UNUSED | CLK_GET_RATE_NOCACHE, 0), |
889 | GATE(smmu_lite1, "smmu_lite1", "aclk200", E4X12_GATE_ISP0, 12, | 835 | GATE(CLK_SMMU_LITE1, "smmu_lite1", "aclk200", E4X12_GATE_ISP0, 12, |
890 | CLK_IGNORE_UNUSED | CLK_GET_RATE_NOCACHE, 0), | 836 | CLK_IGNORE_UNUSED | CLK_GET_RATE_NOCACHE, 0), |
891 | GATE(ppmuispmx, "ppmuispmx", "aclk200", E4X12_GATE_ISP0, 20, | 837 | GATE(CLK_PPMUISPMX, "ppmuispmx", "aclk200", E4X12_GATE_ISP0, 20, |
892 | CLK_IGNORE_UNUSED | CLK_GET_RATE_NOCACHE, 0), | 838 | CLK_IGNORE_UNUSED | CLK_GET_RATE_NOCACHE, 0), |
893 | GATE(ppmuispx, "ppmuispx", "aclk200", E4X12_GATE_ISP0, 21, | 839 | GATE(CLK_PPMUISPX, "ppmuispx", "aclk200", E4X12_GATE_ISP0, 21, |
894 | CLK_IGNORE_UNUSED | CLK_GET_RATE_NOCACHE, 0), | 840 | CLK_IGNORE_UNUSED | CLK_GET_RATE_NOCACHE, 0), |
895 | GATE(mcuctl_isp, "mcuctl_isp", "aclk200", E4X12_GATE_ISP0, 23, | 841 | GATE(CLK_MCUCTL_ISP, "mcuctl_isp", "aclk200", E4X12_GATE_ISP0, 23, |
896 | CLK_IGNORE_UNUSED | CLK_GET_RATE_NOCACHE, 0), | 842 | CLK_IGNORE_UNUSED | CLK_GET_RATE_NOCACHE, 0), |
897 | GATE(mpwm_isp, "mpwm_isp", "aclk200", E4X12_GATE_ISP0, 24, | 843 | GATE(CLK_MPWM_ISP, "mpwm_isp", "aclk200", E4X12_GATE_ISP0, 24, |
898 | CLK_IGNORE_UNUSED | CLK_GET_RATE_NOCACHE, 0), | 844 | CLK_IGNORE_UNUSED | CLK_GET_RATE_NOCACHE, 0), |
899 | GATE(i2c0_isp, "i2c0_isp", "aclk200", E4X12_GATE_ISP0, 25, | 845 | GATE(CLK_I2C0_ISP, "i2c0_isp", "aclk200", E4X12_GATE_ISP0, 25, |
900 | CLK_IGNORE_UNUSED | CLK_GET_RATE_NOCACHE, 0), | 846 | CLK_IGNORE_UNUSED | CLK_GET_RATE_NOCACHE, 0), |
901 | GATE(i2c1_isp, "i2c1_isp", "aclk200", E4X12_GATE_ISP0, 26, | 847 | GATE(CLK_I2C1_ISP, "i2c1_isp", "aclk200", E4X12_GATE_ISP0, 26, |
902 | CLK_IGNORE_UNUSED | CLK_GET_RATE_NOCACHE, 0), | 848 | CLK_IGNORE_UNUSED | CLK_GET_RATE_NOCACHE, 0), |
903 | GATE(mtcadc_isp, "mtcadc_isp", "aclk200", E4X12_GATE_ISP0, 27, | 849 | GATE(CLK_MTCADC_ISP, "mtcadc_isp", "aclk200", E4X12_GATE_ISP0, 27, |
904 | CLK_IGNORE_UNUSED | CLK_GET_RATE_NOCACHE, 0), | 850 | CLK_IGNORE_UNUSED | CLK_GET_RATE_NOCACHE, 0), |
905 | GATE(pwm_isp, "pwm_isp", "aclk200", E4X12_GATE_ISP0, 28, | 851 | GATE(CLK_PWM_ISP, "pwm_isp", "aclk200", E4X12_GATE_ISP0, 28, |
906 | CLK_IGNORE_UNUSED | CLK_GET_RATE_NOCACHE, 0), | 852 | CLK_IGNORE_UNUSED | CLK_GET_RATE_NOCACHE, 0), |
907 | GATE(wdt_isp, "wdt_isp", "aclk200", E4X12_GATE_ISP0, 30, | 853 | GATE(CLK_WDT_ISP, "wdt_isp", "aclk200", E4X12_GATE_ISP0, 30, |
908 | CLK_IGNORE_UNUSED | CLK_GET_RATE_NOCACHE, 0), | 854 | CLK_IGNORE_UNUSED | CLK_GET_RATE_NOCACHE, 0), |
909 | GATE(uart_isp, "uart_isp", "aclk200", E4X12_GATE_ISP0, 31, | 855 | GATE(CLK_UART_ISP, "uart_isp", "aclk200", E4X12_GATE_ISP0, 31, |
910 | CLK_IGNORE_UNUSED | CLK_GET_RATE_NOCACHE, 0), | 856 | CLK_IGNORE_UNUSED | CLK_GET_RATE_NOCACHE, 0), |
911 | GATE(asyncaxim, "asyncaxim", "aclk200", E4X12_GATE_ISP1, 0, | 857 | GATE(CLK_ASYNCAXIM, "asyncaxim", "aclk200", E4X12_GATE_ISP1, 0, |
912 | CLK_IGNORE_UNUSED | CLK_GET_RATE_NOCACHE, 0), | 858 | CLK_IGNORE_UNUSED | CLK_GET_RATE_NOCACHE, 0), |
913 | GATE(smmu_ispcx, "smmu_ispcx", "aclk200", E4X12_GATE_ISP1, 4, | 859 | GATE(CLK_SMMU_ISPCX, "smmu_ispcx", "aclk200", E4X12_GATE_ISP1, 4, |
914 | CLK_IGNORE_UNUSED | CLK_GET_RATE_NOCACHE, 0), | 860 | CLK_IGNORE_UNUSED | CLK_GET_RATE_NOCACHE, 0), |
915 | GATE(spi0_isp, "spi0_isp", "aclk200", E4X12_GATE_ISP1, 12, | 861 | GATE(CLK_SPI0_ISP, "spi0_isp", "aclk200", E4X12_GATE_ISP1, 12, |
916 | CLK_IGNORE_UNUSED | CLK_GET_RATE_NOCACHE, 0), | 862 | CLK_IGNORE_UNUSED | CLK_GET_RATE_NOCACHE, 0), |
917 | GATE(spi1_isp, "spi1_isp", "aclk200", E4X12_GATE_ISP1, 13, | 863 | GATE(CLK_SPI1_ISP, "spi1_isp", "aclk200", E4X12_GATE_ISP1, 13, |
918 | CLK_IGNORE_UNUSED | CLK_GET_RATE_NOCACHE, 0), | 864 | CLK_IGNORE_UNUSED | CLK_GET_RATE_NOCACHE, 0), |
919 | GATE(g2d, "g2d", "aclk200", GATE_IP_DMC, 23, 0, 0), | 865 | GATE(CLK_G2D, "g2d", "aclk200", GATE_IP_DMC, 23, 0, 0), |
920 | GATE(tmu_apbif, "tmu_apbif", "aclk100", E4X12_GATE_IP_PERIR, 17, 0, 0), | 866 | GATE(CLK_TMU_APBIF, "tmu_apbif", "aclk100", E4X12_GATE_IP_PERIR, 17, 0, |
867 | 0), | ||
921 | }; | 868 | }; |
922 | 869 | ||
923 | static struct samsung_clock_alias exynos4_aliases[] __initdata = { | 870 | static struct samsung_clock_alias exynos4_aliases[] __initdata = { |
924 | ALIAS(mout_core, NULL, "moutcore"), | 871 | ALIAS(CLK_MOUT_CORE, NULL, "moutcore"), |
925 | ALIAS(arm_clk, NULL, "armclk"), | 872 | ALIAS(CLK_ARM_CLK, NULL, "armclk"), |
926 | ALIAS(sclk_apll, NULL, "mout_apll"), | 873 | ALIAS(CLK_SCLK_APLL, NULL, "mout_apll"), |
927 | }; | 874 | }; |
928 | 875 | ||
929 | static struct samsung_clock_alias exynos4210_aliases[] __initdata = { | 876 | static struct samsung_clock_alias exynos4210_aliases[] __initdata = { |
930 | ALIAS(sclk_mpll, NULL, "mout_mpll"), | 877 | ALIAS(CLK_SCLK_MPLL, NULL, "mout_mpll"), |
931 | }; | 878 | }; |
932 | 879 | ||
933 | static struct samsung_clock_alias exynos4x12_aliases[] __initdata = { | 880 | static struct samsung_clock_alias exynos4x12_aliases[] __initdata = { |
934 | ALIAS(mout_mpll_user_c, NULL, "mout_mpll"), | 881 | ALIAS(CLK_MOUT_MPLL_USER_C, NULL, "mout_mpll"), |
935 | }; | 882 | }; |
936 | 883 | ||
937 | /* | 884 | /* |
@@ -977,7 +924,7 @@ static void __init exynos4_clk_register_finpll(unsigned long xom) | |||
977 | finpll_f = clk_get_rate(clk); | 924 | finpll_f = clk_get_rate(clk); |
978 | } | 925 | } |
979 | 926 | ||
980 | fclk.id = fin_pll; | 927 | fclk.id = CLK_FIN_PLL; |
981 | fclk.name = "fin_pll"; | 928 | fclk.name = "fin_pll"; |
982 | fclk.parent_name = NULL; | 929 | fclk.parent_name = NULL; |
983 | fclk.flags = CLK_IS_ROOT; | 930 | fclk.flags = CLK_IS_ROOT; |
@@ -1067,24 +1014,24 @@ static struct samsung_pll_rate_table exynos4x12_vpll_rates[] __initdata = { | |||
1067 | }; | 1014 | }; |
1068 | 1015 | ||
1069 | static struct samsung_pll_clock exynos4210_plls[nr_plls] __initdata = { | 1016 | static struct samsung_pll_clock exynos4210_plls[nr_plls] __initdata = { |
1070 | [apll] = PLL_A(pll_4508, fout_apll, "fout_apll", "fin_pll", APLL_LOCK, | 1017 | [apll] = PLL_A(pll_4508, CLK_FOUT_APLL, "fout_apll", "fin_pll", |
1071 | APLL_CON0, "fout_apll", NULL), | 1018 | APLL_LOCK, APLL_CON0, "fout_apll", NULL), |
1072 | [mpll] = PLL_A(pll_4508, fout_mpll, "fout_mpll", "fin_pll", | 1019 | [mpll] = PLL_A(pll_4508, CLK_FOUT_MPLL, "fout_mpll", "fin_pll", |
1073 | E4210_MPLL_LOCK, E4210_MPLL_CON0, "fout_mpll", NULL), | 1020 | E4210_MPLL_LOCK, E4210_MPLL_CON0, "fout_mpll", NULL), |
1074 | [epll] = PLL_A(pll_4600, fout_epll, "fout_epll", "fin_pll", EPLL_LOCK, | 1021 | [epll] = PLL_A(pll_4600, CLK_FOUT_EPLL, "fout_epll", "fin_pll", |
1075 | EPLL_CON0, "fout_epll", NULL), | 1022 | EPLL_LOCK, EPLL_CON0, "fout_epll", NULL), |
1076 | [vpll] = PLL_A(pll_4650c, fout_vpll, "fout_vpll", "mout_vpllsrc", | 1023 | [vpll] = PLL_A(pll_4650c, CLK_FOUT_VPLL, "fout_vpll", "mout_vpllsrc", |
1077 | VPLL_LOCK, VPLL_CON0, "fout_vpll", NULL), | 1024 | VPLL_LOCK, VPLL_CON0, "fout_vpll", NULL), |
1078 | }; | 1025 | }; |
1079 | 1026 | ||
1080 | static struct samsung_pll_clock exynos4x12_plls[nr_plls] __initdata = { | 1027 | static struct samsung_pll_clock exynos4x12_plls[nr_plls] __initdata = { |
1081 | [apll] = PLL(pll_35xx, fout_apll, "fout_apll", "fin_pll", | 1028 | [apll] = PLL(pll_35xx, CLK_FOUT_APLL, "fout_apll", "fin_pll", |
1082 | APLL_LOCK, APLL_CON0, NULL), | 1029 | APLL_LOCK, APLL_CON0, NULL), |
1083 | [mpll] = PLL(pll_35xx, fout_mpll, "fout_mpll", "fin_pll", | 1030 | [mpll] = PLL(pll_35xx, CLK_FOUT_MPLL, "fout_mpll", "fin_pll", |
1084 | E4X12_MPLL_LOCK, E4X12_MPLL_CON0, NULL), | 1031 | E4X12_MPLL_LOCK, E4X12_MPLL_CON0, NULL), |
1085 | [epll] = PLL(pll_36xx, fout_epll, "fout_epll", "fin_pll", | 1032 | [epll] = PLL(pll_36xx, CLK_FOUT_EPLL, "fout_epll", "fin_pll", |
1086 | EPLL_LOCK, EPLL_CON0, NULL), | 1033 | EPLL_LOCK, EPLL_CON0, NULL), |
1087 | [vpll] = PLL(pll_36xx, fout_vpll, "fout_vpll", "fin_pll", | 1034 | [vpll] = PLL(pll_36xx, CLK_FOUT_VPLL, "fout_vpll", "fin_pll", |
1088 | VPLL_LOCK, VPLL_CON0, NULL), | 1035 | VPLL_LOCK, VPLL_CON0, NULL), |
1089 | }; | 1036 | }; |
1090 | 1037 | ||
@@ -1098,11 +1045,11 @@ static void __init exynos4_clk_init(struct device_node *np, | |||
1098 | panic("%s: failed to map registers\n", __func__); | 1045 | panic("%s: failed to map registers\n", __func__); |
1099 | 1046 | ||
1100 | if (exynos4_soc == EXYNOS4210) | 1047 | if (exynos4_soc == EXYNOS4210) |
1101 | samsung_clk_init(np, reg_base, nr_clks, | 1048 | samsung_clk_init(np, reg_base, CLK_NR_CLKS, |
1102 | exynos4_clk_regs, ARRAY_SIZE(exynos4_clk_regs), | 1049 | exynos4_clk_regs, ARRAY_SIZE(exynos4_clk_regs), |
1103 | exynos4210_clk_save, ARRAY_SIZE(exynos4210_clk_save)); | 1050 | exynos4210_clk_save, ARRAY_SIZE(exynos4210_clk_save)); |
1104 | else | 1051 | else |
1105 | samsung_clk_init(np, reg_base, nr_clks, | 1052 | samsung_clk_init(np, reg_base, CLK_NR_CLKS, |
1106 | exynos4_clk_regs, ARRAY_SIZE(exynos4_clk_regs), | 1053 | exynos4_clk_regs, ARRAY_SIZE(exynos4_clk_regs), |
1107 | exynos4x12_clk_save, ARRAY_SIZE(exynos4x12_clk_save)); | 1054 | exynos4x12_clk_save, ARRAY_SIZE(exynos4x12_clk_save)); |
1108 | 1055 | ||
diff --git a/drivers/clk/samsung/clk-exynos5250.c b/drivers/clk/samsung/clk-exynos5250.c index adf32343c9f9..ff4beebe1f0b 100644 --- a/drivers/clk/samsung/clk-exynos5250.c +++ b/drivers/clk/samsung/clk-exynos5250.c | |||
@@ -10,6 +10,7 @@ | |||
10 | * Common Clock Framework support for Exynos5250 SoC. | 10 | * Common Clock Framework support for Exynos5250 SoC. |
11 | */ | 11 | */ |
12 | 12 | ||
13 | #include <dt-bindings/clock/exynos5250.h> | ||
13 | #include <linux/clk.h> | 14 | #include <linux/clk.h> |
14 | #include <linux/clkdev.h> | 15 | #include <linux/clkdev.h> |
15 | #include <linux/clk-provider.h> | 16 | #include <linux/clk-provider.h> |
@@ -25,6 +26,7 @@ | |||
25 | #define MPLL_LOCK 0x4000 | 26 | #define MPLL_LOCK 0x4000 |
26 | #define MPLL_CON0 0x4100 | 27 | #define MPLL_CON0 0x4100 |
27 | #define SRC_CORE1 0x4204 | 28 | #define SRC_CORE1 0x4204 |
29 | #define GATE_IP_ACP 0x8800 | ||
28 | #define CPLL_LOCK 0x10020 | 30 | #define CPLL_LOCK 0x10020 |
29 | #define EPLL_LOCK 0x10030 | 31 | #define EPLL_LOCK 0x10030 |
30 | #define VPLL_LOCK 0x10040 | 32 | #define VPLL_LOCK 0x10040 |
@@ -35,6 +37,7 @@ | |||
35 | #define GPLL_CON0 0x10150 | 37 | #define GPLL_CON0 0x10150 |
36 | #define SRC_TOP0 0x10210 | 38 | #define SRC_TOP0 0x10210 |
37 | #define SRC_TOP2 0x10218 | 39 | #define SRC_TOP2 0x10218 |
40 | #define SRC_TOP3 0x1021c | ||
38 | #define SRC_GSCL 0x10220 | 41 | #define SRC_GSCL 0x10220 |
39 | #define SRC_DISP1_0 0x1022c | 42 | #define SRC_DISP1_0 0x1022c |
40 | #define SRC_MAU 0x10240 | 43 | #define SRC_MAU 0x10240 |
@@ -65,6 +68,7 @@ | |||
65 | #define DIV_PERIC4 0x10568 | 68 | #define DIV_PERIC4 0x10568 |
66 | #define DIV_PERIC5 0x1056c | 69 | #define DIV_PERIC5 0x1056c |
67 | #define GATE_IP_GSCL 0x10920 | 70 | #define GATE_IP_GSCL 0x10920 |
71 | #define GATE_IP_DISP1 0x10928 | ||
68 | #define GATE_IP_MFC 0x1092c | 72 | #define GATE_IP_MFC 0x1092c |
69 | #define GATE_IP_GEN 0x10934 | 73 | #define GATE_IP_GEN 0x10934 |
70 | #define GATE_IP_FSYS 0x10944 | 74 | #define GATE_IP_FSYS 0x10944 |
@@ -74,8 +78,6 @@ | |||
74 | #define BPLL_CON0 0x20110 | 78 | #define BPLL_CON0 0x20110 |
75 | #define SRC_CDREX 0x20200 | 79 | #define SRC_CDREX 0x20200 |
76 | #define PLL_DIV2_SEL 0x20a24 | 80 | #define PLL_DIV2_SEL 0x20a24 |
77 | #define GATE_IP_DISP1 0x10928 | ||
78 | #define GATE_IP_ACP 0x10000 | ||
79 | 81 | ||
80 | /* list of PLLs to be registered */ | 82 | /* list of PLLs to be registered */ |
81 | enum exynos5250_plls { | 83 | enum exynos5250_plls { |
@@ -84,51 +86,6 @@ enum exynos5250_plls { | |||
84 | }; | 86 | }; |
85 | 87 | ||
86 | /* | 88 | /* |
87 | * Let each supported clock get a unique id. This id is used to lookup the clock | ||
88 | * for device tree based platforms. The clocks are categorized into three | ||
89 | * sections: core, sclk gate and bus interface gate clocks. | ||
90 | * | ||
91 | * When adding a new clock to this list, it is advised to choose a clock | ||
92 | * category and add it to the end of that category. That is because the the | ||
93 | * device tree source file is referring to these ids and any change in the | ||
94 | * sequence number of existing clocks will require corresponding change in the | ||
95 | * device tree files. This limitation would go away when pre-processor support | ||
96 | * for dtc would be available. | ||
97 | */ | ||
98 | enum exynos5250_clks { | ||
99 | none, | ||
100 | |||
101 | /* core clocks */ | ||
102 | fin_pll, fout_apll, fout_mpll, fout_bpll, fout_gpll, fout_cpll, | ||
103 | fout_epll, fout_vpll, | ||
104 | |||
105 | /* gate for special clocks (sclk) */ | ||
106 | sclk_cam_bayer = 128, sclk_cam0, sclk_cam1, sclk_gscl_wa, sclk_gscl_wb, | ||
107 | sclk_fimd1, sclk_mipi1, sclk_dp, sclk_hdmi, sclk_pixel, sclk_audio0, | ||
108 | sclk_mmc0, sclk_mmc1, sclk_mmc2, sclk_mmc3, sclk_sata, sclk_usb3, | ||
109 | sclk_jpeg, sclk_uart0, sclk_uart1, sclk_uart2, sclk_uart3, sclk_pwm, | ||
110 | sclk_audio1, sclk_audio2, sclk_spdif, sclk_spi0, sclk_spi1, sclk_spi2, | ||
111 | div_i2s1, div_i2s2, sclk_hdmiphy, | ||
112 | |||
113 | /* gate clocks */ | ||
114 | gscl0 = 256, gscl1, gscl2, gscl3, gscl_wa, gscl_wb, smmu_gscl0, | ||
115 | smmu_gscl1, smmu_gscl2, smmu_gscl3, mfc, smmu_mfcl, smmu_mfcr, rotator, | ||
116 | jpeg, mdma1, smmu_rotator, smmu_jpeg, smmu_mdma1, pdma0, pdma1, sata, | ||
117 | usbotg, mipi_hsi, sdmmc0, sdmmc1, sdmmc2, sdmmc3, sromc, usb2, usb3, | ||
118 | sata_phyctrl, sata_phyi2c, uart0, uart1, uart2, uart3, uart4, i2c0, | ||
119 | i2c1, i2c2, i2c3, i2c4, i2c5, i2c6, i2c7, i2c_hdmi, adc, spi0, spi1, | ||
120 | spi2, i2s1, i2s2, pcm1, pcm2, pwm, spdif, ac97, hsi2c0, hsi2c1, hsi2c2, | ||
121 | hsi2c3, chipid, sysreg, pmu, cmu_top, cmu_core, cmu_mem, tzpc0, tzpc1, | ||
122 | tzpc2, tzpc3, tzpc4, tzpc5, tzpc6, tzpc7, tzpc8, tzpc9, hdmi_cec, mct, | ||
123 | wdt, rtc, tmu, fimd1, mie1, dsim0, dp, mixer, hdmi, g2d, | ||
124 | |||
125 | /* mux clocks */ | ||
126 | mout_hdmi = 1024, | ||
127 | |||
128 | nr_clks, | ||
129 | }; | ||
130 | |||
131 | /* | ||
132 | * list of controller registers to be saved and restored during a | 89 | * list of controller registers to be saved and restored during a |
133 | * suspend/resume cycle. | 90 | * suspend/resume cycle. |
134 | */ | 91 | */ |
@@ -138,6 +95,7 @@ static unsigned long exynos5250_clk_regs[] __initdata = { | |||
138 | SRC_CORE1, | 95 | SRC_CORE1, |
139 | SRC_TOP0, | 96 | SRC_TOP0, |
140 | SRC_TOP2, | 97 | SRC_TOP2, |
98 | SRC_TOP3, | ||
141 | SRC_GSCL, | 99 | SRC_GSCL, |
142 | SRC_DISP1_0, | 100 | SRC_DISP1_0, |
143 | SRC_MAU, | 101 | SRC_MAU, |
@@ -181,7 +139,7 @@ static unsigned long exynos5250_clk_regs[] __initdata = { | |||
181 | 139 | ||
182 | /* list of all parent clock list */ | 140 | /* list of all parent clock list */ |
183 | PNAME(mout_apll_p) = { "fin_pll", "fout_apll", }; | 141 | PNAME(mout_apll_p) = { "fin_pll", "fout_apll", }; |
184 | PNAME(mout_cpu_p) = { "mout_apll", "sclk_mpll", }; | 142 | PNAME(mout_cpu_p) = { "mout_apll", "mout_mpll", }; |
185 | PNAME(mout_mpll_fout_p) = { "fout_mplldiv2", "fout_mpll" }; | 143 | PNAME(mout_mpll_fout_p) = { "fout_mplldiv2", "fout_mpll" }; |
186 | PNAME(mout_mpll_p) = { "fin_pll", "mout_mpll_fout" }; | 144 | PNAME(mout_mpll_p) = { "fin_pll", "mout_mpll_fout" }; |
187 | PNAME(mout_bpll_fout_p) = { "fout_bplldiv2", "fout_bpll" }; | 145 | PNAME(mout_bpll_fout_p) = { "fout_bplldiv2", "fout_bpll" }; |
@@ -190,308 +148,432 @@ PNAME(mout_vpllsrc_p) = { "fin_pll", "sclk_hdmi27m" }; | |||
190 | PNAME(mout_vpll_p) = { "mout_vpllsrc", "fout_vpll" }; | 148 | PNAME(mout_vpll_p) = { "mout_vpllsrc", "fout_vpll" }; |
191 | PNAME(mout_cpll_p) = { "fin_pll", "fout_cpll" }; | 149 | PNAME(mout_cpll_p) = { "fin_pll", "fout_cpll" }; |
192 | PNAME(mout_epll_p) = { "fin_pll", "fout_epll" }; | 150 | PNAME(mout_epll_p) = { "fin_pll", "fout_epll" }; |
193 | PNAME(mout_mpll_user_p) = { "fin_pll", "sclk_mpll" }; | 151 | PNAME(mout_mpll_user_p) = { "fin_pll", "mout_mpll" }; |
194 | PNAME(mout_bpll_user_p) = { "fin_pll", "sclk_bpll" }; | 152 | PNAME(mout_bpll_user_p) = { "fin_pll", "mout_bpll" }; |
195 | PNAME(mout_aclk166_p) = { "sclk_cpll", "sclk_mpll_user" }; | 153 | PNAME(mout_aclk166_p) = { "mout_cpll", "mout_mpll_user" }; |
196 | PNAME(mout_aclk200_p) = { "sclk_mpll_user", "sclk_bpll_user" }; | 154 | PNAME(mout_aclk200_p) = { "mout_mpll_user", "mout_bpll_user" }; |
155 | PNAME(mout_aclk200_sub_p) = { "fin_pll", "div_aclk200" }; | ||
156 | PNAME(mout_aclk266_sub_p) = { "fin_pll", "div_aclk266" }; | ||
157 | PNAME(mout_aclk333_sub_p) = { "fin_pll", "div_aclk333" }; | ||
197 | PNAME(mout_hdmi_p) = { "div_hdmi_pixel", "sclk_hdmiphy" }; | 158 | PNAME(mout_hdmi_p) = { "div_hdmi_pixel", "sclk_hdmiphy" }; |
198 | PNAME(mout_usb3_p) = { "sclk_mpll_user", "sclk_cpll" }; | 159 | PNAME(mout_usb3_p) = { "mout_mpll_user", "mout_cpll" }; |
199 | PNAME(mout_group1_p) = { "fin_pll", "fin_pll", "sclk_hdmi27m", | 160 | PNAME(mout_group1_p) = { "fin_pll", "fin_pll", "sclk_hdmi27m", |
200 | "sclk_dptxphy", "sclk_uhostphy", "sclk_hdmiphy", | 161 | "sclk_dptxphy", "sclk_uhostphy", "sclk_hdmiphy", |
201 | "sclk_mpll_user", "sclk_epll", "sclk_vpll", | 162 | "mout_mpll_user", "mout_epll", "mout_vpll", |
202 | "sclk_cpll" }; | 163 | "mout_cpll", "none", "none", |
164 | "none", "none", "none", | ||
165 | "none" }; | ||
203 | PNAME(mout_audio0_p) = { "cdclk0", "fin_pll", "sclk_hdmi27m", "sclk_dptxphy", | 166 | PNAME(mout_audio0_p) = { "cdclk0", "fin_pll", "sclk_hdmi27m", "sclk_dptxphy", |
204 | "sclk_uhostphy", "sclk_hdmiphy", | 167 | "sclk_uhostphy", "fin_pll", |
205 | "sclk_mpll_user", "sclk_epll", "sclk_vpll", | 168 | "mout_mpll_user", "mout_epll", "mout_vpll", |
206 | "sclk_cpll" }; | 169 | "mout_cpll", "none", "none", |
170 | "none", "none", "none", | ||
171 | "none" }; | ||
207 | PNAME(mout_audio1_p) = { "cdclk1", "fin_pll", "sclk_hdmi27m", "sclk_dptxphy", | 172 | PNAME(mout_audio1_p) = { "cdclk1", "fin_pll", "sclk_hdmi27m", "sclk_dptxphy", |
208 | "sclk_uhostphy", "sclk_hdmiphy", | 173 | "sclk_uhostphy", "fin_pll", |
209 | "sclk_mpll_user", "sclk_epll", "sclk_vpll", | 174 | "mout_mpll_user", "mout_epll", "mout_vpll", |
210 | "sclk_cpll" }; | 175 | "mout_cpll", "none", "none", |
176 | "none", "none", "none", | ||
177 | "none" }; | ||
211 | PNAME(mout_audio2_p) = { "cdclk2", "fin_pll", "sclk_hdmi27m", "sclk_dptxphy", | 178 | PNAME(mout_audio2_p) = { "cdclk2", "fin_pll", "sclk_hdmi27m", "sclk_dptxphy", |
212 | "sclk_uhostphy", "sclk_hdmiphy", | 179 | "sclk_uhostphy", "fin_pll", |
213 | "sclk_mpll_user", "sclk_epll", "sclk_vpll", | 180 | "mout_mpll_user", "mout_epll", "mout_vpll", |
214 | "sclk_cpll" }; | 181 | "mout_cpll", "none", "none", |
182 | "none", "none", "none", | ||
183 | "none" }; | ||
215 | PNAME(mout_spdif_p) = { "sclk_audio0", "sclk_audio1", "sclk_audio2", | 184 | PNAME(mout_spdif_p) = { "sclk_audio0", "sclk_audio1", "sclk_audio2", |
216 | "spdif_extclk" }; | 185 | "spdif_extclk" }; |
217 | 186 | ||
218 | /* fixed rate clocks generated outside the soc */ | 187 | /* fixed rate clocks generated outside the soc */ |
219 | static struct samsung_fixed_rate_clock exynos5250_fixed_rate_ext_clks[] __initdata = { | 188 | static struct samsung_fixed_rate_clock exynos5250_fixed_rate_ext_clks[] __initdata = { |
220 | FRATE(fin_pll, "fin_pll", NULL, CLK_IS_ROOT, 0), | 189 | FRATE(CLK_FIN_PLL, "fin_pll", NULL, CLK_IS_ROOT, 0), |
221 | }; | 190 | }; |
222 | 191 | ||
223 | /* fixed rate clocks generated inside the soc */ | 192 | /* fixed rate clocks generated inside the soc */ |
224 | static struct samsung_fixed_rate_clock exynos5250_fixed_rate_clks[] __initdata = { | 193 | static struct samsung_fixed_rate_clock exynos5250_fixed_rate_clks[] __initdata = { |
225 | FRATE(sclk_hdmiphy, "sclk_hdmiphy", NULL, CLK_IS_ROOT, 24000000), | 194 | FRATE(CLK_SCLK_HDMIPHY, "sclk_hdmiphy", NULL, CLK_IS_ROOT, 24000000), |
226 | FRATE(none, "sclk_hdmi27m", NULL, CLK_IS_ROOT, 27000000), | 195 | FRATE(0, "sclk_hdmi27m", NULL, CLK_IS_ROOT, 27000000), |
227 | FRATE(none, "sclk_dptxphy", NULL, CLK_IS_ROOT, 24000000), | 196 | FRATE(0, "sclk_dptxphy", NULL, CLK_IS_ROOT, 24000000), |
228 | FRATE(none, "sclk_uhostphy", NULL, CLK_IS_ROOT, 48000000), | 197 | FRATE(0, "sclk_uhostphy", NULL, CLK_IS_ROOT, 48000000), |
229 | }; | 198 | }; |
230 | 199 | ||
231 | static struct samsung_fixed_factor_clock exynos5250_fixed_factor_clks[] __initdata = { | 200 | static struct samsung_fixed_factor_clock exynos5250_fixed_factor_clks[] __initdata = { |
232 | FFACTOR(none, "fout_mplldiv2", "fout_mpll", 1, 2, 0), | 201 | FFACTOR(0, "fout_mplldiv2", "fout_mpll", 1, 2, 0), |
233 | FFACTOR(none, "fout_bplldiv2", "fout_bpll", 1, 2, 0), | 202 | FFACTOR(0, "fout_bplldiv2", "fout_bpll", 1, 2, 0), |
234 | }; | 203 | }; |
235 | 204 | ||
236 | static struct samsung_mux_clock exynos5250_pll_pmux_clks[] __initdata = { | 205 | static struct samsung_mux_clock exynos5250_pll_pmux_clks[] __initdata = { |
237 | MUX(none, "mout_vpllsrc", mout_vpllsrc_p, SRC_TOP2, 0, 1), | 206 | MUX(0, "mout_vpllsrc", mout_vpllsrc_p, SRC_TOP2, 0, 1), |
238 | }; | 207 | }; |
239 | 208 | ||
240 | static struct samsung_mux_clock exynos5250_mux_clks[] __initdata = { | 209 | static struct samsung_mux_clock exynos5250_mux_clks[] __initdata = { |
241 | MUX_A(none, "mout_apll", mout_apll_p, SRC_CPU, 0, 1, "mout_apll"), | 210 | /* |
242 | MUX_A(none, "mout_cpu", mout_cpu_p, SRC_CPU, 16, 1, "mout_cpu"), | 211 | * NOTE: Following table is sorted by (clock domain, register address, |
243 | MUX(none, "mout_mpll_fout", mout_mpll_fout_p, PLL_DIV2_SEL, 4, 1), | 212 | * bitfield shift) triplet in ascending order. When adding new entries, |
244 | MUX_A(none, "sclk_mpll", mout_mpll_p, SRC_CORE1, 8, 1, "mout_mpll"), | 213 | * please make sure that the order is kept, to avoid merge conflicts |
245 | MUX(none, "mout_bpll_fout", mout_bpll_fout_p, PLL_DIV2_SEL, 0, 1), | 214 | * and make further work with defined data easier. |
246 | MUX(none, "sclk_bpll", mout_bpll_p, SRC_CDREX, 0, 1), | 215 | */ |
247 | MUX(none, "sclk_vpll", mout_vpll_p, SRC_TOP2, 16, 1), | 216 | |
248 | MUX(none, "sclk_epll", mout_epll_p, SRC_TOP2, 12, 1), | 217 | /* |
249 | MUX(none, "sclk_cpll", mout_cpll_p, SRC_TOP2, 8, 1), | 218 | * CMU_CPU |
250 | MUX(none, "sclk_mpll_user", mout_mpll_user_p, SRC_TOP2, 20, 1), | 219 | */ |
251 | MUX(none, "sclk_bpll_user", mout_bpll_user_p, SRC_TOP2, 24, 1), | 220 | MUX_FA(0, "mout_apll", mout_apll_p, SRC_CPU, 0, 1, |
252 | MUX(none, "mout_aclk166", mout_aclk166_p, SRC_TOP0, 8, 1), | 221 | CLK_SET_RATE_PARENT, 0, "mout_apll"), |
253 | MUX(none, "mout_aclk333", mout_aclk166_p, SRC_TOP0, 16, 1), | 222 | MUX_A(0, "mout_cpu", mout_cpu_p, SRC_CPU, 16, 1, "mout_cpu"), |
254 | MUX(none, "mout_aclk200", mout_aclk200_p, SRC_TOP0, 12, 1), | 223 | |
255 | MUX(none, "mout_cam_bayer", mout_group1_p, SRC_GSCL, 12, 4), | 224 | /* |
256 | MUX(none, "mout_cam0", mout_group1_p, SRC_GSCL, 16, 4), | 225 | * CMU_CORE |
257 | MUX(none, "mout_cam1", mout_group1_p, SRC_GSCL, 20, 4), | 226 | */ |
258 | MUX(none, "mout_gscl_wa", mout_group1_p, SRC_GSCL, 24, 4), | 227 | MUX_A(0, "mout_mpll", mout_mpll_p, SRC_CORE1, 8, 1, "mout_mpll"), |
259 | MUX(none, "mout_gscl_wb", mout_group1_p, SRC_GSCL, 28, 4), | 228 | |
260 | MUX(none, "mout_fimd1", mout_group1_p, SRC_DISP1_0, 0, 4), | 229 | /* |
261 | MUX(none, "mout_mipi1", mout_group1_p, SRC_DISP1_0, 12, 4), | 230 | * CMU_TOP |
262 | MUX(none, "mout_dp", mout_group1_p, SRC_DISP1_0, 16, 4), | 231 | */ |
263 | MUX(mout_hdmi, "mout_hdmi", mout_hdmi_p, SRC_DISP1_0, 20, 1), | 232 | MUX(0, "mout_aclk166", mout_aclk166_p, SRC_TOP0, 8, 1), |
264 | MUX(none, "mout_audio0", mout_audio0_p, SRC_MAU, 0, 4), | 233 | MUX(0, "mout_aclk200", mout_aclk200_p, SRC_TOP0, 12, 1), |
265 | MUX(none, "mout_mmc0", mout_group1_p, SRC_FSYS, 0, 4), | 234 | MUX(0, "mout_aclk333", mout_aclk166_p, SRC_TOP0, 16, 1), |
266 | MUX(none, "mout_mmc1", mout_group1_p, SRC_FSYS, 4, 4), | 235 | |
267 | MUX(none, "mout_mmc2", mout_group1_p, SRC_FSYS, 8, 4), | 236 | MUX(0, "mout_cpll", mout_cpll_p, SRC_TOP2, 8, 1), |
268 | MUX(none, "mout_mmc3", mout_group1_p, SRC_FSYS, 12, 4), | 237 | MUX(0, "mout_epll", mout_epll_p, SRC_TOP2, 12, 1), |
269 | MUX(none, "mout_sata", mout_aclk200_p, SRC_FSYS, 24, 1), | 238 | MUX(0, "mout_vpll", mout_vpll_p, SRC_TOP2, 16, 1), |
270 | MUX(none, "mout_usb3", mout_usb3_p, SRC_FSYS, 28, 1), | 239 | MUX(0, "mout_mpll_user", mout_mpll_user_p, SRC_TOP2, 20, 1), |
271 | MUX(none, "mout_jpeg", mout_group1_p, SRC_GEN, 0, 4), | 240 | MUX(0, "mout_bpll_user", mout_bpll_user_p, SRC_TOP2, 24, 1), |
272 | MUX(none, "mout_uart0", mout_group1_p, SRC_PERIC0, 0, 4), | 241 | |
273 | MUX(none, "mout_uart1", mout_group1_p, SRC_PERIC0, 4, 4), | 242 | MUX(0, "mout_aclk200_disp1_sub", mout_aclk200_sub_p, SRC_TOP3, 4, 1), |
274 | MUX(none, "mout_uart2", mout_group1_p, SRC_PERIC0, 8, 4), | 243 | MUX(0, "mout_aclk266_gscl_sub", mout_aclk266_sub_p, SRC_TOP3, 8, 1), |
275 | MUX(none, "mout_uart3", mout_group1_p, SRC_PERIC0, 12, 4), | 244 | MUX(0, "mout_aclk333_sub", mout_aclk333_sub_p, SRC_TOP3, 24, 1), |
276 | MUX(none, "mout_pwm", mout_group1_p, SRC_PERIC0, 24, 4), | 245 | |
277 | MUX(none, "mout_audio1", mout_audio1_p, SRC_PERIC1, 0, 4), | 246 | MUX(0, "mout_cam_bayer", mout_group1_p, SRC_GSCL, 12, 4), |
278 | MUX(none, "mout_audio2", mout_audio2_p, SRC_PERIC1, 4, 4), | 247 | MUX(0, "mout_cam0", mout_group1_p, SRC_GSCL, 16, 4), |
279 | MUX(none, "mout_spdif", mout_spdif_p, SRC_PERIC1, 8, 2), | 248 | MUX(0, "mout_cam1", mout_group1_p, SRC_GSCL, 20, 4), |
280 | MUX(none, "mout_spi0", mout_group1_p, SRC_PERIC1, 16, 4), | 249 | MUX(0, "mout_gscl_wa", mout_group1_p, SRC_GSCL, 24, 4), |
281 | MUX(none, "mout_spi1", mout_group1_p, SRC_PERIC1, 20, 4), | 250 | MUX(0, "mout_gscl_wb", mout_group1_p, SRC_GSCL, 28, 4), |
282 | MUX(none, "mout_spi2", mout_group1_p, SRC_PERIC1, 24, 4), | 251 | |
252 | MUX(0, "mout_fimd1", mout_group1_p, SRC_DISP1_0, 0, 4), | ||
253 | MUX(0, "mout_mipi1", mout_group1_p, SRC_DISP1_0, 12, 4), | ||
254 | MUX(0, "mout_dp", mout_group1_p, SRC_DISP1_0, 16, 4), | ||
255 | MUX(CLK_MOUT_HDMI, "mout_hdmi", mout_hdmi_p, SRC_DISP1_0, 20, 1), | ||
256 | |||
257 | MUX(0, "mout_audio0", mout_audio0_p, SRC_MAU, 0, 4), | ||
258 | |||
259 | MUX(0, "mout_mmc0", mout_group1_p, SRC_FSYS, 0, 4), | ||
260 | MUX(0, "mout_mmc1", mout_group1_p, SRC_FSYS, 4, 4), | ||
261 | MUX(0, "mout_mmc2", mout_group1_p, SRC_FSYS, 8, 4), | ||
262 | MUX(0, "mout_mmc3", mout_group1_p, SRC_FSYS, 12, 4), | ||
263 | MUX(0, "mout_sata", mout_aclk200_p, SRC_FSYS, 24, 1), | ||
264 | MUX(0, "mout_usb3", mout_usb3_p, SRC_FSYS, 28, 1), | ||
265 | |||
266 | MUX(0, "mout_jpeg", mout_group1_p, SRC_GEN, 0, 4), | ||
267 | |||
268 | MUX(0, "mout_uart0", mout_group1_p, SRC_PERIC0, 0, 4), | ||
269 | MUX(0, "mout_uart1", mout_group1_p, SRC_PERIC0, 4, 4), | ||
270 | MUX(0, "mout_uart2", mout_group1_p, SRC_PERIC0, 8, 4), | ||
271 | MUX(0, "mout_uart3", mout_group1_p, SRC_PERIC0, 12, 4), | ||
272 | MUX(0, "mout_pwm", mout_group1_p, SRC_PERIC0, 24, 4), | ||
273 | |||
274 | MUX(0, "mout_audio1", mout_audio1_p, SRC_PERIC1, 0, 4), | ||
275 | MUX(0, "mout_audio2", mout_audio2_p, SRC_PERIC1, 4, 4), | ||
276 | MUX(0, "mout_spdif", mout_spdif_p, SRC_PERIC1, 8, 2), | ||
277 | MUX(0, "mout_spi0", mout_group1_p, SRC_PERIC1, 16, 4), | ||
278 | MUX(0, "mout_spi1", mout_group1_p, SRC_PERIC1, 20, 4), | ||
279 | MUX(0, "mout_spi2", mout_group1_p, SRC_PERIC1, 24, 4), | ||
280 | |||
281 | /* | ||
282 | * CMU_CDREX | ||
283 | */ | ||
284 | MUX(0, "mout_bpll", mout_bpll_p, SRC_CDREX, 0, 1), | ||
285 | |||
286 | MUX(0, "mout_mpll_fout", mout_mpll_fout_p, PLL_DIV2_SEL, 4, 1), | ||
287 | MUX(0, "mout_bpll_fout", mout_bpll_fout_p, PLL_DIV2_SEL, 0, 1), | ||
283 | }; | 288 | }; |
284 | 289 | ||
285 | static struct samsung_div_clock exynos5250_div_clks[] __initdata = { | 290 | static struct samsung_div_clock exynos5250_div_clks[] __initdata = { |
286 | DIV(none, "div_arm", "mout_cpu", DIV_CPU0, 0, 3), | 291 | /* |
287 | DIV(none, "sclk_apll", "mout_apll", DIV_CPU0, 24, 3), | 292 | * NOTE: Following table is sorted by (clock domain, register address, |
288 | DIV(none, "aclk66_pre", "sclk_mpll_user", DIV_TOP1, 24, 3), | 293 | * bitfield shift) triplet in ascending order. When adding new entries, |
289 | DIV(none, "aclk66", "aclk66_pre", DIV_TOP0, 0, 3), | 294 | * please make sure that the order is kept, to avoid merge conflicts |
290 | DIV(none, "aclk266", "sclk_mpll_user", DIV_TOP0, 16, 3), | 295 | * and make further work with defined data easier. |
291 | DIV(none, "aclk166", "mout_aclk166", DIV_TOP0, 8, 3), | 296 | */ |
292 | DIV(none, "aclk333", "mout_aclk333", DIV_TOP0, 20, 3), | 297 | |
293 | DIV(none, "aclk200", "mout_aclk200", DIV_TOP0, 12, 3), | 298 | /* |
294 | DIV(none, "div_cam_bayer", "mout_cam_bayer", DIV_GSCL, 12, 4), | 299 | * CMU_CPU |
295 | DIV(none, "div_cam0", "mout_cam0", DIV_GSCL, 16, 4), | 300 | */ |
296 | DIV(none, "div_cam1", "mout_cam1", DIV_GSCL, 20, 4), | 301 | DIV(0, "div_arm", "mout_cpu", DIV_CPU0, 0, 3), |
297 | DIV(none, "div_gscl_wa", "mout_gscl_wa", DIV_GSCL, 24, 4), | 302 | DIV(0, "div_apll", "mout_apll", DIV_CPU0, 24, 3), |
298 | DIV(none, "div_gscl_wb", "mout_gscl_wb", DIV_GSCL, 28, 4), | 303 | DIV_A(0, "div_arm2", "div_arm", DIV_CPU0, 28, 3, "armclk"), |
299 | DIV(none, "div_fimd1", "mout_fimd1", DIV_DISP1_0, 0, 4), | 304 | |
300 | DIV(none, "div_mipi1", "mout_mipi1", DIV_DISP1_0, 16, 4), | 305 | /* |
301 | DIV(none, "div_dp", "mout_dp", DIV_DISP1_0, 24, 4), | 306 | * CMU_TOP |
302 | DIV(none, "div_jpeg", "mout_jpeg", DIV_GEN, 4, 4), | 307 | */ |
303 | DIV(none, "div_audio0", "mout_audio0", DIV_MAU, 0, 4), | 308 | DIV(0, "div_aclk66", "div_aclk66_pre", DIV_TOP0, 0, 3), |
304 | DIV(none, "div_pcm0", "sclk_audio0", DIV_MAU, 4, 8), | 309 | DIV(0, "div_aclk166", "mout_aclk166", DIV_TOP0, 8, 3), |
305 | DIV(none, "div_sata", "mout_sata", DIV_FSYS0, 20, 4), | 310 | DIV(0, "div_aclk200", "mout_aclk200", DIV_TOP0, 12, 3), |
306 | DIV(none, "div_usb3", "mout_usb3", DIV_FSYS0, 24, 4), | 311 | DIV(0, "div_aclk266", "mout_mpll_user", DIV_TOP0, 16, 3), |
307 | DIV(none, "div_mmc0", "mout_mmc0", DIV_FSYS1, 0, 4), | 312 | DIV(0, "div_aclk333", "mout_aclk333", DIV_TOP0, 20, 3), |
308 | DIV(none, "div_mmc1", "mout_mmc1", DIV_FSYS1, 16, 4), | 313 | |
309 | DIV(none, "div_mmc2", "mout_mmc2", DIV_FSYS2, 0, 4), | 314 | DIV(0, "div_aclk66_pre", "mout_mpll_user", DIV_TOP1, 24, 3), |
310 | DIV(none, "div_mmc3", "mout_mmc3", DIV_FSYS2, 16, 4), | 315 | |
311 | DIV(none, "div_uart0", "mout_uart0", DIV_PERIC0, 0, 4), | 316 | DIV(0, "div_cam_bayer", "mout_cam_bayer", DIV_GSCL, 12, 4), |
312 | DIV(none, "div_uart1", "mout_uart1", DIV_PERIC0, 4, 4), | 317 | DIV(0, "div_cam0", "mout_cam0", DIV_GSCL, 16, 4), |
313 | DIV(none, "div_uart2", "mout_uart2", DIV_PERIC0, 8, 4), | 318 | DIV(0, "div_cam1", "mout_cam1", DIV_GSCL, 20, 4), |
314 | DIV(none, "div_uart3", "mout_uart3", DIV_PERIC0, 12, 4), | 319 | DIV(0, "div_gscl_wa", "mout_gscl_wa", DIV_GSCL, 24, 4), |
315 | DIV(none, "div_spi0", "mout_spi0", DIV_PERIC1, 0, 4), | 320 | DIV(0, "div_gscl_wb", "mout_gscl_wb", DIV_GSCL, 28, 4), |
316 | DIV(none, "div_spi1", "mout_spi1", DIV_PERIC1, 16, 4), | 321 | |
317 | DIV(none, "div_spi2", "mout_spi2", DIV_PERIC2, 0, 4), | 322 | DIV(0, "div_fimd1", "mout_fimd1", DIV_DISP1_0, 0, 4), |
318 | DIV(none, "div_pwm", "mout_pwm", DIV_PERIC3, 0, 4), | 323 | DIV(0, "div_mipi1", "mout_mipi1", DIV_DISP1_0, 16, 4), |
319 | DIV(none, "div_audio1", "mout_audio1", DIV_PERIC4, 0, 4), | 324 | DIV_F(0, "div_mipi1_pre", "div_mipi1", |
320 | DIV(none, "div_pcm1", "sclk_audio1", DIV_PERIC4, 4, 8), | ||
321 | DIV(none, "div_audio2", "mout_audio2", DIV_PERIC4, 16, 4), | ||
322 | DIV(none, "div_pcm2", "sclk_audio2", DIV_PERIC4, 20, 8), | ||
323 | DIV(div_i2s1, "div_i2s1", "sclk_audio1", DIV_PERIC5, 0, 6), | ||
324 | DIV(div_i2s2, "div_i2s2", "sclk_audio2", DIV_PERIC5, 8, 6), | ||
325 | DIV(sclk_pixel, "div_hdmi_pixel", "sclk_vpll", DIV_DISP1_0, 28, 4), | ||
326 | DIV_A(none, "armclk", "div_arm", DIV_CPU0, 28, 3, "armclk"), | ||
327 | DIV_F(none, "div_mipi1_pre", "div_mipi1", | ||
328 | DIV_DISP1_0, 20, 4, CLK_SET_RATE_PARENT, 0), | 325 | DIV_DISP1_0, 20, 4, CLK_SET_RATE_PARENT, 0), |
329 | DIV_F(none, "div_mmc_pre0", "div_mmc0", | 326 | DIV(0, "div_dp", "mout_dp", DIV_DISP1_0, 24, 4), |
327 | DIV(CLK_SCLK_PIXEL, "div_hdmi_pixel", "mout_vpll", DIV_DISP1_0, 28, 4), | ||
328 | |||
329 | DIV(0, "div_jpeg", "mout_jpeg", DIV_GEN, 4, 4), | ||
330 | |||
331 | DIV(0, "div_audio0", "mout_audio0", DIV_MAU, 0, 4), | ||
332 | DIV(CLK_DIV_PCM0, "div_pcm0", "sclk_audio0", DIV_MAU, 4, 8), | ||
333 | |||
334 | DIV(0, "div_sata", "mout_sata", DIV_FSYS0, 20, 4), | ||
335 | DIV(0, "div_usb3", "mout_usb3", DIV_FSYS0, 24, 4), | ||
336 | |||
337 | DIV(0, "div_mmc0", "mout_mmc0", DIV_FSYS1, 0, 4), | ||
338 | DIV_F(0, "div_mmc_pre0", "div_mmc0", | ||
330 | DIV_FSYS1, 8, 8, CLK_SET_RATE_PARENT, 0), | 339 | DIV_FSYS1, 8, 8, CLK_SET_RATE_PARENT, 0), |
331 | DIV_F(none, "div_mmc_pre1", "div_mmc1", | 340 | DIV(0, "div_mmc1", "mout_mmc1", DIV_FSYS1, 16, 4), |
341 | DIV_F(0, "div_mmc_pre1", "div_mmc1", | ||
332 | DIV_FSYS1, 24, 8, CLK_SET_RATE_PARENT, 0), | 342 | DIV_FSYS1, 24, 8, CLK_SET_RATE_PARENT, 0), |
333 | DIV_F(none, "div_mmc_pre2", "div_mmc2", | 343 | |
344 | DIV(0, "div_mmc2", "mout_mmc2", DIV_FSYS2, 0, 4), | ||
345 | DIV_F(0, "div_mmc_pre2", "div_mmc2", | ||
334 | DIV_FSYS2, 8, 8, CLK_SET_RATE_PARENT, 0), | 346 | DIV_FSYS2, 8, 8, CLK_SET_RATE_PARENT, 0), |
335 | DIV_F(none, "div_mmc_pre3", "div_mmc3", | 347 | DIV(0, "div_mmc3", "mout_mmc3", DIV_FSYS2, 16, 4), |
348 | DIV_F(0, "div_mmc_pre3", "div_mmc3", | ||
336 | DIV_FSYS2, 24, 8, CLK_SET_RATE_PARENT, 0), | 349 | DIV_FSYS2, 24, 8, CLK_SET_RATE_PARENT, 0), |
337 | DIV_F(none, "div_spi_pre0", "div_spi0", | 350 | |
351 | DIV(0, "div_uart0", "mout_uart0", DIV_PERIC0, 0, 4), | ||
352 | DIV(0, "div_uart1", "mout_uart1", DIV_PERIC0, 4, 4), | ||
353 | DIV(0, "div_uart2", "mout_uart2", DIV_PERIC0, 8, 4), | ||
354 | DIV(0, "div_uart3", "mout_uart3", DIV_PERIC0, 12, 4), | ||
355 | |||
356 | DIV(0, "div_spi0", "mout_spi0", DIV_PERIC1, 0, 4), | ||
357 | DIV_F(0, "div_spi_pre0", "div_spi0", | ||
338 | DIV_PERIC1, 8, 8, CLK_SET_RATE_PARENT, 0), | 358 | DIV_PERIC1, 8, 8, CLK_SET_RATE_PARENT, 0), |
339 | DIV_F(none, "div_spi_pre1", "div_spi1", | 359 | DIV(0, "div_spi1", "mout_spi1", DIV_PERIC1, 16, 4), |
360 | DIV_F(0, "div_spi_pre1", "div_spi1", | ||
340 | DIV_PERIC1, 24, 8, CLK_SET_RATE_PARENT, 0), | 361 | DIV_PERIC1, 24, 8, CLK_SET_RATE_PARENT, 0), |
341 | DIV_F(none, "div_spi_pre2", "div_spi2", | 362 | |
363 | DIV(0, "div_spi2", "mout_spi2", DIV_PERIC2, 0, 4), | ||
364 | DIV_F(0, "div_spi_pre2", "div_spi2", | ||
342 | DIV_PERIC2, 8, 8, CLK_SET_RATE_PARENT, 0), | 365 | DIV_PERIC2, 8, 8, CLK_SET_RATE_PARENT, 0), |
366 | |||
367 | DIV(0, "div_pwm", "mout_pwm", DIV_PERIC3, 0, 4), | ||
368 | |||
369 | DIV(0, "div_audio1", "mout_audio1", DIV_PERIC4, 0, 4), | ||
370 | DIV(0, "div_pcm1", "sclk_audio1", DIV_PERIC4, 4, 8), | ||
371 | DIV(0, "div_audio2", "mout_audio2", DIV_PERIC4, 16, 4), | ||
372 | DIV(0, "div_pcm2", "sclk_audio2", DIV_PERIC4, 20, 8), | ||
373 | |||
374 | DIV(CLK_DIV_I2S1, "div_i2s1", "sclk_audio1", DIV_PERIC5, 0, 6), | ||
375 | DIV(CLK_DIV_I2S2, "div_i2s2", "sclk_audio2", DIV_PERIC5, 8, 6), | ||
343 | }; | 376 | }; |
344 | 377 | ||
345 | static struct samsung_gate_clock exynos5250_gate_clks[] __initdata = { | 378 | static struct samsung_gate_clock exynos5250_gate_clks[] __initdata = { |
346 | GATE(gscl0, "gscl0", "none", GATE_IP_GSCL, 0, 0, 0), | 379 | /* |
347 | GATE(gscl1, "gscl1", "none", GATE_IP_GSCL, 1, 0, 0), | 380 | * NOTE: Following table is sorted by (clock domain, register address, |
348 | GATE(gscl2, "gscl2", "aclk266", GATE_IP_GSCL, 2, 0, 0), | 381 | * bitfield shift) triplet in ascending order. When adding new entries, |
349 | GATE(gscl3, "gscl3", "aclk266", GATE_IP_GSCL, 3, 0, 0), | 382 | * please make sure that the order is kept, to avoid merge conflicts |
350 | GATE(gscl_wa, "gscl_wa", "div_gscl_wa", GATE_IP_GSCL, 5, 0, 0), | 383 | * and make further work with defined data easier. |
351 | GATE(gscl_wb, "gscl_wb", "div_gscl_wb", GATE_IP_GSCL, 6, 0, 0), | 384 | */ |
352 | GATE(smmu_gscl0, "smmu_gscl0", "aclk266", GATE_IP_GSCL, 7, 0, 0), | 385 | |
353 | GATE(smmu_gscl1, "smmu_gscl1", "aclk266", GATE_IP_GSCL, 8, 0, 0), | 386 | /* |
354 | GATE(smmu_gscl2, "smmu_gscl2", "aclk266", GATE_IP_GSCL, 9, 0, 0), | 387 | * CMU_ACP |
355 | GATE(smmu_gscl3, "smmu_gscl3", "aclk266", GATE_IP_GSCL, 10, 0, 0), | 388 | */ |
356 | GATE(mfc, "mfc", "aclk333", GATE_IP_MFC, 0, 0, 0), | 389 | GATE(CLK_MDMA0, "mdma0", "div_aclk266", GATE_IP_ACP, 1, 0, 0), |
357 | GATE(smmu_mfcl, "smmu_mfcl", "aclk333", GATE_IP_MFC, 1, 0, 0), | 390 | GATE(CLK_G2D, "g2d", "div_aclk200", GATE_IP_ACP, 3, 0, 0), |
358 | GATE(smmu_mfcr, "smmu_mfcr", "aclk333", GATE_IP_MFC, 2, 0, 0), | 391 | GATE(CLK_SMMU_MDMA0, "smmu_mdma0", "div_aclk266", GATE_IP_ACP, 5, 0, 0), |
359 | GATE(rotator, "rotator", "aclk266", GATE_IP_GEN, 1, 0, 0), | 392 | |
360 | GATE(jpeg, "jpeg", "aclk166", GATE_IP_GEN, 2, 0, 0), | 393 | /* |
361 | GATE(mdma1, "mdma1", "aclk266", GATE_IP_GEN, 4, 0, 0), | 394 | * CMU_TOP |
362 | GATE(smmu_rotator, "smmu_rotator", "aclk266", GATE_IP_GEN, 6, 0, 0), | 395 | */ |
363 | GATE(smmu_jpeg, "smmu_jpeg", "aclk166", GATE_IP_GEN, 7, 0, 0), | 396 | GATE(CLK_SCLK_CAM_BAYER, "sclk_cam_bayer", "div_cam_bayer", |
364 | GATE(smmu_mdma1, "smmu_mdma1", "aclk266", GATE_IP_GEN, 9, 0, 0), | ||
365 | GATE(pdma0, "pdma0", "aclk200", GATE_IP_FSYS, 1, 0, 0), | ||
366 | GATE(pdma1, "pdma1", "aclk200", GATE_IP_FSYS, 2, 0, 0), | ||
367 | GATE(sata, "sata", "aclk200", GATE_IP_FSYS, 6, 0, 0), | ||
368 | GATE(usbotg, "usbotg", "aclk200", GATE_IP_FSYS, 7, 0, 0), | ||
369 | GATE(mipi_hsi, "mipi_hsi", "aclk200", GATE_IP_FSYS, 8, 0, 0), | ||
370 | GATE(sdmmc0, "sdmmc0", "aclk200", GATE_IP_FSYS, 12, 0, 0), | ||
371 | GATE(sdmmc1, "sdmmc1", "aclk200", GATE_IP_FSYS, 13, 0, 0), | ||
372 | GATE(sdmmc2, "sdmmc2", "aclk200", GATE_IP_FSYS, 14, 0, 0), | ||
373 | GATE(sdmmc3, "sdmmc3", "aclk200", GATE_IP_FSYS, 15, 0, 0), | ||
374 | GATE(sromc, "sromc", "aclk200", GATE_IP_FSYS, 17, 0, 0), | ||
375 | GATE(usb2, "usb2", "aclk200", GATE_IP_FSYS, 18, 0, 0), | ||
376 | GATE(usb3, "usb3", "aclk200", GATE_IP_FSYS, 19, 0, 0), | ||
377 | GATE(sata_phyctrl, "sata_phyctrl", "aclk200", GATE_IP_FSYS, 24, 0, 0), | ||
378 | GATE(sata_phyi2c, "sata_phyi2c", "aclk200", GATE_IP_FSYS, 25, 0, 0), | ||
379 | GATE(uart0, "uart0", "aclk66", GATE_IP_PERIC, 0, 0, 0), | ||
380 | GATE(uart1, "uart1", "aclk66", GATE_IP_PERIC, 1, 0, 0), | ||
381 | GATE(uart2, "uart2", "aclk66", GATE_IP_PERIC, 2, 0, 0), | ||
382 | GATE(uart3, "uart3", "aclk66", GATE_IP_PERIC, 3, 0, 0), | ||
383 | GATE(uart4, "uart4", "aclk66", GATE_IP_PERIC, 4, 0, 0), | ||
384 | GATE(i2c0, "i2c0", "aclk66", GATE_IP_PERIC, 6, 0, 0), | ||
385 | GATE(i2c1, "i2c1", "aclk66", GATE_IP_PERIC, 7, 0, 0), | ||
386 | GATE(i2c2, "i2c2", "aclk66", GATE_IP_PERIC, 8, 0, 0), | ||
387 | GATE(i2c3, "i2c3", "aclk66", GATE_IP_PERIC, 9, 0, 0), | ||
388 | GATE(i2c4, "i2c4", "aclk66", GATE_IP_PERIC, 10, 0, 0), | ||
389 | GATE(i2c5, "i2c5", "aclk66", GATE_IP_PERIC, 11, 0, 0), | ||
390 | GATE(i2c6, "i2c6", "aclk66", GATE_IP_PERIC, 12, 0, 0), | ||
391 | GATE(i2c7, "i2c7", "aclk66", GATE_IP_PERIC, 13, 0, 0), | ||
392 | GATE(i2c_hdmi, "i2c_hdmi", "aclk66", GATE_IP_PERIC, 14, 0, 0), | ||
393 | GATE(adc, "adc", "aclk66", GATE_IP_PERIC, 15, 0, 0), | ||
394 | GATE(spi0, "spi0", "aclk66", GATE_IP_PERIC, 16, 0, 0), | ||
395 | GATE(spi1, "spi1", "aclk66", GATE_IP_PERIC, 17, 0, 0), | ||
396 | GATE(spi2, "spi2", "aclk66", GATE_IP_PERIC, 18, 0, 0), | ||
397 | GATE(i2s1, "i2s1", "aclk66", GATE_IP_PERIC, 20, 0, 0), | ||
398 | GATE(i2s2, "i2s2", "aclk66", GATE_IP_PERIC, 21, 0, 0), | ||
399 | GATE(pcm1, "pcm1", "aclk66", GATE_IP_PERIC, 22, 0, 0), | ||
400 | GATE(pcm2, "pcm2", "aclk66", GATE_IP_PERIC, 23, 0, 0), | ||
401 | GATE(pwm, "pwm", "aclk66", GATE_IP_PERIC, 24, 0, 0), | ||
402 | GATE(spdif, "spdif", "aclk66", GATE_IP_PERIC, 26, 0, 0), | ||
403 | GATE(ac97, "ac97", "aclk66", GATE_IP_PERIC, 27, 0, 0), | ||
404 | GATE(hsi2c0, "hsi2c0", "aclk66", GATE_IP_PERIC, 28, 0, 0), | ||
405 | GATE(hsi2c1, "hsi2c1", "aclk66", GATE_IP_PERIC, 29, 0, 0), | ||
406 | GATE(hsi2c2, "hsi2c2", "aclk66", GATE_IP_PERIC, 30, 0, 0), | ||
407 | GATE(hsi2c3, "hsi2c3", "aclk66", GATE_IP_PERIC, 31, 0, 0), | ||
408 | GATE(chipid, "chipid", "aclk66", GATE_IP_PERIS, 0, 0, 0), | ||
409 | GATE(sysreg, "sysreg", "aclk66", GATE_IP_PERIS, 1, 0, 0), | ||
410 | GATE(pmu, "pmu", "aclk66", GATE_IP_PERIS, 2, CLK_IGNORE_UNUSED, 0), | ||
411 | GATE(tzpc0, "tzpc0", "aclk66", GATE_IP_PERIS, 6, 0, 0), | ||
412 | GATE(tzpc1, "tzpc1", "aclk66", GATE_IP_PERIS, 7, 0, 0), | ||
413 | GATE(tzpc2, "tzpc2", "aclk66", GATE_IP_PERIS, 8, 0, 0), | ||
414 | GATE(tzpc3, "tzpc3", "aclk66", GATE_IP_PERIS, 9, 0, 0), | ||
415 | GATE(tzpc4, "tzpc4", "aclk66", GATE_IP_PERIS, 10, 0, 0), | ||
416 | GATE(tzpc5, "tzpc5", "aclk66", GATE_IP_PERIS, 11, 0, 0), | ||
417 | GATE(tzpc6, "tzpc6", "aclk66", GATE_IP_PERIS, 12, 0, 0), | ||
418 | GATE(tzpc7, "tzpc7", "aclk66", GATE_IP_PERIS, 13, 0, 0), | ||
419 | GATE(tzpc8, "tzpc8", "aclk66", GATE_IP_PERIS, 14, 0, 0), | ||
420 | GATE(tzpc9, "tzpc9", "aclk66", GATE_IP_PERIS, 15, 0, 0), | ||
421 | GATE(hdmi_cec, "hdmi_cec", "aclk66", GATE_IP_PERIS, 16, 0, 0), | ||
422 | GATE(mct, "mct", "aclk66", GATE_IP_PERIS, 18, 0, 0), | ||
423 | GATE(wdt, "wdt", "aclk66", GATE_IP_PERIS, 19, 0, 0), | ||
424 | GATE(rtc, "rtc", "aclk66", GATE_IP_PERIS, 20, 0, 0), | ||
425 | GATE(tmu, "tmu", "aclk66", GATE_IP_PERIS, 21, 0, 0), | ||
426 | GATE(cmu_top, "cmu_top", "aclk66", | ||
427 | GATE_IP_PERIS, 3, CLK_IGNORE_UNUSED, 0), | ||
428 | GATE(cmu_core, "cmu_core", "aclk66", | ||
429 | GATE_IP_PERIS, 4, CLK_IGNORE_UNUSED, 0), | ||
430 | GATE(cmu_mem, "cmu_mem", "aclk66", | ||
431 | GATE_IP_PERIS, 5, CLK_IGNORE_UNUSED, 0), | ||
432 | GATE(sclk_cam_bayer, "sclk_cam_bayer", "div_cam_bayer", | ||
433 | SRC_MASK_GSCL, 12, CLK_SET_RATE_PARENT, 0), | 397 | SRC_MASK_GSCL, 12, CLK_SET_RATE_PARENT, 0), |
434 | GATE(sclk_cam0, "sclk_cam0", "div_cam0", | 398 | GATE(CLK_SCLK_CAM0, "sclk_cam0", "div_cam0", |
435 | SRC_MASK_GSCL, 16, CLK_SET_RATE_PARENT, 0), | 399 | SRC_MASK_GSCL, 16, CLK_SET_RATE_PARENT, 0), |
436 | GATE(sclk_cam1, "sclk_cam1", "div_cam1", | 400 | GATE(CLK_SCLK_CAM1, "sclk_cam1", "div_cam1", |
437 | SRC_MASK_GSCL, 20, CLK_SET_RATE_PARENT, 0), | 401 | SRC_MASK_GSCL, 20, CLK_SET_RATE_PARENT, 0), |
438 | GATE(sclk_gscl_wa, "sclk_gscl_wa", "div_gscl_wa", | 402 | GATE(CLK_SCLK_GSCL_WA, "sclk_gscl_wa", "div_gscl_wa", |
439 | SRC_MASK_GSCL, 24, CLK_SET_RATE_PARENT, 0), | 403 | SRC_MASK_GSCL, 24, CLK_SET_RATE_PARENT, 0), |
440 | GATE(sclk_gscl_wb, "sclk_gscl_wb", "div_gscl_wb", | 404 | GATE(CLK_SCLK_GSCL_WB, "sclk_gscl_wb", "div_gscl_wb", |
441 | SRC_MASK_GSCL, 28, CLK_SET_RATE_PARENT, 0), | 405 | SRC_MASK_GSCL, 28, CLK_SET_RATE_PARENT, 0), |
442 | GATE(sclk_fimd1, "sclk_fimd1", "div_fimd1", | 406 | |
407 | GATE(CLK_SCLK_FIMD1, "sclk_fimd1", "div_fimd1", | ||
443 | SRC_MASK_DISP1_0, 0, CLK_SET_RATE_PARENT, 0), | 408 | SRC_MASK_DISP1_0, 0, CLK_SET_RATE_PARENT, 0), |
444 | GATE(sclk_mipi1, "sclk_mipi1", "div_mipi1", | 409 | GATE(CLK_SCLK_MIPI1, "sclk_mipi1", "div_mipi1", |
445 | SRC_MASK_DISP1_0, 12, CLK_SET_RATE_PARENT, 0), | 410 | SRC_MASK_DISP1_0, 12, CLK_SET_RATE_PARENT, 0), |
446 | GATE(sclk_dp, "sclk_dp", "div_dp", | 411 | GATE(CLK_SCLK_DP, "sclk_dp", "div_dp", |
447 | SRC_MASK_DISP1_0, 16, CLK_SET_RATE_PARENT, 0), | 412 | SRC_MASK_DISP1_0, 16, CLK_SET_RATE_PARENT, 0), |
448 | GATE(sclk_hdmi, "sclk_hdmi", "mout_hdmi", | 413 | GATE(CLK_SCLK_HDMI, "sclk_hdmi", "mout_hdmi", |
449 | SRC_MASK_DISP1_0, 20, 0, 0), | 414 | SRC_MASK_DISP1_0, 20, 0, 0), |
450 | GATE(sclk_audio0, "sclk_audio0", "div_audio0", | 415 | |
416 | GATE(CLK_SCLK_AUDIO0, "sclk_audio0", "div_audio0", | ||
451 | SRC_MASK_MAU, 0, CLK_SET_RATE_PARENT, 0), | 417 | SRC_MASK_MAU, 0, CLK_SET_RATE_PARENT, 0), |
452 | GATE(sclk_mmc0, "sclk_mmc0", "div_mmc_pre0", | 418 | |
419 | GATE(CLK_SCLK_MMC0, "sclk_mmc0", "div_mmc_pre0", | ||
453 | SRC_MASK_FSYS, 0, CLK_SET_RATE_PARENT, 0), | 420 | SRC_MASK_FSYS, 0, CLK_SET_RATE_PARENT, 0), |
454 | GATE(sclk_mmc1, "sclk_mmc1", "div_mmc_pre1", | 421 | GATE(CLK_SCLK_MMC1, "sclk_mmc1", "div_mmc_pre1", |
455 | SRC_MASK_FSYS, 4, CLK_SET_RATE_PARENT, 0), | 422 | SRC_MASK_FSYS, 4, CLK_SET_RATE_PARENT, 0), |
456 | GATE(sclk_mmc2, "sclk_mmc2", "div_mmc_pre2", | 423 | GATE(CLK_SCLK_MMC2, "sclk_mmc2", "div_mmc_pre2", |
457 | SRC_MASK_FSYS, 8, CLK_SET_RATE_PARENT, 0), | 424 | SRC_MASK_FSYS, 8, CLK_SET_RATE_PARENT, 0), |
458 | GATE(sclk_mmc3, "sclk_mmc3", "div_mmc_pre3", | 425 | GATE(CLK_SCLK_MMC3, "sclk_mmc3", "div_mmc_pre3", |
459 | SRC_MASK_FSYS, 12, CLK_SET_RATE_PARENT, 0), | 426 | SRC_MASK_FSYS, 12, CLK_SET_RATE_PARENT, 0), |
460 | GATE(sclk_sata, "sclk_sata", "div_sata", | 427 | GATE(CLK_SCLK_SATA, "sclk_sata", "div_sata", |
461 | SRC_MASK_FSYS, 24, CLK_SET_RATE_PARENT, 0), | 428 | SRC_MASK_FSYS, 24, CLK_SET_RATE_PARENT, 0), |
462 | GATE(sclk_usb3, "sclk_usb3", "div_usb3", | 429 | GATE(CLK_SCLK_USB3, "sclk_usb3", "div_usb3", |
463 | SRC_MASK_FSYS, 28, CLK_SET_RATE_PARENT, 0), | 430 | SRC_MASK_FSYS, 28, CLK_SET_RATE_PARENT, 0), |
464 | GATE(sclk_jpeg, "sclk_jpeg", "div_jpeg", | 431 | |
432 | GATE(CLK_SCLK_JPEG, "sclk_jpeg", "div_jpeg", | ||
465 | SRC_MASK_GEN, 0, CLK_SET_RATE_PARENT, 0), | 433 | SRC_MASK_GEN, 0, CLK_SET_RATE_PARENT, 0), |
466 | GATE(sclk_uart0, "sclk_uart0", "div_uart0", | 434 | |
435 | GATE(CLK_SCLK_UART0, "sclk_uart0", "div_uart0", | ||
467 | SRC_MASK_PERIC0, 0, CLK_SET_RATE_PARENT, 0), | 436 | SRC_MASK_PERIC0, 0, CLK_SET_RATE_PARENT, 0), |
468 | GATE(sclk_uart1, "sclk_uart1", "div_uart1", | 437 | GATE(CLK_SCLK_UART1, "sclk_uart1", "div_uart1", |
469 | SRC_MASK_PERIC0, 4, CLK_SET_RATE_PARENT, 0), | 438 | SRC_MASK_PERIC0, 4, CLK_SET_RATE_PARENT, 0), |
470 | GATE(sclk_uart2, "sclk_uart2", "div_uart2", | 439 | GATE(CLK_SCLK_UART2, "sclk_uart2", "div_uart2", |
471 | SRC_MASK_PERIC0, 8, CLK_SET_RATE_PARENT, 0), | 440 | SRC_MASK_PERIC0, 8, CLK_SET_RATE_PARENT, 0), |
472 | GATE(sclk_uart3, "sclk_uart3", "div_uart3", | 441 | GATE(CLK_SCLK_UART3, "sclk_uart3", "div_uart3", |
473 | SRC_MASK_PERIC0, 12, CLK_SET_RATE_PARENT, 0), | 442 | SRC_MASK_PERIC0, 12, CLK_SET_RATE_PARENT, 0), |
474 | GATE(sclk_pwm, "sclk_pwm", "div_pwm", | 443 | GATE(CLK_SCLK_PWM, "sclk_pwm", "div_pwm", |
475 | SRC_MASK_PERIC0, 24, CLK_SET_RATE_PARENT, 0), | 444 | SRC_MASK_PERIC0, 24, CLK_SET_RATE_PARENT, 0), |
476 | GATE(sclk_audio1, "sclk_audio1", "div_audio1", | 445 | |
446 | GATE(CLK_SCLK_AUDIO1, "sclk_audio1", "div_audio1", | ||
477 | SRC_MASK_PERIC1, 0, CLK_SET_RATE_PARENT, 0), | 447 | SRC_MASK_PERIC1, 0, CLK_SET_RATE_PARENT, 0), |
478 | GATE(sclk_audio2, "sclk_audio2", "div_audio2", | 448 | GATE(CLK_SCLK_AUDIO2, "sclk_audio2", "div_audio2", |
479 | SRC_MASK_PERIC1, 4, CLK_SET_RATE_PARENT, 0), | 449 | SRC_MASK_PERIC1, 4, CLK_SET_RATE_PARENT, 0), |
480 | GATE(sclk_spdif, "sclk_spdif", "mout_spdif", | 450 | GATE(CLK_SCLK_SPDIF, "sclk_spdif", "mout_spdif", |
481 | SRC_MASK_PERIC1, 4, 0, 0), | 451 | SRC_MASK_PERIC1, 4, 0, 0), |
482 | GATE(sclk_spi0, "sclk_spi0", "div_spi_pre0", | 452 | GATE(CLK_SCLK_SPI0, "sclk_spi0", "div_spi_pre0", |
483 | SRC_MASK_PERIC1, 16, CLK_SET_RATE_PARENT, 0), | 453 | SRC_MASK_PERIC1, 16, CLK_SET_RATE_PARENT, 0), |
484 | GATE(sclk_spi1, "sclk_spi1", "div_spi_pre1", | 454 | GATE(CLK_SCLK_SPI1, "sclk_spi1", "div_spi_pre1", |
485 | SRC_MASK_PERIC1, 20, CLK_SET_RATE_PARENT, 0), | 455 | SRC_MASK_PERIC1, 20, CLK_SET_RATE_PARENT, 0), |
486 | GATE(sclk_spi2, "sclk_spi2", "div_spi_pre2", | 456 | GATE(CLK_SCLK_SPI2, "sclk_spi2", "div_spi_pre2", |
487 | SRC_MASK_PERIC1, 24, CLK_SET_RATE_PARENT, 0), | 457 | SRC_MASK_PERIC1, 24, CLK_SET_RATE_PARENT, 0), |
488 | GATE(fimd1, "fimd1", "aclk200", GATE_IP_DISP1, 0, 0, 0), | 458 | |
489 | GATE(mie1, "mie1", "aclk200", GATE_IP_DISP1, 1, 0, 0), | 459 | GATE(CLK_GSCL0, "gscl0", "mout_aclk266_gscl_sub", GATE_IP_GSCL, 0, 0, |
490 | GATE(dsim0, "dsim0", "aclk200", GATE_IP_DISP1, 3, 0, 0), | 460 | 0), |
491 | GATE(dp, "dp", "aclk200", GATE_IP_DISP1, 4, 0, 0), | 461 | GATE(CLK_GSCL1, "gscl1", "mout_aclk266_gscl_sub", GATE_IP_GSCL, 1, 0, |
492 | GATE(mixer, "mixer", "mout_aclk200_disp1", GATE_IP_DISP1, 5, 0, 0), | 462 | 0), |
493 | GATE(hdmi, "hdmi", "mout_aclk200_disp1", GATE_IP_DISP1, 6, 0, 0), | 463 | GATE(CLK_GSCL2, "gscl2", "mout_aclk266_gscl_sub", GATE_IP_GSCL, 2, 0, |
494 | GATE(g2d, "g2d", "aclk200", GATE_IP_ACP, 3, 0, 0), | 464 | 0), |
465 | GATE(CLK_GSCL3, "gscl3", "mout_aclk266_gscl_sub", GATE_IP_GSCL, 3, 0, | ||
466 | 0), | ||
467 | GATE(CLK_GSCL_WA, "gscl_wa", "div_gscl_wa", GATE_IP_GSCL, 5, 0, 0), | ||
468 | GATE(CLK_GSCL_WB, "gscl_wb", "div_gscl_wb", GATE_IP_GSCL, 6, 0, 0), | ||
469 | GATE(CLK_SMMU_GSCL0, "smmu_gscl0", "mout_aclk266_gscl_sub", | ||
470 | GATE_IP_GSCL, 7, 0, 0), | ||
471 | GATE(CLK_SMMU_GSCL1, "smmu_gscl1", "mout_aclk266_gscl_sub", | ||
472 | GATE_IP_GSCL, 8, 0, 0), | ||
473 | GATE(CLK_SMMU_GSCL2, "smmu_gscl2", "mout_aclk266_gscl_sub", | ||
474 | GATE_IP_GSCL, 9, 0, 0), | ||
475 | GATE(CLK_SMMU_GSCL3, "smmu_gscl3", "mout_aclk266_gscl_sub", | ||
476 | GATE_IP_GSCL, 10, 0, 0), | ||
477 | |||
478 | GATE(CLK_FIMD1, "fimd1", "mout_aclk200_disp1_sub", GATE_IP_DISP1, 0, 0, | ||
479 | 0), | ||
480 | GATE(CLK_MIE1, "mie1", "mout_aclk200_disp1_sub", GATE_IP_DISP1, 1, 0, | ||
481 | 0), | ||
482 | GATE(CLK_DSIM0, "dsim0", "mout_aclk200_disp1_sub", GATE_IP_DISP1, 3, 0, | ||
483 | 0), | ||
484 | GATE(CLK_DP, "dp", "mout_aclk200_disp1_sub", GATE_IP_DISP1, 4, 0, 0), | ||
485 | GATE(CLK_MIXER, "mixer", "mout_aclk200_disp1_sub", GATE_IP_DISP1, 5, 0, | ||
486 | 0), | ||
487 | GATE(CLK_HDMI, "hdmi", "mout_aclk200_disp1_sub", GATE_IP_DISP1, 6, 0, | ||
488 | 0), | ||
489 | |||
490 | GATE(CLK_MFC, "mfc", "mout_aclk333_sub", GATE_IP_MFC, 0, 0, 0), | ||
491 | GATE(CLK_SMMU_MFCR, "smmu_mfcr", "mout_aclk333_sub", GATE_IP_MFC, 1, 0, | ||
492 | 0), | ||
493 | GATE(CLK_SMMU_MFCL, "smmu_mfcl", "mout_aclk333_sub", GATE_IP_MFC, 2, 0, | ||
494 | 0), | ||
495 | |||
496 | GATE(CLK_ROTATOR, "rotator", "div_aclk266", GATE_IP_GEN, 1, 0, 0), | ||
497 | GATE(CLK_JPEG, "jpeg", "div_aclk166", GATE_IP_GEN, 2, 0, 0), | ||
498 | GATE(CLK_MDMA1, "mdma1", "div_aclk266", GATE_IP_GEN, 4, 0, 0), | ||
499 | GATE(CLK_SMMU_ROTATOR, "smmu_rotator", "div_aclk266", GATE_IP_GEN, 6, 0, | ||
500 | 0), | ||
501 | GATE(CLK_SMMU_JPEG, "smmu_jpeg", "div_aclk166", GATE_IP_GEN, 7, 0, 0), | ||
502 | GATE(CLK_SMMU_MDMA1, "smmu_mdma1", "div_aclk266", GATE_IP_GEN, 9, 0, 0), | ||
503 | |||
504 | GATE(CLK_PDMA0, "pdma0", "div_aclk200", GATE_IP_FSYS, 1, 0, 0), | ||
505 | GATE(CLK_PDMA1, "pdma1", "div_aclk200", GATE_IP_FSYS, 2, 0, 0), | ||
506 | GATE(CLK_SATA, "sata", "div_aclk200", GATE_IP_FSYS, 6, 0, 0), | ||
507 | GATE(CLK_USBOTG, "usbotg", "div_aclk200", GATE_IP_FSYS, 7, 0, 0), | ||
508 | GATE(CLK_MIPI_HSI, "mipi_hsi", "div_aclk200", GATE_IP_FSYS, 8, 0, 0), | ||
509 | GATE(CLK_SDMMC0, "sdmmc0", "div_aclk200", GATE_IP_FSYS, 12, 0, 0), | ||
510 | GATE(CLK_SDMMC1, "sdmmc1", "div_aclk200", GATE_IP_FSYS, 13, 0, 0), | ||
511 | GATE(CLK_SDMMC2, "sdmmc2", "div_aclk200", GATE_IP_FSYS, 14, 0, 0), | ||
512 | GATE(CLK_SDMMC3, "sdmmc3", "div_aclk200", GATE_IP_FSYS, 15, 0, 0), | ||
513 | GATE(CLK_SROMC, "sromc", "div_aclk200", GATE_IP_FSYS, 17, 0, 0), | ||
514 | GATE(CLK_USB2, "usb2", "div_aclk200", GATE_IP_FSYS, 18, 0, 0), | ||
515 | GATE(CLK_USB3, "usb3", "div_aclk200", GATE_IP_FSYS, 19, 0, 0), | ||
516 | GATE(CLK_SATA_PHYCTRL, "sata_phyctrl", "div_aclk200", | ||
517 | GATE_IP_FSYS, 24, 0, 0), | ||
518 | GATE(CLK_SATA_PHYI2C, "sata_phyi2c", "div_aclk200", GATE_IP_FSYS, 25, 0, | ||
519 | 0), | ||
520 | |||
521 | GATE(CLK_UART0, "uart0", "div_aclk66", GATE_IP_PERIC, 0, 0, 0), | ||
522 | GATE(CLK_UART1, "uart1", "div_aclk66", GATE_IP_PERIC, 1, 0, 0), | ||
523 | GATE(CLK_UART2, "uart2", "div_aclk66", GATE_IP_PERIC, 2, 0, 0), | ||
524 | GATE(CLK_UART3, "uart3", "div_aclk66", GATE_IP_PERIC, 3, 0, 0), | ||
525 | GATE(CLK_UART4, "uart4", "div_aclk66", GATE_IP_PERIC, 4, 0, 0), | ||
526 | GATE(CLK_I2C0, "i2c0", "div_aclk66", GATE_IP_PERIC, 6, 0, 0), | ||
527 | GATE(CLK_I2C1, "i2c1", "div_aclk66", GATE_IP_PERIC, 7, 0, 0), | ||
528 | GATE(CLK_I2C2, "i2c2", "div_aclk66", GATE_IP_PERIC, 8, 0, 0), | ||
529 | GATE(CLK_I2C3, "i2c3", "div_aclk66", GATE_IP_PERIC, 9, 0, 0), | ||
530 | GATE(CLK_I2C4, "i2c4", "div_aclk66", GATE_IP_PERIC, 10, 0, 0), | ||
531 | GATE(CLK_I2C5, "i2c5", "div_aclk66", GATE_IP_PERIC, 11, 0, 0), | ||
532 | GATE(CLK_I2C6, "i2c6", "div_aclk66", GATE_IP_PERIC, 12, 0, 0), | ||
533 | GATE(CLK_I2C7, "i2c7", "div_aclk66", GATE_IP_PERIC, 13, 0, 0), | ||
534 | GATE(CLK_I2C_HDMI, "i2c_hdmi", "div_aclk66", GATE_IP_PERIC, 14, 0, 0), | ||
535 | GATE(CLK_ADC, "adc", "div_aclk66", GATE_IP_PERIC, 15, 0, 0), | ||
536 | GATE(CLK_SPI0, "spi0", "div_aclk66", GATE_IP_PERIC, 16, 0, 0), | ||
537 | GATE(CLK_SPI1, "spi1", "div_aclk66", GATE_IP_PERIC, 17, 0, 0), | ||
538 | GATE(CLK_SPI2, "spi2", "div_aclk66", GATE_IP_PERIC, 18, 0, 0), | ||
539 | GATE(CLK_I2S1, "i2s1", "div_aclk66", GATE_IP_PERIC, 20, 0, 0), | ||
540 | GATE(CLK_I2S2, "i2s2", "div_aclk66", GATE_IP_PERIC, 21, 0, 0), | ||
541 | GATE(CLK_PCM1, "pcm1", "div_aclk66", GATE_IP_PERIC, 22, 0, 0), | ||
542 | GATE(CLK_PCM2, "pcm2", "div_aclk66", GATE_IP_PERIC, 23, 0, 0), | ||
543 | GATE(CLK_PWM, "pwm", "div_aclk66", GATE_IP_PERIC, 24, 0, 0), | ||
544 | GATE(CLK_SPDIF, "spdif", "div_aclk66", GATE_IP_PERIC, 26, 0, 0), | ||
545 | GATE(CLK_AC97, "ac97", "div_aclk66", GATE_IP_PERIC, 27, 0, 0), | ||
546 | GATE(CLK_HSI2C0, "hsi2c0", "div_aclk66", GATE_IP_PERIC, 28, 0, 0), | ||
547 | GATE(CLK_HSI2C1, "hsi2c1", "div_aclk66", GATE_IP_PERIC, 29, 0, 0), | ||
548 | GATE(CLK_HSI2C2, "hsi2c2", "div_aclk66", GATE_IP_PERIC, 30, 0, 0), | ||
549 | GATE(CLK_HSI2C3, "hsi2c3", "div_aclk66", GATE_IP_PERIC, 31, 0, 0), | ||
550 | |||
551 | GATE(CLK_CHIPID, "chipid", "div_aclk66", GATE_IP_PERIS, 0, 0, 0), | ||
552 | GATE(CLK_SYSREG, "sysreg", "div_aclk66", | ||
553 | GATE_IP_PERIS, 1, CLK_IGNORE_UNUSED, 0), | ||
554 | GATE(CLK_PMU, "pmu", "div_aclk66", GATE_IP_PERIS, 2, CLK_IGNORE_UNUSED, | ||
555 | 0), | ||
556 | GATE(CLK_CMU_TOP, "cmu_top", "div_aclk66", | ||
557 | GATE_IP_PERIS, 3, CLK_IGNORE_UNUSED, 0), | ||
558 | GATE(CLK_CMU_CORE, "cmu_core", "div_aclk66", | ||
559 | GATE_IP_PERIS, 4, CLK_IGNORE_UNUSED, 0), | ||
560 | GATE(CLK_CMU_MEM, "cmu_mem", "div_aclk66", | ||
561 | GATE_IP_PERIS, 5, CLK_IGNORE_UNUSED, 0), | ||
562 | GATE(CLK_TZPC0, "tzpc0", "div_aclk66", GATE_IP_PERIS, 6, 0, 0), | ||
563 | GATE(CLK_TZPC1, "tzpc1", "div_aclk66", GATE_IP_PERIS, 7, 0, 0), | ||
564 | GATE(CLK_TZPC2, "tzpc2", "div_aclk66", GATE_IP_PERIS, 8, 0, 0), | ||
565 | GATE(CLK_TZPC3, "tzpc3", "div_aclk66", GATE_IP_PERIS, 9, 0, 0), | ||
566 | GATE(CLK_TZPC4, "tzpc4", "div_aclk66", GATE_IP_PERIS, 10, 0, 0), | ||
567 | GATE(CLK_TZPC5, "tzpc5", "div_aclk66", GATE_IP_PERIS, 11, 0, 0), | ||
568 | GATE(CLK_TZPC6, "tzpc6", "div_aclk66", GATE_IP_PERIS, 12, 0, 0), | ||
569 | GATE(CLK_TZPC7, "tzpc7", "div_aclk66", GATE_IP_PERIS, 13, 0, 0), | ||
570 | GATE(CLK_TZPC8, "tzpc8", "div_aclk66", GATE_IP_PERIS, 14, 0, 0), | ||
571 | GATE(CLK_TZPC9, "tzpc9", "div_aclk66", GATE_IP_PERIS, 15, 0, 0), | ||
572 | GATE(CLK_HDMI_CEC, "hdmi_cec", "div_aclk66", GATE_IP_PERIS, 16, 0, 0), | ||
573 | GATE(CLK_MCT, "mct", "div_aclk66", GATE_IP_PERIS, 18, 0, 0), | ||
574 | GATE(CLK_WDT, "wdt", "div_aclk66", GATE_IP_PERIS, 19, 0, 0), | ||
575 | GATE(CLK_RTC, "rtc", "div_aclk66", GATE_IP_PERIS, 20, 0, 0), | ||
576 | GATE(CLK_TMU, "tmu", "div_aclk66", GATE_IP_PERIS, 21, 0, 0), | ||
495 | }; | 577 | }; |
496 | 578 | ||
497 | static struct samsung_pll_rate_table vpll_24mhz_tbl[] __initdata = { | 579 | static struct samsung_pll_rate_table vpll_24mhz_tbl[] __initdata = { |
@@ -517,20 +599,41 @@ static struct samsung_pll_rate_table epll_24mhz_tbl[] __initdata = { | |||
517 | { }, | 599 | { }, |
518 | }; | 600 | }; |
519 | 601 | ||
602 | static struct samsung_pll_rate_table apll_24mhz_tbl[] __initdata = { | ||
603 | /* sorted in descending order */ | ||
604 | /* PLL_35XX_RATE(rate, m, p, s) */ | ||
605 | PLL_35XX_RATE(1700000000, 425, 6, 0), | ||
606 | PLL_35XX_RATE(1600000000, 200, 3, 0), | ||
607 | PLL_35XX_RATE(1500000000, 250, 4, 0), | ||
608 | PLL_35XX_RATE(1400000000, 175, 3, 0), | ||
609 | PLL_35XX_RATE(1300000000, 325, 6, 0), | ||
610 | PLL_35XX_RATE(1200000000, 200, 4, 0), | ||
611 | PLL_35XX_RATE(1100000000, 275, 6, 0), | ||
612 | PLL_35XX_RATE(1000000000, 125, 3, 0), | ||
613 | PLL_35XX_RATE(900000000, 150, 4, 0), | ||
614 | PLL_35XX_RATE(800000000, 100, 3, 0), | ||
615 | PLL_35XX_RATE(700000000, 175, 3, 1), | ||
616 | PLL_35XX_RATE(600000000, 200, 4, 1), | ||
617 | PLL_35XX_RATE(500000000, 125, 3, 1), | ||
618 | PLL_35XX_RATE(400000000, 100, 3, 1), | ||
619 | PLL_35XX_RATE(300000000, 200, 4, 2), | ||
620 | PLL_35XX_RATE(200000000, 100, 3, 2), | ||
621 | }; | ||
622 | |||
520 | static struct samsung_pll_clock exynos5250_plls[nr_plls] __initdata = { | 623 | static struct samsung_pll_clock exynos5250_plls[nr_plls] __initdata = { |
521 | [apll] = PLL_A(pll_35xx, fout_apll, "fout_apll", "fin_pll", APLL_LOCK, | 624 | [apll] = PLL_A(pll_35xx, CLK_FOUT_APLL, "fout_apll", "fin_pll", |
522 | APLL_CON0, "fout_apll", NULL), | 625 | APLL_LOCK, APLL_CON0, "fout_apll", NULL), |
523 | [mpll] = PLL_A(pll_35xx, fout_mpll, "fout_mpll", "fin_pll", MPLL_LOCK, | 626 | [mpll] = PLL_A(pll_35xx, CLK_FOUT_MPLL, "fout_mpll", "fin_pll", |
524 | MPLL_CON0, "fout_mpll", NULL), | 627 | MPLL_LOCK, MPLL_CON0, "fout_mpll", NULL), |
525 | [bpll] = PLL(pll_35xx, fout_bpll, "fout_bpll", "fin_pll", BPLL_LOCK, | 628 | [bpll] = PLL(pll_35xx, CLK_FOUT_BPLL, "fout_bpll", "fin_pll", BPLL_LOCK, |
526 | BPLL_CON0, NULL), | 629 | BPLL_CON0, NULL), |
527 | [gpll] = PLL(pll_35xx, fout_gpll, "fout_gpll", "fin_pll", GPLL_LOCK, | 630 | [gpll] = PLL(pll_35xx, CLK_FOUT_GPLL, "fout_gpll", "fin_pll", GPLL_LOCK, |
528 | GPLL_CON0, NULL), | 631 | GPLL_CON0, NULL), |
529 | [cpll] = PLL(pll_35xx, fout_cpll, "fout_cpll", "fin_pll", CPLL_LOCK, | 632 | [cpll] = PLL(pll_35xx, CLK_FOUT_CPLL, "fout_cpll", "fin_pll", CPLL_LOCK, |
530 | CPLL_CON0, NULL), | 633 | CPLL_CON0, NULL), |
531 | [epll] = PLL(pll_36xx, fout_epll, "fout_epll", "fin_pll", EPLL_LOCK, | 634 | [epll] = PLL(pll_36xx, CLK_FOUT_EPLL, "fout_epll", "fin_pll", EPLL_LOCK, |
532 | EPLL_CON0, NULL), | 635 | EPLL_CON0, NULL), |
533 | [vpll] = PLL(pll_36xx, fout_vpll, "fout_vpll", "mout_vpllsrc", | 636 | [vpll] = PLL(pll_36xx, CLK_FOUT_VPLL, "fout_vpll", "mout_vpllsrc", |
534 | VPLL_LOCK, VPLL_CON0, NULL), | 637 | VPLL_LOCK, VPLL_CON0, NULL), |
535 | }; | 638 | }; |
536 | 639 | ||
@@ -552,7 +655,7 @@ static void __init exynos5250_clk_init(struct device_node *np) | |||
552 | panic("%s: unable to determine soc\n", __func__); | 655 | panic("%s: unable to determine soc\n", __func__); |
553 | } | 656 | } |
554 | 657 | ||
555 | samsung_clk_init(np, reg_base, nr_clks, | 658 | samsung_clk_init(np, reg_base, CLK_NR_CLKS, |
556 | exynos5250_clk_regs, ARRAY_SIZE(exynos5250_clk_regs), | 659 | exynos5250_clk_regs, ARRAY_SIZE(exynos5250_clk_regs), |
557 | NULL, 0); | 660 | NULL, 0); |
558 | samsung_clk_of_register_fixed_ext(exynos5250_fixed_rate_ext_clks, | 661 | samsung_clk_of_register_fixed_ext(exynos5250_fixed_rate_ext_clks, |
@@ -561,8 +664,10 @@ static void __init exynos5250_clk_init(struct device_node *np) | |||
561 | samsung_clk_register_mux(exynos5250_pll_pmux_clks, | 664 | samsung_clk_register_mux(exynos5250_pll_pmux_clks, |
562 | ARRAY_SIZE(exynos5250_pll_pmux_clks)); | 665 | ARRAY_SIZE(exynos5250_pll_pmux_clks)); |
563 | 666 | ||
564 | if (_get_rate("fin_pll") == 24 * MHZ) | 667 | if (_get_rate("fin_pll") == 24 * MHZ) { |
565 | exynos5250_plls[epll].rate_table = epll_24mhz_tbl; | 668 | exynos5250_plls[epll].rate_table = epll_24mhz_tbl; |
669 | exynos5250_plls[apll].rate_table = apll_24mhz_tbl; | ||
670 | } | ||
566 | 671 | ||
567 | if (_get_rate("mout_vpllsrc") == 24 * MHZ) | 672 | if (_get_rate("mout_vpllsrc") == 24 * MHZ) |
568 | exynos5250_plls[vpll].rate_table = vpll_24mhz_tbl; | 673 | exynos5250_plls[vpll].rate_table = vpll_24mhz_tbl; |
@@ -581,6 +686,6 @@ static void __init exynos5250_clk_init(struct device_node *np) | |||
581 | ARRAY_SIZE(exynos5250_gate_clks)); | 686 | ARRAY_SIZE(exynos5250_gate_clks)); |
582 | 687 | ||
583 | pr_info("Exynos5250: clock setup completed, armclk=%ld\n", | 688 | pr_info("Exynos5250: clock setup completed, armclk=%ld\n", |
584 | _get_rate("armclk")); | 689 | _get_rate("div_arm2")); |
585 | } | 690 | } |
586 | CLK_OF_DECLARE(exynos5250_clk, "samsung,exynos5250-clock", exynos5250_clk_init); | 691 | CLK_OF_DECLARE(exynos5250_clk, "samsung,exynos5250-clock", exynos5250_clk_init); |
diff --git a/drivers/clk/samsung/clk-exynos5420.c b/drivers/clk/samsung/clk-exynos5420.c index 87ea79633862..ab4f2f7d88ef 100644 --- a/drivers/clk/samsung/clk-exynos5420.c +++ b/drivers/clk/samsung/clk-exynos5420.c | |||
@@ -10,6 +10,7 @@ | |||
10 | * Common Clock Framework support for Exynos5420 SoC. | 10 | * Common Clock Framework support for Exynos5420 SoC. |
11 | */ | 11 | */ |
12 | 12 | ||
13 | #include <dt-bindings/clock/exynos5420.h> | ||
13 | #include <linux/clk.h> | 14 | #include <linux/clk.h> |
14 | #include <linux/clkdev.h> | 15 | #include <linux/clkdev.h> |
15 | #include <linux/clk-provider.h> | 16 | #include <linux/clk-provider.h> |
@@ -107,48 +108,6 @@ enum exynos5420_plls { | |||
107 | nr_plls /* number of PLLs */ | 108 | nr_plls /* number of PLLs */ |
108 | }; | 109 | }; |
109 | 110 | ||
110 | enum exynos5420_clks { | ||
111 | none, | ||
112 | |||
113 | /* core clocks */ | ||
114 | fin_pll, fout_apll, fout_cpll, fout_dpll, fout_epll, fout_rpll, | ||
115 | fout_ipll, fout_spll, fout_vpll, fout_mpll, fout_bpll, fout_kpll, | ||
116 | |||
117 | /* gate for special clocks (sclk) */ | ||
118 | sclk_uart0 = 128, sclk_uart1, sclk_uart2, sclk_uart3, sclk_mmc0, | ||
119 | sclk_mmc1, sclk_mmc2, sclk_spi0, sclk_spi1, sclk_spi2, sclk_i2s1, | ||
120 | sclk_i2s2, sclk_pcm1, sclk_pcm2, sclk_spdif, sclk_hdmi, sclk_pixel, | ||
121 | sclk_dp1, sclk_mipi1, sclk_fimd1, sclk_maudio0, sclk_maupcm0, | ||
122 | sclk_usbd300, sclk_usbd301, sclk_usbphy300, sclk_usbphy301, sclk_unipro, | ||
123 | sclk_pwm, sclk_gscl_wa, sclk_gscl_wb, sclk_hdmiphy, | ||
124 | |||
125 | /* gate clocks */ | ||
126 | aclk66_peric = 256, uart0, uart1, uart2, uart3, i2c0, i2c1, i2c2, i2c3, | ||
127 | i2c4, i2c5, i2c6, i2c7, i2c_hdmi, tsadc, spi0, spi1, spi2, keyif, i2s1, | ||
128 | i2s2, pcm1, pcm2, pwm, spdif, i2c8, i2c9, i2c10, aclk66_psgen = 300, | ||
129 | chipid, sysreg, tzpc0, tzpc1, tzpc2, tzpc3, tzpc4, tzpc5, tzpc6, tzpc7, | ||
130 | tzpc8, tzpc9, hdmi_cec, seckey, mct, wdt, rtc, tmu, tmu_gpu, | ||
131 | pclk66_gpio = 330, aclk200_fsys2 = 350, mmc0, mmc1, mmc2, sromc, ufs, | ||
132 | aclk200_fsys = 360, tsi, pdma0, pdma1, rtic, usbh20, usbd300, usbd301, | ||
133 | aclk400_mscl = 380, mscl0, mscl1, mscl2, smmu_mscl0, smmu_mscl1, | ||
134 | smmu_mscl2, aclk333 = 400, mfc, smmu_mfcl, smmu_mfcr, | ||
135 | aclk200_disp1 = 410, dsim1, dp1, hdmi, aclk300_disp1 = 420, fimd1, | ||
136 | smmu_fimd1, aclk166 = 430, mixer, aclk266 = 440, rotator, mdma1, | ||
137 | smmu_rotator, smmu_mdma1, aclk300_jpeg = 450, jpeg, jpeg2, smmu_jpeg, | ||
138 | aclk300_gscl = 460, smmu_gscl0, smmu_gscl1, gscl_wa, gscl_wb, gscl0, | ||
139 | gscl1, clk_3aa, aclk266_g2d = 470, sss, slim_sss, mdma0, | ||
140 | aclk333_g2d = 480, g2d, aclk333_432_gscl = 490, smmu_3aa, smmu_fimcl0, | ||
141 | smmu_fimcl1, smmu_fimcl3, fimc_lite3, aclk_g3d = 500, g3d, smmu_mixer, | ||
142 | |||
143 | /* mux clocks */ | ||
144 | mout_hdmi = 640, | ||
145 | |||
146 | /* divider clocks */ | ||
147 | dout_pixel = 768, | ||
148 | |||
149 | nr_clks, | ||
150 | }; | ||
151 | |||
152 | /* | 111 | /* |
153 | * list of controller registers to be saved and restored during a | 112 | * list of controller registers to be saved and restored during a |
154 | * suspend/resume cycle. | 113 | * suspend/resume cycle. |
@@ -298,225 +257,226 @@ PNAME(maudio0_p) = { "fin_pll", "maudio_clk", "sclk_dpll", "sclk_mpll", | |||
298 | 257 | ||
299 | /* fixed rate clocks generated outside the soc */ | 258 | /* fixed rate clocks generated outside the soc */ |
300 | static struct samsung_fixed_rate_clock exynos5420_fixed_rate_ext_clks[] __initdata = { | 259 | static struct samsung_fixed_rate_clock exynos5420_fixed_rate_ext_clks[] __initdata = { |
301 | FRATE(fin_pll, "fin_pll", NULL, CLK_IS_ROOT, 0), | 260 | FRATE(CLK_FIN_PLL, "fin_pll", NULL, CLK_IS_ROOT, 0), |
302 | }; | 261 | }; |
303 | 262 | ||
304 | /* fixed rate clocks generated inside the soc */ | 263 | /* fixed rate clocks generated inside the soc */ |
305 | static struct samsung_fixed_rate_clock exynos5420_fixed_rate_clks[] __initdata = { | 264 | static struct samsung_fixed_rate_clock exynos5420_fixed_rate_clks[] __initdata = { |
306 | FRATE(sclk_hdmiphy, "sclk_hdmiphy", NULL, CLK_IS_ROOT, 24000000), | 265 | FRATE(CLK_SCLK_HDMIPHY, "sclk_hdmiphy", NULL, CLK_IS_ROOT, 24000000), |
307 | FRATE(none, "sclk_pwi", NULL, CLK_IS_ROOT, 24000000), | 266 | FRATE(0, "sclk_pwi", NULL, CLK_IS_ROOT, 24000000), |
308 | FRATE(none, "sclk_usbh20", NULL, CLK_IS_ROOT, 48000000), | 267 | FRATE(0, "sclk_usbh20", NULL, CLK_IS_ROOT, 48000000), |
309 | FRATE(none, "mphy_refclk_ixtal24", NULL, CLK_IS_ROOT, 48000000), | 268 | FRATE(0, "mphy_refclk_ixtal24", NULL, CLK_IS_ROOT, 48000000), |
310 | FRATE(none, "sclk_usbh20_scan_clk", NULL, CLK_IS_ROOT, 480000000), | 269 | FRATE(0, "sclk_usbh20_scan_clk", NULL, CLK_IS_ROOT, 480000000), |
311 | }; | 270 | }; |
312 | 271 | ||
313 | static struct samsung_fixed_factor_clock exynos5420_fixed_factor_clks[] __initdata = { | 272 | static struct samsung_fixed_factor_clock exynos5420_fixed_factor_clks[] __initdata = { |
314 | FFACTOR(none, "sclk_hsic_12m", "fin_pll", 1, 2, 0), | 273 | FFACTOR(0, "sclk_hsic_12m", "fin_pll", 1, 2, 0), |
315 | }; | 274 | }; |
316 | 275 | ||
317 | static struct samsung_mux_clock exynos5420_mux_clks[] __initdata = { | 276 | static struct samsung_mux_clock exynos5420_mux_clks[] __initdata = { |
318 | MUX(none, "mout_mspll_kfc", mspll_cpu_p, SRC_TOP7, 8, 2), | 277 | MUX(0, "mout_mspll_kfc", mspll_cpu_p, SRC_TOP7, 8, 2), |
319 | MUX(none, "mout_mspll_cpu", mspll_cpu_p, SRC_TOP7, 12, 2), | 278 | MUX(0, "mout_mspll_cpu", mspll_cpu_p, SRC_TOP7, 12, 2), |
320 | MUX(none, "mout_apll", apll_p, SRC_CPU, 0, 1), | 279 | MUX(0, "mout_apll", apll_p, SRC_CPU, 0, 1), |
321 | MUX(none, "mout_cpu", cpu_p, SRC_CPU, 16, 1), | 280 | MUX(0, "mout_cpu", cpu_p, SRC_CPU, 16, 1), |
322 | MUX(none, "mout_kpll", kpll_p, SRC_KFC, 0, 1), | 281 | MUX(0, "mout_kpll", kpll_p, SRC_KFC, 0, 1), |
323 | MUX(none, "mout_cpu_kfc", kfc_p, SRC_KFC, 16, 1), | 282 | MUX(0, "mout_cpu_kfc", kfc_p, SRC_KFC, 16, 1), |
324 | 283 | ||
325 | MUX(none, "sclk_bpll", bpll_p, SRC_CDREX, 0, 1), | 284 | MUX(0, "sclk_bpll", bpll_p, SRC_CDREX, 0, 1), |
326 | 285 | ||
327 | MUX_A(none, "mout_aclk400_mscl", group1_p, | 286 | MUX_A(0, "mout_aclk400_mscl", group1_p, |
328 | SRC_TOP0, 4, 2, "aclk400_mscl"), | 287 | SRC_TOP0, 4, 2, "aclk400_mscl"), |
329 | MUX(none, "mout_aclk200", group1_p, SRC_TOP0, 8, 2), | 288 | MUX(0, "mout_aclk200", group1_p, SRC_TOP0, 8, 2), |
330 | MUX(none, "mout_aclk200_fsys2", group1_p, SRC_TOP0, 12, 2), | 289 | MUX(0, "mout_aclk200_fsys2", group1_p, SRC_TOP0, 12, 2), |
331 | MUX(none, "mout_aclk200_fsys", group1_p, SRC_TOP0, 28, 2), | 290 | MUX(0, "mout_aclk200_fsys", group1_p, SRC_TOP0, 28, 2), |
332 | 291 | ||
333 | MUX(none, "mout_aclk333_432_gscl", group4_p, SRC_TOP1, 0, 2), | 292 | MUX(0, "mout_aclk333_432_gscl", group4_p, SRC_TOP1, 0, 2), |
334 | MUX(none, "mout_aclk66", group1_p, SRC_TOP1, 8, 2), | 293 | MUX(0, "mout_aclk66", group1_p, SRC_TOP1, 8, 2), |
335 | MUX(none, "mout_aclk266", group1_p, SRC_TOP1, 20, 2), | 294 | MUX(0, "mout_aclk266", group1_p, SRC_TOP1, 20, 2), |
336 | MUX(none, "mout_aclk166", group1_p, SRC_TOP1, 24, 2), | 295 | MUX(0, "mout_aclk166", group1_p, SRC_TOP1, 24, 2), |
337 | MUX(none, "mout_aclk333", group1_p, SRC_TOP1, 28, 2), | 296 | MUX(0, "mout_aclk333", group1_p, SRC_TOP1, 28, 2), |
338 | 297 | ||
339 | MUX(none, "mout_aclk333_g2d", group1_p, SRC_TOP2, 8, 2), | 298 | MUX(0, "mout_aclk333_g2d", group1_p, SRC_TOP2, 8, 2), |
340 | MUX(none, "mout_aclk266_g2d", group1_p, SRC_TOP2, 12, 2), | 299 | MUX(0, "mout_aclk266_g2d", group1_p, SRC_TOP2, 12, 2), |
341 | MUX(none, "mout_aclk_g3d", group5_p, SRC_TOP2, 16, 1), | 300 | MUX(0, "mout_aclk_g3d", group5_p, SRC_TOP2, 16, 1), |
342 | MUX(none, "mout_aclk300_jpeg", group1_p, SRC_TOP2, 20, 2), | 301 | MUX(0, "mout_aclk300_jpeg", group1_p, SRC_TOP2, 20, 2), |
343 | MUX(none, "mout_aclk300_disp1", group1_p, SRC_TOP2, 24, 2), | 302 | MUX(0, "mout_aclk300_disp1", group1_p, SRC_TOP2, 24, 2), |
344 | MUX(none, "mout_aclk300_gscl", group1_p, SRC_TOP2, 28, 2), | 303 | MUX(0, "mout_aclk300_gscl", group1_p, SRC_TOP2, 28, 2), |
345 | 304 | ||
346 | MUX(none, "mout_user_aclk400_mscl", user_aclk400_mscl_p, | 305 | MUX(0, "mout_user_aclk400_mscl", user_aclk400_mscl_p, |
347 | SRC_TOP3, 4, 1), | 306 | SRC_TOP3, 4, 1), |
348 | MUX_A(none, "mout_aclk200_disp1", aclk200_disp1_p, | 307 | MUX_A(0, "mout_aclk200_disp1", aclk200_disp1_p, |
349 | SRC_TOP3, 8, 1, "aclk200_disp1"), | 308 | SRC_TOP3, 8, 1, "aclk200_disp1"), |
350 | MUX(none, "mout_user_aclk200_fsys2", user_aclk200_fsys2_p, | 309 | MUX(0, "mout_user_aclk200_fsys2", user_aclk200_fsys2_p, |
351 | SRC_TOP3, 12, 1), | 310 | SRC_TOP3, 12, 1), |
352 | MUX(none, "mout_user_aclk200_fsys", user_aclk200_fsys_p, | 311 | MUX(0, "mout_user_aclk200_fsys", user_aclk200_fsys_p, |
353 | SRC_TOP3, 28, 1), | 312 | SRC_TOP3, 28, 1), |
354 | 313 | ||
355 | MUX(none, "mout_user_aclk333_432_gscl", user_aclk333_432_gscl_p, | 314 | MUX(0, "mout_user_aclk333_432_gscl", user_aclk333_432_gscl_p, |
356 | SRC_TOP4, 0, 1), | 315 | SRC_TOP4, 0, 1), |
357 | MUX(none, "mout_aclk66_peric", aclk66_peric_p, SRC_TOP4, 8, 1), | 316 | MUX(0, "mout_aclk66_peric", aclk66_peric_p, SRC_TOP4, 8, 1), |
358 | MUX(none, "mout_user_aclk266", user_aclk266_p, SRC_TOP4, 20, 1), | 317 | MUX(0, "mout_user_aclk266", user_aclk266_p, SRC_TOP4, 20, 1), |
359 | MUX(none, "mout_user_aclk166", user_aclk166_p, SRC_TOP4, 24, 1), | 318 | MUX(0, "mout_user_aclk166", user_aclk166_p, SRC_TOP4, 24, 1), |
360 | MUX(none, "mout_user_aclk333", user_aclk333_p, SRC_TOP4, 28, 1), | 319 | MUX(0, "mout_user_aclk333", user_aclk333_p, SRC_TOP4, 28, 1), |
361 | 320 | ||
362 | MUX(none, "mout_aclk66_psgen", aclk66_peric_p, SRC_TOP5, 4, 1), | 321 | MUX(0, "mout_aclk66_psgen", aclk66_peric_p, SRC_TOP5, 4, 1), |
363 | MUX(none, "mout_user_aclk333_g2d", user_aclk333_g2d_p, SRC_TOP5, 8, 1), | 322 | MUX(0, "mout_user_aclk333_g2d", user_aclk333_g2d_p, SRC_TOP5, 8, 1), |
364 | MUX(none, "mout_user_aclk266_g2d", user_aclk266_g2d_p, SRC_TOP5, 12, 1), | 323 | MUX(0, "mout_user_aclk266_g2d", user_aclk266_g2d_p, SRC_TOP5, 12, 1), |
365 | MUX_A(none, "mout_user_aclk_g3d", user_aclk_g3d_p, | 324 | MUX_A(0, "mout_user_aclk_g3d", user_aclk_g3d_p, |
366 | SRC_TOP5, 16, 1, "aclkg3d"), | 325 | SRC_TOP5, 16, 1, "aclkg3d"), |
367 | MUX(none, "mout_user_aclk300_jpeg", user_aclk300_jpeg_p, | 326 | MUX(0, "mout_user_aclk300_jpeg", user_aclk300_jpeg_p, |
368 | SRC_TOP5, 20, 1), | 327 | SRC_TOP5, 20, 1), |
369 | MUX(none, "mout_user_aclk300_disp1", user_aclk300_disp1_p, | 328 | MUX(0, "mout_user_aclk300_disp1", user_aclk300_disp1_p, |
370 | SRC_TOP5, 24, 1), | 329 | SRC_TOP5, 24, 1), |
371 | MUX(none, "mout_user_aclk300_gscl", user_aclk300_gscl_p, | 330 | MUX(0, "mout_user_aclk300_gscl", user_aclk300_gscl_p, |
372 | SRC_TOP5, 28, 1), | 331 | SRC_TOP5, 28, 1), |
373 | 332 | ||
374 | MUX(none, "sclk_mpll", mpll_p, SRC_TOP6, 0, 1), | 333 | MUX(0, "sclk_mpll", mpll_p, SRC_TOP6, 0, 1), |
375 | MUX(none, "sclk_vpll", vpll_p, SRC_TOP6, 4, 1), | 334 | MUX(0, "sclk_vpll", vpll_p, SRC_TOP6, 4, 1), |
376 | MUX(none, "sclk_spll", spll_p, SRC_TOP6, 8, 1), | 335 | MUX(0, "sclk_spll", spll_p, SRC_TOP6, 8, 1), |
377 | MUX(none, "sclk_ipll", ipll_p, SRC_TOP6, 12, 1), | 336 | MUX(0, "sclk_ipll", ipll_p, SRC_TOP6, 12, 1), |
378 | MUX(none, "sclk_rpll", rpll_p, SRC_TOP6, 16, 1), | 337 | MUX(0, "sclk_rpll", rpll_p, SRC_TOP6, 16, 1), |
379 | MUX(none, "sclk_epll", epll_p, SRC_TOP6, 20, 1), | 338 | MUX(0, "sclk_epll", epll_p, SRC_TOP6, 20, 1), |
380 | MUX(none, "sclk_dpll", dpll_p, SRC_TOP6, 24, 1), | 339 | MUX(0, "sclk_dpll", dpll_p, SRC_TOP6, 24, 1), |
381 | MUX(none, "sclk_cpll", cpll_p, SRC_TOP6, 28, 1), | 340 | MUX(0, "sclk_cpll", cpll_p, SRC_TOP6, 28, 1), |
382 | 341 | ||
383 | MUX(none, "mout_sw_aclk400_mscl", sw_aclk400_mscl_p, SRC_TOP10, 4, 1), | 342 | MUX(0, "mout_sw_aclk400_mscl", sw_aclk400_mscl_p, SRC_TOP10, 4, 1), |
384 | MUX(none, "mout_sw_aclk200", sw_aclk200_p, SRC_TOP10, 8, 1), | 343 | MUX(0, "mout_sw_aclk200", sw_aclk200_p, SRC_TOP10, 8, 1), |
385 | MUX(none, "mout_sw_aclk200_fsys2", sw_aclk200_fsys2_p, | 344 | MUX(0, "mout_sw_aclk200_fsys2", sw_aclk200_fsys2_p, |
386 | SRC_TOP10, 12, 1), | 345 | SRC_TOP10, 12, 1), |
387 | MUX(none, "mout_sw_aclk200_fsys", sw_aclk200_fsys_p, SRC_TOP10, 28, 1), | 346 | MUX(0, "mout_sw_aclk200_fsys", sw_aclk200_fsys_p, SRC_TOP10, 28, 1), |
388 | 347 | ||
389 | MUX(none, "mout_sw_aclk333_432_gscl", sw_aclk333_432_gscl_p, | 348 | MUX(0, "mout_sw_aclk333_432_gscl", sw_aclk333_432_gscl_p, |
390 | SRC_TOP11, 0, 1), | 349 | SRC_TOP11, 0, 1), |
391 | MUX(none, "mout_sw_aclk66", sw_aclk66_p, SRC_TOP11, 8, 1), | 350 | MUX(0, "mout_sw_aclk66", sw_aclk66_p, SRC_TOP11, 8, 1), |
392 | MUX(none, "mout_sw_aclk266", sw_aclk266_p, SRC_TOP11, 20, 1), | 351 | MUX(0, "mout_sw_aclk266", sw_aclk266_p, SRC_TOP11, 20, 1), |
393 | MUX(none, "mout_sw_aclk166", sw_aclk166_p, SRC_TOP11, 24, 1), | 352 | MUX(0, "mout_sw_aclk166", sw_aclk166_p, SRC_TOP11, 24, 1), |
394 | MUX(none, "mout_sw_aclk333", sw_aclk333_p, SRC_TOP11, 28, 1), | 353 | MUX(0, "mout_sw_aclk333", sw_aclk333_p, SRC_TOP11, 28, 1), |
395 | 354 | ||
396 | MUX(none, "mout_sw_aclk333_g2d", sw_aclk333_g2d_p, SRC_TOP12, 8, 1), | 355 | MUX(0, "mout_sw_aclk333_g2d", sw_aclk333_g2d_p, SRC_TOP12, 8, 1), |
397 | MUX(none, "mout_sw_aclk266_g2d", sw_aclk266_g2d_p, SRC_TOP12, 12, 1), | 356 | MUX(0, "mout_sw_aclk266_g2d", sw_aclk266_g2d_p, SRC_TOP12, 12, 1), |
398 | MUX(none, "mout_sw_aclk_g3d", sw_aclk_g3d_p, SRC_TOP12, 16, 1), | 357 | MUX(0, "mout_sw_aclk_g3d", sw_aclk_g3d_p, SRC_TOP12, 16, 1), |
399 | MUX(none, "mout_sw_aclk300_jpeg", sw_aclk300_jpeg_p, SRC_TOP12, 20, 1), | 358 | MUX(0, "mout_sw_aclk300_jpeg", sw_aclk300_jpeg_p, SRC_TOP12, 20, 1), |
400 | MUX(none, "mout_sw_aclk300_disp1", sw_aclk300_disp1_p, | 359 | MUX(0, "mout_sw_aclk300_disp1", sw_aclk300_disp1_p, |
401 | SRC_TOP12, 24, 1), | 360 | SRC_TOP12, 24, 1), |
402 | MUX(none, "mout_sw_aclk300_gscl", sw_aclk300_gscl_p, SRC_TOP12, 28, 1), | 361 | MUX(0, "mout_sw_aclk300_gscl", sw_aclk300_gscl_p, SRC_TOP12, 28, 1), |
403 | 362 | ||
404 | /* DISP1 Block */ | 363 | /* DISP1 Block */ |
405 | MUX(none, "mout_fimd1", group3_p, SRC_DISP10, 4, 1), | 364 | MUX(0, "mout_fimd1", group3_p, SRC_DISP10, 4, 1), |
406 | MUX(none, "mout_mipi1", group2_p, SRC_DISP10, 16, 3), | 365 | MUX(0, "mout_mipi1", group2_p, SRC_DISP10, 16, 3), |
407 | MUX(none, "mout_dp1", group2_p, SRC_DISP10, 20, 3), | 366 | MUX(0, "mout_dp1", group2_p, SRC_DISP10, 20, 3), |
408 | MUX(none, "mout_pixel", group2_p, SRC_DISP10, 24, 3), | 367 | MUX(0, "mout_pixel", group2_p, SRC_DISP10, 24, 3), |
409 | MUX(mout_hdmi, "mout_hdmi", hdmi_p, SRC_DISP10, 28, 1), | 368 | MUX(CLK_MOUT_HDMI, "mout_hdmi", hdmi_p, SRC_DISP10, 28, 1), |
410 | 369 | ||
411 | /* MAU Block */ | 370 | /* MAU Block */ |
412 | MUX(none, "mout_maudio0", maudio0_p, SRC_MAU, 28, 3), | 371 | MUX(0, "mout_maudio0", maudio0_p, SRC_MAU, 28, 3), |
413 | 372 | ||
414 | /* FSYS Block */ | 373 | /* FSYS Block */ |
415 | MUX(none, "mout_usbd301", group2_p, SRC_FSYS, 4, 3), | 374 | MUX(0, "mout_usbd301", group2_p, SRC_FSYS, 4, 3), |
416 | MUX(none, "mout_mmc0", group2_p, SRC_FSYS, 8, 3), | 375 | MUX(0, "mout_mmc0", group2_p, SRC_FSYS, 8, 3), |
417 | MUX(none, "mout_mmc1", group2_p, SRC_FSYS, 12, 3), | 376 | MUX(0, "mout_mmc1", group2_p, SRC_FSYS, 12, 3), |
418 | MUX(none, "mout_mmc2", group2_p, SRC_FSYS, 16, 3), | 377 | MUX(0, "mout_mmc2", group2_p, SRC_FSYS, 16, 3), |
419 | MUX(none, "mout_usbd300", group2_p, SRC_FSYS, 20, 3), | 378 | MUX(0, "mout_usbd300", group2_p, SRC_FSYS, 20, 3), |
420 | MUX(none, "mout_unipro", group2_p, SRC_FSYS, 24, 3), | 379 | MUX(0, "mout_unipro", group2_p, SRC_FSYS, 24, 3), |
421 | 380 | ||
422 | /* PERIC Block */ | 381 | /* PERIC Block */ |
423 | MUX(none, "mout_uart0", group2_p, SRC_PERIC0, 4, 3), | 382 | MUX(0, "mout_uart0", group2_p, SRC_PERIC0, 4, 3), |
424 | MUX(none, "mout_uart1", group2_p, SRC_PERIC0, 8, 3), | 383 | MUX(0, "mout_uart1", group2_p, SRC_PERIC0, 8, 3), |
425 | MUX(none, "mout_uart2", group2_p, SRC_PERIC0, 12, 3), | 384 | MUX(0, "mout_uart2", group2_p, SRC_PERIC0, 12, 3), |
426 | MUX(none, "mout_uart3", group2_p, SRC_PERIC0, 16, 3), | 385 | MUX(0, "mout_uart3", group2_p, SRC_PERIC0, 16, 3), |
427 | MUX(none, "mout_pwm", group2_p, SRC_PERIC0, 24, 3), | 386 | MUX(0, "mout_pwm", group2_p, SRC_PERIC0, 24, 3), |
428 | MUX(none, "mout_spdif", spdif_p, SRC_PERIC0, 28, 3), | 387 | MUX(0, "mout_spdif", spdif_p, SRC_PERIC0, 28, 3), |
429 | MUX(none, "mout_audio0", audio0_p, SRC_PERIC1, 8, 3), | 388 | MUX(0, "mout_audio0", audio0_p, SRC_PERIC1, 8, 3), |
430 | MUX(none, "mout_audio1", audio1_p, SRC_PERIC1, 12, 3), | 389 | MUX(0, "mout_audio1", audio1_p, SRC_PERIC1, 12, 3), |
431 | MUX(none, "mout_audio2", audio2_p, SRC_PERIC1, 16, 3), | 390 | MUX(0, "mout_audio2", audio2_p, SRC_PERIC1, 16, 3), |
432 | MUX(none, "mout_spi0", group2_p, SRC_PERIC1, 20, 3), | 391 | MUX(0, "mout_spi0", group2_p, SRC_PERIC1, 20, 3), |
433 | MUX(none, "mout_spi1", group2_p, SRC_PERIC1, 24, 3), | 392 | MUX(0, "mout_spi1", group2_p, SRC_PERIC1, 24, 3), |
434 | MUX(none, "mout_spi2", group2_p, SRC_PERIC1, 28, 3), | 393 | MUX(0, "mout_spi2", group2_p, SRC_PERIC1, 28, 3), |
435 | }; | 394 | }; |
436 | 395 | ||
437 | static struct samsung_div_clock exynos5420_div_clks[] __initdata = { | 396 | static struct samsung_div_clock exynos5420_div_clks[] __initdata = { |
438 | DIV(none, "div_arm", "mout_cpu", DIV_CPU0, 0, 3), | 397 | DIV(0, "div_arm", "mout_cpu", DIV_CPU0, 0, 3), |
439 | DIV(none, "sclk_apll", "mout_apll", DIV_CPU0, 24, 3), | 398 | DIV(0, "sclk_apll", "mout_apll", DIV_CPU0, 24, 3), |
440 | DIV(none, "armclk2", "div_arm", DIV_CPU0, 28, 3), | 399 | DIV(0, "armclk2", "div_arm", DIV_CPU0, 28, 3), |
441 | DIV(none, "div_kfc", "mout_cpu_kfc", DIV_KFC0, 0, 3), | 400 | DIV(0, "div_kfc", "mout_cpu_kfc", DIV_KFC0, 0, 3), |
442 | DIV(none, "sclk_kpll", "mout_kpll", DIV_KFC0, 24, 3), | 401 | DIV(0, "sclk_kpll", "mout_kpll", DIV_KFC0, 24, 3), |
443 | 402 | ||
444 | DIV(none, "dout_aclk400_mscl", "mout_aclk400_mscl", DIV_TOP0, 4, 3), | 403 | DIV(0, "dout_aclk400_mscl", "mout_aclk400_mscl", DIV_TOP0, 4, 3), |
445 | DIV(none, "dout_aclk200", "mout_aclk200", DIV_TOP0, 8, 3), | 404 | DIV(0, "dout_aclk200", "mout_aclk200", DIV_TOP0, 8, 3), |
446 | DIV(none, "dout_aclk200_fsys2", "mout_aclk200_fsys2", DIV_TOP0, 12, 3), | 405 | DIV(0, "dout_aclk200_fsys2", "mout_aclk200_fsys2", DIV_TOP0, 12, 3), |
447 | DIV(none, "dout_pclk200_fsys", "mout_pclk200_fsys", DIV_TOP0, 24, 3), | 406 | DIV(0, "dout_pclk200_fsys", "mout_pclk200_fsys", DIV_TOP0, 24, 3), |
448 | DIV(none, "dout_aclk200_fsys", "mout_aclk200_fsys", DIV_TOP0, 28, 3), | 407 | DIV(0, "dout_aclk200_fsys", "mout_aclk200_fsys", DIV_TOP0, 28, 3), |
449 | 408 | ||
450 | DIV(none, "dout_aclk333_432_gscl", "mout_aclk333_432_gscl", | 409 | DIV(0, "dout_aclk333_432_gscl", "mout_aclk333_432_gscl", |
451 | DIV_TOP1, 0, 3), | 410 | DIV_TOP1, 0, 3), |
452 | DIV(none, "dout_aclk66", "mout_aclk66", DIV_TOP1, 8, 6), | 411 | DIV(0, "dout_aclk66", "mout_aclk66", DIV_TOP1, 8, 6), |
453 | DIV(none, "dout_aclk266", "mout_aclk266", DIV_TOP1, 20, 3), | 412 | DIV(0, "dout_aclk266", "mout_aclk266", DIV_TOP1, 20, 3), |
454 | DIV(none, "dout_aclk166", "mout_aclk166", DIV_TOP1, 24, 3), | 413 | DIV(0, "dout_aclk166", "mout_aclk166", DIV_TOP1, 24, 3), |
455 | DIV(none, "dout_aclk333", "mout_aclk333", DIV_TOP1, 28, 3), | 414 | DIV(0, "dout_aclk333", "mout_aclk333", DIV_TOP1, 28, 3), |
456 | 415 | ||
457 | DIV(none, "dout_aclk333_g2d", "mout_aclk333_g2d", DIV_TOP2, 8, 3), | 416 | DIV(0, "dout_aclk333_g2d", "mout_aclk333_g2d", DIV_TOP2, 8, 3), |
458 | DIV(none, "dout_aclk266_g2d", "mout_aclk266_g2d", DIV_TOP2, 12, 3), | 417 | DIV(0, "dout_aclk266_g2d", "mout_aclk266_g2d", DIV_TOP2, 12, 3), |
459 | DIV(none, "dout_aclk_g3d", "mout_aclk_g3d", DIV_TOP2, 16, 3), | 418 | DIV(0, "dout_aclk_g3d", "mout_aclk_g3d", DIV_TOP2, 16, 3), |
460 | DIV(none, "dout_aclk300_jpeg", "mout_aclk300_jpeg", DIV_TOP2, 20, 3), | 419 | DIV(0, "dout_aclk300_jpeg", "mout_aclk300_jpeg", DIV_TOP2, 20, 3), |
461 | DIV_A(none, "dout_aclk300_disp1", "mout_aclk300_disp1", | 420 | DIV_A(0, "dout_aclk300_disp1", "mout_aclk300_disp1", |
462 | DIV_TOP2, 24, 3, "aclk300_disp1"), | 421 | DIV_TOP2, 24, 3, "aclk300_disp1"), |
463 | DIV(none, "dout_aclk300_gscl", "mout_aclk300_gscl", DIV_TOP2, 28, 3), | 422 | DIV(0, "dout_aclk300_gscl", "mout_aclk300_gscl", DIV_TOP2, 28, 3), |
464 | 423 | ||
465 | /* DISP1 Block */ | 424 | /* DISP1 Block */ |
466 | DIV(none, "dout_fimd1", "mout_fimd1", DIV_DISP10, 0, 4), | 425 | DIV(0, "dout_fimd1", "mout_fimd1", DIV_DISP10, 0, 4), |
467 | DIV(none, "dout_mipi1", "mout_mipi1", DIV_DISP10, 16, 8), | 426 | DIV(0, "dout_mipi1", "mout_mipi1", DIV_DISP10, 16, 8), |
468 | DIV(none, "dout_dp1", "mout_dp1", DIV_DISP10, 24, 4), | 427 | DIV(0, "dout_dp1", "mout_dp1", DIV_DISP10, 24, 4), |
469 | DIV(dout_pixel, "dout_hdmi_pixel", "mout_pixel", DIV_DISP10, 28, 4), | 428 | DIV(CLK_DOUT_PIXEL, "dout_hdmi_pixel", "mout_pixel", DIV_DISP10, 28, 4), |
470 | 429 | ||
471 | /* Audio Block */ | 430 | /* Audio Block */ |
472 | DIV(none, "dout_maudio0", "mout_maudio0", DIV_MAU, 20, 4), | 431 | DIV(0, "dout_maudio0", "mout_maudio0", DIV_MAU, 20, 4), |
473 | DIV(none, "dout_maupcm0", "dout_maudio0", DIV_MAU, 24, 8), | 432 | DIV(0, "dout_maupcm0", "dout_maudio0", DIV_MAU, 24, 8), |
474 | 433 | ||
475 | /* USB3.0 */ | 434 | /* USB3.0 */ |
476 | DIV(none, "dout_usbphy301", "mout_usbd301", DIV_FSYS0, 12, 4), | 435 | DIV(0, "dout_usbphy301", "mout_usbd301", DIV_FSYS0, 12, 4), |
477 | DIV(none, "dout_usbphy300", "mout_usbd300", DIV_FSYS0, 16, 4), | 436 | DIV(0, "dout_usbphy300", "mout_usbd300", DIV_FSYS0, 16, 4), |
478 | DIV(none, "dout_usbd301", "mout_usbd301", DIV_FSYS0, 20, 4), | 437 | DIV(0, "dout_usbd301", "mout_usbd301", DIV_FSYS0, 20, 4), |
479 | DIV(none, "dout_usbd300", "mout_usbd300", DIV_FSYS0, 24, 4), | 438 | DIV(0, "dout_usbd300", "mout_usbd300", DIV_FSYS0, 24, 4), |
480 | 439 | ||
481 | /* MMC */ | 440 | /* MMC */ |
482 | DIV(none, "dout_mmc0", "mout_mmc0", DIV_FSYS1, 0, 10), | 441 | DIV(0, "dout_mmc0", "mout_mmc0", DIV_FSYS1, 0, 10), |
483 | DIV(none, "dout_mmc1", "mout_mmc1", DIV_FSYS1, 10, 10), | 442 | DIV(0, "dout_mmc1", "mout_mmc1", DIV_FSYS1, 10, 10), |
484 | DIV(none, "dout_mmc2", "mout_mmc2", DIV_FSYS1, 20, 10), | 443 | DIV(0, "dout_mmc2", "mout_mmc2", DIV_FSYS1, 20, 10), |
485 | 444 | ||
486 | DIV(none, "dout_unipro", "mout_unipro", DIV_FSYS2, 24, 8), | 445 | DIV(0, "dout_unipro", "mout_unipro", DIV_FSYS2, 24, 8), |
487 | 446 | ||
488 | /* UART and PWM */ | 447 | /* UART and PWM */ |
489 | DIV(none, "dout_uart0", "mout_uart0", DIV_PERIC0, 8, 4), | 448 | DIV(0, "dout_uart0", "mout_uart0", DIV_PERIC0, 8, 4), |
490 | DIV(none, "dout_uart1", "mout_uart1", DIV_PERIC0, 12, 4), | 449 | DIV(0, "dout_uart1", "mout_uart1", DIV_PERIC0, 12, 4), |
491 | DIV(none, "dout_uart2", "mout_uart2", DIV_PERIC0, 16, 4), | 450 | DIV(0, "dout_uart2", "mout_uart2", DIV_PERIC0, 16, 4), |
492 | DIV(none, "dout_uart3", "mout_uart3", DIV_PERIC0, 20, 4), | 451 | DIV(0, "dout_uart3", "mout_uart3", DIV_PERIC0, 20, 4), |
493 | DIV(none, "dout_pwm", "mout_pwm", DIV_PERIC0, 28, 4), | 452 | DIV(0, "dout_pwm", "mout_pwm", DIV_PERIC0, 28, 4), |
494 | 453 | ||
495 | /* SPI */ | 454 | /* SPI */ |
496 | DIV(none, "dout_spi0", "mout_spi0", DIV_PERIC1, 20, 4), | 455 | DIV(0, "dout_spi0", "mout_spi0", DIV_PERIC1, 20, 4), |
497 | DIV(none, "dout_spi1", "mout_spi1", DIV_PERIC1, 24, 4), | 456 | DIV(0, "dout_spi1", "mout_spi1", DIV_PERIC1, 24, 4), |
498 | DIV(none, "dout_spi2", "mout_spi2", DIV_PERIC1, 28, 4), | 457 | DIV(0, "dout_spi2", "mout_spi2", DIV_PERIC1, 28, 4), |
499 | 458 | ||
500 | /* PCM */ | 459 | /* PCM */ |
501 | DIV(none, "dout_pcm1", "dout_audio1", DIV_PERIC2, 16, 8), | 460 | DIV(0, "dout_pcm1", "dout_audio1", DIV_PERIC2, 16, 8), |
502 | DIV(none, "dout_pcm2", "dout_audio2", DIV_PERIC2, 24, 8), | 461 | DIV(0, "dout_pcm2", "dout_audio2", DIV_PERIC2, 24, 8), |
503 | 462 | ||
504 | /* Audio - I2S */ | 463 | /* Audio - I2S */ |
505 | DIV(none, "dout_i2s1", "dout_audio1", DIV_PERIC3, 6, 6), | 464 | DIV(0, "dout_i2s1", "dout_audio1", DIV_PERIC3, 6, 6), |
506 | DIV(none, "dout_i2s2", "dout_audio2", DIV_PERIC3, 12, 6), | 465 | DIV(0, "dout_i2s2", "dout_audio2", DIV_PERIC3, 12, 6), |
507 | DIV(none, "dout_audio0", "mout_audio0", DIV_PERIC3, 20, 4), | 466 | DIV(0, "dout_audio0", "mout_audio0", DIV_PERIC3, 20, 4), |
508 | DIV(none, "dout_audio1", "mout_audio1", DIV_PERIC3, 24, 4), | 467 | DIV(0, "dout_audio1", "mout_audio1", DIV_PERIC3, 24, 4), |
509 | DIV(none, "dout_audio2", "mout_audio2", DIV_PERIC3, 28, 4), | 468 | DIV(0, "dout_audio2", "mout_audio2", DIV_PERIC3, 28, 4), |
510 | 469 | ||
511 | /* SPI Pre-Ratio */ | 470 | /* SPI Pre-Ratio */ |
512 | DIV(none, "dout_pre_spi0", "dout_spi0", DIV_PERIC4, 8, 8), | 471 | DIV(0, "dout_pre_spi0", "dout_spi0", DIV_PERIC4, 8, 8), |
513 | DIV(none, "dout_pre_spi1", "dout_spi1", DIV_PERIC4, 16, 8), | 472 | DIV(0, "dout_pre_spi1", "dout_spi1", DIV_PERIC4, 16, 8), |
514 | DIV(none, "dout_pre_spi2", "dout_spi2", DIV_PERIC4, 24, 8), | 473 | DIV(0, "dout_pre_spi2", "dout_spi2", DIV_PERIC4, 24, 8), |
515 | }; | 474 | }; |
516 | 475 | ||
517 | static struct samsung_gate_clock exynos5420_gate_clks[] __initdata = { | 476 | static struct samsung_gate_clock exynos5420_gate_clks[] __initdata = { |
518 | /* TODO: Re-verify the CG bits for all the gate clocks */ | 477 | /* TODO: Re-verify the CG bits for all the gate clocks */ |
519 | GATE_A(mct, "pclk_st", "aclk66_psgen", GATE_BUS_PERIS1, 2, 0, 0, "mct"), | 478 | GATE_A(CLK_MCT, "pclk_st", "aclk66_psgen", GATE_BUS_PERIS1, 2, 0, 0, |
479 | "mct"), | ||
520 | 480 | ||
521 | GATE(0, "aclk200_fsys", "mout_user_aclk200_fsys", | 481 | GATE(0, "aclk200_fsys", "mout_user_aclk200_fsys", |
522 | GATE_BUS_FSYS0, 9, CLK_IGNORE_UNUSED, 0), | 482 | GATE_BUS_FSYS0, 9, CLK_IGNORE_UNUSED, 0), |
@@ -545,217 +505,227 @@ static struct samsung_gate_clock exynos5420_gate_clks[] __initdata = { | |||
545 | GATE_BUS_TOP, 15, CLK_IGNORE_UNUSED, 0), | 505 | GATE_BUS_TOP, 15, CLK_IGNORE_UNUSED, 0), |
546 | 506 | ||
547 | /* sclk */ | 507 | /* sclk */ |
548 | GATE(sclk_uart0, "sclk_uart0", "dout_uart0", | 508 | GATE(CLK_SCLK_UART0, "sclk_uart0", "dout_uart0", |
549 | GATE_TOP_SCLK_PERIC, 0, CLK_SET_RATE_PARENT, 0), | 509 | GATE_TOP_SCLK_PERIC, 0, CLK_SET_RATE_PARENT, 0), |
550 | GATE(sclk_uart1, "sclk_uart1", "dout_uart1", | 510 | GATE(CLK_SCLK_UART1, "sclk_uart1", "dout_uart1", |
551 | GATE_TOP_SCLK_PERIC, 1, CLK_SET_RATE_PARENT, 0), | 511 | GATE_TOP_SCLK_PERIC, 1, CLK_SET_RATE_PARENT, 0), |
552 | GATE(sclk_uart2, "sclk_uart2", "dout_uart2", | 512 | GATE(CLK_SCLK_UART2, "sclk_uart2", "dout_uart2", |
553 | GATE_TOP_SCLK_PERIC, 2, CLK_SET_RATE_PARENT, 0), | 513 | GATE_TOP_SCLK_PERIC, 2, CLK_SET_RATE_PARENT, 0), |
554 | GATE(sclk_uart3, "sclk_uart3", "dout_uart3", | 514 | GATE(CLK_SCLK_UART3, "sclk_uart3", "dout_uart3", |
555 | GATE_TOP_SCLK_PERIC, 3, CLK_SET_RATE_PARENT, 0), | 515 | GATE_TOP_SCLK_PERIC, 3, CLK_SET_RATE_PARENT, 0), |
556 | GATE(sclk_spi0, "sclk_spi0", "dout_pre_spi0", | 516 | GATE(CLK_SCLK_SPI0, "sclk_spi0", "dout_pre_spi0", |
557 | GATE_TOP_SCLK_PERIC, 6, CLK_SET_RATE_PARENT, 0), | 517 | GATE_TOP_SCLK_PERIC, 6, CLK_SET_RATE_PARENT, 0), |
558 | GATE(sclk_spi1, "sclk_spi1", "dout_pre_spi1", | 518 | GATE(CLK_SCLK_SPI1, "sclk_spi1", "dout_pre_spi1", |
559 | GATE_TOP_SCLK_PERIC, 7, CLK_SET_RATE_PARENT, 0), | 519 | GATE_TOP_SCLK_PERIC, 7, CLK_SET_RATE_PARENT, 0), |
560 | GATE(sclk_spi2, "sclk_spi2", "dout_pre_spi2", | 520 | GATE(CLK_SCLK_SPI2, "sclk_spi2", "dout_pre_spi2", |
561 | GATE_TOP_SCLK_PERIC, 8, CLK_SET_RATE_PARENT, 0), | 521 | GATE_TOP_SCLK_PERIC, 8, CLK_SET_RATE_PARENT, 0), |
562 | GATE(sclk_spdif, "sclk_spdif", "mout_spdif", | 522 | GATE(CLK_SCLK_SPDIF, "sclk_spdif", "mout_spdif", |
563 | GATE_TOP_SCLK_PERIC, 9, CLK_SET_RATE_PARENT, 0), | 523 | GATE_TOP_SCLK_PERIC, 9, CLK_SET_RATE_PARENT, 0), |
564 | GATE(sclk_pwm, "sclk_pwm", "dout_pwm", | 524 | GATE(CLK_SCLK_PWM, "sclk_pwm", "dout_pwm", |
565 | GATE_TOP_SCLK_PERIC, 11, CLK_SET_RATE_PARENT, 0), | 525 | GATE_TOP_SCLK_PERIC, 11, CLK_SET_RATE_PARENT, 0), |
566 | GATE(sclk_pcm1, "sclk_pcm1", "dout_pcm1", | 526 | GATE(CLK_SCLK_PCM1, "sclk_pcm1", "dout_pcm1", |
567 | GATE_TOP_SCLK_PERIC, 15, CLK_SET_RATE_PARENT, 0), | 527 | GATE_TOP_SCLK_PERIC, 15, CLK_SET_RATE_PARENT, 0), |
568 | GATE(sclk_pcm2, "sclk_pcm2", "dout_pcm2", | 528 | GATE(CLK_SCLK_PCM2, "sclk_pcm2", "dout_pcm2", |
569 | GATE_TOP_SCLK_PERIC, 16, CLK_SET_RATE_PARENT, 0), | 529 | GATE_TOP_SCLK_PERIC, 16, CLK_SET_RATE_PARENT, 0), |
570 | GATE(sclk_i2s1, "sclk_i2s1", "dout_i2s1", | 530 | GATE(CLK_SCLK_I2S1, "sclk_i2s1", "dout_i2s1", |
571 | GATE_TOP_SCLK_PERIC, 17, CLK_SET_RATE_PARENT, 0), | 531 | GATE_TOP_SCLK_PERIC, 17, CLK_SET_RATE_PARENT, 0), |
572 | GATE(sclk_i2s2, "sclk_i2s2", "dout_i2s2", | 532 | GATE(CLK_SCLK_I2S2, "sclk_i2s2", "dout_i2s2", |
573 | GATE_TOP_SCLK_PERIC, 18, CLK_SET_RATE_PARENT, 0), | 533 | GATE_TOP_SCLK_PERIC, 18, CLK_SET_RATE_PARENT, 0), |
574 | 534 | ||
575 | GATE(sclk_mmc0, "sclk_mmc0", "dout_mmc0", | 535 | GATE(CLK_SCLK_MMC0, "sclk_mmc0", "dout_mmc0", |
576 | GATE_TOP_SCLK_FSYS, 0, CLK_SET_RATE_PARENT, 0), | 536 | GATE_TOP_SCLK_FSYS, 0, CLK_SET_RATE_PARENT, 0), |
577 | GATE(sclk_mmc1, "sclk_mmc1", "dout_mmc1", | 537 | GATE(CLK_SCLK_MMC1, "sclk_mmc1", "dout_mmc1", |
578 | GATE_TOP_SCLK_FSYS, 1, CLK_SET_RATE_PARENT, 0), | 538 | GATE_TOP_SCLK_FSYS, 1, CLK_SET_RATE_PARENT, 0), |
579 | GATE(sclk_mmc2, "sclk_mmc2", "dout_mmc2", | 539 | GATE(CLK_SCLK_MMC2, "sclk_mmc2", "dout_mmc2", |
580 | GATE_TOP_SCLK_FSYS, 2, CLK_SET_RATE_PARENT, 0), | 540 | GATE_TOP_SCLK_FSYS, 2, CLK_SET_RATE_PARENT, 0), |
581 | GATE(sclk_usbphy301, "sclk_usbphy301", "dout_usbphy301", | 541 | GATE(CLK_SCLK_USBPHY301, "sclk_usbphy301", "dout_usbphy301", |
582 | GATE_TOP_SCLK_FSYS, 7, CLK_SET_RATE_PARENT, 0), | 542 | GATE_TOP_SCLK_FSYS, 7, CLK_SET_RATE_PARENT, 0), |
583 | GATE(sclk_usbphy300, "sclk_usbphy300", "dout_usbphy300", | 543 | GATE(CLK_SCLK_USBPHY300, "sclk_usbphy300", "dout_usbphy300", |
584 | GATE_TOP_SCLK_FSYS, 8, CLK_SET_RATE_PARENT, 0), | 544 | GATE_TOP_SCLK_FSYS, 8, CLK_SET_RATE_PARENT, 0), |
585 | GATE(sclk_usbd300, "sclk_usbd300", "dout_usbd300", | 545 | GATE(CLK_SCLK_USBD300, "sclk_usbd300", "dout_usbd300", |
586 | GATE_TOP_SCLK_FSYS, 9, CLK_SET_RATE_PARENT, 0), | 546 | GATE_TOP_SCLK_FSYS, 9, CLK_SET_RATE_PARENT, 0), |
587 | GATE(sclk_usbd301, "sclk_usbd301", "dout_usbd301", | 547 | GATE(CLK_SCLK_USBD301, "sclk_usbd301", "dout_usbd301", |
588 | GATE_TOP_SCLK_FSYS, 10, CLK_SET_RATE_PARENT, 0), | 548 | GATE_TOP_SCLK_FSYS, 10, CLK_SET_RATE_PARENT, 0), |
589 | 549 | ||
590 | GATE(sclk_usbd301, "sclk_unipro", "dout_unipro", | 550 | GATE(CLK_SCLK_USBD301, "sclk_unipro", "dout_unipro", |
591 | SRC_MASK_FSYS, 24, CLK_SET_RATE_PARENT, 0), | 551 | SRC_MASK_FSYS, 24, CLK_SET_RATE_PARENT, 0), |
592 | 552 | ||
593 | GATE(sclk_gscl_wa, "sclk_gscl_wa", "aclK333_432_gscl", | 553 | GATE(CLK_SCLK_GSCL_WA, "sclk_gscl_wa", "aclK333_432_gscl", |
594 | GATE_TOP_SCLK_GSCL, 6, CLK_SET_RATE_PARENT, 0), | 554 | GATE_TOP_SCLK_GSCL, 6, CLK_SET_RATE_PARENT, 0), |
595 | GATE(sclk_gscl_wb, "sclk_gscl_wb", "aclk333_432_gscl", | 555 | GATE(CLK_SCLK_GSCL_WB, "sclk_gscl_wb", "aclk333_432_gscl", |
596 | GATE_TOP_SCLK_GSCL, 7, CLK_SET_RATE_PARENT, 0), | 556 | GATE_TOP_SCLK_GSCL, 7, CLK_SET_RATE_PARENT, 0), |
597 | 557 | ||
598 | /* Display */ | 558 | /* Display */ |
599 | GATE(sclk_fimd1, "sclk_fimd1", "dout_fimd1", | 559 | GATE(CLK_SCLK_FIMD1, "sclk_fimd1", "dout_fimd1", |
600 | GATE_TOP_SCLK_DISP1, 0, CLK_SET_RATE_PARENT, 0), | 560 | GATE_TOP_SCLK_DISP1, 0, CLK_SET_RATE_PARENT, 0), |
601 | GATE(sclk_mipi1, "sclk_mipi1", "dout_mipi1", | 561 | GATE(CLK_SCLK_MIPI1, "sclk_mipi1", "dout_mipi1", |
602 | GATE_TOP_SCLK_DISP1, 3, CLK_SET_RATE_PARENT, 0), | 562 | GATE_TOP_SCLK_DISP1, 3, CLK_SET_RATE_PARENT, 0), |
603 | GATE(sclk_hdmi, "sclk_hdmi", "mout_hdmi", | 563 | GATE(CLK_SCLK_HDMI, "sclk_hdmi", "mout_hdmi", |
604 | GATE_TOP_SCLK_DISP1, 9, CLK_SET_RATE_PARENT, 0), | 564 | GATE_TOP_SCLK_DISP1, 9, CLK_SET_RATE_PARENT, 0), |
605 | GATE(sclk_pixel, "sclk_pixel", "dout_hdmi_pixel", | 565 | GATE(CLK_SCLK_PIXEL, "sclk_pixel", "dout_hdmi_pixel", |
606 | GATE_TOP_SCLK_DISP1, 10, CLK_SET_RATE_PARENT, 0), | 566 | GATE_TOP_SCLK_DISP1, 10, CLK_SET_RATE_PARENT, 0), |
607 | GATE(sclk_dp1, "sclk_dp1", "dout_dp1", | 567 | GATE(CLK_SCLK_DP1, "sclk_dp1", "dout_dp1", |
608 | GATE_TOP_SCLK_DISP1, 20, CLK_SET_RATE_PARENT, 0), | 568 | GATE_TOP_SCLK_DISP1, 20, CLK_SET_RATE_PARENT, 0), |
609 | 569 | ||
610 | /* Maudio Block */ | 570 | /* Maudio Block */ |
611 | GATE(sclk_maudio0, "sclk_maudio0", "dout_maudio0", | 571 | GATE(CLK_SCLK_MAUDIO0, "sclk_maudio0", "dout_maudio0", |
612 | GATE_TOP_SCLK_MAU, 0, CLK_SET_RATE_PARENT, 0), | 572 | GATE_TOP_SCLK_MAU, 0, CLK_SET_RATE_PARENT, 0), |
613 | GATE(sclk_maupcm0, "sclk_maupcm0", "dout_maupcm0", | 573 | GATE(CLK_SCLK_MAUPCM0, "sclk_maupcm0", "dout_maupcm0", |
614 | GATE_TOP_SCLK_MAU, 1, CLK_SET_RATE_PARENT, 0), | 574 | GATE_TOP_SCLK_MAU, 1, CLK_SET_RATE_PARENT, 0), |
615 | /* FSYS */ | 575 | /* FSYS */ |
616 | GATE(tsi, "tsi", "aclk200_fsys", GATE_BUS_FSYS0, 0, 0, 0), | 576 | GATE(CLK_TSI, "tsi", "aclk200_fsys", GATE_BUS_FSYS0, 0, 0, 0), |
617 | GATE(pdma0, "pdma0", "aclk200_fsys", GATE_BUS_FSYS0, 1, 0, 0), | 577 | GATE(CLK_PDMA0, "pdma0", "aclk200_fsys", GATE_BUS_FSYS0, 1, 0, 0), |
618 | GATE(pdma1, "pdma1", "aclk200_fsys", GATE_BUS_FSYS0, 2, 0, 0), | 578 | GATE(CLK_PDMA1, "pdma1", "aclk200_fsys", GATE_BUS_FSYS0, 2, 0, 0), |
619 | GATE(ufs, "ufs", "aclk200_fsys2", GATE_BUS_FSYS0, 3, 0, 0), | 579 | GATE(CLK_UFS, "ufs", "aclk200_fsys2", GATE_BUS_FSYS0, 3, 0, 0), |
620 | GATE(rtic, "rtic", "aclk200_fsys", GATE_BUS_FSYS0, 5, 0, 0), | 580 | GATE(CLK_RTIC, "rtic", "aclk200_fsys", GATE_BUS_FSYS0, 5, 0, 0), |
621 | GATE(mmc0, "mmc0", "aclk200_fsys2", GATE_BUS_FSYS0, 12, 0, 0), | 581 | GATE(CLK_MMC0, "mmc0", "aclk200_fsys2", GATE_BUS_FSYS0, 12, 0, 0), |
622 | GATE(mmc1, "mmc1", "aclk200_fsys2", GATE_BUS_FSYS0, 13, 0, 0), | 582 | GATE(CLK_MMC1, "mmc1", "aclk200_fsys2", GATE_BUS_FSYS0, 13, 0, 0), |
623 | GATE(mmc2, "mmc2", "aclk200_fsys2", GATE_BUS_FSYS0, 14, 0, 0), | 583 | GATE(CLK_MMC2, "mmc2", "aclk200_fsys2", GATE_BUS_FSYS0, 14, 0, 0), |
624 | GATE(sromc, "sromc", "aclk200_fsys2", | 584 | GATE(CLK_SROMC, "sromc", "aclk200_fsys2", |
625 | GATE_BUS_FSYS0, 19, CLK_IGNORE_UNUSED, 0), | 585 | GATE_BUS_FSYS0, 19, CLK_IGNORE_UNUSED, 0), |
626 | GATE(usbh20, "usbh20", "aclk200_fsys", GATE_BUS_FSYS0, 20, 0, 0), | 586 | GATE(CLK_USBH20, "usbh20", "aclk200_fsys", GATE_BUS_FSYS0, 20, 0, 0), |
627 | GATE(usbd300, "usbd300", "aclk200_fsys", GATE_BUS_FSYS0, 21, 0, 0), | 587 | GATE(CLK_USBD300, "usbd300", "aclk200_fsys", GATE_BUS_FSYS0, 21, 0, 0), |
628 | GATE(usbd301, "usbd301", "aclk200_fsys", GATE_BUS_FSYS0, 28, 0, 0), | 588 | GATE(CLK_USBD301, "usbd301", "aclk200_fsys", GATE_BUS_FSYS0, 28, 0, 0), |
629 | 589 | ||
630 | /* UART */ | 590 | /* UART */ |
631 | GATE(uart0, "uart0", "aclk66_peric", GATE_BUS_PERIC, 4, 0, 0), | 591 | GATE(CLK_UART0, "uart0", "aclk66_peric", GATE_BUS_PERIC, 4, 0, 0), |
632 | GATE(uart1, "uart1", "aclk66_peric", GATE_BUS_PERIC, 5, 0, 0), | 592 | GATE(CLK_UART1, "uart1", "aclk66_peric", GATE_BUS_PERIC, 5, 0, 0), |
633 | GATE_A(uart2, "uart2", "aclk66_peric", | 593 | GATE_A(CLK_UART2, "uart2", "aclk66_peric", |
634 | GATE_BUS_PERIC, 6, CLK_IGNORE_UNUSED, 0, "uart2"), | 594 | GATE_BUS_PERIC, 6, CLK_IGNORE_UNUSED, 0, "uart2"), |
635 | GATE(uart3, "uart3", "aclk66_peric", GATE_BUS_PERIC, 7, 0, 0), | 595 | GATE(CLK_UART3, "uart3", "aclk66_peric", GATE_BUS_PERIC, 7, 0, 0), |
636 | /* I2C */ | 596 | /* I2C */ |
637 | GATE(i2c0, "i2c0", "aclk66_peric", GATE_BUS_PERIC, 9, 0, 0), | 597 | GATE(CLK_I2C0, "i2c0", "aclk66_peric", GATE_BUS_PERIC, 9, 0, 0), |
638 | GATE(i2c1, "i2c1", "aclk66_peric", GATE_BUS_PERIC, 10, 0, 0), | 598 | GATE(CLK_I2C1, "i2c1", "aclk66_peric", GATE_BUS_PERIC, 10, 0, 0), |
639 | GATE(i2c2, "i2c2", "aclk66_peric", GATE_BUS_PERIC, 11, 0, 0), | 599 | GATE(CLK_I2C2, "i2c2", "aclk66_peric", GATE_BUS_PERIC, 11, 0, 0), |
640 | GATE(i2c3, "i2c3", "aclk66_peric", GATE_BUS_PERIC, 12, 0, 0), | 600 | GATE(CLK_I2C3, "i2c3", "aclk66_peric", GATE_BUS_PERIC, 12, 0, 0), |
641 | GATE(i2c4, "i2c4", "aclk66_peric", GATE_BUS_PERIC, 13, 0, 0), | 601 | GATE(CLK_I2C4, "i2c4", "aclk66_peric", GATE_BUS_PERIC, 13, 0, 0), |
642 | GATE(i2c5, "i2c5", "aclk66_peric", GATE_BUS_PERIC, 14, 0, 0), | 602 | GATE(CLK_I2C5, "i2c5", "aclk66_peric", GATE_BUS_PERIC, 14, 0, 0), |
643 | GATE(i2c6, "i2c6", "aclk66_peric", GATE_BUS_PERIC, 15, 0, 0), | 603 | GATE(CLK_I2C6, "i2c6", "aclk66_peric", GATE_BUS_PERIC, 15, 0, 0), |
644 | GATE(i2c7, "i2c7", "aclk66_peric", GATE_BUS_PERIC, 16, 0, 0), | 604 | GATE(CLK_I2C7, "i2c7", "aclk66_peric", GATE_BUS_PERIC, 16, 0, 0), |
645 | GATE(i2c_hdmi, "i2c_hdmi", "aclk66_peric", GATE_BUS_PERIC, 17, 0, 0), | 605 | GATE(CLK_I2C_HDMI, "i2c_hdmi", "aclk66_peric", GATE_BUS_PERIC, 17, 0, |
646 | GATE(tsadc, "tsadc", "aclk66_peric", GATE_BUS_PERIC, 18, 0, 0), | 606 | 0), |
607 | GATE(CLK_TSADC, "tsadc", "aclk66_peric", GATE_BUS_PERIC, 18, 0, 0), | ||
647 | /* SPI */ | 608 | /* SPI */ |
648 | GATE(spi0, "spi0", "aclk66_peric", GATE_BUS_PERIC, 19, 0, 0), | 609 | GATE(CLK_SPI0, "spi0", "aclk66_peric", GATE_BUS_PERIC, 19, 0, 0), |
649 | GATE(spi1, "spi1", "aclk66_peric", GATE_BUS_PERIC, 20, 0, 0), | 610 | GATE(CLK_SPI1, "spi1", "aclk66_peric", GATE_BUS_PERIC, 20, 0, 0), |
650 | GATE(spi2, "spi2", "aclk66_peric", GATE_BUS_PERIC, 21, 0, 0), | 611 | GATE(CLK_SPI2, "spi2", "aclk66_peric", GATE_BUS_PERIC, 21, 0, 0), |
651 | GATE(keyif, "keyif", "aclk66_peric", GATE_BUS_PERIC, 22, 0, 0), | 612 | GATE(CLK_KEYIF, "keyif", "aclk66_peric", GATE_BUS_PERIC, 22, 0, 0), |
652 | /* I2S */ | 613 | /* I2S */ |
653 | GATE(i2s1, "i2s1", "aclk66_peric", GATE_BUS_PERIC, 23, 0, 0), | 614 | GATE(CLK_I2S1, "i2s1", "aclk66_peric", GATE_BUS_PERIC, 23, 0, 0), |
654 | GATE(i2s2, "i2s2", "aclk66_peric", GATE_BUS_PERIC, 24, 0, 0), | 615 | GATE(CLK_I2S2, "i2s2", "aclk66_peric", GATE_BUS_PERIC, 24, 0, 0), |
655 | /* PCM */ | 616 | /* PCM */ |
656 | GATE(pcm1, "pcm1", "aclk66_peric", GATE_BUS_PERIC, 25, 0, 0), | 617 | GATE(CLK_PCM1, "pcm1", "aclk66_peric", GATE_BUS_PERIC, 25, 0, 0), |
657 | GATE(pcm2, "pcm2", "aclk66_peric", GATE_BUS_PERIC, 26, 0, 0), | 618 | GATE(CLK_PCM2, "pcm2", "aclk66_peric", GATE_BUS_PERIC, 26, 0, 0), |
658 | /* PWM */ | 619 | /* PWM */ |
659 | GATE(pwm, "pwm", "aclk66_peric", GATE_BUS_PERIC, 27, 0, 0), | 620 | GATE(CLK_PWM, "pwm", "aclk66_peric", GATE_BUS_PERIC, 27, 0, 0), |
660 | /* SPDIF */ | 621 | /* SPDIF */ |
661 | GATE(spdif, "spdif", "aclk66_peric", GATE_BUS_PERIC, 29, 0, 0), | 622 | GATE(CLK_SPDIF, "spdif", "aclk66_peric", GATE_BUS_PERIC, 29, 0, 0), |
662 | 623 | ||
663 | GATE(i2c8, "i2c8", "aclk66_peric", GATE_BUS_PERIC1, 0, 0, 0), | 624 | GATE(CLK_I2C8, "i2c8", "aclk66_peric", GATE_BUS_PERIC1, 0, 0, 0), |
664 | GATE(i2c9, "i2c9", "aclk66_peric", GATE_BUS_PERIC1, 1, 0, 0), | 625 | GATE(CLK_I2C9, "i2c9", "aclk66_peric", GATE_BUS_PERIC1, 1, 0, 0), |
665 | GATE(i2c10, "i2c10", "aclk66_peric", GATE_BUS_PERIC1, 2, 0, 0), | 626 | GATE(CLK_I2C10, "i2c10", "aclk66_peric", GATE_BUS_PERIC1, 2, 0, 0), |
666 | 627 | ||
667 | GATE(chipid, "chipid", "aclk66_psgen", | 628 | GATE(CLK_CHIPID, "chipid", "aclk66_psgen", |
668 | GATE_BUS_PERIS0, 12, CLK_IGNORE_UNUSED, 0), | 629 | GATE_BUS_PERIS0, 12, CLK_IGNORE_UNUSED, 0), |
669 | GATE(sysreg, "sysreg", "aclk66_psgen", | 630 | GATE(CLK_SYSREG, "sysreg", "aclk66_psgen", |
670 | GATE_BUS_PERIS0, 13, CLK_IGNORE_UNUSED, 0), | 631 | GATE_BUS_PERIS0, 13, CLK_IGNORE_UNUSED, 0), |
671 | GATE(tzpc0, "tzpc0", "aclk66_psgen", GATE_BUS_PERIS0, 18, 0, 0), | 632 | GATE(CLK_TZPC0, "tzpc0", "aclk66_psgen", GATE_BUS_PERIS0, 18, 0, 0), |
672 | GATE(tzpc1, "tzpc1", "aclk66_psgen", GATE_BUS_PERIS0, 19, 0, 0), | 633 | GATE(CLK_TZPC1, "tzpc1", "aclk66_psgen", GATE_BUS_PERIS0, 19, 0, 0), |
673 | GATE(tzpc2, "tzpc2", "aclk66_psgen", GATE_BUS_PERIS0, 20, 0, 0), | 634 | GATE(CLK_TZPC2, "tzpc2", "aclk66_psgen", GATE_BUS_PERIS0, 20, 0, 0), |
674 | GATE(tzpc3, "tzpc3", "aclk66_psgen", GATE_BUS_PERIS0, 21, 0, 0), | 635 | GATE(CLK_TZPC3, "tzpc3", "aclk66_psgen", GATE_BUS_PERIS0, 21, 0, 0), |
675 | GATE(tzpc4, "tzpc4", "aclk66_psgen", GATE_BUS_PERIS0, 22, 0, 0), | 636 | GATE(CLK_TZPC4, "tzpc4", "aclk66_psgen", GATE_BUS_PERIS0, 22, 0, 0), |
676 | GATE(tzpc5, "tzpc5", "aclk66_psgen", GATE_BUS_PERIS0, 23, 0, 0), | 637 | GATE(CLK_TZPC5, "tzpc5", "aclk66_psgen", GATE_BUS_PERIS0, 23, 0, 0), |
677 | GATE(tzpc6, "tzpc6", "aclk66_psgen", GATE_BUS_PERIS0, 24, 0, 0), | 638 | GATE(CLK_TZPC6, "tzpc6", "aclk66_psgen", GATE_BUS_PERIS0, 24, 0, 0), |
678 | GATE(tzpc7, "tzpc7", "aclk66_psgen", GATE_BUS_PERIS0, 25, 0, 0), | 639 | GATE(CLK_TZPC7, "tzpc7", "aclk66_psgen", GATE_BUS_PERIS0, 25, 0, 0), |
679 | GATE(tzpc8, "tzpc8", "aclk66_psgen", GATE_BUS_PERIS0, 26, 0, 0), | 640 | GATE(CLK_TZPC8, "tzpc8", "aclk66_psgen", GATE_BUS_PERIS0, 26, 0, 0), |
680 | GATE(tzpc9, "tzpc9", "aclk66_psgen", GATE_BUS_PERIS0, 27, 0, 0), | 641 | GATE(CLK_TZPC9, "tzpc9", "aclk66_psgen", GATE_BUS_PERIS0, 27, 0, 0), |
681 | 642 | ||
682 | GATE(hdmi_cec, "hdmi_cec", "aclk66_psgen", GATE_BUS_PERIS1, 0, 0, 0), | 643 | GATE(CLK_HDMI_CEC, "hdmi_cec", "aclk66_psgen", GATE_BUS_PERIS1, 0, 0, |
683 | GATE(seckey, "seckey", "aclk66_psgen", GATE_BUS_PERIS1, 1, 0, 0), | 644 | 0), |
684 | GATE(wdt, "wdt", "aclk66_psgen", GATE_BUS_PERIS1, 3, 0, 0), | 645 | GATE(CLK_SECKEY, "seckey", "aclk66_psgen", GATE_BUS_PERIS1, 1, 0, 0), |
685 | GATE(rtc, "rtc", "aclk66_psgen", GATE_BUS_PERIS1, 4, 0, 0), | 646 | GATE(CLK_WDT, "wdt", "aclk66_psgen", GATE_BUS_PERIS1, 3, 0, 0), |
686 | GATE(tmu, "tmu", "aclk66_psgen", GATE_BUS_PERIS1, 5, 0, 0), | 647 | GATE(CLK_RTC, "rtc", "aclk66_psgen", GATE_BUS_PERIS1, 4, 0, 0), |
687 | GATE(tmu_gpu, "tmu_gpu", "aclk66_psgen", GATE_BUS_PERIS1, 6, 0, 0), | 648 | GATE(CLK_TMU, "tmu", "aclk66_psgen", GATE_BUS_PERIS1, 5, 0, 0), |
688 | 649 | GATE(CLK_TMU_GPU, "tmu_gpu", "aclk66_psgen", GATE_BUS_PERIS1, 6, 0, 0), | |
689 | GATE(gscl0, "gscl0", "aclk300_gscl", GATE_IP_GSCL0, 0, 0, 0), | 650 | |
690 | GATE(gscl1, "gscl1", "aclk300_gscl", GATE_IP_GSCL0, 1, 0, 0), | 651 | GATE(CLK_GSCL0, "gscl0", "aclk300_gscl", GATE_IP_GSCL0, 0, 0, 0), |
691 | GATE(clk_3aa, "clk_3aa", "aclk300_gscl", GATE_IP_GSCL0, 4, 0, 0), | 652 | GATE(CLK_GSCL1, "gscl1", "aclk300_gscl", GATE_IP_GSCL0, 1, 0, 0), |
692 | 653 | GATE(CLK_CLK_3AA, "clk_3aa", "aclk300_gscl", GATE_IP_GSCL0, 4, 0, 0), | |
693 | GATE(smmu_3aa, "smmu_3aa", "aclk333_432_gscl", GATE_IP_GSCL1, 2, 0, 0), | 654 | |
694 | GATE(smmu_fimcl0, "smmu_fimcl0", "aclk333_432_gscl", | 655 | GATE(CLK_SMMU_3AA, "smmu_3aa", "aclk333_432_gscl", GATE_IP_GSCL1, 2, 0, |
656 | 0), | ||
657 | GATE(CLK_SMMU_FIMCL0, "smmu_fimcl0", "aclk333_432_gscl", | ||
695 | GATE_IP_GSCL1, 3, 0, 0), | 658 | GATE_IP_GSCL1, 3, 0, 0), |
696 | GATE(smmu_fimcl1, "smmu_fimcl1", "aclk333_432_gscl", | 659 | GATE(CLK_SMMU_FIMCL1, "smmu_fimcl1", "aclk333_432_gscl", |
697 | GATE_IP_GSCL1, 4, 0, 0), | 660 | GATE_IP_GSCL1, 4, 0, 0), |
698 | GATE(smmu_gscl0, "smmu_gscl0", "aclk300_gscl", GATE_IP_GSCL1, 6, 0, 0), | 661 | GATE(CLK_SMMU_GSCL0, "smmu_gscl0", "aclk300_gscl", GATE_IP_GSCL1, 6, 0, |
699 | GATE(smmu_gscl1, "smmu_gscl1", "aclk300_gscl", GATE_IP_GSCL1, 7, 0, 0), | 662 | 0), |
700 | GATE(gscl_wa, "gscl_wa", "aclk300_gscl", GATE_IP_GSCL1, 12, 0, 0), | 663 | GATE(CLK_SMMU_GSCL1, "smmu_gscl1", "aclk300_gscl", GATE_IP_GSCL1, 7, 0, |
701 | GATE(gscl_wb, "gscl_wb", "aclk300_gscl", GATE_IP_GSCL1, 13, 0, 0), | 664 | 0), |
702 | GATE(smmu_fimcl3, "smmu_fimcl3,", "aclk333_432_gscl", | 665 | GATE(CLK_GSCL_WA, "gscl_wa", "aclk300_gscl", GATE_IP_GSCL1, 12, 0, 0), |
666 | GATE(CLK_GSCL_WB, "gscl_wb", "aclk300_gscl", GATE_IP_GSCL1, 13, 0, 0), | ||
667 | GATE(CLK_SMMU_FIMCL3, "smmu_fimcl3,", "aclk333_432_gscl", | ||
703 | GATE_IP_GSCL1, 16, 0, 0), | 668 | GATE_IP_GSCL1, 16, 0, 0), |
704 | GATE(fimc_lite3, "fimc_lite3", "aclk333_432_gscl", | 669 | GATE(CLK_FIMC_LITE3, "fimc_lite3", "aclk333_432_gscl", |
705 | GATE_IP_GSCL1, 17, 0, 0), | 670 | GATE_IP_GSCL1, 17, 0, 0), |
706 | 671 | ||
707 | GATE(fimd1, "fimd1", "aclk300_disp1", GATE_IP_DISP1, 0, 0, 0), | 672 | GATE(CLK_FIMD1, "fimd1", "aclk300_disp1", GATE_IP_DISP1, 0, 0, 0), |
708 | GATE(dsim1, "dsim1", "aclk200_disp1", GATE_IP_DISP1, 3, 0, 0), | 673 | GATE(CLK_DSIM1, "dsim1", "aclk200_disp1", GATE_IP_DISP1, 3, 0, 0), |
709 | GATE(dp1, "dp1", "aclk200_disp1", GATE_IP_DISP1, 4, 0, 0), | 674 | GATE(CLK_DP1, "dp1", "aclk200_disp1", GATE_IP_DISP1, 4, 0, 0), |
710 | GATE(mixer, "mixer", "aclk166", GATE_IP_DISP1, 5, 0, 0), | 675 | GATE(CLK_MIXER, "mixer", "aclk166", GATE_IP_DISP1, 5, 0, 0), |
711 | GATE(hdmi, "hdmi", "aclk200_disp1", GATE_IP_DISP1, 6, 0, 0), | 676 | GATE(CLK_HDMI, "hdmi", "aclk200_disp1", GATE_IP_DISP1, 6, 0, 0), |
712 | GATE(smmu_fimd1, "smmu_fimd1", "aclk300_disp1", GATE_IP_DISP1, 8, 0, 0), | 677 | GATE(CLK_SMMU_FIMD1, "smmu_fimd1", "aclk300_disp1", GATE_IP_DISP1, 8, 0, |
713 | 678 | 0), | |
714 | GATE(mfc, "mfc", "aclk333", GATE_IP_MFC, 0, 0, 0), | 679 | |
715 | GATE(smmu_mfcl, "smmu_mfcl", "aclk333", GATE_IP_MFC, 1, 0, 0), | 680 | GATE(CLK_MFC, "mfc", "aclk333", GATE_IP_MFC, 0, 0, 0), |
716 | GATE(smmu_mfcr, "smmu_mfcr", "aclk333", GATE_IP_MFC, 2, 0, 0), | 681 | GATE(CLK_SMMU_MFCL, "smmu_mfcl", "aclk333", GATE_IP_MFC, 1, 0, 0), |
717 | 682 | GATE(CLK_SMMU_MFCR, "smmu_mfcr", "aclk333", GATE_IP_MFC, 2, 0, 0), | |
718 | GATE(g3d, "g3d", "aclkg3d", GATE_IP_G3D, 9, 0, 0), | 683 | |
719 | 684 | GATE(CLK_G3D, "g3d", "aclkg3d", GATE_IP_G3D, 9, 0, 0), | |
720 | GATE(rotator, "rotator", "aclk266", GATE_IP_GEN, 1, 0, 0), | 685 | |
721 | GATE(jpeg, "jpeg", "aclk300_jpeg", GATE_IP_GEN, 2, 0, 0), | 686 | GATE(CLK_ROTATOR, "rotator", "aclk266", GATE_IP_GEN, 1, 0, 0), |
722 | GATE(jpeg2, "jpeg2", "aclk300_jpeg", GATE_IP_GEN, 3, 0, 0), | 687 | GATE(CLK_JPEG, "jpeg", "aclk300_jpeg", GATE_IP_GEN, 2, 0, 0), |
723 | GATE(mdma1, "mdma1", "aclk266", GATE_IP_GEN, 4, 0, 0), | 688 | GATE(CLK_JPEG2, "jpeg2", "aclk300_jpeg", GATE_IP_GEN, 3, 0, 0), |
724 | GATE(smmu_rotator, "smmu_rotator", "aclk266", GATE_IP_GEN, 6, 0, 0), | 689 | GATE(CLK_MDMA1, "mdma1", "aclk266", GATE_IP_GEN, 4, 0, 0), |
725 | GATE(smmu_jpeg, "smmu_jpeg", "aclk300_jpeg", GATE_IP_GEN, 7, 0, 0), | 690 | GATE(CLK_SMMU_ROTATOR, "smmu_rotator", "aclk266", GATE_IP_GEN, 6, 0, 0), |
726 | GATE(smmu_mdma1, "smmu_mdma1", "aclk266", GATE_IP_GEN, 9, 0, 0), | 691 | GATE(CLK_SMMU_JPEG, "smmu_jpeg", "aclk300_jpeg", GATE_IP_GEN, 7, 0, 0), |
727 | 692 | GATE(CLK_SMMU_MDMA1, "smmu_mdma1", "aclk266", GATE_IP_GEN, 9, 0, 0), | |
728 | GATE(mscl0, "mscl0", "aclk400_mscl", GATE_IP_MSCL, 0, 0, 0), | 693 | |
729 | GATE(mscl1, "mscl1", "aclk400_mscl", GATE_IP_MSCL, 1, 0, 0), | 694 | GATE(CLK_MSCL0, "mscl0", "aclk400_mscl", GATE_IP_MSCL, 0, 0, 0), |
730 | GATE(mscl2, "mscl2", "aclk400_mscl", GATE_IP_MSCL, 2, 0, 0), | 695 | GATE(CLK_MSCL1, "mscl1", "aclk400_mscl", GATE_IP_MSCL, 1, 0, 0), |
731 | GATE(smmu_mscl0, "smmu_mscl0", "aclk400_mscl", GATE_IP_MSCL, 8, 0, 0), | 696 | GATE(CLK_MSCL2, "mscl2", "aclk400_mscl", GATE_IP_MSCL, 2, 0, 0), |
732 | GATE(smmu_mscl1, "smmu_mscl1", "aclk400_mscl", GATE_IP_MSCL, 9, 0, 0), | 697 | GATE(CLK_SMMU_MSCL0, "smmu_mscl0", "aclk400_mscl", GATE_IP_MSCL, 8, 0, |
733 | GATE(smmu_mscl2, "smmu_mscl2", "aclk400_mscl", GATE_IP_MSCL, 10, 0, 0), | 698 | 0), |
734 | GATE(smmu_mixer, "smmu_mixer", "aclk200_disp1", GATE_IP_DISP1, 9, 0, 0), | 699 | GATE(CLK_SMMU_MSCL1, "smmu_mscl1", "aclk400_mscl", GATE_IP_MSCL, 9, 0, |
700 | 0), | ||
701 | GATE(CLK_SMMU_MSCL2, "smmu_mscl2", "aclk400_mscl", GATE_IP_MSCL, 10, 0, | ||
702 | 0), | ||
703 | GATE(CLK_SMMU_MIXER, "smmu_mixer", "aclk200_disp1", GATE_IP_DISP1, 9, 0, | ||
704 | 0), | ||
735 | }; | 705 | }; |
736 | 706 | ||
737 | static struct samsung_pll_clock exynos5420_plls[nr_plls] __initdata = { | 707 | static struct samsung_pll_clock exynos5420_plls[nr_plls] __initdata = { |
738 | [apll] = PLL(pll_2550, fout_apll, "fout_apll", "fin_pll", APLL_LOCK, | 708 | [apll] = PLL(pll_2550, CLK_FOUT_APLL, "fout_apll", "fin_pll", APLL_LOCK, |
739 | APLL_CON0, NULL), | 709 | APLL_CON0, NULL), |
740 | [cpll] = PLL(pll_2550, fout_cpll, "fout_cpll", "fin_pll", CPLL_LOCK, | 710 | [cpll] = PLL(pll_2550, CLK_FOUT_CPLL, "fout_cpll", "fin_pll", CPLL_LOCK, |
741 | CPLL_CON0, NULL), | 711 | CPLL_CON0, NULL), |
742 | [dpll] = PLL(pll_2550, fout_dpll, "fout_dpll", "fin_pll", DPLL_LOCK, | 712 | [dpll] = PLL(pll_2550, CLK_FOUT_DPLL, "fout_dpll", "fin_pll", DPLL_LOCK, |
743 | DPLL_CON0, NULL), | 713 | DPLL_CON0, NULL), |
744 | [epll] = PLL(pll_2650, fout_epll, "fout_epll", "fin_pll", EPLL_LOCK, | 714 | [epll] = PLL(pll_2650, CLK_FOUT_EPLL, "fout_epll", "fin_pll", EPLL_LOCK, |
745 | EPLL_CON0, NULL), | 715 | EPLL_CON0, NULL), |
746 | [rpll] = PLL(pll_2650, fout_rpll, "fout_rpll", "fin_pll", RPLL_LOCK, | 716 | [rpll] = PLL(pll_2650, CLK_FOUT_RPLL, "fout_rpll", "fin_pll", RPLL_LOCK, |
747 | RPLL_CON0, NULL), | 717 | RPLL_CON0, NULL), |
748 | [ipll] = PLL(pll_2550, fout_ipll, "fout_ipll", "fin_pll", IPLL_LOCK, | 718 | [ipll] = PLL(pll_2550, CLK_FOUT_IPLL, "fout_ipll", "fin_pll", IPLL_LOCK, |
749 | IPLL_CON0, NULL), | 719 | IPLL_CON0, NULL), |
750 | [spll] = PLL(pll_2550, fout_spll, "fout_spll", "fin_pll", SPLL_LOCK, | 720 | [spll] = PLL(pll_2550, CLK_FOUT_SPLL, "fout_spll", "fin_pll", SPLL_LOCK, |
751 | SPLL_CON0, NULL), | 721 | SPLL_CON0, NULL), |
752 | [vpll] = PLL(pll_2550, fout_vpll, "fout_vpll", "fin_pll", VPLL_LOCK, | 722 | [vpll] = PLL(pll_2550, CLK_FOUT_VPLL, "fout_vpll", "fin_pll", VPLL_LOCK, |
753 | VPLL_CON0, NULL), | 723 | VPLL_CON0, NULL), |
754 | [mpll] = PLL(pll_2550, fout_mpll, "fout_mpll", "fin_pll", MPLL_LOCK, | 724 | [mpll] = PLL(pll_2550, CLK_FOUT_MPLL, "fout_mpll", "fin_pll", MPLL_LOCK, |
755 | MPLL_CON0, NULL), | 725 | MPLL_CON0, NULL), |
756 | [bpll] = PLL(pll_2550, fout_bpll, "fout_bpll", "fin_pll", BPLL_LOCK, | 726 | [bpll] = PLL(pll_2550, CLK_FOUT_BPLL, "fout_bpll", "fin_pll", BPLL_LOCK, |
757 | BPLL_CON0, NULL), | 727 | BPLL_CON0, NULL), |
758 | [kpll] = PLL(pll_2550, fout_kpll, "fout_kpll", "fin_pll", KPLL_LOCK, | 728 | [kpll] = PLL(pll_2550, CLK_FOUT_KPLL, "fout_kpll", "fin_pll", KPLL_LOCK, |
759 | KPLL_CON0, NULL), | 729 | KPLL_CON0, NULL), |
760 | }; | 730 | }; |
761 | 731 | ||
@@ -777,7 +747,7 @@ static void __init exynos5420_clk_init(struct device_node *np) | |||
777 | panic("%s: unable to determine soc\n", __func__); | 747 | panic("%s: unable to determine soc\n", __func__); |
778 | } | 748 | } |
779 | 749 | ||
780 | samsung_clk_init(np, reg_base, nr_clks, | 750 | samsung_clk_init(np, reg_base, CLK_NR_CLKS, |
781 | exynos5420_clk_regs, ARRAY_SIZE(exynos5420_clk_regs), | 751 | exynos5420_clk_regs, ARRAY_SIZE(exynos5420_clk_regs), |
782 | NULL, 0); | 752 | NULL, 0); |
783 | samsung_clk_of_register_fixed_ext(exynos5420_fixed_rate_ext_clks, | 753 | samsung_clk_of_register_fixed_ext(exynos5420_fixed_rate_ext_clks, |
diff --git a/drivers/clk/samsung/clk-exynos5440.c b/drivers/clk/samsung/clk-exynos5440.c index f8658945bfd2..cbc15b56891d 100644 --- a/drivers/clk/samsung/clk-exynos5440.c +++ b/drivers/clk/samsung/clk-exynos5440.c | |||
@@ -9,6 +9,7 @@ | |||
9 | * Common Clock Framework support for Exynos5440 SoC. | 9 | * Common Clock Framework support for Exynos5440 SoC. |
10 | */ | 10 | */ |
11 | 11 | ||
12 | #include <dt-bindings/clock/exynos5440.h> | ||
12 | #include <linux/clk.h> | 13 | #include <linux/clk.h> |
13 | #include <linux/clkdev.h> | 14 | #include <linux/clkdev.h> |
14 | #include <linux/clk-provider.h> | 15 | #include <linux/clk-provider.h> |
@@ -22,79 +23,65 @@ | |||
22 | #define CPU_CLK_STATUS 0xfc | 23 | #define CPU_CLK_STATUS 0xfc |
23 | #define MISC_DOUT1 0x558 | 24 | #define MISC_DOUT1 0x558 |
24 | 25 | ||
25 | /* | ||
26 | * Let each supported clock get a unique id. This id is used to lookup the clock | ||
27 | * for device tree based platforms. | ||
28 | */ | ||
29 | enum exynos5440_clks { | ||
30 | none, xtal, arm_clk, | ||
31 | |||
32 | spi_baud = 16, pb0_250, pr0_250, pr1_250, b_250, b_125, b_200, sata, | ||
33 | usb, gmac0, cs250, pb0_250_o, pr0_250_o, pr1_250_o, b_250_o, b_125_o, | ||
34 | b_200_o, sata_o, usb_o, gmac0_o, cs250_o, | ||
35 | |||
36 | nr_clks, | ||
37 | }; | ||
38 | |||
39 | /* parent clock name list */ | 26 | /* parent clock name list */ |
40 | PNAME(mout_armclk_p) = { "cplla", "cpllb" }; | 27 | PNAME(mout_armclk_p) = { "cplla", "cpllb" }; |
41 | PNAME(mout_spi_p) = { "div125", "div200" }; | 28 | PNAME(mout_spi_p) = { "div125", "div200" }; |
42 | 29 | ||
43 | /* fixed rate clocks generated outside the soc */ | 30 | /* fixed rate clocks generated outside the soc */ |
44 | static struct samsung_fixed_rate_clock exynos5440_fixed_rate_ext_clks[] __initdata = { | 31 | static struct samsung_fixed_rate_clock exynos5440_fixed_rate_ext_clks[] __initdata = { |
45 | FRATE(none, "xtal", NULL, CLK_IS_ROOT, 0), | 32 | FRATE(0, "xtal", NULL, CLK_IS_ROOT, 0), |
46 | }; | 33 | }; |
47 | 34 | ||
48 | /* fixed rate clocks */ | 35 | /* fixed rate clocks */ |
49 | static struct samsung_fixed_rate_clock exynos5440_fixed_rate_clks[] __initdata = { | 36 | static struct samsung_fixed_rate_clock exynos5440_fixed_rate_clks[] __initdata = { |
50 | FRATE(none, "ppll", NULL, CLK_IS_ROOT, 1000000000), | 37 | FRATE(0, "ppll", NULL, CLK_IS_ROOT, 1000000000), |
51 | FRATE(none, "usb_phy0", NULL, CLK_IS_ROOT, 60000000), | 38 | FRATE(0, "usb_phy0", NULL, CLK_IS_ROOT, 60000000), |
52 | FRATE(none, "usb_phy1", NULL, CLK_IS_ROOT, 60000000), | 39 | FRATE(0, "usb_phy1", NULL, CLK_IS_ROOT, 60000000), |
53 | FRATE(none, "usb_ohci12", NULL, CLK_IS_ROOT, 12000000), | 40 | FRATE(0, "usb_ohci12", NULL, CLK_IS_ROOT, 12000000), |
54 | FRATE(none, "usb_ohci48", NULL, CLK_IS_ROOT, 48000000), | 41 | FRATE(0, "usb_ohci48", NULL, CLK_IS_ROOT, 48000000), |
55 | }; | 42 | }; |
56 | 43 | ||
57 | /* fixed factor clocks */ | 44 | /* fixed factor clocks */ |
58 | static struct samsung_fixed_factor_clock exynos5440_fixed_factor_clks[] __initdata = { | 45 | static struct samsung_fixed_factor_clock exynos5440_fixed_factor_clks[] __initdata = { |
59 | FFACTOR(none, "div250", "ppll", 1, 4, 0), | 46 | FFACTOR(0, "div250", "ppll", 1, 4, 0), |
60 | FFACTOR(none, "div200", "ppll", 1, 5, 0), | 47 | FFACTOR(0, "div200", "ppll", 1, 5, 0), |
61 | FFACTOR(none, "div125", "div250", 1, 2, 0), | 48 | FFACTOR(0, "div125", "div250", 1, 2, 0), |
62 | }; | 49 | }; |
63 | 50 | ||
64 | /* mux clocks */ | 51 | /* mux clocks */ |
65 | static struct samsung_mux_clock exynos5440_mux_clks[] __initdata = { | 52 | static struct samsung_mux_clock exynos5440_mux_clks[] __initdata = { |
66 | MUX(none, "mout_spi", mout_spi_p, MISC_DOUT1, 5, 1), | 53 | MUX(0, "mout_spi", mout_spi_p, MISC_DOUT1, 5, 1), |
67 | MUX_A(arm_clk, "arm_clk", mout_armclk_p, | 54 | MUX_A(CLK_ARM_CLK, "arm_clk", mout_armclk_p, |
68 | CPU_CLK_STATUS, 0, 1, "armclk"), | 55 | CPU_CLK_STATUS, 0, 1, "armclk"), |
69 | }; | 56 | }; |
70 | 57 | ||
71 | /* divider clocks */ | 58 | /* divider clocks */ |
72 | static struct samsung_div_clock exynos5440_div_clks[] __initdata = { | 59 | static struct samsung_div_clock exynos5440_div_clks[] __initdata = { |
73 | DIV(spi_baud, "div_spi", "mout_spi", MISC_DOUT1, 3, 2), | 60 | DIV(CLK_SPI_BAUD, "div_spi", "mout_spi", MISC_DOUT1, 3, 2), |
74 | }; | 61 | }; |
75 | 62 | ||
76 | /* gate clocks */ | 63 | /* gate clocks */ |
77 | static struct samsung_gate_clock exynos5440_gate_clks[] __initdata = { | 64 | static struct samsung_gate_clock exynos5440_gate_clks[] __initdata = { |
78 | GATE(pb0_250, "pb0_250", "div250", CLKEN_OV_VAL, 3, 0, 0), | 65 | GATE(CLK_PB0_250, "pb0_250", "div250", CLKEN_OV_VAL, 3, 0, 0), |
79 | GATE(pr0_250, "pr0_250", "div250", CLKEN_OV_VAL, 4, 0, 0), | 66 | GATE(CLK_PR0_250, "pr0_250", "div250", CLKEN_OV_VAL, 4, 0, 0), |
80 | GATE(pr1_250, "pr1_250", "div250", CLKEN_OV_VAL, 5, 0, 0), | 67 | GATE(CLK_PR1_250, "pr1_250", "div250", CLKEN_OV_VAL, 5, 0, 0), |
81 | GATE(b_250, "b_250", "div250", CLKEN_OV_VAL, 9, 0, 0), | 68 | GATE(CLK_B_250, "b_250", "div250", CLKEN_OV_VAL, 9, 0, 0), |
82 | GATE(b_125, "b_125", "div125", CLKEN_OV_VAL, 10, 0, 0), | 69 | GATE(CLK_B_125, "b_125", "div125", CLKEN_OV_VAL, 10, 0, 0), |
83 | GATE(b_200, "b_200", "div200", CLKEN_OV_VAL, 11, 0, 0), | 70 | GATE(CLK_B_200, "b_200", "div200", CLKEN_OV_VAL, 11, 0, 0), |
84 | GATE(sata, "sata", "div200", CLKEN_OV_VAL, 12, 0, 0), | 71 | GATE(CLK_SATA, "sata", "div200", CLKEN_OV_VAL, 12, 0, 0), |
85 | GATE(usb, "usb", "div200", CLKEN_OV_VAL, 13, 0, 0), | 72 | GATE(CLK_USB, "usb", "div200", CLKEN_OV_VAL, 13, 0, 0), |
86 | GATE(gmac0, "gmac0", "div200", CLKEN_OV_VAL, 14, 0, 0), | 73 | GATE(CLK_GMAC0, "gmac0", "div200", CLKEN_OV_VAL, 14, 0, 0), |
87 | GATE(cs250, "cs250", "div250", CLKEN_OV_VAL, 19, 0, 0), | 74 | GATE(CLK_CS250, "cs250", "div250", CLKEN_OV_VAL, 19, 0, 0), |
88 | GATE(pb0_250_o, "pb0_250_o", "pb0_250", CLKEN_OV_VAL, 3, 0, 0), | 75 | GATE(CLK_PB0_250_O, "pb0_250_o", "pb0_250", CLKEN_OV_VAL, 3, 0, 0), |
89 | GATE(pr0_250_o, "pr0_250_o", "pr0_250", CLKEN_OV_VAL, 4, 0, 0), | 76 | GATE(CLK_PR0_250_O, "pr0_250_o", "pr0_250", CLKEN_OV_VAL, 4, 0, 0), |
90 | GATE(pr1_250_o, "pr1_250_o", "pr1_250", CLKEN_OV_VAL, 5, 0, 0), | 77 | GATE(CLK_PR1_250_O, "pr1_250_o", "pr1_250", CLKEN_OV_VAL, 5, 0, 0), |
91 | GATE(b_250_o, "b_250_o", "b_250", CLKEN_OV_VAL, 9, 0, 0), | 78 | GATE(CLK_B_250_O, "b_250_o", "b_250", CLKEN_OV_VAL, 9, 0, 0), |
92 | GATE(b_125_o, "b_125_o", "b_125", CLKEN_OV_VAL, 10, 0, 0), | 79 | GATE(CLK_B_125_O, "b_125_o", "b_125", CLKEN_OV_VAL, 10, 0, 0), |
93 | GATE(b_200_o, "b_200_o", "b_200", CLKEN_OV_VAL, 11, 0, 0), | 80 | GATE(CLK_B_200_O, "b_200_o", "b_200", CLKEN_OV_VAL, 11, 0, 0), |
94 | GATE(sata_o, "sata_o", "sata", CLKEN_OV_VAL, 12, 0, 0), | 81 | GATE(CLK_SATA_O, "sata_o", "sata", CLKEN_OV_VAL, 12, 0, 0), |
95 | GATE(usb_o, "usb_o", "usb", CLKEN_OV_VAL, 13, 0, 0), | 82 | GATE(CLK_USB_O, "usb_o", "usb", CLKEN_OV_VAL, 13, 0, 0), |
96 | GATE(gmac0_o, "gmac0_o", "gmac", CLKEN_OV_VAL, 14, 0, 0), | 83 | GATE(CLK_GMAC0_O, "gmac0_o", "gmac", CLKEN_OV_VAL, 14, 0, 0), |
97 | GATE(cs250_o, "cs250_o", "cs250", CLKEN_OV_VAL, 19, 0, 0), | 84 | GATE(CLK_CS250_O, "cs250_o", "cs250", CLKEN_OV_VAL, 19, 0, 0), |
98 | }; | 85 | }; |
99 | 86 | ||
100 | static struct of_device_id ext_clk_match[] __initdata = { | 87 | static struct of_device_id ext_clk_match[] __initdata = { |
@@ -114,7 +101,7 @@ static void __init exynos5440_clk_init(struct device_node *np) | |||
114 | return; | 101 | return; |
115 | } | 102 | } |
116 | 103 | ||
117 | samsung_clk_init(np, reg_base, nr_clks, NULL, 0, NULL, 0); | 104 | samsung_clk_init(np, reg_base, CLK_NR_CLKS, NULL, 0, NULL, 0); |
118 | samsung_clk_of_register_fixed_ext(exynos5440_fixed_rate_ext_clks, | 105 | samsung_clk_of_register_fixed_ext(exynos5440_fixed_rate_ext_clks, |
119 | ARRAY_SIZE(exynos5440_fixed_rate_ext_clks), ext_clk_match); | 106 | ARRAY_SIZE(exynos5440_fixed_rate_ext_clks), ext_clk_match); |
120 | 107 | ||
diff --git a/include/dt-bindings/clk/exynos-audss-clk.h b/include/dt-bindings/clk/exynos-audss-clk.h index 8279f427c60f..0ae6f5a75d2a 100644 --- a/include/dt-bindings/clk/exynos-audss-clk.h +++ b/include/dt-bindings/clk/exynos-audss-clk.h | |||
@@ -19,7 +19,8 @@ | |||
19 | #define EXYNOS_SCLK_I2S 7 | 19 | #define EXYNOS_SCLK_I2S 7 |
20 | #define EXYNOS_PCM_BUS 8 | 20 | #define EXYNOS_PCM_BUS 8 |
21 | #define EXYNOS_SCLK_PCM 9 | 21 | #define EXYNOS_SCLK_PCM 9 |
22 | #define EXYNOS_ADMA 10 | ||
22 | 23 | ||
23 | #define EXYNOS_AUDSS_MAX_CLKS 10 | 24 | #define EXYNOS_AUDSS_MAX_CLKS 11 |
24 | 25 | ||
25 | #endif | 26 | #endif |
diff --git a/include/dt-bindings/clock/exynos4.h b/include/dt-bindings/clock/exynos4.h new file mode 100644 index 000000000000..75aff336dfb0 --- /dev/null +++ b/include/dt-bindings/clock/exynos4.h | |||
@@ -0,0 +1,244 @@ | |||
1 | /* | ||
2 | * Copyright (c) 2013 Samsung Electronics Co., Ltd. | ||
3 | * Author: Andrzej Haja <a.hajda@samsung.com> | ||
4 | * | ||
5 | * This program is free software; you can redistribute it and/or modify | ||
6 | * it under the terms of the GNU General Public License version 2 as | ||
7 | * published by the Free Software Foundation. | ||
8 | * | ||
9 | * Device Tree binding constants for Exynos4 clock controller. | ||
10 | */ | ||
11 | |||
12 | #ifndef _DT_BINDINGS_CLOCK_EXYNOS_4_H | ||
13 | #define _DT_BINDINGS_CLOCK_EXYNOS_4_H | ||
14 | |||
15 | /* core clocks */ | ||
16 | #define CLK_XXTI 1 | ||
17 | #define CLK_XUSBXTI 2 | ||
18 | #define CLK_FIN_PLL 3 | ||
19 | #define CLK_FOUT_APLL 4 | ||
20 | #define CLK_FOUT_MPLL 5 | ||
21 | #define CLK_FOUT_EPLL 6 | ||
22 | #define CLK_FOUT_VPLL 7 | ||
23 | #define CLK_SCLK_APLL 8 | ||
24 | #define CLK_SCLK_MPLL 9 | ||
25 | #define CLK_SCLK_EPLL 10 | ||
26 | #define CLK_SCLK_VPLL 11 | ||
27 | #define CLK_ARM_CLK 12 | ||
28 | #define CLK_ACLK200 13 | ||
29 | #define CLK_ACLK100 14 | ||
30 | #define CLK_ACLK160 15 | ||
31 | #define CLK_ACLK133 16 | ||
32 | #define CLK_MOUT_MPLL_USER_T 17 /* Exynos4x12 only */ | ||
33 | #define CLK_MOUT_MPLL_USER_C 18 /* Exynos4x12 only */ | ||
34 | #define CLK_MOUT_CORE 19 | ||
35 | #define CLK_MOUT_APLL 20 | ||
36 | |||
37 | /* gate for special clocks (sclk) */ | ||
38 | #define CLK_SCLK_FIMC0 128 | ||
39 | #define CLK_SCLK_FIMC1 129 | ||
40 | #define CLK_SCLK_FIMC2 130 | ||
41 | #define CLK_SCLK_FIMC3 131 | ||
42 | #define CLK_SCLK_CAM0 132 | ||
43 | #define CLK_SCLK_CAM1 133 | ||
44 | #define CLK_SCLK_CSIS0 134 | ||
45 | #define CLK_SCLK_CSIS1 135 | ||
46 | #define CLK_SCLK_HDMI 136 | ||
47 | #define CLK_SCLK_MIXER 137 | ||
48 | #define CLK_SCLK_DAC 138 | ||
49 | #define CLK_SCLK_PIXEL 139 | ||
50 | #define CLK_SCLK_FIMD0 140 | ||
51 | #define CLK_SCLK_MDNIE0 141 /* Exynos4412 only */ | ||
52 | #define CLK_SCLK_MDNIE_PWM0 142 | ||
53 | #define CLK_SCLK_MIPI0 143 | ||
54 | #define CLK_SCLK_AUDIO0 144 | ||
55 | #define CLK_SCLK_MMC0 145 | ||
56 | #define CLK_SCLK_MMC1 146 | ||
57 | #define CLK_SCLK_MMC2 147 | ||
58 | #define CLK_SCLK_MMC3 148 | ||
59 | #define CLK_SCLK_MMC4 149 | ||
60 | #define CLK_SCLK_SATA 150 /* Exynos4210 only */ | ||
61 | #define CLK_SCLK_UART0 151 | ||
62 | #define CLK_SCLK_UART1 152 | ||
63 | #define CLK_SCLK_UART2 153 | ||
64 | #define CLK_SCLK_UART3 154 | ||
65 | #define CLK_SCLK_UART4 155 | ||
66 | #define CLK_SCLK_AUDIO1 156 | ||
67 | #define CLK_SCLK_AUDIO2 157 | ||
68 | #define CLK_SCLK_SPDIF 158 | ||
69 | #define CLK_SCLK_SPI0 159 | ||
70 | #define CLK_SCLK_SPI1 160 | ||
71 | #define CLK_SCLK_SPI2 161 | ||
72 | #define CLK_SCLK_SLIMBUS 162 | ||
73 | #define CLK_SCLK_FIMD1 163 /* Exynos4210 only */ | ||
74 | #define CLK_SCLK_MIPI1 164 /* Exynos4210 only */ | ||
75 | #define CLK_SCLK_PCM1 165 | ||
76 | #define CLK_SCLK_PCM2 166 | ||
77 | #define CLK_SCLK_I2S1 167 | ||
78 | #define CLK_SCLK_I2S2 168 | ||
79 | #define CLK_SCLK_MIPIHSI 169 /* Exynos4412 only */ | ||
80 | #define CLK_SCLK_MFC 170 | ||
81 | #define CLK_SCLK_PCM0 171 | ||
82 | #define CLK_SCLK_G3D 172 | ||
83 | #define CLK_SCLK_PWM_ISP 173 /* Exynos4x12 only */ | ||
84 | #define CLK_SCLK_SPI0_ISP 174 /* Exynos4x12 only */ | ||
85 | #define CLK_SCLK_SPI1_ISP 175 /* Exynos4x12 only */ | ||
86 | #define CLK_SCLK_UART_ISP 176 /* Exynos4x12 only */ | ||
87 | #define CLK_SCLK_FIMG2D 177 | ||
88 | |||
89 | /* gate clocks */ | ||
90 | #define CLK_FIMC0 256 | ||
91 | #define CLK_FIMC1 257 | ||
92 | #define CLK_FIMC2 258 | ||
93 | #define CLK_FIMC3 259 | ||
94 | #define CLK_CSIS0 260 | ||
95 | #define CLK_CSIS1 261 | ||
96 | #define CLK_JPEG 262 | ||
97 | #define CLK_SMMU_FIMC0 263 | ||
98 | #define CLK_SMMU_FIMC1 264 | ||
99 | #define CLK_SMMU_FIMC2 265 | ||
100 | #define CLK_SMMU_FIMC3 266 | ||
101 | #define CLK_SMMU_JPEG 267 | ||
102 | #define CLK_VP 268 | ||
103 | #define CLK_MIXER 269 | ||
104 | #define CLK_TVENC 270 /* Exynos4210 only */ | ||
105 | #define CLK_HDMI 271 | ||
106 | #define CLK_SMMU_TV 272 | ||
107 | #define CLK_MFC 273 | ||
108 | #define CLK_SMMU_MFCL 274 | ||
109 | #define CLK_SMMU_MFCR 275 | ||
110 | #define CLK_G3D 276 | ||
111 | #define CLK_G2D 277 | ||
112 | #define CLK_ROTATOR 278 /* Exynos4210 only */ | ||
113 | #define CLK_MDMA 279 /* Exynos4210 only */ | ||
114 | #define CLK_SMMU_G2D 280 /* Exynos4210 only */ | ||
115 | #define CLK_SMMU_ROTATOR 281 /* Exynos4210 only */ | ||
116 | #define CLK_SMMU_MDMA 282 /* Exynos4210 only */ | ||
117 | #define CLK_FIMD0 283 | ||
118 | #define CLK_MIE0 284 | ||
119 | #define CLK_MDNIE0 285 /* Exynos4412 only */ | ||
120 | #define CLK_DSIM0 286 | ||
121 | #define CLK_SMMU_FIMD0 287 | ||
122 | #define CLK_FIMD1 288 /* Exynos4210 only */ | ||
123 | #define CLK_MIE1 289 /* Exynos4210 only */ | ||
124 | #define CLK_DSIM1 290 /* Exynos4210 only */ | ||
125 | #define CLK_SMMU_FIMD1 291 /* Exynos4210 only */ | ||
126 | #define CLK_PDMA0 292 | ||
127 | #define CLK_PDMA1 293 | ||
128 | #define CLK_PCIE_PHY 294 | ||
129 | #define CLK_SATA_PHY 295 /* Exynos4210 only */ | ||
130 | #define CLK_TSI 296 | ||
131 | #define CLK_SDMMC0 297 | ||
132 | #define CLK_SDMMC1 298 | ||
133 | #define CLK_SDMMC2 299 | ||
134 | #define CLK_SDMMC3 300 | ||
135 | #define CLK_SDMMC4 301 | ||
136 | #define CLK_SATA 302 /* Exynos4210 only */ | ||
137 | #define CLK_SROMC 303 | ||
138 | #define CLK_USB_HOST 304 | ||
139 | #define CLK_USB_DEVICE 305 | ||
140 | #define CLK_PCIE 306 | ||
141 | #define CLK_ONENAND 307 | ||
142 | #define CLK_NFCON 308 | ||
143 | #define CLK_SMMU_PCIE 309 | ||
144 | #define CLK_GPS 310 | ||
145 | #define CLK_SMMU_GPS 311 | ||
146 | #define CLK_UART0 312 | ||
147 | #define CLK_UART1 313 | ||
148 | #define CLK_UART2 314 | ||
149 | #define CLK_UART3 315 | ||
150 | #define CLK_UART4 316 | ||
151 | #define CLK_I2C0 317 | ||
152 | #define CLK_I2C1 318 | ||
153 | #define CLK_I2C2 319 | ||
154 | #define CLK_I2C3 320 | ||
155 | #define CLK_I2C4 321 | ||
156 | #define CLK_I2C5 322 | ||
157 | #define CLK_I2C6 323 | ||
158 | #define CLK_I2C7 324 | ||
159 | #define CLK_I2C_HDMI 325 | ||
160 | #define CLK_TSADC 326 | ||
161 | #define CLK_SPI0 327 | ||
162 | #define CLK_SPI1 328 | ||
163 | #define CLK_SPI2 329 | ||
164 | #define CLK_I2S1 330 | ||
165 | #define CLK_I2S2 331 | ||
166 | #define CLK_PCM0 332 | ||
167 | #define CLK_I2S0 333 | ||
168 | #define CLK_PCM1 334 | ||
169 | #define CLK_PCM2 335 | ||
170 | #define CLK_PWM 336 | ||
171 | #define CLK_SLIMBUS 337 | ||
172 | #define CLK_SPDIF 338 | ||
173 | #define CLK_AC97 339 | ||
174 | #define CLK_MODEMIF 340 | ||
175 | #define CLK_CHIPID 341 | ||
176 | #define CLK_SYSREG 342 | ||
177 | #define CLK_HDMI_CEC 343 | ||
178 | #define CLK_MCT 344 | ||
179 | #define CLK_WDT 345 | ||
180 | #define CLK_RTC 346 | ||
181 | #define CLK_KEYIF 347 | ||
182 | #define CLK_AUDSS 348 | ||
183 | #define CLK_MIPI_HSI 349 /* Exynos4210 only */ | ||
184 | #define CLK_MDMA2 350 /* Exynos4210 only */ | ||
185 | #define CLK_PIXELASYNCM0 351 | ||
186 | #define CLK_PIXELASYNCM1 352 | ||
187 | #define CLK_FIMC_LITE0 353 /* Exynos4x12 only */ | ||
188 | #define CLK_FIMC_LITE1 354 /* Exynos4x12 only */ | ||
189 | #define CLK_PPMUISPX 355 /* Exynos4x12 only */ | ||
190 | #define CLK_PPMUISPMX 356 /* Exynos4x12 only */ | ||
191 | #define CLK_FIMC_ISP 357 /* Exynos4x12 only */ | ||
192 | #define CLK_FIMC_DRC 358 /* Exynos4x12 only */ | ||
193 | #define CLK_FIMC_FD 359 /* Exynos4x12 only */ | ||
194 | #define CLK_MCUISP 360 /* Exynos4x12 only */ | ||
195 | #define CLK_GICISP 361 /* Exynos4x12 only */ | ||
196 | #define CLK_SMMU_ISP 362 /* Exynos4x12 only */ | ||
197 | #define CLK_SMMU_DRC 363 /* Exynos4x12 only */ | ||
198 | #define CLK_SMMU_FD 364 /* Exynos4x12 only */ | ||
199 | #define CLK_SMMU_LITE0 365 /* Exynos4x12 only */ | ||
200 | #define CLK_SMMU_LITE1 366 /* Exynos4x12 only */ | ||
201 | #define CLK_MCUCTL_ISP 367 /* Exynos4x12 only */ | ||
202 | #define CLK_MPWM_ISP 368 /* Exynos4x12 only */ | ||
203 | #define CLK_I2C0_ISP 369 /* Exynos4x12 only */ | ||
204 | #define CLK_I2C1_ISP 370 /* Exynos4x12 only */ | ||
205 | #define CLK_MTCADC_ISP 371 /* Exynos4x12 only */ | ||
206 | #define CLK_PWM_ISP 372 /* Exynos4x12 only */ | ||
207 | #define CLK_WDT_ISP 373 /* Exynos4x12 only */ | ||
208 | #define CLK_UART_ISP 374 /* Exynos4x12 only */ | ||
209 | #define CLK_ASYNCAXIM 375 /* Exynos4x12 only */ | ||
210 | #define CLK_SMMU_ISPCX 376 /* Exynos4x12 only */ | ||
211 | #define CLK_SPI0_ISP 377 /* Exynos4x12 only */ | ||
212 | #define CLK_SPI1_ISP 378 /* Exynos4x12 only */ | ||
213 | #define CLK_PWM_ISP_SCLK 379 /* Exynos4x12 only */ | ||
214 | #define CLK_SPI0_ISP_SCLK 380 /* Exynos4x12 only */ | ||
215 | #define CLK_SPI1_ISP_SCLK 381 /* Exynos4x12 only */ | ||
216 | #define CLK_UART_ISP_SCLK 382 /* Exynos4x12 only */ | ||
217 | #define CLK_TMU_APBIF 383 | ||
218 | |||
219 | /* mux clocks */ | ||
220 | #define CLK_MOUT_FIMC0 384 | ||
221 | #define CLK_MOUT_FIMC1 385 | ||
222 | #define CLK_MOUT_FIMC2 386 | ||
223 | #define CLK_MOUT_FIMC3 387 | ||
224 | #define CLK_MOUT_CAM0 388 | ||
225 | #define CLK_MOUT_CAM1 389 | ||
226 | #define CLK_MOUT_CSIS0 390 | ||
227 | #define CLK_MOUT_CSIS1 391 | ||
228 | #define CLK_MOUT_G3D0 392 | ||
229 | #define CLK_MOUT_G3D1 393 | ||
230 | #define CLK_MOUT_G3D 394 | ||
231 | #define CLK_ACLK400_MCUISP 395 /* Exynos4x12 only */ | ||
232 | |||
233 | /* div clocks */ | ||
234 | #define CLK_DIV_ISP0 450 /* Exynos4x12 only */ | ||
235 | #define CLK_DIV_ISP1 451 /* Exynos4x12 only */ | ||
236 | #define CLK_DIV_MCUISP0 452 /* Exynos4x12 only */ | ||
237 | #define CLK_DIV_MCUISP1 453 /* Exynos4x12 only */ | ||
238 | #define CLK_DIV_ACLK200 454 /* Exynos4x12 only */ | ||
239 | #define CLK_DIV_ACLK400_MCUISP 455 /* Exynos4x12 only */ | ||
240 | |||
241 | /* must be greater than maximal clock id */ | ||
242 | #define CLK_NR_CLKS 456 | ||
243 | |||
244 | #endif /* _DT_BINDINGS_CLOCK_EXYNOS_4_H */ | ||
diff --git a/include/dt-bindings/clock/exynos5250.h b/include/dt-bindings/clock/exynos5250.h new file mode 100644 index 000000000000..922f2dca9bf0 --- /dev/null +++ b/include/dt-bindings/clock/exynos5250.h | |||
@@ -0,0 +1,160 @@ | |||
1 | /* | ||
2 | * Copyright (c) 2013 Samsung Electronics Co., Ltd. | ||
3 | * Author: Andrzej Haja <a.hajda@samsung.com> | ||
4 | * | ||
5 | * This program is free software; you can redistribute it and/or modify | ||
6 | * it under the terms of the GNU General Public License version 2 as | ||
7 | * published by the Free Software Foundation. | ||
8 | * | ||
9 | * Device Tree binding constants for Exynos5250 clock controller. | ||
10 | */ | ||
11 | |||
12 | #ifndef _DT_BINDINGS_CLOCK_EXYNOS_5250_H | ||
13 | #define _DT_BINDINGS_CLOCK_EXYNOS_5250_H | ||
14 | |||
15 | /* core clocks */ | ||
16 | #define CLK_FIN_PLL 1 | ||
17 | #define CLK_FOUT_APLL 2 | ||
18 | #define CLK_FOUT_MPLL 3 | ||
19 | #define CLK_FOUT_BPLL 4 | ||
20 | #define CLK_FOUT_GPLL 5 | ||
21 | #define CLK_FOUT_CPLL 6 | ||
22 | #define CLK_FOUT_EPLL 7 | ||
23 | #define CLK_FOUT_VPLL 8 | ||
24 | |||
25 | /* gate for special clocks (sclk) */ | ||
26 | #define CLK_SCLK_CAM_BAYER 128 | ||
27 | #define CLK_SCLK_CAM0 129 | ||
28 | #define CLK_SCLK_CAM1 130 | ||
29 | #define CLK_SCLK_GSCL_WA 131 | ||
30 | #define CLK_SCLK_GSCL_WB 132 | ||
31 | #define CLK_SCLK_FIMD1 133 | ||
32 | #define CLK_SCLK_MIPI1 134 | ||
33 | #define CLK_SCLK_DP 135 | ||
34 | #define CLK_SCLK_HDMI 136 | ||
35 | #define CLK_SCLK_PIXEL 137 | ||
36 | #define CLK_SCLK_AUDIO0 138 | ||
37 | #define CLK_SCLK_MMC0 139 | ||
38 | #define CLK_SCLK_MMC1 140 | ||
39 | #define CLK_SCLK_MMC2 141 | ||
40 | #define CLK_SCLK_MMC3 142 | ||
41 | #define CLK_SCLK_SATA 143 | ||
42 | #define CLK_SCLK_USB3 144 | ||
43 | #define CLK_SCLK_JPEG 145 | ||
44 | #define CLK_SCLK_UART0 146 | ||
45 | #define CLK_SCLK_UART1 147 | ||
46 | #define CLK_SCLK_UART2 148 | ||
47 | #define CLK_SCLK_UART3 149 | ||
48 | #define CLK_SCLK_PWM 150 | ||
49 | #define CLK_SCLK_AUDIO1 151 | ||
50 | #define CLK_SCLK_AUDIO2 152 | ||
51 | #define CLK_SCLK_SPDIF 153 | ||
52 | #define CLK_SCLK_SPI0 154 | ||
53 | #define CLK_SCLK_SPI1 155 | ||
54 | #define CLK_SCLK_SPI2 156 | ||
55 | #define CLK_DIV_I2S1 157 | ||
56 | #define CLK_DIV_I2S2 158 | ||
57 | #define CLK_SCLK_HDMIPHY 159 | ||
58 | #define CLK_DIV_PCM0 160 | ||
59 | |||
60 | /* gate clocks */ | ||
61 | #define CLK_GSCL0 256 | ||
62 | #define CLK_GSCL1 257 | ||
63 | #define CLK_GSCL2 258 | ||
64 | #define CLK_GSCL3 259 | ||
65 | #define CLK_GSCL_WA 260 | ||
66 | #define CLK_GSCL_WB 261 | ||
67 | #define CLK_SMMU_GSCL0 262 | ||
68 | #define CLK_SMMU_GSCL1 263 | ||
69 | #define CLK_SMMU_GSCL2 264 | ||
70 | #define CLK_SMMU_GSCL3 265 | ||
71 | #define CLK_MFC 266 | ||
72 | #define CLK_SMMU_MFCL 267 | ||
73 | #define CLK_SMMU_MFCR 268 | ||
74 | #define CLK_ROTATOR 269 | ||
75 | #define CLK_JPEG 270 | ||
76 | #define CLK_MDMA1 271 | ||
77 | #define CLK_SMMU_ROTATOR 272 | ||
78 | #define CLK_SMMU_JPEG 273 | ||
79 | #define CLK_SMMU_MDMA1 274 | ||
80 | #define CLK_PDMA0 275 | ||
81 | #define CLK_PDMA1 276 | ||
82 | #define CLK_SATA 277 | ||
83 | #define CLK_USBOTG 278 | ||
84 | #define CLK_MIPI_HSI 279 | ||
85 | #define CLK_SDMMC0 280 | ||
86 | #define CLK_SDMMC1 281 | ||
87 | #define CLK_SDMMC2 282 | ||
88 | #define CLK_SDMMC3 283 | ||
89 | #define CLK_SROMC 284 | ||
90 | #define CLK_USB2 285 | ||
91 | #define CLK_USB3 286 | ||
92 | #define CLK_SATA_PHYCTRL 287 | ||
93 | #define CLK_SATA_PHYI2C 288 | ||
94 | #define CLK_UART0 289 | ||
95 | #define CLK_UART1 290 | ||
96 | #define CLK_UART2 291 | ||
97 | #define CLK_UART3 292 | ||
98 | #define CLK_UART4 293 | ||
99 | #define CLK_I2C0 294 | ||
100 | #define CLK_I2C1 295 | ||
101 | #define CLK_I2C2 296 | ||
102 | #define CLK_I2C3 297 | ||
103 | #define CLK_I2C4 298 | ||
104 | #define CLK_I2C5 299 | ||
105 | #define CLK_I2C6 300 | ||
106 | #define CLK_I2C7 301 | ||
107 | #define CLK_I2C_HDMI 302 | ||
108 | #define CLK_ADC 303 | ||
109 | #define CLK_SPI0 304 | ||
110 | #define CLK_SPI1 305 | ||
111 | #define CLK_SPI2 306 | ||
112 | #define CLK_I2S1 307 | ||
113 | #define CLK_I2S2 308 | ||
114 | #define CLK_PCM1 309 | ||
115 | #define CLK_PCM2 310 | ||
116 | #define CLK_PWM 311 | ||
117 | #define CLK_SPDIF 312 | ||
118 | #define CLK_AC97 313 | ||
119 | #define CLK_HSI2C0 314 | ||
120 | #define CLK_HSI2C1 315 | ||
121 | #define CLK_HSI2C2 316 | ||
122 | #define CLK_HSI2C3 317 | ||
123 | #define CLK_CHIPID 318 | ||
124 | #define CLK_SYSREG 319 | ||
125 | #define CLK_PMU 320 | ||
126 | #define CLK_CMU_TOP 321 | ||
127 | #define CLK_CMU_CORE 322 | ||
128 | #define CLK_CMU_MEM 323 | ||
129 | #define CLK_TZPC0 324 | ||
130 | #define CLK_TZPC1 325 | ||
131 | #define CLK_TZPC2 326 | ||
132 | #define CLK_TZPC3 327 | ||
133 | #define CLK_TZPC4 328 | ||
134 | #define CLK_TZPC5 329 | ||
135 | #define CLK_TZPC6 330 | ||
136 | #define CLK_TZPC7 331 | ||
137 | #define CLK_TZPC8 332 | ||
138 | #define CLK_TZPC9 333 | ||
139 | #define CLK_HDMI_CEC 334 | ||
140 | #define CLK_MCT 335 | ||
141 | #define CLK_WDT 336 | ||
142 | #define CLK_RTC 337 | ||
143 | #define CLK_TMU 338 | ||
144 | #define CLK_FIMD1 339 | ||
145 | #define CLK_MIE1 340 | ||
146 | #define CLK_DSIM0 341 | ||
147 | #define CLK_DP 342 | ||
148 | #define CLK_MIXER 343 | ||
149 | #define CLK_HDMI 344 | ||
150 | #define CLK_G2D 345 | ||
151 | #define CLK_MDMA0 346 | ||
152 | #define CLK_SMMU_MDMA0 347 | ||
153 | |||
154 | /* mux clocks */ | ||
155 | #define CLK_MOUT_HDMI 1024 | ||
156 | |||
157 | /* must be greater than maximal clock id */ | ||
158 | #define CLK_NR_CLKS 1025 | ||
159 | |||
160 | #endif /* _DT_BINDINGS_CLOCK_EXYNOS_5250_H */ | ||
diff --git a/include/dt-bindings/clock/exynos5420.h b/include/dt-bindings/clock/exynos5420.h new file mode 100644 index 000000000000..5eefd8813f02 --- /dev/null +++ b/include/dt-bindings/clock/exynos5420.h | |||
@@ -0,0 +1,188 @@ | |||
1 | /* | ||
2 | * Copyright (c) 2013 Samsung Electronics Co., Ltd. | ||
3 | * Author: Andrzej Haja <a.hajda@samsung.com> | ||
4 | * | ||
5 | * This program is free software; you can redistribute it and/or modify | ||
6 | * it under the terms of the GNU General Public License version 2 as | ||
7 | * published by the Free Software Foundation. | ||
8 | * | ||
9 | * Device Tree binding constants for Exynos5420 clock controller. | ||
10 | */ | ||
11 | |||
12 | #ifndef _DT_BINDINGS_CLOCK_EXYNOS_5420_H | ||
13 | #define _DT_BINDINGS_CLOCK_EXYNOS_5420_H | ||
14 | |||
15 | /* core clocks */ | ||
16 | #define CLK_FIN_PLL 1 | ||
17 | #define CLK_FOUT_APLL 2 | ||
18 | #define CLK_FOUT_CPLL 3 | ||
19 | #define CLK_FOUT_DPLL 4 | ||
20 | #define CLK_FOUT_EPLL 5 | ||
21 | #define CLK_FOUT_RPLL 6 | ||
22 | #define CLK_FOUT_IPLL 7 | ||
23 | #define CLK_FOUT_SPLL 8 | ||
24 | #define CLK_FOUT_VPLL 9 | ||
25 | #define CLK_FOUT_MPLL 10 | ||
26 | #define CLK_FOUT_BPLL 11 | ||
27 | #define CLK_FOUT_KPLL 12 | ||
28 | |||
29 | /* gate for special clocks (sclk) */ | ||
30 | #define CLK_SCLK_UART0 128 | ||
31 | #define CLK_SCLK_UART1 129 | ||
32 | #define CLK_SCLK_UART2 130 | ||
33 | #define CLK_SCLK_UART3 131 | ||
34 | #define CLK_SCLK_MMC0 132 | ||
35 | #define CLK_SCLK_MMC1 133 | ||
36 | #define CLK_SCLK_MMC2 134 | ||
37 | #define CLK_SCLK_SPI0 135 | ||
38 | #define CLK_SCLK_SPI1 136 | ||
39 | #define CLK_SCLK_SPI2 137 | ||
40 | #define CLK_SCLK_I2S1 138 | ||
41 | #define CLK_SCLK_I2S2 139 | ||
42 | #define CLK_SCLK_PCM1 140 | ||
43 | #define CLK_SCLK_PCM2 141 | ||
44 | #define CLK_SCLK_SPDIF 142 | ||
45 | #define CLK_SCLK_HDMI 143 | ||
46 | #define CLK_SCLK_PIXEL 144 | ||
47 | #define CLK_SCLK_DP1 145 | ||
48 | #define CLK_SCLK_MIPI1 146 | ||
49 | #define CLK_SCLK_FIMD1 147 | ||
50 | #define CLK_SCLK_MAUDIO0 148 | ||
51 | #define CLK_SCLK_MAUPCM0 149 | ||
52 | #define CLK_SCLK_USBD300 150 | ||
53 | #define CLK_SCLK_USBD301 151 | ||
54 | #define CLK_SCLK_USBPHY300 152 | ||
55 | #define CLK_SCLK_USBPHY301 153 | ||
56 | #define CLK_SCLK_UNIPRO 154 | ||
57 | #define CLK_SCLK_PWM 155 | ||
58 | #define CLK_SCLK_GSCL_WA 156 | ||
59 | #define CLK_SCLK_GSCL_WB 157 | ||
60 | #define CLK_SCLK_HDMIPHY 158 | ||
61 | |||
62 | /* gate clocks */ | ||
63 | #define CLK_ACLK66_PERIC 256 | ||
64 | #define CLK_UART0 257 | ||
65 | #define CLK_UART1 258 | ||
66 | #define CLK_UART2 259 | ||
67 | #define CLK_UART3 260 | ||
68 | #define CLK_I2C0 261 | ||
69 | #define CLK_I2C1 262 | ||
70 | #define CLK_I2C2 263 | ||
71 | #define CLK_I2C3 264 | ||
72 | #define CLK_I2C4 265 | ||
73 | #define CLK_I2C5 266 | ||
74 | #define CLK_I2C6 267 | ||
75 | #define CLK_I2C7 268 | ||
76 | #define CLK_I2C_HDMI 269 | ||
77 | #define CLK_TSADC 270 | ||
78 | #define CLK_SPI0 271 | ||
79 | #define CLK_SPI1 272 | ||
80 | #define CLK_SPI2 273 | ||
81 | #define CLK_KEYIF 274 | ||
82 | #define CLK_I2S1 275 | ||
83 | #define CLK_I2S2 276 | ||
84 | #define CLK_PCM1 277 | ||
85 | #define CLK_PCM2 278 | ||
86 | #define CLK_PWM 279 | ||
87 | #define CLK_SPDIF 280 | ||
88 | #define CLK_I2C8 281 | ||
89 | #define CLK_I2C9 282 | ||
90 | #define CLK_I2C10 283 | ||
91 | #define CLK_ACLK66_PSGEN 300 | ||
92 | #define CLK_CHIPID 301 | ||
93 | #define CLK_SYSREG 302 | ||
94 | #define CLK_TZPC0 303 | ||
95 | #define CLK_TZPC1 304 | ||
96 | #define CLK_TZPC2 305 | ||
97 | #define CLK_TZPC3 306 | ||
98 | #define CLK_TZPC4 307 | ||
99 | #define CLK_TZPC5 308 | ||
100 | #define CLK_TZPC6 309 | ||
101 | #define CLK_TZPC7 310 | ||
102 | #define CLK_TZPC8 311 | ||
103 | #define CLK_TZPC9 312 | ||
104 | #define CLK_HDMI_CEC 313 | ||
105 | #define CLK_SECKEY 314 | ||
106 | #define CLK_MCT 315 | ||
107 | #define CLK_WDT 316 | ||
108 | #define CLK_RTC 317 | ||
109 | #define CLK_TMU 318 | ||
110 | #define CLK_TMU_GPU 319 | ||
111 | #define CLK_PCLK66_GPIO 330 | ||
112 | #define CLK_ACLK200_FSYS2 350 | ||
113 | #define CLK_MMC0 351 | ||
114 | #define CLK_MMC1 352 | ||
115 | #define CLK_MMC2 353 | ||
116 | #define CLK_SROMC 354 | ||
117 | #define CLK_UFS 355 | ||
118 | #define CLK_ACLK200_FSYS 360 | ||
119 | #define CLK_TSI 361 | ||
120 | #define CLK_PDMA0 362 | ||
121 | #define CLK_PDMA1 363 | ||
122 | #define CLK_RTIC 364 | ||
123 | #define CLK_USBH20 365 | ||
124 | #define CLK_USBD300 366 | ||
125 | #define CLK_USBD301 367 | ||
126 | #define CLK_ACLK400_MSCL 380 | ||
127 | #define CLK_MSCL0 381 | ||
128 | #define CLK_MSCL1 382 | ||
129 | #define CLK_MSCL2 383 | ||
130 | #define CLK_SMMU_MSCL0 384 | ||
131 | #define CLK_SMMU_MSCL1 385 | ||
132 | #define CLK_SMMU_MSCL2 386 | ||
133 | #define CLK_ACLK333 400 | ||
134 | #define CLK_MFC 401 | ||
135 | #define CLK_SMMU_MFCL 402 | ||
136 | #define CLK_SMMU_MFCR 403 | ||
137 | #define CLK_ACLK200_DISP1 410 | ||
138 | #define CLK_DSIM1 411 | ||
139 | #define CLK_DP1 412 | ||
140 | #define CLK_HDMI 413 | ||
141 | #define CLK_ACLK300_DISP1 420 | ||
142 | #define CLK_FIMD1 421 | ||
143 | #define CLK_SMMU_FIMD1 422 | ||
144 | #define CLK_ACLK166 430 | ||
145 | #define CLK_MIXER 431 | ||
146 | #define CLK_ACLK266 440 | ||
147 | #define CLK_ROTATOR 441 | ||
148 | #define CLK_MDMA1 442 | ||
149 | #define CLK_SMMU_ROTATOR 443 | ||
150 | #define CLK_SMMU_MDMA1 444 | ||
151 | #define CLK_ACLK300_JPEG 450 | ||
152 | #define CLK_JPEG 451 | ||
153 | #define CLK_JPEG2 452 | ||
154 | #define CLK_SMMU_JPEG 453 | ||
155 | #define CLK_ACLK300_GSCL 460 | ||
156 | #define CLK_SMMU_GSCL0 461 | ||
157 | #define CLK_SMMU_GSCL1 462 | ||
158 | #define CLK_GSCL_WA 463 | ||
159 | #define CLK_GSCL_WB 464 | ||
160 | #define CLK_GSCL0 465 | ||
161 | #define CLK_GSCL1 466 | ||
162 | #define CLK_CLK_3AA 467 | ||
163 | #define CLK_ACLK266_G2D 470 | ||
164 | #define CLK_SSS 471 | ||
165 | #define CLK_SLIM_SSS 472 | ||
166 | #define CLK_MDMA0 473 | ||
167 | #define CLK_ACLK333_G2D 480 | ||
168 | #define CLK_G2D 481 | ||
169 | #define CLK_ACLK333_432_GSCL 490 | ||
170 | #define CLK_SMMU_3AA 491 | ||
171 | #define CLK_SMMU_FIMCL0 492 | ||
172 | #define CLK_SMMU_FIMCL1 493 | ||
173 | #define CLK_SMMU_FIMCL3 494 | ||
174 | #define CLK_FIMC_LITE3 495 | ||
175 | #define CLK_ACLK_G3D 500 | ||
176 | #define CLK_G3D 501 | ||
177 | #define CLK_SMMU_MIXER 502 | ||
178 | |||
179 | /* mux clocks */ | ||
180 | #define CLK_MOUT_HDMI 640 | ||
181 | |||
182 | /* divider clocks */ | ||
183 | #define CLK_DOUT_PIXEL 768 | ||
184 | |||
185 | /* must be greater than maximal clock id */ | ||
186 | #define CLK_NR_CLKS 769 | ||
187 | |||
188 | #endif /* _DT_BINDINGS_CLOCK_EXYNOS_5420_H */ | ||
diff --git a/include/dt-bindings/clock/exynos5440.h b/include/dt-bindings/clock/exynos5440.h new file mode 100644 index 000000000000..70cd85077fa9 --- /dev/null +++ b/include/dt-bindings/clock/exynos5440.h | |||
@@ -0,0 +1,42 @@ | |||
1 | /* | ||
2 | * Copyright (c) 2013 Samsung Electronics Co., Ltd. | ||
3 | * Author: Andrzej Haja <a.hajda-Sze3O3UU22JBDgjK7y7TUQ@public.gmane.org> | ||
4 | * | ||
5 | * This program is free software; you can redistribute it and/or modify | ||
6 | * it under the terms of the GNU General Public License version 2 as | ||
7 | * published by the Free Software Foundation. | ||
8 | * | ||
9 | * Device Tree binding constants for Exynos5440 clock controller. | ||
10 | */ | ||
11 | |||
12 | #ifndef _DT_BINDINGS_CLOCK_EXYNOS_5440_H | ||
13 | #define _DT_BINDINGS_CLOCK_EXYNOS_5440_H | ||
14 | |||
15 | #define CLK_XTAL 1 | ||
16 | #define CLK_ARM_CLK 2 | ||
17 | #define CLK_SPI_BAUD 16 | ||
18 | #define CLK_PB0_250 17 | ||
19 | #define CLK_PR0_250 18 | ||
20 | #define CLK_PR1_250 19 | ||
21 | #define CLK_B_250 20 | ||
22 | #define CLK_B_125 21 | ||
23 | #define CLK_B_200 22 | ||
24 | #define CLK_SATA 23 | ||
25 | #define CLK_USB 24 | ||
26 | #define CLK_GMAC0 25 | ||
27 | #define CLK_CS250 26 | ||
28 | #define CLK_PB0_250_O 27 | ||
29 | #define CLK_PR0_250_O 28 | ||
30 | #define CLK_PR1_250_O 29 | ||
31 | #define CLK_B_250_O 30 | ||
32 | #define CLK_B_125_O 31 | ||
33 | #define CLK_B_200_O 32 | ||
34 | #define CLK_SATA_O 33 | ||
35 | #define CLK_USB_O 34 | ||
36 | #define CLK_GMAC0_O 35 | ||
37 | #define CLK_CS250_O 36 | ||
38 | |||
39 | /* must be greater than maximal clock id */ | ||
40 | #define CLK_NR_CLKS 37 | ||
41 | |||
42 | #endif /* _DT_BINDINGS_CLOCK_EXYNOS_5440_H */ | ||