brintos

brintos / linux-shallow public Read only

0
0
Text · 1.3 KiB · 01a2c6b Raw
74 lines · c
1/* SPDX-License-Identifier: GPL-2.0 */2#ifndef __TIMER_OF_H__3#define __TIMER_OF_H__4 5#include <linux/clockchips.h>6 7#define TIMER_OF_BASE	0x18#define TIMER_OF_CLOCK	0x29#define TIMER_OF_IRQ	0x410 11struct of_timer_irq {12	int irq;13	int index;14	const char *name;15	unsigned long flags;16	irq_handler_t handler;17};18 19struct of_timer_base {20	void __iomem *base;21	const char *name;22	int index;23};24 25struct of_timer_clk {26	struct clk *clk;27	const char *name;28	int index;29	unsigned long rate;30	unsigned long period;31};32 33struct timer_of {34	unsigned int flags;35	struct device_node *np;36	struct clock_event_device clkevt;37	struct of_timer_base of_base;38	struct of_timer_irq  of_irq;39	struct of_timer_clk  of_clk;40	void *private_data;41};42 43static inline struct timer_of *to_timer_of(struct clock_event_device *clkevt)44{45	return container_of(clkevt, struct timer_of, clkevt);46}47 48static inline void __iomem *timer_of_base(struct timer_of *to)49{50	return to->of_base.base;51}52 53static inline int timer_of_irq(struct timer_of *to)54{55	return to->of_irq.irq;56}57 58static inline unsigned long timer_of_rate(struct timer_of *to)59{60	return to->of_clk.rate;61}62 63static inline unsigned long timer_of_period(struct timer_of *to)64{65	return to->of_clk.period;66}67 68extern int __init timer_of_init(struct device_node *np,69				struct timer_of *to);70 71extern void __init timer_of_cleanup(struct timer_of *to);72 73#endif74