linux/arch/sh/kernel/cpu/clock.c
<<
>>
Prefs
   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
  53