Fact-checked by Grok 2 weeks ago

Low Pin Count

The Low Pin Count (LPC) interface is a low-pin-count bus specification developed by Corporation to connect low-bandwidth peripherals, such as floppy disk controllers, serial and parallel ports, and PS/2 keyboard/mouse interfaces, to the CPU or in personal computers, effectively replacing the older (ISA) bus while reducing pin requirements and system costs. Announced on September 29, 1997, as part of Intel's strategy to migrate legacy I/O from ISA-based systems to PCI-centric platforms, the LPC interface was designed to support the transition to ISA-less motherboards by providing software-transparent compatibility for existing peripherals without requiring special drivers. The specification, first released in revision 1.0 and later updated to revision 1.1 in August 2002 to include firmware memory cycles and electrical clarifications, enables synchronous operation at the PCI clock speed of 33 MHz, serializing data over a multiplexed 4-bit bus to achieve or exceed ISA's performance for targeted applications. Key technical features of LPC include a minimal pin count of six signals—LAD[3:0] for address/data , LFRAME# for frame delineation, and LDRQ# for requests—along with support for memory, I/O, , bus master, and memory transactions of 1, 2, 4, or 128 bytes. This reduces space, power consumption, and thermal demands compared to the 98-pin bus, facilitating integration into southbridge chipsets and devices while promoting the adoption of emerging interfaces like USB and IEEE 1394. Although largely superseded in modern systems by enhanced (eSPI) and other buses, LPC remains relevant in legacy-compatible embedded and PC designs as of 2025.

History and Development

Origins and Purpose

The Low Pin Count (LPC) interface was developed by Intel Corporation and announced on September 29, 1997, at the Intel Developer Forum in , as a means to facilitate the transition from legacy bus-based systems to modern PCI-centric platforms in personal computers. This specification, initially released as Revision 1.0, aimed to replace the aging (ISA) and X-bus interfaces that had become inefficient for integrating low-bandwidth peripherals on motherboards. By introducing a streamlined serial-like , LPC enabled the elimination of full ISA slots while preserving essential connectivity for embedded components. The primary motivations for LPC's creation were to drastically reduce the pin count required for and peripheral , thereby lowering costs and simplifying designs in the post-PCI era. Traditional interfaces demanded approximately 36 dedicated signals for address, data, and control lines, contributing to larger, more expensive chip packages—such as 160-pin devices for controllers. In contrast, LPC achieves a net savings of about 30 pins per peripheral by introducing only six new signals (LAD[3:0] for multiplexed lines, LFRAME#, and LDRQ#), while sharing existing PCI clock (LCLK) and reset (LRESET#) signals, resulting in 6 to 13 total pins depending on . This reduction not only cut package sizes (e.g., from 160 to 88 pins for chips) but also eased routing on high-density boards, addressing the space and cost constraints of x86-based IBM-compatible . Furthermore, LPC was designed to maintain full with ISA software and cycle types, including memory reads/writes, I/O operations, , and , ensuring transparency to operating systems and without requiring application changes. It targeted low-bandwidth peripherals such as controllers, /mouse interfaces, / ports, audio codecs, and firmware hubs, typically housed in southbridge chipsets or devices on desktop and mobile systems. By multiplexing address, data, and commands over a narrow 4-bit bus synchronized to a 33 MHz clock, LPC supported these functions efficiently while enabling a phased migration: first integrating legacy I/O via LPC, then removing ISA slots, and ultimately phasing out physical legacy ports in favor of USB and other high-speed alternatives. This approach addressed key ISA limitations, such as restricted memory addressing (up to 16 MB) and asynchronous timings, by expanding support to 4 GB and adopting synchronous PCI-like operations.

Specifications and Revisions

The Intel Low Pin Count (LPC) Interface Specification serves as the primary document defining the LPC bus, initially released on September 29, 1997, as Revision 1.0 without an assigned document number. This specification was developed to enable low-bandwidth connections in x86-based systems while promoting open implementation among designers and vendors. Revision 1.1, released in August 2002 with document number 251289-001, introduced key enhancements including support for memory cycles to facilitate and other access through multi-byte read and write operations (1, 2, 4, or 128 bytes). It also provided electrical clarifications for signals such as LPCPD# (an optional power-down indicator) and LSMI#, along with updated requirements for system reset, pull-up resistors, and clock signals like LRESET#, LCLK, and CLKRUN#. For compliance, LPC implementations must operate at a 33 MHz clock synchronous with timing and include mandatory signals: LAD[3:0] for multiplexed command, address, and data; LFRAME# for cycle framing; LRESET# aligned with reset; and LCLK as the reference clock. Optional signals, such as SERIRQ for serialized handling, LDRQ# for requests, CLKRUN# for mobile clock management, LPME# for power events, LPCPD#, and LSMI# for system management interrupts, may be included based on system needs. No official revisions to the LPC specification have been issued by Intel since 2002; subsequent integrations appear in chipset documentation, such as the Intel 8 Series Platform , which references LPC for legacy support until the emergence of the Enhanced Serial Peripheral Interface (eSPI) in 2012.

Technical Specifications

Signals and Pinout

