xref: /openbmc/linux/arch/sh/kernel/time.c (revision 5497b23e)
1  // SPDX-License-Identifier: GPL-2.0
2  /*
3   *  arch/sh/kernel/time.c
4   *
5   *  Copyright (C) 1999  Tetsuya Okada & Niibe Yutaka
6   *  Copyright (C) 2000  Philipp Rumpf <prumpf@tux.org>
7   *  Copyright (C) 2002 - 2009  Paul Mundt
8   *  Copyright (C) 2002  M. R. Brown  <mrbrown@linux-sh.org>
9   */
10  #include <linux/kernel.h>
11  #include <linux/init.h>
12  #include <linux/profile.h>
13  #include <linux/timex.h>
14  #include <linux/sched.h>
15  #include <linux/clockchips.h>
16  #include <linux/platform_device.h>
17  #include <linux/smp.h>
18  #include <linux/rtc.h>
19  #include <asm/clock.h>
20  #include <asm/rtc.h>
21  #include <asm/platform_early.h>
22  
23  static void __init sh_late_time_init(void)
24  {
25  	/*
26  	 * Make sure all compiled-in early timers register themselves.
27  	 *
28  	 * Run probe() for two "earlytimer" devices, these will be the
29  	 * clockevents and clocksource devices respectively. In the event
30  	 * that only a clockevents device is available, we -ENODEV on the
31  	 * clocksource and the jiffies clocksource is used transparently
32  	 * instead. No error handling is necessary here.
33  	 */
34  	sh_early_platform_driver_register_all("earlytimer");
35  	sh_early_platform_driver_probe("earlytimer", 2, 0);
36  }
37  
38  void __init time_init(void)
39  {
40  	timer_probe();
41  
42  	clk_init();
43  
44  	late_time_init = sh_late_time_init;
45  }
46