clock.c (1078B)
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 20int __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