The Low Pin Count (LPC) interface utilizes a minimal set of signals to connect low-bandwidth peripherals to the host , replacing the extensive pin requirements of the legacy ISA bus. It employs seven required signals and up to six optional signals, resulting in a total of 6 to 13 pins depending on implementation. This design leverages a simple parallel interface akin to PCI sideband signals, enabling efficient communication with reduced complexity. The required signals form the core of the LPC bus. The LAD[3:0] lines serve as a bidirectional, multiplexed 4-bit bus for command, address, and data transfer, allowing serialization of information across the interface. LFRAME# is an active-low signal that provides , indicating the start or termination of a bus cycle. LRESET# acts as the system reset signal, shared with the bus, which initializes the interface and tri-states the LAD lines when asserted. Finally, LCLK delivers a 33 MHz clock reference, synchronous with the clock, to drive all operations. Optional signals enhance functionality for specific use cases, particularly in power management and legacy support. LDRQ# enables encoded DMA or bus master requests from peripherals, with one line typically per device. SERIRQ supports serialized interrupt requests, allowing multiple peripherals to share a single line via a daisy-chain protocol. CLKRUN# facilitates clock throttling for mobile or low-power systems. LPME# signals power management events, such as wake-up requests from sleep states. LPCPD# indicates impending power-down to prepare peripherals before clock cessation. LSMI# conveys system management interrupts, often used for retry mechanisms in I/O operations. In terms of pinout efficiency, the LPC interface achieves significant savings over the bus, which required approximately 100 pins including lines (D[7:0]), address lines (SA[23:0]), and control signals. LPC reduces this to as few as 6 pins for basic operation (LAD[3:0], LFRAME#, and shared reset/clock), with a net savings of about 30 pins on peripherals, enabling smaller package sizes such as from 160-pin to 88-pin or less. Signal characteristics emphasize compatibility with PCI electrical standards for reliability and interoperability. The LAD[3:0] and SERIRQ signals operate in open-drain mode, while others like LFRAME#, LRESET#, and LCLK use push-pull drivers. All signals are specified at 3.3 V levels, adhering to PCI 2.3 voltage tolerances (e.g., VOH ≥ 2.4 V, VOL ≤ 0.5 V for most lines), with LAD[3:0] required to sink up to 12 mA in low-state conditions to ensure robust bus loading. Pull-up resistors (15 kΩ to 100 kΩ) are mandated on open-drain lines like LAD[3:0] and LDRQ# when unconnected. In ISA-compatible modes, the LAD bus employs 4-bit nibble transfers to handle addressing up to 1 MB, maintaining backward compatibility without additional pins.
Signal GroupSignal NameTypeDescriptionElectrical Notes
Required[3:0]I/O (Open-Drain)Multiplexed Address/Data (4 bits)3.3 V, sink 12 mA
RequiredLFRAME#I/O (Push-Pull)Frame Sync (Active Low)3.3 V PCI levels
RequiredLRESET#I (Push-Pull)System ResetShared with
RequiredLCLKI (Push-Pull)33 MHz ClockSynchronous to
OptionalLDRQ#O/I (Open-Drain)DMA Request3.3 V, pull-up required
OptionalSERIRQI/O (Open-Drain)Serialized IRQ3.3 V, daisy-chain support
OptionalCLKRUN#OD/I-ODClock Run ControlFor low-power states
OptionalLPME#OD/I-ODPower Management EventWake-up signaling
OptionalLPCPD#I/OLPC Power DownAssert ≥30 µs before clock stop
OptionalLSMI#OD/ISystem Management InterruptFor I/O retry

Clocking and Timing

The Low Pin Count (LPC) interface operates synchronously with a dedicated , LCLK, which is provided by the host and nominally runs at 33 MHz, matching the frequency and phase of the clock for compatibility. This clock source ensures that all LPC transactions are timed relative to LCLK rising edges, where data on the LAD[3:0] lines is typically sampled, mimicking bus synchronization to simplify integration with existing designs. Additionally, the optional CLKRUN# signal allows dynamic clock throttling; when asserted low by a peripheral (e.g., during a request via LDRQ#), it prevents the host from stopping LCLK in low-power states, restarting the clock if necessary to maintain bus activity. Transactions on the LPC bus are framed by the LFRAME# signal, which the host asserts low to initiate a and holds active for the duration of the transfer, with data and control information multiplexed on [3:0] over successive LCLK . LFRAME# deassertion marks the end of a . To accommodate slower peripherals, such as controllers, the host can extend timing by keeping LFRAME# asserted across multiple clocks or using the SYNC field in the ; for short SYNC (0101b), up to eight wait states are supported, while long SYNC (0110b) allows indefinite extension without a fixed limit. Device synchronization and initialization rely on the LRESET# signal, which the host asserts asynchronously to reset the LPC interface, tri-stating LAD[3:0] and ignoring other inputs like LDRQ# during assertion. Upon deassertion, LCLK must be running, aligning with reset timing protocols to ensure all devices sample the bus correctly. While the LPC specification emphasizes synchronous clocking for core operations, some implementations permit asynchronous resets for LRESET#, providing flexibility in power sequencing without strict clock dependency.

Performance Characteristics

