#define pr_fmt(fmt) "AT91: PIT: " fmt
#include <linux/clockchips.h>
#include <linux/interrupt.h>
#include <linux/kernel.h>
#include <linux/of_address.h>
#include <linux/of_irq.h>
#define AT91_PIT_PITIEN BIT(25)
#define AT91_PIT_PITEN BIT(24)
#define AT91_PIT_PIV GENMASK(19, 0)
#define AT91_PIT_PITS BIT(0)
#define AT91_PIT_PIVR 0x08
#define AT91_PIT_PIIR 0x0c
#define AT91_PIT_PICNT GENMASK(31, 20)
#define AT91_PIT_CPIV GENMASK(19, 0)
#define PIT_CPIV(x) ((x) & AT91_PIT_CPIV)
#define PIT_PICNT(x) (((x) & AT91_PIT_PICNT) >> 20)
struct clock_event_device clkevt;
struct clocksource clksrc;
static inline struct pit_data *clksrc_to_pit_data(struct clocksource *clksrc)
return container_of(clksrc, struct pit_data, clksrc);
static inline struct pit_data *clkevt_to_pit_data(struct clock_event_device *clkevt)
return container_of(clkevt, struct pit_data, clkevt);
static inline unsigned int pit_read(void __iomem *base, unsigned int reg_offset)