1 | // SPDX-License-Identifier: GPL-2.0 |
2 | /* |
3 | * arch/sh/kernel/cpu/clock.c - SuperH clock framework |
4 | * |
5 | * Copyright (C) 2005 - 2009 Paul Mundt |
6 | * |
7 | * This clock framework is derived from the OMAP version by: |
8 | * |
9 | * Copyright (C) 2004 - 2008 Nokia Corporation |
10 | * Written by Tuukka Tikkanen <tuukka.tikkanen@elektrobit.com> |
11 | * |
12 | * Modified for omap shared clock framework by Tony Lindgren <tony@atomide.com> |
13 | */ |
14 | #include <linux/kernel.h> |
15 | #include <linux/init.h> |
16 | #include <linux/clk.h> |
17 | #include <asm/clock.h> |
18 | #include <asm/machvec.h> |
19 | |
20 | int __init clk_init(void) |
21 | { |
22 | int ret; |
23 | |
24 | #ifndef CONFIG_COMMON_CLK |
25 | ret = arch_clk_init(); |
26 | if (unlikely(ret)) { |
27 | pr_err("%s: CPU clock registration failed.\n" , __func__); |
28 | return ret; |
29 | } |
30 | #endif |
31 | |
32 | if (sh_mv.mv_clk_init) { |
33 | ret = sh_mv.mv_clk_init(); |
34 | if (unlikely(ret)) { |
35 | pr_err("%s: machvec clock initialization failed.\n" , |
36 | __func__); |
37 | return ret; |
38 | } |
39 | } |
40 | |
41 | #ifndef CONFIG_COMMON_CLK |
42 | /* Kick the child clocks.. */ |
43 | recalculate_root_clocks(); |
44 | |
45 | /* Enable the necessary init clocks */ |
46 | clk_enable_init_clocks(); |
47 | #endif |
48 | |
49 | return ret; |
50 | } |
51 | |
52 | |
53 | |