tooling: run the formatter on all files

Signed-off-by: Chris Frantz <cfrantz@google.com>
diff --git a/drivers/usart/client/src/lib.rs b/drivers/usart/client/src/lib.rs
index b94b025..8d78ef8 100644
--- a/drivers/usart/client/src/lib.rs
+++ b/drivers/usart/client/src/lib.rs
@@ -3,9 +3,7 @@
 
 #![no_std]
 
-use usart_api::{
-    UsartError, UsartOp, UsartRequestHeader, UsartResponseHeader, MAX_PAYLOAD_SIZE,
-};
+use usart_api::{UsartError, UsartOp, UsartRequestHeader, UsartResponseHeader, MAX_PAYLOAD_SIZE};
 use userspace::syscall;
 use userspace::time::Instant;
 
diff --git a/drivers/usart/server/src/runtime.rs b/drivers/usart/server/src/runtime.rs
index c7b42da..102c2d4 100644
--- a/drivers/usart/server/src/runtime.rs
+++ b/drivers/usart/server/src/runtime.rs
@@ -2,11 +2,11 @@
 // SPDX-License-Identifier: Apache-2.0
 
 use usart_api::backend::{IrqMask, UsartBackend};
-use usart_api::{UsartResponseHeader};
+use usart_api::UsartResponseHeader;
 use userspace::syscall::{self, Signals};
 use userspace::time::Instant;
 
-use crate::{DispatchOutcome, MAX_REQUEST_SIZE, MAX_RESPONSE_SIZE, dispatch_request};
+use crate::{dispatch_request, DispatchOutcome, MAX_REQUEST_SIZE, MAX_RESPONSE_SIZE};
 
 /// Holds at most one in-flight `TryRead` request that is waiting for the RX
 /// interrupt to fire before it can be completed.
@@ -83,8 +83,7 @@
             continue;
         };
 
-        if wait_return.user_data as u32 == irq
-            && wait_return.pending_signals.contains(irq_signals)
+        if wait_return.user_data as u32 == irq && wait_return.pending_signals.contains(irq_signals)
         {
             let acked = wait_return.pending_signals & irq_signals;
             let _ = syscall::interrupt_ack(irq, acked);
@@ -99,9 +98,9 @@
                 // try_read also finds no data (unlikely at this point).
                 let _ = backend.disable_interrupts(IrqMask::RX_DATA_AVAILABLE);
 
-                let resp_len = match backend.try_read(
-                    &mut response_buf[payload_offset..payload_offset + read_buf_len],
-                ) {
+                let resp_len = match backend
+                    .try_read(&mut response_buf[payload_offset..payload_offset + read_buf_len])
+                {
                     Ok(n) => {
                         let hdr = UsartResponseHeader::success(n as u16);
                         response_buf[..UsartResponseHeader::SIZE]
diff --git a/services/mctp/api/src/error.rs b/services/mctp/api/src/error.rs
index 29af55e..17e65d0 100644
--- a/services/mctp/api/src/error.rs
+++ b/services/mctp/api/src/error.rs
@@ -148,7 +148,10 @@
         assert_eq!(ResponseCode::AddrInUse.to_string(), "address in use");
         assert_eq!(ResponseCode::TimedOut.to_string(), "timed out");
         assert_eq!(ResponseCode::BadArgument.to_string(), "bad argument");
-        assert_eq!(ResponseCode::ServerRestarted.to_string(), "server restarted");
+        assert_eq!(
+            ResponseCode::ServerRestarted.to_string(),
+            "server restarted"
+        );
     }
 
     #[test]
diff --git a/services/mctp/api/src/stack.rs b/services/mctp/api/src/stack.rs
index 89adbe5..fead571 100644
--- a/services/mctp/api/src/stack.rs
+++ b/services/mctp/api/src/stack.rs
@@ -29,8 +29,8 @@
 //! let (meta, response) = req.recv(&mut buf).unwrap();
 //! ```
 
-use crate::{Handle, MctpClient, MctpError, RecvMetadata, ResponseCode};
 use crate::traits::{MctpListener, MctpReqChannel, MctpRespChannel};
+use crate::{Handle, MctpClient, MctpError, RecvMetadata, ResponseCode};
 
 // ============================================================================
 // Stack
@@ -65,11 +65,7 @@
     /// Open an outbound request channel to `eid`.
     ///
     /// `timeout_millis` of 0 means no timeout (block indefinitely).
-    pub fn req(
-        &self,
-        eid: u8,
-        timeout_millis: u32,
-    ) -> Result<StackReqChannel<'_, C>, MctpError> {
+    pub fn req(&self, eid: u8, timeout_millis: u32) -> Result<StackReqChannel<'_, C>, MctpError> {
         let handle = self.client.req(eid)?;
         Ok(StackReqChannel {
             stack: self,
@@ -118,22 +114,15 @@
         if self.sent_tag.is_some() {
             return Err(MctpError::from_code(ResponseCode::BadArgument));
         }
-        let tag = self.stack.client.send(
-            Some(self.handle),
-            msg_type,
-            None,
-            None,
-            false,
-            buf,
-        )?;
+        let tag = self
+            .stack
+            .client
+            .send(Some(self.handle), msg_type, None, None, false, buf)?;
         self.sent_tag = Some(tag);
         Ok(())
     }
 
-    fn recv<'f>(
-        &mut self,
-        buf: &'f mut [u8],
-    ) -> Result<(RecvMetadata, &'f mut [u8]), MctpError> {
+    fn recv<'f>(&mut self, buf: &'f mut [u8]) -> Result<(RecvMetadata, &'f mut [u8]), MctpError> {
         if self.sent_tag.is_none() {
             return Err(MctpError::from_code(ResponseCode::BadArgument));
         }
@@ -214,7 +203,14 @@
         // responses by the presence or absence of a handle.
         self.stack
             .client
-            .send(None, self.msg_type, Some(self.eid), Some(self.tag), false, buf)
+            .send(
+                None,
+                self.msg_type,
+                Some(self.eid),
+                Some(self.tag),
+                false,
+                buf,
+            )
             .map(|_| ())
     }
 
diff --git a/services/mctp/api/src/traits.rs b/services/mctp/api/src/traits.rs
index 4750be9..f4d0c03 100644
--- a/services/mctp/api/src/traits.rs
+++ b/services/mctp/api/src/traits.rs
@@ -75,10 +75,7 @@
     fn send(&mut self, msg_type: u8, buf: &[u8]) -> Result<(), MctpError>;
 
     /// Receive the response to a previously sent request.
-    fn recv<'f>(
-        &mut self,
-        buf: &'f mut [u8],
-    ) -> Result<(RecvMetadata, &'f mut [u8]), MctpError>;
+    fn recv<'f>(&mut self, buf: &'f mut [u8]) -> Result<(RecvMetadata, &'f mut [u8]), MctpError>;
 
     /// The remote endpoint ID this channel targets.
     fn remote_eid(&self) -> u8;
diff --git a/services/mctp/api/src/wire.rs b/services/mctp/api/src/wire.rs
index 8be7ca5..a5d5c8a 100644
--- a/services/mctp/api/src/wire.rs
+++ b/services/mctp/api/src/wire.rs
@@ -133,9 +133,14 @@
             self.flags,
             self.msg_type,
             self.eid,
-            h[0], h[1], h[2], h[3],
+            h[0],
+            h[1],
+            h[2],
+            h[3],
             self.tag,
-            0, 0, 0, // reserved
+            0,
+            0,
+            0, // reserved
         ]
     }
 
@@ -232,8 +237,12 @@
             self.flags,
             self.msg_type,
             self.eid,
-            h[0], h[1], h[2], h[3],
-            pl[0], pl[1],
+            h[0],
+            h[1],
+            h[2],
+            h[3],
+            pl[0],
+            pl[1],
             self.tag,
             0, // reserved
         ]
@@ -520,7 +529,10 @@
 }
 
 /// Get response payload data (after header).
-pub fn get_response_payload<'a>(buf: &'a [u8], header: &MctpResponseHeader) -> Result<&'a [u8], WireError> {
+pub fn get_response_payload<'a>(
+    buf: &'a [u8],
+    header: &MctpResponseHeader,
+) -> Result<&'a [u8], WireError> {
     let end = MctpResponseHeader::SIZE + header.payload_len as usize;
     if buf.len() < end {
         return Err(WireError::Truncated);
diff --git a/services/mctp/echo/src/lib.rs b/services/mctp/echo/src/lib.rs
index 3f5704f..6fde1bf 100644
--- a/services/mctp/echo/src/lib.rs
+++ b/services/mctp/echo/src/lib.rs
@@ -22,7 +22,9 @@
 pub const ECHO_EID: u8 = 8;
 
 /// Prepare a stack for echoing by setting the local EID and opening a listener.
-pub fn prepare_listener<C: MctpClient>(stack: &Stack<C>) -> Result<StackListener<'_, C>, MctpError> {
+pub fn prepare_listener<C: MctpClient>(
+    stack: &Stack<C>,
+) -> Result<StackListener<'_, C>, MctpError> {
     stack.set_eid(ECHO_EID)?;
     stack.listener(ECHO_MSG_TYPE, 0)
 }
@@ -47,4 +49,3 @@
     let (_meta, msg, mut resp) = listener.recv(buf)?;
     resp.send(msg)
 }
-
diff --git a/services/mctp/echo/tests/echo_host.rs b/services/mctp/echo/tests/echo_host.rs
index b3b939e..33e1288 100644
--- a/services/mctp/echo/tests/echo_host.rs
+++ b/services/mctp/echo/tests/echo_host.rs
@@ -41,10 +41,7 @@
     }
 }
 
