#ifndef __LUNAIX_HWTIMER_H
#define __LUNAIX_HWTIMER_H
+#include <lunaix/device.h>
#include <lunaix/time.h>
#include <lunaix/types.h>
typedef void (*timer_tick_cb)();
-struct hwtimer_context
+struct hwtimer
{
char* name;
void* data;
- int (*supported)(struct hwtimer_context*);
- void (*init)(struct hwtimer_context*, u32_t hertz, timer_tick_cb);
+ struct devclass class;
+ struct device* timer_dev;
+
+ int (*supported)(struct hwtimer*);
+ void (*init)(struct hwtimer*, u32_t hertz, timer_tick_cb);
ticks_t (*systicks)();
ticks_t base_freq;
ticks_t running_freq;
void
hwtimer_init(u32_t hertz, void* tick_callback);
-struct hwtimer_context*
-hwtimer_choose();
+struct hwtimer*
+select_platform_timer();
ticks_t
hwtimer_base_frequency();