The Low Pin Count (LPC) bus operates at a fixed of 33 MHz using a serialized 4-bit bus, yielding a theoretical maximum throughput of 16.5 MB/s (132 Mbps). In practice, protocol framing and synchronization overheads reduce achievable bandwidths considerably; for example, 32-bit writes reach up to 6.67 MB/s, while reads are limited to 1.59 MB/s and I/O read/write cycles to 2.56 MB/s. Bus master transfers, which involve additional , for example achieve 1.33 MB/s for 8-bit reads under optimal conditions. These figures reflect the bus's design for low-to-moderate rates rather than sustained high-volume transfers. Latency in LPC transactions is influenced by framing overheads (typically 1-2 clock for command and phases) and variable wait states inserted via the SYNC field to accommodate slower peripherals, potentially causing up to 50% efficiency loss in cycles involving devices. A standard I/O incurs about 390 ns of (13 clock cycles at 33 MHz), while reads require around 630 ns (21 cycles, including wait states). These delays make LPC suitable for peripherals with infrequent access patterns, such as keyboards or mice, which operate at effective bandwidths below 1 MB/s even at high polling rates of 1000 Hz (e.g., 8 bytes per report). Compared to its predecessor, the bus, LPC achieves similar low-bandwidth performance but with 10-20 times fewer pins (7 required signals versus ISA's 98-pin connector, saving 30-36 signals per peripheral). This pin reduction enables more compact chip designs, such as shrinking packages from 160 to 88 pins, without sacrificing compatibility for legacy I/O. However, LPC is not intended for high-speed applications; its maximum effective throughput pales against the bus's 133 MB/s at the same 33 MHz clock. LPC's efficiency can be modeled as: \text{Effective [bandwidth](/page/Bandwidth)} = \frac{\text{[clock rate](/page/Clock_rate)} \times \text{data width} \times \text{cycles per transfer}}{\text{total cycles including overhead}} For a 1-byte I/O transfer (requiring 13 total clock cycles including overhead), this yields approximately 2.56 MB/s, aligning with measured I/O rates and underscoring the bus's optimization for sporadic, low-volume operations like queries or servicing rather than bulk data movement.

Protocol Overview

Transaction Structure

The Low Pin Count (LPC) employs a host-initiated model where the host drives the bus for most operations, serializing commands, addresses, and over the LAD[3:0] bus lines using a 33 MHz clock. Each consists of distinct phases: start, command/address, , and end, framed by the LFRAME# signal to delineate cycle boundaries. This structure minimizes pin usage by multiplexing all information on four lines, with peripherals responding only as required during specific phases. The transaction begins with the start phase, lasting one clock cycle, during which the host asserts LFRAME# low and drives a 4-bit START code onto LAD[3:0] to indicate the cycle type, such as a target cycle for general peripherals. Peripherals decode this code while LFRAME# is active to determine if they should participate. The LFRAME# signal, along with LAD[3:0], serves as the primary control mechanism, with the host maintaining control of the bus throughout unless a peripheral asserts a turnaround request. Following the start phase, the command/ phase occurs, where serializes the type, , and information onto LAD[3:0], most significant first. This phase typically spans 5 to 9 clock s depending on the size: for I/O s, it includes 2 bits for type and plus 16 bits (4 s, totaling 5 s); for memory s, it extends to 32 bits (8 s, totaling 9 s). The serialized format ensures compatibility with low-bandwidth devices while allowing to specify the precisely. The data phase follows, transferring information in 4-bit s over [3:0], with two clock cycles per byte: the least significant nibble first, followed by the most significant nibble. For write operations, the host drives the data after the command/address phase; for reads, a 2-cycle turnaround () phase occurs first, after which the peripheral drives a SYNC code (0000b for ready, 0101b for short wait, etc.) to signal readiness or insert wait states, followed by the data. The peripheral then drives another to return the bus to the host. This phase can last from 2 to 8 cycles (1 to 4 bytes) for standard transfers, with optional wait states via SYNC if the peripheral requires additional time. In non-ISA modes, such as access, bursts can extend up to 128 bytes, equivalent to 256 clock cycles for data. The concludes with LFRAME# deasserted high after the final . The LPC protocol lacks built-in error detection like ; instead, it relies on timeout mechanisms, where the host aborts a if no valid SYNC is received within 3 clocks of undefined codes or if short wait states exceed 8 clocks, prompting software-level retries. Regarding bus within transactions, the host drives LAD[3:0] and clock signals for the majority of the cycle, while peripherals can request access via the dedicated LDRQ# signal for bus master operations, though such requests are resolved outside the primary transaction flow.

Bus Arbitration and Cycles

The Low Pin Count (LPC) bus employs a centralized mechanism managed by the host controller, which coordinates access among connected peripherals to prevent conflicts on the shared bus lines. Peripherals initiate requests for or bus master operations by asserting their dedicated LDRQ# signal, which encodes a 3-bit channel number and a 1-bit activity status synchronously with the LPC clock (LCLK). The host interprets these requests and grants access using the legacy 8237 controller for standard DMA cycles or dedicated logic for bus master cycles, supporting up to two simultaneous bus masters. This host-centric approach ensures orderly access without distributed among peripherals. LPC cycles are categorized by type and encoded in the CYCTYPE and DIR fields during the command phase of a , allowing the host to specify the operation over the multiplexed bus. Standard cycle types include I/O read/write cycles, which use a short 16-bit format transmitted over four LCLK cycles, and read/write cycles, which employ an extended 32-bit over eight LCLK cycles. cycles support 1-, 2-, or 4-byte transfers in read or write direction, initiated via LDRQ# requests and handled in a chained manner similar to compatibility modes. Bus master cycles, also triggered by LDRQ#, enable peripherals to perform I/O or accesses of 1, 2, or 4 bytes, with the host facilitating and data transfer phases. The host controller enforces ordering for concurrent DMA requests following the fixed priorities of the integrated 8237 controller, typically based on channel assignment rather than dynamic IRQ levels. Multiple devices are supported on the LPC bus through address decoding, where each peripheral monitors the ADDR field on the LAD[0:3] lines during the address phase and responds only if the decoded range matches its configured I/O or memory space. This allows for up to 16 devices in typical implementations, limited by the 16-bit I/O address space granularity and proper range allocation to avoid overlaps. Collision detection occurs implicitly through bus monitoring; if multiple devices attempt to drive the LAD lines simultaneously due to address overlap, the host detects contention via invalid SYNC patterns or lack of response and aborts the cycle using LFRAME#. The LPC architecture does not support true communication, with all cycles routed through the host controller, which multiplexes commands, addresses, and data on the shared bus, thereby limiting concurrency to host-scheduled operations.

