feat: better rtc framework which aims to remove single rtc restrictions.
[lunaix-os.git] / lunaix-os / hal / timer / hwtimer.c
index bd6477a6173077c287ff93632ce222a2358ed01a..3a79ca1a7ec6d773521e8f8b7ff321b04526d406 100644 (file)
@@ -1,18 +1,9 @@
 #include <hal/hwtimer.h>
 #include <lunaix/spike.h>
 
-struct hwtimer_context* current_timer;
+#include <usr/lunaix/ioctl_defs.h>
 
-void
-hwtimer_init(u32_t hertz, void* tick_callback)
-{
-    struct hwtimer_context* hwt_ctx = hwtimer_choose();
-
-    hwt_ctx->init(hwt_ctx, hertz, tick_callback);
-    hwt_ctx->running_freq = hertz;
-
-    current_timer = hwt_ctx;
-}
+struct hwtimer* current_timer;
 
 ticks_t
 hwtimer_base_frequency()
@@ -37,4 +28,34 @@ hwtimer_to_ticks(u32_t value, int unit)
     ticks_t freq_ms = current_timer->running_freq / 1000;
 
     return freq_ms * value;
+}
+
+static int
+__hwtimer_ioctl(struct device* dev, u32_t req, va_list args)
+{
+    struct hwtimer* hwt = (struct hwtimer*)dev->underlay;
+    switch (req) {
+        case TIMERIO_GETINFO:
+            // TODO
+            break;
+
+        default:
+            break;
+    }
+    return 0;
+}
+
+void
+hwtimer_init(u32_t hertz, void* tick_callback)
+{
+    struct hwtimer* hwt_ctx = hwtimer_choose();
+
+    hwt_ctx->init(hwt_ctx, hertz, tick_callback);
+    hwt_ctx->running_freq = hertz;
+
+    current_timer = hwt_ctx;
+
+    struct device* timerdev = device_addsys(NULL, hwt_ctx, hwt_ctx->name);
+
+    timerdev->ops.exec_cmd = __hwtimer_ioctl;
 }
\ No newline at end of file