-fn transfer<S: Sender, const N: usize>(
-    packets: &RefCell<Vec<Vec<u8>>>,
-    dest: &mut Server<S, N>,
-) {
+fn transfer<S: Sender, const N: usize>(packets: &RefCell<Vec<Vec<u8>>>, dest: &mut Server<S, N>) {
     let pkts = packets.borrow();
     for pkt in pkts.iter() {
         dest.inbound(pkt).expect("inbound should accept packet");
@@ -87,7 +84,9 @@
         self.server
             .borrow_mut()
             .try_recv(handle, buf)
-            .ok_or(MctpError::from_code(openprot_mctp_api::ResponseCode::TimedOut))
+            .ok_or(MctpError::from_code(
+                openprot_mctp_api::ResponseCode::TimedOut,
+            ))
     }
 
     fn send(
@@ -129,7 +128,8 @@
 
     let mut req_b = stack_b.req(8, 0).expect("request channel should open");
     let payload = b"echo from host test";
-    req_b.send(ECHO_MSG_TYPE, payload)
+    req_b
+        .send(ECHO_MSG_TYPE, payload)
         .expect("request send should succeed");
 
     // Deliver request packets from B -> A, run one echo step, then A -> B.
diff --git a/services/mctp/server/src/dispatch.rs b/services/mctp/server/src/dispatch.rs
index 2f6f90c..6ea91a6 100644
--- a/services/mctp/server/src/dispatch.rs
+++ b/services/mctp/server/src/dispatch.rs
@@ -6,9 +6,7 @@
 //! Decodes wire-protocol requests and dispatches them to the [`Server`].
 //! This is the server-side counterpart of `openprot-mctp-client`.
 
-use openprot_mctp_api::wire::{
-    self, flags, MctpOp, MctpRequestHeader,
-};
+use openprot_mctp_api::wire::{self, flags, MctpOp, MctpRequestHeader};
 use openprot_mctp_api::{Handle, ResponseCode};
 
 use crate::{RecvResult, Sender, Server};
diff --git a/services/mctp/server/src/server.rs b/services/mctp/server/src/server.rs
index ab4c6c0..c58a713 100644
--- a/services/mctp/server/src/server.rs
+++ b/services/mctp/server/src/server.rs
@@ -103,11 +103,7 @@
     /// If a message is available, returns the metadata and copies the
     /// payload into `buf`. Otherwise returns `None` and the caller
     /// should register a pending recv via [`register_recv`](Self::register_recv).
-    pub fn try_recv(
-        &mut self,
-        handle: Handle,
-        buf: &mut [u8],
-    ) -> Option<RecvMetadata> {
+    pub fn try_recv(&mut self, handle: Handle, buf: &mut [u8]) -> Option<RecvMetadata> {
         let cookie = AppCookie(handle.0 as usize);
         let msg = self.stack.recv(cookie)?;
 
@@ -182,14 +178,9 @@
         // Responses need no handle, use 255 as dummy
         let cookie = AppCookie(handle.unwrap_or(Handle(255)).0 as usize);
 
-        let result = self.stack.send(
-            eid.map(Eid),
-            MsgType(typ),
-            tag,
-            MsgIC(ic),
-            cookie,
-            buf,
-        );
+        let result = self
+            .stack
+            .send(eid.map(Eid), MsgType(typ), tag, MsgIC(ic), cookie, buf);
 
         match result {
             Ok(tag) => Ok(tag.tag().0),
@@ -208,10 +199,7 @@
         recv_buf: &mut [u8],
     ) -> (u32, heapless::Vec<(Handle, RecvResult), OUTSTANDING>) {
         // Update the mctp-stack; get the next timeout interval
-        let stack_timeout = self
-            .stack
-            .update(now_millis)
-            .unwrap_or(60_000) as u32;
+        let stack_timeout = self.stack.update(now_millis).unwrap_or(60_000) as u32;
 
         let mut ready: heapless::Vec<(Handle, RecvResult), OUTSTANDING> = heapless::Vec::new();
 
@@ -264,9 +252,7 @@
     /// binding. The packet should be a raw MCTP packet without transport
     /// headers (the transport binding strips those).
     pub fn inbound(&mut self, pkt: &[u8]) -> Result<(), MctpError> {
-        self.stack
-            .inbound(pkt)
-            .map_err(mctp_error_to_server_error)
+        self.stack.inbound(pkt).map_err(mctp_error_to_server_error)
     }
 }
 
diff --git a/services/mctp/server/tests/common/mod.rs b/services/mctp/server/tests/common/mod.rs
index 5a747ba..992eb1a 100644
--- a/services/mctp/server/tests/common/mod.rs
+++ b/services/mctp/server/tests/common/mod.rs
@@ -264,7 +264,10 @@
 }
 
 impl<'a, S: Sender, const N: usize> MctpListener for DirectListener<'a, S, N> {
-    type RespChannel<'r> = DirectRespChannel<'a, S, N> where Self: 'r;
+    type RespChannel<'r>
+        = DirectRespChannel<'a, S, N>
+    where
+        Self: 'r;
 
     fn recv<'f>(
         &mut self,
@@ -325,10 +328,7 @@
             .map(|_| ())
     }
 
-    fn recv<'f>(
-        &mut self,
-        buf: &'f mut [u8],
-    ) -> Result<(RecvMetadata, &'f mut [u8]), MctpError> {
+    fn recv<'f>(&mut self, buf: &'f mut [u8]) -> Result<(RecvMetadata, &'f mut [u8]), MctpError> {
         let meta = self
             .client
             .server
@@ -349,9 +349,6 @@
 // ---------------------------------------------------------------------------
 
 /// Construct a `Server` + its outbound packet buffer, for two-endpoint tests.
-pub fn make_server(
-    eid: u8,
-    packets: &RefCell<Vec<Vec<u8>>>,
-) -> Server<BufferSender<'_>, 16> {
+pub fn make_server(eid: u8, packets: &RefCell<Vec<Vec<u8>>>) -> Server<BufferSender<'_>, 16> {
     Server::new(Eid(eid), 0, BufferSender { packets })
 }
diff --git a/services/mctp/server/tests/dispatch.rs b/services/mctp/server/tests/dispatch.rs
index 523f0b5..25cd198 100644
--- a/services/mctp/server/tests/dispatch.rs
+++ b/services/mctp/server/tests/dispatch.rs
@@ -13,7 +13,10 @@
 
 use mctp::Eid;
 use openprot_mctp_api::{wire, Handle};
-use openprot_mctp_server::{dispatch::{dispatch_mctp_op, drive_pending, DispatchOutcome}, Server};
+use openprot_mctp_server::{
+    dispatch::{dispatch_mctp_op, drive_pending, DispatchOutcome},
+    Server,
+};
 
 use common::{transfer, BufferSender};
 
@@ -94,16 +97,8 @@
 
     // B sends a message via dispatch
     let payload = b"dispatch echo!";
-    let req_len = wire::encode_send(
-        &mut req,
-        Some(req_handle),
-        1,
-        None,
-        None,
-        false,
-        payload,
-    )
-    .unwrap();
+    let req_len =
+        wire::encode_send(&mut req, Some(req_handle), 1, None, None, false, payload).unwrap();
     let resp_len = dispatch_reply(&req[..req_len], &mut resp, &mut server_b, &mut recv_buf);
     let header = wire::decode_response_header(&resp[..resp_len]).unwrap();
     assert!(header.is_success());
diff --git a/services/mctp/server/tests/echo.rs b/services/mctp/server/tests/echo.rs
index 8c13f71..f9dbd8d 100644
--- a/services/mctp/server/tests/echo.rs
+++ b/services/mctp/server/tests/echo.rs
@@ -23,7 +23,6 @@
 
 use common::{transfer, BufferSender, DirectClient};
 
-
 // ---------------------------------------------------------------------------
 // Echo application logic (client side)
 // ---------------------------------------------------------------------------
@@ -69,13 +68,11 @@
     // -- Server side: set up two MCTP server instances with mock transport --
     let buf_a = RefCell::new(Vec::new());
     let sender_a = BufferSender { packets: &buf_a };
-    let server_a: RefCell<Server<_, 16>> =
-        RefCell::new(Server::new(Eid(8), 0, sender_a));
+    let server_a: RefCell<Server<_, 16>> = RefCell::new(Server::new(Eid(8), 0, sender_a));
 
     let buf_b = RefCell::new(Vec::new());
     let sender_b = BufferSender { packets: &buf_b };
-    let server_b: RefCell<Server<_, 16>> =
-        RefCell::new(Server::new(Eid(42), 0, sender_b));
+    let server_b: RefCell<Server<_, 16>> = RefCell::new(Server::new(Eid(42), 0, sender_b));
 
     // -- Client side: wrap servers in DirectClient to use MctpClient trait --
     let client_a = DirectClient::new(&server_a);
@@ -109,7 +106,10 @@
         .expect("Client B should have received the echo response");
 
     let response = &resp_buf[..resp_meta.payload_size];
-    assert_eq!(response, payload, "Echo response should match original payload");
+    assert_eq!(
+        response, payload,
+        "Echo response should match original payload"
+    );
     assert_eq!(resp_meta.msg_type, 1);
     assert_eq!(resp_meta.remote_eid, 8);
 
@@ -123,13 +123,11 @@
 fn mctp_echo_multiple() {
     let buf_a = RefCell::new(Vec::new());
     let sender_a = BufferSender { packets: &buf_a };
-    let server_a: RefCell<Server<_, 16>> =
-        RefCell::new(Server::new(Eid(8), 0, sender_a));
+    let server_a: RefCell<Server<_, 16>> = RefCell::new(Server::new(Eid(8), 0, sender_a));
 
     let buf_b = RefCell::new(Vec::new());
     let sender_b = BufferSender { packets: &buf_b };
-    let server_b: RefCell<Server<_, 16>> =
-        RefCell::new(Server::new(Eid(42), 0, sender_b));
+    let server_b: RefCell<Server<_, 16>> = RefCell::new(Server::new(Eid(42), 0, sender_b));
 
     let client_a = DirectClient::new(&server_a);
     let client_b = DirectClient::new(&server_b);
diff --git a/services/mctp/server/tests/integration.rs b/services/mctp/server/tests/integration.rs
index cfe1a54..61ab5eb 100644
--- a/services/mctp/server/tests/integration.rs
+++ b/services/mctp/server/tests/integration.rs
@@ -22,7 +22,9 @@
 use openprot_mctp_server::Server;
 use openprot_mctp_server::ServerConfig;
 
-use common::{transfer, BufferSender, DirectClient, DirectListener, DirectReqChannel, SmallMtuBufferSender};
+use common::{
+    transfer, BufferSender, DirectClient, DirectListener, DirectReqChannel, SmallMtuBufferSender,
+};
 
 // ---------------------------------------------------------------------------
 // Multi-fragment roundtrip
@@ -215,9 +217,7 @@
 
     // A echoes manually (through MctpClient)
     let mut echo_buf = [0u8; 255];
-    let meta = client_a
-        .recv(listener_handle, 0, &mut echo_buf)
-        .unwrap();
+    let meta = client_a.recv(listener_handle, 0, &mut echo_buf).unwrap();
     client_a
         .send(
             None,
@@ -448,7 +448,9 @@
 
     let mut req = stack.req(42, 0).expect("req alloc");
     let mut resp_buf = [0u8; 255];
-    let err = req.recv(&mut resp_buf).expect_err("recv before send must fail");
+    let err = req
+        .recv(&mut resp_buf)
+        .expect_err("recv before send must fail");
     assert_eq!(err.code, openprot_mctp_api::ResponseCode::BadArgument);
 }
 
@@ -545,4 +547,3 @@
     stack.set_eid(99).expect("set_eid should succeed");
     assert_eq!(stack.get_eid(), 99);
 }
-
diff --git a/services/mctp/server/tests/server_unit.rs b/services/mctp/server/tests/server_unit.rs
index 165d472..e3fb375 100644
--- a/services/mctp/server/tests/server_unit.rs
+++ b/services/mctp/server/tests/server_unit.rs
@@ -12,10 +12,10 @@
 use std::cell::RefCell;
 
 use mctp::Eid;
-use openprot_mctp_api::{ResponseCode};
+use openprot_mctp_api::ResponseCode;
 use openprot_mctp_server::{RecvResult, Server, ServerConfig};
 
-use common::{BufferSender, DroppingBufferSender, transfer};
+use common::{transfer, BufferSender, DroppingBufferSender};
 
 // ---------------------------------------------------------------------------
 // Helpers
@@ -95,7 +95,9 @@
     let sender = DroppingBufferSender;
     let mut server: Server<_, 16> = Server::new(Eid(8), 0, sender);
     server.listener(1).expect("first listener should succeed");
-    let err = server.listener(1).expect_err("duplicate listener should fail");
+    let err = server
+        .listener(1)
+        .expect_err("duplicate listener should fail");
     assert_eq!(err.code, ResponseCode::AddrInUse);
 }
 
diff --git a/target/ast10x0/board/src/lib.rs b/target/ast10x0/board/src/lib.rs
index b921388..eb4f4db 100644
--- a/target/ast10x0/board/src/lib.rs
+++ b/target/ast10x0/board/src/lib.rs
@@ -2,7 +2,6 @@
 // SPDX-License-Identifier: Apache-2.0
 
 #![no_std]
-
 #![deny(
     clippy::unwrap_used,
     clippy::expect_used,
@@ -12,8 +11,8 @@
     clippy::unimplemented
 )]
 
-use ast10x0_peripherals::scu::{PinctrlPin, ScuRegisters};
 use ast10x0_peripherals::scu::{ClockRegisterHalf, ScuRegisterHalf};
+use ast10x0_peripherals::scu::{PinctrlPin, ScuRegisters};
 
 /// Board descriptor metadata for AST10x0 board initialization.
 #[derive(Clone, Debug)]
@@ -85,4 +84,4 @@
     for _ in 0..(micros * 16) {
         core::hint::spin_loop();
     }
-}
\ No newline at end of file
+}
diff --git a/target/ast10x0/config.rs b/target/ast10x0/config.rs
index 7cef221..d3ac165 100644
--- a/target/ast10x0/config.rs
+++ b/target/ast10x0/config.rs
@@ -10,9 +10,7 @@
 //! the production AST10x0 hardware datasheet.
 #![no_std]
 
-pub use kernel_config::{
-    CortexMKernelConfigInterface, KernelConfigInterface, NvicConfigInterface,
-};
+pub use kernel_config::{CortexMKernelConfigInterface, KernelConfigInterface, NvicConfigInterface};
 
 pub struct KernelConfig;
 
diff --git a/target/ast10x0/console_backend.rs b/target/ast10x0/console_backend.rs
index 121a3fb..7f70753 100644
--- a/target/ast10x0/console_backend.rs
+++ b/target/ast10x0/console_backend.rs
@@ -7,8 +7,8 @@
 
 #![no_std]
 
-use ast10x0_peripherals::uart::Usart;
 use ast1060_pac as device;
+use ast10x0_peripherals::uart::Usart;
 use embedded_io::Write;
 use kernel::sync::spinlock::SpinLock;
 use pw_status::{Error, Result};
diff --git a/target/ast10x0/entry.rs b/target/ast10x0/entry.rs
index f9fd412..a668bce 100644
--- a/target/ast10x0/entry.rs
+++ b/target/ast10x0/entry.rs
@@ -87,8 +87,6 @@
     unsafe { init_cache() };
 }
 
-
-
 #[unsafe(no_mangle)]
 #[allow(non_snake_case)]
 pub extern "C" fn pw_assert_HandleFailure() -> ! {
@@ -113,14 +111,9 @@
 
 // Default stub handlers for peripherals not yet implemented
 default_handler!(
-    fmc, gpio, hace,
-    i2c, i2c1, i2c2, i2c3, i2c4, i2c5, i2c6, i2c7, i2c8, i2c9, i2c10, i2c11, i2c12, i2c13,
-    i2cfilter,
-    i3c, i3c1, i3c2, i3c3,
-    scu, sgpiom,
-    spi, spi1, spipf1, spipf2, spipf3,
-    timer1, timer2, timer3, timer4, timer5, timer6, timer7,
-    uart, uartdma, wdt
+    fmc, gpio, hace, i2c, i2c1, i2c2, i2c3, i2c4, i2c5, i2c6, i2c7, i2c8, i2c9, i2c10, i2c11,
+    i2c12, i2c13, i2cfilter, i3c, i3c1, i3c2, i3c3, scu, sgpiom, spi, spi1, spipf1, spipf2, spipf3,
+    timer1, timer2, timer3, timer4, timer5, timer6, timer7, uart, uartdma, wdt
 );
 
 mod console_backend {
diff --git a/target/ast10x0/peripherals/i2c/controller.rs b/target/ast10x0/peripherals/i2c/controller.rs
index dbff8d9..555fc5b 100644
--- a/target/ast10x0/peripherals/i2c/controller.rs
+++ b/target/ast10x0/peripherals/i2c/controller.rs
@@ -286,4 +286,3 @@
         }
     }
 }
-
diff --git a/target/ast10x0/peripherals/i2c/master.rs b/target/ast10x0/peripherals/i2c/master.rs
index b286fd9..f8a01f9 100644
--- a/target/ast10x0/peripherals/i2c/master.rs
+++ b/target/ast10x0/peripherals/i2c/master.rs
@@ -211,7 +211,9 @@
 
         while offset < total_len {
             let chunk_len = core::cmp::min(constants::BUFFER_MODE_SIZE, total_len - offset);
-            let chunk = bytes.get(offset..offset + chunk_len).ok_or(I2cError::Invalid)?;
+            let chunk = bytes
+                .get(offset..offset + chunk_len)
+                .ok_or(I2cError::Invalid)?;
             let is_first = offset == 0;
             let is_last = offset + chunk_len >= total_len;
 
@@ -336,7 +338,9 @@
             }
 
             // Copy from hardware buffer AFTER successful transfer
-            let chunk = buffer.get_mut(offset..offset + chunk_len).ok_or(I2cError::Invalid)?;
+            let chunk = buffer
+                .get_mut(offset..offset + chunk_len)
+                .ok_or(I2cError::Invalid)?;
             self.copy_from_buffer(chunk)?;
 
             #[allow(clippy::cast_possible_truncation)]
