aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/clk
diff options
context:
space:
mode:
authorChen-Yu Tsai <wens@csie.org>2014-11-27 04:29:30 -0500
committerMaxime Ripard <maxime.ripard@free-electrons.com>2014-12-21 17:51:37 -0500
commit66e79cf17ea636dbe28ee4ca01ccda638645f522 (patch)
treeb46aacfbe17b88d4efdec0c7f4591db4feaaf859 /drivers/clk
parent7c74c220e9c6d756953235e1f8e5b704569ea613 (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.c62
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
90static void __init sun9i_a80_pll4_setup(struct device_node *node) 90static 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}
94CLK_OF_DECLARE(sun9i_a80_pll4, "allwinner,sun9i-a80-pll4-clk", sun9i_a80_pll4_setup); 104CLK_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
140static void __init sun9i_a80_gt_setup(struct device_node *node) 150static 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
195static void __init sun9i_a80_ahb_setup(struct device_node *node) 215static 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}
199CLK_OF_DECLARE(sun9i_a80_ahb, "allwinner,sun9i-a80-ahb-clk", sun9i_a80_ahb_setup); 229CLK_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
211static void __init sun9i_a80_apb0_setup(struct device_node *node) 241static 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}
215CLK_OF_DECLARE(sun9i_a80_apb0, "allwinner,sun9i-a80-apb0-clk", sun9i_a80_apb0_setup); 255CLK_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
267static void __init sun9i_a80_apb1_setup(struct device_node *node) 307static 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}
271CLK_OF_DECLARE(sun9i_a80_apb1, "allwinner,sun9i-a80-apb1-clk", sun9i_a80_apb1_setup); 321CLK_OF_DECLARE(sun9i_a80_apb1, "allwinner,sun9i-a80-apb1-clk", sun9i_a80_apb1_setup);