# SerialIo

| Index | Module | Size | Phase |
|-------|--------|------|-------|
| 133 | SerialIo | 17,248 bytes (17 KB) | Decompiled |

SerialIo implements the EFI_SERIAL_IO_PROTOCOL on top of NS16550/PC16550D-compatible UART hardware. It supports three access backends -- legacy I/O (in/out instructions on ISA UARTs COM1-COM10), PCI I/O protocol (MMIO or I/O) on PCI UARTs, and direct MMIO register access. The driver follows the UEFI Driver Binding pattern, detecting UART type via device path probing and allocating a SERIAL_IO_PRIVATE context with automatic FIFO detection through the standard 8250/16550 loopback test.

## Key Functions

- SerialIoDriverBindingSupported, SerialIoDriverBindingStart, SerialIoDriverBindingStop
- SerialIoReset, SerialIoSetAttributes, SerialIoSetControl, SerialIoGetControl
- SerialIoWrite, SerialIoRead
- UartReadRegister, UartWriteRegister (dispatch to legacy/PCI/MMIO backends)
- SerialIoComponentNameGetDriverName, SerialIoComponentNameGetControllerName

## Dependencies

- EFI_SERIAL_IO_PROTOCOL, EFI_DEVICE_PATH_PROTOCOL, EFI_PCI_IO_PROTOCOL
- UefiBootServicesTableLib, UefiRuntimeServicesTableLib, BaseMemoryLib, DebugLib

## Platform

x86-64, PE32+, UEFI DXE driver, 6 sections (.text/.rdata/.data/section_3/.xdata/.reloc), entry at 0x390