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