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); |
