diff --git a/sw/device/benchmarks/coremark/meson.build b/sw/device/benchmarks/coremark/meson.build
index 694d2e0..6101d07 100644
--- a/sw/device/benchmarks/coremark/meson.build
+++ b/sw/device/benchmarks/coremark/meson.build
@@ -18,7 +18,7 @@
     ],
     name_suffix: 'elf',
     dependencies: [
-      sw_lib_uart,
+      sw_lib_dif_uart,
       sw_lib_mem,
       riscv_crt,
       sw_lib_irq_handlers,
diff --git a/sw/device/benchmarks/coremark/top_earlgrey/core_portme.c b/sw/device/benchmarks/coremark/top_earlgrey/core_portme.c
index 3437fec..2d264f7 100644
--- a/sw/device/benchmarks/coremark/top_earlgrey/core_portme.c
+++ b/sw/device/benchmarks/coremark/top_earlgrey/core_portme.c
@@ -9,9 +9,13 @@
 
 #include "sw/device/lib/arch/device.h"
 #include "sw/device/lib/base/stdasm.h"
+#include "sw/device/lib/dif/dif_uart.h"
+#include "sw/device/lib/runtime/check.h"
 #include "sw/device/lib/testing/test_status.h"
 #include "sw/vendor/eembc_coremark/coremark.h"
 
+#include "hw/top_earlgrey/sw/autogen/top_earlgrey.h"  // Generated.
+
 #if VALIDATION_RUN
 volatile ee_s32 seed1_volatile = 0x3415;
 volatile ee_s32 seed2_volatile = 0x3415;
@@ -103,12 +107,27 @@
 
 ee_u32 default_num_contexts = 1;
 
+static dif_uart_t uart;
+
 /* Function : portable_init
         Target specific initialization code
         Test for some common mistakes.
 */
 void portable_init(core_portable *p, int *argc, char *argv[]) {
-  uart_init(kUartBaudrate);
+  CHECK(dif_uart_init(
+            (dif_uart_params_t){
+                .base_addr = mmio_region_from_addr(TOP_EARLGREY_UART_BASE_ADDR),
+            },
+            &uart) == kDifUartOk,
+        "failed to init UART");
+  CHECK(dif_uart_configure(&uart,
+                           (dif_uart_config_t){
+                               .baudrate = kUartBaudrate,
+                               .clk_freq_hz = kClockFreqPeripheralHz,
+                               .parity_enable = kDifUartToggleDisabled,
+                               .parity = kDifUartParityEven,
+                           }) == kDifUartConfigOk,
+        "failed to configure UART");
 
   if (sizeof(ee_ptr_int) != sizeof(ee_u8 *)) {
     ee_printf(
diff --git a/sw/device/benchmarks/coremark/top_earlgrey/ee_printf.c b/sw/device/benchmarks/coremark/top_earlgrey/ee_printf.c
index a1cc426..b010cbd 100644
--- a/sw/device/benchmarks/coremark/top_earlgrey/ee_printf.c
+++ b/sw/device/benchmarks/coremark/top_earlgrey/ee_printf.c
@@ -33,6 +33,8 @@
 */
 
 #include <stdarg.h>
+
+#include "sw/device/lib/runtime/print.h"
 #include "sw/vendor/eembc_coremark/coremark.h"
 
 #define ZEROPAD (1 << 0)   /* Pad with zero */
@@ -654,23 +656,12 @@
 }
 
 int ee_printf(const char *fmt, ...) {
-  char buf[256], *p;
+  char buf[256];
   va_list args;
-  int n = 0;
 
   va_start(args, fmt);
   ee_vsprintf(buf, fmt, args);
   va_end(args);
-  p = buf;
-  while (*p) {
-    if (*p == '\n') {
-      uart_send_char('\r');
-    }
 
-    uart_send_char(*p);
-    n++;
-    p++;
-  }
-
-  return n;
+  return base_printf("%s", buf);
 }
diff --git a/sw/device/boot_rom/boot_rom.c b/sw/device/boot_rom/boot_rom.c
index 8250041..dfff4b9 100644
--- a/sw/device/boot_rom/boot_rom.c
+++ b/sw/device/boot_rom/boot_rom.c
@@ -8,11 +8,14 @@
 #include "sw/device/lib/base/mmio.h"
 #include "sw/device/lib/common.h"
 #include "sw/device/lib/dif/dif_gpio.h"
+#include "sw/device/lib/dif/dif_uart.h"
 #include "sw/device/lib/pinmux.h"
+#include "sw/device/lib/runtime/check.h"
 #include "sw/device/lib/runtime/log.h"
 #include "sw/device/lib/runtime/print.h"
 #include "sw/device/lib/testing/test_status.h"
-#include "sw/device/lib/uart.h"
+
+#include "hw/top_earlgrey/sw/autogen/top_earlgrey.h"  // Generated.
 
 /**
  * This symbol is defined in sw/device/boot_rom/rom_link.ld,
@@ -24,11 +27,27 @@
  */
 extern struct { void (*entry)(void); } _flash_header;
 
+static dif_uart_t uart0;
+
 void _boot_start(void) {
   test_status_set(kTestStatusInBootRom);
   pinmux_init();
-  uart_init(kUartBaudrate);
-  base_set_stdout(uart_stdout);
+
+  CHECK(dif_uart_init(
+            (dif_uart_params_t){
+                .base_addr = mmio_region_from_addr(TOP_EARLGREY_UART_BASE_ADDR),
+            },
+            &uart0) == kDifUartOk,
+        "failed to init UART");
+  CHECK(dif_uart_configure(&uart0,
+                           (dif_uart_config_t){
+                               .baudrate = kUartBaudrate,
+                               .clk_freq_hz = kClockFreqPeripheralHz,
+                               .parity_enable = kDifUartToggleDisabled,
+                               .parity = kDifUartParityEven,
+                           }) == kDifUartConfigOk,
+        "failed to configure UART");
+  base_uart_stdout(&uart0);
 
   LOG_INFO("%s", chip_info);
 
diff --git a/sw/device/boot_rom/meson.build b/sw/device/boot_rom/meson.build
index d48f42d..8011f70 100644
--- a/sw/device/boot_rom/meson.build
+++ b/sw/device/boot_rom/meson.build
@@ -50,8 +50,8 @@
       sw_lib_dif_spi_device,
       sw_lib_hmac,
       sw_lib_mmio,
-      sw_lib_uart,
       sw_lib_runtime_log,
+      sw_lib_dif_uart,
       top_earlgrey,
       device_lib,
       sw_lib_testing_test_status,
diff --git a/sw/device/examples/hello_usbdev/hello_usbdev.c b/sw/device/examples/hello_usbdev/hello_usbdev.c
index 49f3543..c8bd0fc 100644
--- a/sw/device/examples/hello_usbdev/hello_usbdev.c
+++ b/sw/device/examples/hello_usbdev/hello_usbdev.c
@@ -10,15 +10,18 @@
 #include "sw/device/lib/common.h"
 #include "sw/device/lib/dif/dif_gpio.h"
 #include "sw/device/lib/dif/dif_spi_device.h"
+#include "sw/device/lib/dif/dif_uart.h"
 #include "sw/device/lib/pinmux.h"
 #include "sw/device/lib/runtime/check.h"
 #include "sw/device/lib/runtime/hart.h"
 #include "sw/device/lib/runtime/log.h"
-#include "sw/device/lib/uart.h"
+#include "sw/device/lib/runtime/print.h"
 #include "sw/device/lib/usb_controlep.h"
 #include "sw/device/lib/usb_simpleserial.h"
 #include "sw/device/lib/usbdev.h"
 
+#include "hw/top_earlgrey/sw/autogen/top_earlgrey.h"  // Generated.
+
 // These just for the '/' printout
 #define USBDEV_BASE_ADDR 0x40150000
 #include "usbdev_regs.h"  // Generated.
@@ -61,27 +64,38 @@
 static const size_t kExpectedUsbCharsRecved = 6;
 static size_t usb_chars_recved_total;
 
+static dif_gpio_t gpio;
+static dif_spi_device_t spi;
+static dif_uart_t uart;
+
 /**
  * Callbacks for processing USB reciept. The latter increments the
  * recieved character by one, to make them distinct.
  */
 static void usb_receipt_callback_0(uint8_t c) {
   c = make_printable(c, '?');
-  uart_send_char(c);
+  CHECK(dif_uart_byte_send_polled(&uart, c) == kDifUartOk);
   ++usb_chars_recved_total;
 }
 static void usb_receipt_callback_1(uint8_t c) {
   c = make_printable(c + 1, '?');
-  uart_send_char(c);
+  CHECK(dif_uart_byte_send_polled(&uart, c) == kDifUartOk);
   ++usb_chars_recved_total;
 }
 
-static dif_gpio_t gpio;
-static dif_spi_device_t spi;
-
 int main(int argc, char **argv) {
-  uart_init(kUartBaudrate);
-  base_set_stdout(uart_stdout);
+  CHECK(dif_uart_init(
+            (dif_uart_params_t){
+                .base_addr = mmio_region_from_addr(TOP_EARLGREY_UART_BASE_ADDR),
+            },
+            &uart) == kDifUartOk);
+  CHECK(dif_uart_configure(&uart, (dif_uart_config_t){
+                                      .baudrate = kUartBaudrate,
+                                      .clk_freq_hz = kClockFreqPeripheralHz,
+                                      .parity_enable = kDifUartToggleDisabled,
+                                      .parity = kDifUartParityEven,
+                                  }) == kDifUartConfigOk);
+  base_uart_stdout(&uart);
 
   pinmux_init();
 
@@ -133,9 +147,17 @@
     gpio_state = demo_gpio_to_log_echo(&gpio, gpio_state);
     demo_spi_to_log_echo(&spi);
 
-    char rcv_char;
-    while (uart_rcv_char(&rcv_char) != -1) {
-      uart_send_char(rcv_char);
+    while (true) {
+      size_t chars_available;
+      if (dif_uart_rx_bytes_available(&uart, &chars_available) != kDifUartOk ||
+          chars_available == 0) {
+        break;
+      }
+
+      uint8_t rcv_char;
+      CHECK(dif_uart_bytes_receive(&uart, 1, &rcv_char, NULL) == kDifUartOk);
+      CHECK(dif_uart_byte_send_polled(&uart, rcv_char) == kDifUartOk);
+
       CHECK(dif_gpio_write_all(&gpio, rcv_char << 8) == kDifGpioOk);
 
       if (rcv_char == '/') {
@@ -150,12 +172,10 @@
 
     // Signal that the simulation succeeded.
     if (usb_chars_recved_total >= kExpectedUsbCharsRecved && !pass_signaled) {
-      uart_send_str("\r\n");
-      uart_send_str("PASS!\r\n");
+      LOG_INFO("PASS!");
       pass_signaled = true;
     }
   }
 
-  uart_send_str("\r\n");
   LOG_INFO("USB recieved %d characters.", usb_chars_recved_total);
 }
diff --git a/sw/device/examples/hello_usbdev/meson.build b/sw/device/examples/hello_usbdev/meson.build
index 98b369e..3b470cf 100644
--- a/sw/device/examples/hello_usbdev/meson.build
+++ b/sw/device/examples/hello_usbdev/meson.build
@@ -17,8 +17,8 @@
       sw_lib_dif_gpio,
       sw_lib_irq,
       sw_lib_dif_spi_device,
-      sw_lib_uart,
       sw_lib_runtime_log,
+      sw_lib_dif_uart,
       sw_lib_usb,
       riscv_crt,
       sw_lib_irq_handlers,
diff --git a/sw/device/examples/hello_world/hello_world.c b/sw/device/examples/hello_world/hello_world.c
index ab1fa81..052ce8e 100644
--- a/sw/device/examples/hello_world/hello_world.c
+++ b/sw/device/examples/hello_world/hello_world.c
@@ -6,19 +6,33 @@
 #include "sw/device/lib/arch/device.h"
 #include "sw/device/lib/dif/dif_gpio.h"
 #include "sw/device/lib/dif/dif_spi_device.h"
+#include "sw/device/lib/dif/dif_uart.h"
 #include "sw/device/lib/pinmux.h"
 #include "sw/device/lib/runtime/check.h"
 #include "sw/device/lib/runtime/hart.h"
 #include "sw/device/lib/runtime/log.h"
+#include "sw/device/lib/runtime/print.h"
 #include "sw/device/lib/testing/test_status.h"
-#include "sw/device/lib/uart.h"
+
+#include "hw/top_earlgrey/sw/autogen/top_earlgrey.h"  // Generated.
 
 static dif_gpio_t gpio;
 static dif_spi_device_t spi;
+static dif_uart_t uart;
 
 int main(int argc, char **argv) {
-  uart_init(kUartBaudrate);
-  base_set_stdout(uart_stdout);
+  CHECK(dif_uart_init(
+            (dif_uart_params_t){
+                .base_addr = mmio_region_from_addr(TOP_EARLGREY_UART_BASE_ADDR),
+            },
+            &uart) == kDifUartOk);
+  CHECK(dif_uart_configure(&uart, (dif_uart_config_t){
+                                      .baudrate = kUartBaudrate,
+                                      .clk_freq_hz = kClockFreqPeripheralHz,
+                                      .parity_enable = kDifUartToggleDisabled,
+                                      .parity = kDifUartParityEven,
+                                  }) == kDifUartConfigOk);
+  base_uart_stdout(&uart);
 
   pinmux_init();
 
diff --git a/sw/device/examples/hello_world/meson.build b/sw/device/examples/hello_world/meson.build
index 2589350..25c1466 100644
--- a/sw/device/examples/hello_world/meson.build
+++ b/sw/device/examples/hello_world/meson.build
@@ -16,7 +16,7 @@
       sw_lib_dif_gpio,
       sw_lib_irq,
       sw_lib_dif_spi_device,
-      sw_lib_uart,
+      sw_lib_dif_uart,
       riscv_crt,
       sw_lib_irq_handlers,
       device_lib,
diff --git a/sw/device/lib/testing/meson.build b/sw/device/lib/testing/meson.build
index a1628ed..0a61bd5 100644
--- a/sw/device/lib/testing/meson.build
+++ b/sw/device/lib/testing/meson.build
@@ -54,8 +54,9 @@
     'test_main_ot',
     sources: ['test_main.c'],
     dependencies: [
-      sw_lib_uart,
       sw_lib_runtime_log,
+      sw_lib_runtime_print,
+      sw_lib_dif_uart,
       sw_lib_testing_test_status,
       sw_lib_testing_test_coverage,
     ],
diff --git a/sw/device/lib/testing/test_main.c b/sw/device/lib/testing/test_main.c
index 75b76c9..71bd354 100644
--- a/sw/device/lib/testing/test_main.c
+++ b/sw/device/lib/testing/test_main.c
@@ -5,19 +5,40 @@
 #include "sw/device/lib/testing/test_main.h"
 
 #include "sw/device/lib/arch/device.h"
+#include "sw/device/lib/dif/dif_uart.h"
+#include "sw/device/lib/runtime/check.h"
 #include "sw/device/lib/runtime/log.h"
 #include "sw/device/lib/runtime/print.h"
 #include "sw/device/lib/testing/test_coverage.h"
 #include "sw/device/lib/testing/test_status.h"
-#include "sw/device/lib/uart.h"
+
+#include "hw/top_earlgrey/sw/autogen/top_earlgrey.h"  // Generated.
+
+static dif_uart_t uart0;
+static void init_uart(void) {
+  CHECK(dif_uart_init(
+            (dif_uart_params_t){
+                .base_addr = mmio_region_from_addr(TOP_EARLGREY_UART_BASE_ADDR),
+            },
+            &uart0) == kDifUartOk,
+        "failed to init UART");
+  CHECK(dif_uart_configure(&uart0,
+                           (dif_uart_config_t){
+                               .baudrate = kUartBaudrate,
+                               .clk_freq_hz = kClockFreqPeripheralHz,
+                               .parity_enable = kDifUartToggleDisabled,
+                               .parity = kDifUartParityEven,
+                           }) == kDifUartConfigOk,
+        "failed to configure UART");
+  base_uart_stdout(&uart0);
+}
 
 int main(int argc, char **argv) {
   test_status_set(kTestStatusInTest);
 
   // Initialize the UART to enable logging for non-DV simulation platforms.
   if (kDeviceType != kDeviceSimDV) {
-    uart_init(kUartBaudrate);
-    base_set_stdout(uart_stdout);
+    init_uart();
   }
 
   // Run the SW test which is fully contained within `test_main()`.
@@ -25,7 +46,7 @@
 
   // Must happen before any debug output.
   if (kTestConfig.can_clobber_uart) {
-    uart_init(kUartBaudrate);
+    init_uart();
   }
 
   test_coverage_send_buffer();
diff --git a/sw/device/riscv_compliance_support/support.c b/sw/device/riscv_compliance_support/support.c
index a199987..e31337a 100644
--- a/sw/device/riscv_compliance_support/support.c
+++ b/sw/device/riscv_compliance_support/support.c
@@ -5,16 +5,34 @@
 #include <stddef.h>
 
 #include "sw/device/lib/arch/device.h"
-#include "sw/device/lib/uart.h"
+#include "sw/device/lib/runtime/check.h"
+#include "sw/device/lib/runtime/print.h"
+
+#include "hw/top_earlgrey/sw/autogen/top_earlgrey.h"  // Generated.
 
 // These symbopls are provided by the riscv-compliance libraries.
 extern void run_rvc_test(void);
 extern volatile uint32_t begin_signature[];
 extern volatile uint32_t end_signature[];
 
+static dif_uart_t uart0;
+
 int opentitan_compliance_main(int argc, char **argv) {
-  uart_init(kUartBaudrate);
-  base_set_stdout(uart_stdout);
+  CHECK(dif_uart_init(
+            (dif_uart_params_t){
+                .base_addr = mmio_region_from_addr(TOP_EARLGREY_UART_BASE_ADDR),
+            },
+            &uart0) == kDifUartOk,
+        "failed to init UART");
+  CHECK(dif_uart_configure(&uart0,
+                           (dif_uart_config_t){
+                               .baudrate = kUartBaudrate,
+                               .clk_freq_hz = kClockFreqPeripheralHz,
+                               .parity_enable = kDifUartToggleDisabled,
+                               .parity = kDifUartParityEven,
+                           }) == kDifUartConfigOk,
+        "failed to configure UART");
+  base_uart_stdout(&uart0);
 
   run_rvc_test();
 
diff --git a/sw/device/sca/aes_serial/aes_serial.c b/sw/device/sca/aes_serial/aes_serial.c
index 1c712fa..3706480 100644
--- a/sw/device/sca/aes_serial/aes_serial.c
+++ b/sw/device/sca/aes_serial/aes_serial.c
@@ -6,12 +6,13 @@
 #include "sw/device/lib/arch/device.h"
 #include "sw/device/lib/dif/dif_gpio.h"
 #include "sw/device/lib/dif/dif_rv_timer.h"
+#include "sw/device/lib/dif/dif_uart.h"
 #include "sw/device/lib/handler.h"
 #include "sw/device/lib/irq.h"
 #include "sw/device/lib/pinmux.h"
 #include "sw/device/lib/runtime/hart.h"
 #include "sw/device/lib/runtime/log.h"
-#include "sw/device/lib/uart.h"
+#include "sw/device/lib/runtime/print.h"
 
 #include "hw/top_earlgrey/sw/autogen/top_earlgrey.h"
 
@@ -22,6 +23,7 @@
 
 static dif_gpio_t gpio;
 static dif_rv_timer_t timer;
+static dif_uart_t uart;
 
 // UART input maximum buffer sizes
 static const uint32_t kMaxInputLengthText = 128;
@@ -128,15 +130,11 @@
  */
 static void print_cmd_response(const char cmd_tag, const char *data,
                                size_t data_len) {
-  static const char b2a_hex_values[16] = "0123456789ABCDEF";
-
-  // TODO: Switch to sw/device/lib/runtime/print.h
-  uart_send_char(cmd_tag);
+  base_printf("%c", cmd_tag);
   for (int i = 0; i < data_len; ++i) {
-    uart_send_char(b2a_hex_values[data[i] >> 4]);
-    uart_send_char(b2a_hex_values[data[i] & 0xF]);
+    base_printf("%x", (uint32_t)data[i]);
   }
-  uart_send_char('\n');
+  base_printf("\n");
 }
 
 /**
@@ -268,8 +266,19 @@
 }
 
 int main(int argc, char **argv) {
-  uart_init(kUartBaudrate);
-  base_set_stdout(uart_stdout);
+  CHECK(dif_uart_init(
+            (dif_uart_params_t){
+                .base_addr = mmio_region_from_addr(TOP_EARLGREY_UART_BASE_ADDR),
+            },
+            &uart) == kDifUartOk);
+  CHECK(dif_uart_configure(&uart, (dif_uart_config_t){
+                                      .baudrate = kUartBaudrate,
+                                      .clk_freq_hz = kClockFreqPeripheralHz,
+                                      .parity_enable = kDifUartToggleDisabled,
+                                      .parity = kDifUartParityEven,
+                                  }) == kDifUartConfigOk);
+  base_uart_stdout(&uart);
+
   pinmux_init();
 
   irq_global_ctrl(true);
@@ -303,7 +312,9 @@
   char text[128] = {0};
   size_t pos = 0;
   while (true) {
-    if (uart_rcv_char(&text[pos]) == -1) {
+    size_t chars_available;
+    if (dif_uart_rx_bytes_available(&uart, &chars_available) != kDifUartOk ||
+        chars_available == 0) {
       usleep(50);
       continue;
     }
diff --git a/sw/device/sca/aes_serial/meson.build b/sw/device/sca/aes_serial/meson.build
index 4032acf..e558f5f 100644
--- a/sw/device/sca/aes_serial/meson.build
+++ b/sw/device/sca/aes_serial/meson.build
@@ -19,7 +19,7 @@
       sw_lib_mmio,
       sw_lib_pinmux,
       sw_lib_runtime_hart,
-      sw_lib_uart,
+      sw_lib_dif_uart,
     ],
   )
 
diff --git a/sw/device/tests/crt_test.c b/sw/device/tests/crt_test.c
index 36e167f..7164130 100644
--- a/sw/device/tests/crt_test.c
+++ b/sw/device/tests/crt_test.c
@@ -7,11 +7,13 @@
 
 #include "sw/device/lib/arch/device.h"
 #include "sw/device/lib/base/stdasm.h"
+#include "sw/device/lib/dif/dif_uart.h"
 #include "sw/device/lib/runtime/check.h"
 #include "sw/device/lib/runtime/log.h"
 #include "sw/device/lib/runtime/print.h"
 #include "sw/device/lib/testing/test_status.h"
-#include "sw/device/lib/uart.h"
+
+#include "hw/top_earlgrey/sw/autogen/top_earlgrey.h"  // Generated.
 
 // Symbols defined in sw/device/exts/common/flash_link.ld, which we use to
 // check that the CRT did what it was supposed to.
@@ -33,6 +35,25 @@
 volatile char ensure_data_exists = 42;
 volatile char ensure_bss_exists;
 
+static dif_uart_t uart0;
+static void init_uart(void) {
+  CHECK(dif_uart_init(
+            (dif_uart_params_t){
+                .base_addr = mmio_region_from_addr(TOP_EARLGREY_UART_BASE_ADDR),
+            },
+            &uart0) == kDifUartOk,
+        "failed to init UART");
+  CHECK(dif_uart_configure(&uart0,
+                           (dif_uart_config_t){
+                               .baudrate = kUartBaudrate,
+                               .clk_freq_hz = kClockFreqPeripheralHz,
+                               .parity_enable = kDifUartToggleDisabled,
+                               .parity = kDifUartParityEven,
+                           }) == kDifUartConfigOk,
+        "failed to configure UART");
+  base_uart_stdout(&uart0);
+}
+
 int main(int argc, char **argv) {
   // NOTE: we cannot call any external functions until all checks of post-CRT
   // state are complete; this is to ensure that our checks are not tainted by
@@ -85,8 +106,7 @@
   test_status_set(kTestStatusInTest);
   // Initialize the UART to enable logging for non-DV simulation platforms.
   if (kDeviceType != kDeviceSimDV) {
-    uart_init(kUartBaudrate);
-    base_set_stdout(uart_stdout);
+    init_uart();
   }
 
   CHECK(bss_start_addr % sizeof(uint32_t) == 0,
diff --git a/sw/device/tests/meson.build b/sw/device/tests/meson.build
index c23b0a0..df6a89c 100644
--- a/sw/device/tests/meson.build
+++ b/sw/device/tests/meson.build
@@ -153,6 +153,9 @@
       device_lib,
       sw_lib_irq_handlers,
       sw_lib_testing_test_status,
+      sw_lib_runtime_print,
+      sw_lib_runtime_log,
+      sw_lib_dif_uart,
       # Explicitly do not pull in the test main; we need to run right after
       # the CRT is done executing.
       # sw_lib_testing_test_main,
