Linux Audio

Check our new training course

Loading...
v6.8
 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	0x1
 8#define TIMER_OF_CLOCK	0x2
 9#define TIMER_OF_IRQ	0x4
10
11struct of_timer_irq {
12	int irq;
13	int index;
14	int percpu;
15	const char *name;
16	unsigned long flags;
17	irq_handler_t handler;
18};
19
20struct of_timer_base {
21	void __iomem *base;
22	const char *name;
23	int index;
24};
25
26struct of_timer_clk {
27	struct clk *clk;
28	const char *name;
29	int index;
30	unsigned long rate;
31	unsigned long period;
32};
33
34struct timer_of {
35	unsigned int flags;
36	struct device_node *np;
37	struct clock_event_device clkevt;
38	struct of_timer_base of_base;
39	struct of_timer_irq  of_irq;
40	struct of_timer_clk  of_clk;
41	void *private_data;
42};
43
44static inline struct timer_of *to_timer_of(struct clock_event_device *clkevt)
45{
46	return container_of(clkevt, struct timer_of, clkevt);
47}
48
49static inline void __iomem *timer_of_base(struct timer_of *to)
50{
51	return to->of_base.base;
52}
53
54static inline int timer_of_irq(struct timer_of *to)
55{
56	return to->of_irq.irq;
57}
58
59static inline unsigned long timer_of_rate(struct timer_of *to)
60{
61	return to->of_clk.rate;
62}
63
64static inline unsigned long timer_of_period(struct timer_of *to)
65{
66	return to->of_clk.period;
67}
68
69extern int __init timer_of_init(struct device_node *np,
70				struct timer_of *to);
71
72extern void __init timer_of_cleanup(struct timer_of *to);
73
74#endif
v6.13.7
 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	0x1
 8#define TIMER_OF_CLOCK	0x2
 9#define TIMER_OF_IRQ	0x4
10
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#endif