#include <linux/interrupt.h>
#include <linux/io.h>
#include <linux/clockchips.h>
#include <linux/clocksource.h>
#include <linux/sched_clock.h>
#include <linux/slab.h>
#include <linux/bitops.h>
#include <linux/delay.h>
#include <linux/of_address.h>
#include <linux/of_irq.h>
#include <linux/platform_device.h>
#define IXP4XX_OSTS_OFFSET …
#define IXP4XX_OST1_OFFSET …
#define IXP4XX_OSRT1_OFFSET …
#define IXP4XX_OST2_OFFSET …
#define IXP4XX_OSRT2_OFFSET …
#define IXP4XX_OSST_OFFSET …
#define IXP4XX_OST_ENABLE …
#define IXP4XX_OST_ONE_SHOT …
#define IXP4XX_OST_RELOAD_MASK …
#define IXP4XX_OST_DISABLED …
#define IXP4XX_OSST_TIMER_1_PEND …
#define IXP4XX_OSST_TIMER_2_PEND …
#define IXP4XX_OSST_TIMER_TS_PEND …
struct ixp4xx_timer { … };
static struct ixp4xx_timer *local_ixp4xx_timer;
static inline struct ixp4xx_timer *
to_ixp4xx_timer(struct clock_event_device *evt)
{ … }
static unsigned long ixp4xx_read_timer(void)
{ … }
static u64 notrace ixp4xx_read_sched_clock(void)
{ … }
static u64 ixp4xx_clocksource_read(struct clocksource *c)
{ … }
static irqreturn_t ixp4xx_timer_interrupt(int irq, void *dev_id)
{ … }
static int ixp4xx_set_next_event(unsigned long cycles,
struct clock_event_device *evt)
{ … }
static int ixp4xx_shutdown(struct clock_event_device *evt)
{ … }
static int ixp4xx_set_oneshot(struct clock_event_device *evt)
{ … }
static int ixp4xx_set_periodic(struct clock_event_device *evt)
{ … }
static int ixp4xx_resume(struct clock_event_device *evt)
{ … }
static __init int ixp4xx_timer_register(void __iomem *base,
int timer_irq,
unsigned int timer_freq)
{ … }
static struct platform_device ixp4xx_watchdog_device = …;
static int ixp4xx_timer_probe(struct platform_device *pdev)
{ … }
static const struct of_device_id ixp4xx_timer_dt_id[] = …;
static struct platform_driver ixp4xx_timer_driver = …;
builtin_platform_driver(…) …;
static __init int ixp4xx_of_timer_init(struct device_node *np)
{ … }
TIMER_OF_DECLARE(ixp4xx, "intel,ixp4xx-timer", ixp4xx_of_timer_init);