xref: /openbmc/linux/arch/sh/kernel/cpu/clock.c (revision 597473720f4dc69749542bfcfed4a927a43d935e)
1*b0a148f8SKuninori Morimoto // SPDX-License-Identifier: GPL-2.0
236ddf31bSPaul Mundt /*
336ddf31bSPaul Mundt  * arch/sh/kernel/cpu/clock.c - SuperH clock framework
436ddf31bSPaul Mundt  *
5b1f6cfe4SPaul Mundt  *  Copyright (C) 2005 - 2009  Paul Mundt
636ddf31bSPaul Mundt  *
736ddf31bSPaul Mundt  * This clock framework is derived from the OMAP version by:
836ddf31bSPaul Mundt  *
9b1f6cfe4SPaul Mundt  *	Copyright (C) 2004 - 2008 Nokia Corporation
1036ddf31bSPaul Mundt  *	Written by Tuukka Tikkanen <tuukka.tikkanen@elektrobit.com>
1136ddf31bSPaul Mundt  *
121d118562SPaul Mundt  *  Modified for omap shared clock framework by Tony Lindgren <tony@atomide.com>
1336ddf31bSPaul Mundt  */
1436ddf31bSPaul Mundt #include <linux/kernel.h>
1536ddf31bSPaul Mundt #include <linux/init.h>
1651a5006aSPaul Mundt #include <linux/clk.h>
1736ddf31bSPaul Mundt #include <asm/clock.h>
18253b0887SPaul Mundt #include <asm/machvec.h>
1936ddf31bSPaul Mundt 
clk_init(void)2036ddf31bSPaul Mundt int __init clk_init(void)
2136ddf31bSPaul Mundt {
22253b0887SPaul Mundt 	int ret;
2336ddf31bSPaul Mundt 
2415f0c8f2SRich Felker #ifndef CONFIG_COMMON_CLK
25253b0887SPaul Mundt 	ret = arch_clk_init();
26253b0887SPaul Mundt 	if (unlikely(ret)) {
27253b0887SPaul Mundt 		pr_err("%s: CPU clock registration failed.\n", __func__);
28253b0887SPaul Mundt 		return ret;
2936ddf31bSPaul Mundt 	}
3015f0c8f2SRich Felker #endif
3136ddf31bSPaul Mundt 
32253b0887SPaul Mundt 	if (sh_mv.mv_clk_init) {
33253b0887SPaul Mundt 		ret = sh_mv.mv_clk_init();
34253b0887SPaul Mundt 		if (unlikely(ret)) {
35253b0887SPaul Mundt 			pr_err("%s: machvec clock initialization failed.\n",
36253b0887SPaul Mundt 			       __func__);
37253b0887SPaul Mundt 			return ret;
38253b0887SPaul Mundt 		}
39253b0887SPaul Mundt 	}
40dfbbbe92Sdmitry pervushin 
4115f0c8f2SRich Felker #ifndef CONFIG_COMMON_CLK
4236ddf31bSPaul Mundt 	/* Kick the child clocks.. */
43b1f6cfe4SPaul Mundt 	recalculate_root_clocks();
4436ddf31bSPaul Mundt 
454ff29ff8SPaul Mundt 	/* Enable the necessary init clocks */
464ff29ff8SPaul Mundt 	clk_enable_init_clocks();
4715f0c8f2SRich Felker #endif
484ff29ff8SPaul Mundt 
4936ddf31bSPaul Mundt 	return ret;
5036ddf31bSPaul Mundt }
5136ddf31bSPaul Mundt 
52cedcf336SPaul Mundt 
53