diff options
| author | wires <wires@noreply.wires.systems> | 2025-10-13 10:11:14 -0400 |
|---|---|---|
| committer | wires <wires@noreply.wires.systems> | 2025-10-13 10:11:14 -0400 |
| commit | 72857c6f87e62dc2d2fa0173efa2c68b2c710f9d (patch) | |
| tree | 8979489fdf9967e3a46a938e712cfd0853e3d60f /src/mini_uart.zig | |
| parent | start working on devicetree (diff) | |
| download | zosimos-72857c6f87e62dc2d2fa0173efa2c68b2c710f9d.tar.gz | |
first console driver abstraction
Diffstat (limited to '')
| -rw-r--r-- | src/mini_uart.zig | 35 |
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 {}; -} |