THIS DOCUMENT IS PROVIDED "AS IS," WITH NO WARRANTIES WHATSOEVER, INCLU DING ANY
WARRANTY OF MERCHANTABILITY, NONINFRINGEMENT, FITNESS FOR ANY PARTICULAR PURPOSE,
OR ANY WARRANTY OTHERWISE ARISING OUT OF ANY PROPOSAL, SPECIFICATION OR SAMPLE. Intel
disclaims all liability, including liability for infringement of any proprietary rights, relating to use of information in this
specification.
Information in this document is provided in connection with Intel products. No license, express or implied, by estoppel
or otherwise, to any intellectual property rights is granted by this document. Except as provided in Intel's Terms and
Conditions of Sale for such products, Intel assumes no liability whatsoever, and Intel disclaims any express or implied
warranty relating to sale and/or use of Intel products, including liability or warranties relating to fitness for a particular
purpose, merchantability or infringement of any patent, copyright or other intellectual property right. Intel products are
not intended for use in medical, lifesaving, or life-sustaining applications.
Intel may make changes to specifications and product descriptions at any time, without notice.
Designers must not rely on the absence or characteristics of any features or instructions marked “reserved” or
“undefined.” Intel reserves these for future definition and shall have no responsibility whatsoever for conflicts or
incompatibilities arising from future changes to them.
The Intel
®
810 family of chipsets may contain design defects or errors known as errata that may cause the product to
Figure 9. Ring buffers......................................................................................................................................20
Figure 30. Ring buffers..................................................................................................................................170
Table 12. Bit Definition for Interrupt Control Registers .................................................................................348
R
xii
R
®
Intel
810 Chipset Family PRM
1. Introduction
The Intel® 82810 chipset is a highly integrated chipset designed for the basic graphics/multimedia PC platform. The
chipset consists of a Graphics and Memory Controller Hub (GMCH) host bridge and an I/O Controller Hub (ICH/ICH0)
bridge for the I/O subsystem. The GMCH integrates a system memory DRAM controller that supports a 64-bit, 100MHz DRAM array. The DRAM controller is optimized for maximum efficiency.
There are two versions of the GMCH (i.e., 82810, 82810-DC100), which are pin compatible. The difference between the
two versions is that the Intel
®
82810-DC100 integrates a display cache DRAM controller that supports a 4-MB, 32-bit,
100-MHz DRAM array for enhanced 2D and 3D performance.
This document describes both versions of the GMCH (i.e., 82810, 82810-DC100).
An overview of the Intel 82810 chipset is provided in the next section.
Notes: In this document “GMCH” refers to both the 82810 and 82810-DC100 chipsets, unless otherwise specified. The
Intel 82810 and Intel 82810-DC100 chipsets may contain design defects or errors known as errata, which may
cause the product to deviate from published specifications. Current characterized errata are available upon
request.
1.1 Audience
This document is intended for hardware, software, and firmware designers who seek to implement or utilize the graphic
functions of the Intel 82810 and Intel 82810-DC100 chipsets. Familiarity with 2D and 3D graphics programming is
assumed.
1.2 Reference Documents
The following documents should be available for reference when using this specification:
®
Inte1
•
•
•
82810/82810-DC100 Graphics and Memory Controller Hub (GMCH) Datasheet
®
Intel
82801AA (ICH) and Intel® 82801AB (ICH0) I/O Controller Hub Datasheet
®
Intel
82802AB/82802AC Firmware Hub (FWH) Datasheet
1
Intel® 810 Chipset Family PRM
1.3 Intel® 82810 Chipset System
The Intel 82810 Chipset uses a hub architecture, with the GMCH as the host bridge hub and the 82801xx I/O Controller
Hub (ICH) as the I/O hub. The ICH is a highly integrated, multifunctional I/O controller hub that provides the interface
to the PCI bus and integrates many of the functions needed in today’s PC platforms. The GMCH and ICH communicate
over a dedicated hub interface. As for the GMCH, there are two versions of the ICH (i.e., 82801AA: ICH, 82801AB:
ICH0). This provides added flexibility in designing cost-effective system solutions. These devices are pin compatible
and are housed in 241-pin packages. The GMCH devices are designed to work with either ICH or ICH0.
82801AA (ICH) / 82801AB (ICH0) functions and capabilities include:
PCI Rev. 2.2 compliance, with support for 33-MHz PCI operations
•
ICH0 supports up to 4 Req/Gnt pairs (PCI slots). ICH supports up to 6 Req/Gnt pairs (PCI slots).
•
Power management logic support
•
Enhanced DMA controller, interrupt controller, and timer functions
•
Integrated IDE controller. ICH0 supports Ultra ATA/33. ICH also supports Ultra ATA/66.
•
R
USB host interface, with support for 2 USB ports
•
System Management Bus (SMBus) compatible with most I
•
AC ’97 2.1-compliant link for audio and telephony CODECs
concurrency support
Concurrent operations of processor and system
•
busses, supported via dedicated arbitration and data
buffering
Data Buffering
Distributed data buffering model for optimum
•
concurrency
DRAM write buffer with read-around-write
•
capability
Dedicated CPU-DRAM, hub in t erface-DRAM, and
•
graphics-DRAM read buffers
Power Management Functions
SMRAM space remapping to A0000h (128 KB)
•
Optional extended SMRAM space above 256 MB;
•
additional 512-KB/1-MB TSEG from top of memory;
cacheable
Stop clock grant and halt special cycle translation
•
from the host to the hub interface
ACPI-compliant power management
•
APIC buffer management
•
SMI, SCI, and SERR error indication
•
Supporting I/O Bridge
241-pin BGA I/O controller hub (ICH0/ICH)
•
Packaging/Power
421 BGA
•
1.8V core with 3.3V CMOS I/O
•
6
R
®
Intel
810 Chipset Family PRM
Figure 2. Intel® 82810 chipset system block diagram with Intel® 82810 GMCH and either ICH or ICH0
Digital Video Out
2 IDE Ports
ICH = Ultra ATA/66
ICH0 = Ultra ATA/33
2 USB
Ports
Intel
®
Intel
Intel
®
Pentium
®
III
Processor,
®
Pentium
II
Processor,
and
®
Celeron™ Processor
SystemBus (66/100 MHz)
Intel® 810 Chipset
Encoder
®
82810 Chipset
TV
Display
Intel
(GMCH0)
- Memory Controller
- Graphics Controller
- 3D Engine
- 2D Engine
- Video Engine
64 Bit /
100 MHz Only
System
Memory
PCI Slots
(ICH = 6 Req/Gnt pairs)
(ICH0 = 4 Req/Gnt pairs)
PCI Bus
ISA
Option
LAN
Option
USB
USB
ICH and ICH0
(I/O Controller Hub)
FWH
(Firmware Hub)
AC'97
Super
I/O
Audio Codec
Modem Codec
sysblk1.vsd
7
Intel® 810 Chipset Family PRM
Figure 3. Intel® 82810 chipset system block diagram with Intel® 82810-DC100 GMCH and ICH
Intel® Pentium® lll processor,
®
Pentium® II processor,
Intel
Intel
and
®
Celeron™ Processor
System Bus (66/100 MHz)
R
Digital Video Out
Display Cache
(4-MB SDRAM,
100 MHz Only)
2 IDE Ports
Ultra ATA/66
TV
2 USB
Ports
USB
Encoder
Display
USB
Intel® 810 Chipset
®
Intel
82810-DC100
Chipset (GMCH)
- Memory Controller
- Graphics Controller
- 3D Engine
- 2D Engine
- Video Engine
ICH
(I/O Controller Hub)
FWH
(Firmware Hub)
64 Bit /
100 MHz Only
PCI Bus
Super
I/O
AC'97
System
Memory
PCI Slots
(ICH=6 Req/Gnt pairs)
Audio Codec
Modem Codec
ISA
Option
LAN
Option
sysblk2.vsd
8
R
®
®
Intel
810 Chipset Family PRM
2.1 GMCH Overview
Figure 4 is a block diagram of the GMCH, illustrating the various interfaces and integrated components of the GMCH
chip.
GMCH functions and capabilities include:
Support for a single-processor configuration
•
64-bit GTL+-based system bus interface at 66 MHz / 100 MHz
•
32-bit host address support
•
64-bit system memory interface with optimized support for SDRAM at 100 MHz
•
Integrated 2D & 3D graphics engines
•
Integrated 230-MHz DAC
•
Integrated digital video out port
•
4-MB display cache (82810-DC100 only)
•
Figure 4. GMCH block diagram
Display Engine3D Engine
HW Motion Comp
Analog
Display
Out
Digital
Video
Out
DDC
I
2
C
DACOverlay
HW Cursor
Digital Video Out
Port
3D
Engine
2D Engine
Stretch
BLT Eng
BLT Eng
System Bus Interface
Buffer
Buffer
Hub Interface
Memory Interface
System
Memory
Display Cache
Memory
(Intel
82810DC100
Chipset only)
gmch_blk2.vsd
9
Intel® 810 Chipset Family PRM
R
This page intentionally left blank.
10
R
®
Intel
810 Chipset Family PRM
3. System Address Map
The following figure shows the system memory address map for the Intel® 82810 chipset. The GMCH memory map
includes a number of programmable ranges. ALL of these ranges must be unique and non-overlapping. There are NO
hardware interlocks to prevent problems in the case of overlapping ranges. Accesses to overlapped ranges may produce
indeterminate results.
11
Intel® 810 Chipset Family PRM
64 GB
4 GB
FEEC 0000h
FEEB FFFFh
FEEA 0000h
FEE9 FFFFh
Size=0/512 KB (fixed)
Base=MMADR Reg.
(14h); Dev 1
Size=0/32/64MB; MISCC Reg.
SMRAM Reg. (70h); Dev 0
SMRAM Reg. (70h); Dev 0
Base Programmed in GC Unit
(72h); Dev 0
Base=GMADR Reg.
(10h); Dev 1
TOM (512 MB Max.)
Size=0KB/512KB/1MB;
Size=0KB/512KB/1MB;
Size=64KB
100000h
0FFFFFh
C0000h
BFFFFh
A0000h
9FFFFh
00000h
System Memory Space
Extended CPU
Memory Space
Optional HSEG
Graphics Controller (GC)
(memory-mapped
control/status registers)
Logical Graphics
Memory
(32MB/64MB)
Optional TSEG
Optional Graphics Buffer
GFX Trans. Tbl (GTT)
Optional ISA Hole
Video BIOS
(shadowed in memory)
Graphics Adapter
(128 KB)
System/Application SW
PCI Memory
PCI Memory
PCI Memory accesses
to GC registers
PCI Memory
PCI Memory Accesses to
Graphics Logical Memory
Translated Through
Graphics Translation
Table (GTT)
PCI Memory
Main
Memory
GTT Access via GC
Control Registers
16 MB
15 MB
1 MB
DOS
Compatibility
Memory
Optionally
mapped to the
internal GC
0FFFFFh1 MB
Segment F
(BIOS Shadow Area, etc.)
0F0000h
0EFFFFh
0E0000h
0DFFFFh
0DC000h
0DBFFFh
0D0000h
0CFFFFh
0C0000h
0BFFFFh
0A0000h
09FFFFh
000000h
Segment E
(BIOS Shadow Area, etc.)
Optional CD Hole
Segment D
(BIOS Shadow Area, etc.)
Segment C
(BIOS Shadow Area, etc.)
Std PCI/ISA Video Mem
(SMM Mem) 128 KB
DOS Area
(640 KB)
mem_map.vsd
R
960 KB
896 KB
880 KB
832 KB
768 KB
640 KB
0 KB
Figure 5. System memory map
12
R
®
Intel
810 Chipset Family PRM
Except for the PCI Configuration registers, all of the GC registers are memory mapped. The base address of this 512-KB
memory block is programmed in the MMADR PCI configuration register. The following figure shows the high-level
memory map of the GC registers. Note that 2D control registers (VGA and extended VGA registers) also are located at
their standard I/O locations.
Note:
1. Some Overlay registers are double buffered with an additional address range
in graphics memory. See Overlay Register
Chapter for details.
I/O Space Map
(Standard graphics locations)
Memory Space Map
(512 KB allocation)
- Cursor Registers
- Display Registers
- Pixel Pipe Registers
Reserved
- Video Capture Registers
- DVD Registers
Blt Engine Control Status (RO)
Overlay Registers
Reserved
Page Table Range
Reserved
Clock Control Registers
Misc I/O Control Registers
Reserved
Local Memory Interface
Control Registers
- Instruction Control Regs.
- Fence Table Registers
- Interrupt Control
VGA and Ext. VGA RegistersVGA and Ext. VGA Registers
1
Offset From
Base_Reg
7FFFFh
70000h
6FFFFh
60000h
5FFFFh
50000h
4FFFFh
40000h
3FFFFh
30000h
2FFFFh
20000h
1FFFFh
10000h
0FFFFh
07000h
06FFFh
06000h
05FFFh
05000h
04FFFh
04000h
03FFFh
03000h
02FFFh
01000h
00FFFh
00000h
MMADR Register
(Base Address)
1931
.
Figure 6. Graphics controller I/O and memory map
reginstm.vsd
13
Intel® 810 Chipset Family PRM
R
VGA and Extended VGA Control Registers (00000h
00FFFh)
−−−−
These registers are located in both I/O space and memory space. The VGA and extended VGA registers contain the
following register sets: General Control/Status, Sequencer (SRxx), Graphics Controller (GRxx), Attribute Controller
(ARxx), VGA Color Palette, and CRT Controller (CRxx) registers. Detailed b it d e scriptions are provided in the
chapter that discusses the VGA and extended VGA registers. The registers within a set are accessed using an indirect
addressing mechanism, as described at the beginning of each section. Note that some register description sections
have additional operational information at the beginning of the section.
Instruction, Memory, and Interrupt Control Registers (01000h
02FFFh)
−−−−
The instruction and interrupt control registers are located in main memory space and contain the following types of
registers:
Instruction Control Registers
••••
Ring buffer registers and page table control registers are located in this address range. Various instruction status,
error, and operating registers are located in this group of registers.
Graphics Memory Fence Registers
••••
The graphics memory fence registers are used for memory tiling capabilities.
Interrupt Control/Status Registers
••••
This register set provides interrupt control/status for various GC functions.
Display Interface Control Register
••••
This register controls the FIFO watermark and provides burst length control.
Local Memory Registers (03000h
03FFFh)
−−−−
These registers are located in main memory space and provide local memory DRAM control.
I/O Control Registers (05000h
05FFFh)
−−−−
This chapter provides I/O control register functions.
Clock Control Registers (06000h
06FFFh)
−−−−
This memory address space is the location of the GC clock control and power management registers.
Page Table Range (10000h
Overlay Registers (30000h
1FFFFh)
−−−−
3FFFFh)
−−−−
These registers provide control of the GC overlay engine. The overlay registers are double-buffered, with one register
buffer located in graphics memory and the other on the GC chip. On-chip registers are not directly writeable. To
update the on-chip registers, software writes to the register buffer area in graphics memory and instructs the GC to
update the on-chip registers.
Blitter Status Registers (40000h
4FFFFh)
−−−−
For debug purposes only, a set of read-only registers provides visibility into the BLT engine stat us.
LCD/TV-out, and HW DVD Registers (60000h
6FFFFh)
−−−−
This memory address range is used for LCD/TV-out control registers and for HW DVD control registers.
Cursor, Display, and Pixel Pipe Registers (70000h
7FFFFh)
−−−−
This memory address range is used for cursor control, display, and pixel pipe control registers.
14
R
®
Intel
810 Chipset Family PRM
3.1 GC Register Memory Address Map
All GC registers are memory-mapped. In addition, the VGA and extended VGA registers are I/O mapped.
02050h–0207Fh
02080h–02083hHWS_PGAHardware Status Pa ge Ad dress RegisterR/W
02084h–02087h
02088h–0208BhIPEIRInstruction Parser Error Identification R egisterRO
0208Ch–0208FhIPEHRInstruction Parser Error Header RegisterRO
02090h–02091hINSTDONEInstruction Stream Interface Don e RegisterRO
02092h–02093h
02094h–02097hNOPIDNOP Identification Regist erRO
02098h−002099h
0209Ah–0209Fh
VGA and VGA Extended Registers
These registers are both memory- and I/O-mapped and are listed in the
following table. Note that the I/O address and memory offset address
are the sam e value for each register.
Reserved
Low Priority Ring Buffer (4 DWs)
Interrupt Ring Buffer (4 DWs)
Reserved
Reserved
Reserved
Reserved
Reserved
Reserved
Reserved
Reserved
Reserved
Reserved
Reserved
R/W
020BDh−020BFh
020C0hINSTPMInstruction Parser Mode Regist erR/W
020C1h–020C3h
020C4h–020C7hINSTPSInstruction Pa rs er State RegisterRO
020C8h–020CBhBBP_PTRB atch Buffer Parser Point er RegisterRO
020CCh–020CFhABB_SRTActive Batch Buffer Start Ad dress RegisterRO
Reserved
Reserved
15
Intel® 810 Chipset Family PRM
Table 1. Memory-Mapped Registers
Address OffsetSymbolRegister NameAccess
020D0h–020D3hABB_ENDActive Batch Buffer End Address RegisterRO
020D4h–020D7hDMA_FADDDMA Engine Fetch Address RegisterRO
020D8h–020DBhFW_BLCFIFO Watermark and Burst Length ControlR/W
020DCh–020DBh
020DCh–020DFhMEM_MODEMemory Interface Mod e RegisterR/W
020E0h−02FFFh
03000hDRTDRAM Row TypeR/W
03001hDRAMCLDRAM Control LowR/W
03002hDRAMCHDRAM Control HighR/W
03003h−03FFFh
40000h–40003hBR00BLT Opcode and ControlRO
40004h–40007hBR01Setup BLT Raster OP, Control, and Destination OffsetRO
40008h–4000BhBR02Clip Rectangle Y1 AddressRO
4000Ch–4000FhBR03Clip Rectangle Y1 AddressRO
40010h–40013hBR04Clip Rectangle X1 and X2 AddressRO
40014h–40017hBR05Setup Expansion Background ColorRO
40018h–4001BhBR06Setup Expansion Foreground ColorRO
4001Ch–4001FhBR07Setup Color Pattern AddressRO
40020h–40023hBR08Destination X1 and X2RO
40024h–40027hBR09Destination Address and Destination Y1 AddressRO
40028h–4002BhBR10Destination Y2 AddressRO
4002Ch–4002FhBR11BLT Source Pitch (Offset) or Monochrome Source QuadwordsRO
40030h–40033hBR12Source AddressRO
40034h–40037hBR13BLT Raster OP Control, and Destination PitchRO
40038h–4003BhBR14Destination Width and HeightRO
4003Ch–4003FhBR15Color Pattern AddressRO
40040h–40043hBR16Pattern Expansion Background and Solid Pattern ColorRO
40044h–40047hBR17Pattern Expansion Foreground ColorRO
40048h–4004BhBR18Source Expan sion Background and Destination ColorRO
4004Ch–4004FhBR19Source Expansion Foreground ColorRO
40074h–40077hSSLADDSource Scan Line AddressRO
40078h–4007BhDSLHDestination Scan Line HeightRO
4007Ch–4007FhDSLRADDDestination Scan Line Read AddressRO
OV0STRIDEOverlay 0 StrideRO
YRGB_VPHY/RGB Vertical PhaseRO
UV_VPHUV Vertical PhaseRO
HORZ_PHHorizontal PhaseRO
INIT_PHInitial PhaseRO
DWINPOSDestination Window PositionRO
DWINSZDestin at ion Window SizeRO
SWIDSource WidthRO
SWIDQWSource Width In qwordsRO
SHEIGHTSource HeightRO
YRGBSCALEY/RGB Scale FactorRO
UVSCALEU V Scale FactorRO
OV0CLRC0Overlay 0 Color Correction 0RO
OV0CLRC1Overlay 0 Color Correction 1RO
DCLRKVDestination Color Key ValueRO
DCLRKMDestination Color Key MaskRO
SCLRKVHSource Color Key Value HighRO
SCLRKVLS ource Color Key Value LowRO
SCLRKMSource Color Key MaskRO
OV0CONFOverlay 0 ConfigurationRO
OV0CMDOverlay 0 CommandRO
AWINPOSAlpha Blend Window PositionRO
AWINZAlpha Blend Window SizeRO
BLT Engine Status (40000h−4FFFFh) (Software Debug)
Reserved
17
Intel® 810 Chipset Family PRM
Table 1. Memory-Mapped Registers
Address OffsetSymbolRegister NameAccess
40080h–4FFFFh
LCD/TV-Out
60000h–60003hHTOTALHorizontal TotalR/W
60004h–60007hHBLANKHorizontal BlankR/W
60008h–6000BhHSYNCHorizontal SyncR/W
6000Ch–6000FhVTOTALVerti cal TotalR/W
60010h–60013hVBLANKVertical BlankR/W
60014h–60017hVSYNCVertical SyncR /W
60018h–6001BhLCDTV_CLCD / TV-out ControlR/W
6001Ch–6001FhOVRACTOverlay Active RegisterR/W
60020h–60023hBCLRPATBorder Color PatternR/W
70000h–70003hDISP_SLDisplay Scan Line CountR/W
70004h–70007hDISP_SLCDisplay Scan Line Count Range CompareR/W
70008h–7000BhPIXCONFPixel Pipelin e ConfigurationR/W
7000Ch–7000FhBLTCNTLBLT ControlR/W
70014h–7001FhSWF[1:3]Software Flags [1:3] (3 registers)R/W
70020h–70023hDPLYBASEDisplay Base AddressR/W
70024h–70027hDPLYSTASDisp lay Status SelectR/W
70080h–70083hCURCNTRCursor Control and Vertical ExtensionR/W
70084h–70087hCURBASECursor Base AddressR/W
70028h–7002BhCURPOSCursor PositionR/W
7002Ch–7FFFFh
LCD/TV-Out and HW DVD Registers (60000h–6FFFFh)
Display and Cursor Control Registers (70000h–7FFFFh)
Reserved
Reserved
R
3.2 Graphics Address Translation
The Intel 82180 chipset employs a logical memory addressing concept for accessing graphics data. The GC supports a
64-MB logical address space, where each 4-KB logical page can be mapped to a physical memory page in system RAM,
PCI memory or an optional display cache memory. This mapping is performed by means of a Graphics Translation Table
(GTT).
GC engines can address the full 64-MB logical address space. The CPU is provided access to either the full 64-MB space
or just the lower 32 MB, via a PCI memory range associated with the graphics device.
The GTT is allocated in system RAM and maintained by the graphics driver. The 4 KB-aligned physical address of the
64-KB GTT is programmed via the GC’s PGTBL register.
Each 16K-dword GTT entry can map a 4-KB logical page to a physical memory page. Fields in the GTT entry control
the mapping of that logi cal page in the following manner:
(GTT register field “V”) whether or not that logical 4-KB page is mapped to a physical memory page. Accesses to
invalid pages will result in an error interrupt.
(GTT register field “T1T0”) the physical memory address space of the mapped page:
System RAM page (no processor cache snoop)
PCI memory page (processor cache snooped if below TOM)
Display cache page
The page number of the mapped page (within the particular physical memory address space)
18
R
d
®
Intel
810 Chipset Family PRM
Although the GTT format permits any logical page to be mapped to any page in the supported physical memory address
spaces, the GC imposes restrictions on the how specific graphics operands (buffers, etc.) can be mapped to physical
memory.
The GTT entries must be written via a GTT alias in the graphics device’s memory-mapped register space (10000h1FFFFh). This allows the GC to snoop GTT entry writes and invalidate graphics TLBs as required. The GTT entries
must not be written directly in system memory.
System Memory
310
4 GB
Base + 64 MB
Virtual
Graphics
Memory
Base
TOM
4 KB
4 KB
Figure 7. GTT mapping
Translation Table
310310
Base + 32 MB
GTT Maps 4KB blocks of Virtual
Graphics Memory to 4 KB pages in
System Memory
Graphics
(GTT)
64 KB
0 KB
GTT Maps 4KB blocks of
Virtual Graphics Memory
to 4 KB pages in Display
Cache
Graphics Engine
Address Space
Optional Display
Cache
64 MB
0
gtt.vs
3.3 Instruction Parser
The GC's Instruction Parser (IP) unit is responsible for
Detecting the presence of instructions (within the ring buffers)
•
Arbitrating the execution of instruction streams
•
Reading instructions from ring buffe rs and batch buffers via DMA
•
Parsing the common "client" (destination) field of instructions
•
Executing instruction parser instructions (which control IP functionality, provide synchronization functions, and
•
provide miscellaneous GC control functions)
Redirecting 2D and 3D instructions to the appropriate destination, while following drawing engine concurrency and
•
coherency rules
Figure 8 is a high-level diagram of the GC instruction interface.
The GC provides two Ring Buffer (RB) mechanisms via which instructions can be passed to the instruction parser. They
are referred to as the interrupt and low-priority RBs, and they are basically identical, except for differences in arbitration
rules and priority.
Figure 9. Ring buffers
20
Buffer
Length
Buffer
Length
Graphics Memor y
Low Priorit y Ring
Buffer
Interrupt Ring
Buffer
Wrap A r ou nd
Starting Address
Head P oi n ter
DMA Po inter
Ta il Poin ter
Starting Address
Head P oi n ter
DMA Po inter
Ta il Poin ter
RingBuf.vsd
R
®
Intel
810 Chipset Family PRM
3.4.1 Ring Buffer Registers
A ring buffer is defined by a set of four ring buffer registers. Before an RB can be used for instruction transport, software
needs to program these registers. The fields contained within these registers are as follows:
Ring Buffer Valid: This bit controls whether the RB is included in the instruction arbitration process. Software must
program all other RB parameters before enabling an RB. An RB can be disabled and later re-enabled. Enabling or
disabling an RB does not, of itself, change any other RB register fields.
Start Address: This field points to a contiguous, 4KB-aligned, linear (e.g., not tiled) memor y address regio n, which
provides the actual instruction buffer area.
Buffer Length: The size of the buffer, in 4-KB increments, up to 2 MB.
Head Offset: This is the dword offset (from the start address) of the next instruction executed by the IP. The IP will
update this field as instructions are retired. (Note that, if instructions are pending execution, the IP likely will have
fetched instructions past the head offset). Because the GC does not “reset” the head offset when an RB is enabled,
software must program the head offset field before enabling the ring buffer. Although this allows software to enable
an RB with any legal values for head/tail (i.e., it can enable or re-enable the RB with instructions already pending),
the software is expected to initialize the head offset at 0. Once the head offset reaches the tail offset (head = tail), the
IP considers the RB "empty."
Head Wrap Count: This field is incremented by the IP each time the head offset wraps back to the start of the buffer.
As it is included in the dword written in the “report head” process, software can use this field to track IP progress as
if the RB had a “virtual” length 2048 times the size of the actual physical buffer.
Tail Offset: This is the qword offset (from the start address) where software will write the next instruction. After
writing instructions into the RB, software updates the tail offset field in orde r to submit the instructions for execution
(by setting it to the qword offset immediately following the last instructio n to be submitted). The submitted
instructions can wrap from the end of the buffer back to the top, in which case the tail offset written will be less than
the previous value. Note that, because the RB empty condition is defined as "head offset == tail offset," software
must leave at least one qword free at all times. (That is, the buffer is considered "full" when only one qword is free.)
Automatic Report Head Enable: Software can request that the hardware head pointer register contents be written
("reported") periodically to snooped system memory. This is desirable, as software needs to use the head offset to
determine the amount of free space in the RB, and having the head pointer periodically reported to system memory
provides a fairly accurate head offset value automatically (i.e., without having to explicitly store a head offset value
via an instruction). The head pointer register will be stored at an RB-specific displacement into the "hardware status
page" (defined by the HWSTAM register).
Table 2. Ring Buffer Characteristics
CharacteristicDescription
Alignment4-KB-page aligned
Max. size2 MB
LengthProgrammable in number of 4-KB pages
Start pointerProgrammable page-aligned address of the buffer
Head pointerProgrammable to initially setup ring
Hardware-maintained dword offset in the ring buffer. Pointer wraps.
DMA pointerHardware-maintained DMA request double qword offset. Pointer wraps.
Tail pointerProgrammable double qword offset in the ring buffer
21
Intel® 810 Chipset Family PRM
3.4.2 Ring Buffer Initialization
Before initializing an RB, software must first allocate the desired number of 4-KB pages for use as buffer space. Then
the RINGBUF registers associated with the RB are programmed. Once the Ring Buffer Valid bit is set, the RB will be
considered for instruction arbitration, and the head and tail offsets will either indicate an empty RB (i.e., head == tail) or
will define some number of instructions to be executed.
3.4.3 Ring Buffer Use
Software can write new instructions into the "free space" of the RB, from the tail offset up to (but not including) the
qword prior to the qword indicated by the head offset. (Remember, software must leave at least one qword empty in the
RB at all times.) Note that this "free space" may wrap from the end of the RB back to the start.
Software must use some mechanism to track instruction execution progress, in order to determine the "free space" in the
RB. This can either be:
A direct read of the Head Pointer register
The automatic reporting of the Head Pointer register
The explicit reporting of the Head Pointer register via the GFXCMDPARSER_REPORT_HEAD instruction
Another "implicit" means by which software can determine how far the IP has progressed in retiring instructions fro m
an RB. This could include the use of "Store DWORD" instructions to write sequencing data to system memory.
R
Once the instructions have been written (and padded out to a qword, if necessary), software can write the Tail Pointer
register to submit the new instructions for execution.
22
R
®
Intel
810 Chipset Family PRM
3.5 Batch Buffers
The GC provides for the execution of instruction sequences external to RBs. These sequences are called "batch buffers,"
and they are initiated through the use of GFXCMDPARSER_BATCH_ BUFFER instructions that specify the starting
address and length of the batch buffers. The arbitration rules used by the IP when executing batch buffers differ from
those employed when executing RBs, and they are described later in this chapter. When a batch buffer instruction is
executed out of an RB, an initiated batch buffer sequence allows the GC to read the instructions sequentially (via DMA)
from the batch buffer.
What happens when the end of the batch buffer is reached depends on the final instruction in the buffer. If the final
instruction is a GFXCMDPARSER_BATCH_BUFFER instruction, another batch buffer sequence is initiated. This
process, called "chaining," continues until a batch buffer terminates with an instruction other tha n
GFXCMDPARSER_BATCH_BUFFER, at which point execution will resume in the RB at the instruction follo wing the
initial GFXCMDPARSER_BAT CH_BUFFER.
Buff er
Chaining
Buff er
Chaining
Figure 10. Batch buffer sequence
Instruction
Instruction
Batc h Buff Inst r
Instruction
Instruction
Batc h Buff Inst r
Instruction
Instruction
Instruction
From R ing Buffer
Return to Ring Buffer
btch_buf.vsd
23
Intel® 810 Chipset Family PRM
System Memory
Graphics Controller
Register Range
(512 KB)
Base+301xxh
(Base = MMADR PCI Reg.)
Overlay 0 Reg
Graphics Memory
R
On-chip registers for Overlay 0
(read only; debug)
Base+xxh
Overlay 0 Reg
(Base = OV0ADD Reg.)
overlay1.vsd
Figure 11. Memory with overlay active
Memory buffer area for loading on-chip registers
- Software setsup register values
- HW updates on-chip regs for next VBLANK
24
R
®
Intel
810 Chipset Family PRM
4. Graphics Translation Table Range Definition
Address offset:10000h-1FFFFh
Default va l ue:Page table range 64 KB
Access:Aligned dword-qword, Write Only
This range defined within the graphics memory-mapped register space enables the memory manager to access the
graphics translation table. A page table write will invalidate that entry in internal translation table cache s (TLBs). The
translation table resides in system memory and can be accessed directly by the memory manager. However, to ensure
coherency between hardware-maintained translation caches and the translation table in main memory, the memory
manager must use this range to update the translation table.
The page table must be QW aligned, with each entry being dword aligned such that each QW stores the translation for
two 4-KB pages. The page table base address for graphics memory will be programmed in the PGTB_CNTL register.
For a graphics memory of 64 MB with a TLB block size of 4 KB, 16 K entries will be needed. Each entry can be
accommodated in 4Bs, so the page table will be 64 KB in size.
Page Table Entry: 1 dword per 4-KB page
31302912113210
XX=00Physical address 29:12ReservedT1T0V
V: 1 = Valid page table entry (PTE)
0 = Invalid page table entry (PTE). An access to an invalid PTE will result in an interrupt.
T1T0: 01 = Physical address targets local memory.
00 = Physical address targets main memory (not snooped).
11 = Physical address targets cacheable main memory (results in snoop on processor bus) .
10 = Reserved.
Note: T1T0 = 11 is used only if the surface is a blit source or destination operand used within the conte xt of a
source copy command.
XX: Reserved. Must be 0.
25
Intel® 810 Chipset Family PRM
R
This page intentionally left blank.
26
R
®
Intel
810 Chipset Family PRM
5. Basic Initialization Procedures
5.1 Initialization Sequence
The initialization of graphics driver resources can be broken down into three categories: hardware detection, frame
buffer initialization, and hardware register initialization. Each category is discussed in more detail in the following
sections.
In all discussions that follow, there is a basic assumption that the graphics adapter has completed the power-on video
BIOS initialization or video BIOS reset. Therefore, the adapter is in a known state and will respond in compliance with
the VGA and VESA specifications.
5.2 Hardware Detection (Probe)
Most operating systems will probe for installed devices. The Intel® 8281x family of devices advertises their presence in
PCI space by using unique values in the PCI VendorId and DeviceId locations. The following table lists the device IDs
used to identify the members of the 8281x family of graphics adapters:
Internal graphics device
82815 no AGP, internal graphics only
GMCH host-hub interface bridge / DRAM controller
82815 no AGP, internal graphics only
Internal graphics device
GMCH host-hub interface bridge / DRAM controller
AGP bridge
27
Intel® 810 Chipset Family PRM
80861130082815 fully featured Solano
GMCH host-hub interface bridge / DRAM controller
808611311
82815 fully featured Solano
AGP bridge
808611322
82815 fully featured Solano
Internal graphics device
Once the operating system has identified the device, it can load the appropriate driver.
One of the first tasks of the driver is to make sure that the device matches the driver. Checking that the driver and device
match is done in much the same way that the operating system identifies the graphics adapter. That is, the PCI VendorId
and ProductId values are examined. Some operating systems will make available to the driver the values it found during
its scan. If not, the driver must scan the PCI space until it finds a match on the VendorId and ProductId values. The
driver normally caches this information so that it is accessible by other driver modules, when needed.
The next task of the device driver is to ensure that required resources are present. These resources include the minimum
memory requirements, IO address space requirements, and operating system support requirements (such as GART
support). If the driver detects that the operating system or the physical hardware does not meet the driver’s minimum
requirements, the driver should not load. The operating system should then be able to make use of the graphics adapter in
its VGA- and VESA-compliant mode.
R
If the operating system and hardware support are present, the driver should acquire the blocks of memory and IO address
space that will be required. These blocks should include at least the following:
Memory-mapped IO address space: 512 KB beginning at 0x80000
•
Linear frame buffer space: 32 or 64 MB beginning at 0xfe000000
•
Legacy IO addresses to support monochrome or color monitors
•
VGA IO addresses
•
28
R
®
Intel
810 Chipset Family PRM
5.3 Frame Buffer Initialization
The frame buffer initialization is responsible for setting up the memory that will contain the display data. Other objects
also can be stored in display memory.
The following steps should be performed:
Map a 0x80000-byte region in memory to the MMIO base address. The base address of the memory-
•
mapped region should be programmed into the MMADDR register, offset 14 in the PCI address space.
Allocate enough memory for the frame buffer from a memory pool created during initialization. The
•
amount of memory is determined by system characteristics, but should default to at least 8 MB.
If a hardware cursor is being used, allocate memory for the hardware cursor from the same memory
•
pool. The hardware does not use the GART to access the memory for the cursor, so local-to-physical
memory address translation must be performed. The hardware cursor memory address should be
programmed into the CURBASE register, memory-mapped address 70084h.
The low-priority ring buffer memory should be initialized to 0. The low-priority ring buffer pointers
•
should be programmed into the ring buffer pointer registers, RINGBUF, which begin at offset 2030h in
the memory-mapped IO space.
5.4 Hardware Register Initialization
5.4.1 Color vs. Monochrome Monitors
The mapping and initialization of some hardware registers depends in part on whether the graphics adapter is attached to
a monochrome or color monitor. The following steps illustrate how to determine the type of output device attached to the
graphics adapter:
Read the Miscellaneous Output Register (0x3cc).
•
Test the low-order bit of the Miscellaneous Output Regi ster, and interpret it as follows:
•
0: The adapter is in monochrome monitor mode. In this mode, the control register is 3b4 and
•
3b5, and status is at 3ba.
1: The adapter is in color monitor mode. In this mode, the control register is 3d4 and 3d5, and
•
status is at 3da.
See the section on VGA compatibility for a description of the register space that must be acquired.
29
Intel® 810 Chipset Family PRM
5.4.2 Protect Registers: Locking and Unlocking
In order to make use of some protected VGA registers, a locking and unlocking mechanism needs to be implemented.
The following steps illustrate how to unlock (or unprotect) the VGA registers:
Send a VERT_SYNC_END value to the register at vgaBase + 4.
•
Read the value in the register at vgaBase + 5.
•
Clear the high-order bit of the value just read.
•
Write the resulting value back into the register at vgaBase + 5.
•
5.4.3 Checking Memory Frequency
The driver behavior occasionally must be modified, depending on the frequency at which the memory is running. The
following steps illustrate how to determine the local memory frequency:
Read the contents of the Intel 82810 Chipset Configuration Register (PCI address space 0x50).
•
Examine the value of bit 4.
•
R
The value is interpreted as follows:
•
0: Frequency is 100 MHz.
•
1: Frequency is 133 MHz.
•
30
R
®
Intel
810 Chipset Family PRM
5.5 Hardware State
Under certain conditions, it may be necessary to save and restore the hardware state of the graphics adapter. These
conditions include mode switching, output device switching, processing changes in po wer state, and others. The next t wo
sections provide a brief description of the state saving and restoration requirements.
5.6 Saving the Hardware State
Note that the VGA register unlocking protocol must be performed in order to access some of the registers described
below.
The driver should preserve the following registers during a state change in order to provide complete state restoration in
the future:
The graphics adapter state should be restored by performing the following steps. Note some of the synchronization
operations, especially those that ensure that the local memory is idle during the state restore. Also, much of the work
involves reprogramming the registers with the values captured during the save-state operation.
Blank the screen.
•
Turn off DRAM refresh.
•
Read the value of the DRAM_CONTROL_HI Register (MM 0x3002).
•
Set the DRAM Refresh Rate bits (DDR Bits 4:3) to Disable_Refresh (value 0).
•
R
Write the modified value back to the DRAM_CONTROL_HI Register.
•
Write the M, N, and P (i.e., the Divisor Select value) values from the saved state information.
•
Restore the 8-bit DAC mode to what it was when the state was saved, but preserve the current value of
•
the rest of the register containing this flag:
Read the Pixel Pipeline Configuration 0 Register.
•
Clear the current value of the 8- or 6-bit DAC mode.
•
OR–in (only) the value of the DAC_8_BIT from saved register information of the Pixel
•
Pipeline Configuration 0 Register.
Write the result back to the Pixel Pipeline Configuration 0 Register.
•
Restore the generic VGA registers to the values captured at save-state time.
•
32
R
Restore the following registers to their saved state values:
The following registers should restore only certain bits from the saved state values:
•
Interlace ControlCRX 70
Read the current value.
•
Clear the interlace enable bit.
•
OR–in the saved value of the Interlace Control Register.
•
Write the result back into the Interlace Control Register.
•
Address Mapping:GR10
Read the current value of the Address Mapping Register.
•
Save only the reserved bits values (bits 7:5).
•
OR–in the saved value of the Address Mapping Register.
•
Write the result back into the Address Mapping Register.
•
Now the DRAM refresh can be turned on:
•
Read the value of the DRAM_CONTROL_HI Register.
•
Turn off the DRAM_REFRESH_RATE bits.
•
OR–in a 60-Hz refresh rate value.
•
Write the result back into the DRAM_CONTROL_HI Register.
•
33
Intel® 810 Chipset Family PRM
Other registers that should restore only certain bits from the saved-state values:
•
Bit Blit ControlMM 0x7000c
Read the current value of the Bit Blit Control Register.
•
Clear the bits pertaining to the Color Expansion Mode (bits 5:4).
•
OR–in the saved value of the Bit Blit Control Register.
•
Write the result back into the Bit Blit Control Re gister.
•
Display Control RegisterMM 0x70008
Read the current value of the Display Control Register.
•
OR–in the saved value of t he Display Cont rol Register.
•
Write the result back into the Display Control Regi ster.
•
R
Pixel Pipeline Configuration 0 RegisterMM 0x70009
Read the current value of the Pixel Pipeline Configuration 0 Register.
•
Save reserved bits 6:5 and 2. Clear all other bits.
•
OR–in the saved value of the Pixel Pipeline Configuration 0 Re gister.
•
Write the result back into the Pixel Pipeline Co nfiguration 0 Register.
•
Pixel Pipeline Configuration 2 RegisterMM 0x7000b
Read the current value of the Pixel Pipeline Configuration 2 Register.
•
Save reserved bits 7:4 and 1:0. Clear all other bits.
•
OR–in the saved value of the Pixel Pipeline Configuration 2 Re gister.
•
Write the result back into the Pixel Pipeline Co nfiguration 2 Register.
•
Pixel Pipeline Configuration 1 RegisterMM 0x7000a
Read the current value of the Pixel Pipeline Configuration 1 Register.
•
34
Clear the Display Color Mode bit (bits 3:0).
•
OR–in the saved value of the Pixel Pipeline Configuration 1 Re gister.
•
Write the result back into the Pixel Pipeline Co nfiguration 1 Register.
•
R
®
Intel
810 Chipset Family PRM
Hardware Status Mask RegisterMM 0x2098
Read the current value of the Hardware Status Mask Register.
•
Clear everything but the reserved bits (14:13).
•
OR–in the saved value of the Hardware Status Mask Register.
•
Write the result back into the Hardware Status Mask Register.
•
Interrupt Enable RegisterMM 0x20a0
Read the current value of the Interrupt Enable Register.
•
Clear everything but the reserved bits (14:13).
•
OR–in the saved value of the Interrupt Enable Register.
•
Write the result back into the Interrupt Enable Register.
•
Interrupt Mask RegisterMM 0x20a8
Read the current value of the Interrupt Mask Register.
•
Clear everything but the reserved bits (14:13).
•
OR–in the saved value of the Interrupt Mask Register.
•
Write the result back into the Interrupt Mask Register.
•
Error Mask RegisterMM 0x20b4
Read the current value of the Error Mask Register.
•
Clear everything but the reserved bits (15:6).
•
OR–in the saved value of the Error Mask Register.
•
Write the result back into the Error Mask Register.
•
Watermark and Burstlength ControlMM 0x20d8
Read the current value of the Watermark and Burstlength Control Register.
•
Clear the burst length and watermark bits (bits 22:20, 17:12, 10:8 and 5:0).
•
OR–in the saved value of the Watermar k and Burstlength Control Register.
•
Write the result back into the Watermark and Burstlength Co ntrol Register.
•
35
Intel® 810 Chipset Family PRM
Disable the low-priority ring buffer, in preparation for setting new values, by clearing the
•
RING_VALID bit in the Low-Priority Ring Buffer Length field at MM 0x203c.
Read the current value of the Low-Priority Ring Buffer Length field (MM 0x203c).
•
Clear the valid bit (bit 0).
•
Write the result back into the Low-Priority Ring Buffer Length field.
•
Set up the low-priority ring buffer.
•
Write a 0 to the low-priority ring buffer tail at MM 0x2030.
•
Write a 0 to the low-priority ring buffer head at MM 0x2034.
•
Restore the low-priority ring buffer start at MM 0x2038, but preserve the reserved bits.
•
Restore the Low-Priority Ring Buffer Length field, but preserve the Automatic Report Header
•
Pointer bits and set the Ring Buffer Valid flag.
Turn on the screen.
•
Relock the protected register space in order to complete the state restoration process.
•
R
At this point the graphics adapter should function completely, in the mode identified by the saved-state information.
36
R
®
Intel
810 Chipset Family PRM
6. BLT Engine Programming
6.1 BLT Engine Programming Considerations
6.1.1 When the Source and Destination Locations Overlap
It is possible to have BLT operations in which the locations of the source and de stinat ion data overlap. This frequently
occurs in BLT operations where a user is shifting the position of a graphical item on the display by only a few pixels. In
these situations, the BLT engine must be progra mmed so that destination data is not written into destination locations
that overlap source locations, before the source data at those locations has been read. Otherwise, the source data will
become corrupted.
The following figure shows how the source data can be corrupted when a rectangular block is copied from a source
location to an overlapping destination location. The BLT engine reads fro m the so urce lo cation and writes to the
destination location, starting with the leftmost pixel in the top line of both, as shown in Step (a). As shown in Step (b),
corruption of the source data already started with the copying of the top line in Step (a). Part of the source that originally
contained lighter pixels now has been overwritten with darker pixels. More source data corruption occurs as Steps (b)
through (d) are performed. At Step (e), another line of source data is read, but the two rightmost pixels of this line are in
the region where the source and destination locations overlap and where the source has already been overwritten as a
result of the copying of the top line in Step (a). Starting in Step (f), darker pixels can be seen in the destination where
lighter pixels should be. This errant effect occurs repeatedly during the remaining steps of this BLT operation. As more
lines are copied from the source location to the destination location, it becomes clear that the end result is not what was
intended originally.
37
Intel® 810 Chipset Family PRM
Source
R
(b)
(c)
(a)
Destination
(d)
(e)
(f)
Source
(g)
(i)
(h)
Destination
Figure 12. Source corruption in BLT with overlapping source and destination locations
38
b_blt2.vsd
R
®
Intel
810 Chipset Family PRM
When necessary, the BLT engine can alter the order in which source data is read and destination data is writte n, in ord er
to avoid source data corruption problems when the source and destination locations overlap. The command packets
provide the ability to change the point at which the BLT engine begins reading and writing data from the upper-left-hand
corner (the usual starting point) to one of the other three corners. The BLT engine may be set to read data from the
source and write it to the destination, starting at any of the four corners of the panel.
(b)
Source
(c)
(a)
Destination
(d)
(e)
(f)
Source
(g)
(i)
(h)
Destination
Figure 13. Correctly performed BLT with overlapping source and destination locations
b_blt3.vsd
39
Intel® 810 Chipset Family PRM
n
n
The figure below illustrates how this BLT engine feature can be used to perform the BLT operation illustrated in the
figure above, while avoiding source data corruption. As shown in the figure below, the BLT engine reads the source data
and writes the data to the destination, starting with the right-most pixel of the bottom line. In this manner, no pixel at the
overlap of the source and destination locations ever will be written to before it is read from by the BLT engine. B y the
time the BLT operation has reached Step (e), where two pixels at the overlap of the source and destination locations are
about to be overwritten, the source data for those two pixels has already been read.
R
Destination
DestinationSource
OR
DestinationSource
Source
Source
DestinationDestination
OR
SourceSource
SourceSource
Destinatio
Source
DestinationSource
OR
DestinationSource
Source
OR
Destination
DestinationDestination
Destinatio
b_blt4.vsd
Figure 14. Suggested starting points for possible source and destination overlaps
The figure above shows the recommended lines and pixels to be used as starting points in each of the eight possible ways
in which the source and destination locations may overlap. In general, the starting point should be within the area of
source and destination overlap.
40
R
®
Intel
810 Chipset Family PRM
6.2 Basic Graphics Data Considerations
6.2.1 Contiguous vs. Discontinuous Graphics Data
Graphics data stored in memory, particularly in the frame buffer of a graphics system, has organizational characteristics
that often distinguish them from other varieties of data. The main distinction is the tende ncy for graphics data to be
organized in a discontinuous block made up of multiple sub-blocks of bytes, instead of a single contiguous block o f
bytes.
(0, 0)
256, 256261, 256
256th Scan Line
Note: Drawing is not to scale
(0, 479)(639, 479)
(639, 0)
Figure 15. Representation of on-screen single 6-pixel line in the frame buffer
63
32 310
b_blt5.vsd
270F8h
28100h
28108h
The figure above shows an example of contiguous graphics data: a horizontal line made up of six adjacent pixels within a
single scan line on a display with a resolution of 640×480. Presuming that the graphics system driving this display has
been set to 8 bits per pixel and that the frame buffer’s starting address (0h) corresponds to the upper-leftmost pixel of this
display, the six pixels that make this horizontal line starting at coordinates (256, 256) would occupy six bytes, starting at
frame buffer address 28100h and ending at address 28105h.
In this case, there is only one scan line’s worth of graphics data in this single horizontal line, so the block of graphics
data for all six of these pixels exists as a single, contiguous block comprised only of these six bytes. The starting address
and the number of bytes are the only pieces of information that a BLT engine would require to read this block of data.
The simplicity of the preceding example of a single horizontal line contrasts sharply with the example of discontinuous
graphics data depicted in the following figure. The simple six-pixel line of the figure above now is accompanied by three
more six-pixel lines placed on subsequent scan lines, resulting in the 6×4 block of pixels shown.
41
Intel® 810 Chipset Family PRM
R
(0, 0)
256, 256261, 256
256, 259261, 259
Note: Drawing is not to scale
(0, 479)(639, 479)
Figure 16. Representation of on-screen 6
(639, 0)
256th Scan Line
257th Scan Line
258th Scan Line
259th Scan Line
4 array of pixels in the frame buffer
××××
63
32 310
b_blt6.vsd
270F8h
28100h
28108h
270F8h
28100h
28108h
270F8h
28100h
28108h
270F8h
28100h
28108h
On each of the scan lines in which this 6×4 block exists, there are other pixels that are not part of this 6×4 block, so what
appears to be a single 6×4 block of pixels on the display must be represented by a discontinuous block of graphics data
made up of four separate sub-blocks of six bytes apiece, in the frame buffer at addresses 28100h, 28380h, 28600h, and
28880h. This situation makes more complex the task of reading what appears to be a simple 6×4 block of pixels.
However, there are two characteristics of this 6×4 block of pixels that help simplify the task of specifying the locations
of all 24 bytes of this discontinuous block of graphics data: all four of the sub-blocks are of the same length and the four
sub-blocks are separated from each other at equal intervals.
The BLT engine is designed to make use of these characteristics of graphics data, in order to simplify the programming
required to handle discontinuous blocks of graphics data. For such a situation, the BLT engine requires only four pieces
of information: the starting address of the first sub-block, the length of a sub-block, the offset (in b ytes) (i.e., the pitch) of
the starting address of each subsequent sub-block, and the quantity of sub-blocks.
6.2.2 Source Data
The source data may exist in the frame buffer or main memory graphics memory, where the BLT engine may read it
directly, or it may be provided to the BLT engine by the host CPU through the command packets. The block of source
graphics data may be either contiguous or discontinuous and may be either in color (with a color depth that matches that
to which the BLT engine has been set) or monochrome.
The source select bit in the command packets specifies whether the source data exists in the frame buffer or are provided
through the command packets. Monochrome source data always is specified as being supplied through an immediate
command packet.
If the color source data resides within the frame buffer or main memory’s graphics memory, then the Source Address
Register specified in the command packets is used to specify the address of the source. However, if the host CPU
42
R
®
Intel
810 Chipset Family PRM
provides the source data, then this register takes on a different function, and the three least-significant bits of the Source
Address Register can be used to specify the number of bytes that must be skipped in the first quadword received from the
command packet, in order to reach the first byte of valid source data.
In cases where the host CPU provides the source data, it does so by writing the source data to the ring buffer directly
after the BLT command that requires the data or uses an IMMEDIATE_INDIRECT_BLT command packet that has a
size and pointer to the operand in main memory’s graphics memory.
There also is an address space used for debug, where the CPU can write the source data. It is a 64-KB memory space on
the host bus. There is no actual memory allocated to this memory space, so any data that is written to this locatio n cannot
be read back. This memory space is simply a range of memory addresses that the BLT engine’s address decoder watches
for the occurrence of any memory writes.
The BLT engine loads all data written to any memory address within this memory space or through the command packet,
in the order in which they are written, regardless of the specific memory address to which they are written, and it then
uses that data as the source data in the current BLT operation. The block of bytes sent by the host CPU to either t his data
port or through the command packets must be quadword-aligned, although the source data contained within the block of
bytes does not need to be aligned. As mentioned previously, the least-significant three bits of the Source Address
Register are used to specify the number of bytes that must be skipped in the first quadword of color data, in order to
reach the first byte of valid source data.
To accommodate discontinuous source data, the source and destination pitch registers can be used to specify the offset,
in bytes, from the beginning of one scan line’s worth of source data to the next. Otherwise, if the source data is
contiguous, then an offset equal to the length of a scan line’s worth of source data should be specified.
6.2.3 Monochrome Source Data
The opcode of the command packet specifies whether the source data is color or monochrome. Since monochrome
graphics data only uses one bit per pixel, each byte of monochrome source data typically carries data for eight pixels,
which hinders the use of byte-oriented parameters when specifying the location and size of valid source data.
Monochrome source data always is supplied through the command stream, which avoids the read latency during BLT
engine operation. Some additional parameters must be specified in order to ensure the proper reading and use of
monochrome source data by the BLT engine. The BLT engine also provides additional optio ns for the manipulation of
monochrome source data versus color source data.
Various bitwise logical operations and per-pixel write-masking operations were designed to work with color data. In
order to use monochrome data, the BLT engine converts it into color data through a process called color expansion,
which takes place as a BLT operation is performed. In color expansion, the single bits of monochrome source data are
converted into one, two, three or four bytes (depending on the color depth to which the BLT engine has been set) of color
data that are set to carry value corresponding to either the foreground or background color specified for use in this
conversion process. If a given bit of monochrome source data carries the value 1, then the byte(s) of color data resulting
from the conversion process will be set to carry the value of the foreground color. If a given bit of monochrome source
data carries the value 0, then the resulting byte(s) will be set to the value of the background color. The foreground and
background colors used in the color expansion of monochrome source data can be set in the source expansion foreground
color register and the source expansion background color register.
The BLT engine requires the specification of the bit alignment of each scan line’s worth of monochrome source data.
Each scan line’s worth of monochrome source data is word-aligned, but it actually can start on any bit boundary of the
first byte. Monochrome text is a special case and is bit-packed, such that there are no invalid pixels (bits) between scan
lines. Mono Source Start is a three-bit field that indicates the starting pixel position within the first b yte for each scan
line.
43
Intel® 810 Chipset Family PRM
d
The BLT engine also provides various clipping options for use with specific BLT commands (BLT_TEXT), with a
monochrome source. Clipping is supported via clip rectangle Y addresses and X coordinates, scan line starting and
ending addresses, and X starting and ending coordinates.
6.2.4 Pattern Data
The color pattern data must exist within the frame buffer or main memory’s graphics memory, where the BLT engine
may read it directly. Monochrome pattern data is supplied by the command packet when it is to be used. As shown in
following figure, the block of pattern graphics data always is represented as an 8×8 block of pixels. The bits or bytes of a
block of pattern data may be organized in the frame buffer memory in only one of four ways, depending upon its color
depth, which may be 8, 16, 24 or 32 bits per pixel (whichever matches the color depth to which the BLT engine has been
set) or monochro me.
R
Pixel (0, 0)
Pixel (0, 7)
6357 5648 4740 3924 2332 3116 158 7
Pixel
(0, 7)
Figure 17. Pattern data (always an 8
Pixel
(7, 7)
8 array of pixels)
××××
Pixel
(0, 0)
Pixel (7, 0)
Pixel (7, 7)
b_blt7.vsd
0
b_blt8.vs
Pixel
(7, 0)
The Pattern Address Register is used to specify the color pattern data address at which the block of pattern data begins.
The three least-significant bits of the address written to this register are ignored, because the address must be specified in
units of quadwords. This is because the pattern always must be located on an address boundary equal to its size.
Monochrome patterns take up 8 bytes (i.e., a quadword of space) and are loaded through the command packet that uses
it. Similarly, color patterns with color depths of 8, 16, and 32 bits per pixel must start on 64-byte, 128-byte, and 256-byte
boundaries, respectively. Color patterns with color depths of 24 bits per pixel must start on 256-byte boundaries, despite
the fact that the actual color data fills only 3 bytes per pixel. The next four figures show how monochrome, 8-bpp, 16bpp, 24-bpp, and 32-bpp pattern data, respectively, is organized in memory.
As is shown in the 24-bpp pattern data figure, four bytes are allocated for each pixel on each scan line’s worth of pattern
data, which allows each scan line’s worth of 24-bpp pattern data to begin on a 32-byte boundary. The extra (i.e.,
“fourth”) unused bytes of each pixel on a scan line’s worth of pattern data are collected together in the last 8 bytes (i.e.,
the last quadword) of each scan line’s worth of pattern data.
The opcode of the command packet specifies whether the pattern data is color or monochrome. The various bitwise
logical operations and per-pixel write-masking operations were designed to work with color data. In order to use
monochrome pattern data, the BLT engine is designed to convert it to color, through a process called “color expansion”
that takes place as a BLT operation is performed. In color expansion, the single bits of monochrome pattern data are
converted to one, two, three or four bytes (depending on the color depth to which the BLT engine has been set) of color
data that are set to carry values corresponding to either the foreground or background color specified for use in this
process. The foreground color is used for pixels corresponding to a bit of monochrome pattern data that carries the value
1, while the background color is used where the corresponding bit of monochrome pattern data carries the value 0. The
foreground and background colors used in the color expansion of monochrome pattern data can be set in the Pattern
Expansion Foreground Color Register and Pattern Expansion Background Color Register.
46
R
®
Intel
810 Chipset Family PRM
6.2.5 Destination Data
There are actually two different types of “destination data”: the graphics data already residing at the location designated
as the destination and the data to be written to that location, as a result of a BLT operation.
The location designated as the destination must be within the frame buffer or the main memory’s graphics memory,
where the BLT engine can directly read from it and write to it. The blocks of destination data to be read from and written
to the destination may be either contiguous or discontinuous. All data writte n to the destination will have the color depth
to which the BLT engine has been set. It is presumed that any data already existing at the destination to be read by the
BLT engine also will be of this same color depth. The BLT engine neither reads nor writes monochrome destination
data.
The Destination Address Register is used to specify the address of the destination.
To accommodate discontinuous destination data, the Source and Destination Pitch Registers can be used to specify the
offset, in bytes, from the beginning of one scan line’s worth of destination data to the next. Otherwise, if the destination
data is contiguous, then an offset equal to the length of a scan line’s worth of destination data should be specified.
47
Intel® 810 Chipset Family PRM
d
6.3 BLT Programming Examples
6.3.1 Pattern Fill — A Very Simple BLT
In this example, a rectangular area on the screen will be filled with a color pattern stored as pattern data in off-screen
memory. The screen has a resolution of 1024×768, and the graphics system has been set to a color depth of 8 bits per
pixel.
Figure 22. On-screen destination for example pattern fill BLT
As shown in the preceding figure, the upper left-hand corner of the rectangular area to be filled is at coordinates (128,
128), while its lower right-hand corner is at coordinates (191, 191). These coordinates define a rectangle covering 64
scan lines, each line of which is 64 pixels in length (i.e., an array of 64×64 pixels). Assuming that the pixel at
coordinates (0, 0) corresponds to the byte at address 00h in the frame buffer memory, the pixel at (128, 128) corresponds
to the byte at address 20080h.
Figure 23. Pattern data for example pattern fill BLT
As shown in the preceding figure, the pattern data occupies 64 bytes, starting at address 100000h. As always, the pattern
data represents an 8×8 array of pixels.
The BLT command packet is used to select the features to be used in this BLT operation, so it must be programmed
carefully. The vertical alignment field should be set to 0, in order to select the top horizontal row of the pattern as the
starting row used in drawing the pattern, starting with the top scan line covered by the destination. The pattern data is in
color with a color depth of 8 bits per pixel, so dynamic color enable should be asserted with the dynamic color depth
field set to 0. Since this BLT operation does not use per-pixel write-masking (i.e., the destination transparency mode),
this field should be set to 0. Finally, the raster operation field should be programmed with the 8-bit value F0h, in order to
select the bitwise logical operation in which a simple copy of the pattern data to the destination takes place. Selecting
this bitwise operation, in which no source data is used as an input, causes the BLT engine to automatically forego either
reading source data from the frame buffer or waiting for the host CPU to provide it.
The Destination Pitch Register must be programmed with number of bytes in the interva l from the start of one scan line’s
worth of destination data to the next. Since the color depth is 8 bits per pixel and the horizontal resolution of the display
is 1024, the value to be programmed into these bits is 400h, which is equal to the decimal value 1024.
Bits [31:3] of the Pattern Address Register must be programmed with the address of the pattern data.
Similarly, bits [31:0] of the Destination Address Register must be programmed with the byte address at the destination
that will be written to first. In this case, the address is 20080h, which corresponds to the byte representing the pixel at
coordinates (128, 128).
This BLT operation does not use the values in the Source Address Register or the Source Expansion Background or
Foreground Color Register s.
The Destination Width and Height Registers must be programmed with values that tell the BLT engine the 64×64 pixel
size of the destination location. The height should be set to carry the value 40h, indicating that the destination location
covers 64 scan lines. The width should be set to carry the value 40h, indicating that each scan line’s worth of destination
data occupies 64 bytes. All of this information is written to the ring buffer using the PAT_BLT command packet.
The figure above shows the end result of performing this BLT operation. The 8×8 pattern has been repeatedly copied
(“tiled”) into the entire 64×64 area at the destination.
50
R
d
®
Intel
810 Chipset Family PRM
6.3.2 Drawing Characters Using a Font Stored in System Memory
In this example BLT operation, a lowercase “f” is to be drawn in black on a display with a gray background. The
resolution of the display is 1024×768, and the graphics system has been set to a color depth of 8 bits per pixel.
(0, 0)
Note: Drawing is not to scale
Scan Lines 128 Through 135
128, 128
Destination
(135, 135)
(0, 767)
(1023, 0)
(1023, 767)
63
128, 128
135, 135
0
20080h
128th Scan Line
20480h
129th Scan Line
20880h
130th Scan Line
20C80h
131th Scan Line
21080h
132nd Scan Line
21480h
133rd Scan Line
21880h
134th Scan Line
21C80h
135th Scan Line
b_blt12.vsd
Figure 25. On-screen destination for example character drawing BLT
The preceding figure shows the display on which this “f” is to be dr awn. As shown in this figure, the entire display has
been filled with gray. The “f” is to be drawn in an 8×8 region on the display, with the upper-left-hand corner at the
coordinates (128, 128).
Figure 26. Source data in system memory for example character drawing BLT
51
Intel® 810 Chipset Family PRM
The figure above shows both the 8×8 pattern making up the “f” and how it is represented somewhere in the host’s system
memory. (The actual address in system memory is not important.) The “f” is represented in system memory by a block of
monochrome graphics data that occupies 8 bytes. Each byte carries the 8 bits needed to represent the 8 pixels in each
scan line’s worth of this graphics data. This type of pattern often is used to store character fonts in system memory.
During this BLT operation, the host CPU will read this representation of “f” from system memory and will write it to the
BLT engine, by performing memory writes to the ring buffer as an immediate monochrome BLT operand following the
BLT_TEXT command. The BLT engine will receive this data through the command stream and will use it as the source
data for this BLT operation. The BLT engine will be set to the same color depth as the graphics system (in this case, 8
bits per pixel). Since the source data in this BLT operation is monochrome, color expansion must be used to convert it to
an 8-bpp color depth. To ensure that the gray background behind this “f” is preserved, per-pixel write-masking will be
performed, using the monochrome source data as the pixel mask.
The BLT Setup and Text command packets are used to select the features to be used in this BLT operation. Only the
fields required by these two command packets must be programmed carefully. The BLT engine ignores all other registers
and fields. The source select field must be set to 1, in order to indicate that the source data is provided by the host CPU
through the IMMEDIATE_BLT command packet. Finally, the raster operation field should be programmed with the 8bit value CCh, in order to select the bitwise logical operation that simply copies t he source d ata to the destination.
Selecting this bitwise operation, in which no pattern data is used as an input, causes the BLT engine to automatically
forego re ading pattern data from the frame buffer.
The Setup Pattern/Source Expansion Foreground Color Register is used to specify the color with which the “f” will be
drawn. There is no source address. All scan lines of the glyph are bit-packed, and the clipping is controlled by the
ClipRect registers from the SETUP_BLT command and the Destination Y1, Y2, X1, and X2 registers in the TEXT_BLT
command. Only the pixels that are within the clip rectangle are written to the destination surface.
R
The Destination Pitch Register must be programmed with a value equal to the number of bytes in the interval bet wee n
the first bytes of each adjacent scan line’s worth of destination data. Since the color depth is 8 bits per pixel and the
horizontal resolution of the display is 1024 pixels, the value to be programmed into these bits is 400h, which is equal to
the decimal value 1024. Since the source data used in this BLT operation is monochrome, the BLT engine will not use a
byte-oriented pitch value for the source data.
Since the source data is monochrome, color expansion is required to convert it to color with a color depth of 8 bits per
pixel. Since the Setup Pattern/Source Expansion Foreground Color Register is selected in order to specify the foreground
color of black to be used in drawing the “f”, this register must be programmed with the value for that color. With the
graphics system set for a color depth of 8 bits per pixel, the actual colors are specified in the RAMDAC palette, and the 8
bits stored in the frame buffer for each pixel actually specify the index used to select a color from that palette. This
example assumes that the color specified at index 00h in the palette is black, and therefore bits [7:0] of this register
should be set to 00h in order to select black as the foreground color. The BLT engine ignores bits [23:8] of this register
because the selected color depth is 8 bits per pixel. Even though the color expansion being performed on the source data
normally requires the specification of both the foreground and background colors, the value used to specify the
background color is not important in this example. Per-pixel write-masking is being performed with the monochrome
source data as the pixel mask, which means that none of the pixels in the source data converted to the background color
will ever be written to the destination. Since these pixels will never be seen, the value programmed into the
Pattern/Source Expansion Background Color Register in order to specify a background color is not important.
The Destination Width and Height Registers are not used. The Y1, Y2, X1, and X2 registers are programmed with values
that describe to the BLT engine the 8x8 pixel size of the destination location. T he Desti nation Y1 and Y2 address
registers must be programmed with the starting and ending scan line addresses of the destination data. These addresses
are specified as an offset from the start of the frame buffer of the scan line at the destination that will be written to first.
The destination X1 and X2 registers must be programmed with the starting and ending pixel offsets from the beginning
of the scan line.
52
R
®
Intel
810 Chipset Family PRM
This BLT operation does not use the values in the Pattern Address Register, the Source Expansion Background Color
Register, or the Source Expansion Foreground Color Regi ster.
(0, 0)
Note: Drawing is not to scale
Scan Lines 128 Through 135
128, 128
(0, 767)
Figure 27. Results of example character-drawing BLT
Destination
135, 135
(1023, 0)
(1023, 767)
63
128, 128
135, 135
0
20080h
(128th Scan Line)
20480h
(129th Scan Line)
20880h
(130th Scan Line)
20C80h
(131th Scan Line)
21080h
(132nd Scan Line)
21480h
(133rd Scan Line)
21880h
(134th Scan Line)
21C80h
(135th Scan Line)
b_blt12.vsd
Figure 27 shows the end result of performing this BLT operation. Only the pixels that form part of the actual “f” have
been drawn in the 8×8 destination location on the display, leaving the other pixels with in t he de stination with their
original gray color.
53
Intel® 810 Chipset Family PRM
R
This page intentionally left blank.
54
R
®
Intel
810 Chipset Family PRM
7. Initialization Registers
In order to function, all registers described in this section must be programmed for the Intel® 82180 chipset and family
products. The default states of these registers, with the exception of registers that deal with extended modes or
performance enhancements, will prevent the Intel 82180 chipset and family products from booting.
Note: The registers in this document are normally programmed by the video BIOS.
These registers also may be documented in other sections of this document.
7.1 Standard VG A Registers
All VGA registers are in standard locations and initialized by means of sta ndard procedures. This section will document
all nonstandard registers that are needed for initialization of the Intel 82180 chipset and family chipsets.
7.2 SMRAM Registers
7.2.1 SMRAM—System Management RAM Control Register (Device 0)
The SMRAM register controls how accesses to compatible and extended SMRAM spaces are treated as well as how
much (if any) memory is “taken” from the system in order to support both SMRAM and graphics local memory needs.
This field is used to enable/disable the internal graphics device and
select the amount of Main Memory that is “taken” to support the internal graphics device.
00 = Graphics device disabled, no memory “taken” (Device 1 is NOT accessible in this case.)
01 = Graphics device enabled, no memory “taken”
10 = Graphics device enabled, 512 KB of memory “taken”
11 = Graphics device enabled, 1 MB of memory “taken”
Note:
When the graphics device is disabled (00), the graphics device and all of its memory and I/O functions
are disabled, the clocks to this logic are turned off, memory accesses to the VGA range (A0000BFFFF) will be forwarded to the hub-link, and the graphics local memory space is NOT “taken” from
main memory. When this field is non-0, the GMCH graphics device and all of its memory and I/O
functions are enabled, all non-SMM memory accesses to the VGA range will be handled internally,
and the selected amount of graphics local memory space (0, 512K or 1M) is “taken” from the main
memory. Graphics memory is “taken” AFTER TSEG memory is “taken”.
Once D_LCK is set, these bits becomes Read Only.
GMCH does not support VGA on local memory. Software must not use the 01 mode for VGA.
Upper SMM Select (USMM).
This field is used to enable/disable the various SMM memory ranges
above 1 Meg. TSEG is a block of memory (“taken” from main memory at [TOM-Size] : [TOM]) that is
accessible only by the processor and only while operating in the SMM mode. HSEG is a remap of the
AB segment at FEEA0000 : FEEBFFFF. Both of these areas, when enabled, are usable as SMM RAM.
Non-SMM operations that use these address ranges are forwarded to the hub-link. HSEG is ONLY
enabled if LSMM = 00.
00 = TSEG and HSEG are both disabled.
01 = TSEG is disabled and HSEG is conditionally enabled.
10 = TSEG is enabled as 512 Kbytes and HSEG is conditionally enabled.
11 = TSEG is enabled as 1 Mbytes and HSEG is conditionally enabled.
Once D_LCK is set, these bits become Read Only.
Lower SMM Select (LSMM).
This field controls the definition of the A&B segment SMM space.
00 = AB segment disabled
01 = AB segment enabled as general system RAM
10 = AB segment enabled as SMM code RAM shadow. Only SMM code reads can access DRAM in the
AB segment. SMM data operations and all non-SMM operations either go to the internal graphics
device or are broadcast on the hub-link.
11 = AB segment enabled as SMM RAM. All SMM operations to the AB segment are serviced by
DRAM. All non-SMM operations either go to the internal graphics device or are broadcast on hublink.
When D_LCK is set, bit 3 becomes Read_Only and bit 2 is writeable ONLY if bit 3 is 1.
SMM Space Locked (D_LCK):
When D_LCK is set to 1, then D_LCK, GMS, USMM, and the mostsignificant bit of LSMM become Read Only. D_LCK can be set to 1 via a normal configuration space
write but can be cleared only by a reset. The combination of D_LCK and LSMM provides convenience
with security. The BIOS can use LSMM=01 to initialize SMM space and then use D_LCK to “lock down”
SMM space in the future, so that no application software (or the BIOS itself) can violate the integrity of
SMM space, even if the program has knowledge of the LSMM function. This bit also locks the DRP
register.
E_SMRAM_ERR (E_SMERR):
This bit is set when CPU accesses the defined memory ranges in
extended SMRAM (HSEG or TSEG) while not in SMM mode. It is software’s responsibility to clear this
bit. The software must write a 1 to this bit to clear it This bit is NOT set in the case of an explicit writeback operation.
56
R
®
Intel
810 Chipset Family PRM
Initialization and Usage of “Taken” Memory
SMRAM Register bits 7:4 control the theft of memory from main memory space, for use as graphics local memory and
SMM TSEG memory. The blocks of memory selected by these fields are NOT accessible as general system RAM. When
bit 5 of the SMRAM register is 1, the TSEG segment of memory can ONLY be accessed by the CPU in the SMM mode.
(No other agent can access this memory.) Therefore, the BIOS should initialize this block of memory BEFORE setting
either bit 5 or bit 7 of the SMRAM register. The memory for TSEG is “taken” first, and then the graphics local memory
is “taken.” An example of this theft mechanism is as follows:
TOM = 64 Mbytes.
TSEG selected as 512 Kbytes in size.
Graphics local memory selected as 1 Mbyte in size.
General System RAM available in system = 62.5 Mbytes.
General system RAM range:00000000h to 03E7FFFFh
TSEG address range:03F80000h to 03FFFFFFh
TSEG “taken” from:03F80000h to 03FFFFFFh
Graphics local memory “taken” from: 03E80000h to 03F7FFFFh
7.3 Graphics Controller Registers
The graphics controller registers are accessed via either I/O space or memory space. To access the registers, the VGA
Graphics Controller Index Register at I/O address 3CEh (or memory address 3CEh) is written with the index of the
desired register, and then the desired register is accessed through the data port for the graphics controller registers at I/O
address 3CFh (or memory address 3CFh).
Used only if GR10(0) = 1 {paging enabled} and (GR10(1) = 1 or GR10(2) = 1) {either packed mode or
linear mode is enabled) and GR10(3) = 0 {VGA buffer selected}.
0 = Page to VGA buffer
1 = Page to physical local memory
VGA Buffer/Memory Map Select.
3
0 = VGA buffer (default)
1 = Memory map
Packed Mode Enable.
2
0 = Address and data translation are bused register settings (default).
1 = Forced extended pack pixel address translation
In the page mapping mode, register GR06 selects the video memory address.
Linear Mapping (PCI).
1
0 = Disable (default)
1 = Enable
Page Mapping Enable.
0
local video memory) mode or all of local memory space through the [A0000:AFFFF] window (using bit 4 of
this register), which is a 64-KB page. An internal address is generated using GR11[6:0] as the address
line [22:16] extension to A[15:2].
0 = Disable (default)
1 = Enable
This mode allows the mapping of the VGA space allocated in main memory (non-
R
58
R
Table 3. VGA Address Range
®
Intel
810 Chipset Family PRM
GR10
[2]
00 0Std VGA
GR10
[1]
GR10
[0]
Note 1Address Range (see Note 2)
A0000-AFFFF Range
B0, B8 Ranges
(No GTT)
VGA contro ller, no pagingVGA contr oller, no paging
(No GTT)
xlations
001Paging and
VGA controller, paged by GR11VGA controller, no paging
VGA xlation
01 0
No paging, no
Bypass VGA, no pagingBypass VGA, no paging
VGA xlatio ns
011Paging, no
Bypass VGA, paged by GR11Bypass VGA, no paging
VGA xlatio ns
10 0
No paging, no
Bypass VGA, no pagingBypass VGA, no paging
VGA xlatio ns
101Paging, no
Bypass VGA, paged by GR11Bypass VGA, no paging
VGA xlatio ns
110No paging, no
Bypass VGA, no pagingBypass VGA, no paging
VGA xlatio ns
111Paging, no
Bypass VGA paged by GR11Bypass VGA, no paging
VGA xlatio ns
Notes:
GR10[2:0]: 001 should not be used for paging, because all the VGA registers need to be setup correctly. An access
thru A0000 range is paged by GR11. Note that prefetch refers to the cache line size access to GM vs. without
prefetch (i.e., QW).
VGA Address Range is selected by GR06. Graphics range is selected through the graphics base address register in
the configuration space. Access to the VGA range does not require a translation table. VGA range paging
allows access to all of local memory, if it is set up with bit 4 of this register, or to all of the memory taken from
the VGA main memory space. Access to the graphics range requires GTT to be set up and will result in a
prefetch unless prefetch is disabled. Access to VGA range will not result in a prefetch.
The BIOS should access local memory through the "back door" mechanism, by setting gr10 = 17h, gr11 = 0, and gr6
= 0, only when local memory has been enabled (MMADR+3000h). Otherwise, the system will hang in a snoop
stall forever.
page mapping is enabled (GR10[0]=1). In addition, this register is used for page selection of memorymapped register addresses.
Selects a 64-KB window within VGA space in NLVM mode or all of local memory when
60
R
®
Intel
810 Chipset Family PRM
7.4 CRT Controller Register
The CRT controller registers are accessed by writing the index of the desired register into the CRT Controller Index
Register at I/O address 3B4h or 3D4h, depending on whether the graphics system is configured for MDA or CGA
emulation. The desired register then is accessed through the data port for the CRT controller registers located at I/O
address 3B5h or 3D5h, again depending upon the choice of MDA or CGA emulation, as per MSR[0]. For memorymapped accesses, the Index register is at 3B4h (MDA mode) or 3D3h (CGA mode), and the data port is accessed at
3B5h (MDA mode) or 3D5h (CGA mode).
Notes:
Register CR80 enables / disables the CRTC extensions.
Group 0 Protection: In the original IBM VGA, CR[0:7] could write-protected by means of CR11[7]. In the BIOS
code, this write protection is set following each mode change. Other protection groups are not currently used and
will not by used in the future by the BIOS or by drivers. They are the result of an industry fad some years ago,
that attempted to write-protect other groups of registers. However, all such schemes were chip specific. Only
IBM-compatible write protection (Group 0 protection) is supported.
scan lines. This includes the scan lines both inside and outside of the active display area.
In standard VGA modes, where bit 0 of the I/O Control Register (CR80) is set to 0, the vertical total is
specified with a 10-bit value. The 8 least-significant bits of this value are supplied by bits [7:0] of the
Vertical Total Register (CR06), and the 2 most-significant bits are supplied by bits 5 and 0 of the Overflow
Register (CR07). In standard VGA modes, these 4 bits of this register are not used.
In extended modes, where bit 0 of the I/O Control Register (CR80) is set to 1, the vertical total is specified
with a 12-bit value. The 8 least-significant bits of this value are supplied by bits [7:0] of the Vertical Total
Register (CR06), and the 4 most-significant bits are supplied by these 4 bits of this register.
This 10-bit or 12-bit value should be programmed to be equal to the total number of scan lines, minus 2.
Read as 0s. This field must be 0s when this register is written.
The vertical total is a 10-bit or 12-bit value that specifies the total number of
the number of the last scan line within the active display area.
In standard VGA modes, where bit 0 of the I/O Control Register (CR80) is set to 0, the vertical display
enable end is specified with a 10-bit value. The 8 least-significant bits of this value are supplied by bits
[7:0] of the Vertical Display Enable End Register (CR12), and the 2 most-significant bits are supplied by
bits 6 and 1 of the Overflow Register (CR07). In standard VGA modes, these 4 bits of this register are not
used.
In extended modes, where bit 0 of the I/O Control Register (CR80) is set to 1, the vertical display enable
end is specified with a 12-bit value. The 8 least-significant bits of this value are supplied by bits [7:0] of the
Vertical Display Enable End Register (CR12), and the 4 most-significant bits are supplied by these 4 bits of
this register.
This 10-bit or 12-bit value should be programmed to be equal to the number of the last scan line within in
the active display area. Since the active display area always starts on the 0th scan line, this number should
be equal to the total number of scan lines within the active display area, minus 1.
Read as 0s. This field must be 0s when this register is written.
The vertical display enable end is a 10-bit or 12-bit value that specifies
beginning of the vertical sync pulse relative to the beginning of the active display area.
In standard VGA modes, where bit 0 of the I/O Control Register (CR80) is set to 0, the vertical sync start is
specified with a 10-bit value. The 8 least-significant bits of this value are supplied by bits [7:0] of the
Vertical Sync Start Register (CR10), and the 2 most-significant bits are supplied by bits 7 and 2 of the
Overflow Register (CR07). In standard VGA modes, these 4 bits of this register are not used.
In extended modes, where bit 0 of the I/O Control Register (CR80) is set to 1, the vertical display end is
specified with a 12-bit value. The 8 least-significant bits of this value are supplied by bits [7:0] of the
Vertical Sync Start Register (CR10), and the 4 most-significant bits are supplied by these 4 bits of this
register.
This 10-bit or 12-bit value should be programmed to be equal to the number of scan lines from the
beginning of the active display area to the start of the vertical sync pulse. Since the active display area
always starts on the 0th scan line, this number should be equal to the number of the scan line on which the
vertical sync pulse begins.
Read as 0s. This field must be 0s when this register is written.
The vertical sync start is a 10-bit or 12-bit value that specifies the
beginning of the vertical blanking period relative to the beginning of the active display area.
In standard VGA modes, where bit 0 of the I/O Control Register (CR80) is set to 0, the vertical blanking
start is specified with a 10-bit value. The 8 least-significant bits of this value are supplied by bits [7:0] of the
Vertical Blanking Start Register (CR15), and the most-significant and second-most-significant bits are
supplied by bit 5 of the Maximum Scan Line Register (CR09) and bit 3 of the Overflow Register (CR07),
respectively. In standard VGA modes, these four bits are not used.
In extended modes, where bit 0 of the I/O Control Register (CR80) is set to 1, the vertical blanking start is
specified with a 12-bit value. The 8 least-significant bits of this value are supplied by bits {7:0] of the
Vertical Blanking Start Register (CR15), and the 4 most-significant bits are supplied by these 4 bits of this
register.
This 10-bit or 12-bit value should be programmed to be equal to the number of scan lines from the
beginning of the active display area to the beginning of the blanking period. Since the active display area
always starts on the 0th scan line, this number should be equal to the number of the scan line on which the
vertical blanking period begins.
Read as 0s. This field must be 0s when this register is written.
The vertical blanking start is a 10-bit or 12-bit value that specifies the
Control Register (CR80) is set to 1, in order to signal the graphics controller to update the start address. In
extended modes, the start address is specified with a 30-bit value. These 30 bits, which are provided by
the Start Address Low Register (CR0D), the Start Address High Register (CR0C), the Extended Start
Address High Register (CR42), and bits [5:0] of this register, are double-buffered and synchronized to
VSYNC to ensure that changes occurring on the screen as a result of changes in the start address always
have a smooth or instantaneous appearance. To change the start address in extended modes, all three
registers must be set for the new value, and then this bit of this register must be set to 1. Only if this is
done will the graphics controller update the start address on the next VSYNC. After this update has been
performed, the graphics controller will set bit 7 of this register back to 0.
Reserved.
6
5:0
Start Address Bits [23:18].
from the beginning of the frame buffer or a 32-bit buffer address at which begins the data t o be shown in the
active display area. (Default: 0)
In standard VGA modes, where bit 0 of the I/O Control Register (CR80) is set to 0, the start address is
specified with a 16-bit value. The eight bits of the Start Address High Register (CR0C) provide the eight
most-significant bits of this value, while the eight bits of the Start Address Low Register (CR0D) provide
the eight least-significant bits.
In extended modes, where bit 0 of the I/O Control Register (CR80) is set to 1, the start address is specified
with a 32-bit value. Bits 31:24 of this value are provided by the Extended Start Address High Register
(CR42). Bits 23:18 of this value are provided by bits 5:0 of this register. Bits 17:10 of this value are
provided by the Start Address High Register (CR0C). Bits 9:2 of this value are provided by the Start
Address Low Register (CR0D). Bits 1:0 of this value are always 0 and therefore are not provided. Note
that, in the extended modes, these 32 bits from these four registers are double-buffered and synchronized
to VSYNC to ensure that changes occurring on the screen as a result of changes in the start address
always have a smooth or instantaneous appearance. To change the start address in extended modes, all
four registers must be set for the new value, and then bit 7 of this register must be set to 1. Only if this is
done will the graphics controller update the start address on the next VSYNC. After this update has been
performed, the graphics controller will set bit 7 of this register back to 0.
Reserved
Start Address Bits 23:18
(0)
This bit is used only in extended modes, where bit 0 of the I/O
Read as 0s. This field must be 0s when this register is written.
This start address is a 16-bit value that specifies the memory address off set
buffer memory occupied by each horizontal row of characters. Whether this value is interpreted as the
number of words or dwords is determined by the settings of the bits in the Clocking Mode Register (SR01).
In standard VGA modes, where bit 0 of the I/O Control Register (CR80) is set to 0, the offset is described
with an 8-bit value, all bits of which are provided by the Offset Register (CR13).
In extended modes, where bit 0 of the I/O Control Register (CR80) is set to 1, the offset is described with a
12-bit value. The four most-significant bits of this value are provided by bits [3:0] of this register, and the
eight least-significant bits are provided by the Offset Register (CR13).
This 8-bit or 12-bit value should be programmed to be equal to either the number of words or dwords
(depending on the setting of the bits in the Clocking Mode Register, SR01) of frame buffer memory that is
occupied by each horizontal row of characters.
7.4.9 CR42
Read as 0s. This field must be 0s when this register is written.
The offset is an 8-bit or 12-bit value describing the number of words or dwords of frame
begins the data to be shown in the active display area. (Default: 0)
In standard VGA modes, where bit 0 of the I/O Control Register (CR80) is set to 0, the start address is
specified with a 16-bit value. The eight bits of the Start Address High Register (CR0C) provide the eight
most-significant bits of this value, while the eight bits of the CR0D register provide the eight leastsignificant bits.
In extended modes, where bit 0 of the I/O Control Register (CR80) is set to 1, the start address is specified
as a 32-bit value. Bits [31:24] of this value are provided by this register. Bits [23:18] of this value are
provided by bits [5:0] of the Extended Start Address Register (CR40). Bits [17:10] of this value are
provided by the Start Address High Register (CR0C). Bits [9:2] of this value are provided by the Start
Address Low Register (CR0D). Bits [1:0] of this value are always 0 and therefore are not provided. It
should be further noted that, in extended modes, the 30 bits from these four registers are double-buffered
and synchronized to VSYNC, in order to ensure that changes occurring on the screen as a result of
changes in the start address always have a smooth or instantaneous appearance. To change the start
address in extended modes, all four registers must be set for the new value, and then bit 7 of the Extended
Start Address Register (CR40) must be set to 1. Only then will the graphics controller update the start
address on the next VSYNC. When the update is done, the graphics controller sets bit 7 of the Extended
Start Address Register (CR40) back to 0.
This register provides bits [31:24] of the 32-bit buffer address at which
the position along the length of a scan line at which the half-line vertical sync pulse occurs for the odd
frame. This half-line vertical sync pulse begins at a position between two horizontal sync pulses on the last
scan line, rather than at a position coincident with the beginning of a horizontal sync pulse at the end of a
scan line.
I/O Control
When interlaced CRT output has been selected, the value in this register specifies
index and data at 3C0h (strict VGA mode), or whether they are accessed with 3c0h as the index and with
3C1h as data. It is possible that the BIOS software or driver software might not use the non-VGA mode.
Either method should work, but it must be the method the software is using.
0 = Disable (i.e., strictly VGA compatible mode) (default)
1 = Enable attribute controller extensions
Index and Data of the Attribute Controller registers are accessible at 3C0h in standard VGA. When the
Attribute Controller Extensions are enabled, the index and data are accessible at addresses 3C0h and
3C1h, respectively.
CRT Controller Interpretation Enable.
0
beyond. See CR06, CR07, CR09, CR0C, CR0D, CR10, CR12, CR13, CR15, CR30, CR32, CR33, CR40,
CR41, and CR42.
0 = Registers have strict VGA interpretation (default).
1 = Registers have extended VGA Interpretation (i.e., access to 4-G space).
Controls whether the attribute registers are accessed with both
This bit modifies responses/functionality to/of registers CR30 and
68
R
®
Intel
810 Chipset Family PRM
7.4.12 CR82
Blink Rate Control
I/O (and memory offset) address:3B5h/3D5h(index 82h)
Default: 88h is the VGA default because it is more visually appealing (but the standard
VGA default is 83h).
AttributesRead/Write
The H/W default for this register does not match the VGA compatibility requirements. The BI OS must make sure to set
These control values only apply to hi-res modes of o peration. VG A modes ignore the settings of these registers in favor
of fixed values.
For the VGA text mode, character buffer fetches are performed without regard to the space available in the FIFO (since
this data is stored in the character buffer, not the FIFO). Character buffer fetches are performed as a single request of 8
qwords. Font data is fetched one qword at a time, and it will begin when the FIFO has room for 8 character font qwords.
VGA graphics modes will perform requests one at a time, as long as there is room for 1 qword in the FIFO.
Note 1: FIFOs refer to ALL FIFOs in the DSI data path. (That is, the total FIFO space available is the sum of the DSI
FIFO depth and the display engine FIFO depth.) Currently, this depth is 48 qwords.
Note 2: The H/W default is an illegal value: These quantities should never be pr ogrammed to zeros.
R
Note 3: The hardware depends on these registers being set properly, since it is possible to set the request length and
watermarks to states that would cause the overflow of the sync FIFO. For example, assume that a watermark is
set to 33 QW and the request length is set to 32 QWs. After the first two requests have been completed, 64 QWs
will have been written into the sync FIFO. During this time, only 16 QWs will be drained out of the FIFO in
order to be written to the display engine FIFO. Since the sync FIFO in the DSI is only 32QWs deep, this will
result in (64-16-32) = 16 QW overflow of the FIFO.
31282724
Overlay Delay Timer1Overlay Delay Timer0
2322201918171211108
Reserved
MM Dply Burst
Reserved
Length
7650
MM Display FIFO
Watermark
Reserved
LM Dply Burst
Length
ReservedLM Dply FIFO Watermark
BitDescription
31:28
27:24
23
Overlay Delay Timer1
this register is multiplied by 16 to determine the wait state clock count.
Overlay Delay Timer0
except between sets of YUVY. The value in this register is multiplied by 16 to determine the wait state
clock count.
Reserved
is used to insert wait states between sets of YUVY requests to MM. The value in
is used to insert wait states between any two overlay streamer requests to MM,
70
R
BitDescription
®
Intel
810 Chipset Family PRM
22:20
19:18
17:12
11
10:8
7:6
5:0
MM Display Burst Length :
Size in qwords of individual requests issued to memory. Use multiples of 16
Number of qwords stored in FIFOs, below which the DSI will generate
requests to LMI. (The value must be less than 32 and should be as recommended in the high-priority
bandwidth analysis spreadsheet.)
Reserved
LM Display Burst Length :
Size in qwords of individual requests issued to memory. Use multiples of 16
Number of qwords stored in FIFOs, below which the DSI will generate
requests to LMI. (The value must be less than 32 and should be as recommended in the high-priority
bandwidth analysis spreadsheet.)
Power On 0000 (i.e., pulse H and V)
Standby 0010 (i.e., pulse V)
Suspend 1000 (i.e., pulse H)
Power Off 1010 (no pulse on H & V)
312019181716
ReservedVSYNC
Control
VSYNC
Data
HSYNC
Control
R
HSYNC
Data
1510
ReservedHSYNC/
VSYNC
En
BitDescription
31:20
19
Reserved.
VSYNC Control.
Bit 19 (VSYNC Control) and bit 18 (VSYNC Data) are used by the BIOS to
take over the sync during DDC1 communication during POST. The BIOS can force the
VSYNC data at the same time as VSYNC control enables this signal as an output, so that the
VSYNC pulse occurs on every write by the BIOS. This is done to speed up some very slow
.
will go out to VSYNC pin.
will go out to HSYNC pin.
Module PowerDown 0
18
17
16
15:1
0
DDC communications
0 = Normal VSYNC output
1 = Contents of
VSYNC Data
VSYNC Data
HSYNC Control
0 = Normal HSYNC output
1 = Contents of
HSYNC Data
HSYNC Data.
Reserved
HSYNC/VSYNC Enable.
0 = HSync and Vsync are deactivated when the internal DAC is disabled. (Default)
1 = HSync and VSync remain active when the internal DAC is disabled via the
This register controls the general-purpose I/O pins GPIO0 (DDCSCL pin) and GPIO1 (DDCSDA pin). These two pins
are specifically used to create a Display Data Channel (DDC) serial bus. GPIO0 = DDC Clock (DDCSCL pin) and
GPIO1 = DDC Data (DDCSDA pin). Refer to the Cspec for a description of the pin operation.
3116
Reserved
151312111098
ReservedGPIO1
data in
GPIO1
data value
GPIO1
data mask
GPIO1
direction
value
7543210
ReservedGPIO0
data in
GPIO0
data value
GPIO0
data mask
GPIO0
direction
value
GPIO1
direction
mask
GPIO0
direction
mask
73
Intel® 810 Chipset Family PRM
BitDescription
R
31:16
15:13
12
11
10
9
8
7:5
4
3
2
1
0
Reserved
Reserved
GPIO1 Data In (RO):
GPIO1 Data Value (R/W):
written into the register if
data value actually is written to this register and the
This value is sampled on the GPIO1 pin as an input.
This value should be placed on the GPIO1 pin as an output. This value only is
GPIO1 DATA MASK
also is asserted. The value will appear on the pin if this
GPIO1 DIRECTION VALUE
will configure the pin as an output.
GPIO1 Data Mask (R/W):
This is a mask bit to determine whether the
be written into the register.
0 = Do NOT write GPIO1 Data Value bit (default).
1 = Write GPIO1 Data Value bit.
GPIO1 Direction Value (R/W):
This value only is written into the register if
This value should be used to define the output enable of the GPIO1 pin.
GPIO1 DIRECTION MASK
will appear on the pin is defined by what is in the register for the
0 = Pin is configured as an input (default).
1 = Pin is configured as an output.
GPIO1 Direction Mask (R/W):
VALUE
bit should be written into the register.
This mask bit is used to determine whether the
0 = Do NOT write GPIO1 Direction Value bit (default).
1 = Write GPIO1 Direction Value bit.
Reserved
GPIO0 Data In (RO):
GPIO0 Data Value (R/W):
written into the register if
data value actually is written to this register and the
This value is sampled on the GPIO0 pin as an input.
This value should be placed on the GPIO0 pin as an output. This value only is
GPIO0 DATA MASK
also is asserted. The value will appear on the pin if this
GPIO0 DIRECTION VALUE
will configure the pin as an output.
GPIO0 Data Mask (R/W):
This mask bit is used to determine whether the
should be written into the register.
0 = Do NOT write GPIO0 Data Value bit (default).
1 = Write GPIO0 Data Value bit.
GPIO0 Direction Value (R/W):
This value only is written into the register if
This value should be used to define the output enable of the GPIO0 pin.
GPIO0 DIRECTION MASK
will appear on the pin is defined by what is in the register for the
0 = Pin is configured as an input (default).
1 = Pin is configured as an output.
GPIO0 Direction Mask (R/W):
VALUE
bit should be written into the register.
This mask bit is used to determine whether the
0 = Do NOT write GPIO0 Direction Value bit (default).
1 = Write GPIO0 Direction Value bit.
contains a value that
GPIO1 DATA VALUE
also is asserted. The value that
GPIO1 DATA VALUE
bit.
GPIO DIRECTION
contains a value that
GPIO0 DATA VALUE
also is asserted. The value that
GPIO0 DATA VALUE
bit.
GPIO DIRECTION
bit should
bit
74
R
®
Intel
810 Chipset Family PRM
7.7.2 GPIOB
General-Purpose I/O Control Register B
Address offset : 05014h
Default value : 00h, 00h, 000U0000b, 000U0000b
Access : Read/Write
Size :32 bit
This register controls general-purpose I/O pins GPIO2 (LTVCL pin) and GPIO3 (LTVDA pin). These two pins are used
specifically to create an I
2
C serial bus interface. GPIO2 = I2C clock (LTVCL pin) and GPIO3 = I2C data (LTVDA pin).
Refer to the Cspec for a description of the pin operation.
3116
Reserved
151312111098
ReservedGPIO3
Data In
GPIO3
Data value
GPIO3
Data mask
GPIO3
Direction
value
7543210
ReservedGPIO2
Data In
GPIO2
Data value
GPIO2
Data mask
GPIO2
Direction
value
GPIO3
Direction
Mask
GPIO2
Direction
Mask
BitDescription
31:16
15:13
12
11
10
9
Reserved
Reserved
GPIO3 Data In (RO):
GPIO3 Data Value (R/W):
written into the register if
data value is actually written to this register and the
will configure the pin as an output.
GPIO3 Data Mask (R/W):
be written into the register.
0 = Do NOT write GPIO3 Data Value bit (default).
1 = Write GPIO3 Data Value bit.
GPIO3 Direction Value (R/W):
This value only is written into the register if
will appear on the pin is defined by what is in the register for the
0 = Pin is configured as an input (default).
1 = Pin is configured as an output.
This value is sampled on the GPIO3 pin as an input.
This value should be placed on the GPIO3 pin as an output. This value only is
GPIO3 DATA MASK
This is a mask bit to determine whether the
This value should be used to define the output enable of the GPIO3 pin.
is also asserted. The value will appear on the pin if this
GPIO3 DIRECTION VALUE
GPIO3 DIRECTION MASK
contains a value that
GPIO3 DATA VALUE
also is asserted. The value that
GPIO3 DATA VALUE
bit.
bit should
75
Intel® 810 Chipset Family PRM
BitDescription
R
8
7:5
4
3
2
1
0
GPIO3 Direction Mask (R/W):
VALUE
bit should be written into the register.
This mask bit is used to determine whether the
0 = Do NOT write GPIO3 Direction Value bit (default).
1 = Write GPIO3 Direction Value bit.
Reserved
GPIO2 Data In (RO):
GPIO2 Data Value (R/W):
written into the register if
data value is actually written to this register and the
This value is sampled on the GPIO2 pin as an input.
This value should be placed on the GPIO2 pin as an output. This value only is
GPIO2 DATA MASK
also is asserted. The value will appear on the pin if this
GPIO2 DIRECTION VALUE
will configure the pin as an output.
GPIO2 Data Mask (R/W):
This mask bit is used to determine whether the
should be written into the register.
0 = Do NOT write GPIO2 Data Value bit (default).
1 = Write GPIO2 Data Value bit.
GPIO2 Direction Value (R/W):
This value only is written into the register if
This value should be used to define the output enable of the GPIO2 pin.
GPIO2 DIRECTION MASK
will appear on the pin is defined by what is in the register for the
0 = Pin is configured as an input (default).
1 = Pin is configured as an output.
GPIO2 Direction Mask (R/W):
This mask is used to determine whether the
bit should be written into the register.
0 = Do NOT write GPIO2 Direction Value bit (default).
1 = Write GPIO2 Direction Value bit.
GPIO DIRECTION
contains a value that
GPIO2 DATA VALUE
also is asserted. The value that
GPIO2 DATA VALUE
bit.
GPIO DIRECTION VALUE
bit
76
R
®
Intel
810 Chipset Family PRM
7.8 Clock Control Registers
The clock control registers are accessed by writing to the memory-mapped address offset.
The Intel 82810 Chipset has 3 PLLs for generating all the clocks. The host PLL generates the host clock, whose
frequency is controlled by an external strap. In addition, the host PLL generates the system and local memory core clock
and the graphics core clock. The hub PLL generates the clock for the hub-link unit. The display PLL generates the
display or LCD clock.
The display clock can be controlled by three blocks of registers: DCLK0, DCLK1, and DCLK2. Each display clock has
its own Display Clock i Divisor registers for M, N, and a byte of the Display & LCD Clock Divisor Select Register,
within which are P (divisor) values and which can be programmed independently. DCLK0 and DCLK1 normally are
programmed to 25.175 MHz and 28.322 MHz, respectively (VGA-compatible clocks). DCLK2 is used for non-VGA
modes.
The Display Clock i Divisor register and the appropriate byte of the Display & LCD Clock Divisor Select Register
are programmed with the loop parameters to be loaded into the clock synthesizer. The MSR[3:2] register is used to select
between DCLK0(default), DCLK1 and DCLK2. The LCD clock is selected by writing to LCD / TV Out Control [31] = 1
and [0] = 1. MSR[3:2] are ignored when this condition is TRUE.
The data written to these registers is calculated based on the reference frequency, the desired output frequency, and
characteristic VCO constraints, as described in the functional description. From the calculation, the M, N, and P values
are obtained.
7.8.1 Programming Notes
Three blocks of registers exist for programming up to three unique frequencies for the display clock. These registers are
named dclk0, dclk1 and dclk2.
Each of these blocks can be programmed independently of each other. However, only one can be selected at any point in
time in order to control the DPLL
MSR register bits 3:2 are used to determine which DCLK0,1,2 register groups will control the DPLL.
Writing to MSR register bits 3:2 also transfers the Display Clock Divisor and Display & LCD Clock Divisor Select
Register contents to the VCO register file.
Example Programming Sequence ( DCLK0)
Write the Display Clock 0 Divisor register with the M-REG value and N-REG value.
Write the clock 0 byte of the Display & LCD Clock Divisor Select Register with the P-REG value.
Write the MSR register, bits 3:2 = '00', in order to select DCLK0. (NOTE: This is the default value.)
Example Programming Sequence ( DCLK1)
Write the Display Clock 1 Divisor register with the M-REG value and N-REG value.
Write the clock 1 byte of the Display & LCD Clock Divisor Select Register with the P-REG value.
Write the MSR register, bits 3:2 = '01', in order to select DCLK1.
77
Intel® 810 Chipset Family PRM
Example Programming Sequence ( DCLK2)
Write the Display Clock 2 Divisor register with the M-REG value and N-REG value.
Write the clock 2 byte of the Display & LCD Clock Divisor Select Register with the P-REG value.
Write the MSR register, bit 3 = '1', to select DCLK2.
Example Programming Sequence (LCD CLK)
Write the LCD Clock Divisor register with the M-REG value and N-REG value.
Write the LCD byte of the Display & LCD Clock Divisor Select Register with the P-REG value.
Write the LCD / TV Out Control[31] = 1 and [0] = 1. MSR[3:2] are ignored when this condition is TRUE.
The Display Clock 0 Divisor register and Display & LCD Clock Divisor Select Register are programmed with the
loop parameters to be loaded into the clock synthesizer.
The data written to this register is calculated based on the reference frequency, the desired output frequency, and the
characteristic VCO constraints, as described in the datasheet.
Data is written to the Display Clock 0 Divisor register, followed by a write to clock 0 byte of the Display & LCD
Clock Divisor Select Register. The completion of the write to the clock 0 byte of the Video Clock Divisor Select
Register causes data from both registers to transfer simultaneously to the VCO register file. This preve nts wild fluctua-
tions in the VCO output during intermediate stages of a clock programming sequence.
The Display Clock 0 Divisor register and Display & LCD Clock Divisor Select Register are programmed with the
loop parameters to be loaded into the clock synthesizer.
The data written to this register is calculated based on the reference frequency, the desired output frequency, and the
characteristic VCO constraints, as described in the datasheet.
Data is written to Display Clock 0 Divisor register, followed by a write to the clock 1 byte of the Display & LCDClock Divisor Select Register. The completion of the write to Display & LCD Clock Divisor Select Register causes
data from both registers to transfer simultaneously to the VCO register file. This prevents wild fluctuations in the VCO
output during intermediate stages of a clock programming sequence.
The Display Clock 2 Divisor register and Display & LCD Clock Divisor Select Register are programmed with the
loop parameters to be loaded into the clock synthesizer.
The data written to this register is calculated based on the reference frequency, the desired output frequency, and the
characteristic VCO constraints, as described in the datasheet.
Data is written to Display Clock 2 Divisor register, followed by a write to the clock 2 byte of the Display & LCDClock Divisor Select Register. The completion of the write to the Display & LCD Clock Divisor Select Register
causes data from both registers to transfer simultaneously to the VCO register file. This preve nts wild fluctuations in the
VCO output during intermediate stages of a clock programming sequence.
The LCD Clock Divisor register and Display & LCD Clock Divisor Select Register are programmed with the loop
parameters to be loaded into the clock synthesizer.
The data written to this register is calculated based on the reference frequency, the desired output frequency, and the
characteristic VCO constraints, as described in the datasheet.
Data is written to LCD Clock Divisor register, followed by a write to the LCD clock byte of the Display & LCD ClockDivisor Select Register. The completion of the write to Display & LCD Clock Divisor Select Register causes data
from both registers to transfer simultaneously to the VCO register file. This prevents wild fluctuation s in the VCO output
during intermediate stages of a clock programming sequence.
Display clock i {i=0 to 2} becomes effective after programming the appropriate byte i {i = 0 to 2}in this register. LCD
clock becomes effective after programming byte 3 in this register.
31302827262524
ReservedPost Divisor Select LCD ClkReservedVCO
Loop Div
LCD clk
23222019181716
ReservedPost Divisor Select Clk 2ReservedVCO
Loop Div
clk 2
Reserved
Reserved
151412111098
ReservedPost Divisor Select Clk 1Reserved
7643210
ReservedPost Divisor Select Clk 0Reserved
BitDescription
31
30:28
Reserved.
Post Divisor Select LCD Clock.
000 = Divide by 1
001 = Divide by 2
010 = Divide by 4
011 = Divide by 8
100 = Divide by 16 (default)
101 = Divide by 32
11x = Reserved
27
26
Reserved.
VCO Loop Divide LCD Clock.
0 = Divided by 4*M (default) (M = LCD Clock Divisor Register [9:0])
1 = Divided by 16*M
25:23
Reserved.
VCO
Loop Div
clk 1
VCO
Loop Div
clk 0
Reserved
ReservedReserved
83
Intel® 810 Chipset Family PRM
BitDescription
22:20
Post Divisor Select clock 2.
000 = Divide by 1
001 = Divide by 2
010 = Divide by 4
011 = Divide by 8
100 = Divide by 16 (default)
101 = Divide by 32
11x = Reserved
19
18
Reserved.
VCO Loop Divide clock 2.
0 = Divided by 4*M (default) (M = Display Clock 2 Divisor Register [9:0])
1 = Divided by 16*M
17:15
14:12
Reserved.
Post Divisor Select clock 1.
000 = Divide by 1
001 = Divide by 2
010 = Divide by 4
011 = Divide by 8
100 = Divide by 16 (default)
101 = Divide by 32
11x = Reserved
11
10
Reserved.
VCO Loop Divide clock 1.
0 = Divided by 4*M (default) (M = Display Clock 1 Divisor Register [9:0])
1 = Divided by 16*M
9:7
6:4
Reserved.
Post Divisor Select clock 0.
000 = Divide by 1
001 = Divide by 2
010 = Divide by 4
011 = Divide by 8
100 = Divide by 16 (default)
101 = Divide by 32
11x = Reserved
3
2
Reserved.
VCO Loop Divide clock 0.
0 = Divided by 4*M (default) (M = Display Clock 0 Divisor Register [9:0])
1 = Divided by 16*M
1
0
Reserved.
Reserved. 0
R
84
R
®
Intel
810 Chipset Family PRM
7.8.7 PWR_CLKC—Power Management and Miscellaneous Clock Control
0 = Disables the internal DAC (power-down). If HSYNC/VSYNCControl[0] = 0, disables HSYNC and
VSYNC.
1 = Enables the internal DAC and does not allow disabling of HSYNC and VSYNC via HSYNC/VSYNC
Control[0]. (Default)
85
Intel® 810 Chipset Family PRM
7.9 LCD / TV-Out Registers
During the LCD or TV-Out mode, the BIOS will program the following LCD / TV-out registers. These registers are 32bit, memory-mapped registers. These registers are not double-buffered and take effect when loaded. Further, this
subsystem takes into account modified CR register values during vertical blank time for centering.
This subsystem allows the timing generator to be programmed to pixel granularity. The only exception is during the
VGA pixel-doubling mode. During VGA pixel-doubling, active pixel time must be a multiple of 4 pixels to account for
centering with VGA pixel-doubling, and non-active times must be a multiple of 2 pixels clocks.
All fields are excess-0 encoded. This means that the hardware uses the value + 1, where the value is the entry in the field.
Therefore if a 0 is programmed into a field, the hardware uses the value 1 for that field.
ReservedHorizontal Total Display PixelsReservedHorizontal Active Display
Pixels
BitDescription
31:28
27:16
15:11
10:0
Reserved.
Horizontal Total Display Pixels.
encompassing 2048 active display pixels, front/back border pixels, and the horizontal retrace period. Any
pending event (HSYNC, VSYNC) is reset at htotal.
Reserved.
Horizontal Active Display Pixels.
2048 pixels. Note that the first horizontal active display pixel always starts at 0.
Read Only
This 12-bit field provides a horizontal total of up to 4096 pixels,
Read Only
This 11-bit field provides horizontal active display resolutions up to
the horizontal active display start. Note: An asserted HBlank will be deasserted when HTotal occurs,
regardless of what is programmed in the HBlank end.
Reserved.
Horizontal Blank Start.
horizontal active display start
Read Only
Horizontal blank end expressed in terms of the absolute pixel number relative to
Read Only
Horizontal blank start, expressed in terms of absolute pixel number relative to the