ISA-Compatible Operations

Memory and I/O Reads and Writes

The Low Pin Count (LPC) supports -compatible memory and I/O read and write operations as host-initiated target cycles, designed to emulate traditional bus transactions for seamless integration with legacy software and peripherals. These operations allow the host to access peripherals using the same addressing and data transfer semantics as the bus, without requiring modifications to operating systems or drivers. The protocol ensures synchronous timing while preserving asynchronous behaviors through mechanisms like wait states. Transactions begin with a start phase where the host drives the 4-bit value 0000 on the LAD[3:0] bus lines to signal the initiation of a target cycle. In the following cycle type phase (1 clock), bits [3:2] specify the operation: 00 for I/O cycles or 01 for memory cycles, with bit indicating direction (0 for read, 1 for write) and bit reserved as 0. A subsequent SIZE phase (1 clock) encodes the transfer width with LAD[1:0]: 00 for 8-bit, 01 for 16-bit, or 11 for 32-bit (LAD[3:2]=00 reserved). For example, an I/O read uses 0000 in the cycle type phase, while a memory write uses 0110 in the cycle type phase (followed by 0011 in the SIZE phase for 32-bit). The address is then serialized MSB-first over the LAD bus: a 16-bit address for I/O operations (transmitted over 4 clock cycles, supporting up to 64 KB of I/O space) or a 32-bit address for memory operations (over 8 clock cycles, supporting up to 4 GB, though ISA-compatible software typically limits memory accesses to the lower 1 MB or 20-bit address range). Data transfers support 8-bit (SIZE = 00), 16-bit (SIZE = 01), or 32-bit (SIZE = 11) widths, encoded in the SIZE phase, with byte enables (BE[3:0]) provided during writes to allow partial word operations (e.g., enabling specific bytes within a 32-bit transfer). Data is transferred in 4-bit nibbles (LSB-first within each byte) over two clock s per byte on LAD[3:0], resulting in 2, 4, or 8 clock cycles for 8-, 16-, or 32-bit transfers, respectively. In a read , the host completes the address phase, followed by a 2-clock turn-around (TAR) period where LAD is tri-stated; the peripheral then asserts SYNC for one clock to signal readiness (inserting wait states if needed) and drives the during the subsequent phase(s). For a write , the host drives the immediately after the (reversing the data flow), with the peripheral responding via SYNC after a TAR to confirm completion, ensuring compatibility with ISA's command//data sequencing. These cycles fully replicate memory and I/O behaviors, including variable via SYNC and no protocol-level changes to software interfaces, enabling direct use of existing ISA drivers for peripherals like keyboards, floppy controllers, and serial ports on LPC-equipped systems. Typical timings include 13 clocks for 8-bit I/O reads/writes and 17–21 clocks for 8-bit memory reads/writes, scaling with size and wait states.

DMA Transfers

The Low Pin Count (LPC) interface emulates the (DMA) functionality of the DMA controller to provide ISA-compatible operations for peripherals requiring bulk data transfers to or from system memory without CPU involvement. These transfers are serialized over the LPC bus, effectively mapping the multiple ISA DMA channels to a single logical channel on the host side, while preserving compatibility for legacy devices. Channels 0–3 support 8-bit transfers only, while channels 5–7 support 16-bit transfers (32-bit optional); channel 4 is not supported. DMA operations begin with the peripheral asserting the LDRQ# signal to request access, which the host verifies against programmed channel configurations and grants through internal logic, potentially referencing bus cycles for prioritization. In the command phase, the transaction starts with 0000b (START), followed by the cycle type clock with 1000b for reads (peripheral to ) or 1010b for writes ( to peripheral), then a CHANNEL phase (1 clock) where LAD[2:0] specifies the active DMA channel (0-3 or 5-7), and a SIZE phase encoding the width (00 for 8-bit, 01 for 16-bit, 11 for 32-bit). Upon grant, data is transferred in configurable widths of 8, 16, or 32 bits, with the LPC bus's 4-bit () serialization handling the movement of bytes across multiple clock cycles. LPC supports Single Transfer, Demand Transfer, Verify Transfer, and Increment Transfer modes, along with auto-initialize for repeated transfers without reprogramming addresses; Block Transfer, Decrement Transfer, and modes are not supported. Each is limited to a maximum transfer size of 64 KB, determined by the 16-bit address and count registers inherited from the 8237 design. Chaining of multiple DMA transfers is enabled via the SYNC command (start code 1001b), which signals the continuation of transfers across sequential bus cycles without releasing the bus. The nibble-serialized transmission on LPC constrains DMA bandwidth to approximately 3.3 MB/s at the standard 33.3 MHz clock rate, making it suitable for moderate-throughput peripherals such as controllers and sound cards rather than high-speed storage.

Interrupt Handling

