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 #ifndef CONFIG_COMMON_CLK 28 ret = arch_clk_init(); 29 if (unlikely(ret)) { 30 pr_err("%s: CPU clock registration failed.\n", __func__); 31 return ret; 32 } 33 #endif 34 35 if (sh_mv.mv_clk_init) { 36 ret = sh_mv.mv_clk_init(); 37 if (unlikely(ret)) { 38 pr_err("%s: machvec clock initialization failed.\n", 39 __func__); 40 return ret; 41 } 42 } 43 44 #ifndef CONFIG_COMMON_CLK 45 /* Kick the child clocks.. */ 46 recalculate_root_clocks(); 47 48 /* Enable the necessary init clocks */ 49 clk_enable_init_clocks(); 50 #endif 51 52 return ret; 53 } 54 55 56