at v6.15 1.4 kB view raw
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); 37 38struct dw_apb_clock_event_device * 39dw_apb_clockevent_init(int cpu, const char *name, unsigned rating, 40 void __iomem *base, int irq, unsigned long freq); 41struct dw_apb_clocksource * 42dw_apb_clocksource_init(unsigned rating, const char *name, void __iomem *base, 43 unsigned long freq); 44void dw_apb_clocksource_register(struct dw_apb_clocksource *dw_cs); 45void dw_apb_clocksource_start(struct dw_apb_clocksource *dw_cs); 46u64 dw_apb_clocksource_read(struct dw_apb_clocksource *dw_cs); 47 48#endif /* __DW_APB_TIMER_H__ */