linux/arch/mips/include/asm/time.h
<<
>>
Prefs
   1/* SPDX-License-Identifier: GPL-2.0-or-later */
   2/*
   3 * Copyright (C) 2001, 2002, MontaVista Software Inc.
   4 * Author: Jun Sun, jsun@mvista.com or jsun@junsun.net
   5 * Copyright (c) 2003  Maciej W. Rozycki
   6 *
   7 * include/asm-mips/time.h
   8 *     header file for the new style time.c file and time services.
   9 */
  10#ifndef _ASM_TIME_H
  11#define _ASM_TIME_H
  12
  13#include <linux/rtc.h>
  14#include <linux/spinlock.h>
  15#include <linux/clockchips.h>
  16#include <linux/clocksource.h>
  17
  18extern spinlock_t rtc_lock;
  19
  20/*
  21 * board specific routines required by time_init().
  22 */
  23extern void plat_time_init(void);
  24
  25/*
  26 * mips_hpt_frequency - must be set if you intend to use an R4k-compatible
  27 * counter as a timer interrupt source.
  28 */
  29extern unsigned int mips_hpt_frequency;
  30
  31/*
  32 * The performance counter IRQ on MIPS is a close relative to the timer IRQ
  33 * so it lives here.
  34 */
  35extern int (*perf_irq)(void);
  36extern int __weak get_c0_perfcount_int(void);
  37
  38/*
  39 * Initialize the calling CPU's compare interrupt as clockevent device
  40 */
  41extern unsigned int get_c0_compare_int(void);
  42extern int r4k_clockevent_init(void);
  43
  44static inline int mips_clockevent_init(void)
  45{
  46#ifdef CONFIG_CEVT_R4K
  47        return r4k_clockevent_init();
  48#else
  49        return -ENXIO;
  50#endif
  51}
  52
  53/*
  54 * Initialize the count register as a clocksource
  55 */
  56extern int init_r4k_clocksource(void);
  57
  58static inline int init_mips_clocksource(void)
  59{
  60#ifdef CONFIG_CSRC_R4K
  61        return init_r4k_clocksource();
  62#else
  63        return 0;
  64#endif
  65}
  66
  67static inline void clockevent_set_clock(struct clock_event_device *cd,
  68                                        unsigned int clock)
  69{
  70        clockevents_calc_mult_shift(cd, clock, 4);
  71}
  72
  73#endif /* _ASM_TIME_H */
  74