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 void (*eoi)(struct dw_apb_timer *); 29 }; 30 31 struct dw_apb_clocksource { 32 struct dw_apb_timer timer; 33 struct clocksource cs; 34 }; 35 36 void dw_apb_clockevent_register(struct dw_apb_clock_event_device *dw_ced); 37 void dw_apb_clockevent_pause(struct dw_apb_clock_event_device *dw_ced); 38 void dw_apb_clockevent_resume(struct dw_apb_clock_event_device *dw_ced); 39 void dw_apb_clockevent_stop(struct dw_apb_clock_event_device *dw_ced); 40 41 struct dw_apb_clock_event_device * 42 dw_apb_clockevent_init(int cpu, const char *name, unsigned rating, 43 void __iomem *base, int irq, unsigned long freq); 44 struct dw_apb_clocksource * 45 dw_apb_clocksource_init(unsigned rating, const char *name, void __iomem *base, 46 unsigned long freq); 47 void dw_apb_clocksource_register(struct dw_apb_clocksource *dw_cs); 48 void dw_apb_clocksource_start(struct dw_apb_clocksource *dw_cs); 49 u64 dw_apb_clocksource_read(struct dw_apb_clocksource *dw_cs); 50 51 #endif /* __DW_APB_TIMER_H__ */ 52
Linux® is a registered trademark of Linus Torvalds in the United States and other countries.
TOMOYO® is a registered trademark of NTT DATA CORPORATION.