diff options
author | Arnd Bergmann <arnd@arndb.de> | 2012-11-16 11:14:37 -0500 |
---|---|---|
committer | Arnd Bergmann <arnd@arndb.de> | 2012-11-16 11:14:37 -0500 |
commit | 794c1539ab391e1278bec0d69015d9b4e75bdaf0 (patch) | |
tree | d2c2259afc46f724cc288eb13e82aa953c3a633a | |
parent | f75ed2d39562e19e4d1896c07e7f091515c6d11d (diff) | |
parent | 16defa668d009a762e23d55ce6ecf5ae483dfe10 (diff) |
Merge tag 'mtu-clk-for-arm-soc' of git://git.kernel.org/pub/scm/linux/kernel/git/linusw/linux-stericsson into next/multiplatform
From Linus Walleij <linus.walleij@linaro.org>:
This tag contains two MTU patches based on top of the ux500 sparse IRQ
commit to avoid merge clashes.
* tag 'mtu-clk-for-arm-soc' of git://git.kernel.org/pub/scm/linux/kernel/git/linusw/linux-stericsson:
clocksource/mtu-nomadik: use apb_pclk
clk: ux500: Register mtu apb_pclocks
Signed-off-by: Arnd Bergmann <arnd@arndb.de>
-rw-r--r-- | drivers/clk/ux500/u8500_clk.c | 9 | ||||
-rw-r--r-- | drivers/clocksource/nomadik-mtu.c | 8 |
2 files changed, 10 insertions, 7 deletions
diff --git a/drivers/clk/ux500/u8500_clk.c b/drivers/clk/ux500/u8500_clk.c index ab30ce87614c..1f6bfb8f8737 100644 --- a/drivers/clk/ux500/u8500_clk.c +++ b/drivers/clk/ux500/u8500_clk.c | |||
@@ -160,12 +160,6 @@ void u8500_clk_init(void) | |||
160 | clk = clk_reg_prcmu_gate("uiccclk", NULL, PRCMU_UICCCLK, CLK_IS_ROOT); | 160 | clk = clk_reg_prcmu_gate("uiccclk", NULL, PRCMU_UICCCLK, CLK_IS_ROOT); |
161 | clk_register_clkdev(clk, NULL, "uicc"); | 161 | clk_register_clkdev(clk, NULL, "uicc"); |
162 | 162 | ||
163 | /* | ||
164 | * FIXME: The MTU clocks might need some kind of "parent muxed join" | ||
165 | * and these have no K-clocks. For now, we ignore the missing | ||
166 | * connection to the corresponding P-clocks, p6_mtu0_clk and | ||
167 | * p6_mtu1_clk. Instead timclk is used which is the valid parent. | ||
168 | */ | ||
169 | clk = clk_reg_prcmu_gate("timclk", NULL, PRCMU_TIMCLK, CLK_IS_ROOT); | 163 | clk = clk_reg_prcmu_gate("timclk", NULL, PRCMU_TIMCLK, CLK_IS_ROOT); |
170 | clk_register_clkdev(clk, NULL, "mtu0"); | 164 | clk_register_clkdev(clk, NULL, "mtu0"); |
171 | clk_register_clkdev(clk, NULL, "mtu1"); | 165 | clk_register_clkdev(clk, NULL, "mtu1"); |
@@ -379,8 +373,11 @@ void u8500_clk_init(void) | |||
379 | 373 | ||
380 | clk = clk_reg_prcc_pclk("p6_pclk6", "per6clk", U8500_CLKRST6_BASE, | 374 | clk = clk_reg_prcc_pclk("p6_pclk6", "per6clk", U8500_CLKRST6_BASE, |
381 | BIT(6), 0); | 375 | BIT(6), 0); |
376 | clk_register_clkdev(clk, "apb_pclk", "mtu0"); | ||
377 | |||
382 | clk = clk_reg_prcc_pclk("p6_pclk7", "per6clk", U8500_CLKRST6_BASE, | 378 | clk = clk_reg_prcc_pclk("p6_pclk7", "per6clk", U8500_CLKRST6_BASE, |
383 | BIT(7), 0); | 379 | BIT(7), 0); |
380 | clk_register_clkdev(clk, "apb_pclk", "mtu1"); | ||
384 | 381 | ||
385 | /* PRCC K-clocks | 382 | /* PRCC K-clocks |
386 | * | 383 | * |
diff --git a/drivers/clocksource/nomadik-mtu.c b/drivers/clocksource/nomadik-mtu.c index 23c780ba0d35..8914c3c1c88b 100644 --- a/drivers/clocksource/nomadik-mtu.c +++ b/drivers/clocksource/nomadik-mtu.c | |||
@@ -177,9 +177,15 @@ void nmdk_clksrc_reset(void) | |||
177 | void __init nmdk_timer_init(void __iomem *base, int irq) | 177 | void __init nmdk_timer_init(void __iomem *base, int irq) |
178 | { | 178 | { |
179 | unsigned long rate; | 179 | unsigned long rate; |
180 | struct clk *clk0; | 180 | struct clk *clk0, *pclk0; |
181 | 181 | ||
182 | mtu_base = base; | 182 | mtu_base = base; |
183 | |||
184 | pclk0 = clk_get_sys("mtu0", "apb_pclk"); | ||
185 | BUG_ON(IS_ERR(pclk0)); | ||
186 | BUG_ON(clk_prepare(pclk0) < 0); | ||
187 | BUG_ON(clk_enable(pclk0) < 0); | ||
188 | |||
183 | clk0 = clk_get_sys("mtu0", NULL); | 189 | clk0 = clk_get_sys("mtu0", NULL); |
184 | BUG_ON(IS_ERR(clk0)); | 190 | BUG_ON(IS_ERR(clk0)); |
185 | BUG_ON(clk_prepare(clk0) < 0); | 191 | BUG_ON(clk_prepare(clk0) < 0); |