The Low Pin Count (LPC) interface utilizes the SERIRQ signal to serialize interrupt requests from connected peripherals, multiplexing up to 15 interrupt lines—typically IRQ3 through IRQ15, excluding IRQ13—onto a single shared pin. This approach replaces the multiple dedicated interrupt lines required in the legacy bus, saving approximately 10 pins overall by eliminating the need for separate wiring for each IRQ. The serialization process operates synchronously with the LPC clock (LCLK), using a framed protocol consisting of a start frame, multiple data frames, and a stop frame. A peripheral device initiates an interrupt by driving the SERIRQ line low during the start frame (4 to 8 clock cycles wide, initiated by either the host or device). In the subsequent data frames (3 clock cycles each: sample, recovery, and turn-around phases), the device drives SERIRQ low only in its assigned slot if the corresponding IRQ is asserted; the host identifies the specific IRQ by counting clock cycles from the start frame (e.g., the slot for IRQ6 aligns with the 18th clock cycle, calculated as 3 clocks per frame times the IRQ offset). The sequence concludes with a host-driven stop frame (2 to 3 clock cycles), after which SERIRQ returns to tri-state. The protocol supports both Quiet mode (intermittent frames for power savings) and Continuous mode (periodic scanning). Host detection of interrupts occurs through either polling the SERIRQ line during active clock periods or edge detection on signal transitions, ensuring compatibility with existing ISA software stacks without requiring modifications or special drivers. The mechanism preserves ISA interrupt semantics, including support for both level-sensitive and edge-triggered modes, allowing transparent integration with operating systems that expect standard ISA interrupt behavior. Due to the time-multiplexed of the shared SERIRQ line, interrupt delivery incurs a delay of approximately 1 µs per IRQ in typical configurations (based on full frame scanning at 33 MHz LCLK, where a complete cycle spans up to 51 clocks or ~1.5 µs, though individual slots add minimal incremental latency). Certain system-reserved s, such as IRQ0 (), IRQ1 (), IRQ2 (), IRQ8 (), and IRQ13 ( error), are not supported over SERIRQ, as they are handled via dedicated hardware paths outside the LPC domain.

Non-ISA Transactions

Firmware Memory Access

Firmware Memory Access transactions in the Low Pin Count (LPC) interface enable the host to directly read from or write to system firmware storage, such as BIOS or UEFI boot ROMs and flash memory, without incorporating these regions into the full system memory map. This capability was introduced in Revision 1.1 of the LPC specification to support efficient access to firmware during boot processes or updates. These transactions operate as non-ISA cycles, utilizing a dedicated opcode format distinct from standard memory or I/O operations. The transaction begins with a START phase using opcode 1101b for reads or 1110b for writes, followed by a 28-bit memory address field (MADDR) transmitted over 7 clock cycles and a size field (MSIZE) specifying the transfer length. Supported sizes include 1 byte (required) and optionally 2, 4, 16, or 128 bytes, with transfers aligned to their size boundaries (e.g., 4-byte transfers on DWORD boundaries). Data is exchanged in burst mode via the LPC's multiplexed [3:0] lines, transferring 4-bit s with the least significant nibble first per byte; for writes, the host provides byte enables to control partial updates, while reads have the peripheral driving data after a turnaround . The full cycle includes synchronization (SYNC) and turnaround (TAR) phases to manage timing, allowing up to 256 MB of addressable space across devices. This mechanism facilitates faster shadowing—copying into system for quicker execution—and in-system updates by enabling bulk transfers without ISA emulation overhead. However, it lacks inherent security protections, such as error detection or access controls, relying instead on external locks to prevent unauthorized modifications; illegal cycles simply proceed without interruption.

Bus Master DMA

In the Low Pin Count (LPC) interface, bus master DMA enables peripherals to initiate transfers to or from system memory, extending beyond traditional ISA-style DMA by allowing non-legacy devices to act as bus masters. This capability is particularly useful for peripherals requiring efficient data movement without CPU intervention, such as controllers. The process begins with the peripheral asserting the LDRQ# signal, encoded as 100b, to request bus mastery from the host. Upon by the host, which grants access via the START field in the TAR phase using opcodes 0010b for Bus Master 0 or 0011b for Bus Master 1, the peripheral drives the cycle type (CYCTYPE), direction (), address, size, and data on the bus. Unlike ISA DMA, which relies on DREQ and DACK signals with fixed channel assignments, LPC bus master DMA uses a dedicated LDRQ# per peripheral and supports direct bridging to system memory without channel limitations. Addressing in bus master cycles employs 32-bit memory addresses for transfers, surpassing the 24-bit limit of DMA and enabling access to larger address spaces. Transfer sizes are typically 1, 2, or 4 bytes per cycle, with support for burst modes where multiple consecutive transfers can occur in demand mode, terminated early by the peripheral using SYNC values like 0000b (ready) or 1010b (error). This mechanism improves efficiency for non-ISA peripherals by achieving near-peak LPC bandwidth, such as up to 6.67 MB/s for 32-bit writes at 33 MHz clock rates. It is commonly applied in embedded controllers for tasks like and system monitoring, as well as in devices for audio or generic memory operations.

TPM Locality Access

