root/include/linux/dw_apb_timer.h

/* [<][>][^][v][top][bottom][index][help] */

INCLUDED FROM


   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 
  19 struct dw_apb_timer {
  20         void __iomem                            *base;
  21         unsigned long                           freq;
  22         int                                     irq;
  23 };
  24 
  25 struct 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 
  32 struct dw_apb_clocksource {
  33         struct dw_apb_timer                     timer;
  34         struct clocksource                      cs;
  35 };
  36 
  37 void dw_apb_clockevent_register(struct dw_apb_clock_event_device *dw_ced);
  38 void dw_apb_clockevent_pause(struct dw_apb_clock_event_device *dw_ced);
  39 void dw_apb_clockevent_resume(struct dw_apb_clock_event_device *dw_ced);
  40 void dw_apb_clockevent_stop(struct dw_apb_clock_event_device *dw_ced);
  41 
  42 struct dw_apb_clock_event_device *
  43 dw_apb_clockevent_init(int cpu, const char *name, unsigned rating,
  44                        void __iomem *base, int irq, unsigned long freq);
  45 struct dw_apb_clocksource *
  46 dw_apb_clocksource_init(unsigned rating, const char *name, void __iomem *base,
  47                         unsigned long freq);
  48 void dw_apb_clocksource_register(struct dw_apb_clocksource *dw_cs);
  49 void dw_apb_clocksource_start(struct dw_apb_clocksource *dw_cs);
  50 u64 dw_apb_clocksource_read(struct dw_apb_clocksource *dw_cs);
  51 
  52 #endif /* __DW_APB_TIMER_H__ */

/* [<][>][^][v][top][bottom][index][help] */