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 * Returns a clock. Note that we first try to use device id on the bus 53 * and clock name. If this fails, we try to use clock name only. 54 */ 55 struct clk *clk_get(struct device *dev, const char *con_id) 56 { 57 const char *dev_id = dev ? dev_name(dev) : NULL; 58 59 return clk_get_sys(dev_id, con_id); 60 } 61 EXPORT_SYMBOL_GPL(clk_get); 62 63 void clk_put(struct clk *clk) 64 { 65 } 66 EXPORT_SYMBOL_GPL(clk_put); 67 68