#include <linux/init.h>
#include <linux/platform_device.h>
#include <linux/spinlock.h>
#include <linux/interrupt.h>
#include <linux/ioport.h>
#include <linux/io.h>
#include <linux/clk.h>
#include <linux/irq.h>
#include <linux/err.h>
#include <linux/delay.h>
#include <linux/clocksource.h>
#include <linux/clockchips.h>
#include <linux/slab.h>
#include <linux/module.h>
enum { … };
struct em_sti_priv { … };
#define STI_CONTROL …
#define STI_COMPA_H …
#define STI_COMPA_L …
#define STI_COMPB_H …
#define STI_COMPB_L …
#define STI_COUNT_H …
#define STI_COUNT_L …
#define STI_COUNT_RAW_H …
#define STI_COUNT_RAW_L …
#define STI_SET_H …
#define STI_SET_L …
#define STI_INTSTATUS …
#define STI_INTRAWSTATUS …
#define STI_INTENSET …
#define STI_INTENCLR …
#define STI_INTFFCLR …
static inline unsigned long em_sti_read(struct em_sti_priv *p, int offs)
{ … }
static inline void em_sti_write(struct em_sti_priv *p, int offs,
unsigned long value)
{ … }
static int em_sti_enable(struct em_sti_priv *p)
{ … }
static void em_sti_disable(struct em_sti_priv *p)
{ … }
static u64 em_sti_count(struct em_sti_priv *p)
{ … }
static u64 em_sti_set_next(struct em_sti_priv *p, u64 next)
{ … }
static irqreturn_t em_sti_interrupt(int irq, void *dev_id)
{ … }
static int em_sti_start(struct em_sti_priv *p, unsigned int user)
{ … }
static void em_sti_stop(struct em_sti_priv *p, unsigned int user)
{ … }
static struct em_sti_priv *cs_to_em_sti(struct clocksource *cs)
{ … }
static u64 em_sti_clocksource_read(struct clocksource *cs)
{ … }
static int em_sti_clocksource_enable(struct clocksource *cs)
{ … }
static void em_sti_clocksource_disable(struct clocksource *cs)
{ … }
static void em_sti_clocksource_resume(struct clocksource *cs)
{ … }
static int em_sti_register_clocksource(struct em_sti_priv *p)
{ … }
static struct em_sti_priv *ced_to_em_sti(struct clock_event_device *ced)
{ … }
static int em_sti_clock_event_shutdown(struct clock_event_device *ced)
{ … }
static int em_sti_clock_event_set_oneshot(struct clock_event_device *ced)
{ … }
static int em_sti_clock_event_next(unsigned long delta,
struct clock_event_device *ced)
{ … }
static void em_sti_register_clockevent(struct em_sti_priv *p)
{ … }
static int em_sti_probe(struct platform_device *pdev)
{ … }
static const struct of_device_id em_sti_dt_ids[] = …;
MODULE_DEVICE_TABLE(of, em_sti_dt_ids);
static struct platform_driver em_sti_device_driver = …;
static int __init em_sti_init(void)
{ … }
static void __exit em_sti_exit(void)
{ … }
subsys_initcall(em_sti_init);
module_exit(em_sti_exit);
MODULE_AUTHOR(…) …;
MODULE_DESCRIPTION(…) …;