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