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