Decoupling Architectural-specific Code (#35)
[lunaix-os.git] / lunaix-os / includes / hal / hwtimer.h
index efa72d8f2d995ce16f2c286648332281f43929dd..2faa5076535d69155e0740290164d0087a1294fb 100644 (file)
@@ -1,18 +1,22 @@
 #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;
@@ -21,8 +25,8 @@ struct hwtimer_context
 void
 hwtimer_init(u32_t hertz, void* tick_callback);
 
-struct hwtimer_context*
-hwtimer_choose();
+struct hwtimer*
+select_platform_timer();
 
 ticks_t
 hwtimer_base_frequency();