forked from Qortal/Brooklyn
You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
74 lines
1.4 KiB
74 lines
1.4 KiB
/* 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; |
|
int percpu; |
|
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; |
|
} |
|
|
|
extern int __init timer_of_init(struct device_node *np, |
|
struct timer_of *to); |
|
|
|
extern void __init timer_of_cleanup(struct timer_of *to); |
|
|
|
#endif
|
|
|