wires

summary refs log tree commit diff
path: root/src/mini_uart.zig
diff options
context:
space:
mode:
authorwires <wires@noreply.wires.systems>2025-10-13 10:11:14 -0400
committerwires <wires@noreply.wires.systems>2025-10-13 10:11:14 -0400
commit72857c6f87e62dc2d2fa0173efa2c68b2c710f9d (patch)
tree8979489fdf9967e3a46a938e712cfd0853e3d60f /src/mini_uart.zig
parentstart working on devicetree (diff)
downloadzosimos-72857c6f87e62dc2d2fa0173efa2c68b2c710f9d.tar.gz
first console driver abstraction
Diffstat (limited to '')
-rw-r--r--src/mini_uart.zig35
1 files changed, 6 insertions, 29 deletions
diff --git a/src/mini_uart.zig b/src/mini_uart.zig
index be364b2..e6145a5 100644
--- a/src/mini_uart.zig
+++ b/src/mini_uart.zig
@@ -6,6 +6,7 @@ const AUX_ENABLE = board.AUX_ENABLE;
 
 const gpio = @import("gpio.zig");
 const mmio = @import("mmio.zig");
+const Console = @import("console.zig").Console;
 
 const IO = AUX_BASE + 0x40;
 const IER = AUX_BASE + 0x44;
@@ -19,7 +20,7 @@ const CNTL = AUX_BASE + 0x60;
 const STAT = AUX_BASE + 0x64;
 const BAUD = AUX_BASE + 0x68;
 
-pub fn enable() void {
+pub fn setup(_: *const Console) void {
     board.enableAux(.mini_uart);
 
     gpio.setPull(14, .none);
@@ -45,7 +46,7 @@ fn writeByte(b: u8) void {
     mmio.write(IO, b);
 }
 
-fn writeString(str: []const u8) void {
+fn writeString(_: *const Console, str: []const u8) void {
     for (str) |b| {
         if (b == '\n') {
             writeByte('\r');
@@ -54,31 +55,7 @@ fn writeString(str: []const u8) void {
     }
 }
 
-const Writer = std.Io.Writer;
-
-fn drain(
-    w: *Writer,
-    data: []const []const u8,
-    _: usize,
-) Writer.Error!usize {
-    var written: usize = 0;
-    writeString(w.buffer[0..w.end]);
-    written += w.end;
-    w.end = 0;
-    for (data) |slice| {
-        writeString(slice);
-        written += slice.len;
-    }
-    return written;
-}
-
-var buf: [1024]u8 = undefined;
-var writer: Writer = .{
-    .vtable = &.{ .drain = drain },
-    .buffer = &buf,
+pub const console = Console{
+    .write = writeString,
+    .setup = setup,
 };
-
-pub fn print(comptime fmt: []const u8, args: anytype) void {
-    writer.print(fmt, args) catch {};
-    writer.flush() catch {};
-}