@@ -442,7 +446,9 @@
 
         while offset < total_len {
             let chunk_len = core::cmp::min(constants::DMA_MODE_MAX_SIZE, total_len - offset);
-            let chunk = bytes.get(offset..offset + chunk_len).ok_or(I2cError::Invalid)?;
+            let chunk = bytes
+                .get(offset..offset + chunk_len)
+                .ok_or(I2cError::Invalid)?;
             let is_first = offset == 0;
             let is_last = offset + chunk_len >= total_len;
 
@@ -584,7 +590,10 @@
             // Copy from DMA buffer into caller's buffer
             {
                 let dma_buf = self.dma_buf.as_deref().ok_or(I2cError::Invalid)?;
-                buffer.get_mut(offset..offset + chunk_len).ok_or(I2cError::Invalid)?.copy_from_slice(dma_buf.get(..chunk_len).ok_or(I2cError::Invalid)?);
+                buffer
+                    .get_mut(offset..offset + chunk_len)
+                    .ok_or(I2cError::Invalid)?
+                    .copy_from_slice(dma_buf.get(..chunk_len).ok_or(I2cError::Invalid)?);
             }
 
             #[allow(clippy::cast_possible_truncation)]
diff --git a/target/ast10x0/peripherals/i2c/target_adapter.rs b/target/ast10x0/peripherals/i2c/target_adapter.rs
index 847d852..bc6d840 100644
--- a/target/ast10x0/peripherals/i2c/target_adapter.rs
+++ b/target/ast10x0/peripherals/i2c/target_adapter.rs
@@ -272,4 +272,3 @@
     /// Called when a stop condition is received.
     fn on_stop(&mut self);
 }
-
diff --git a/target/ast10x0/peripherals/scu/clock.rs b/target/ast10x0/peripherals/scu/clock.rs
index b1e21db..e258112 100644
--- a/target/ast10x0/peripherals/scu/clock.rs
+++ b/target/ast10x0/peripherals/scu/clock.rs
@@ -43,4 +43,4 @@
             ClockRegisterHalf::Upper => self.regs().scu090().read().bits(),
         }
     }
-}
\ No newline at end of file
+}
diff --git a/target/ast10x0/peripherals/scu/mod.rs b/target/ast10x0/peripherals/scu/mod.rs
index fc6468a..fdcd40c 100644
--- a/target/ast10x0/peripherals/scu/mod.rs
+++ b/target/ast10x0/peripherals/scu/mod.rs
@@ -3,13 +3,13 @@
 
 //! AST10x0 System Control Unit (SCU) module.
 
-pub mod registers;
-pub mod types;
-pub mod reset;
 pub mod clock;
-pub mod status;
 pub mod pinctrl;
+pub mod registers;
+pub mod reset;
+pub mod status;
+pub mod types;
 
-pub use registers::ScuRegisters;
 pub use pinctrl::PinctrlPin;
-pub use types::{ClockRegisterHalf, ScuRegisterHalf};
\ No newline at end of file
+pub use registers::ScuRegisters;
+pub use types::{ClockRegisterHalf, ScuRegisterHalf};
diff --git a/target/ast10x0/peripherals/scu/registers.rs b/target/ast10x0/peripherals/scu/registers.rs
index 255f735..9414ce9 100644
--- a/target/ast10x0/peripherals/scu/registers.rs
+++ b/target/ast10x0/peripherals/scu/registers.rs
@@ -69,4 +69,4 @@
             .scu000()
             .write(|w| unsafe { w.bits(SCU_UNLOCK_KEY) });
     }
-}
\ No newline at end of file
+}
diff --git a/target/ast10x0/peripherals/scu/reset.rs b/target/ast10x0/peripherals/scu/reset.rs
index 76f7ece..73dc09a 100644
--- a/target/ast10x0/peripherals/scu/reset.rs
+++ b/target/ast10x0/peripherals/scu/reset.rs
@@ -43,4 +43,4 @@
             ScuRegisterHalf::Upper => self.regs().scu050().read().bits(),
         }
     }
-}
\ No newline at end of file
+}
diff --git a/target/ast10x0/peripherals/scu/status.rs b/target/ast10x0/peripherals/scu/status.rs
index 0fb276b..28206ae 100644
--- a/target/ast10x0/peripherals/scu/status.rs
+++ b/target/ast10x0/peripherals/scu/status.rs
@@ -29,4 +29,4 @@
     pub fn multi_func_694_raw(&self) -> u32 {
         self.regs().scu694().read().bits()
     }
-}
\ No newline at end of file
+}
diff --git a/target/ast10x0/peripherals/scu/types.rs b/target/ast10x0/peripherals/scu/types.rs
index cf0314b..0a2d8c1 100644
--- a/target/ast10x0/peripherals/scu/types.rs
+++ b/target/ast10x0/peripherals/scu/types.rs
@@ -15,4 +15,4 @@
 pub enum ClockRegisterHalf {
     Lower,
     Upper,
-}
\ No newline at end of file
+}
diff --git a/target/ast10x0/peripherals/smc/controller.rs b/target/ast10x0/peripherals/smc/controller.rs
index c3e5823..1ae7248 100644
--- a/target/ast10x0/peripherals/smc/controller.rs
+++ b/target/ast10x0/peripherals/smc/controller.rs
@@ -46,7 +46,8 @@
 // ownership, so this scratch buffer is not accessed concurrently.
 unsafe impl Sync for CalibrationScratch {}
 
