Cleaned up the OpenTitanUart
diff --git a/sdk/include/platform/sunburst/platform-uart.hh b/sdk/include/platform/sunburst/platform-uart.hh
index 0f6d46d..663957e 100644
--- a/sdk/include/platform/sunburst/platform-uart.hh
+++ b/sdk/include/platform/sunburst/platform-uart.hh
@@ -13,22 +13,20 @@
  * Rendered register documentation is served at:
  * https://opentitan.org/book/hw/ip/uart/doc/registers.html
  */
-template<unsigned DefaultBaudRate = 115'200>
-class OpenTitanUart
+struct OpenTitanUart
 {
-	public:
 	/**
 	 * Interrupt State Register.
 	 */
-	uint32_t intrState;
+	uint32_t interruptState;
 	/**
 	 * Interrupt Enable Register.
 	 */
-	uint32_t intrEnable;
+	uint32_t interruptEnable;
 	/**
 	 * Interrupt Test Register.
 	 */
-	uint32_t intrTest;
+	uint32_t interruptTest;
 	/**
 	 * Alert Test Register (unused).
 	 */
@@ -36,7 +34,7 @@
 	/**
 	 * Control Register.
 	 */
-	uint32_t ctrl;
+	uint32_t control;
 	/**
 	 * Status Register.
 	 */
@@ -44,11 +42,11 @@
 	/**
 	 * UART Read Data.
 	 */
-	uint32_t rData;
+	uint32_t readData;
 	/**
 	 * UART Write Data.
 	 */
-	uint32_t wData;
+	uint32_t writeData;
 	/**
 	 * UART FIFO Control Register.
 	 */
@@ -58,38 +56,73 @@
 	 */
 	uint32_t fifoStatus;
 	/**
-	 * TX Pin Override Control.
+	 * Transmit Pin Override Control.
 	 *
-	 * Gives direct SW control over TX pin state.
+	 * Gives direct software control over the transmit pin state.
 	 */
-	uint32_t ovrd;
+	uint32_t override;
 	/**
 	 * UART Oversampled Values.
 	 */
-	uint32_t val;
+	uint32_t values;
 	/**
-	 * UART RX Timeout Control.
+	 * UART Receive Timeout Control.
 	 */
-	uint32_t timeoutCtrl;
+	uint32_t timeoutControl;
 
-	void init(unsigned baudRate = DefaultBaudRate) volatile
+	/// Control Register Fields
+	enum : uint32_t
 	{
-		// NCO = 2^20 * baud rate / cpu frequency
-		const uint32_t NCO =
+		/// Sets the BAUD clock rate from the numerically controlled oscillator.
+		ControlNco = 0xff << 16,
+		/// Set the number of character times the line must be low
+		/// which will be interpreted as a break.
+		ControlReceiveBreakLevel = 0b11 << 8,
+		/// When set, odd parity is used, otherwise even parity is used.
+		ControlParityOdd = 1 << 7,
+		/// Enable party on both transmit and receive lines.
+		ControlParityEnable = 1 << 6,
+		/// When set, incoming received bits are forwarded to the transmit line.
+		ControlLineLoopback = 1 << 5,
+		/// When set, outgoing transmitted bits are routed back the receiving
+		/// line.
+		ControlSystemLoopback = 1 << 4,
+		/// Enable the noise filter on the receiving line.
+		ControlNoiseFilter = 1 << 2,
+		/// Enable receiving bits.
+		ControlReceiveEnable = 1 << 1,
+		/// Enable transmitting bits.
+		ControlTransmitEnable = 1 << 0,
+	};
+
+	void init(unsigned baudRate = 115'200) volatile
+	{
+		// Nco = 2^20 * baud rate / cpu frequency
+		const uint32_t Nco =
 		  ((static_cast<uint64_t>(baudRate) << 20) / CPU_TIMER_HZ);
 		// Set the baud rate and enable transmit & receive
-		ctrl = (NCO << 16) | 0b11;
-	};
+		control = (Nco << 16) | ControlTransmitEnable | ControlReceiveEnable;
+	}
+
+	[[gnu::always_inline]] uint16_t transmit_fifo_level() volatile
+	{
+		return fifoStatus & 0xff;
+	}
+
+	[[gnu::always_inline]] uint16_t receive_fifo_level() volatile
+	{
+		return ((fifoStatus >> 16) & 0xff);
+	}
 
 	bool can_write() volatile
 	{
-		return (fifoStatus & 0xff) < 32;
-	};
+		return transmit_fifo_level() < 32;
+	}
 
 	bool can_read() volatile
 	{
-		return ((fifoStatus >> 16) & 0xff) > 0;
-	};
+		return receive_fifo_level() > 0;
+	}
 
 	/**
 	 * Write one byte, blocking until the byte is written.
@@ -97,7 +130,7 @@
 	void blocking_write(uint8_t byte) volatile
 	{
 		while (!can_write()) {}
-		wData = byte;
+		writeData = byte;
 	}
 
 	/**
@@ -106,11 +139,11 @@
 	uint8_t blocking_read() volatile
 	{
 		while (!can_read()) {}
-		return rData;
+		return readData;
 	}
 };
 
 #ifndef CHERIOT_PLATFORM_CUSTOM_UART
-using Uart = OpenTitanUart<>;
+using Uart = OpenTitanUart;
 static_assert(IsUart<Uart>);
 #endif