138 lines
3.4 KiB
C
138 lines
3.4 KiB
C
|
//---------------------------------------------------------------------------
|
||
|
/*++
|
||
|
|
||
|
Copyright (c) 1993 Compaq Computer Corporation
|
||
|
|
||
|
Module Name:
|
||
|
|
||
|
ctlrasic.c
|
||
|
|
||
|
Abstract:
|
||
|
|
||
|
This module contains the code for identification of Compaq
|
||
|
Display Controller ASICS.
|
||
|
|
||
|
Original QVision ASIC - Feb. '92
|
||
|
--------------------------------
|
||
|
QVision 1024 /E - 1M configuration
|
||
|
QVision 1024 /I - 1M configuration
|
||
|
Deskpro /i with system board QVision - 512k or 1M configuration
|
||
|
|
||
|
Enhanced QVision ASIC - May '93
|
||
|
-------------------------------
|
||
|
QVision 1024 /E - 1M or 2M configuration
|
||
|
QVision 1024 /I - 1M or 2M configuration
|
||
|
QVision 1280 /E - 2M configuration
|
||
|
QVision 1280 /I - 2M configuration
|
||
|
|
||
|
|
||
|
Environment:
|
||
|
|
||
|
kernel mode only
|
||
|
|
||
|
Notes:
|
||
|
|
||
|
Revision History:
|
||
|
$0006
|
||
|
miked: 02/17/1994
|
||
|
. took out conditional debug code to satisfy MSBHPD
|
||
|
|
||
|
$0004
|
||
|
miked: 1/26/1994
|
||
|
. Added debug print code without all the other DBG overhead
|
||
|
|
||
|
12/1/93 Mike Duke Original module started as start for NT version of QRY
|
||
|
library.
|
||
|
--*/
|
||
|
//---------------------------------------------------------------------------
|
||
|
|
||
|
#include "dderror.h"
|
||
|
#include "devioctl.h"
|
||
|
#include "miniport.h"
|
||
|
|
||
|
#include "ntddvdeo.h"
|
||
|
#include "video.h"
|
||
|
#include "qvision.h"
|
||
|
|
||
|
#include "qry_nt.h"
|
||
|
|
||
|
ULONG
|
||
|
QRY_ControllerASICID( PUCHAR IOAddress )
|
||
|
/*++
|
||
|
Function: QRY_ControllerASICID
|
||
|
|
||
|
This function returns the ASIC id of Compaq Video controllers.
|
||
|
|
||
|
Return value:
|
||
|
The return value is a ULONG with bytes defined as follows:
|
||
|
|
||
|
3 2 1 0 (byte positions)
|
||
|
ULONG ---> XX FF FF FF
|
||
|
-- -- -- --
|
||
|
| | | |____ASIC ID
|
||
|
| | |_______Extended ID
|
||
|
| |__________Second Extended ID
|
||
|
|_____________Not used (will be zero)
|
||
|
|
||
|
--*/
|
||
|
//---------------------------------------------------------------------------
|
||
|
{
|
||
|
ULONG ulReturn = 0L;
|
||
|
UCHAR ucTemp = 0 ;
|
||
|
|
||
|
// unlock QVision registers
|
||
|
//
|
||
|
VideoPortWritePortUchar((PUCHAR)(IOAddress + GRAPH_ADDRESS_PORT),
|
||
|
0x0f);
|
||
|
ucTemp = VideoPortReadPortUchar((IOAddress + \
|
||
|
GRAPH_DATA_PORT)) & 0xf0;
|
||
|
VideoPortWritePortUchar((PUCHAR)(IOAddress + GRAPH_DATA_PORT),
|
||
|
(UCHAR)(0x05 | ucTemp));
|
||
|
VideoPortWritePortUchar((PUCHAR)(IOAddress + GRAPH_ADDRESS_PORT),
|
||
|
0x10);
|
||
|
ucTemp = VideoPortReadPortUchar((PUCHAR)(IOAddress + GRAPH_DATA_PORT));
|
||
|
VideoPortWritePortUchar((PUCHAR)(IOAddress + GRAPH_DATA_PORT),
|
||
|
(UCHAR)(0x28 | ucTemp));
|
||
|
|
||
|
//
|
||
|
// get asic id
|
||
|
//
|
||
|
VideoPortWritePortUchar((PUCHAR)(IOAddress + GRAPH_ADDRESS_PORT), 0x0c);
|
||
|
|
||
|
// read in asic id
|
||
|
//
|
||
|
ucTemp = VideoPortReadPortUchar(IOAddress + GRAPH_DATA_PORT) ;
|
||
|
|
||
|
ulReturn = (ULONG)ucTemp; // save asic id
|
||
|
|
||
|
//
|
||
|
// is extended id info available ?
|
||
|
//
|
||
|
if (ucTemp & EXTENDED_ID_BIT) {
|
||
|
|
||
|
VideoPortWritePortUchar((PUCHAR)(IOAddress + GRAPH_ADDRESS_PORT), 0x0d);
|
||
|
|
||
|
//
|
||
|
// read in extended id
|
||
|
//
|
||
|
ucTemp = VideoPortReadPortUchar(IOAddress + GRAPH_DATA_PORT) ;
|
||
|
ulReturn |= ((ULONG)(ucTemp)) << 8 ;
|
||
|
|
||
|
//
|
||
|
// is second extended id info available ?
|
||
|
//
|
||
|
if (ucTemp & EXTENDED_ID2_BIT) {
|
||
|
|
||
|
VideoPortWritePortUchar((PUCHAR)(IOAddress + GRAPH_ADDRESS_PORT), 0x0e);
|
||
|
|
||
|
//
|
||
|
// read in second extended id
|
||
|
//
|
||
|
ucTemp = VideoPortReadPortUchar(IOAddress + GRAPH_DATA_PORT) ;
|
||
|
ulReturn |= ((ULONG)(ucTemp)) << 16 ;
|
||
|
}
|
||
|
}
|
||
|
|
||
|
return (ulReturn);
|
||
|
}
|