# SioDxeInit

| Index | Module | Size | Phase |
|-------|--------|------|-------|
| 291 | SioDxeInit | 10,624 bytes (10.4 KB) | DXE |

## Overview

Super I/O DXE Initialization Driver that configures the LPC I/O cycle decoding on the PCH and initializes the Super I/O controller. It manages port ranges for legacy devices (serial, parallel, GPIO, keyboard/mouse controller) connected via the LPC bus (typically to the AST2500 BMC or compatible SIO chipset). The driver caches boot/runtime services table pointers, detects the PCH SKU (LBG/LBG-H), and installs the SIO DXE Init protocol for downstream drivers.

## Key Functions

- **ModuleEntryPoint** -- Saves EFI system table pointers; calls driver init routines
- **ConfigureLpcDecode** -- Configures LPC I/O cycle decode registers on the PCH via PCR and PCI config space
- **ConfigureLpcIoRange** -- Programs specific LPC I/O range windows for legacy device routing
- **PchDetectSku** -- Detects PCH SKU type (LBG, LBG-H, or unsupported)
- **PchPcrWriteReg** -- Writes to PCH Private Configuration Registers (PCR) via MMIO
- **SetLpcRegisterRaw** -- Raw LPC register access for low-level configuration
- **GetPcdProtocol** -- Locates and caches the Platform Configuration Database protocol
- **GetHobList** -- Retrieves the HOB (Hand-Off Block) list pointer
- **GetConfigTable** -- Retrieves system configuration tables (DXE Services Table)
- **IoRead16** / **IoRead32** / **IoWrite16** / **IoWrite32** -- Port I/O wrappers with AltRegister support

## Dependencies

UEFI Boot Services, UEFI Runtime Services, DXE Services Table, PCD Protocol, MM PCI USRA Protocol, HOB List

## Platform

Lenovo HR650X (Purley/LBG-PCH), X64, AST2500 BMC