linux/include/linux/dw_apb_timer.h
<<
>>
Prefs
   1/* SPDX-License-Identifier: GPL-2.0-only */
   2/*
   3 * (C) Copyright 2009 Intel Corporation
   4 * Author: Jacob Pan (jacob.jun.pan@intel.com)
   5 *
   6 * Shared with ARM platforms, Jamie Iles, Picochip 2011
   7 *
   8 * Support for the Synopsys DesignWare APB Timers.
   9 */
  10#ifndef __DW_APB_TIMER_H__
  11#define __DW_APB_TIMER_H__
  12
  13#include <linux/clockchips.h>
  14#include <linux/clocksource.h>
  15#include <linux/interrupt.h>
  16
  17#define APBTMRS_REG_SIZE       0x14
  18
  19struct dw_apb_timer {
  20        void __iomem                            *base;
  21        unsigned long                           freq;
  22        int                                     irq;
  23};
  24
  25struct dw_apb_clock_event_device {
  26        struct clock_event_device               ced;
  27        struct dw_apb_timer                     timer;
  28        struct irqaction                        irqaction;
  29        void                                    (*eoi)(struct dw_apb_timer *);
  30};
  31
  32struct dw_apb_clocksource {
  33        struct dw_apb_timer                     timer;
  34        struct clocksource                      cs;
  35};
  36
  37void dw_apb_clockevent_register(struct dw_apb_clock_event_device *dw_ced);
  38void dw_apb_clockevent_pause(struct dw_apb_clock_event_device *dw_ced);
  39void dw_apb_clockevent_resume(struct dw_apb_clock_event_device *dw_ced);
  40void dw_apb_clockevent_stop(struct dw_apb_clock_event_device *dw_ced);
  41
  42struct dw_apb_clock_event_device *
  43dw_apb_clockevent_init(int cpu, const char *name, unsigned rating,
  44                       void __iomem *base, int irq, unsigned long freq);
  45struct dw_apb_clocksource *
  46dw_apb_clocksource_init(unsigned rating, const char *name, void __iomem *base,
  47                        unsigned long freq);
  48void dw_apb_clocksource_register(struct dw_apb_clocksource *dw_cs);
  49void dw_apb_clocksource_start(struct dw_apb_clocksource *dw_cs);
  50u64 dw_apb_clocksource_read(struct dw_apb_clocksource *dw_cs);
  51
  52#endif /* __DW_APB_TIMER_H__ */
  53