-static CALIBRATION_SCRATCH: CalibrationScratch = CalibrationScratch(UnsafeCell::new([0; SPI_CALIB_LEN]));
+static CALIBRATION_SCRATCH: CalibrationScratch =
+    CalibrationScratch(UnsafeCell::new([0; SPI_CALIB_LEN]));
 
 const fn spi_nor_qread_cmd_for_capacity(capacity_bytes: usize) -> u32 {
     if capacity_bytes > SPI_NOR_4B_READ_THRESHOLD_BYTES {
diff --git a/target/ast10x0/peripherals/smc/device/block_device.rs b/target/ast10x0/peripherals/smc/device/block_device.rs
index fbfbfff..e9112c2 100644
--- a/target/ast10x0/peripherals/smc/device/block_device.rs
+++ b/target/ast10x0/peripherals/smc/device/block_device.rs
@@ -23,10 +23,7 @@
 
 impl<'a, 'b> SpiNorBlockDevice<'a, 'b> {
     /// Build a block facade from an existing `SpiNorFlash` plus known config.
-    pub fn from_flash(
-        flash: &'a mut SpiNorFlash<'b>,
-        cfg: FlashConfig,
-    ) -> Result<Self, SmcError> {
+    pub fn from_flash(flash: &'a mut SpiNorFlash<'b>, cfg: FlashConfig) -> Result<Self, SmcError> {
         let expected = cfg_capacity_bytes(cfg)?;
         let actual = SpiNorFlashDevice::capacity_bytes(flash)?;
         if expected != actual {
@@ -39,10 +36,7 @@
     }
 
     /// Build a block facade by mapping a JEDEC ID to a known flash profile.
-    pub fn from_jedec_id(
-        flash: &'a mut SpiNorFlash<'b>,
-        jedec: JedecId,
-    ) -> Result<Self, SmcError> {
+    pub fn from_jedec_id(flash: &'a mut SpiNorFlash<'b>, jedec: JedecId) -> Result<Self, SmcError> {
         let cfg = cfg_from_jedec(jedec)?;
         Self::from_flash(flash, cfg)
     }
@@ -111,4 +105,4 @@
         (0xEF, 0x40, 0x19) => Ok(FlashConfig::winbond_w25q256()),
         _ => Err(SmcError::DeviceNotSupported),
     }
-}
\ No newline at end of file
+}
diff --git a/target/ast10x0/peripherals/smc/device/flash.rs b/target/ast10x0/peripherals/smc/device/flash.rs
index 7aa2e5e..70992a5 100644
--- a/target/ast10x0/peripherals/smc/device/flash.rs
+++ b/target/ast10x0/peripherals/smc/device/flash.rs
@@ -225,7 +225,11 @@
     }
 
     /// Build a flash facade from an initialized FMC controller wrapper with explicit CS.
-    pub fn from_fmc_cs(fmc: &'a mut FmcReady, cfg: FlashConfig, cs: ChipSelect) -> Result<Self, SmcError> {
+    pub fn from_fmc_cs(
+        fmc: &'a mut FmcReady,
+        cfg: FlashConfig,
+        cs: ChipSelect,
+    ) -> Result<Self, SmcError> {
         let addressing_policy = Self::default_addressing_for_cfg(cfg);
         Self::validate_capacity_cfg(cfg, fmc.cs_config(cs)?)?;
         Ok(Self {
@@ -244,7 +248,11 @@
     }
 
     /// Build a flash facade from an initialized SPI1/SPI2 controller wrapper with explicit CS.
-    pub fn from_spi_cs(spi: &'a mut SpiReady, cfg: FlashConfig, cs: ChipSelect) -> Result<Self, SmcError> {
+    pub fn from_spi_cs(
+        spi: &'a mut SpiReady,
+        cfg: FlashConfig,
+        cs: ChipSelect,
+    ) -> Result<Self, SmcError> {
         let addressing_policy = Self::default_addressing_for_cfg(cfg);
         Self::validate_capacity_cfg(cfg, spi.cs_config(cs)?)?;
         Ok(Self {
@@ -388,7 +396,6 @@
         self.command_profile
     }
 
-
     /// Validate a device-local offset before handing it to the controller.
     ///
     /// `FmcReady::read` / `SpiReady::read` already select the per-CS AHB
@@ -444,12 +451,8 @@
         let opcode = self.command_profile().read_status;
         let mut status = [0u8; 1];
         match &self.backend {
-            FlashBackend::Fmc(fmc) => {
-                fmc.transceive_user(cs, &[opcode], &[], &mut status, mode)?
-            }
-            FlashBackend::Spi(spi) => {
-                spi.transceive_user(cs, &[opcode], &[], &mut status, mode)?
-            }
+            FlashBackend::Fmc(fmc) => fmc.transceive_user(cs, &[opcode], &[], &mut status, mode)?,
+            FlashBackend::Spi(spi) => spi.transceive_user(cs, &[opcode], &[], &mut status, mode)?,
         }
         Ok(status[0])
     }
@@ -651,10 +654,12 @@
     #[test]
     fn compare_chunked_propagates_read_error() {
         let expected = fixture_1kb();
-        let read = |_offset: u32, _dst: &mut [u8]| -> Result<usize, SmcError> {
+        let read =
+            |_offset: u32, _dst: &mut [u8]| -> Result<usize, SmcError> { Err(SmcError::Timeout) };
+        assert_eq!(
+            compare_chunked(read, 0, &expected, 256),
             Err(SmcError::Timeout)
-        };
-        assert_eq!(compare_chunked(read, 0, &expected, 256), Err(SmcError::Timeout));
+        );
     }
 
     #[test]
@@ -667,6 +672,9 @@
     fn expect_jedec_match_rejects_mismatch() {
         let expected = JedecId::from_bytes([0xEF, 0x40, 0x18]);
         let actual = JedecId::from_bytes([0xC2, 0x20, 0x19]);
-        assert_eq!(expect_jedec_match(actual, expected), Err(SmcError::HardwareError));
+        assert_eq!(
+            expect_jedec_match(actual, expected),
+            Err(SmcError::HardwareError)
+        );
     }
 }
diff --git a/target/ast10x0/peripherals/smc/device/mod.rs b/target/ast10x0/peripherals/smc/device/mod.rs
index f7fba1f..16c3b58 100644
--- a/target/ast10x0/peripherals/smc/device/mod.rs
+++ b/target/ast10x0/peripherals/smc/device/mod.rs
@@ -3,8 +3,10 @@
 
 //! Flash device abstractions layered on top of SMC wrappers.
 
-mod flash;
 mod block_device;
+mod flash;
 
-pub use flash::{FlashAddressingPolicy, FlashCommandProfile, SpiNorFlashDevice, JedecId, SpiNorFlash};
 pub use block_device::{BlockDeviceInfo, SpiNorBlockDevice};
+pub use flash::{
+    FlashAddressingPolicy, FlashCommandProfile, JedecId, SpiNorFlash, SpiNorFlashDevice,
+};
diff --git a/target/ast10x0/peripherals/smc/interrupts.rs b/target/ast10x0/peripherals/smc/interrupts.rs
index fae72cb..ceca6db 100644
--- a/target/ast10x0/peripherals/smc/interrupts.rs
+++ b/target/ast10x0/peripherals/smc/interrupts.rs
@@ -88,7 +88,10 @@
     #[test]
     fn decode_emits_dma_error_on_abort_by_default() {
         let intr_ctrl = 1 << 10;
-        assert_eq!(SmcInterruptDecoder::decode(intr_ctrl), SmcInterrupt::DmaError);
+        assert_eq!(
+            SmcInterruptDecoder::decode(intr_ctrl),
+            SmcInterrupt::DmaError
+        );
     }
 
     #[test]
diff --git a/target/ast10x0/peripherals/smc/mod.rs b/target/ast10x0/peripherals/smc/mod.rs
index 4f2bc8c..8ef133d 100644
--- a/target/ast10x0/peripherals/smc/mod.rs
+++ b/target/ast10x0/peripherals/smc/mod.rs
@@ -6,23 +6,26 @@
 //! Provides safe abstractions over the FMC (Firmware Memory Controller)
 //! and SPI1/SPI2 flash controllers.
 
-pub mod registers;
-pub mod types;
-mod helpers;
 pub mod controller;
-pub mod fmc;
-pub mod spi;
-pub mod interrupts;
 pub mod device;
+pub mod fmc;
+mod helpers;
+pub mod interrupts;
+pub mod registers;
+pub mod spi;
+pub mod types;
 
-pub use types::{SmcError, SmcController, ChipSelect, FlashConfig, SmcConfig, SmcRetryable, TransferMode, AddressWidth, SmcTopology};
 pub use controller::{Ready, ReadySmc, Smc, UninitSmc, Uninitialized};
-pub use fmc::{FmcReady, FmcUninit};
-pub use spi::{SpiReady, SpiUninit};
-pub use interrupts::{SmcInterrupt, SmcInterruptDecoder};
 pub use device::{
-	BlockDeviceInfo, FlashAddressingPolicy, FlashCommandProfile, JedecId, SpiNorBlockDevice,
-	SpiNorFlash, SpiNorFlashDevice,
+    BlockDeviceInfo, FlashAddressingPolicy, FlashCommandProfile, JedecId, SpiNorBlockDevice,
+    SpiNorFlash, SpiNorFlashDevice,
+};
+pub use fmc::{FmcReady, FmcUninit};
+pub use interrupts::{SmcInterrupt, SmcInterruptDecoder};
+pub use spi::{SpiReady, SpiUninit};
+pub use types::{
+    AddressWidth, ChipSelect, FlashConfig, SmcConfig, SmcController, SmcError, SmcRetryable,
+    SmcTopology, TransferMode,
 };
 
 /// Result type for SMC operations
diff --git a/target/ast10x0/peripherals/smc/registers.rs b/target/ast10x0/peripherals/smc/registers.rs
index 4328f5f..f629249 100644
--- a/target/ast10x0/peripherals/smc/registers.rs
+++ b/target/ast10x0/peripherals/smc/registers.rs
@@ -9,7 +9,7 @@
 //! # Phase 5: Topology Logic Boundary
 //!
 //! **This trait is pure register abstraction. No topology logic belongs here.**
-//! 
+//!
 //! All decisions about when to call these operations, how to interpret results
 //! based on controller role, and topology-gated behaviors (decode-range sizing,
 //! calibration skip, control register programming per role) live in the
@@ -19,8 +19,8 @@
 //! The controller layer answers "what to do with the data based on the topology."
 
 use ast1060_pac as device;
-use core::marker::PhantomData;
 use core::cell::UnsafeCell;
+use core::marker::PhantomData;
 
 use crate::smc::helpers::{
     SPI_DMA_DISCARD_REQ_MAGIC, SPI_DMA_GET_REQ_MAGIC, SPI_DMA_GRANT, SPI_DMA_REQUEST,
@@ -104,7 +104,9 @@
 
     /// FMC008: Clear DMA status bits (write-1-to-clear).
     pub fn clear_dma_status(&self, clear_mask: u32) {
-        self.regs().fmc008().write(|w| unsafe { w.bits(clear_mask) });
+        self.regs()
+            .fmc008()
+            .write(|w| unsafe { w.bits(clear_mask) });
     }
 
     /// FMC008: Enable DMA interrupt (bit 3, `dmaintenbl`).
@@ -118,7 +120,9 @@
     ///
     /// Call at the top of the IRQ handler before processing status bits.
     pub fn disable_dma_irq(&self) {
-        self.regs().fmc008().modify(|_, w| w.dmaintenbl().clear_bit());
+        self.regs()
+            .fmc008()
+            .modify(|_, w| w.dmaintenbl().clear_bit());
     }
 
     /// FMC010: CS0 control register
@@ -310,13 +314,9 @@
 
     pub fn already_calibrated(&self, cs: crate::smc::types::ChipSelect) -> bool {
         match cs {
-            crate::smc::types::ChipSelect::Cs0 => {
-                self.read_cs0_timing_compensation() != 0
-            }
+            crate::smc::types::ChipSelect::Cs0 => self.read_cs0_timing_compensation() != 0,
 
-            crate::smc::types::ChipSelect::Cs1 => {
-                self.read_cs1_timing_compensation() != 0
-            }
+            crate::smc::types::ChipSelect::Cs1 => self.read_cs1_timing_compensation() != 0,
         }
     }
 }
diff --git a/target/ast10x0/peripherals/uart/mod.rs b/target/ast10x0/peripherals/uart/mod.rs
index e8d039e..7a07df4 100644
--- a/target/ast10x0/peripherals/uart/mod.rs
+++ b/target/ast10x0/peripherals/uart/mod.rs
@@ -8,468 +8,461 @@
 
 #[derive(Clone, Copy, Eq, PartialEq, Debug)]
 pub enum Error {
-	Frame,
-	Parity,
-	Noise,
-	BufFull,
+    Frame,
+    Parity,
+    Noise,
+    BufFull,
 }
 
 #[derive(Debug)]
 pub enum InterruptDecoding {
-	ModemStatusChange = 0,
-	TxEmpty = 1,
-	RxDataAvailable = 2,
-	LineStatusChange = 3,
-	CharacterTimeout = 6,
-	Unknown = -1,
+    ModemStatusChange = 0,
+    TxEmpty = 1,
+    RxDataAvailable = 2,
+    LineStatusChange = 3,
+    CharacterTimeout = 6,
+    Unknown = -1,
 }
 
 impl TryFrom<u8> for InterruptDecoding {
-	type Error = ();
+    type Error = ();
 
-	fn try_from(value: u8) -> Result<Self, Self::Error> {
-		match value & 0x07 {
-			0 => Ok(InterruptDecoding::ModemStatusChange),
-			1 => Ok(InterruptDecoding::TxEmpty),
-			2 => Ok(InterruptDecoding::RxDataAvailable),
-			3 => Ok(InterruptDecoding::LineStatusChange),
-			6 => Ok(InterruptDecoding::CharacterTimeout),
-			_ => Err(()),
-		}
-	}
+    fn try_from(value: u8) -> Result<Self, Self::Error> {
+        match value & 0x07 {
+            0 => Ok(InterruptDecoding::ModemStatusChange),
+            1 => Ok(InterruptDecoding::TxEmpty),
+            2 => Ok(InterruptDecoding::RxDataAvailable),
+            3 => Ok(InterruptDecoding::LineStatusChange),
+            6 => Ok(InterruptDecoding::CharacterTimeout),
+            _ => Err(()),
+        }
+    }
 }
 
 /// Receiver FIFO Interrupt trigger level
 #[derive(Debug)]
 #[repr(u8)]
 pub enum FifoTriggerLevel {
-	// 1 byte trigger level
-	OneByte = 0b00,
-	// 4 byte trigger level
-	FourByte = 0b01,
-	// 8 byte trigger level
-	EightByte = 0b10,
-	// 14 byte trigger level
-	FourteenByte = 0b11,
+    // 1 byte trigger level
+    OneByte = 0b00,
+    // 4 byte trigger level
+    FourByte = 0b01,
+    // 8 byte trigger level
+    EightByte = 0b10,
+    // 14 byte trigger level
+    FourteenByte = 0b11,
 }
 
 bitflags! {
-	#[derive(Debug)]
-	pub struct LineStatus: u8 {
-		/// here is at least one parity error, framing error, or break indication in the FIFO.
-		///
-		/// This bit is only active when FIFOs are enabled.
-		/// This bit is cleared when the `UART_LSR` is read.
-		const ErrorInReceiverFifo = 0x80;
-		/// Transmitter empty
-		///
-		/// When FIFO enabled, the Transmitter Shift Register and FIFO are both empty.
-		/// When FIFO disabled, the Transmitter Shift Register and UART_THR are both empty.
-		const TransmitterEmpty = 0x40;
-		/// Transmitter Holding Register Empty
-		///
-		/// This bit is set whenever data is transferred from UART_THR
-		/// or TX FIFO to the transmitter shift register
-		/// and no new data has been written to the UART THR or TX FIFO.
-		/// This also causes a THRE Interrupt to occur, if THRE Interrupt is enabled
-		const TransmitterHoldingRegisterEmpty = 0x20;
-		/// Break interrupt
-		///
-		/// The serial input is held in a logic `0` state for longer
-		/// than the sum of start time + data bits + parity + stop bits.
-		/// A break condition on serial input causes one and only one character,
-		/// consisting of all zeros, to be received by the UART
-		const BreakInterrupt = 0x10;
-		/// Framing error
-		///
-		/// A received character did not have a valid stop bit.
-		const FramingError = 0x08;
-		/// Parity error
-		///
-		/// Receive parity error while parity enable was set.
-		const ParityError = 0x04;
-		/// Overrun error
-		///
-		/// Character was received while the receiver or FIFO was full.
-		const OverrunError = 0x02;
-		/// Data ready
-		///
-		/// The receiver contains at least one character.
-		const DataReady = 0x01;
-	}
+    #[derive(Debug)]
+    pub struct LineStatus: u8 {
+        /// here is at least one parity error, framing error, or break indication in the FIFO.
+        ///
+        /// This bit is only active when FIFOs are enabled.
+        /// This bit is cleared when the `UART_LSR` is read.
+        const ErrorInReceiverFifo = 0x80;
+        /// Transmitter empty
+        ///
+        /// When FIFO enabled, the Transmitter Shift Register and FIFO are both empty.
+        /// When FIFO disabled, the Transmitter Shift Register and UART_THR are both empty.
+        const TransmitterEmpty = 0x40;
+        /// Transmitter Holding Register Empty
+        ///
+        /// This bit is set whenever data is transferred from UART_THR
+        /// or TX FIFO to the transmitter shift register
+        /// and no new data has been written to the UART THR or TX FIFO.
+        /// This also causes a THRE Interrupt to occur, if THRE Interrupt is enabled
+        const TransmitterHoldingRegisterEmpty = 0x20;
+        /// Break interrupt
+        ///
+        /// The serial input is held in a logic `0` state for longer
+        /// than the sum of start time + data bits + parity + stop bits.
+        /// A break condition on serial input causes one and only one character,
+        /// consisting of all zeros, to be received by the UART
+        const BreakInterrupt = 0x10;
+        /// Framing error
+        ///
+        /// A received character did not have a valid stop bit.
+        const FramingError = 0x08;
+        /// Parity error
+        ///
+        /// Receive parity error while parity enable was set.
+        const ParityError = 0x04;
+        /// Overrun error
+        ///
+        /// Character was received while the receiver or FIFO was full.
+        const OverrunError = 0x02;
+        /// Data ready
+        ///
+        /// The receiver contains at least one character.
+        const DataReady = 0x01;
+    }
 }
 pub struct Usart {
-	usart: *const device::uart::RegisterBlock,
+    usart: *const device::uart::RegisterBlock,
 }
 
 impl embedded_io::ErrorType for Usart {
-	type Error = Error;
+    type Error = Error;
 }
 
 impl embedded_io::Error for Error {
-	fn kind(&self) -> embedded_io::ErrorKind {
-		embedded_io::ErrorKind::Other
-	}
+    fn kind(&self) -> embedded_io::ErrorKind {
+        embedded_io::ErrorKind::Other
+    }
 }
 
 impl serial_nb::Error for Error {
-	fn kind(&self) -> serial_nb::ErrorKind {
-		match self {
-			Error::Frame => serial_nb::ErrorKind::FrameFormat,
-			Error::Parity => serial_nb::ErrorKind::Parity,
-			Error::Noise => serial_nb::ErrorKind::Noise,
-			Error::BufFull => serial_nb::ErrorKind::Overrun,
-		}
-	}
+    fn kind(&self) -> serial_nb::ErrorKind {
+        match self {
+            Error::Frame => serial_nb::ErrorKind::FrameFormat,
+            Error::Parity => serial_nb::ErrorKind::Parity,
+            Error::Noise => serial_nb::ErrorKind::Noise,
+            Error::BufFull => serial_nb::ErrorKind::Overrun,
+        }
+    }
 }
 
 impl serial_nb::ErrorType for Usart {
-	type Error = Error;
+    type Error = Error;
 }
 
 impl Write for Usart {
-	fn flush(&mut self) -> Result<(), Error> {
-		while !self.is_tx_idle() {}
-		Ok(())
-	}
+    fn flush(&mut self) -> Result<(), Error> {
+        while !self.is_tx_idle() {}
+        Ok(())
+    }
 
-	#[inline(always)]
-	fn write(&mut self, buf: &[u8]) -> Result<usize, Error> {
-		let mut written = 0;
-		for byte in buf.iter() {
-			if !self.is_tx_full() {
-				// This is unsafe because we can transmit 7, 8 or 9 bits but the
-				// interface can't know what it's been configured for.
-				self.regs()
-					.uartthr()
-					.write(|w| unsafe { w.bits(*byte as u32) });
-				written += 1;
-			} else {
-				if written == 0 {
-					// spec demands to block until at least one byte has been written.
-					// `continue` would skip to the next byte rather than retrying
-					// this one, so we busy-wait inline instead.
-					while self.is_tx_full() {}
-					self.regs()
-						.uartthr()
-						.write(|w| unsafe { w.bits(*byte as u32) });
-					written += 1;
-				} else {
-					break;
-				}
-			}
-		}
-		// Two invariants hold that LLVM cannot prove through value range analysis
-		// due to the busy-wait inner loop and early break:
-		//
-		// 1. n <= buf.len(): `written` is incremented at most once per element of
-		//    `buf.iter()`. Without this, `write_all`'s `buf = &buf[n..]` retains
-		//    a bounds-check panic. The `min` makes the assert mathematically sound.
-		//
-		// 2. n > 0 when buf is non-empty: the busy-wait guarantees at least one
-		//    byte is written before returning. Without this, `write_all`'s
-		//    `Ok(0) => panic!` branch is retained even though it is unreachable.
-		let n = written.min(buf.len());
-		unsafe {
-			core::hint::assert_unchecked(n <= buf.len());
-			core::hint::assert_unchecked(n > 0 || buf.is_empty());
-		}
-		Ok(n)
-	}
+    #[inline(always)]
+    fn write(&mut self, buf: &[u8]) -> Result<usize, Error> {
+        let mut written = 0;
+        for byte in buf.iter() {
+            if !self.is_tx_full() {
+                // This is unsafe because we can transmit 7, 8 or 9 bits but the
+                // interface can't know what it's been configured for.
+                self.regs()
+                    .uartthr()
+                    .write(|w| unsafe { w.bits(*byte as u32) });
+                written += 1;
+            } else {
+                if written == 0 {
+                    // spec demands to block until at least one byte has been written.
+                    // `continue` would skip to the next byte rather than retrying
+                    // this one, so we busy-wait inline instead.
+                    while self.is_tx_full() {}
+                    self.regs()
+                        .uartthr()
+                        .write(|w| unsafe { w.bits(*byte as u32) });
+                    written += 1;
+                } else {
+                    break;
+                }
+            }
+        }
+        // Two invariants hold that LLVM cannot prove through value range analysis
+        // due to the busy-wait inner loop and early break:
+        //
+        // 1. n <= buf.len(): `written` is incremented at most once per element of
+        //    `buf.iter()`. Without this, `write_all`'s `buf = &buf[n..]` retains
+        //    a bounds-check panic. The `min` makes the assert mathematically sound.
+        //
+        // 2. n > 0 when buf is non-empty: the busy-wait guarantees at least one
+        //    byte is written before returning. Without this, `write_all`'s
+        //    `Ok(0) => panic!` branch is retained even though it is unreachable.
+        let n = written.min(buf.len());
+        unsafe {
+            core::hint::assert_unchecked(n <= buf.len());
+            core::hint::assert_unchecked(n > 0 || buf.is_empty());
+        }
+        Ok(n)
+    }
 }
 
 impl Read for Usart {
-	fn read(&mut self, out: &mut [u8]) -> Result<usize, Self::Error> {
-		if out.is_empty() {
-			return Ok(0);
-		}
+    fn read(&mut self, out: &mut [u8]) -> Result<usize, Self::Error> {
+        if out.is_empty() {
+            return Ok(0);
+        }
 
-		let mut count = 0;
-		// Block until at least one byte is available, then drain what is immediately readable.
-		while count == 0 {
-			match self.try_read_byte() {
-				Ok(byte) => {
-					out[count] = byte;
-					count += 1;
-				}
-				Err(nb::Error::WouldBlock) => continue,
-				Err(nb::Error::Other(e)) => return Err(e),
-			}
-		}
+        let mut count = 0;
+        // Block until at least one byte is available, then drain what is immediately readable.
+        while count == 0 {
+            match self.try_read_byte() {
+                Ok(byte) => {
+                    out[count] = byte;
+                    count += 1;
+                }
+                Err(nb::Error::WouldBlock) => continue,
+                Err(nb::Error::Other(e)) => return Err(e),
+            }
+        }
 
-		while count < out.len() {
-			match self.try_read_byte() {
-				Ok(byte) => {
-					out[count] = byte;
-					count += 1;
-				}
-				Err(nb::Error::WouldBlock) => break,
-				Err(nb::Error::Other(e)) => return Err(e),
-			}
-		}
+        while count < out.len() {
+            match self.try_read_byte() {
+                Ok(byte) => {
+                    out[count] = byte;
+                    count += 1;
+                }
+                Err(nb::Error::WouldBlock) => break,
+                Err(nb::Error::Other(e)) => return Err(e),
+            }
+        }
 
-		Ok(count)
-	}
+        Ok(count)
+    }
 }
 
 impl serial_nb::Write<u8> for Usart {
-	fn write(&mut self, word: u8) -> nb::Result<(), Self::Error> {
-		if !self.is_tx_full() {
-			// This is unsafe because we can transmit 7, 8 or 9 bits but the
-			// interface can't know what it's been configured for.
-			self.regs()
-				.uartthr()
-				.write(|w| unsafe { w.bits(word as u32) });
-			Ok(())
-		} else {
-			Err(nb::Error::WouldBlock)
-		}
-	}
+    fn write(&mut self, word: u8) -> nb::Result<(), Self::Error> {
+        if !self.is_tx_full() {
+            // This is unsafe because we can transmit 7, 8 or 9 bits but the
+            // interface can't know what it's been configured for.
+            self.regs()
+                .uartthr()
+                .write(|w| unsafe { w.bits(word as u32) });
+            Ok(())
+        } else {
+            Err(nb::Error::WouldBlock)
+        }
+    }
 
-	fn flush(&mut self) -> nb::Result<(), Self::Error> {
-		if self.is_tx_idle() {
-			Ok(())
-		} else {
-			Err(nb::Error::WouldBlock)
-		}
-	}
+    fn flush(&mut self) -> nb::Result<(), Self::Error> {
+        if self.is_tx_idle() {
+            Ok(())
+        } else {
+            Err(nb::Error::WouldBlock)
+        }
+    }
 }
 
 impl serial_nb::Read<u8> for Usart {
-	fn read(&mut self) -> nb::Result<u8, Self::Error> {
-		self.try_read_byte()
-	}
+    fn read(&mut self) -> nb::Result<u8, Self::Error> {
+        self.try_read_byte()
+    }
 }
 pub enum Rate {
-	Baud9600,
-	Baud19200,
-	MBaud1_5,
+    Baud9600,
+    Baud19200,
+    MBaud1_5,
 }
 
 impl Usart {
-	#[inline]
-	fn try_read_byte(&self) -> nb::Result<u8, Error> {
-		// Read LSR exactly once per byte so error bits and DR correspond to the same FIFO state.
-		let lsr = self.regs().uartlsr().read();
-		if !lsr.dr().bit() {
-			return Err(nb::Error::WouldBlock);
-		}
+    #[inline]
+    fn try_read_byte(&self) -> nb::Result<u8, Error> {
+        // Read LSR exactly once per byte so error bits and DR correspond to the same FIFO state.
+        let lsr = self.regs().uartlsr().read();
+        if !lsr.dr().bit() {
+            return Err(nb::Error::WouldBlock);
+        }
 
-		let byte = self.regs().uartrbr().read().bits() as u8;
-		if lsr.fe().bit_is_set() {
-			Err(nb::Error::Other(Error::Frame))
-		} else if lsr.pe().bit_is_set() {
-			Err(nb::Error::Other(Error::Parity))
-		} else if self.is_rx_noise_err() {
-			Err(nb::Error::Other(Error::Noise))
-		} else {
-			Ok(byte)
-		}
-	}
+        let byte = self.regs().uartrbr().read().bits() as u8;
+        if lsr.fe().bit_is_set() {
+            Err(nb::Error::Other(Error::Frame))
+        } else if lsr.pe().bit_is_set() {
+            Err(nb::Error::Other(Error::Parity))
+        } else if self.is_rx_noise_err() {
+            Err(nb::Error::Other(Error::Noise))
+        } else {
+            Ok(byte)
+        }
+    }
 
-	/// Create an uninitialized USART instance without writing to registers.
-	///
-	/// This const function creates a Usart struct pointing to the register block
-	/// but does not perform any hardware initialization. Use this for static
-	/// initializers and call `new()` or follow with hardware initialization.
-	///
-	/// # Safety
-	///
-	/// - `usart` must be a valid, non-null pointer to the AST1060 UART register block.
-	/// - The pointed register block must remain valid for the lifetime of this `Usart`.
-	pub const unsafe fn new_uninit(usart: *const device::uart::RegisterBlock) -> Self {
-		Self { usart }
-	}
+    /// Create an uninitialized USART instance without writing to registers.
+    ///
+    /// This const function creates a Usart struct pointing to the register block
+    /// but does not perform any hardware initialization. Use this for static
+    /// initializers and call `new()` or follow with hardware initialization.
+    ///
+    /// # Safety
+    ///
+    /// - `usart` must be a valid, non-null pointer to the AST1060 UART register block.
+    /// - The pointed register block must remain valid for the lifetime of this `Usart`.
+    pub const unsafe fn new_uninit(usart: *const device::uart::RegisterBlock) -> Self {
+        Self { usart }
+    }
 
-	/// Create a new USART instance from a raw register-block pointer.
-	///
-	/// Configures RX/TX FIFO, 8 byte RX trigger level, 1.5MBaud, 8n1, and
-	/// enables all interrupts.
-	///
-	/// # Safety
-	///
-	/// - `usart` must be a valid, non-null pointer to the AST1060 UART register block.
-	/// - The pointed register block must remain valid for the lifetime of this `Usart`.
-	/// - Caller must enforce global ownership/coordination so concurrent mutable access
-	///   does not occur through other code paths.
-	pub unsafe fn new(usart: *const device::uart::RegisterBlock) -> Self {
-		let this = Self {
-			usart,
-		};
+    /// Create a new USART instance from a raw register-block pointer.
+    ///
+    /// Configures RX/TX FIFO, 8 byte RX trigger level, 1.5MBaud, 8n1, and
+    /// enables all interrupts.
+    ///
+    /// # Safety
+    ///
+    /// - `usart` must be a valid, non-null pointer to the AST1060 UART register block.
+    /// - The pointed register block must remain valid for the lifetime of this `Usart`.
+    /// - Caller must enforce global ownership/coordination so concurrent mutable access
+    ///   does not occur through other code paths.
+    pub unsafe fn new(usart: *const device::uart::RegisterBlock) -> Self {
+        let this = Self { usart };
 
-		unsafe {
-			this.regs().uartfcr().write(|w| {
-				w.enbl_uartfifo().set_bit();
-				w.rx_fiforst().set_bit();
-				w.tx_fiforst().set_bit();
-				w.define_the_rxr_fifointtrigger_level().bits(0b10)
-			});
-		}
+        unsafe {
+            this.regs().uartfcr().write(|w| {
+                w.enbl_uartfifo().set_bit();
+                w.rx_fiforst().set_bit();
+                w.tx_fiforst().set_bit();
+                w.define_the_rxr_fifointtrigger_level().bits(0b10)
+            });
+        }
 
-		this
-			.set_rate(Rate::MBaud1_5)
-			.set_8n1()
-			.interrupt_enable()
-	}
+        this.set_rate(Rate::MBaud1_5).set_8n1().interrupt_enable()
+    }
 
-	#[inline]
-	fn regs(&self) -> &device::uart::RegisterBlock {
-		// SAFETY: `Usart` construction is `unsafe`, so caller upholds pointer validity,
-		// non-nullness, and aliasing/ownership requirements.
-		unsafe { &*self.usart }
-	}
+    #[inline]
+    fn regs(&self) -> &device::uart::RegisterBlock {
+        // SAFETY: `Usart` construction is `unsafe`, so caller upholds pointer validity,
+        // non-nullness, and aliasing/ownership requirements.
+        unsafe { &*self.usart }
+    }
 
-	/// Set the baud rate
-	///
-	/// These baud rates assume that the uart clock is set to 24Mhz.
-	pub fn set_rate(self, rate: Rate) -> Self {
-		// These baud rates assume that the uart clock is set to 24Mhz.
+    /// Set the baud rate
+    ///
+    /// These baud rates assume that the uart clock is set to 24Mhz.
+    pub fn set_rate(self, rate: Rate) -> Self {
+        // These baud rates assume that the uart clock is set to 24Mhz.
 
-		// Enable DLAB to access divisor latch registers
-		self.regs().uartlcr().modify(|_, w| w.dlab().set_bit());
+        // Enable DLAB to access divisor latch registers
+        self.regs().uartlcr().modify(|_, w| w.dlab().set_bit());
 
-		// Divisor = 24M / (13 * 16 * Baud Rate)
-		match rate {
-			Rate::Baud9600 => {
-				self.regs().uartdlh().write(|w| unsafe { w.bits(0) });
-				self.regs().uartdll().write(|w| unsafe { w.bits(12) });
-			}
-			Rate::Baud19200 => {
-				self.regs().uartdlh().write(|w| unsafe { w.bits(0) });
-				self.regs().uartdll().write(|w| unsafe { w.bits(6) });
-			}
-			Rate::MBaud1_5 => {
-				self.regs().uartdlh().write(|w| unsafe { w.bits(0) });
-				self.regs().uartdll().write(|w| unsafe { w.bits(1) });
-			}
-		}
-		// Disable DLAB to access other registers
-		self.regs().uartlcr().modify(|_, w| w.dlab().clear_bit());
+        // Divisor = 24M / (13 * 16 * Baud Rate)
+        match rate {
+            Rate::Baud9600 => {
+                self.regs().uartdlh().write(|w| unsafe { w.bits(0) });
+                self.regs().uartdll().write(|w| unsafe { w.bits(12) });
+            }
+            Rate::Baud19200 => {
+                self.regs().uartdlh().write(|w| unsafe { w.bits(0) });
+                self.regs().uartdll().write(|w| unsafe { w.bits(6) });
+            }
+            Rate::MBaud1_5 => {
+                self.regs().uartdlh().write(|w| unsafe { w.bits(0) });
+                self.regs().uartdll().write(|w| unsafe { w.bits(1) });
+            }
+        }
+        // Disable DLAB to access other registers
+        self.regs().uartlcr().modify(|_, w| w.dlab().clear_bit());
 
-		self
-	}
+        self
+    }
 
-	/// Enable all interrupts
-	///
-	/// - Modem Status Interrupt
-	/// - Receiver Line Status Interrupt
-	/// - Transmitter Holding Register Empty Interrupt
-	/// - Received Data Available Interrupt
-	pub fn interrupt_enable(self) -> Self {
-		self.regs().uartier().write(|w| {
-			w.erbfi().set_bit(); // Enable Received Data Available Interrupt
-			w.etbei().set_bit(); // Enable Transmitter Holding Register Empty Interrupt
-			w.elsi().set_bit(); // Enable Receiver Line Status Interrupt
-			w.edssi().set_bit(); // Enable Modem Status Interrupt
-			w
-		});
+    /// Enable all interrupts
+    ///
+    /// - Modem Status Interrupt
+    /// - Receiver Line Status Interrupt
+    /// - Transmitter Holding Register Empty Interrupt
+    /// - Received Data Available Interrupt
+    pub fn interrupt_enable(self) -> Self {
+        self.regs().uartier().write(|w| {
+            w.erbfi().set_bit(); // Enable Received Data Available Interrupt
+            w.etbei().set_bit(); // Enable Transmitter Holding Register Empty Interrupt
+            w.elsi().set_bit(); // Enable Receiver Line Status Interrupt
+            w.edssi().set_bit(); // Enable Modem Status Interrupt
+            w
+        });
 
-		self
-	}
+        self
+    }
 
-	/// Set the Receiver FIFO Interrupt trigger level
-	pub fn set_rx_fifo_trigger_level(&self, level: FifoTriggerLevel) {
-		unsafe {
-			self.regs().uartfcr().modify(|_, w| {
-				w.define_the_rxr_fifointtrigger_level().bits(level as u8)
-			});
-		}
-	}
+    /// Set the Receiver FIFO Interrupt trigger level
+    pub fn set_rx_fifo_trigger_level(&self, level: FifoTriggerLevel) {
+        unsafe {
+            self.regs()
+                .uartfcr()
+                .modify(|_, w| w.define_the_rxr_fifointtrigger_level().bits(level as u8));
+        }
+    }
 
-	pub fn set_8n1(self) -> Self {
-		self
-	}
+    pub fn set_8n1(self) -> Self {
+        self
+    }
 
-	pub fn is_tx_full(&self) -> bool {
-		!self.regs().uartlsr().read().thre().bit()
-	}
+    pub fn is_tx_full(&self) -> bool {
+        !self.regs().uartlsr().read().thre().bit()
+    }
 
-	pub fn is_rx_empty(&self) -> bool {
-		!self.regs().uartlsr().read().dr().bit()
-	}
+    pub fn is_rx_empty(&self) -> bool {
+        !self.regs().uartlsr().read().dr().bit()
+    }
 
-	pub fn is_rx_frame_err(&self) -> bool {
-		self.regs().uartlsr().read().fe().bit_is_set()
-	}
+    pub fn is_rx_frame_err(&self) -> bool {
+        self.regs().uartlsr().read().fe().bit_is_set()
+    }
 
-	pub fn is_rx_parity_err(&self) -> bool {
-		self.regs().uartlsr().read().pe().bit_is_set()
-	}
+    pub fn is_rx_parity_err(&self) -> bool {
+        self.regs().uartlsr().read().pe().bit_is_set()
+    }
 
-	pub fn is_rx_noise_err(&self) -> bool {
-		// self.usart.uartlsr().read().rxnoise().bit()
-		false
-	}
+    pub fn is_rx_noise_err(&self) -> bool {
+        // self.usart.uartlsr().read().rxnoise().bit()
+        false
+    }
 
-	pub fn read_interrupt_status(&self) -> InterruptDecoding {
-		InterruptDecoding::try_from(
-			self.regs().uartiir().read().intdecoding_table().bits() & 0x07,
-		)
-		.unwrap_or(InterruptDecoding::Unknown)
-	}
+    pub fn read_interrupt_status(&self) -> InterruptDecoding {
+        InterruptDecoding::try_from(self.regs().uartiir().read().intdecoding_table().bits() & 0x07)
+            .unwrap_or(InterruptDecoding::Unknown)
+    }
 
-	pub fn read_line_status(&self) -> LineStatus {
-		let status = self.regs().uartlsr().read().bits() as u8;
-		LineStatus::from_bits_truncate(status)
-	}
+    pub fn read_line_status(&self) -> LineStatus {
+        let status = self.regs().uartlsr().read().bits() as u8;
+        LineStatus::from_bits_truncate(status)
+    }
 
-	/// Non-blocking drain of the RX FIFO into `out`.
-	///
-	/// Copies as many bytes as are immediately available (up to `out.len()`)
-	/// and returns the count.  Returns `0` if the FIFO is empty; the caller
-	/// should arm the `RX_DATA_AVAILABLE` interrupt and retry.
-	pub fn try_read_available(&self, out: &mut [u8]) -> usize {
-		let mut count = 0;
-		while count < out.len() {
-			match self.try_read_byte() {
-				Ok(byte) => {
-					out[count] = byte;
-					count += 1;
-				}
-				Err(nb::Error::WouldBlock) => break,
-				Err(nb::Error::Other(_)) => break,
-			}
-		}
-		count
-	}
+    /// Non-blocking drain of the RX FIFO into `out`.
+    ///
+    /// Copies as many bytes as are immediately available (up to `out.len()`)
+    /// and returns the count.  Returns `0` if the FIFO is empty; the caller
+    /// should arm the `RX_DATA_AVAILABLE` interrupt and retry.
+    pub fn try_read_available(&self, out: &mut [u8]) -> usize {
+        let mut count = 0;
+        while count < out.len() {
+            match self.try_read_byte() {
+                Ok(byte) => {
+                    out[count] = byte;
+                    count += 1;
+                }
+                Err(nb::Error::WouldBlock) => break,
+                Err(nb::Error::Other(_)) => break,
+            }
+        }
+        count
+    }
 
-	pub fn read_modem_status(&self) -> u8 {
-		self.regs().uartmsr().read().bits() as u8
-	}
+    pub fn read_modem_status(&self) -> u8 {
+        self.regs().uartmsr().read().bits() as u8
+    }
 
-	pub fn is_tx_idle(&self) -> bool {
-		self.regs().uartlsr().read().txter_empty().bit_is_set()
-	}
+    pub fn is_tx_idle(&self) -> bool {
+        self.regs().uartlsr().read().txter_empty().bit_is_set()
+    }
 
-	/// Enables the TX idle interrupt (ETBEI)
-	pub fn set_tx_idle_interrupt(&self) {
-		self.regs().uartier().modify(|_, w| w.etbei().set_bit());
-	}
+    /// Enables the TX idle interrupt (ETBEI)
+    pub fn set_tx_idle_interrupt(&self) {
+        self.regs().uartier().modify(|_, w| w.etbei().set_bit());
+    }
 
-	/// Disables the TX idle interrupt (ETBEI)
-	pub fn clear_tx_idle_interrupt(&self) {
-		// self.regs().uartier().write(|w| w.etbei().clear_bit());
-		self.regs().uartier().modify(|_, w| w.etbei().clear_bit());
-	}
+    /// Disables the TX idle interrupt (ETBEI)
+    pub fn clear_tx_idle_interrupt(&self) {
+        // self.regs().uartier().write(|w| w.etbei().clear_bit());
+        self.regs().uartier().modify(|_, w| w.etbei().clear_bit());
+    }
 
-	/// Enables the RX idle interrupt (ERBFI)
-	pub fn set_rx_data_available_interrupt(&self) {
-		self.regs().uartier().modify(|_, w| w.erbfi().set_bit());
-	}
+    /// Enables the RX idle interrupt (ERBFI)
+    pub fn set_rx_data_available_interrupt(&self) {
+        self.regs().uartier().modify(|_, w| w.erbfi().set_bit());
+    }
 
-	/// Disables the RX idle interrupt (ERBFI)
-	pub fn clear_rx_data_available_interrupt(&self) {
-		self.regs().uartier().modify(|_, w| w.erbfi().clear_bit());
-	}
+    /// Disables the RX idle interrupt (ERBFI)
+    pub fn clear_rx_data_available_interrupt(&self) {
+        self.regs().uartier().modify(|_, w| w.erbfi().clear_bit());
+    }
 
-	/// Disables all four IER interrupt sources at once.
-	pub fn disable_all_interrupts(&self) {
-		self.regs().uartier().write(|w| w);
-	}
+    /// Disables all four IER interrupt sources at once.
+    pub fn disable_all_interrupts(&self) {
+        self.regs().uartier().write(|w| w);
+    }
 
-	/// Reads and discards MSR to clear the delta bits (DCTS/DDSR/TERI/DDCD)
-	/// that would otherwise keep retriggering EDSSI after enable.
-	pub fn drain_modem_status(&self) {
-		let _ = self.regs().uartmsr().read().bits();
-	}
+    /// Reads and discards MSR to clear the delta bits (DCTS/DDSR/TERI/DDCD)
+    /// that would otherwise keep retriggering EDSSI after enable.
+    pub fn drain_modem_status(&self) {
+        let _ = self.regs().uartmsr().read().bits();
+    }
 }
diff --git a/target/ast10x0/tests/interrupts/kernel/target.rs b/target/ast10x0/tests/interrupts/kernel/target.rs
index 0616415..d7b6a3a 100644
--- a/target/ast10x0/tests/interrupts/kernel/target.rs
+++ b/target/ast10x0/tests/interrupts/kernel/target.rs
@@ -8,7 +8,7 @@
 use codegen as _;
 use console_backend::console_backend_write_all;
 use entry as _;
-use target_common::{TargetInterface, declare_target};
+use target_common::{declare_target, TargetInterface};
 
 pub struct Target {}
 
diff --git a/target/ast10x0/tests/interrupts/user/target.rs b/target/ast10x0/tests/interrupts/user/target.rs
index 92cb3fc..ebf027e 100644
--- a/target/ast10x0/tests/interrupts/user/target.rs
+++ b/target/ast10x0/tests/interrupts/user/target.rs
@@ -6,7 +6,7 @@
 
 use console_backend::console_backend_write_all;
 use entry as _;
-use target_common::{TargetInterface, declare_target};
+use target_common::{declare_target, TargetInterface};
 
 pub struct Target {}
 
@@ -21,7 +21,11 @@
 
     fn shutdown(code: u32) -> ! {
         pw_log::info!("Shutting down with code {}", code as u32);
-        let sentinel: &[u8] = if code == 0 { b"TEST_RESULT:PASS\n" } else { b"TEST_RESULT:FAIL\n" };
+        let sentinel: &[u8] = if code == 0 {
+            b"TEST_RESULT:PASS\n"
+        } else {
+            b"TEST_RESULT:FAIL\n"
+        };
         let _ = console_backend_write_all(sentinel);
         #[expect(clippy::empty_loop)]
         loop {}
diff --git a/target/ast10x0/tests/ipc/user/target.rs b/target/ast10x0/tests/ipc/user/target.rs
index d386f54..68b9571 100644
--- a/target/ast10x0/tests/ipc/user/target.rs
+++ b/target/ast10x0/tests/ipc/user/target.rs
@@ -5,8 +5,8 @@
 #![no_main]
 
 use console_backend::console_backend_write_all;
-use target_common::{TargetInterface, declare_target};
 use entry as _;
+use target_common::{declare_target, TargetInterface};
 
 pub struct Target {}
 
@@ -21,7 +21,11 @@
 
     fn shutdown(code: u32) -> ! {
         pw_log::info!("Shutting down with code {}", code as u32);
-        let sentinel: &[u8] = if code == 0 { b"TEST_RESULT:PASS\n" } else { b"TEST_RESULT:FAIL\n" };
+        let sentinel: &[u8] = if code == 0 {
+            b"TEST_RESULT:PASS\n"
+        } else {
+            b"TEST_RESULT:FAIL\n"
+        };
         let _ = console_backend_write_all(sentinel);
         #[expect(clippy::empty_loop)]
         loop {}
diff --git a/target/ast10x0/tests/peripherals/i2c/i2c_init/target.rs b/target/ast10x0/tests/peripherals/i2c/i2c_init/target.rs
index 27d6d44..6b819be 100644
--- a/target/ast10x0/tests/peripherals/i2c/i2c_init/target.rs
+++ b/target/ast10x0/tests/peripherals/i2c/i2c_init/target.rs
@@ -12,7 +12,7 @@
 use codegen as _;
 use console_backend::console_backend_write_all;
 use entry as _;
-use target_common::{TargetInterface, declare_target};
+use target_common::{declare_target, TargetInterface};
 
 pub struct Target {}
 
@@ -391,11 +391,7 @@
         }
         Err(error) => {
             let error_name = i2c_error_str(error);
-            pw_log::error!(
-                "{} mode init failed: {}",
-                name as &str,
-                error_name as &str
-            );
+            pw_log::error!("{} mode init failed: {}", name as &str, error_name as &str);
             dump_i2c1_registers(name, &config);
             Err(ERR_INIT_FAILED)
         }
@@ -430,11 +426,7 @@
         }
         Err(error) => {
             let error_name = i2c_error_str(error);
-            pw_log::error!(
-                "{} mode init failed: {}",
-                name as &str,
-                error_name as &str
-            );
+            pw_log::error!("{} mode init failed: {}", name as &str, error_name as &str);
             dump_i2c1_registers(name, &config);
             Err(ERR_INIT_FAILED)
         }
diff --git a/target/ast10x0/tests/peripherals/i2c/i2c_irq/slave_target.rs b/target/ast10x0/tests/peripherals/i2c/i2c_irq/slave_target.rs
index c187718..2ee63a1 100644
--- a/target/ast10x0/tests/peripherals/i2c/i2c_irq/slave_target.rs
+++ b/target/ast10x0/tests/peripherals/i2c/i2c_irq/slave_target.rs
@@ -21,7 +21,7 @@
 use codegen as _;
 use console_backend::console_backend_write_all;
 use entry as _;
-use target_common::{TargetInterface, declare_target};
+use target_common::{declare_target, TargetInterface};
 
 pub struct Target {}
 
@@ -41,10 +41,7 @@
 }
 
 /// Poll handle_slave_interrupt until an event arrives or the budget runs out.
-fn wait_event<Y: FnMut(u32)>(
-    slave: &mut Ast1060I2c<'_, Y>,
-    max_polls: u32,
-) -> Option<SlaveEvent> {
+fn wait_event<Y: FnMut(u32)>(slave: &mut Ast1060I2c<'_, Y>, max_polls: u32) -> Option<SlaveEvent> {
     for _ in 0..max_polls {
         if let Some(ev) = slave.handle_slave_interrupt() {
             return Some(ev);
@@ -56,7 +53,10 @@
 
 fn run_slave() -> Result<(), &'static str> {
     pw_log::info!("=== I2C slave IRQ test: SLAVE (device B) ===");
-    pw_log::info!("Listening at addr 0x{:02x}. Start master (device A) now.", SLAVE_ADDR as u32);
+    pw_log::info!(
+        "Listening at addr 0x{:02x}. Start master (device A) now.",
+        SLAVE_ADDR as u32
+    );
 
     let board = Ast10x0Board::new(Ast10x0BoardDescriptor {
         pinctrl_groups: &[pinctrl::PINCTRL_I2C2],
@@ -87,11 +87,17 @@
     match wait_event(&mut slave, 50_000_000) {
         Some(SlaveEvent::DataReceived { len }) => {
             if len != EXPECTED_WRITE.len() {
-                pw_log::error!("test 1: DataReceived len={} expected={}", len as u32, EXPECTED_WRITE.len() as u32);
+                pw_log::error!(
+                    "test 1: DataReceived len={} expected={}",
+                    len as u32,
+                    EXPECTED_WRITE.len() as u32
+                );
                 return Err("test 1: DataReceived len mismatch");
             }
             let mut buf = [0u8; EXPECTED_WRITE.len()];
-            slave.slave_read(&mut buf).map_err(|_| "test 1: slave_read failed")?;
+            slave
+                .slave_read(&mut buf)
+                .map_err(|_| "test 1: slave_read failed")?;
             if buf != *EXPECTED_WRITE {
                 return Err("test 1: DataReceived payload mismatch");
             }
diff --git a/target/ast10x0/tests/peripherals/i2c/i2c_irq/target.rs b/target/ast10x0/tests/peripherals/i2c/i2c_irq/target.rs
index 238fb56..33439ed 100644
--- a/target/ast10x0/tests/peripherals/i2c/i2c_irq/target.rs
+++ b/target/ast10x0/tests/peripherals/i2c/i2c_irq/target.rs
@@ -25,7 +25,7 @@
 use codegen as _;
 use console_backend::console_backend_write_all;
 use entry as _;
-use target_common::{TargetInterface, declare_target};
+use target_common::{declare_target, TargetInterface};
 
 pub struct Target {}
 
@@ -68,9 +68,9 @@
     // Test 1: master write → slave DataReceived
     // ------------------------------------------------------------------
     pw_log::info!("Test 1: master write");
-    master
-        .write(SLAVE_ADDR, WRITE_PAYLOAD)
-        .map_err(|_| "test 1: master write failed (slave not responding — check J15 and slave firmware)")?;
+    master.write(SLAVE_ADDR, WRITE_PAYLOAD).map_err(|_| {
+        "test 1: master write failed (slave not responding — check J15 and slave firmware)"
+    })?;
     pw_log::info!("Test 1 passed");
 
     // ------------------------------------------------------------------
diff --git a/target/ast10x0/tests/smc/dma_irq/target.rs b/target/ast10x0/tests/smc/dma_irq/target.rs
index 6828cb1..0f311f3 100644
--- a/target/ast10x0/tests/smc/dma_irq/target.rs
+++ b/target/ast10x0/tests/smc/dma_irq/target.rs
@@ -22,8 +22,8 @@
 use core::task::Poll;
 
 use arch_arm_cortex_m::Arch;
-use ast10x0_peripherals::scu::ScuRegisters;
 use ast10x0_peripherals::scu::pinctrl::PINCTRL_FMC_QUAD;
+use ast10x0_peripherals::scu::ScuRegisters;
 use ast10x0_peripherals::smc::{
     ChipSelect, FlashConfig, SmcConfig, SmcController, SmcError, SmcInterrupt, SmcTopology,
     UninitSmc,
@@ -32,7 +32,7 @@
 use console_backend::console_backend_write_all;
 use kernel::Arch as KernelArch;
 use kernel::Kernel;
-use target_common::{TargetInterface, declare_target};
+use target_common::{declare_target, TargetInterface};
 use {console_backend as _, entry as _};
 
 #[path = "../target_debug.rs"]
diff --git a/target/ast10x0/tests/stress/ipc/user/target.rs b/target/ast10x0/tests/stress/ipc/user/target.rs
index c5a38b9..fd56688 100644
--- a/target/ast10x0/tests/stress/ipc/user/target.rs
+++ b/target/ast10x0/tests/stress/ipc/user/target.rs
@@ -6,7 +6,7 @@
 
 use console_backend::console_backend_write_all;
 use entry as _;
-use target_common::{TargetInterface, declare_target};
+use target_common::{declare_target, TargetInterface};
 
 pub struct Target {}
 
diff --git a/target/ast10x0/tests/stress/mutex/kernel/target.rs b/target/ast10x0/tests/stress/mutex/kernel/target.rs
index 1d84fb9..d8b334f 100644
--- a/target/ast10x0/tests/stress/mutex/kernel/target.rs
+++ b/target/ast10x0/tests/stress/mutex/kernel/target.rs
@@ -7,7 +7,7 @@
 use arch_arm_cortex_m::Arch;
 use console_backend::console_backend_write_all;
 use entry as _;
-use target_common::{TargetInterface, declare_target};
+use target_common::{declare_target, TargetInterface};
 
 pub struct Target {}
 
diff --git a/target/ast10x0/tests/stress/process_termination/user/target.rs b/target/ast10x0/tests/stress/process_termination/user/target.rs
index 43af741..66657f1 100644
--- a/target/ast10x0/tests/stress/process_termination/user/target.rs
+++ b/target/ast10x0/tests/stress/process_termination/user/target.rs
@@ -6,7 +6,7 @@
 
 use console_backend::console_backend_write_all;
 use entry as _;
-use target_common::{TargetInterface, declare_target};
+use target_common::{declare_target, TargetInterface};
 
 pub struct Target {}
 
diff --git a/target/ast10x0/tests/threads/kernel/target.rs b/target/ast10x0/tests/threads/kernel/target.rs
index d9376d9..b90e8a9 100644
--- a/target/ast10x0/tests/threads/kernel/target.rs
+++ b/target/ast10x0/tests/threads/kernel/target.rs
@@ -8,8 +8,8 @@
 
 use arch_arm_cortex_m::Arch;
 use console_backend::console_backend_write_all;
-use target_common::{TargetInterface, declare_target};
 use entry as _;
+use target_common::{declare_target, TargetInterface};
 
 pub struct Target {}
 
diff --git a/target/ast10x0/tests/unittest_runner/target.rs b/target/ast10x0/tests/unittest_runner/target.rs
index 176eeca..dfe8fee 100644
--- a/target/ast10x0/tests/unittest_runner/target.rs
+++ b/target/ast10x0/tests/unittest_runner/target.rs
@@ -5,7 +5,7 @@
 #![no_main]
 
 use console_backend::console_backend_write_all;
-use target_common::{TargetInterface, declare_target};
+use target_common::{declare_target, TargetInterface};
 use unittest_core::TestsResult;
 use {entry as _, integration_tests as _};
 
diff --git a/target/ast10x0/tests/usart/target.rs b/target/ast10x0/tests/usart/target.rs
index 485021f..2ab9dc6 100644
--- a/target/ast10x0/tests/usart/target.rs
+++ b/target/ast10x0/tests/usart/target.rs
@@ -9,8 +9,8 @@
 #![no_std]
 #![no_main]
 
-use cortex_m_semihosting::debug::{EXIT_FAILURE, EXIT_SUCCESS, exit};
-use target_common::{TargetInterface, declare_target};
+use cortex_m_semihosting::debug::{exit, EXIT_FAILURE, EXIT_SUCCESS};
+use target_common::{declare_target, TargetInterface};
 use {console_backend as _, entry as _};
 
 pub struct Target {}
@@ -25,7 +25,11 @@
     }
 
     fn shutdown(code: u32) -> ! {
-        let status = if code == 0 { EXIT_SUCCESS } else { EXIT_FAILURE };
+        let status = if code == 0 {
+            EXIT_SUCCESS
+        } else {
+            EXIT_FAILURE
+        };
         exit(status);
         #[expect(clippy::empty_loop)]
         loop {}
diff --git a/target/earlgrey/drivers/gpio.rs b/target/earlgrey/drivers/gpio.rs
index 568052d..2c9c4c3 100644
--- a/target/earlgrey/drivers/gpio.rs
+++ b/target/earlgrey/drivers/gpio.rs
@@ -3,8 +3,8 @@
 
 #![no_std]
 
-use earlgrey_pinmux::{EarlGreyPinmux, Pad, PadConfig, Pull};
 use core::fmt::Debug;
+use earlgrey_pinmux::{EarlGreyPinmux, Pad, PadConfig, Pull};
 use openprot_hal_blocking::gpio_port::{
     EdgeSensitivity, GpioError, GpioErrorKind, GpioErrorType, GpioInterrupt, GpioPort,
     InterruptOperation, PinMask,
@@ -34,9 +34,9 @@
 
 impl EarlGreyGpio {
     /// Create a new instance of the EarlGrey GPIO driver using real MMIO.
-    /// 
+    ///
     /// # Safety
-    /// 
+    ///
     /// The caller must ensure that they have exclusive access to the GPIO and Pinmux peripherals.
     pub unsafe fn new() -> Self {
         Self {
@@ -46,7 +46,7 @@
     }
 
     /// Read current state of output pins.
-    /// 
+    ///
     /// This is a target-specific extension not yet in the core HAL.
     pub fn read_output(&self) -> Result<GpioMask, EarlGreyGpioError> {
         Ok(GpioMask(self.registers.direct_out().read()))
@@ -97,10 +97,38 @@
 
 #[derive(Debug, Copy, Clone, Eq, PartialEq)]
 pub enum GpioPin {
-    Pin0 = 0, Pin1 = 1, Pin2 = 2, Pin3 = 3, Pin4 = 4, Pin5 = 5, Pin6 = 6, Pin7 = 7,
-    Pin8 = 8, Pin9 = 9, Pin10 = 10, Pin11 = 11, Pin12 = 12, Pin13 = 13, Pin14 = 14, Pin15 = 15,
-    Pin16 = 16, Pin17 = 17, Pin18 = 18, Pin19 = 19, Pin20 = 20, Pin21 = 21, Pin22 = 22, Pin23 = 23,
-    Pin24 = 24, Pin25 = 25, Pin26 = 26, Pin27 = 27, Pin28 = 28, Pin29 = 29, Pin30 = 30, Pin31 = 31,
+    Pin0 = 0,
+    Pin1 = 1,
+    Pin2 = 2,
+    Pin3 = 3,
+    Pin4 = 4,
+    Pin5 = 5,
+    Pin6 = 6,
+    Pin7 = 7,
+    Pin8 = 8,
+    Pin9 = 9,
+    Pin10 = 10,
+    Pin11 = 11,
+    Pin12 = 12,
+    Pin13 = 13,
+    Pin14 = 14,
+    Pin15 = 15,
+    Pin16 = 16,
+    Pin17 = 17,
+    Pin18 = 18,
+    Pin19 = 19,
+    Pin20 = 20,
+    Pin21 = 21,
+    Pin22 = 22,
+    Pin23 = 23,
+    Pin24 = 24,
+    Pin25 = 25,
+    Pin26 = 26,
+    Pin27 = 27,
+    Pin28 = 28,
+    Pin29 = 29,
+    Pin30 = 30,
+    Pin31 = 31,
 }
 
 impl From<GpioPin> for GpioMask {
@@ -116,7 +144,7 @@
     pub is_output: bool,
     /// Whether to enable the 16-cycle input filter.
     pub input_filter: bool,
-    /// Optional pad to connect these pins to. 
+    /// Optional pad to connect these pins to.
     /// If multiple pins are specified in the mask, this should be None.
     pub pad: Option<Pad>,
     /// Pull-up/down configuration for the pad.
@@ -175,8 +203,8 @@
         // Handle Pinmux and Pad attributes
         if let Some(pad) = config.pad {
             let pin_idx = pins.0.trailing_zeros() as usize;
-            
-            // DIO pads are dedicated and don't require routing, 
+
+            // DIO pads are dedicated and don't require routing,
             // only attribute configuration.
             if !pad.is_dio() {
                 if config.is_input {
@@ -187,10 +215,13 @@
                 }
             }
 
-            self.pinmux.configure_pad(pad, &PadConfig {
-                pull: config.pull,
-                ..Default::default()
-            });
+            self.pinmux.configure_pad(
+                pad,
+                &PadConfig {
+                    pull: config.pull,
+                    ..Default::default()
+                },
+            );
         }
 
         Ok(())
@@ -207,9 +238,9 @@
         let lower_mask = set_lower | reset_lower;
 
         if lower_mask != 0 {
-            self.registers.masked_out_lower().write(|w| {
-                w.mask(lower_mask).data(set_lower)
-            });
+            self.registers
+                .masked_out_lower()
+                .write(|w| w.mask(lower_mask).data(set_lower));
         }
 
         // Process upper 16 bits
@@ -218,9 +249,9 @@
         let upper_mask = set_upper | reset_upper;
 
         if upper_mask != 0 {
-            self.registers.masked_out_upper().write(|w| {
-                w.mask(upper_mask).data(set_upper)
-            });
+            self.registers
+                .masked_out_upper()
+                .write(|w| w.mask(upper_mask).data(set_upper));
         }
 
         Ok(())
@@ -248,8 +279,12 @@
     ) -> Result<(), Self::Error> {
         // Clear all sensitivity settings for these pins first
         self.registers.intr_ctrl_en_rising().modify(|w| w & !mask.0);
-        self.registers.intr_ctrl_en_falling().modify(|w| w & !mask.0);
-        self.registers.intr_ctrl_en_lvlhigh().modify(|w| w & !mask.0);
+        self.registers
+            .intr_ctrl_en_falling()
+            .modify(|w| w & !mask.0);
+        self.registers
+            .intr_ctrl_en_lvlhigh()
+            .modify(|w| w & !mask.0);
         self.registers.intr_ctrl_en_lvllow().modify(|w| w & !mask.0);
 
         // Apply new sensitivity
diff --git a/target/earlgrey/drivers/pinmux.rs b/target/earlgrey/drivers/pinmux.rs
index 0bbe89a..be9fe7a 100644
--- a/target/earlgrey/drivers/pinmux.rs
+++ b/target/earlgrey/drivers/pinmux.rs
@@ -9,16 +9,70 @@
 #[repr(u32)]
 pub enum Pad {
     // MIO Pads (0-46)
-    IOA0 = 0, IOA1 = 1, IOA2 = 2, IOA3 = 3, IOA4 = 4, IOA5 = 5, IOA6 = 6, IOA7 = 7, IOA8 = 8,
-    IOB0 = 9, IOB1 = 10, IOB2 = 11, IOB3 = 12, IOB4 = 13, IOB5 = 14, IOB6 = 15, IOB7 = 16, IOB8 = 17,
-    IOB9 = 18, IOB10 = 19, IOB11 = 20, IOB12 = 21,
-    IOC0 = 22, IOC1 = 23, IOC2 = 24, IOC3 = 25, IOC4 = 26, IOC5 = 27, IOC6 = 28, IOC7 = 29, IOC8 = 30,
-    IOC9 = 31, IOC10 = 32, IOC11 = 33, IOC12 = 34,
-    IOR0 = 35, IOR1 = 36, IOR2 = 37, IOR3 = 38, IOR4 = 39, IOR5 = 40, IOR6 = 41, IOR7 = 42,
-    IOR10 = 43, IOR11 = 44, IOR12 = 45, IOR13 = 46,
+    IOA0 = 0,
+    IOA1 = 1,
+    IOA2 = 2,
+    IOA3 = 3,
+    IOA4 = 4,
+    IOA5 = 5,
+    IOA6 = 6,
+    IOA7 = 7,
+    IOA8 = 8,
+    IOB0 = 9,
+    IOB1 = 10,
+    IOB2 = 11,
+    IOB3 = 12,
+    IOB4 = 13,
+    IOB5 = 14,
+    IOB6 = 15,
+    IOB7 = 16,
+    IOB8 = 17,
+    IOB9 = 18,
+    IOB10 = 19,
+    IOB11 = 20,
+    IOB12 = 21,
+    IOC0 = 22,
+    IOC1 = 23,
+    IOC2 = 24,
+    IOC3 = 25,
+    IOC4 = 26,
+    IOC5 = 27,
+    IOC6 = 28,
+    IOC7 = 29,
+    IOC8 = 30,
+    IOC9 = 31,
+    IOC10 = 32,
+    IOC11 = 33,
+    IOC12 = 34,
+    IOR0 = 35,
+    IOR1 = 36,
+    IOR2 = 37,
+    IOR3 = 38,
+    IOR4 = 39,
+    IOR5 = 40,
+    IOR6 = 41,
+    IOR7 = 42,
+    IOR10 = 43,
+    IOR11 = 44,
+    IOR12 = 45,
+    IOR13 = 46,
     // DIO Pads (47-62)
-    DIO0 = 47, DIO1 = 48, DIO2 = 49, DIO3 = 50, DIO4 = 51, DIO5 = 52, DIO6 = 53, DIO7 = 54,
-    DIO8 = 55, DIO9 = 56, DIO10 = 57, DIO11 = 58, DIO12 = 59, DIO13 = 60, DIO14 = 61, DIO15 = 62,
+    DIO0 = 47,
+    DIO1 = 48,
+    DIO2 = 49,
+    DIO3 = 50,
+    DIO4 = 51,
+    DIO5 = 52,
+    DIO6 = 53,
+    DIO7 = 54,
+    DIO8 = 55,
+    DIO9 = 56,
+    DIO10 = 57,
+    DIO11 = 58,
+    DIO12 = 59,
+    DIO13 = 60,
+    DIO14 = 61,
+    DIO15 = 62,
 }
 
 impl Pad {
@@ -65,9 +119,9 @@
 
 impl EarlGreyPinmux {
     /// Create a new instance of the EarlGrey Pinmux driver.
-    /// 
+    ///
     /// # Safety
-    /// 
+    ///
     /// The caller must ensure that they have exclusive access to the Pinmux peripheral.
     pub unsafe fn new() -> Self {
         Self {
@@ -79,7 +133,8 @@
     pub fn connect_input(&mut self, periph_input_idx: usize, pad: Pad) {
         // MIO pads start at index 2 in periph_insel (0=Low, 1=High)
         let periph_source = 2 + (pad as u32);
-        self.registers.mio_periph_insel()
+        self.registers
+            .mio_periph_insel()
             .at(periph_input_idx)
             .write(|w| w.in_(periph_source));
     }
@@ -88,42 +143,39 @@
     pub fn connect_output(&mut self, pad: Pad, periph_output_idx: usize) {
         // Peripheral outputs start at index 3 in outsel (0=Low, 1=High, 2=HighZ)
         let pad_source = 3 + (periph_output_idx as u32);
-        self.registers.mio_outsel()
+        self.registers
+            .mio_outsel()
             .at(pad as usize)
             .write(|w| w.out(pad_source));
     }
 
     pub fn configure_pad(&mut self, pad: Pad, config: &PadConfig) {
         if let Some(dio_idx) = pad.dio_index() {
-            self.registers.dio_pad_attr()
-                .at(dio_idx)
-                .modify(|w| {
-                    w.pull_en(config.pull != Pull::None)
-                        .pull_select(|w| {
-                            if config.pull == Pull::Up {
-                                w.pull_up()
-                            } else {
-                                w.pull_down()
-                            }
-                        })
-                        .od_en(config.open_drain)
-                        .invert(config.invert)
-                });
+            self.registers.dio_pad_attr().at(dio_idx).modify(|w| {
+                w.pull_en(config.pull != Pull::None)
+                    .pull_select(|w| {
+                        if config.pull == Pull::Up {
+                            w.pull_up()
+                        } else {
+                            w.pull_down()
+                        }
+                    })
+                    .od_en(config.open_drain)
+                    .invert(config.invert)
+            });
         } else {
-            self.registers.mio_pad_attr()
-                .at(pad as usize)
-                .modify(|w| {
-                    w.pull_en(config.pull != Pull::None)
-                        .pull_select(|w| {
-                            if config.pull == Pull::Up {
-                                w.pull_up()
-                            } else {
-                                w.pull_down()
-                            }
-                        })
-                        .od_en(config.open_drain)
-                        .invert(config.invert)
-                });
+            self.registers.mio_pad_attr().at(pad as usize).modify(|w| {
+                w.pull_en(config.pull != Pull::None)
+                    .pull_select(|w| {
+                        if config.pull == Pull::Up {
+                            w.pull_up()
+                        } else {
+                            w.pull_down()
+                        }
+                    })
+                    .od_en(config.open_drain)
+                    .invert(config.invert)
+            });
         }
     }
 }
diff --git a/target/earlgrey/tests/drivers/gpio/target.rs b/target/earlgrey/tests/drivers/gpio/target.rs
index 146669a..36a559e 100644
--- a/target/earlgrey/tests/drivers/gpio/target.rs
+++ b/target/earlgrey/tests/drivers/gpio/target.rs
@@ -3,7 +3,7 @@
 
 #![no_std]
 #![no_main]
-use target_common::{TargetInterface, declare_target};
+use target_common::{declare_target, TargetInterface};
 use {console_backend as _, entry as _};
 
 pub struct Target {}
diff --git a/target/earlgrey/tests/ipc/user/target.rs b/target/earlgrey/tests/ipc/user/target.rs
index d0532f2..44a1825 100644
--- a/target/earlgrey/tests/ipc/user/target.rs
+++ b/target/earlgrey/tests/ipc/user/target.rs
@@ -3,7 +3,7 @@
 
 #![no_std]
 #![no_main]
-use target_common::{TargetInterface, declare_target};
+use target_common::{declare_target, TargetInterface};
 use {console_backend as _, entry as _};
 
 pub struct Target {}
@@ -27,4 +27,3 @@
 }
 
 declare_target!(Target);
-
diff --git a/target/earlgrey/tests/uart/test_uart.rs b/target/earlgrey/tests/uart/test_uart.rs
index 2333700..eeef483 100644
--- a/target/earlgrey/tests/uart/test_uart.rs
+++ b/target/earlgrey/tests/uart/test_uart.rs
@@ -3,8 +3,8 @@
 
 #![no_std]
 #![no_main]
-use test_uart_codegen::handle;
 use pw_status::{Error, Result, StatusCode};
+use test_uart_codegen::handle;
 use userspace::syscall::Signals;
 use userspace::time::Instant;
 use userspace::{entry, syscall};
diff --git a/target/earlgrey/tests/uart/test_uart_listener.rs b/target/earlgrey/tests/uart/test_uart_listener.rs
index a013c7b..a94f3e5 100644
--- a/target/earlgrey/tests/uart/test_uart_listener.rs
+++ b/target/earlgrey/tests/uart/test_uart_listener.rs
@@ -3,8 +3,8 @@
 
 #![no_std]
 #![no_main]
-use test_uart_listener_codegen::{handle, signals};
 use pw_status::{Error, Result};
+use test_uart_listener_codegen::{handle, signals};
 use userspace::syscall::Signals;
 use userspace::time::Instant;
 use userspace::{entry, syscall};
diff --git a/third_party/caliptra/caliptra-mcu-sw/src/signer_main.rs b/third_party/caliptra/caliptra-mcu-sw/src/signer_main.rs
index f82184f..53954c9 100644
--- a/third_party/caliptra/caliptra-mcu-sw/src/signer_main.rs
+++ b/third_party/caliptra/caliptra-mcu-sw/src/signer_main.rs
@@ -82,7 +82,14 @@
     } else {
         0
     };
-    Ok((path, load_addr, staging_addr, image_id, exec_bit, component_id))
+    Ok((
+        path,
+        load_addr,
+        staging_addr,
+        image_id,
+        exec_bit,
+        component_id,
+    ))
 }
 
 fn parse_addr(s: &str) -> Result<u64> {
@@ -129,9 +136,7 @@
     })
 }
 
-fn create_auth_manifest(
-    image_metadata_list: Vec<AuthManifestImageMetadata>,
-) -> Result<Vec<u8>> {
+fn create_auth_manifest(image_metadata_list: Vec<AuthManifestImageMetadata>) -> Result<Vec<u8>> {
     let vendor_fw_key_info = AuthManifestGeneratorKeyConfig {
         pub_keys: AuthManifestPubKeysConfig {
             ecc_pub_key: VENDOR_ECC_KEY_0_PUBLIC,
@@ -207,9 +212,7 @@
         Commands::Experimental(cmd) => firmware_bundler::execute(cmd),
         Commands::AuthManifest { subcommand } => match subcommand {
             AuthManifestCommands::Create {
-                mcu_image,
-                output,
-                ..
+                mcu_image, output, ..
             } => {
                 let (path, load_addr, staging_addr, image_id, exec_bit, component_id) =
                     parse_image_cfg(&mcu_image)?;
diff --git a/third_party/caliptra/caliptra-sw/src/caliptra_firmware_bundler.rs b/third_party/caliptra/caliptra-sw/src/caliptra_firmware_bundler.rs
index 495a330..b66c3e6 100644
--- a/third_party/caliptra/caliptra-sw/src/caliptra_firmware_bundler.rs
+++ b/third_party/caliptra/caliptra-sw/src/caliptra_firmware_bundler.rs
@@ -37,9 +37,7 @@
 use anyhow::{anyhow, bail, Context, Result};
 use caliptra_image_crypto::RustCrypto as Crypto;
 use caliptra_image_fake_keys::{OWNER_CONFIG, VENDOR_CONFIG_KEY_0};
-use caliptra_image_gen::{
-    ImageGenerator, ImageGeneratorConfig, ImageGeneratorExecutable,
-};
+use caliptra_image_gen::{ImageGenerator, ImageGeneratorConfig, ImageGeneratorExecutable};
 use caliptra_image_types::{FwVerificationPqcKeyType, ImageRevision};
 use elf::endian::AnyEndian;
 use elf::ElfBytes;
@@ -84,9 +82,7 @@
             }
             let seg_addr = segment.p_paddr as u32;
             if seg_addr < load_addr {
-                bail!(
-                    "segment at 0x{seg_addr:08x} below base 0x{load_addr:08x}"
-                );
+                bail!("segment at 0x{seg_addr:08x} below base 0x{load_addr:08x}");
             }
             let offset = (seg_addr - load_addr) as usize;
             let end = offset + data.len();
@@ -166,15 +162,14 @@
     // rev-parse anyway.
     let rev: ImageRevision = *b"~~~~~NO_GIT_REVISION";
 
-    let fmc_bytes = fs::read(&args.fmc)
-        .with_context(|| format!("failed to read FMC ELF {:?}", args.fmc))?;
+    let fmc_bytes =
+        fs::read(&args.fmc).with_context(|| format!("failed to read FMC ELF {:?}", args.fmc))?;
     let runtime_bytes = fs::read(&args.runtime)
         .with_context(|| format!("failed to read Runtime ELF {:?}", args.runtime))?;
 
-    let fmc = ElfExecutable::from_bytes(&fmc_bytes, 0, rev)
-        .context("failed to pack FMC ELF")?;
-    let runtime = ElfExecutable::from_bytes(&runtime_bytes, 0, rev)
-        .context("failed to pack Runtime ELF")?;
+    let fmc = ElfExecutable::from_bytes(&fmc_bytes, 0, rev).context("failed to pack FMC ELF")?;
+    let runtime =
+        ElfExecutable::from_bytes(&runtime_bytes, 0, rev).context("failed to pack Runtime ELF")?;
 
     let cfg = ImageGeneratorConfig {
         pqc_key_type: FwVerificationPqcKeyType::LMS,
diff --git a/third_party/caliptra/caliptra-sw/src/caliptra_rom_packager.rs b/third_party/caliptra/caliptra-sw/src/caliptra_rom_packager.rs
index 4aa625e..02306d5 100644
--- a/third_party/caliptra/caliptra-sw/src/caliptra_rom_packager.rs
+++ b/third_party/caliptra/caliptra-sw/src/caliptra_rom_packager.rs
@@ -105,13 +105,15 @@
         let src = elf_bytes
             .get(file_offset..file_offset + len)
             .ok_or_else(|| anyhow!("segment at file offset 0x{file_offset:x} out of bounds"))?;
-        let dst = result.get_mut(mem_offset..mem_offset + len).ok_or_else(|| {
-            anyhow!(
-                "segment at 0x{mem_offset:x}..0x{:x} exceeds ROM region 0x0..0x{:x}",
-                mem_offset + len,
-                ROM_SIZE
-            )
-        })?;
+        let dst = result
+            .get_mut(mem_offset..mem_offset + len)
+            .ok_or_else(|| {
+                anyhow!(
+                    "segment at 0x{mem_offset:x}..0x{:x} exceeds ROM region 0x0..0x{:x}",
+                    mem_offset + len,
+                    ROM_SIZE
+                )
+            })?;
         dst.copy_from_slice(src);
     }
 
@@ -161,7 +163,9 @@
     if args.len() != 3 {
         bail!(
             "usage: {} <input_elf> <output_bin>",
-            args.first().map(String::as_str).unwrap_or("caliptra_rom_packager")
+            args.first()
+                .map(String::as_str)
+                .unwrap_or("caliptra_rom_packager")
         );
     }
     let input_path = &args[1];