diff options
author | Arnd Bergmann <arnd@arndb.de> | 2012-11-16 17:14:37 +0100 |
---|---|---|
committer | Arnd Bergmann <arnd@arndb.de> | 2012-11-16 17:14:37 +0100 |
commit | 794c1539ab391e1278bec0d69015d9b4e75bdaf0 (patch) | |
tree | d2c2259afc46f724cc288eb13e82aa953c3a633a | |
parent | f75ed2d39562e19e4d1896c07e7f091515c6d11d (diff) | |
parent | 16defa668d009a762e23d55ce6ecf5ae483dfe10 (diff) | |
download | linux-794c1539ab391e1278bec0d69015d9b4e75bdaf0.tar.gz linux-794c1539ab391e1278bec0d69015d9b4e75bdaf0.tar.bz2 linux-794c1539ab391e1278bec0d69015d9b4e75bdaf0.zip |
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) clk = clk_reg_prcmu_gate("uiccclk", NULL, PRCMU_UICCCLK, CLK_IS_ROOT); clk_register_clkdev(clk, NULL, "uicc"); - /* - * FIXME: The MTU clocks might need some kind of "parent muxed join" - * and these have no K-clocks. For now, we ignore the missing - * connection to the corresponding P-clocks, p6_mtu0_clk and - * p6_mtu1_clk. Instead timclk is used which is the valid parent. - */ clk = clk_reg_prcmu_gate("timclk", NULL, PRCMU_TIMCLK, CLK_IS_ROOT); clk_register_clkdev(clk, NULL, "mtu0"); clk_register_clkdev(clk, NULL, "mtu1"); @@ -379,8 +373,11 @@ void u8500_clk_init(void) clk = clk_reg_prcc_pclk("p6_pclk6", "per6clk", U8500_CLKRST6_BASE, BIT(6), 0); + clk_register_clkdev(clk, "apb_pclk", "mtu0"); + clk = clk_reg_prcc_pclk("p6_pclk7", "per6clk", U8500_CLKRST6_BASE, BIT(7), 0); + clk_register_clkdev(clk, "apb_pclk", "mtu1"); /* PRCC K-clocks * 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) void __init nmdk_timer_init(void __iomem *base, int irq) { unsigned long rate; - struct clk *clk0; + struct clk *clk0, *pclk0; mtu_base = base; + + pclk0 = clk_get_sys("mtu0", "apb_pclk"); + BUG_ON(IS_ERR(pclk0)); + BUG_ON(clk_prepare(pclk0) < 0); + BUG_ON(clk_enable(pclk0) < 0); + clk0 = clk_get_sys("mtu0", NULL); BUG_ON(IS_ERR(clk0)); BUG_ON(clk_prepare(clk0) < 0); |