TPM locality access in the Low Pin Count (LPC) bus enables secure interaction between the host platform and a (TPM) through non-ISA transactions, providing isolated access to TPM registers for cryptographic operations. This mechanism is defined in the Trusted Computing Group (TCG) PC Client TPM Interface Specification (), which specifies memory-mapped I/O over LPC for TPM Family 1.2 implementations. The interface supports up to five localities (numbered 0 through 4), each representing a distinct with escalating privileges to prevent unauthorized access across software entities like the operating system or . For instance, locality 0 is typically used by the OS and static core root of trust for measurement (CRTM), while locality 4 is reserved for higher-privilege operations such as those initiated by the dynamic CRTM, including commands like GETACPI for platform configuration. Locality-based isolation is enforced by the platform chipset through address range restrictions, ensuring that commands or data from one locality cannot interfere with another, thereby mitigating risks like or data leakage. Transactions begin with a non-ISA on the LPC bus, using an starting with the 4-bit field 0101 to indicate a TPM-specific read or write, followed by a 3-bit locality selector (values 000 to 100 for localities 0-4) and a 32-bit into the TPM's , which spans 4 KB per locality (e.g., base address FED40000h for locality 0). accesses are performed as 32-bit reads or writes, with the LPC bus transferring in 4-bit nibbles (two cycles per byte) that the aggregates into doublewords for efficiency; for example, writing to the TPM_ACCESS_x at 0000h (for locality 0) requests or seizes , while the TPM_STS_x at 0018h-001Bh signals command readiness. A starts by the host asserting via the locality's ACCESS (e.g., setting requestUse to 1), followed by transfer through the (offsets 0024h-0027h), and ends with the host relinquishing access by writing 1 to activeLocality, after which the TPM processes the command and updates status bits like tpmValid. This framing aligns with LPC's non-ISA structure, utilizing the bus's low pin count for secure I/O without the overhead of PCI-based interfaces. The integration of locality access into LPC supports TPM 1.2 and extends to TPM 2.0 with compatible register mappings, allowing operations like (Platform Configuration Register) reads—such as TPM_PcrRead—to occur directly over LPC without requiring additional bus resources. is further enhanced by aborting any ongoing command if a higher-locality seizure occurs mid-execution, ensuring atomicity and . For TPM 1.1b compatibility, a "Locality None" mode uses legacy I/O ports (e.g., 2Eh/2Fh), but modern LPC implementations prioritize memory-mapped localities for better performance and . This design leverages LPC's simplicity to enable features in resource-constrained PC client platforms.

Applications and Peripherals

Supported Devices

The Low Pin Count (LPC) interface primarily supports low-bandwidth peripherals that require minimal pin usage, enabling efficient integration on motherboards by replacing the older bus. Core devices include chips, which consolidate functions such as controllers (FDC), serial ports (SP), parallel ports (PP), (IR) interfaces, and keyboard controllers (KBC). These chips operate as I/O slaves, with support for and where applicable. Other supported peripherals encompass firmware memory for access, embedded controllers () for and system tasks, low-bandwidth audio codecs following the style, and (TPM) devices for security functions. Firmware memory is accessed via dedicated cycles as a memory slave, while ECs and TPMs function as I/O slaves or bus masters. Audio support involves for data transfer in AC'97-compatible designs. Representative examples include Winbond's W83627 series chips for legacy ports like and interfaces, connected via LPC for I/O operations. ITE's IT8728F provides integrated functionality with LPC, supporting FDC, KBC, and GPIO. For TPM, Atmel's (now Microchip) AT97SC3204 implements TCG specifications over LPC, enabling secure key storage and cryptographic operations. Microchip's SST49LF080A serves as an LPC-compatible flash for / storage, with uniform sector erase capabilities. Embedded controllers, such as those in Winbond's W83L950D, integrate LPC for host communication in . These devices connect to the southbridge, such as Intel's ICH series southbridges (e.g., ICH0 introduced in 1999, through ICH10), which decode LPC addresses to support up to eight devices via the bus and optional signals like SERIRQ for interrupts. This architecture facilitated pin-efficient designs in motherboards from the late to the .

Typical Use Cases

The Low Pin Count (LPC) bus primarily serves legacy input/output functions in desktop and laptop personal computers, connecting low-bandwidth peripherals such as PS/2 keyboard and mouse controllers, floppy disk controllers, serial ports, and parallel ports to the southbridge chipset. These applications enabled the integration of traditional ISA-compatible devices without requiring the full pin count of the older ISA bus, simplifying motherboard designs in systems from the late 1990s onward. During the boot process, LPC facilitates access to the BIOS firmware through dedicated memory cycles, allowing the CPU to read boot code from ROM during Power-On Self-Test (POST) operations. In and industrial systems, LPC connects management controllers (BMCs) in servers for , enabling communication between the BMC and the host CPU for tasks like remote monitoring and firmware updates. It also appears in certain x86-based boards for interfacing with low-speed sensors and controllers, maintaining compatibility in compact, resource-constrained environments. For power management, LPC supports signals like LPME# for peripheral wake-up requests from low-power states and LSMI# for generating System Management Interrupt (SMI) events in Advanced Configuration and Power Interface () implementations, aiding transitions between sleep modes. Historically, LPC enabled more compact chipsets in and era platforms by consolidating non-PCI peripherals, which accounted for a significant portion of system I/O—such as audio codecs, ports, and chips—onto a minimal seven-signal . This reduced board complexity and pin usage compared to the bus, with LPC handling the majority of such legacy devices in early 2000s PCs. Examples of supported devices, including trusted platform modules and debug cards, further illustrate its role in these applications.

Legacy Status and Successors

Current Adoption

