imx8x: Remove hacks from serial_lpuart driver
authorLukas Humbel <lukas.humbel@inf.ethz.ch>
Fri, 8 Nov 2019 10:31:43 +0000 (11:31 +0100)
committerLukas Humbel <lukas.humbel@inf.ethz.ch>
Fri, 8 Nov 2019 10:46:35 +0000 (11:46 +0100)
Signed-off-by: Lukas Humbel <lukas.humbel@inf.ethz.ch>

usr/drivers/domain/main.c
usr/drivers/serial/serial_lpuart.c

index f78117a..bb4d581 100644 (file)
@@ -58,23 +58,12 @@ int main(int argc, char** argv)
     err = ddomain_communication_init(kaluga_iref, atoi(argv[2]));
     assert(err_is_ok(err));
 
-#ifdef __ARM_ARCH_8A__
-    while(1) {
-        err = event_dispatch_non_block(get_default_waitset());
-        if (err != LIB_ERR_NO_EVENT) {
-            if (err_is_fail(err)) {
-                USER_PANIC_ERR(err, "error in event_dispatch for messages_wait_and_handle_next hack");
-            }
-        }
-    }
-#else 
     while(1) {
         err = event_dispatch(get_default_waitset());
         if (err_is_fail(err)) {
             USER_PANIC_ERR(err, "error in event_dispatch for messages_wait_and_handle_next hack");
         }
     }
-#endif
 
     return 0;
 }
index ff30965..bd30e29 100644 (file)
@@ -24,7 +24,7 @@
 #include <barrelfish/deferred.h>
 #include <barrelfish/systime.h>
 
-
+#define DELAY  10000
 //#define LPUART_DEBUG_ON
 
 #if defined(LPUART_DEBUG_ON) || defined(GLOBAL_DEBUG)
@@ -48,7 +48,6 @@ static void print_regvalues(struct serial_lpuart *spc)
 static void serial_poll(struct serial_lpuart *spc)
 {
     while (lpuart_stat_rdrf_rdf(&spc->uart)) {
-        LPUART_DEBUG("befohooore\n");
         char c = lpuart_rxdata_buf_rdf((&spc->uart));
         if (c)
             LPUART_DEBUG("Read char=%c\n", c);
@@ -63,27 +62,14 @@ static void serial_poll(struct serial_lpuart *spc)
     }
 }
 
-static void serial_poll2(void *arg)
+static void serial_poll_ev(void *arg)
 {
-    LPUART_DEBUG("my call back worked, arg=%p\n", arg);
     serial_poll((struct serial_lpuart *)arg);
-    struct deferred_event *de = malloc(sizeof(struct deferred_event));
-    deferred_event_init(de);
-    struct event_closure ec;
-    ec.handler = serial_poll2;
-    ec.arg = arg;
-    errval_t err = deferred_event_register(de, get_default_waitset(), 1000, ec);
-    if (err_is_fail(err)) {
-        USER_PANIC_ERR(err, "deferred event register failed.");
-    }
-}
 
-static void install_event(delayus_t delay, struct serial_lpuart *spc)
-{
     struct deferred_event *de = malloc(sizeof(struct deferred_event));
     deferred_event_init(de);
-    errval_t err = deferred_event_register(de, get_default_waitset(), delay,
-                                           MKCLOSURE(serial_poll2, spc));
+    errval_t err = deferred_event_register(de, get_default_waitset(), DELAY,
+                                           MKCLOSURE(serial_poll_ev, arg));
     if (err_is_fail(err)) {
         USER_PANIC_ERR(err, "deferred event register failed.");
     }
@@ -208,7 +194,7 @@ static errval_t init(struct bfdriver_instance *bfi, uint64_t flags, iref_t *dev)
 
     SERIAL_DEBUG("lpuart Serial driver initialized.\n");
     debug_printf("installing handler, spc=%p\n", spc);
-    install_event(1000, spc);
+    serial_poll_ev(spc);
     return SYS_ERR_OK;
 }