diff options
author | Chen-Yu Tsai <wens@csie.org> | 2014-11-27 04:29:30 -0500 |
---|---|---|
committer | Maxime Ripard <maxime.ripard@free-electrons.com> | 2014-12-21 17:51:37 -0500 |
commit | 66e79cf17ea636dbe28ee4ca01ccda638645f522 (patch) | |
tree | b46aacfbe17b88d4efdec0c7f4591db4feaaf859 /drivers/clk | |
parent | 7c74c220e9c6d756953235e1f8e5b704569ea613 (diff) |
clk: sunxi: Fix factor clocks usage for sun9i core clocks
The sunxi factor clocks usage was changed in
clk: sunxi: Give sunxi_factors_register a registers parameter
However the sun9i core clocks were not fixed up in that patch,
resulting in breakage. This patch fixes that.
Signed-off-by: Chen-Yu Tsai <wens@csie.org>
Cc: Hans de Goede <hdegoede@redhat.com>
Signed-off-by: Maxime Ripard <maxime.ripard@free-electrons.com>
Diffstat (limited to 'drivers/clk')
-rw-r--r-- | drivers/clk/sunxi/clk-sun9i-core.c | 62 |
1 files changed, 56 insertions, 6 deletions
diff --git a/drivers/clk/sunxi/clk-sun9i-core.c b/drivers/clk/sunxi/clk-sun9i-core.c index 3cb9036d91bb..9b5e7a1f72d0 100644 --- a/drivers/clk/sunxi/clk-sun9i-core.c +++ b/drivers/clk/sunxi/clk-sun9i-core.c | |||
@@ -89,7 +89,17 @@ static DEFINE_SPINLOCK(sun9i_a80_pll4_lock); | |||
89 | 89 | ||
90 | static void __init sun9i_a80_pll4_setup(struct device_node *node) | 90 | static void __init sun9i_a80_pll4_setup(struct device_node *node) |
91 | { | 91 | { |
92 | sunxi_factors_register(node, &sun9i_a80_pll4_data, &sun9i_a80_pll4_lock); | 92 | void __iomem *reg; |
93 | |||
94 | reg = of_io_request_and_map(node, 0, of_node_full_name(node)); | ||
95 | if (!reg) { | ||
96 | pr_err("Could not get registers for a80-pll4-clk: %s\n", | ||
97 | node->name); | ||
98 | return; | ||
99 | } | ||
100 | |||
101 | sunxi_factors_register(node, &sun9i_a80_pll4_data, | ||
102 | &sun9i_a80_pll4_lock, reg); | ||
93 | } | 103 | } |
94 | CLK_OF_DECLARE(sun9i_a80_pll4, "allwinner,sun9i-a80-pll4-clk", sun9i_a80_pll4_setup); | 104 | CLK_OF_DECLARE(sun9i_a80_pll4, "allwinner,sun9i-a80-pll4-clk", sun9i_a80_pll4_setup); |
95 | 105 | ||
@@ -139,8 +149,18 @@ static DEFINE_SPINLOCK(sun9i_a80_gt_lock); | |||
139 | 149 | ||
140 | static void __init sun9i_a80_gt_setup(struct device_node *node) | 150 | static void __init sun9i_a80_gt_setup(struct device_node *node) |
141 | { | 151 | { |
142 | struct clk *gt = sunxi_factors_register(node, &sun9i_a80_gt_data, | 152 | void __iomem *reg; |
143 | &sun9i_a80_gt_lock); | 153 | struct clk *gt; |
154 | |||
155 | reg = of_io_request_and_map(node, 0, of_node_full_name(node)); | ||
156 | if (!reg) { | ||
157 | pr_err("Could not get registers for a80-gt-clk: %s\n", | ||
158 | node->name); | ||
159 | return; | ||
160 | } | ||
161 | |||
162 | gt = sunxi_factors_register(node, &sun9i_a80_gt_data, | ||
163 | &sun9i_a80_gt_lock, reg); | ||
144 | 164 | ||
145 | /* The GT bus clock needs to be always enabled */ | 165 | /* The GT bus clock needs to be always enabled */ |
146 | __clk_get(gt); | 166 | __clk_get(gt); |
@@ -194,7 +214,17 @@ static DEFINE_SPINLOCK(sun9i_a80_ahb_lock); | |||
194 | 214 | ||
195 | static void __init sun9i_a80_ahb_setup(struct device_node *node) | 215 | static void __init sun9i_a80_ahb_setup(struct device_node *node) |
196 | { | 216 | { |
197 | sunxi_factors_register(node, &sun9i_a80_ahb_data, &sun9i_a80_ahb_lock); | 217 | void __iomem *reg; |
218 | |||
219 | reg = of_io_request_and_map(node, 0, of_node_full_name(node)); | ||
220 | if (!reg) { | ||
221 | pr_err("Could not get registers for a80-ahb-clk: %s\n", | ||
222 | node->name); | ||
223 | return; | ||
224 | } | ||
225 | |||
226 | sunxi_factors_register(node, &sun9i_a80_ahb_data, | ||
227 | &sun9i_a80_ahb_lock, reg); | ||
198 | } | 228 | } |
199 | CLK_OF_DECLARE(sun9i_a80_ahb, "allwinner,sun9i-a80-ahb-clk", sun9i_a80_ahb_setup); | 229 | CLK_OF_DECLARE(sun9i_a80_ahb, "allwinner,sun9i-a80-ahb-clk", sun9i_a80_ahb_setup); |
200 | 230 | ||
@@ -210,7 +240,17 @@ static DEFINE_SPINLOCK(sun9i_a80_apb0_lock); | |||
210 | 240 | ||
211 | static void __init sun9i_a80_apb0_setup(struct device_node *node) | 241 | static void __init sun9i_a80_apb0_setup(struct device_node *node) |
212 | { | 242 | { |
213 | sunxi_factors_register(node, &sun9i_a80_apb0_data, &sun9i_a80_apb0_lock); | 243 | void __iomem *reg; |
244 | |||
245 | reg = of_io_request_and_map(node, 0, of_node_full_name(node)); | ||
246 | if (!reg) { | ||
247 | pr_err("Could not get registers for a80-apb0-clk: %s\n", | ||
248 | node->name); | ||
249 | return; | ||
250 | } | ||
251 | |||
252 | sunxi_factors_register(node, &sun9i_a80_apb0_data, | ||
253 | &sun9i_a80_apb0_lock, reg); | ||
214 | } | 254 | } |
215 | CLK_OF_DECLARE(sun9i_a80_apb0, "allwinner,sun9i-a80-apb0-clk", sun9i_a80_apb0_setup); | 255 | CLK_OF_DECLARE(sun9i_a80_apb0, "allwinner,sun9i-a80-apb0-clk", sun9i_a80_apb0_setup); |
216 | 256 | ||
@@ -266,6 +306,16 @@ static DEFINE_SPINLOCK(sun9i_a80_apb1_lock); | |||
266 | 306 | ||
267 | static void __init sun9i_a80_apb1_setup(struct device_node *node) | 307 | static void __init sun9i_a80_apb1_setup(struct device_node *node) |
268 | { | 308 | { |
269 | sunxi_factors_register(node, &sun9i_a80_apb1_data, &sun9i_a80_apb1_lock); | 309 | void __iomem *reg; |
310 | |||
311 | reg = of_io_request_and_map(node, 0, of_node_full_name(node)); | ||
312 | if (!reg) { | ||
313 | pr_err("Could not get registers for a80-apb1-clk: %s\n", | ||
314 | node->name); | ||
315 | return; | ||
316 | } | ||
317 | |||
318 | sunxi_factors_register(node, &sun9i_a80_apb1_data, | ||
319 | &sun9i_a80_apb1_lock, reg); | ||
270 | } | 320 | } |
271 | CLK_OF_DECLARE(sun9i_a80_apb1, "allwinner,sun9i-a80-apb1-clk", sun9i_a80_apb1_setup); | 321 | CLK_OF_DECLARE(sun9i_a80_apb1, "allwinner,sun9i-a80-apb1-clk", sun9i_a80_apb1_setup); |