As of 2025, the Low Pin Count (LPC) bus remains a interface in select x86 platforms, primarily for with low-bandwidth peripherals such as chips and Trusted Platform Modules (TPMs). It persists in Intel's 600 Series chipsets, where the (PCH) explicitly includes an LPC interface bridge at Device 31, Function 0, supporting cycle types like reads/writes and operations for up to two master devices. In contrast, Intel's 700 Series chipsets have transitioned to the Enhanced Serial Peripheral Interface (eSPI), which tunnels LPC accesses (e.g., PIO and ranges) to maintain without a dedicated LPC bus. AMD chipsets supported LPC through the early 2020s but phased it out in server platforms like SP5 by around 2021, limiting its presence to older consumer and embedded designs. LPC's adoption endures in systems, PCs, and niche applications like routers and ATMs, where low pin count and simplicity favor its use over higher-speed alternatives for connecting components. For instance, computing often employs eSPI-to-LPC bridges to preserve investments in existing LPC-based peripherals amid the shift to modern PCHs. Budget-oriented boards, including variants of Intel NUC mini-PCs and x86-based alternatives to (e.g., those using older or SoCs), continue to integrate LPC for cost-sensitive designs requiring minimal I/O expansion. However, its role is declining with the dominance of firmware, which reduces reliance on LPC for access, and the proliferation of PCIe and USB for peripheral connectivity. Key limitations hinder broader modern adoption: LPC's maximum bandwidth is constrained to approximately 8 MB/s effective throughput on its 33 MHz, 4-bit multiplexed bus, rendering it inadequate for data-intensive interfaces like USB or PCIe in contemporary systems. Additionally, security vulnerabilities arise in TPM locality access over LPC, as the bus's open nature enables sniffing and interposer attacks that intercept sensitive cryptographic operations, such as BitLocker key exchanges. Despite these issues, LPC's persistence stems from its necessity for legacy drivers in Windows and Linux, which rely on it for ISA-compatible I/O and DMA transfers in environments without full hardware abstraction.

Transition to eSPI

The Enhanced Serial Peripheral Interface (eSPI) specification, developed by , was initially released in revision 0.4 in February 2012, with subsequent updates culminating in revision 1.0 in January 2016, revision 1.5 in May 2022, and revision 1.6 in March 2025. This standard was explicitly designed to supersede the Low Pin Count (LPC) bus, along with the (SPI), (SMBus), and various sideband signals, by consolidating them into a streamlined 2- to 4-wire serial bus architecture based on SPI timing and electrical characteristics. The eSPI interface supports multiple logical channels for peripherals, enabling efficient communication for system management tasks while reducing overall system complexity. Key improvements in eSPI over LPC include doubled clock speeds of up to 66 MHz compared to LPC's 33 MHz limit, which enhances data throughput, and a reduced pin from LPC's typical 7 or more signals (including clock, frame, and bidirectional data lines) to just four primary wires (serial clock, , and bidirectional data with optional ). It also operates at lower 1.8 V signaling versus LPC's 3.3 V, lowering power consumption, and introduces in-band handling along with virtual wire channels to transmit events without dedicated pins. Additionally, eSPI incorporates a Peripheral Channel that supports PCIe tunneling, allowing low-bandwidth PCIe devices to integrate seamlessly into the bus. Migration from LPC to eSPI has been facilitated by backward-compatibility bridges, such as Microchip's ECE1200, which translates eSPI signals to LPC for legacy peripherals without requiring software changes or complex redesigns. eSPI became mandatory in Intel's 100-series chipsets starting in 2015, marking the beginning of LPC's phase-out in mainstream platforms, and by the 2020s, it had fully replaced LPC in consumer PCs, laptops, and servers for connecting embedded controllers (EC), baseboard management controllers (BMC), and Trusted Platform Modules (TPM). This transition addressed LPC's bandwidth constraints, with eSPI delivering higher effective throughputs than LPC's approximately 16.5 MB/s theoretical maximum (or 8 MB/s effective).

