Link: https://lore.kernel.org/r/20260217200002.683975158@linuxfoundation.org Tested-by: Florian Fainelli <florian.fainelli@broadcom.com> Tested-by: Takeshi Ogasawara <takeshi.ogasawara@futuring-girl.com> Tested-by: Peter Schneider <pschneider1968@googlemail.com> Tested-by: Jon Hunter <jonathanh@nvidia.com> Tested-by: Salvatore Bonaccorso <carnil@debian.org> Tested-by: Brett A C Sheffield <bacs@librecast.net> Tested-by: Mark Brown <broonie@kernel.org> Tested-by: Luna Jernberg <droidbittin@gmail.com> Tested-by: Ronald Warsow <rwarsow@gmx.de> Tested-by: Justin M. Forbes <jforbes@fedoraproject.org> Tested-by: Ron Economos <re@w6rz.net> Tested-by: Miguel Ojeda <ojeda@kernel.org> Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
74 lines
1.3 KiB
C
74 lines
1.3 KiB
C
/* 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;
|
|
}
|
|
|
|
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
|