72 lines · 1.3 KB · C
RawDownload
/* SPDX-License-Identifier: GPL-2.0 */#ifndef __TIMER_OF_H__#define __TIMER_OF_H__ #include <linux/clockchips.h> #define TIMER_OF_BASE	0x1#define TIMER_OF_CLOCK	0x2#define TIMER_OF_IRQ	0x4 struct of_timer_irq {	int irq;	int index;	const char *name;	unsigned long flags;	irq_handler_t handler;}; struct of_timer_base {	void __iomem *base;	const char *name;	int index;}; struct of_timer_clk {	struct clk *clk;	const char *name;	int index;	unsigned long rate;	unsigned long period;}; struct timer_of {	unsigned int flags;	struct device_node *np;	struct clock_event_device clkevt;	struct of_timer_base of_base;	struct of_timer_irq  of_irq;	struct of_timer_clk  of_clk;	void *private_data;}; static inline struct timer_of *to_timer_of(struct clock_event_device *clkevt){	return container_of(clkevt, struct timer_of, clkevt);} static inline void __iomem *timer_of_base(struct timer_of *to){	return to->of_base.base;} static inline int timer_of_irq(struct timer_of *to){	return to->of_irq.irq;} static inline unsigned long timer_of_rate(struct timer_of *to){	return to->of_clk.rate;} static inline unsigned long timer_of_period(struct timer_of *to){	return to->of_clk.period;} int timer_of_init(struct device_node *np, struct timer_of *to); void timer_of_cleanup(struct timer_of *to); #endif