References

  1. [1]
    [PDF] Intel® Chipsets Low Pin Count Interface Specification
    This document contains a specification for a new low pin count bus interface, called LPC. The target audiences for this document are system and component ...
  2. [2]
    Intel Corporation Announces New Low Pin Count (LPC) Interface ...
    The LPC Interface Specification describes memory, I/O and DMA transactions. Unlike ISA, which runs at 8 MHz, it will use the PCI 33 MHz clock and will be ...
  3. [3]
    [PDF] Intel(r) eSPI(tm) Interface Specification
    Low Pin Count (LPC) bus is a legacy bus developed as the replacement for Industry Standard Architecture (ISA) bus.
  4. [4]
    A Guide to Mouse Polling Rate - Das Keyboard
    Mar 18, 2022 · The most common polling rate for basic mice is 125 Hz, though gaming mice often feature polling rates of 500 Hz to 1,000 Hz. Some mice let you ...
  5. [5]
  6. [6]
    [PDF] 8 Mbit LPC Flash - RS Online
    Cycle type operations such as Memory Read and Memory Write are defined in Intel Low Pin Count Interface Specification, Revision 1.0.
  7. [7]
    [PDF] SIO1007 - Microchip Technology
    Apr 18, 2021 · Steerable onto one of the 15 Serial IRQs. 32kHz suspend clock input ... The following cycle types are supported by the LPC protocol.
  8. [8]
    [PDF] XR28V382 Data Sheet - MaxLinear
    During the Turn-around phase, the peripheral device leaves the SERIRQ tri- stated. The V382 supports IRQ3, IRQ4, IRQ5, IRQ7, IRQ9, IRQ10, and IRQ11. TABLE 4: ...
  9. [9]
    None
    Below is a merged summary of the SERIRQ (Serialized IRQ) details from the SCH311X Datasheet (Rev 1.0, Nov 2006), consolidating all provided segments into a comprehensive response. To maximize information density while retaining all details, I’ll use a combination of narrative text and a CSV-formatted table for key attributes. The response includes all supported IRQs, serialization details, message formats, timing, compatibility, limitations, delays, and references to pages, timing diagrams, and URLs.
  10. [10]
    [PDF] TCG PC Client Specific TPM Interface Specification (TIS)
    Mar 21, 2013 · Fixed typos in Table 13. 24. 23 January 2012. Addressed issue in version structure in Table 17, additional informative text change in 6.4.1, ...
  11. [11]
    [PDF] TCG PC Client Specific Implementation Specification for ...
    Feb 1, 2012 · 15.1.4 Locality Access. The BIOS MUST access the TPM using only Locality 0. 15.1.5 BIOS Driver Header. BIOS Driver Header Location. 15.1.5.1.
  12. [12]
    [PDF] W83627THF W83627THG Winbond LPC I/O - Octopart
    Sep 26, 2006 · The special characteristic of Super I/O product line is to avoid power rails short. ... 3.1 LPC Interface. SYMBOL. PIN. I/O. FUNCTION. CLKIN. 18.Missing: ITE | Show results with:ITE
  13. [13]
    IT8728F: Legacy LPC Super I/O - ITE聯陽 | Product
    The IT8728F is a highly integrated Super I/O using the Low Pin Count Interface. It provides the most commonly used legacy Super I/O functionality plus the ...
  14. [14]
    [PDF] AT97SC3204 LPC Interface - Summary Datasheet
    The Atmel AT97SC3204 is a fully integrated security module designed to be integrated into personal computers and other embedded systems. It implements version ...
  15. [15]
    SST49LF080A - Microchip Technology
    LPC Interface Flash – SST49LF080A: 1024K x8 (8 Mbit); Conforms to Intel LPC Interface Specification 1.0; Flexible Erase Capability – Uniform 4 KByte Sectors ...
  16. [16]
    [PDF] Winbond Mobile Keyboard and Embedded Controller W83L950D
    Apr 18, 2005 · ... LPC host interface, 9 general purpose I/O port with 13 external interrupt source, 4 timers, 2 serial port, 2 SMBus interface for master and ...Missing: ITE | Show results with:ITE
  17. [17]
    Opening Up the Baseboard Management Controller
    Feb 1, 2020 · An LPC (low pin count) bus for communicating with the host. Intel's successor to LPC is the eSPI (Enhanced Serial Peripheral Interface bus).Missing: embedded automotive
  18. [18]
    LPC (Low Pin Count) Bus Controller - Lattice Semiconductor
    Low Pin Count Bus Controller Reference Design ... This reference design is based on the Intel Low Pin Count Interface Specification (version 1.1).
  19. [19]
    [PDF] C600 Series Chipset and Intel
    Supports 20 MHz, 33 MHz SPI devices. — Support up to two different erase granularities. • Low Pin Count (LPC) I/F. — Supports ...
  20. [20]
    [PDF] Intel® 700 Series Chipset Family Platform Controller Hub
    Dec 4, 2024 · The Intel 700 Series Chipset Family Platform Controller Hub is a platform controller hub, with flexible high speed I/O, and includes features ...
  21. [21]
    dISAppointment - LPC to ISA adapter - Page 6 - VOGONS
    Apr 6, 2023 · All the tech docs AMD ever opened up are here. Obviously not as comprehensive as Intel. It seems with SP5 the LPC bus is totally gone (per ...Page 10Page 2More results from www.vogons.org
  22. [22]
  23. [23]
  24. [24]
    A hijacker's guide to communication interfaces of the trusted platform ...
    The Low Pin Count (LPC) [16] bus was introduced to replace older legacy bus standards on PCI-bus based PC platforms. One of the main objectives for the design ...
  25. [25]
    TPM sniffing - SCRT Team Blog
    Nov 15, 2021 · It is possible to read and write data from a BitLocker-protected device (for instance, a stolen laptop) by sniffing the TPM key from the LCP bus.Missing: bandwidth vulnerabilities
  26. [26]
    DMA with ISA and LPC devices - The Linux Kernel Archives
    This document describes how to do DMA transfers using the old ISA DMA controller. Even though ISA is more or less dead today the LPC bus uses the same DMA ...Missing: legacy Windows
  27. [27]
    LPC: legacy ISA I/O support - LWN.net
    Oct 27, 2017 · This patchset introduces a generic I/O space management framework, LIBIO, to support I/O operations on host controllers operating either on MMIO buses or on ...Missing: Windows | Show results with:Windows
  28. [28]
    [PDF] Enhanced Serial Peripheral Interface (eSPI) - Intel
    The eSPI specification provides a path for migrating LPC devices over to the new eSPI interface. eSPI reuses the timing and electrical specification of Serial ...
  29. [29]
    [PDF] Enhanced Serial Peripheral Interface (eSPI) - Intel
    Low Pin Count (LPC) bus is a legacy bus developed as the replacement for Industry Standard Architecture (ISA) bus. The specification generally refers to EC/BMC/ ...
  30. [30]
  31. [31]
    Enhanced Serial Peripheral Interface (eSPI) Bus
    Feb 1, 2024 · The eSPI (enhanced serial peripheral interface) is a serial bus that is based on SPI. It also features a four-wire interface (receive, transmit, clock and ...
  32. [32]
    Enhanced Serial Peripheral Interface (eSPI) Bus
    The technical advancements include lower voltage signal levels (1.8V vs. 3.3V), lower pin count, and the frequency is twice as fast (66MHz vs. 33MHz) Because ...
  33. [33]
    [PDF] ECE1200 eSPI to LPC Bridge - Data Sheet - Microchip Technology
    The DC specifications for eSPI pins are found in the Intel eSPI Interface Base Specification. See Section 5.2, "Refer- ences," on page 25 for the eSPI document ...
  34. [34]
    Microchip Eases Migration of Mobile Devices to Intel's New ...
    Sep 7, 2015 · The MEC1418 (192 KB SRAM) embedded controller, supporting both the Intel LPC and eSPI interfaces, is also available for sampling and volume ...