1/* 2 * (C) Copyright 2009 Intel Corporation 3 * Author: Jacob Pan (jacob.jun.pan@intel.com) 4 * 5 * Shared with ARM platforms, Jamie Iles, Picochip 2011 6 * 7 * This program is free software; you can redistribute it and/or modify 8 * it under the terms of the GNU General Public License version 2 as 9 * published by the Free Software Foundation. 10 * 11 * Support for the Synopsys DesignWare APB Timers. 12 */ 13#ifndef __DW_APB_TIMER_H__ 14#define __DW_APB_TIMER_H__ 15 16#include <linux/clockchips.h> 17#include <linux/clocksource.h> 18#include <linux/interrupt.h> 19 20#define APBTMRS_REG_SIZE 0x14 21 22struct dw_apb_timer { 23 void __iomem *base; 24 unsigned long freq; 25 int irq; 26}; 27 28struct dw_apb_clock_event_device { 29 struct clock_event_device ced; 30 struct dw_apb_timer timer; 31 struct irqaction irqaction; 32 void (*eoi)(struct dw_apb_timer *); 33}; 34 35struct dw_apb_clocksource { 36 struct dw_apb_timer timer; 37 struct clocksource cs; 38}; 39 40void dw_apb_clockevent_register(struct dw_apb_clock_event_device *dw_ced); 41void dw_apb_clockevent_pause(struct dw_apb_clock_event_device *dw_ced); 42void dw_apb_clockevent_resume(struct dw_apb_clock_event_device *dw_ced); 43void dw_apb_clockevent_stop(struct dw_apb_clock_event_device *dw_ced); 44 45struct dw_apb_clock_event_device * 46dw_apb_clockevent_init(int cpu, const char *name, unsigned rating, 47 void __iomem *base, int irq, unsigned long freq); 48struct dw_apb_clocksource * 49dw_apb_clocksource_init(unsigned rating, const char *name, void __iomem *base, 50 unsigned long freq); 51void dw_apb_clocksource_register(struct dw_apb_clocksource *dw_cs); 52void dw_apb_clocksource_start(struct dw_apb_clocksource *dw_cs); 53cycle_t dw_apb_clocksource_read(struct dw_apb_clocksource *dw_cs); 54void dw_apb_clocksource_unregister(struct dw_apb_clocksource *dw_cs); 55 56#endif /* __DW_APB_TIMER_H__ */ 57