![[Toc]](../../toc.gif)
![[Index]](/idx.gif)
How to Customize the PMI Subsystem for Your Device
The VIDEO PMI subsystem consists of VIDEOPMI-the main PMI handler, a flat
PMI file, and optional imported library modules. The imported library
modules may optionally chain into VIDEOPMI and provide a filter or
replacement for VIDEOPMI's entry points. Such a library is called a
META-PMI handler. Although the VIDEO PMI subsystem places no requirements
on the existence of a flat PMI file (it is possible to provide all
functions with a META-PMI handler alone), the SVGA installation, SVGA
virtual video driver, BVHSVGA, and VIDEOCFG all make assumptions that the
PMI subsystem is represented by SVGADATA.PMI.
The VIDEOPMI handler is maintained by IBM; it is shipped in the IBM
Developer Connection Device Driver Kit for OS/2 as a binary file. See
Video Subsystem Binary Files. The SVGADATA.PMI file is either provided or
can be created at install time by running a utility. The SVGA installation
action routine DLL (SVGA.DLL) assumes that a DOS utility called SVGA.EXE
is used to generate the SVGADATA.PMI. A vendor wishing to modify the
SVGADATA.PMI can provide its own action routine DLL or create the SVGA.EXE
DOS utility. DDK sources include two different sources of a utility that
generates the SVGADATA.PMI file, as follows:
* src\svdh\svgautil\svga.exe
src\svdh\svgautil sources are those of the SVGA.EXE as shipped by
IBM. It is a very large and complex source that generates a .PMI
file for all of the devices supported by the IBM BBS display driver
packages at the time the IBM Developer Connection Device Driver Kit
for OS/2 was shipped.
Vendors should not modify this source; it is shipped so that vendors
can create sample .PMI files for legacy hardware. PMI files created
by this utility use IBMGPMI.DLL as an imported PMI library. The
source for IBMGPMI.DLL is not available for vendor modification, but
a binary file can be extracted from the most current IBM BBS video
driver package. An older version of IBMGPMI can be found in
previous DDKs.
For purposes of documenting an imported PMI library, an alternate
library source in src\oempmi for OEMPMI.DLL is provided. This PMI
library exemplifies both internal PMI calls and the META-PMI
interface (chaining into VIDEOPMI). It also provides an example of
using the VIDEOPMI's software interrupt API to call the VIDEO BIOS
directly.
* src\oempmi\svgautil\svgaoem.exe
src\oempmi\svgautil sources are the recommended sources for vendor
modification. The makefile will generate an SVGAOEM.EXE, which
should be renamed to SVGA.EXE if the SVGA.DLL action routine DLL is
to be used. The utility will create a generic SVGADATA.PMI file
based solely on VESA mode support without any vendor modifications.
This generic .PMI file depends on the OEMPMI.DLL META-PMI handler,
referred to in the previous bullet, for successful VESA BIOS calls.
If there is no VESA support for the adapter, or vendors wish to add
refresh support or customize the generic sections, the SetupChipInfo
function in SVGAOEM.C needs to be modified. The header of the
SVGAOEM.C source file includes the "ROADMAP to CHANGES"
instructions.
src\oempmi sources are open to vendor modification, and its headers
also include extensive instructions on the recommended changes.
However, for a vendor with VESA mode set support and a display
driver that can run on top of the hardware state as left by the VESA
mode set, the quickest results are obtained by doing the following:
- Install all of the Base Video Subsystem files.
- Create a .PMI file by running the unmodified SVGAOEM.EXE with
command line argument "ON".
Created using Inf-PHP v.2 (c) 2003 Yuri Prokushev
Created using Inf-HTML v.0.9b (c) 1995 Peter Childs