* Remove old legacy internal AtomBIOS parser
* Import "new" AMD AtomBios Parser (aka AMD KGrids) * Add a new global storage struct for BIOS info (ex. location, size, etc) git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@42534 a95241bf-73f2-0310-859d-f6bbb57e9c96
This commit is contained in:
@@ -3,12 +3,13 @@ SEARCH_SOURCE += [ FDirName $(HAIKU_TOP) src add-ons accelerants common ] ;
|
|||||||
|
|
||||||
SetSubDirSupportedPlatformsBeOSCompatible ;
|
SetSubDirSupportedPlatformsBeOSCompatible ;
|
||||||
|
|
||||||
UseHeaders [ FDirName $(SUBDIR) atombios includes ] ;
|
UseHeaders [ FDirName $(SUBDIR) atombios ] ;
|
||||||
UsePrivateHeaders graphics ;
|
UsePrivateHeaders graphics ;
|
||||||
UsePrivateHeaders [ FDirName graphics radeon_hd ] ;
|
UsePrivateHeaders [ FDirName graphics radeon_hd ] ;
|
||||||
UsePrivateHeaders [ FDirName graphics common ] ;
|
UsePrivateHeaders [ FDirName graphics common ] ;
|
||||||
|
|
||||||
Addon radeon_hd.accelerant :
|
Addon radeon_hd.accelerant :
|
||||||
|
#atombios/atom.c
|
||||||
accelerant.cpp
|
accelerant.cpp
|
||||||
engine.cpp
|
engine.cpp
|
||||||
hooks.cpp
|
hooks.cpp
|
||||||
@@ -21,7 +22,5 @@ Addon radeon_hd.accelerant :
|
|||||||
mode.cpp
|
mode.cpp
|
||||||
bios.cpp
|
bios.cpp
|
||||||
create_display_modes.cpp
|
create_display_modes.cpp
|
||||||
: be libaccelerantscommon.a atombios.a
|
: be libaccelerantscommon.a
|
||||||
;
|
;
|
||||||
|
|
||||||
SubInclude HAIKU_TOP src add-ons accelerants radeon_hd atombios ;
|
|
||||||
|
|||||||
@@ -11,10 +11,11 @@
|
|||||||
#include "accelerant_protos.h"
|
#include "accelerant_protos.h"
|
||||||
#include "accelerant.h"
|
#include "accelerant.h"
|
||||||
|
|
||||||
|
#include "bios.h"
|
||||||
#include "display.h"
|
#include "display.h"
|
||||||
#include "utility.h"
|
|
||||||
#include "pll.h"
|
|
||||||
#include "mc.h"
|
#include "mc.h"
|
||||||
|
#include "pll.h"
|
||||||
|
#include "utility.h"
|
||||||
|
|
||||||
#include <errno.h>
|
#include <errno.h>
|
||||||
#include <stdlib.h>
|
#include <stdlib.h>
|
||||||
@@ -36,6 +37,7 @@ extern "C" void _sPrintf(const char *format, ...);
|
|||||||
|
|
||||||
|
|
||||||
struct accelerant_info *gInfo;
|
struct accelerant_info *gInfo;
|
||||||
|
struct bios_info *gBIOS;
|
||||||
display_info *gDisplay[MAX_DISPLAY];
|
display_info *gDisplay[MAX_DISPLAY];
|
||||||
|
|
||||||
|
|
||||||
@@ -98,11 +100,13 @@ init_common(int device, bool isClone)
|
|||||||
// initialize global accelerant info structure
|
// initialize global accelerant info structure
|
||||||
|
|
||||||
gInfo = (accelerant_info *)malloc(sizeof(accelerant_info));
|
gInfo = (accelerant_info *)malloc(sizeof(accelerant_info));
|
||||||
|
gBIOS = (bios_info *)malloc(sizeof(bios_info));
|
||||||
|
|
||||||
if (gInfo == NULL)
|
if (gInfo == NULL || gBIOS == NULL)
|
||||||
return B_NO_MEMORY;
|
return B_NO_MEMORY;
|
||||||
|
|
||||||
memset(gInfo, 0, sizeof(accelerant_info));
|
memset(gInfo, 0, sizeof(accelerant_info));
|
||||||
|
memset(gBIOS, 0, sizeof(bios_info));
|
||||||
|
|
||||||
for (uint32 id = 0; id < MAX_DISPLAY; id++) {
|
for (uint32 id = 0; id < MAX_DISPLAY; id++) {
|
||||||
gDisplay[id] = (display_info *)malloc(sizeof(display_info));
|
gDisplay[id] = (display_info *)malloc(sizeof(display_info));
|
||||||
@@ -127,6 +131,7 @@ init_common(int device, bool isClone)
|
|||||||
if (ioctl(device, RADEON_GET_PRIVATE_DATA, &data,
|
if (ioctl(device, RADEON_GET_PRIVATE_DATA, &data,
|
||||||
sizeof(radeon_get_private_data)) != 0) {
|
sizeof(radeon_get_private_data)) != 0) {
|
||||||
free(gInfo);
|
free(gInfo);
|
||||||
|
free(gBIOS);
|
||||||
return B_ERROR;
|
return B_ERROR;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -137,6 +142,7 @@ init_common(int device, bool isClone)
|
|||||||
status_t status = sharedCloner.InitCheck();
|
status_t status = sharedCloner.InitCheck();
|
||||||
if (status < B_OK) {
|
if (status < B_OK) {
|
||||||
free(gInfo);
|
free(gInfo);
|
||||||
|
free(gBIOS);
|
||||||
TRACE("%s, failed shared area%i, %i\n",
|
TRACE("%s, failed shared area%i, %i\n",
|
||||||
__func__, data.shared_info_area, gInfo->shared_info_area);
|
__func__, data.shared_info_area, gInfo->shared_info_area);
|
||||||
return status;
|
return status;
|
||||||
@@ -149,6 +155,7 @@ init_common(int device, bool isClone)
|
|||||||
status = regsCloner.InitCheck();
|
status = regsCloner.InitCheck();
|
||||||
if (status < B_OK) {
|
if (status < B_OK) {
|
||||||
free(gInfo);
|
free(gInfo);
|
||||||
|
free(gBIOS);
|
||||||
return status;
|
return status;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -182,6 +189,8 @@ uninit_common(void)
|
|||||||
free(gInfo);
|
free(gInfo);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
free(gBIOS);
|
||||||
|
|
||||||
for (uint32 id = 0; id < MAX_DISPLAY; id++) {
|
for (uint32 id = 0; id < MAX_DISPLAY; id++) {
|
||||||
if (gDisplay[id] != NULL) {
|
if (gDisplay[id] != NULL) {
|
||||||
free(gDisplay[id]->regs);
|
free(gDisplay[id]->regs);
|
||||||
|
|||||||
@@ -1,959 +0,0 @@
|
|||||||
/*
|
|
||||||
* Copyright 2006-2007 Advanced Micro Devices, Inc.
|
|
||||||
*
|
|
||||||
* Permission is hereby granted, free of charge, to any person obtaining a
|
|
||||||
* copy of this software and associated documentation files (the "Software"),
|
|
||||||
* to deal in the Software without restriction, including without limitation
|
|
||||||
* the rights to use, copy, modify, merge, publish, distribute, sublicense,
|
|
||||||
* and/or sell copies of the Software, and to permit persons to whom the
|
|
||||||
* Software is furnished to do so, subject to the following conditions:
|
|
||||||
*
|
|
||||||
* The above copyright notice and this permission notice shall be included in
|
|
||||||
* all copies or substantial portions of the Software.
|
|
||||||
*
|
|
||||||
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
|
||||||
* IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
|
||||||
* FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
|
|
||||||
* THE COPYRIGHT HOLDER(S) OR AUTHOR(S) BE LIABLE FOR ANY CLAIM, DAMAGES OR
|
|
||||||
* OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE,
|
|
||||||
* ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
|
|
||||||
* OTHER DEALINGS IN THE SOFTWARE.
|
|
||||||
*/
|
|
||||||
|
|
||||||
/**
|
|
||||||
|
|
||||||
Module Name:
|
|
||||||
|
|
||||||
CD_Operations.c
|
|
||||||
|
|
||||||
Abstract:
|
|
||||||
|
|
||||||
Functions Implementing Command Operations and other common functions
|
|
||||||
|
|
||||||
Revision History:
|
|
||||||
|
|
||||||
NEG:27.09.2002 Initiated.
|
|
||||||
--*/
|
|
||||||
#define __SW_4
|
|
||||||
|
|
||||||
#include "Decoder.h"
|
|
||||||
#include "atombios.h"
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
VOID PutDataRegister(PARSER_TEMP_DATA STACK_BASED * pParserTempData);
|
|
||||||
VOID PutDataPS(PARSER_TEMP_DATA STACK_BASED * pParserTempData);
|
|
||||||
VOID PutDataWS(PARSER_TEMP_DATA STACK_BASED * pParserTempData);
|
|
||||||
VOID PutDataFB(PARSER_TEMP_DATA STACK_BASED * pParserTempData);
|
|
||||||
VOID PutDataPLL(PARSER_TEMP_DATA STACK_BASED * pParserTempData);
|
|
||||||
VOID PutDataMC(PARSER_TEMP_DATA STACK_BASED * pParserTempData);
|
|
||||||
|
|
||||||
UINT32 GetParametersDirect32(PARSER_TEMP_DATA STACK_BASED * pParserTempData);
|
|
||||||
UINT32 GetParametersDirect16(PARSER_TEMP_DATA STACK_BASED * pParserTempData);
|
|
||||||
UINT32 GetParametersDirect8(PARSER_TEMP_DATA STACK_BASED * pParserTempData);
|
|
||||||
|
|
||||||
UINT32 GetParametersRegister(PARSER_TEMP_DATA STACK_BASED * pParserTempData);
|
|
||||||
UINT32 GetParametersPS(PARSER_TEMP_DATA STACK_BASED * pParserTempData);
|
|
||||||
UINT32 GetParametersWS(PARSER_TEMP_DATA STACK_BASED * pParserTempData);
|
|
||||||
UINT32 GetParametersFB(PARSER_TEMP_DATA STACK_BASED * pParserTempData);
|
|
||||||
UINT32 GetParametersPLL(PARSER_TEMP_DATA STACK_BASED * pParserTempData);
|
|
||||||
UINT32 GetParametersMC(PARSER_TEMP_DATA STACK_BASED * pParserTempData);
|
|
||||||
|
|
||||||
VOID SkipParameters16(PARSER_TEMP_DATA STACK_BASED * pParserTempData);
|
|
||||||
VOID SkipParameters8(PARSER_TEMP_DATA STACK_BASED * pParserTempData);
|
|
||||||
|
|
||||||
UINT32 GetParametersIndirect(PARSER_TEMP_DATA STACK_BASED * pParserTempData);
|
|
||||||
UINT32 GetParametersDirect(PARSER_TEMP_DATA STACK_BASED * pParserTempData);
|
|
||||||
|
|
||||||
UINT16* GetDataMasterTablePointer(DEVICE_DATA STACK_BASED* pDeviceData);
|
|
||||||
UINT8 GetTrueIndexInMasterTable(PARSER_TEMP_DATA STACK_BASED * pParserTempData, UINT8 IndexInMasterTable);
|
|
||||||
|
|
||||||
|
|
||||||
WRITE_IO_FUNCTION WritePCIFunctions[8] = {
|
|
||||||
WritePCIReg32,
|
|
||||||
WritePCIReg16, WritePCIReg16, WritePCIReg16,
|
|
||||||
WritePCIReg8,WritePCIReg8,WritePCIReg8,WritePCIReg8
|
|
||||||
};
|
|
||||||
WRITE_IO_FUNCTION WriteIOFunctions[8] = {
|
|
||||||
WriteSysIOReg32,
|
|
||||||
WriteSysIOReg16,WriteSysIOReg16,WriteSysIOReg16,
|
|
||||||
WriteSysIOReg8,WriteSysIOReg8,WriteSysIOReg8,WriteSysIOReg8
|
|
||||||
};
|
|
||||||
READ_IO_FUNCTION ReadPCIFunctions[8] = {
|
|
||||||
(READ_IO_FUNCTION)ReadPCIReg32,
|
|
||||||
(READ_IO_FUNCTION)ReadPCIReg16,
|
|
||||||
(READ_IO_FUNCTION)ReadPCIReg16,
|
|
||||||
(READ_IO_FUNCTION)ReadPCIReg16,
|
|
||||||
(READ_IO_FUNCTION)ReadPCIReg8,
|
|
||||||
(READ_IO_FUNCTION)ReadPCIReg8,
|
|
||||||
(READ_IO_FUNCTION)ReadPCIReg8,
|
|
||||||
(READ_IO_FUNCTION)ReadPCIReg8
|
|
||||||
};
|
|
||||||
READ_IO_FUNCTION ReadIOFunctions[8] = {
|
|
||||||
(READ_IO_FUNCTION)ReadSysIOReg32,
|
|
||||||
(READ_IO_FUNCTION)ReadSysIOReg16,
|
|
||||||
(READ_IO_FUNCTION)ReadSysIOReg16,
|
|
||||||
(READ_IO_FUNCTION)ReadSysIOReg16,
|
|
||||||
(READ_IO_FUNCTION)ReadSysIOReg8,
|
|
||||||
(READ_IO_FUNCTION)ReadSysIOReg8,
|
|
||||||
(READ_IO_FUNCTION)ReadSysIOReg8,
|
|
||||||
(READ_IO_FUNCTION)ReadSysIOReg8
|
|
||||||
};
|
|
||||||
READ_IO_FUNCTION GetParametersDirectArray[8]={
|
|
||||||
GetParametersDirect32,
|
|
||||||
GetParametersDirect16,GetParametersDirect16,GetParametersDirect16,
|
|
||||||
GetParametersDirect8,GetParametersDirect8,GetParametersDirect8,
|
|
||||||
GetParametersDirect8
|
|
||||||
};
|
|
||||||
|
|
||||||
COMMANDS_DECODER PutDataFunctions[6] = {
|
|
||||||
PutDataRegister,
|
|
||||||
PutDataPS,
|
|
||||||
PutDataWS,
|
|
||||||
PutDataFB,
|
|
||||||
PutDataPLL,
|
|
||||||
PutDataMC
|
|
||||||
};
|
|
||||||
CD_GET_PARAMETERS GetDestination[6] = {
|
|
||||||
GetParametersRegister,
|
|
||||||
GetParametersPS,
|
|
||||||
GetParametersWS,
|
|
||||||
GetParametersFB,
|
|
||||||
GetParametersPLL,
|
|
||||||
GetParametersMC
|
|
||||||
};
|
|
||||||
|
|
||||||
COMMANDS_DECODER SkipDestination[6] = {
|
|
||||||
SkipParameters16,
|
|
||||||
SkipParameters8,
|
|
||||||
SkipParameters8,
|
|
||||||
SkipParameters8,
|
|
||||||
SkipParameters8,
|
|
||||||
SkipParameters8
|
|
||||||
};
|
|
||||||
|
|
||||||
CD_GET_PARAMETERS GetSource[8] = {
|
|
||||||
GetParametersRegister,
|
|
||||||
GetParametersPS,
|
|
||||||
GetParametersWS,
|
|
||||||
GetParametersFB,
|
|
||||||
GetParametersIndirect,
|
|
||||||
GetParametersDirect,
|
|
||||||
GetParametersPLL,
|
|
||||||
GetParametersMC
|
|
||||||
};
|
|
||||||
|
|
||||||
UINT32 AlignmentMask[8] = {0xFFFFFFFF,0xFFFF,0xFFFF,0xFFFF,0xFF,0xFF,0xFF,0xFF};
|
|
||||||
UINT8 SourceAlignmentShift[8] = {0,0,8,16,0,8,16,24};
|
|
||||||
UINT8 DestinationAlignmentShift[4] = {0,8,16,24};
|
|
||||||
|
|
||||||
#define INDIRECTIO_ID 1
|
|
||||||
#define INDIRECTIO_END_OF_ID 9
|
|
||||||
|
|
||||||
VOID IndirectIOCommand(PARSER_TEMP_DATA STACK_BASED * pParserTempData);
|
|
||||||
VOID IndirectIOCommand_MOVE(PARSER_TEMP_DATA STACK_BASED * pParserTempData, UINT32 temp);
|
|
||||||
VOID IndirectIOCommand_MOVE_INDEX(PARSER_TEMP_DATA STACK_BASED * pParserTempData);
|
|
||||||
VOID IndirectIOCommand_MOVE_ATTR(PARSER_TEMP_DATA STACK_BASED * pParserTempData);
|
|
||||||
VOID IndirectIOCommand_MOVE_DATA(PARSER_TEMP_DATA STACK_BASED * pParserTempData);
|
|
||||||
VOID IndirectIOCommand_SET(PARSER_TEMP_DATA STACK_BASED * pParserTempData);
|
|
||||||
VOID IndirectIOCommand_CLEAR(PARSER_TEMP_DATA STACK_BASED * pParserTempData);
|
|
||||||
|
|
||||||
|
|
||||||
INDIRECT_IO_PARSER_COMMANDS IndirectIOParserCommands[10]={
|
|
||||||
{IndirectIOCommand,1},
|
|
||||||
{IndirectIOCommand,2},
|
|
||||||
{ReadIndReg32,3},
|
|
||||||
{WriteIndReg32,3},
|
|
||||||
{IndirectIOCommand_CLEAR,3},
|
|
||||||
{IndirectIOCommand_SET,3},
|
|
||||||
{IndirectIOCommand_MOVE_INDEX,4},
|
|
||||||
{IndirectIOCommand_MOVE_ATTR,4},
|
|
||||||
{IndirectIOCommand_MOVE_DATA,4},
|
|
||||||
{IndirectIOCommand,3}
|
|
||||||
};
|
|
||||||
|
|
||||||
|
|
||||||
VOID IndirectIOCommand(PARSER_TEMP_DATA STACK_BASED * pParserTempData)
|
|
||||||
{
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
VOID IndirectIOCommand_MOVE_INDEX(PARSER_TEMP_DATA STACK_BASED * pParserTempData)
|
|
||||||
{
|
|
||||||
pParserTempData->IndirectData &= ~((0xFFFFFFFF >> (32-pParserTempData->IndirectIOTablePointer[1])) << pParserTempData->IndirectIOTablePointer[3]);
|
|
||||||
pParserTempData->IndirectData |=(((pParserTempData->Index >> pParserTempData->IndirectIOTablePointer[2]) &
|
|
||||||
(0xFFFFFFFF >> (32-pParserTempData->IndirectIOTablePointer[1]))) << pParserTempData->IndirectIOTablePointer[3]);
|
|
||||||
}
|
|
||||||
|
|
||||||
VOID IndirectIOCommand_MOVE_ATTR(PARSER_TEMP_DATA STACK_BASED * pParserTempData)
|
|
||||||
{
|
|
||||||
pParserTempData->IndirectData &= ~((0xFFFFFFFF >> (32-pParserTempData->IndirectIOTablePointer[1])) << pParserTempData->IndirectIOTablePointer[3]);
|
|
||||||
pParserTempData->IndirectData |=(((pParserTempData->AttributesData >> pParserTempData->IndirectIOTablePointer[2])
|
|
||||||
& (0xFFFFFFFF >> (32-pParserTempData->IndirectIOTablePointer[1]))) << pParserTempData->IndirectIOTablePointer[3]);
|
|
||||||
}
|
|
||||||
|
|
||||||
VOID IndirectIOCommand_MOVE_DATA(PARSER_TEMP_DATA STACK_BASED * pParserTempData)
|
|
||||||
{
|
|
||||||
pParserTempData->IndirectData &= ~((0xFFFFFFFF >> (32-pParserTempData->IndirectIOTablePointer[1])) << pParserTempData->IndirectIOTablePointer[3]);
|
|
||||||
pParserTempData->IndirectData |=(((pParserTempData->DestData32 >> pParserTempData->IndirectIOTablePointer[2])
|
|
||||||
& (0xFFFFFFFF >> (32-pParserTempData->IndirectIOTablePointer[1]))) << pParserTempData->IndirectIOTablePointer[3]);
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
VOID IndirectIOCommand_SET(PARSER_TEMP_DATA STACK_BASED * pParserTempData)
|
|
||||||
{
|
|
||||||
pParserTempData->IndirectData |= ((0xFFFFFFFF >> (32-pParserTempData->IndirectIOTablePointer[1])) << pParserTempData->IndirectIOTablePointer[2]);
|
|
||||||
}
|
|
||||||
|
|
||||||
VOID IndirectIOCommand_CLEAR(PARSER_TEMP_DATA STACK_BASED * pParserTempData)
|
|
||||||
{
|
|
||||||
pParserTempData->IndirectData &= ~((0xFFFFFFFF >> (32-pParserTempData->IndirectIOTablePointer[1])) << pParserTempData->IndirectIOTablePointer[2]);
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
UINT32 IndirectInputOutput(PARSER_TEMP_DATA STACK_BASED * pParserTempData)
|
|
||||||
{
|
|
||||||
// if ((pParserTempData->IndirectData & 0x7f)==INDIRECT_IO_MM) pParserTempData->IndirectData|=pParserTempData->CurrentPortID;
|
|
||||||
// pParserTempData->IndirectIOTablePointer=pParserTempData->IndirectIOTable;
|
|
||||||
while (*pParserTempData->IndirectIOTablePointer)
|
|
||||||
{
|
|
||||||
if ((pParserTempData->IndirectIOTablePointer[0] == INDIRECTIO_ID) &&
|
|
||||||
(pParserTempData->IndirectIOTablePointer[1] == pParserTempData->IndirectData))
|
|
||||||
{
|
|
||||||
pParserTempData->IndirectIOTablePointer+=IndirectIOParserCommands[*pParserTempData->IndirectIOTablePointer].csize;
|
|
||||||
while (*pParserTempData->IndirectIOTablePointer != INDIRECTIO_END_OF_ID)
|
|
||||||
{
|
|
||||||
IndirectIOParserCommands[*pParserTempData->IndirectIOTablePointer].func(pParserTempData);
|
|
||||||
pParserTempData->IndirectIOTablePointer+=IndirectIOParserCommands[*pParserTempData->IndirectIOTablePointer].csize;
|
|
||||||
}
|
|
||||||
pParserTempData->IndirectIOTablePointer-=*(UINT16*)(pParserTempData->IndirectIOTablePointer+1);
|
|
||||||
pParserTempData->IndirectIOTablePointer++;
|
|
||||||
return pParserTempData->IndirectData;
|
|
||||||
} else pParserTempData->IndirectIOTablePointer+=IndirectIOParserCommands[*pParserTempData->IndirectIOTablePointer].csize;
|
|
||||||
}
|
|
||||||
return 0;
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
VOID PutDataRegister(PARSER_TEMP_DATA STACK_BASED * pParserTempData)
|
|
||||||
{
|
|
||||||
pParserTempData->Index=(UINT32)pParserTempData->pCmd->Parameters.WordXX.PA_Destination;
|
|
||||||
pParserTempData->Index+=pParserTempData->CurrentRegBlock;
|
|
||||||
switch(pParserTempData->Multipurpose.CurrentPort){
|
|
||||||
case ATI_RegsPort:
|
|
||||||
if (pParserTempData->CurrentPortID == INDIRECT_IO_MM)
|
|
||||||
{
|
|
||||||
if (pParserTempData->Index==0) pParserTempData->DestData32 <<= 2;
|
|
||||||
WriteReg32( pParserTempData);
|
|
||||||
} else
|
|
||||||
{
|
|
||||||
pParserTempData->IndirectData=pParserTempData->CurrentPortID+INDIRECT_IO_WRITE;
|
|
||||||
IndirectInputOutput(pParserTempData);
|
|
||||||
}
|
|
||||||
break;
|
|
||||||
case PCI_Port:
|
|
||||||
WritePCIFunctions[pParserTempData->pCmd->Header.Attribute.SourceAlignment](pParserTempData);
|
|
||||||
break;
|
|
||||||
case SystemIO_Port:
|
|
||||||
WriteIOFunctions[pParserTempData->pCmd->Header.Attribute.SourceAlignment](pParserTempData);
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
VOID PutDataPS(PARSER_TEMP_DATA STACK_BASED * pParserTempData)
|
|
||||||
{
|
|
||||||
*(pParserTempData->pDeviceData->pParameterSpace+pParserTempData->pCmd->Parameters.ByteXX.PA_Destination)=
|
|
||||||
pParserTempData->DestData32;
|
|
||||||
}
|
|
||||||
|
|
||||||
VOID PutDataWS(PARSER_TEMP_DATA STACK_BASED * pParserTempData)
|
|
||||||
{
|
|
||||||
if (pParserTempData->pCmd->Parameters.ByteXX.PA_Destination < WS_QUOTIENT_C)
|
|
||||||
*(pParserTempData->pWorkingTableData->pWorkSpace+pParserTempData->pCmd->Parameters.ByteXX.PA_Destination) = pParserTempData->DestData32;
|
|
||||||
else
|
|
||||||
switch (pParserTempData->pCmd->Parameters.ByteXX.PA_Destination)
|
|
||||||
{
|
|
||||||
case WS_REMINDER_C:
|
|
||||||
pParserTempData->MultiplicationOrDivision.Division.Reminder32=pParserTempData->DestData32;
|
|
||||||
break;
|
|
||||||
case WS_QUOTIENT_C:
|
|
||||||
pParserTempData->MultiplicationOrDivision.Division.Quotient32=pParserTempData->DestData32;
|
|
||||||
break;
|
|
||||||
case WS_DATAPTR_C:
|
|
||||||
#ifndef UEFI_BUILD
|
|
||||||
pParserTempData->CurrentDataBlock=(UINT16)pParserTempData->DestData32;
|
|
||||||
#else
|
|
||||||
pParserTempData->CurrentDataBlock=(UINTN)pParserTempData->DestData32;
|
|
||||||
#endif
|
|
||||||
break;
|
|
||||||
case WS_SHIFT_C:
|
|
||||||
pParserTempData->Shift2MaskConverter=(UINT8)pParserTempData->DestData32;
|
|
||||||
break;
|
|
||||||
case WS_FB_WINDOW_C:
|
|
||||||
pParserTempData->CurrentFB_Window=pParserTempData->DestData32;
|
|
||||||
break;
|
|
||||||
case WS_ATTRIBUTES_C:
|
|
||||||
pParserTempData->AttributesData=(UINT16)pParserTempData->DestData32;
|
|
||||||
break;
|
|
||||||
case WS_REGPTR_C:
|
|
||||||
pParserTempData->CurrentRegBlock=(UINT16)pParserTempData->DestData32;
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
VOID PutDataFB(PARSER_TEMP_DATA STACK_BASED * pParserTempData)
|
|
||||||
{
|
|
||||||
pParserTempData->Index=(UINT32)pParserTempData->pCmd->Parameters.ByteXX.PA_Destination;
|
|
||||||
//Make an Index from address first, then add to the Index
|
|
||||||
pParserTempData->Index+=(pParserTempData->CurrentFB_Window>>2);
|
|
||||||
WriteFrameBuffer32(pParserTempData);
|
|
||||||
}
|
|
||||||
|
|
||||||
VOID PutDataPLL(PARSER_TEMP_DATA STACK_BASED * pParserTempData)
|
|
||||||
{
|
|
||||||
pParserTempData->Index=(UINT32)pParserTempData->pCmd->Parameters.ByteXX.PA_Destination;
|
|
||||||
WritePLL32( pParserTempData );
|
|
||||||
}
|
|
||||||
|
|
||||||
VOID PutDataMC(PARSER_TEMP_DATA STACK_BASED * pParserTempData)
|
|
||||||
{
|
|
||||||
pParserTempData->Index=(UINT32)pParserTempData->pCmd->Parameters.ByteXX.PA_Destination;
|
|
||||||
WriteMC32( pParserTempData );
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
VOID SkipParameters8(PARSER_TEMP_DATA STACK_BASED * pParserTempData)
|
|
||||||
{
|
|
||||||
pParserTempData->pWorkingTableData->IP+=sizeof(UINT8);
|
|
||||||
}
|
|
||||||
|
|
||||||
VOID SkipParameters16(PARSER_TEMP_DATA STACK_BASED * pParserTempData)
|
|
||||||
{
|
|
||||||
pParserTempData->pWorkingTableData->IP+=sizeof(UINT16);
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
UINT32 GetParametersRegister(PARSER_TEMP_DATA STACK_BASED * pParserTempData)
|
|
||||||
{
|
|
||||||
pParserTempData->Index=*(UINT16*)pParserTempData->pWorkingTableData->IP;
|
|
||||||
pParserTempData->pWorkingTableData->IP+=sizeof(UINT16);
|
|
||||||
pParserTempData->Index+=pParserTempData->CurrentRegBlock;
|
|
||||||
switch(pParserTempData->Multipurpose.CurrentPort)
|
|
||||||
{
|
|
||||||
case PCI_Port:
|
|
||||||
return ReadPCIFunctions[pParserTempData->pCmd->Header.Attribute.SourceAlignment](pParserTempData);
|
|
||||||
case SystemIO_Port:
|
|
||||||
return ReadIOFunctions[pParserTempData->pCmd->Header.Attribute.SourceAlignment](pParserTempData);
|
|
||||||
case ATI_RegsPort:
|
|
||||||
default:
|
|
||||||
if (pParserTempData->CurrentPortID == INDIRECT_IO_MM) return ReadReg32( pParserTempData );
|
|
||||||
else
|
|
||||||
{
|
|
||||||
pParserTempData->IndirectData=pParserTempData->CurrentPortID+INDIRECT_IO_READ;
|
|
||||||
return IndirectInputOutput(pParserTempData);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
UINT32 GetParametersPS(PARSER_TEMP_DATA STACK_BASED * pParserTempData)
|
|
||||||
{
|
|
||||||
pParserTempData->Index=*pParserTempData->pWorkingTableData->IP;
|
|
||||||
pParserTempData->pWorkingTableData->IP+=sizeof(UINT8);
|
|
||||||
return *(pParserTempData->pDeviceData->pParameterSpace+pParserTempData->Index);
|
|
||||||
}
|
|
||||||
|
|
||||||
UINT32 GetParametersWS(PARSER_TEMP_DATA STACK_BASED * pParserTempData)
|
|
||||||
{
|
|
||||||
pParserTempData->Index=*pParserTempData->pWorkingTableData->IP;
|
|
||||||
pParserTempData->pWorkingTableData->IP+=sizeof(UINT8);
|
|
||||||
if (pParserTempData->Index < WS_QUOTIENT_C)
|
|
||||||
return *(pParserTempData->pWorkingTableData->pWorkSpace+pParserTempData->Index);
|
|
||||||
else
|
|
||||||
switch (pParserTempData->Index)
|
|
||||||
{
|
|
||||||
case WS_REMINDER_C:
|
|
||||||
return pParserTempData->MultiplicationOrDivision.Division.Reminder32;
|
|
||||||
case WS_QUOTIENT_C:
|
|
||||||
return pParserTempData->MultiplicationOrDivision.Division.Quotient32;
|
|
||||||
case WS_DATAPTR_C:
|
|
||||||
return (UINT32)pParserTempData->CurrentDataBlock;
|
|
||||||
case WS_OR_MASK_C:
|
|
||||||
return ((UINT32)1) << pParserTempData->Shift2MaskConverter;
|
|
||||||
case WS_AND_MASK_C:
|
|
||||||
return ~(((UINT32)1) << pParserTempData->Shift2MaskConverter);
|
|
||||||
case WS_FB_WINDOW_C:
|
|
||||||
return pParserTempData->CurrentFB_Window;
|
|
||||||
case WS_ATTRIBUTES_C:
|
|
||||||
return pParserTempData->AttributesData;
|
|
||||||
case WS_REGPTR_C:
|
|
||||||
return (UINT32)pParserTempData->CurrentRegBlock;
|
|
||||||
}
|
|
||||||
return 0;
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
UINT32 GetParametersFB(PARSER_TEMP_DATA STACK_BASED * pParserTempData)
|
|
||||||
{
|
|
||||||
pParserTempData->Index=*pParserTempData->pWorkingTableData->IP;
|
|
||||||
pParserTempData->pWorkingTableData->IP+=sizeof(UINT8);
|
|
||||||
pParserTempData->Index+=(pParserTempData->CurrentFB_Window>>2);
|
|
||||||
return ReadFrameBuffer32(pParserTempData);
|
|
||||||
}
|
|
||||||
|
|
||||||
UINT32 GetParametersPLL(PARSER_TEMP_DATA STACK_BASED * pParserTempData)
|
|
||||||
{
|
|
||||||
pParserTempData->Index=*pParserTempData->pWorkingTableData->IP;
|
|
||||||
pParserTempData->pWorkingTableData->IP+=sizeof(UINT8);
|
|
||||||
return ReadPLL32( pParserTempData );
|
|
||||||
}
|
|
||||||
|
|
||||||
UINT32 GetParametersMC(PARSER_TEMP_DATA STACK_BASED * pParserTempData)
|
|
||||||
{
|
|
||||||
pParserTempData->Index=*pParserTempData->pWorkingTableData->IP;
|
|
||||||
pParserTempData->pWorkingTableData->IP+=sizeof(UINT8);
|
|
||||||
return ReadMC32( pParserTempData );
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
UINT32 GetParametersIndirect(PARSER_TEMP_DATA STACK_BASED * pParserTempData)
|
|
||||||
{
|
|
||||||
pParserTempData->Index=*(UINT16*)pParserTempData->pWorkingTableData->IP;
|
|
||||||
pParserTempData->pWorkingTableData->IP+=sizeof(UINT16);
|
|
||||||
return *(UINT32*)(RELATIVE_TO_BIOS_IMAGE(pParserTempData->Index)+pParserTempData->CurrentDataBlock);
|
|
||||||
}
|
|
||||||
|
|
||||||
UINT32 GetParametersDirect8(PARSER_TEMP_DATA STACK_BASED * pParserTempData)
|
|
||||||
{
|
|
||||||
pParserTempData->CD_Mask.SrcAlignment=alignmentByte0;
|
|
||||||
pParserTempData->Index=*(UINT8*)pParserTempData->pWorkingTableData->IP;
|
|
||||||
pParserTempData->pWorkingTableData->IP+=sizeof(UINT8);
|
|
||||||
return pParserTempData->Index;
|
|
||||||
}
|
|
||||||
|
|
||||||
UINT32 GetParametersDirect16(PARSER_TEMP_DATA STACK_BASED * pParserTempData)
|
|
||||||
{
|
|
||||||
pParserTempData->CD_Mask.SrcAlignment=alignmentLowerWord;
|
|
||||||
pParserTempData->Index=*(UINT16*)pParserTempData->pWorkingTableData->IP;
|
|
||||||
pParserTempData->pWorkingTableData->IP+=sizeof(UINT16);
|
|
||||||
return pParserTempData->Index;
|
|
||||||
}
|
|
||||||
|
|
||||||
UINT32 GetParametersDirect32(PARSER_TEMP_DATA STACK_BASED * pParserTempData)
|
|
||||||
{
|
|
||||||
pParserTempData->CD_Mask.SrcAlignment=alignmentDword;
|
|
||||||
pParserTempData->Index=*(UINT32*)pParserTempData->pWorkingTableData->IP;
|
|
||||||
pParserTempData->pWorkingTableData->IP+=sizeof(UINT32);
|
|
||||||
return pParserTempData->Index;
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
UINT32 GetParametersDirect(PARSER_TEMP_DATA STACK_BASED * pParserTempData)
|
|
||||||
{
|
|
||||||
return GetParametersDirectArray[pParserTempData->pCmd->Header.Attribute.SourceAlignment](pParserTempData);
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
VOID CommonSourceDataTransformation(PARSER_TEMP_DATA STACK_BASED * pParserTempData)
|
|
||||||
{
|
|
||||||
pParserTempData->SourceData32 >>= SourceAlignmentShift[pParserTempData->CD_Mask.SrcAlignment];
|
|
||||||
pParserTempData->SourceData32 &= AlignmentMask[pParserTempData->CD_Mask.SrcAlignment];
|
|
||||||
pParserTempData->SourceData32 <<= DestinationAlignmentShift[pParserTempData->CD_Mask.DestAlignment];
|
|
||||||
}
|
|
||||||
|
|
||||||
VOID CommonOperationDataTransformation(PARSER_TEMP_DATA STACK_BASED * pParserTempData)
|
|
||||||
{
|
|
||||||
pParserTempData->SourceData32 >>= SourceAlignmentShift[pParserTempData->CD_Mask.SrcAlignment];
|
|
||||||
pParserTempData->SourceData32 &= AlignmentMask[pParserTempData->CD_Mask.SrcAlignment];
|
|
||||||
pParserTempData->DestData32 >>= DestinationAlignmentShift[pParserTempData->CD_Mask.DestAlignment];
|
|
||||||
pParserTempData->DestData32 &= AlignmentMask[pParserTempData->CD_Mask.SrcAlignment];
|
|
||||||
}
|
|
||||||
|
|
||||||
VOID ProcessMove(PARSER_TEMP_DATA STACK_BASED * pParserTempData)
|
|
||||||
{
|
|
||||||
if (pParserTempData->CD_Mask.SrcAlignment!=alignmentDword)
|
|
||||||
{
|
|
||||||
pParserTempData->DestData32=GetDestination[pParserTempData->ParametersType.Destination](pParserTempData);
|
|
||||||
} else
|
|
||||||
{
|
|
||||||
SkipDestination[pParserTempData->ParametersType.Destination](pParserTempData);
|
|
||||||
}
|
|
||||||
pParserTempData->SourceData32=GetSource[pParserTempData->ParametersType.Source](pParserTempData);
|
|
||||||
|
|
||||||
if (pParserTempData->CD_Mask.SrcAlignment!=alignmentDword)
|
|
||||||
{
|
|
||||||
pParserTempData->DestData32 &= ~(AlignmentMask[pParserTempData->CD_Mask.SrcAlignment] << DestinationAlignmentShift[pParserTempData->CD_Mask.DestAlignment]);
|
|
||||||
CommonSourceDataTransformation(pParserTempData);
|
|
||||||
pParserTempData->DestData32 |= pParserTempData->SourceData32;
|
|
||||||
} else
|
|
||||||
{
|
|
||||||
pParserTempData->DestData32=pParserTempData->SourceData32;
|
|
||||||
}
|
|
||||||
PutDataFunctions[pParserTempData->ParametersType.Destination](pParserTempData);
|
|
||||||
}
|
|
||||||
|
|
||||||
VOID ProcessMask(PARSER_TEMP_DATA STACK_BASED * pParserTempData)
|
|
||||||
{
|
|
||||||
|
|
||||||
pParserTempData->DestData32=GetDestination[pParserTempData->ParametersType.Destination](pParserTempData);
|
|
||||||
pParserTempData->SourceData32=GetParametersDirect(pParserTempData);
|
|
||||||
pParserTempData->Index=GetSource[pParserTempData->ParametersType.Source](pParserTempData);
|
|
||||||
pParserTempData->SourceData32 <<= DestinationAlignmentShift[pParserTempData->CD_Mask.DestAlignment];
|
|
||||||
pParserTempData->SourceData32 |= ~(AlignmentMask[pParserTempData->CD_Mask.SrcAlignment] << DestinationAlignmentShift[pParserTempData->CD_Mask.DestAlignment]);
|
|
||||||
pParserTempData->DestData32 &= pParserTempData->SourceData32;
|
|
||||||
pParserTempData->Index &= AlignmentMask[pParserTempData->CD_Mask.SrcAlignment];
|
|
||||||
pParserTempData->Index <<= DestinationAlignmentShift[pParserTempData->CD_Mask.DestAlignment];
|
|
||||||
pParserTempData->DestData32 |= pParserTempData->Index;
|
|
||||||
PutDataFunctions[pParserTempData->ParametersType.Destination](pParserTempData);
|
|
||||||
}
|
|
||||||
|
|
||||||
VOID ProcessAnd(PARSER_TEMP_DATA STACK_BASED * pParserTempData)
|
|
||||||
{
|
|
||||||
pParserTempData->DestData32=GetDestination[pParserTempData->ParametersType.Destination](pParserTempData);
|
|
||||||
pParserTempData->SourceData32=GetSource[pParserTempData->ParametersType.Source](pParserTempData);
|
|
||||||
pParserTempData->SourceData32 >>= SourceAlignmentShift[pParserTempData->CD_Mask.SrcAlignment];
|
|
||||||
pParserTempData->SourceData32 <<= DestinationAlignmentShift[pParserTempData->CD_Mask.DestAlignment];
|
|
||||||
pParserTempData->SourceData32 |= ~(AlignmentMask[pParserTempData->CD_Mask.SrcAlignment] << DestinationAlignmentShift[pParserTempData->CD_Mask.DestAlignment]);
|
|
||||||
pParserTempData->DestData32 &= pParserTempData->SourceData32;
|
|
||||||
PutDataFunctions[pParserTempData->ParametersType.Destination](pParserTempData);
|
|
||||||
}
|
|
||||||
|
|
||||||
VOID ProcessOr(PARSER_TEMP_DATA STACK_BASED * pParserTempData)
|
|
||||||
{
|
|
||||||
pParserTempData->DestData32=GetDestination[pParserTempData->ParametersType.Destination](pParserTempData);
|
|
||||||
pParserTempData->SourceData32=GetSource[pParserTempData->ParametersType.Source](pParserTempData);
|
|
||||||
CommonSourceDataTransformation(pParserTempData);
|
|
||||||
pParserTempData->DestData32 |= pParserTempData->SourceData32;
|
|
||||||
PutDataFunctions[pParserTempData->ParametersType.Destination](pParserTempData);
|
|
||||||
}
|
|
||||||
|
|
||||||
VOID ProcessXor(PARSER_TEMP_DATA STACK_BASED * pParserTempData)
|
|
||||||
{
|
|
||||||
pParserTempData->DestData32=GetDestination[pParserTempData->ParametersType.Destination](pParserTempData);
|
|
||||||
pParserTempData->SourceData32=GetSource[pParserTempData->ParametersType.Source](pParserTempData);
|
|
||||||
CommonSourceDataTransformation(pParserTempData);
|
|
||||||
pParserTempData->DestData32 ^= pParserTempData->SourceData32;
|
|
||||||
PutDataFunctions[pParserTempData->ParametersType.Destination](pParserTempData);
|
|
||||||
}
|
|
||||||
|
|
||||||
VOID ProcessShl(PARSER_TEMP_DATA STACK_BASED * pParserTempData)
|
|
||||||
{
|
|
||||||
pParserTempData->DestData32=GetDestination[pParserTempData->ParametersType.Destination](pParserTempData);
|
|
||||||
pParserTempData->SourceData32=GetSource[pParserTempData->ParametersType.Source](pParserTempData);
|
|
||||||
CommonSourceDataTransformation(pParserTempData);
|
|
||||||
pParserTempData->DestData32 <<= pParserTempData->SourceData32;
|
|
||||||
PutDataFunctions[pParserTempData->ParametersType.Destination](pParserTempData);
|
|
||||||
}
|
|
||||||
|
|
||||||
VOID ProcessShr(PARSER_TEMP_DATA STACK_BASED * pParserTempData)
|
|
||||||
{
|
|
||||||
pParserTempData->DestData32=GetDestination[pParserTempData->ParametersType.Destination](pParserTempData);
|
|
||||||
pParserTempData->SourceData32=GetSource[pParserTempData->ParametersType.Source](pParserTempData);
|
|
||||||
CommonSourceDataTransformation(pParserTempData);
|
|
||||||
pParserTempData->DestData32 >>= pParserTempData->SourceData32;
|
|
||||||
PutDataFunctions[pParserTempData->ParametersType.Destination](pParserTempData);
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
VOID ProcessADD(PARSER_TEMP_DATA STACK_BASED * pParserTempData)
|
|
||||||
{
|
|
||||||
pParserTempData->DestData32=GetDestination[pParserTempData->ParametersType.Destination](pParserTempData);
|
|
||||||
pParserTempData->SourceData32=GetSource[pParserTempData->ParametersType.Source](pParserTempData);
|
|
||||||
CommonSourceDataTransformation(pParserTempData);
|
|
||||||
pParserTempData->DestData32 += pParserTempData->SourceData32;
|
|
||||||
PutDataFunctions[pParserTempData->ParametersType.Destination](pParserTempData);
|
|
||||||
}
|
|
||||||
|
|
||||||
VOID ProcessSUB(PARSER_TEMP_DATA STACK_BASED * pParserTempData)
|
|
||||||
{
|
|
||||||
pParserTempData->DestData32=GetDestination[pParserTempData->ParametersType.Destination](pParserTempData);
|
|
||||||
pParserTempData->SourceData32=GetSource[pParserTempData->ParametersType.Source](pParserTempData);
|
|
||||||
CommonSourceDataTransformation(pParserTempData);
|
|
||||||
pParserTempData->DestData32 -= pParserTempData->SourceData32;
|
|
||||||
PutDataFunctions[pParserTempData->ParametersType.Destination](pParserTempData);
|
|
||||||
}
|
|
||||||
|
|
||||||
VOID ProcessMUL(PARSER_TEMP_DATA STACK_BASED * pParserTempData)
|
|
||||||
{
|
|
||||||
pParserTempData->DestData32=GetDestination[pParserTempData->ParametersType.Destination](pParserTempData);
|
|
||||||
pParserTempData->SourceData32=GetSource[pParserTempData->ParametersType.Source](pParserTempData);
|
|
||||||
CommonOperationDataTransformation(pParserTempData);
|
|
||||||
pParserTempData->MultiplicationOrDivision.Multiplication.Low32Bit=pParserTempData->DestData32 * pParserTempData->SourceData32;
|
|
||||||
}
|
|
||||||
|
|
||||||
VOID ProcessDIV(PARSER_TEMP_DATA STACK_BASED * pParserTempData)
|
|
||||||
{
|
|
||||||
pParserTempData->DestData32=GetDestination[pParserTempData->ParametersType.Destination](pParserTempData);
|
|
||||||
pParserTempData->SourceData32=GetSource[pParserTempData->ParametersType.Source](pParserTempData);
|
|
||||||
|
|
||||||
CommonOperationDataTransformation(pParserTempData);
|
|
||||||
pParserTempData->MultiplicationOrDivision.Division.Quotient32=
|
|
||||||
pParserTempData->DestData32 / pParserTempData->SourceData32;
|
|
||||||
pParserTempData->MultiplicationOrDivision.Division.Reminder32=
|
|
||||||
pParserTempData->DestData32 % pParserTempData->SourceData32;
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
VOID ProcessCompare(PARSER_TEMP_DATA STACK_BASED * pParserTempData)
|
|
||||||
{
|
|
||||||
pParserTempData->DestData32=GetDestination[pParserTempData->ParametersType.Destination](pParserTempData);
|
|
||||||
pParserTempData->SourceData32=GetSource[pParserTempData->ParametersType.Source](pParserTempData);
|
|
||||||
|
|
||||||
CommonOperationDataTransformation(pParserTempData);
|
|
||||||
|
|
||||||
// Here we just set flags based on evaluation
|
|
||||||
if (pParserTempData->DestData32==pParserTempData->SourceData32)
|
|
||||||
pParserTempData->CompareFlags = Equal;
|
|
||||||
else
|
|
||||||
pParserTempData->CompareFlags =
|
|
||||||
(UINT8)((pParserTempData->DestData32<pParserTempData->SourceData32) ? Below : Above);
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
VOID ProcessClear(PARSER_TEMP_DATA STACK_BASED * pParserTempData)
|
|
||||||
{
|
|
||||||
pParserTempData->DestData32=GetDestination[pParserTempData->ParametersType.Destination](pParserTempData);
|
|
||||||
pParserTempData->DestData32 &= ~(AlignmentMask[pParserTempData->CD_Mask.SrcAlignment] << SourceAlignmentShift[pParserTempData->CD_Mask.SrcAlignment]);
|
|
||||||
PutDataFunctions[pParserTempData->ParametersType.Destination](pParserTempData);
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
VOID ProcessShift(PARSER_TEMP_DATA STACK_BASED * pParserTempData)
|
|
||||||
{
|
|
||||||
UINT32 mask = AlignmentMask[pParserTempData->CD_Mask.SrcAlignment] << SourceAlignmentShift[pParserTempData->CD_Mask.SrcAlignment];
|
|
||||||
pParserTempData->DestData32=GetDestination[pParserTempData->ParametersType.Destination](pParserTempData);
|
|
||||||
pParserTempData->SourceData32=GetParametersDirect8(pParserTempData);
|
|
||||||
|
|
||||||
// save original value of the destination
|
|
||||||
pParserTempData->Index = pParserTempData->DestData32 & ~mask;
|
|
||||||
pParserTempData->DestData32 &= mask;
|
|
||||||
|
|
||||||
if (pParserTempData->pCmd->Header.Opcode < SHIFT_RIGHT_REG_OPCODE)
|
|
||||||
pParserTempData->DestData32 <<= pParserTempData->SourceData32; else
|
|
||||||
pParserTempData->DestData32 >>= pParserTempData->SourceData32;
|
|
||||||
|
|
||||||
// Clear any bits shifted out of masked area...
|
|
||||||
pParserTempData->DestData32 &= mask;
|
|
||||||
// ... and restore the area outside of masked with original values
|
|
||||||
pParserTempData->DestData32 |= pParserTempData->Index;
|
|
||||||
|
|
||||||
// write data back
|
|
||||||
PutDataFunctions[pParserTempData->ParametersType.Destination](pParserTempData);
|
|
||||||
}
|
|
||||||
|
|
||||||
VOID ProcessTest(PARSER_TEMP_DATA STACK_BASED * pParserTempData)
|
|
||||||
{
|
|
||||||
pParserTempData->DestData32=GetDestination[pParserTempData->ParametersType.Destination](pParserTempData);
|
|
||||||
pParserTempData->SourceData32=GetSource[pParserTempData->ParametersType.Source](pParserTempData);
|
|
||||||
CommonOperationDataTransformation(pParserTempData);
|
|
||||||
pParserTempData->CompareFlags =
|
|
||||||
(UINT8)((pParserTempData->DestData32 & pParserTempData->SourceData32) ? NotEqual : Equal);
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
VOID ProcessSetFB_Base(PARSER_TEMP_DATA STACK_BASED * pParserTempData)
|
|
||||||
{
|
|
||||||
pParserTempData->SourceData32=GetSource[pParserTempData->ParametersType.Source](pParserTempData);
|
|
||||||
pParserTempData->SourceData32 >>= SourceAlignmentShift[pParserTempData->CD_Mask.SrcAlignment];
|
|
||||||
pParserTempData->SourceData32 &= AlignmentMask[pParserTempData->CD_Mask.SrcAlignment];
|
|
||||||
pParserTempData->CurrentFB_Window=pParserTempData->SourceData32;
|
|
||||||
}
|
|
||||||
|
|
||||||
VOID ProcessSwitch(PARSER_TEMP_DATA STACK_BASED * pParserTempData){
|
|
||||||
pParserTempData->SourceData32=GetSource[pParserTempData->ParametersType.Source](pParserTempData);
|
|
||||||
pParserTempData->SourceData32 >>= SourceAlignmentShift[pParserTempData->CD_Mask.SrcAlignment];
|
|
||||||
pParserTempData->SourceData32 &= AlignmentMask[pParserTempData->CD_Mask.SrcAlignment];
|
|
||||||
while ( *(UINT16*)pParserTempData->pWorkingTableData->IP != (((UINT16)NOP_OPCODE << 8)+NOP_OPCODE))
|
|
||||||
{
|
|
||||||
if (*pParserTempData->pWorkingTableData->IP == 'c')
|
|
||||||
{
|
|
||||||
pParserTempData->pWorkingTableData->IP++;
|
|
||||||
pParserTempData->DestData32=GetParametersDirect(pParserTempData);
|
|
||||||
pParserTempData->Index=GetParametersDirect16(pParserTempData);
|
|
||||||
if (pParserTempData->SourceData32 == pParserTempData->DestData32)
|
|
||||||
{
|
|
||||||
pParserTempData->pWorkingTableData->IP= RELATIVE_TO_TABLE(pParserTempData->Index);
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
pParserTempData->pWorkingTableData->IP+=sizeof(UINT16);
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
VOID cmdSetDataBlock(PARSER_TEMP_DATA STACK_BASED * pParserTempData)
|
|
||||||
{
|
|
||||||
UINT8 value;
|
|
||||||
UINT16* pMasterDataTable;
|
|
||||||
value=((COMMAND_TYPE_1*)pParserTempData->pWorkingTableData->IP)->Parameters.ByteXX.PA_Destination;
|
|
||||||
if (value == 0) pParserTempData->CurrentDataBlock=0; else
|
|
||||||
{
|
|
||||||
if (value == DB_CURRENT_COMMAND_TABLE)
|
|
||||||
{
|
|
||||||
pParserTempData->CurrentDataBlock= (UINT16)(pParserTempData->pWorkingTableData->pTableHead-pParserTempData->pDeviceData->pBIOS_Image);
|
|
||||||
} else
|
|
||||||
{
|
|
||||||
pMasterDataTable = GetDataMasterTablePointer(pParserTempData->pDeviceData);
|
|
||||||
pParserTempData->CurrentDataBlock= (TABLE_UNIT_TYPE)((PTABLE_UNIT_TYPE)pMasterDataTable)[value];
|
|
||||||
}
|
|
||||||
}
|
|
||||||
pParserTempData->pWorkingTableData->IP+=sizeof(COMMAND_TYPE_OPCODE_VALUE_BYTE);
|
|
||||||
}
|
|
||||||
|
|
||||||
VOID cmdSet_ATI_Port(PARSER_TEMP_DATA STACK_BASED * pParserTempData)
|
|
||||||
{
|
|
||||||
pParserTempData->Multipurpose.CurrentPort=ATI_RegsPort;
|
|
||||||
pParserTempData->CurrentPortID = (UINT8)((COMMAND_TYPE_1*)pParserTempData->pWorkingTableData->IP)->Parameters.WordXX.PA_Destination;
|
|
||||||
pParserTempData->pWorkingTableData->IP+=sizeof(COMMAND_TYPE_OPCODE_OFFSET16);
|
|
||||||
}
|
|
||||||
|
|
||||||
VOID cmdSet_Reg_Block(PARSER_TEMP_DATA STACK_BASED * pParserTempData)
|
|
||||||
{
|
|
||||||
pParserTempData->CurrentRegBlock = ((COMMAND_TYPE_1*)pParserTempData->pWorkingTableData->IP)->Parameters.WordXX.PA_Destination;
|
|
||||||
pParserTempData->pWorkingTableData->IP+=sizeof(COMMAND_TYPE_OPCODE_OFFSET16);
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
//Atavism!!! Review!!!
|
|
||||||
VOID cmdSet_X_Port(PARSER_TEMP_DATA STACK_BASED * pParserTempData){
|
|
||||||
pParserTempData->Multipurpose.CurrentPort=pParserTempData->ParametersType.Destination;
|
|
||||||
pParserTempData->pWorkingTableData->IP+=sizeof(COMMAND_TYPE_OPCODE_ONLY);
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
VOID cmdDelay_Millisec(PARSER_TEMP_DATA STACK_BASED * pParserTempData){
|
|
||||||
pParserTempData->SourceData32 =
|
|
||||||
((COMMAND_TYPE_1*)pParserTempData->pWorkingTableData->IP)->Parameters.ByteXX.PA_Destination;
|
|
||||||
DelayMilliseconds(pParserTempData);
|
|
||||||
pParserTempData->pWorkingTableData->IP+=sizeof(COMMAND_TYPE_OPCODE_VALUE_BYTE);
|
|
||||||
}
|
|
||||||
VOID cmdDelay_Microsec(PARSER_TEMP_DATA STACK_BASED * pParserTempData){
|
|
||||||
pParserTempData->SourceData32 =
|
|
||||||
((COMMAND_TYPE_1*)pParserTempData->pWorkingTableData->IP)->Parameters.ByteXX.PA_Destination;
|
|
||||||
DelayMicroseconds(pParserTempData);
|
|
||||||
pParserTempData->pWorkingTableData->IP+=sizeof(COMMAND_TYPE_OPCODE_VALUE_BYTE);
|
|
||||||
}
|
|
||||||
|
|
||||||
VOID ProcessPostChar(PARSER_TEMP_DATA STACK_BASED * pParserTempData)
|
|
||||||
{
|
|
||||||
pParserTempData->SourceData32 =
|
|
||||||
((COMMAND_TYPE_1*)pParserTempData->pWorkingTableData->IP)->Parameters.ByteXX.PA_Destination;
|
|
||||||
PostCharOutput(pParserTempData);
|
|
||||||
pParserTempData->pWorkingTableData->IP+=sizeof(COMMAND_TYPE_OPCODE_VALUE_BYTE);
|
|
||||||
}
|
|
||||||
|
|
||||||
VOID ProcessDebug(PARSER_TEMP_DATA STACK_BASED * pParserTempData)
|
|
||||||
{
|
|
||||||
pParserTempData->SourceData32 =
|
|
||||||
((COMMAND_TYPE_1*)pParserTempData->pWorkingTableData->IP)->Parameters.ByteXX.PA_Destination;
|
|
||||||
CallerDebugFunc(pParserTempData);
|
|
||||||
pParserTempData->pWorkingTableData->IP+=sizeof(COMMAND_TYPE_OPCODE_VALUE_BYTE);
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
VOID ProcessDS(PARSER_TEMP_DATA STACK_BASED * pParserTempData)
|
|
||||||
{
|
|
||||||
pParserTempData->pWorkingTableData->IP+=((COMMAND_TYPE_1*)pParserTempData->pWorkingTableData->IP)->Parameters.WordXX.PA_Destination+sizeof(COMMAND_TYPE_OPCODE_OFFSET16);
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
VOID cmdCall_Table(PARSER_TEMP_DATA STACK_BASED * pParserTempData){
|
|
||||||
UINT16* MasterTableOffset;
|
|
||||||
pParserTempData->pWorkingTableData->IP+=sizeof(COMMAND_TYPE_OPCODE_VALUE_BYTE);
|
|
||||||
MasterTableOffset = GetCommandMasterTablePointer(pParserTempData->pDeviceData);
|
|
||||||
if(((PTABLE_UNIT_TYPE)MasterTableOffset)[((COMMAND_TYPE_OPCODE_VALUE_BYTE*)pParserTempData->pCmd)->Value]!=0 ) // if the offset is not ZERO
|
|
||||||
{
|
|
||||||
pParserTempData->CommandSpecific.IndexInMasterTable=GetTrueIndexInMasterTable(pParserTempData,((COMMAND_TYPE_OPCODE_VALUE_BYTE*)pParserTempData->pCmd)->Value);
|
|
||||||
pParserTempData->Multipurpose.PS_SizeInDwordsUsedByCallingTable =
|
|
||||||
(((ATOM_COMMON_ROM_COMMAND_TABLE_HEADER *)pParserTempData->pWorkingTableData->pTableHead)->TableAttribute.PS_SizeInBytes>>2);
|
|
||||||
pParserTempData->pDeviceData->pParameterSpace+=
|
|
||||||
pParserTempData->Multipurpose.PS_SizeInDwordsUsedByCallingTable;
|
|
||||||
pParserTempData->Status=CD_CALL_TABLE;
|
|
||||||
pParserTempData->pCmd=(GENERIC_ATTRIBUTE_COMMAND*)MasterTableOffset;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
VOID cmdNOP_(PARSER_TEMP_DATA STACK_BASED * pParserTempData)
|
|
||||||
{
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
static VOID NotImplemented(PARSER_TEMP_DATA STACK_BASED * pParserTempData)
|
|
||||||
{
|
|
||||||
pParserTempData->Status = CD_NOT_IMPLEMENTED;
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
VOID ProcessJump(PARSER_TEMP_DATA STACK_BASED * pParserTempData)
|
|
||||||
{
|
|
||||||
if ((pParserTempData->ParametersType.Destination == NoCondition) ||
|
|
||||||
(pParserTempData->ParametersType.Destination == pParserTempData->CompareFlags ))
|
|
||||||
{
|
|
||||||
|
|
||||||
pParserTempData->pWorkingTableData->IP= RELATIVE_TO_TABLE(((COMMAND_TYPE_OPCODE_OFFSET16*)pParserTempData->pWorkingTableData->IP)->CD_Offset16);
|
|
||||||
} else
|
|
||||||
{
|
|
||||||
pParserTempData->pWorkingTableData->IP+=sizeof(COMMAND_TYPE_OPCODE_OFFSET16);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
VOID ProcessJumpE(PARSER_TEMP_DATA STACK_BASED * pParserTempData)
|
|
||||||
{
|
|
||||||
if ((pParserTempData->CompareFlags == Equal) ||
|
|
||||||
(pParserTempData->CompareFlags == pParserTempData->ParametersType.Destination))
|
|
||||||
{
|
|
||||||
|
|
||||||
pParserTempData->pWorkingTableData->IP= RELATIVE_TO_TABLE(((COMMAND_TYPE_OPCODE_OFFSET16*)pParserTempData->pWorkingTableData->IP)->CD_Offset16);
|
|
||||||
} else
|
|
||||||
{
|
|
||||||
pParserTempData->pWorkingTableData->IP+=sizeof(COMMAND_TYPE_OPCODE_OFFSET16);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
VOID ProcessJumpNE(PARSER_TEMP_DATA STACK_BASED * pParserTempData)
|
|
||||||
{
|
|
||||||
if (pParserTempData->CompareFlags != Equal)
|
|
||||||
{
|
|
||||||
|
|
||||||
pParserTempData->pWorkingTableData->IP= RELATIVE_TO_TABLE(((COMMAND_TYPE_OPCODE_OFFSET16*)pParserTempData->pWorkingTableData->IP)->CD_Offset16);
|
|
||||||
} else
|
|
||||||
{
|
|
||||||
pParserTempData->pWorkingTableData->IP+=sizeof(COMMAND_TYPE_OPCODE_OFFSET16);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
COMMANDS_PROPERTIES CallTable[] =
|
|
||||||
{
|
|
||||||
{ NULL, 0,0},
|
|
||||||
{ ProcessMove, destRegister, sizeof(COMMAND_HEADER)},
|
|
||||||
{ ProcessMove, destParamSpace, sizeof(COMMAND_HEADER)},
|
|
||||||
{ ProcessMove, destWorkSpace, sizeof(COMMAND_HEADER)},
|
|
||||||
{ ProcessMove, destFrameBuffer, sizeof(COMMAND_HEADER)},
|
|
||||||
{ ProcessMove, destPLL, sizeof(COMMAND_HEADER)},
|
|
||||||
{ ProcessMove, destMC, sizeof(COMMAND_HEADER)},
|
|
||||||
{ ProcessAnd, destRegister, sizeof(COMMAND_HEADER)},
|
|
||||||
{ ProcessAnd, destParamSpace, sizeof(COMMAND_HEADER)},
|
|
||||||
{ ProcessAnd, destWorkSpace, sizeof(COMMAND_HEADER)},
|
|
||||||
{ ProcessAnd, destFrameBuffer, sizeof(COMMAND_HEADER)},
|
|
||||||
{ ProcessAnd, destPLL, sizeof(COMMAND_HEADER)},
|
|
||||||
{ ProcessAnd, destMC, sizeof(COMMAND_HEADER)},
|
|
||||||
{ ProcessOr, destRegister, sizeof(COMMAND_HEADER)},
|
|
||||||
{ ProcessOr, destParamSpace, sizeof(COMMAND_HEADER)},
|
|
||||||
{ ProcessOr, destWorkSpace, sizeof(COMMAND_HEADER)},
|
|
||||||
{ ProcessOr, destFrameBuffer, sizeof(COMMAND_HEADER)},
|
|
||||||
{ ProcessOr, destPLL, sizeof(COMMAND_HEADER)},
|
|
||||||
{ ProcessOr, destMC, sizeof(COMMAND_HEADER)},
|
|
||||||
{ ProcessShift, destRegister, sizeof(COMMAND_HEADER)},
|
|
||||||
{ ProcessShift, destParamSpace, sizeof(COMMAND_HEADER)},
|
|
||||||
{ ProcessShift, destWorkSpace, sizeof(COMMAND_HEADER)},
|
|
||||||
{ ProcessShift, destFrameBuffer, sizeof(COMMAND_HEADER)},
|
|
||||||
{ ProcessShift, destPLL, sizeof(COMMAND_HEADER)},
|
|
||||||
{ ProcessShift, destMC, sizeof(COMMAND_HEADER)},
|
|
||||||
{ ProcessShift, destRegister, sizeof(COMMAND_HEADER)},
|
|
||||||
{ ProcessShift, destParamSpace, sizeof(COMMAND_HEADER)},
|
|
||||||
{ ProcessShift, destWorkSpace, sizeof(COMMAND_HEADER)},
|
|
||||||
{ ProcessShift, destFrameBuffer, sizeof(COMMAND_HEADER)},
|
|
||||||
{ ProcessShift, destPLL, sizeof(COMMAND_HEADER)},
|
|
||||||
{ ProcessShift, destMC, sizeof(COMMAND_HEADER)},
|
|
||||||
{ ProcessMUL, destRegister, sizeof(COMMAND_HEADER)},
|
|
||||||
{ ProcessMUL, destParamSpace, sizeof(COMMAND_HEADER)},
|
|
||||||
{ ProcessMUL, destWorkSpace, sizeof(COMMAND_HEADER)},
|
|
||||||
{ ProcessMUL, destFrameBuffer, sizeof(COMMAND_HEADER)},
|
|
||||||
{ ProcessMUL, destPLL, sizeof(COMMAND_HEADER)},
|
|
||||||
{ ProcessMUL, destMC, sizeof(COMMAND_HEADER)},
|
|
||||||
{ ProcessDIV, destRegister, sizeof(COMMAND_HEADER)},
|
|
||||||
{ ProcessDIV, destParamSpace, sizeof(COMMAND_HEADER)},
|
|
||||||
{ ProcessDIV, destWorkSpace, sizeof(COMMAND_HEADER)},
|
|
||||||
{ ProcessDIV, destFrameBuffer, sizeof(COMMAND_HEADER)},
|
|
||||||
{ ProcessDIV, destPLL, sizeof(COMMAND_HEADER)},
|
|
||||||
{ ProcessDIV, destMC, sizeof(COMMAND_HEADER)},
|
|
||||||
{ ProcessADD, destRegister, sizeof(COMMAND_HEADER)},
|
|
||||||
{ ProcessADD, destParamSpace, sizeof(COMMAND_HEADER)},
|
|
||||||
{ ProcessADD, destWorkSpace, sizeof(COMMAND_HEADER)},
|
|
||||||
{ ProcessADD, destFrameBuffer, sizeof(COMMAND_HEADER)},
|
|
||||||
{ ProcessADD, destPLL, sizeof(COMMAND_HEADER)},
|
|
||||||
{ ProcessADD, destMC, sizeof(COMMAND_HEADER)},
|
|
||||||
{ ProcessSUB, destRegister, sizeof(COMMAND_HEADER)},
|
|
||||||
{ ProcessSUB, destParamSpace, sizeof(COMMAND_HEADER)},
|
|
||||||
{ ProcessSUB, destWorkSpace, sizeof(COMMAND_HEADER)},
|
|
||||||
{ ProcessSUB, destFrameBuffer, sizeof(COMMAND_HEADER)},
|
|
||||||
{ ProcessSUB, destPLL, sizeof(COMMAND_HEADER)},
|
|
||||||
{ ProcessSUB, destMC, sizeof(COMMAND_HEADER)},
|
|
||||||
{ cmdSet_ATI_Port, ATI_RegsPort, 0},
|
|
||||||
{ cmdSet_X_Port, PCI_Port, 0},
|
|
||||||
{ cmdSet_X_Port, SystemIO_Port, 0},
|
|
||||||
{ cmdSet_Reg_Block, 0, 0},
|
|
||||||
{ ProcessSetFB_Base,0, sizeof(COMMAND_HEADER)},
|
|
||||||
{ ProcessCompare, destRegister, sizeof(COMMAND_HEADER)},
|
|
||||||
{ ProcessCompare, destParamSpace, sizeof(COMMAND_HEADER)},
|
|
||||||
{ ProcessCompare, destWorkSpace, sizeof(COMMAND_HEADER)},
|
|
||||||
{ ProcessCompare, destFrameBuffer, sizeof(COMMAND_HEADER)},
|
|
||||||
{ ProcessCompare, destPLL, sizeof(COMMAND_HEADER)},
|
|
||||||
{ ProcessCompare, destMC, sizeof(COMMAND_HEADER)},
|
|
||||||
{ ProcessSwitch, 0, sizeof(COMMAND_HEADER)},
|
|
||||||
{ ProcessJump, NoCondition, 0},
|
|
||||||
{ ProcessJump, Equal, 0},
|
|
||||||
{ ProcessJump, Below, 0},
|
|
||||||
{ ProcessJump, Above, 0},
|
|
||||||
{ ProcessJumpE, Below, 0},
|
|
||||||
{ ProcessJumpE, Above, 0},
|
|
||||||
{ ProcessJumpNE, 0, 0},
|
|
||||||
{ ProcessTest, destRegister, sizeof(COMMAND_HEADER)},
|
|
||||||
{ ProcessTest, destParamSpace, sizeof(COMMAND_HEADER)},
|
|
||||||
{ ProcessTest, destWorkSpace, sizeof(COMMAND_HEADER)},
|
|
||||||
{ ProcessTest, destFrameBuffer, sizeof(COMMAND_HEADER)},
|
|
||||||
{ ProcessTest, destPLL, sizeof(COMMAND_HEADER)},
|
|
||||||
{ ProcessTest, destMC, sizeof(COMMAND_HEADER)},
|
|
||||||
{ cmdDelay_Millisec,0, 0},
|
|
||||||
{ cmdDelay_Microsec,0, 0},
|
|
||||||
{ cmdCall_Table, 0, 0},
|
|
||||||
/*cmdRepeat*/ { NotImplemented, 0, 0},
|
|
||||||
{ ProcessClear, destRegister, sizeof(COMMAND_HEADER)},
|
|
||||||
{ ProcessClear, destParamSpace, sizeof(COMMAND_HEADER)},
|
|
||||||
{ ProcessClear, destWorkSpace, sizeof(COMMAND_HEADER)},
|
|
||||||
{ ProcessClear, destFrameBuffer, sizeof(COMMAND_HEADER)},
|
|
||||||
{ ProcessClear, destPLL, sizeof(COMMAND_HEADER)},
|
|
||||||
{ ProcessClear, destMC, sizeof(COMMAND_HEADER)},
|
|
||||||
{ cmdNOP_, 0, sizeof(COMMAND_TYPE_OPCODE_ONLY)},
|
|
||||||
/*cmdEOT*/ { cmdNOP_, 0, sizeof(COMMAND_TYPE_OPCODE_ONLY)},
|
|
||||||
{ ProcessMask, destRegister, sizeof(COMMAND_HEADER)},
|
|
||||||
{ ProcessMask, destParamSpace, sizeof(COMMAND_HEADER)},
|
|
||||||
{ ProcessMask, destWorkSpace, sizeof(COMMAND_HEADER)},
|
|
||||||
{ ProcessMask, destFrameBuffer, sizeof(COMMAND_HEADER)},
|
|
||||||
{ ProcessMask, destPLL, sizeof(COMMAND_HEADER)},
|
|
||||||
{ ProcessMask, destMC, sizeof(COMMAND_HEADER)},
|
|
||||||
/*cmdPost_Card*/ { ProcessPostChar, 0, 0},
|
|
||||||
/*cmdBeep*/ { NotImplemented, 0, 0},
|
|
||||||
/*cmdSave_Reg*/ { NotImplemented, 0, 0},
|
|
||||||
/*cmdRestore_Reg*/{ NotImplemented, 0, 0},
|
|
||||||
{ cmdSetDataBlock, 0, 0},
|
|
||||||
{ ProcessXor, destRegister, sizeof(COMMAND_HEADER)},
|
|
||||||
{ ProcessXor, destParamSpace, sizeof(COMMAND_HEADER)},
|
|
||||||
{ ProcessXor, destWorkSpace, sizeof(COMMAND_HEADER)},
|
|
||||||
{ ProcessXor, destFrameBuffer, sizeof(COMMAND_HEADER)},
|
|
||||||
{ ProcessXor, destPLL, sizeof(COMMAND_HEADER)},
|
|
||||||
{ ProcessXor, destMC, sizeof(COMMAND_HEADER)},
|
|
||||||
|
|
||||||
{ ProcessShl, destRegister, sizeof(COMMAND_HEADER)},
|
|
||||||
{ ProcessShl, destParamSpace, sizeof(COMMAND_HEADER)},
|
|
||||||
{ ProcessShl, destWorkSpace, sizeof(COMMAND_HEADER)},
|
|
||||||
{ ProcessShl, destFrameBuffer, sizeof(COMMAND_HEADER)},
|
|
||||||
{ ProcessShl, destPLL, sizeof(COMMAND_HEADER)},
|
|
||||||
{ ProcessShl, destMC, sizeof(COMMAND_HEADER)},
|
|
||||||
|
|
||||||
{ ProcessShr, destRegister, sizeof(COMMAND_HEADER)},
|
|
||||||
{ ProcessShr, destParamSpace, sizeof(COMMAND_HEADER)},
|
|
||||||
{ ProcessShr, destWorkSpace, sizeof(COMMAND_HEADER)},
|
|
||||||
{ ProcessShr, destFrameBuffer, sizeof(COMMAND_HEADER)},
|
|
||||||
{ ProcessShr, destPLL, sizeof(COMMAND_HEADER)},
|
|
||||||
{ ProcessShr, destMC, sizeof(COMMAND_HEADER)},
|
|
||||||
/*cmdDebug*/ { ProcessDebug, 0, 0},
|
|
||||||
{ ProcessDS, 0, 0},
|
|
||||||
|
|
||||||
};
|
|
||||||
|
|
||||||
// EOF
|
|
||||||
@@ -1,235 +0,0 @@
|
|||||||
/*
|
|
||||||
* Copyright 2006-2007 Advanced Micro Devices, Inc.
|
|
||||||
*
|
|
||||||
* Permission is hereby granted, free of charge, to any person obtaining a
|
|
||||||
* copy of this software and associated documentation files (the "Software"),
|
|
||||||
* to deal in the Software without restriction, including without limitation
|
|
||||||
* the rights to use, copy, modify, merge, publish, distribute, sublicense,
|
|
||||||
* and/or sell copies of the Software, and to permit persons to whom the
|
|
||||||
* Software is furnished to do so, subject to the following conditions:
|
|
||||||
*
|
|
||||||
* The above copyright notice and this permission notice shall be included in
|
|
||||||
* all copies or substantial portions of the Software.
|
|
||||||
*
|
|
||||||
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
|
||||||
* IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
|
||||||
* FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
|
|
||||||
* THE COPYRIGHT HOLDER(S) OR AUTHOR(S) BE LIABLE FOR ANY CLAIM, DAMAGES OR
|
|
||||||
* OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE,
|
|
||||||
* ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
|
|
||||||
* OTHER DEALINGS IN THE SOFTWARE.
|
|
||||||
*/
|
|
||||||
|
|
||||||
/**
|
|
||||||
|
|
||||||
Module Name:
|
|
||||||
|
|
||||||
Decoder.c
|
|
||||||
|
|
||||||
Abstract:
|
|
||||||
|
|
||||||
Commands Decoder
|
|
||||||
|
|
||||||
Revision History:
|
|
||||||
|
|
||||||
NEG:24.09.2002 Initiated.
|
|
||||||
--*/
|
|
||||||
//#include "AtomBios.h"
|
|
||||||
#include "Decoder.h"
|
|
||||||
#include "atombios.h"
|
|
||||||
#include "CD_binding.h"
|
|
||||||
#include "CD_Common_Types.h"
|
|
||||||
|
|
||||||
#ifndef DISABLE_EASF
|
|
||||||
#include "easf.h"
|
|
||||||
#endif
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
#define INDIRECT_IO_TABLE (((UINT16)&((ATOM_MASTER_LIST_OF_DATA_TABLES*)0)->IndirectIOAccess)/sizeof(TABLE_UNIT_TYPE) )
|
|
||||||
extern COMMANDS_PROPERTIES CallTable[];
|
|
||||||
|
|
||||||
|
|
||||||
UINT8 ProcessCommandProperties(PARSER_TEMP_DATA STACK_BASED * pParserTempData)
|
|
||||||
{
|
|
||||||
UINT8 opcode=((COMMAND_HEADER*)pParserTempData->pWorkingTableData->IP)->Opcode;
|
|
||||||
pParserTempData->pWorkingTableData->IP+=CallTable[opcode].headersize;
|
|
||||||
pParserTempData->ParametersType.Destination=CallTable[opcode].destination;
|
|
||||||
pParserTempData->ParametersType.Source = pParserTempData->pCmd->Header.Attribute.Source;
|
|
||||||
pParserTempData->CD_Mask.SrcAlignment=pParserTempData->pCmd->Header.Attribute.SourceAlignment;
|
|
||||||
pParserTempData->CD_Mask.DestAlignment=pParserTempData->pCmd->Header.Attribute.DestinationAlignment;
|
|
||||||
return opcode;
|
|
||||||
}
|
|
||||||
|
|
||||||
UINT16* GetCommandMasterTablePointer(DEVICE_DATA STACK_BASED* pDeviceData)
|
|
||||||
{
|
|
||||||
UINT16 *MasterTableOffset;
|
|
||||||
#ifndef DISABLE_EASF
|
|
||||||
if (pDeviceData->format == TABLE_FORMAT_EASF)
|
|
||||||
{
|
|
||||||
/*
|
|
||||||
make MasterTableOffset point to EASF_ASIC_SETUP_TABLE structure, including usSize.
|
|
||||||
*/
|
|
||||||
MasterTableOffset = (UINT16 *) (pDeviceData->pBIOS_Image+((EASF_ASIC_DESCRIPTOR*)pDeviceData->pBIOS_Image)->usAsicSetupTable_Offset);
|
|
||||||
} else
|
|
||||||
#endif
|
|
||||||
{
|
|
||||||
#ifndef UEFI_BUILD
|
|
||||||
MasterTableOffset = (UINT16 *)(*(UINT16 *)(pDeviceData->pBIOS_Image+OFFSET_TO_POINTER_TO_ATOM_ROM_HEADER) + pDeviceData->pBIOS_Image);
|
|
||||||
MasterTableOffset = (UINT16 *)((ULONG)((ATOM_ROM_HEADER *)MasterTableOffset)->usMasterCommandTableOffset + pDeviceData->pBIOS_Image );
|
|
||||||
MasterTableOffset =(UINT16 *) &(((ATOM_MASTER_COMMAND_TABLE *)MasterTableOffset)->ListOfCommandTables);
|
|
||||||
#else
|
|
||||||
MasterTableOffset = (UINT16 *)(&(GetCommandMasterTable( )->ListOfCommandTables));
|
|
||||||
#endif
|
|
||||||
}
|
|
||||||
return MasterTableOffset;
|
|
||||||
}
|
|
||||||
|
|
||||||
UINT16* GetDataMasterTablePointer(DEVICE_DATA STACK_BASED* pDeviceData)
|
|
||||||
{
|
|
||||||
UINT16 *MasterTableOffset;
|
|
||||||
|
|
||||||
#ifndef UEFI_BUILD
|
|
||||||
MasterTableOffset = (UINT16 *)(*(UINT16 *)(pDeviceData->pBIOS_Image+OFFSET_TO_POINTER_TO_ATOM_ROM_HEADER) + pDeviceData->pBIOS_Image);
|
|
||||||
MasterTableOffset = (UINT16 *)((ULONG)((ATOM_ROM_HEADER *)MasterTableOffset)->usMasterDataTableOffset + pDeviceData->pBIOS_Image );
|
|
||||||
MasterTableOffset =(UINT16 *) &(((ATOM_MASTER_DATA_TABLE *)MasterTableOffset)->ListOfDataTables);
|
|
||||||
#else
|
|
||||||
MasterTableOffset = (UINT16 *)(&(GetDataMasterTable( )->ListOfDataTables));
|
|
||||||
#endif
|
|
||||||
return MasterTableOffset;
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
UINT8 GetTrueIndexInMasterTable(PARSER_TEMP_DATA STACK_BASED * pParserTempData, UINT8 IndexInMasterTable)
|
|
||||||
{
|
|
||||||
#ifndef DISABLE_EASF
|
|
||||||
UINT16 i;
|
|
||||||
if ( pParserTempData->pDeviceData->format == TABLE_FORMAT_EASF)
|
|
||||||
{
|
|
||||||
/*
|
|
||||||
Consider EASF_ASIC_SETUP_TABLE structure pointed by pParserTempData->pCmd as UINT16[]
|
|
||||||
((UINT16*)pParserTempData->pCmd)[0] = EASF_ASIC_SETUP_TABLE.usSize;
|
|
||||||
((UINT16*)pParserTempData->pCmd)[1+n*4] = usFunctionID;
|
|
||||||
usFunctionID has to be shifted left by 2 before compare it to the value provided by caller.
|
|
||||||
*/
|
|
||||||
for (i=1; (i < ((UINT16*)pParserTempData->pCmd)[0] >> 1);i+=4)
|
|
||||||
if ((UINT8)(((UINT16*)pParserTempData->pCmd)[i] << 2)==(IndexInMasterTable & EASF_TABLE_INDEX_MASK)) return (i+1+(IndexInMasterTable & EASF_TABLE_ATTR_MASK));
|
|
||||||
return 1;
|
|
||||||
} else
|
|
||||||
#endif
|
|
||||||
{
|
|
||||||
return IndexInMasterTable;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
CD_STATUS ParseTable(DEVICE_DATA STACK_BASED* pDeviceData, UINT8 IndexInMasterTable)
|
|
||||||
{
|
|
||||||
PARSER_TEMP_DATA ParserTempData;
|
|
||||||
WORKING_TABLE_DATA STACK_BASED* prevWorkingTableData;
|
|
||||||
|
|
||||||
ParserTempData.pDeviceData=(DEVICE_DATA*)pDeviceData;
|
|
||||||
#ifndef DISABLE_EASF
|
|
||||||
if (pDeviceData->format == TABLE_FORMAT_EASF)
|
|
||||||
{
|
|
||||||
ParserTempData.IndirectIOTablePointer = 0;
|
|
||||||
} else
|
|
||||||
#endif
|
|
||||||
{
|
|
||||||
ParserTempData.pCmd=(GENERIC_ATTRIBUTE_COMMAND*)GetDataMasterTablePointer(pDeviceData);
|
|
||||||
ParserTempData.IndirectIOTablePointer=(UINT8*)((ULONG)(((PTABLE_UNIT_TYPE)ParserTempData.pCmd)[INDIRECT_IO_TABLE]) + pDeviceData->pBIOS_Image);
|
|
||||||
ParserTempData.IndirectIOTablePointer+=sizeof(ATOM_COMMON_TABLE_HEADER);
|
|
||||||
}
|
|
||||||
|
|
||||||
ParserTempData.pCmd=(GENERIC_ATTRIBUTE_COMMAND*)GetCommandMasterTablePointer(pDeviceData);
|
|
||||||
IndexInMasterTable=GetTrueIndexInMasterTable((PARSER_TEMP_DATA STACK_BASED *)&ParserTempData,IndexInMasterTable);
|
|
||||||
if(((PTABLE_UNIT_TYPE)ParserTempData.pCmd)[IndexInMasterTable]!=0 ) // if the offset is not ZERO
|
|
||||||
{
|
|
||||||
ParserTempData.CommandSpecific.IndexInMasterTable=IndexInMasterTable;
|
|
||||||
ParserTempData.Multipurpose.CurrentPort=ATI_RegsPort;
|
|
||||||
ParserTempData.CurrentPortID=INDIRECT_IO_MM;
|
|
||||||
ParserTempData.CurrentRegBlock=0;
|
|
||||||
ParserTempData.CurrentFB_Window=0;
|
|
||||||
prevWorkingTableData=NULL;
|
|
||||||
ParserTempData.Status=CD_CALL_TABLE;
|
|
||||||
|
|
||||||
do{
|
|
||||||
|
|
||||||
if (ParserTempData.Status==CD_CALL_TABLE)
|
|
||||||
{
|
|
||||||
IndexInMasterTable=ParserTempData.CommandSpecific.IndexInMasterTable;
|
|
||||||
if(((PTABLE_UNIT_TYPE)ParserTempData.pCmd)[IndexInMasterTable]!=0) // if the offset is not ZERO
|
|
||||||
{
|
|
||||||
#ifndef UEFI_BUILD
|
|
||||||
ParserTempData.pWorkingTableData =(WORKING_TABLE_DATA STACK_BASED*) AllocateWorkSpace(pDeviceData,
|
|
||||||
((ATOM_COMMON_ROM_COMMAND_TABLE_HEADER*)(((PTABLE_UNIT_TYPE)ParserTempData.pCmd)[IndexInMasterTable]+pDeviceData->pBIOS_Image))->TableAttribute.WS_SizeInBytes+sizeof(WORKING_TABLE_DATA));
|
|
||||||
#else
|
|
||||||
ParserTempData.pWorkingTableData =(WORKING_TABLE_DATA STACK_BASED*) AllocateWorkSpace(pDeviceData,
|
|
||||||
((ATOM_COMMON_ROM_COMMAND_TABLE_HEADER*)(((PTABLE_UNIT_TYPE)ParserTempData.pCmd)[IndexInMasterTable]))->TableAttribute.WS_SizeInBytes+sizeof(WORKING_TABLE_DATA));
|
|
||||||
#endif
|
|
||||||
if (ParserTempData.pWorkingTableData!=NULL)
|
|
||||||
{
|
|
||||||
ParserTempData.pWorkingTableData->pWorkSpace=(WORKSPACE_POINTER STACK_BASED*)((UINT8*)ParserTempData.pWorkingTableData+sizeof(WORKING_TABLE_DATA));
|
|
||||||
#ifndef UEFI_BUILD
|
|
||||||
ParserTempData.pWorkingTableData->pTableHead = (UINT8 *)(((PTABLE_UNIT_TYPE)ParserTempData.pCmd)[IndexInMasterTable]+pDeviceData->pBIOS_Image);
|
|
||||||
#else
|
|
||||||
ParserTempData.pWorkingTableData->pTableHead = (UINT8 *)(((PTABLE_UNIT_TYPE)ParserTempData.pCmd)[IndexInMasterTable]);
|
|
||||||
#endif
|
|
||||||
ParserTempData.pWorkingTableData->IP=((UINT8*)ParserTempData.pWorkingTableData->pTableHead)+sizeof(ATOM_COMMON_ROM_COMMAND_TABLE_HEADER);
|
|
||||||
ParserTempData.pWorkingTableData->prevWorkingTableData=prevWorkingTableData;
|
|
||||||
prevWorkingTableData=ParserTempData.pWorkingTableData;
|
|
||||||
ParserTempData.Status = CD_SUCCESS;
|
|
||||||
} else ParserTempData.Status = CD_UNEXPECTED_BEHAVIOR;
|
|
||||||
} else ParserTempData.Status = CD_EXEC_TABLE_NOT_FOUND;
|
|
||||||
}
|
|
||||||
if (!CD_ERROR(ParserTempData.Status))
|
|
||||||
{
|
|
||||||
ParserTempData.Status = CD_SUCCESS;
|
|
||||||
while (!CD_ERROR_OR_COMPLETED(ParserTempData.Status))
|
|
||||||
{
|
|
||||||
|
|
||||||
if (IS_COMMAND_VALID(((COMMAND_HEADER*)ParserTempData.pWorkingTableData->IP)->Opcode))
|
|
||||||
{
|
|
||||||
ParserTempData.pCmd = (GENERIC_ATTRIBUTE_COMMAND*)ParserTempData.pWorkingTableData->IP;
|
|
||||||
|
|
||||||
if (IS_END_OF_TABLE(((COMMAND_HEADER*)ParserTempData.pWorkingTableData->IP)->Opcode))
|
|
||||||
{
|
|
||||||
ParserTempData.Status=CD_COMPLETED;
|
|
||||||
prevWorkingTableData=ParserTempData.pWorkingTableData->prevWorkingTableData;
|
|
||||||
|
|
||||||
FreeWorkSpace(pDeviceData, ParserTempData.pWorkingTableData);
|
|
||||||
ParserTempData.pWorkingTableData=prevWorkingTableData;
|
|
||||||
if (prevWorkingTableData!=NULL)
|
|
||||||
{
|
|
||||||
ParserTempData.pDeviceData->pParameterSpace-=
|
|
||||||
(((ATOM_COMMON_ROM_COMMAND_TABLE_HEADER*)ParserTempData.pWorkingTableData->
|
|
||||||
pTableHead)->TableAttribute.PS_SizeInBytes>>2);
|
|
||||||
}
|
|
||||||
// if there is a parent table where to return, then restore PS_pointer to the original state
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
IndexInMasterTable=ProcessCommandProperties((PARSER_TEMP_DATA STACK_BASED *)&ParserTempData);
|
|
||||||
(*CallTable[IndexInMasterTable].function)((PARSER_TEMP_DATA STACK_BASED *)&ParserTempData);
|
|
||||||
#if (PARSER_TYPE!=DRIVER_TYPE_PARSER)
|
|
||||||
BIOS_STACK_MODIFIER();
|
|
||||||
#endif
|
|
||||||
}
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
ParserTempData.Status=CD_INVALID_OPCODE;
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
|
|
||||||
} // while
|
|
||||||
} // if
|
|
||||||
else
|
|
||||||
break;
|
|
||||||
} while (prevWorkingTableData!=NULL);
|
|
||||||
if (ParserTempData.Status == CD_COMPLETED) return CD_SUCCESS;
|
|
||||||
return ParserTempData.Status;
|
|
||||||
} else return CD_SUCCESS;
|
|
||||||
}
|
|
||||||
|
|
||||||
// EOF
|
|
||||||
|
|
||||||
@@ -1,24 +0,0 @@
|
|||||||
SubDir HAIKU_TOP src add-ons accelerants radeon_hd atombios ;
|
|
||||||
|
|
||||||
UseHeaders [ FDirName $(SUBDIR) includes ] ;
|
|
||||||
UsePrivateHeaders graphics ;
|
|
||||||
UsePrivateHeaders [ FDirName graphics radeon_hd ] ;
|
|
||||||
UsePrivateHeaders [ FDirName graphics common ] ;
|
|
||||||
|
|
||||||
DEFINES += DISABLE_EASF ;
|
|
||||||
DEFINES += DRIVER_PARSER ;
|
|
||||||
DEFINES += ENABLE_ALL_SERVICE_FUNCTIONS ;
|
|
||||||
|
|
||||||
# To avoid changing AMD vendor sources
|
|
||||||
TARGET_WARNING_CCFLAGS = [ FFilter $(TARGET_WARNING_CCFLAGS)
|
|
||||||
: -Wall -Wmissing-prototypes -Wcast-align ] ;
|
|
||||||
|
|
||||||
if $(HAIKU_GCC_VERSION[1]) = 4 {
|
|
||||||
TARGET_WARNING_CCFLAGS += -Wno-pointer-to-int-cast ;
|
|
||||||
}
|
|
||||||
|
|
||||||
StaticLibrary atombios.a :
|
|
||||||
Decoder.c
|
|
||||||
CD_Operations.c
|
|
||||||
hwserv_drv.c
|
|
||||||
;
|
|
||||||
+24
-25
@@ -1,5 +1,5 @@
|
|||||||
/*
|
/*
|
||||||
* Copyright 2006-2007 Advanced Micro Devices, Inc.
|
* Copyright 2008 Advanced Micro Devices, Inc.
|
||||||
*
|
*
|
||||||
* Permission is hereby granted, free of charge, to any person obtaining a
|
* Permission is hereby granted, free of charge, to any person obtaining a
|
||||||
* copy of this software and associated documentation files (the "Software"),
|
* copy of this software and associated documentation files (the "Software"),
|
||||||
@@ -18,32 +18,31 @@
|
|||||||
* OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE,
|
* OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE,
|
||||||
* ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
|
* ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
|
||||||
* OTHER DEALINGS IN THE SOFTWARE.
|
* OTHER DEALINGS IN THE SOFTWARE.
|
||||||
|
*
|
||||||
|
* Author: Stanislaw Skowronek
|
||||||
*/
|
*/
|
||||||
|
|
||||||
/*++
|
#ifndef ATOM_BITS_H
|
||||||
|
#define ATOM_BITS_H
|
||||||
|
|
||||||
Module Name:
|
static inline uint8_t get_u8(void *bios, int ptr)
|
||||||
|
{
|
||||||
|
return ((unsigned char *)bios)[ptr];
|
||||||
|
}
|
||||||
|
#define U8(ptr) get_u8(ctx->ctx->bios,(ptr))
|
||||||
|
#define CU8(ptr) get_u8(ctx->bios,(ptr))
|
||||||
|
static inline uint16_t get_u16(void *bios, int ptr)
|
||||||
|
{
|
||||||
|
return get_u8(bios,ptr)|(((uint16_t)get_u8(bios,ptr+1))<<8);
|
||||||
|
}
|
||||||
|
#define U16(ptr) get_u16(ctx->ctx->bios,(ptr))
|
||||||
|
#define CU16(ptr) get_u16(ctx->bios,(ptr))
|
||||||
|
static inline uint32_t get_u32(void *bios, int ptr)
|
||||||
|
{
|
||||||
|
return get_u16(bios,ptr)|(((uint32_t)get_u16(bios,ptr+2))<<16);
|
||||||
|
}
|
||||||
|
#define U32(ptr) get_u32(ctx->ctx->bios,(ptr))
|
||||||
|
#define CU32(ptr) get_u32(ctx->bios,(ptr))
|
||||||
|
#define CSTR(ptr) (((char *)(ctx->bios))+(ptr))
|
||||||
|
|
||||||
CD_Definitions.h
|
|
||||||
|
|
||||||
Abstract:
|
|
||||||
|
|
||||||
Defines Script Language commands
|
|
||||||
|
|
||||||
Revision History:
|
|
||||||
|
|
||||||
NEG:27.08.2002 Initiated.
|
|
||||||
--*/
|
|
||||||
|
|
||||||
#include "CD_Structs.h"
|
|
||||||
#ifndef _CD_DEFINITIONS_H
|
|
||||||
#define _CD_DEFINITIONS_H_
|
|
||||||
#ifdef DRIVER_PARSER
|
|
||||||
VOID *AllocateMemory(VOID *, UINT16);
|
|
||||||
VOID ReleaseMemory(DEVICE_DATA * , WORKING_TABLE_DATA* );
|
|
||||||
#endif
|
#endif
|
||||||
CD_STATUS ParseTable(DEVICE_DATA* pDeviceData, UINT8 IndexInMasterTable);
|
|
||||||
//CD_STATUS CD_MainLoop(PARSER_TEMP_DATA_POINTER pParserTempData);
|
|
||||||
CD_STATUS Main_Loop(DEVICE_DATA* pDeviceData,UINT16 *MasterTableOffset,UINT8 IndexInMasterTable);
|
|
||||||
UINT16* GetCommandMasterTablePointer(DEVICE_DATA* pDeviceData);
|
|
||||||
#endif //CD_DEFINITIONS
|
|
||||||
@@ -0,0 +1,100 @@
|
|||||||
|
/*
|
||||||
|
* Copyright 2008 Advanced Micro Devices, Inc.
|
||||||
|
*
|
||||||
|
* Permission is hereby granted, free of charge, to any person obtaining a
|
||||||
|
* copy of this software and associated documentation files (the "Software"),
|
||||||
|
* to deal in the Software without restriction, including without limitation
|
||||||
|
* the rights to use, copy, modify, merge, publish, distribute, sublicense,
|
||||||
|
* and/or sell copies of the Software, and to permit persons to whom the
|
||||||
|
* Software is furnished to do so, subject to the following conditions:
|
||||||
|
*
|
||||||
|
* The above copyright notice and this permission notice shall be included in
|
||||||
|
* all copies or substantial portions of the Software.
|
||||||
|
*
|
||||||
|
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
||||||
|
* IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
||||||
|
* FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
|
||||||
|
* THE COPYRIGHT HOLDER(S) OR AUTHOR(S) BE LIABLE FOR ANY CLAIM, DAMAGES OR
|
||||||
|
* OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE,
|
||||||
|
* ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
|
||||||
|
* OTHER DEALINGS IN THE SOFTWARE.
|
||||||
|
*
|
||||||
|
* Author: Stanislaw Skowronek
|
||||||
|
*/
|
||||||
|
|
||||||
|
#ifndef ATOM_NAMES_H
|
||||||
|
#define ATOM_NAMES_H
|
||||||
|
|
||||||
|
#include "atom.h"
|
||||||
|
|
||||||
|
#ifdef ATOM_DEBUG
|
||||||
|
|
||||||
|
#define ATOM_OP_NAMES_CNT 123
|
||||||
|
static char *atom_op_names[ATOM_OP_NAMES_CNT]={
|
||||||
|
"RESERVED", "MOVE_REG", "MOVE_PS", "MOVE_WS", "MOVE_FB", "MOVE_PLL",
|
||||||
|
"MOVE_MC", "AND_REG", "AND_PS", "AND_WS", "AND_FB", "AND_PLL", "AND_MC",
|
||||||
|
"OR_REG", "OR_PS", "OR_WS", "OR_FB", "OR_PLL", "OR_MC", "SHIFT_LEFT_REG",
|
||||||
|
"SHIFT_LEFT_PS", "SHIFT_LEFT_WS", "SHIFT_LEFT_FB", "SHIFT_LEFT_PLL",
|
||||||
|
"SHIFT_LEFT_MC", "SHIFT_RIGHT_REG", "SHIFT_RIGHT_PS", "SHIFT_RIGHT_WS",
|
||||||
|
"SHIFT_RIGHT_FB", "SHIFT_RIGHT_PLL", "SHIFT_RIGHT_MC", "MUL_REG",
|
||||||
|
"MUL_PS", "MUL_WS", "MUL_FB", "MUL_PLL", "MUL_MC", "DIV_REG", "DIV_PS",
|
||||||
|
"DIV_WS", "DIV_FB", "DIV_PLL", "DIV_MC", "ADD_REG", "ADD_PS", "ADD_WS",
|
||||||
|
"ADD_FB", "ADD_PLL", "ADD_MC", "SUB_REG", "SUB_PS", "SUB_WS", "SUB_FB",
|
||||||
|
"SUB_PLL", "SUB_MC", "SET_ATI_PORT", "SET_PCI_PORT", "SET_SYS_IO_PORT",
|
||||||
|
"SET_REG_BLOCK", "SET_FB_BASE", "COMPARE_REG", "COMPARE_PS",
|
||||||
|
"COMPARE_WS", "COMPARE_FB", "COMPARE_PLL", "COMPARE_MC", "SWITCH",
|
||||||
|
"JUMP", "JUMP_EQUAL", "JUMP_BELOW", "JUMP_ABOVE", "JUMP_BELOW_OR_EQUAL",
|
||||||
|
"JUMP_ABOVE_OR_EQUAL", "JUMP_NOT_EQUAL", "TEST_REG", "TEST_PS", "TEST_WS",
|
||||||
|
"TEST_FB", "TEST_PLL", "TEST_MC", "DELAY_MILLISEC", "DELAY_MICROSEC",
|
||||||
|
"CALL_TABLE", "REPEAT", "CLEAR_REG", "CLEAR_PS", "CLEAR_WS", "CLEAR_FB",
|
||||||
|
"CLEAR_PLL", "CLEAR_MC", "NOP", "EOT", "MASK_REG", "MASK_PS", "MASK_WS",
|
||||||
|
"MASK_FB", "MASK_PLL", "MASK_MC", "POST_CARD", "BEEP", "SAVE_REG",
|
||||||
|
"RESTORE_REG", "SET_DATA_BLOCK", "XOR_REG", "XOR_PS", "XOR_WS", "XOR_FB",
|
||||||
|
"XOR_PLL", "XOR_MC", "SHL_REG", "SHL_PS", "SHL_WS", "SHL_FB", "SHL_PLL",
|
||||||
|
"SHL_MC", "SHR_REG", "SHR_PS", "SHR_WS", "SHR_FB", "SHR_PLL", "SHR_MC",
|
||||||
|
"DEBUG", "CTB_DS",
|
||||||
|
};
|
||||||
|
|
||||||
|
#define ATOM_TABLE_NAMES_CNT 74
|
||||||
|
static char *atom_table_names[ATOM_TABLE_NAMES_CNT]={
|
||||||
|
"ASIC_Init", "GetDisplaySurfaceSize", "ASIC_RegistersInit",
|
||||||
|
"VRAM_BlockVenderDetection", "SetClocksRatio", "MemoryControllerInit",
|
||||||
|
"GPIO_PinInit", "MemoryParamAdjust", "DVOEncoderControl",
|
||||||
|
"GPIOPinControl", "SetEngineClock", "SetMemoryClock", "SetPixelClock",
|
||||||
|
"DynamicClockGating", "ResetMemoryDLL", "ResetMemoryDevice",
|
||||||
|
"MemoryPLLInit", "EnableMemorySelfRefresh", "AdjustMemoryController",
|
||||||
|
"EnableASIC_StaticPwrMgt", "ASIC_StaticPwrMgtStatusChange",
|
||||||
|
"DAC_LoadDetection", "TMDS2EncoderControl", "LCD1OutputControl",
|
||||||
|
"DAC1EncoderControl", "DAC2EncoderControl", "DVOOutputControl",
|
||||||
|
"CV1OutputControl", "SetCRTC_DPM_State", "TVEncoderControl",
|
||||||
|
"TMDS1EncoderControl", "LVDSEncoderControl", "TV1OutputControl",
|
||||||
|
"EnableScaler", "BlankCRTC", "EnableCRTC", "GetPixelClock",
|
||||||
|
"EnableVGA_Render", "EnableVGA_Access", "SetCRTC_Timing",
|
||||||
|
"SetCRTC_OverScan", "SetCRTC_Replication", "SelectCRTC_Source",
|
||||||
|
"EnableGraphSurfaces", "UpdateCRTC_DoubleBufferRegisters",
|
||||||
|
"LUT_AutoFill", "EnableHW_IconCursor", "GetMemoryClock",
|
||||||
|
"GetEngineClock", "SetCRTC_UsingDTDTiming", "TVBootUpStdPinDetection",
|
||||||
|
"DFP2OutputControl", "VRAM_BlockDetectionByStrap", "MemoryCleanUp",
|
||||||
|
"ReadEDIDFromHWAssistedI2C", "WriteOneByteToHWAssistedI2C",
|
||||||
|
"ReadHWAssistedI2CStatus", "SpeedFanControl", "PowerConnectorDetection",
|
||||||
|
"MC_Synchronization", "ComputeMemoryEnginePLL", "MemoryRefreshConversion",
|
||||||
|
"VRAM_GetCurrentInfoBlock", "DynamicMemorySettings", "MemoryTraining",
|
||||||
|
"EnableLVDS_SS", "DFP1OutputControl", "SetVoltage", "CRT1OutputControl",
|
||||||
|
"CRT2OutputControl", "SetupHWAssistedI2CStatus", "ClockSource",
|
||||||
|
"MemoryDeviceInit", "EnableYUV",
|
||||||
|
};
|
||||||
|
|
||||||
|
#define ATOM_IO_NAMES_CNT 5
|
||||||
|
static char *atom_io_names[ATOM_IO_NAMES_CNT]={
|
||||||
|
"MM", "PLL", "MC", "PCIE", "PCIE PORT",
|
||||||
|
};
|
||||||
|
|
||||||
|
#else
|
||||||
|
|
||||||
|
#define ATOM_OP_NAMES_CNT 0
|
||||||
|
#define ATOM_TABLE_NAMES_CNT 0
|
||||||
|
#define ATOM_IO_NAMES_CNT 0
|
||||||
|
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#endif
|
||||||
File diff suppressed because it is too large
Load Diff
@@ -0,0 +1,136 @@
|
|||||||
|
/*
|
||||||
|
* Copyright 2008 Advanced Micro Devices, Inc.
|
||||||
|
*
|
||||||
|
* Permission is hereby granted, free of charge, to any person obtaining a
|
||||||
|
* copy of this software and associated documentation files (the "Software"),
|
||||||
|
* to deal in the Software without restriction, including without limitation
|
||||||
|
* the rights to use, copy, modify, merge, publish, distribute, sublicense,
|
||||||
|
* and/or sell copies of the Software, and to permit persons to whom the
|
||||||
|
* Software is furnished to do so, subject to the following conditions:
|
||||||
|
*
|
||||||
|
* The above copyright notice and this permission notice shall be included in
|
||||||
|
* all copies or substantial portions of the Software.
|
||||||
|
*
|
||||||
|
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
||||||
|
* IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
||||||
|
* FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
|
||||||
|
* THE COPYRIGHT HOLDER(S) OR AUTHOR(S) BE LIABLE FOR ANY CLAIM, DAMAGES OR
|
||||||
|
* OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE,
|
||||||
|
* ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
|
||||||
|
* OTHER DEALINGS IN THE SOFTWARE.
|
||||||
|
*
|
||||||
|
* Author: Stanislaw Skowronek
|
||||||
|
*/
|
||||||
|
|
||||||
|
#ifndef ATOM_H
|
||||||
|
#define ATOM_H
|
||||||
|
|
||||||
|
#ifndef __HAIKU__
|
||||||
|
#include <linux/types.h>
|
||||||
|
#endif
|
||||||
|
#include "card.h"
|
||||||
|
|
||||||
|
#define ATOM_BIOS_MAGIC 0xAA55
|
||||||
|
#define ATOM_ATI_MAGIC_PTR 0x30
|
||||||
|
#define ATOM_ATI_MAGIC " 761295520"
|
||||||
|
#define ATOM_ROM_TABLE_PTR 0x48
|
||||||
|
|
||||||
|
#define ATOM_ROM_MAGIC "ATOM"
|
||||||
|
#define ATOM_ROM_MAGIC_PTR 4
|
||||||
|
|
||||||
|
#define ATOM_ROM_MSG_PTR 0x10
|
||||||
|
#define ATOM_ROM_CMD_PTR 0x1E
|
||||||
|
#define ATOM_ROM_DATA_PTR 0x20
|
||||||
|
|
||||||
|
#define ATOM_CMD_INIT 0
|
||||||
|
#define ATOM_CMD_SETSCLK 0x0A
|
||||||
|
#define ATOM_CMD_SETMCLK 0x0B
|
||||||
|
#define ATOM_CMD_SETPCLK 0x0C
|
||||||
|
|
||||||
|
#define ATOM_DATA_FWI_PTR 0xC
|
||||||
|
#define ATOM_DATA_IIO_PTR 0x32
|
||||||
|
|
||||||
|
#define ATOM_FWI_DEFSCLK_PTR 8
|
||||||
|
#define ATOM_FWI_DEFMCLK_PTR 0xC
|
||||||
|
#define ATOM_FWI_MAXSCLK_PTR 0x24
|
||||||
|
#define ATOM_FWI_MAXMCLK_PTR 0x28
|
||||||
|
|
||||||
|
#define ATOM_CT_SIZE_PTR 0
|
||||||
|
#define ATOM_CT_WS_PTR 4
|
||||||
|
#define ATOM_CT_PS_PTR 5
|
||||||
|
#define ATOM_CT_PS_MASK 0x7F
|
||||||
|
#define ATOM_CT_CODE_PTR 6
|
||||||
|
|
||||||
|
#define ATOM_OP_CNT 123
|
||||||
|
#define ATOM_OP_EOT 91
|
||||||
|
|
||||||
|
#define ATOM_CASE_MAGIC 0x63
|
||||||
|
#define ATOM_CASE_END 0x5A5A
|
||||||
|
|
||||||
|
#define ATOM_ARG_REG 0
|
||||||
|
#define ATOM_ARG_PS 1
|
||||||
|
#define ATOM_ARG_WS 2
|
||||||
|
#define ATOM_ARG_ID 4
|
||||||
|
#define ATOM_ARG_FB 3
|
||||||
|
#define ATOM_ARG_IMM 5
|
||||||
|
#define ATOM_ARG_PLL 6
|
||||||
|
#define ATOM_ARG_MC 7
|
||||||
|
|
||||||
|
#define ATOM_SRC_DWORD 0
|
||||||
|
#define ATOM_SRC_WORD0 1
|
||||||
|
#define ATOM_SRC_WORD8 2
|
||||||
|
#define ATOM_SRC_WORD16 3
|
||||||
|
#define ATOM_SRC_BYTE0 4
|
||||||
|
#define ATOM_SRC_BYTE8 5
|
||||||
|
#define ATOM_SRC_BYTE16 6
|
||||||
|
#define ATOM_SRC_BYTE24 7
|
||||||
|
|
||||||
|
#define ATOM_WS_QUOTIENT 0x40
|
||||||
|
#define ATOM_WS_REMAINDER 0x41
|
||||||
|
#define ATOM_WS_DATAPTR 0x42
|
||||||
|
#define ATOM_WS_SHIFT 0x43
|
||||||
|
#define ATOM_WS_OR_MASK 0x44
|
||||||
|
#define ATOM_WS_AND_MASK 0x45
|
||||||
|
#define ATOM_WS_FB_WINDOW 0x46
|
||||||
|
#define ATOM_WS_ATTRIBUTES 0x47
|
||||||
|
|
||||||
|
#define ATOM_IIO_NOP 0
|
||||||
|
#define ATOM_IIO_START 1
|
||||||
|
#define ATOM_IIO_READ 2
|
||||||
|
#define ATOM_IIO_WRITE 3
|
||||||
|
#define ATOM_IIO_CLEAR 4
|
||||||
|
#define ATOM_IIO_SET 5
|
||||||
|
#define ATOM_IIO_MOVE_INDEX 6
|
||||||
|
#define ATOM_IIO_MOVE_ATTR 7
|
||||||
|
#define ATOM_IIO_MOVE_DATA 8
|
||||||
|
#define ATOM_IIO_END 9
|
||||||
|
|
||||||
|
#define ATOM_IO_MM 0
|
||||||
|
#define ATOM_IO_PCI 1
|
||||||
|
#define ATOM_IO_SYSIO 2
|
||||||
|
#define ATOM_IO_IIO 0x80
|
||||||
|
|
||||||
|
typedef struct atom_context_s {
|
||||||
|
card_info *card;
|
||||||
|
void *bios;
|
||||||
|
uint32_t cmd_table, data_table;
|
||||||
|
uint16_t *iio;
|
||||||
|
|
||||||
|
uint16_t data_block;
|
||||||
|
uint32_t fb_base;
|
||||||
|
uint32_t divmul[2];
|
||||||
|
uint16_t io_attr;
|
||||||
|
uint16_t reg_block;
|
||||||
|
uint8_t shift;
|
||||||
|
int cs_equal, cs_above;
|
||||||
|
int io_mode;
|
||||||
|
} atom_context;
|
||||||
|
|
||||||
|
extern int atom_debug;
|
||||||
|
|
||||||
|
atom_context *atom_parse(card_info *, void *);
|
||||||
|
void atom_execute_table(atom_context *, int, uint32_t *);
|
||||||
|
int atom_asic_init(atom_context *);
|
||||||
|
void atom_destroy(atom_context *);
|
||||||
|
|
||||||
|
#endif
|
||||||
@@ -1,348 +0,0 @@
|
|||||||
/*
|
|
||||||
* Copyright 2006-2007 Advanced Micro Devices, Inc.
|
|
||||||
*
|
|
||||||
* Permission is hereby granted, free of charge, to any person obtaining a
|
|
||||||
* copy of this software and associated documentation files (the "Software"),
|
|
||||||
* to deal in the Software without restriction, including without limitation
|
|
||||||
* the rights to use, copy, modify, merge, publish, distribute, sublicense,
|
|
||||||
* and/or sell copies of the Software, and to permit persons to whom the
|
|
||||||
* Software is furnished to do so, subject to the following conditions:
|
|
||||||
*
|
|
||||||
* The above copyright notice and this permission notice shall be included in
|
|
||||||
* all copies or substantial portions of the Software.
|
|
||||||
*
|
|
||||||
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
|
||||||
* IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
|
||||||
* FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
|
|
||||||
* THE COPYRIGHT HOLDER(S) OR AUTHOR(S) BE LIABLE FOR ANY CLAIM, DAMAGES OR
|
|
||||||
* OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE,
|
|
||||||
* ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
|
|
||||||
* OTHER DEALINGS IN THE SOFTWARE.
|
|
||||||
*/
|
|
||||||
|
|
||||||
/**
|
|
||||||
|
|
||||||
Module Name:
|
|
||||||
|
|
||||||
hwserv_drv.c
|
|
||||||
|
|
||||||
Abstract:
|
|
||||||
|
|
||||||
Functions defined in the Command Decoder Specification document
|
|
||||||
|
|
||||||
Revision History:
|
|
||||||
|
|
||||||
NEG:27.09.2002 Initiated.
|
|
||||||
--*/
|
|
||||||
#include "CD_binding.h"
|
|
||||||
#include "CD_hw_services.h"
|
|
||||||
|
|
||||||
//trace settings
|
|
||||||
#if DEBUG_OUTPUT_DEVICE & 1
|
|
||||||
#define TRACE_USING_STDERR //define it to use stderr as trace output,
|
|
||||||
#endif
|
|
||||||
#if DEBUG_OUTPUT_DEVICE & 2
|
|
||||||
#define TRACE_USING_RS232
|
|
||||||
#endif
|
|
||||||
#if DEBUG_OUTPUT_DEVICE & 4
|
|
||||||
#define TRACE_USING_LPT
|
|
||||||
#endif
|
|
||||||
|
|
||||||
|
|
||||||
#if DEBUG_PARSER == 4
|
|
||||||
#define IO_TRACE //IO access trace switch, undefine it to turn off
|
|
||||||
#define PCI_TRACE //PCI access trace switch, undefine it to turn off
|
|
||||||
#define MEM_TRACE //MEM access trace switch, undefine it to turn off
|
|
||||||
#endif
|
|
||||||
|
|
||||||
UINT32 CailReadATIRegister(VOID*,UINT32);
|
|
||||||
VOID CailWriteATIRegister(VOID*,UINT32,UINT32);
|
|
||||||
VOID* CailAllocateMemory(VOID*,UINT16);
|
|
||||||
VOID CailReleaseMemory(VOID *,VOID *);
|
|
||||||
VOID CailDelayMicroSeconds(VOID *,UINT32 );
|
|
||||||
VOID CailReadPCIConfigData(VOID*,VOID*,UINT32,UINT16);
|
|
||||||
VOID CailWritePCIConfigData(VOID*,VOID*,UINT32,UINT16);
|
|
||||||
UINT32 CailReadFBData(VOID*,UINT32);
|
|
||||||
VOID CailWriteFBData(VOID*,UINT32,UINT32);
|
|
||||||
ULONG CailReadPLL(VOID *Context ,ULONG Address);
|
|
||||||
VOID CailWritePLL(VOID *Context,ULONG Address,ULONG Data);
|
|
||||||
ULONG CailReadMC(VOID *Context ,ULONG Address);
|
|
||||||
VOID CailWriteMC(VOID *Context ,ULONG Address,ULONG Data);
|
|
||||||
|
|
||||||
|
|
||||||
#if DEBUG_PARSER>0
|
|
||||||
VOID CailVideoDebugPrint(VOID*,ULONG_PTR, UINT16);
|
|
||||||
#endif
|
|
||||||
// Delay function
|
|
||||||
#if ( defined ENABLE_PARSER_DELAY || defined ENABLE_ALL_SERVICE_FUNCTIONS )
|
|
||||||
|
|
||||||
VOID DelayMilliseconds(PARSER_TEMP_DATA STACK_BASED * pWorkingTableData)
|
|
||||||
{
|
|
||||||
CailDelayMicroSeconds(pWorkingTableData->pDeviceData->CAIL,pWorkingTableData->SourceData32*1000);
|
|
||||||
}
|
|
||||||
|
|
||||||
VOID DelayMicroseconds(PARSER_TEMP_DATA STACK_BASED * pWorkingTableData)
|
|
||||||
{
|
|
||||||
CailDelayMicroSeconds(pWorkingTableData->pDeviceData->CAIL,pWorkingTableData->SourceData32);
|
|
||||||
}
|
|
||||||
#endif
|
|
||||||
|
|
||||||
VOID PostCharOutput(PARSER_TEMP_DATA STACK_BASED * pParserTempData)
|
|
||||||
{
|
|
||||||
}
|
|
||||||
|
|
||||||
VOID CallerDebugFunc(PARSER_TEMP_DATA STACK_BASED * pParserTempData)
|
|
||||||
{
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
// PCI READ Access
|
|
||||||
|
|
||||||
#if ( defined ENABLE_PARSER_PCIREAD8 || defined ENABLE_ALL_SERVICE_FUNCTIONS )
|
|
||||||
UINT8 ReadPCIReg8(PARSER_TEMP_DATA STACK_BASED * pWorkingTableData)
|
|
||||||
{
|
|
||||||
UINT8 rvl;
|
|
||||||
CailReadPCIConfigData(pWorkingTableData->pDeviceData->CAIL,&rvl,pWorkingTableData->Index,sizeof(UINT8));
|
|
||||||
return rvl;
|
|
||||||
}
|
|
||||||
#endif
|
|
||||||
|
|
||||||
|
|
||||||
#if ( defined ENABLE_PARSER_PCIREAD16 || defined ENABLE_ALL_SERVICE_FUNCTIONS )
|
|
||||||
UINT16 ReadPCIReg16(PARSER_TEMP_DATA STACK_BASED * pWorkingTableData)
|
|
||||||
{
|
|
||||||
|
|
||||||
UINT16 rvl;
|
|
||||||
CailReadPCIConfigData(pWorkingTableData->pDeviceData->CAIL,&rvl,pWorkingTableData->Index,sizeof(UINT16));
|
|
||||||
return rvl;
|
|
||||||
|
|
||||||
}
|
|
||||||
#endif
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
#if ( defined ENABLE_PARSER_PCIREAD32 || defined ENABLE_ALL_SERVICE_FUNCTIONS )
|
|
||||||
UINT32 ReadPCIReg32 (PARSER_TEMP_DATA STACK_BASED * pWorkingTableData)
|
|
||||||
{
|
|
||||||
|
|
||||||
UINT32 rvl;
|
|
||||||
CailReadPCIConfigData(pWorkingTableData->pDeviceData->CAIL,&rvl,pWorkingTableData->Index,sizeof(UINT32));
|
|
||||||
return rvl;
|
|
||||||
}
|
|
||||||
#endif
|
|
||||||
|
|
||||||
|
|
||||||
// PCI WRITE Access
|
|
||||||
|
|
||||||
#if ( defined ENABLE_PARSER_PCIWRITE8 || defined ENABLE_ALL_SERVICE_FUNCTIONS )
|
|
||||||
VOID WritePCIReg8 (PARSER_TEMP_DATA STACK_BASED * pWorkingTableData)
|
|
||||||
{
|
|
||||||
|
|
||||||
CailWritePCIConfigData(pWorkingTableData->pDeviceData->CAIL,&(pWorkingTableData->DestData32),pWorkingTableData->Index,sizeof(UINT8));
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
#endif
|
|
||||||
|
|
||||||
|
|
||||||
#if ( defined ENABLE_PARSER_PCIWRITE16 || defined ENABLE_ALL_SERVICE_FUNCTIONS )
|
|
||||||
VOID WritePCIReg16 (PARSER_TEMP_DATA STACK_BASED * pWorkingTableData)
|
|
||||||
{
|
|
||||||
|
|
||||||
CailWritePCIConfigData(pWorkingTableData->pDeviceData->CAIL,&(pWorkingTableData->DestData32),pWorkingTableData->Index,sizeof(UINT16));
|
|
||||||
}
|
|
||||||
|
|
||||||
#endif
|
|
||||||
|
|
||||||
|
|
||||||
#if ( defined ENABLE_PARSER_PCIWRITE32 || defined ENABLE_ALL_SERVICE_FUNCTIONS )
|
|
||||||
VOID WritePCIReg32 (PARSER_TEMP_DATA STACK_BASED * pWorkingTableData)
|
|
||||||
{
|
|
||||||
CailWritePCIConfigData(pWorkingTableData->pDeviceData->CAIL,&(pWorkingTableData->DestData32),pWorkingTableData->Index,sizeof(UINT32));
|
|
||||||
}
|
|
||||||
#endif
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
// System IO Access
|
|
||||||
#if ( defined ENABLE_PARSER_SYS_IOREAD8 || defined ENABLE_ALL_SERVICE_FUNCTIONS )
|
|
||||||
UINT8 ReadSysIOReg8 (PARSER_TEMP_DATA STACK_BASED * pWorkingTableData)
|
|
||||||
{
|
|
||||||
UINT8 rvl;
|
|
||||||
rvl=0;
|
|
||||||
//rvl= (UINT8) ReadGenericPciCfg(dev,reg,sizeof(UINT8));
|
|
||||||
return rvl;
|
|
||||||
}
|
|
||||||
#endif
|
|
||||||
|
|
||||||
|
|
||||||
#if ( defined ENABLE_PARSER_SYS_IOREAD16 || defined ENABLE_ALL_SERVICE_FUNCTIONS )
|
|
||||||
UINT16 ReadSysIOReg16(PARSER_TEMP_DATA STACK_BASED * pWorkingTableData)
|
|
||||||
{
|
|
||||||
|
|
||||||
UINT16 rvl;
|
|
||||||
rvl=0;
|
|
||||||
//rvl= (UINT16) ReadGenericPciCfg(dev,reg,sizeof(UINT16));
|
|
||||||
return rvl;
|
|
||||||
|
|
||||||
}
|
|
||||||
#endif
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
#if ( defined ENABLE_PARSER_SYS_IOREAD32 || defined ENABLE_ALL_SERVICE_FUNCTIONS )
|
|
||||||
UINT32 ReadSysIOReg32 (PARSER_TEMP_DATA STACK_BASED * pWorkingTableData)
|
|
||||||
{
|
|
||||||
|
|
||||||
UINT32 rvl;
|
|
||||||
rvl=0;
|
|
||||||
//rvl= (UINT32) ReadGenericPciCfg(dev,reg,sizeof(UINT32));
|
|
||||||
return rvl;
|
|
||||||
}
|
|
||||||
#endif
|
|
||||||
|
|
||||||
|
|
||||||
// PCI WRITE Access
|
|
||||||
|
|
||||||
#if ( defined ENABLE_PARSER_SYS_IOWRITE8 || defined ENABLE_ALL_SERVICE_FUNCTIONS )
|
|
||||||
VOID WriteSysIOReg8 (PARSER_TEMP_DATA STACK_BASED * pWorkingTableData)
|
|
||||||
{
|
|
||||||
|
|
||||||
//WriteGenericPciCfg(dev,reg,sizeof(UINT8),(UINT32)value);
|
|
||||||
}
|
|
||||||
|
|
||||||
#endif
|
|
||||||
|
|
||||||
|
|
||||||
#if ( defined ENABLE_PARSER_SYS_IOWRITE16 || defined ENABLE_ALL_SERVICE_FUNCTIONS )
|
|
||||||
VOID WriteSysIOReg16 (PARSER_TEMP_DATA STACK_BASED * pWorkingTableData)
|
|
||||||
{
|
|
||||||
|
|
||||||
//WriteGenericPciCfg(dev,reg,sizeof(UINT16),(UINT32)value);
|
|
||||||
}
|
|
||||||
|
|
||||||
#endif
|
|
||||||
|
|
||||||
|
|
||||||
#if ( defined ENABLE_PARSER_SYS_IOWRITE32 || defined ENABLE_ALL_SERVICE_FUNCTIONS )
|
|
||||||
VOID WriteSysIOReg32 (PARSER_TEMP_DATA STACK_BASED * pWorkingTableData)
|
|
||||||
{
|
|
||||||
//WriteGenericPciCfg(dev,reg,sizeof(UINT32),(UINT32)value);
|
|
||||||
}
|
|
||||||
#endif
|
|
||||||
|
|
||||||
// ATI Registers Memory Mapped Access
|
|
||||||
|
|
||||||
#if ( defined ENABLE_PARSER_REGISTERS_MEMORY_ACCESS || defined ENABLE_ALL_SERVICE_FUNCTIONS)
|
|
||||||
|
|
||||||
UINT32 ReadReg32 (PARSER_TEMP_DATA STACK_BASED * pWorkingTableData)
|
|
||||||
{
|
|
||||||
return CailReadATIRegister(pWorkingTableData->pDeviceData->CAIL,pWorkingTableData->Index);
|
|
||||||
}
|
|
||||||
|
|
||||||
VOID WriteReg32(PARSER_TEMP_DATA STACK_BASED * pWorkingTableData)
|
|
||||||
{
|
|
||||||
CailWriteATIRegister(pWorkingTableData->pDeviceData->CAIL,(UINT16)pWorkingTableData->Index,pWorkingTableData->DestData32 );
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
VOID ReadIndReg32 (PARSER_TEMP_DATA STACK_BASED * pWorkingTableData)
|
|
||||||
{
|
|
||||||
pWorkingTableData->IndirectData = CailReadATIRegister(pWorkingTableData->pDeviceData->CAIL,*(UINT16*)(pWorkingTableData->IndirectIOTablePointer+1));
|
|
||||||
}
|
|
||||||
|
|
||||||
VOID WriteIndReg32(PARSER_TEMP_DATA STACK_BASED * pWorkingTableData)
|
|
||||||
{
|
|
||||||
CailWriteATIRegister(pWorkingTableData->pDeviceData->CAIL,*(UINT16*)(pWorkingTableData->IndirectIOTablePointer+1),pWorkingTableData->IndirectData );
|
|
||||||
}
|
|
||||||
|
|
||||||
#endif
|
|
||||||
|
|
||||||
// ATI Registers IO Mapped Access
|
|
||||||
|
|
||||||
#if ( defined ENABLE_PARSER_REGISTERS_IO_ACCESS || defined ENABLE_ALL_SERVICE_FUNCTIONS )
|
|
||||||
UINT32 ReadRegIO (PARSER_TEMP_DATA STACK_BASED * pWorkingTableData)
|
|
||||||
{
|
|
||||||
//return CailReadATIRegister(pWorkingTableData->pDeviceData->CAIL,pWorkingTableData->Index);
|
|
||||||
return 0;
|
|
||||||
}
|
|
||||||
VOID WriteRegIO(PARSER_TEMP_DATA STACK_BASED * pWorkingTableData)
|
|
||||||
{
|
|
||||||
// return CailWriteATIRegister(pWorkingTableData->pDeviceData->CAIL,pWorkingTableData->Index,pWorkingTableData->DestData32 );
|
|
||||||
}
|
|
||||||
#endif
|
|
||||||
|
|
||||||
// access to Frame buffer, dummy function, need more information to implement it
|
|
||||||
UINT32 ReadFrameBuffer32 (PARSER_TEMP_DATA STACK_BASED * pWorkingTableData)
|
|
||||||
{
|
|
||||||
|
|
||||||
return CailReadFBData(pWorkingTableData->pDeviceData->CAIL, (pWorkingTableData->Index <<2 ));
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
VOID WriteFrameBuffer32(PARSER_TEMP_DATA STACK_BASED * pWorkingTableData)
|
|
||||||
{
|
|
||||||
CailWriteFBData(pWorkingTableData->pDeviceData->CAIL,(pWorkingTableData->Index <<2), pWorkingTableData->DestData32);
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
VOID *AllocateMemory(DEVICE_DATA *pDeviceData , UINT16 MemSize)
|
|
||||||
{
|
|
||||||
if(MemSize)
|
|
||||||
return(CailAllocateMemory(pDeviceData->CAIL,MemSize));
|
|
||||||
else
|
|
||||||
return NULL;
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
VOID ReleaseMemory(DEVICE_DATA *pDeviceData , WORKING_TABLE_DATA* pWorkingTableData)
|
|
||||||
{
|
|
||||||
if( pWorkingTableData)
|
|
||||||
CailReleaseMemory(pDeviceData->CAIL, pWorkingTableData);
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
UINT32 ReadMC32(PARSER_TEMP_DATA STACK_BASED * pWorkingTableData)
|
|
||||||
{
|
|
||||||
UINT32 ReadData;
|
|
||||||
ReadData=(UINT32)CailReadMC(pWorkingTableData->pDeviceData->CAIL,pWorkingTableData->Index);
|
|
||||||
return ReadData;
|
|
||||||
}
|
|
||||||
|
|
||||||
VOID WriteMC32(PARSER_TEMP_DATA STACK_BASED * pWorkingTableData)
|
|
||||||
{
|
|
||||||
CailWriteMC(pWorkingTableData->pDeviceData->CAIL,pWorkingTableData->Index,pWorkingTableData->DestData32);
|
|
||||||
}
|
|
||||||
|
|
||||||
UINT32 ReadPLL32(PARSER_TEMP_DATA STACK_BASED * pWorkingTableData)
|
|
||||||
{
|
|
||||||
UINT32 ReadData;
|
|
||||||
ReadData=(UINT32)CailReadPLL(pWorkingTableData->pDeviceData->CAIL,pWorkingTableData->Index);
|
|
||||||
return ReadData;
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
VOID WritePLL32(PARSER_TEMP_DATA STACK_BASED * pWorkingTableData)
|
|
||||||
{
|
|
||||||
CailWritePLL(pWorkingTableData->pDeviceData->CAIL,pWorkingTableData->Index,pWorkingTableData->DestData32);
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
#if DEBUG_PARSER>0
|
|
||||||
VOID CD_print_string (DEVICE_DATA *pDeviceData, UINT8 *str)
|
|
||||||
{
|
|
||||||
CailVideoDebugPrint( pDeviceData->CAIL, (ULONG_PTR) str, PARSER_STRINGS);
|
|
||||||
}
|
|
||||||
|
|
||||||
VOID CD_print_value (DEVICE_DATA *pDeviceData, ULONG_PTR value, UINT16 value_type )
|
|
||||||
{
|
|
||||||
CailVideoDebugPrint( pDeviceData->CAIL, (ULONG_PTR)value, value_type);
|
|
||||||
}
|
|
||||||
|
|
||||||
#endif
|
|
||||||
|
|
||||||
// EOF
|
|
||||||
@@ -1,169 +0,0 @@
|
|||||||
/*
|
|
||||||
* Copyright 2006-2007 Advanced Micro Devices, Inc.
|
|
||||||
*
|
|
||||||
* Permission is hereby granted, free of charge, to any person obtaining a
|
|
||||||
* copy of this software and associated documentation files (the "Software"),
|
|
||||||
* to deal in the Software without restriction, including without limitation
|
|
||||||
* the rights to use, copy, modify, merge, publish, distribute, sublicense,
|
|
||||||
* and/or sell copies of the Software, and to permit persons to whom the
|
|
||||||
* Software is furnished to do so, subject to the following conditions:
|
|
||||||
*
|
|
||||||
* The above copyright notice and this permission notice shall be included in
|
|
||||||
* all copies or substantial portions of the Software.
|
|
||||||
*
|
|
||||||
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
|
||||||
* IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
|
||||||
* FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
|
|
||||||
* THE COPYRIGHT HOLDER(S) OR AUTHOR(S) BE LIABLE FOR ANY CLAIM, DAMAGES OR
|
|
||||||
* OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE,
|
|
||||||
* ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
|
|
||||||
* OTHER DEALINGS IN THE SOFTWARE.
|
|
||||||
*/
|
|
||||||
|
|
||||||
/*++
|
|
||||||
|
|
||||||
Module Name:
|
|
||||||
|
|
||||||
CD_Common_Types.h
|
|
||||||
|
|
||||||
Abstract:
|
|
||||||
|
|
||||||
Defines common data types to use across platforms/SW components
|
|
||||||
|
|
||||||
Revision History:
|
|
||||||
|
|
||||||
NEG:17.09.2002 Initiated.
|
|
||||||
--*/
|
|
||||||
#ifndef _COMMON_TYPES_H_
|
|
||||||
#define _COMMON_TYPES_H_
|
|
||||||
|
|
||||||
// HAIKU_ADDITION START IF
|
|
||||||
#if defined(__HAIKU__)
|
|
||||||
#include <stdint.h>
|
|
||||||
#else
|
|
||||||
#ifndef LINUX
|
|
||||||
#if _MSC_EXTENSIONS
|
|
||||||
|
|
||||||
//
|
|
||||||
// use Microsoft* C complier dependent interger width types
|
|
||||||
//
|
|
||||||
// typedef unsigned __int64 uint64_t;
|
|
||||||
// typedef __int64 int64_t;
|
|
||||||
typedef unsigned __int32 uint32_t;
|
|
||||||
typedef __int32 int32_t;
|
|
||||||
#elif defined (__linux__) || defined (__NetBSD__) \
|
|
||||||
|| defined(__sun) || defined(__OpenBSD__) \
|
|
||||||
|| defined (__FreeBSD__) || defined(__DragonFly__) || defined(__GLIBC__)
|
|
||||||
typedef unsigned int uint32_t;
|
|
||||||
typedef int int32_t;
|
|
||||||
#else
|
|
||||||
typedef unsigned long uint32_t;
|
|
||||||
typedef signed long int32_t;
|
|
||||||
#endif
|
|
||||||
typedef unsigned char uint8_t;
|
|
||||||
#if (defined(__sun) && defined(_CHAR_IS_SIGNED))
|
|
||||||
typedef char int8_t;
|
|
||||||
#else
|
|
||||||
typedef signed char int8_t;
|
|
||||||
#endif
|
|
||||||
typedef unsigned short uint16_t;
|
|
||||||
typedef signed short int16_t;
|
|
||||||
#endif
|
|
||||||
|
|
||||||
#endif
|
|
||||||
// HAIKU_ADDITION ENDIF
|
|
||||||
|
|
||||||
#ifndef UEFI_BUILD
|
|
||||||
typedef signed int intn_t;
|
|
||||||
typedef unsigned int uintn_t;
|
|
||||||
#else
|
|
||||||
#ifndef EFIX64
|
|
||||||
typedef signed int intn_t;
|
|
||||||
typedef unsigned int uintn_t;
|
|
||||||
#endif
|
|
||||||
#endif
|
|
||||||
// HAIKU_ADDITION prevent silly Werror
|
|
||||||
#if 0
|
|
||||||
#ifndef FGL_LINUX
|
|
||||||
#pragma warning ( disable : 4142 )
|
|
||||||
#endif
|
|
||||||
#endif
|
|
||||||
|
|
||||||
|
|
||||||
#ifndef VOID
|
|
||||||
typedef void VOID;
|
|
||||||
#endif
|
|
||||||
#ifndef UEFI_BUILD
|
|
||||||
typedef intn_t INTN;
|
|
||||||
typedef uintn_t UINTN;
|
|
||||||
#else
|
|
||||||
#ifndef EFIX64
|
|
||||||
typedef intn_t INTN;
|
|
||||||
typedef uintn_t UINTN;
|
|
||||||
#endif
|
|
||||||
#endif
|
|
||||||
#ifndef BOOLEAN
|
|
||||||
typedef uint8_t BOOLEAN;
|
|
||||||
#endif
|
|
||||||
#ifndef INT8
|
|
||||||
typedef int8_t INT8;
|
|
||||||
#endif
|
|
||||||
#ifndef UINT8
|
|
||||||
typedef uint8_t UINT8;
|
|
||||||
#endif
|
|
||||||
#ifndef INT16
|
|
||||||
typedef int16_t INT16;
|
|
||||||
#endif
|
|
||||||
#ifndef UINT16
|
|
||||||
typedef uint16_t UINT16;
|
|
||||||
#endif
|
|
||||||
#ifndef INT32
|
|
||||||
typedef int32_t INT32;
|
|
||||||
#endif
|
|
||||||
#ifndef UINT32
|
|
||||||
typedef uint32_t UINT32;
|
|
||||||
#endif
|
|
||||||
//typedef int64_t INT64;
|
|
||||||
//typedef uint64_t UINT64;
|
|
||||||
typedef uint8_t CHAR8;
|
|
||||||
typedef uint16_t CHAR16;
|
|
||||||
#ifndef USHORT
|
|
||||||
typedef UINT16 USHORT;
|
|
||||||
#endif
|
|
||||||
#ifndef UCHAR
|
|
||||||
typedef UINT8 UCHAR;
|
|
||||||
#endif
|
|
||||||
#ifndef ULONG
|
|
||||||
typedef UINT32 ULONG;
|
|
||||||
#endif
|
|
||||||
|
|
||||||
#ifndef _WIN64
|
|
||||||
#ifndef ULONG_PTR
|
|
||||||
typedef unsigned long ULONG_PTR;
|
|
||||||
#endif // ULONG_PTR
|
|
||||||
#endif // _WIN64
|
|
||||||
|
|
||||||
//#define FAR __far
|
|
||||||
#ifndef TRUE
|
|
||||||
#define TRUE ((BOOLEAN) 1 == 1)
|
|
||||||
#endif
|
|
||||||
|
|
||||||
#ifndef FALSE
|
|
||||||
#define FALSE ((BOOLEAN) 0 == 1)
|
|
||||||
#endif
|
|
||||||
|
|
||||||
#ifndef NULL
|
|
||||||
#define NULL ((VOID *) 0)
|
|
||||||
#endif
|
|
||||||
|
|
||||||
//typedef UINTN CD_STATUS;
|
|
||||||
|
|
||||||
// HAIKU_ADDITION prevent silly Werror
|
|
||||||
#if 0
|
|
||||||
#ifndef FGL_LINUX
|
|
||||||
#pragma warning ( default : 4142 )
|
|
||||||
#endif
|
|
||||||
#endif
|
|
||||||
#endif // _COMMON_TYPES_H_
|
|
||||||
|
|
||||||
// EOF
|
|
||||||
@@ -1,181 +0,0 @@
|
|||||||
/*
|
|
||||||
* Copyright 2006-2007 Advanced Micro Devices, Inc.
|
|
||||||
*
|
|
||||||
* Permission is hereby granted, free of charge, to any person obtaining a
|
|
||||||
* copy of this software and associated documentation files (the "Software"),
|
|
||||||
* to deal in the Software without restriction, including without limitation
|
|
||||||
* the rights to use, copy, modify, merge, publish, distribute, sublicense,
|
|
||||||
* and/or sell copies of the Software, and to permit persons to whom the
|
|
||||||
* Software is furnished to do so, subject to the following conditions:
|
|
||||||
*
|
|
||||||
* The above copyright notice and this permission notice shall be included in
|
|
||||||
* all copies or substantial portions of the Software.
|
|
||||||
*
|
|
||||||
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
|
||||||
* IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
|
||||||
* FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
|
|
||||||
* THE COPYRIGHT HOLDER(S) OR AUTHOR(S) BE LIABLE FOR ANY CLAIM, DAMAGES OR
|
|
||||||
* OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE,
|
|
||||||
* ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
|
|
||||||
* OTHER DEALINGS IN THE SOFTWARE.
|
|
||||||
*/
|
|
||||||
|
|
||||||
/*++
|
|
||||||
|
|
||||||
Module Name:
|
|
||||||
|
|
||||||
CD_OPCODEs.h
|
|
||||||
|
|
||||||
Abstract:
|
|
||||||
|
|
||||||
Defines Command Decoder OPCODEs
|
|
||||||
|
|
||||||
Revision History:
|
|
||||||
|
|
||||||
NEG:24.09.2002 Initiated.
|
|
||||||
--*/
|
|
||||||
#ifndef _CD_OPCODES_H_
|
|
||||||
#define _CD_OPCODES_H_
|
|
||||||
|
|
||||||
typedef enum _OPCODE {
|
|
||||||
Reserved_00= 0, // 0 = 0x00
|
|
||||||
// MOVE_ group
|
|
||||||
MOVE_REG_OPCODE, // 1 = 0x01
|
|
||||||
FirstValidCommand=MOVE_REG_OPCODE,
|
|
||||||
MOVE_PS_OPCODE, // 2 = 0x02
|
|
||||||
MOVE_WS_OPCODE, // 3 = 0x03
|
|
||||||
MOVE_FB_OPCODE, // 4 = 0x04
|
|
||||||
MOVE_PLL_OPCODE, // 5 = 0x05
|
|
||||||
MOVE_MC_OPCODE, // 6 = 0x06
|
|
||||||
// Logic group
|
|
||||||
AND_REG_OPCODE, // 7 = 0x07
|
|
||||||
AND_PS_OPCODE, // 8 = 0x08
|
|
||||||
AND_WS_OPCODE, // 9 = 0x09
|
|
||||||
AND_FB_OPCODE, // 10 = 0x0A
|
|
||||||
AND_PLL_OPCODE, // 11 = 0x0B
|
|
||||||
AND_MC_OPCODE, // 12 = 0x0C
|
|
||||||
OR_REG_OPCODE, // 13 = 0x0D
|
|
||||||
OR_PS_OPCODE, // 14 = 0x0E
|
|
||||||
OR_WS_OPCODE, // 15 = 0x0F
|
|
||||||
OR_FB_OPCODE, // 16 = 0x10
|
|
||||||
OR_PLL_OPCODE, // 17 = 0x11
|
|
||||||
OR_MC_OPCODE, // 18 = 0x12
|
|
||||||
SHIFT_LEFT_REG_OPCODE, // 19 = 0x13
|
|
||||||
SHIFT_LEFT_PS_OPCODE, // 20 = 0x14
|
|
||||||
SHIFT_LEFT_WS_OPCODE, // 21 = 0x15
|
|
||||||
SHIFT_LEFT_FB_OPCODE, // 22 = 0x16
|
|
||||||
SHIFT_LEFT_PLL_OPCODE, // 23 = 0x17
|
|
||||||
SHIFT_LEFT_MC_OPCODE, // 24 = 0x18
|
|
||||||
SHIFT_RIGHT_REG_OPCODE, // 25 = 0x19
|
|
||||||
SHIFT_RIGHT_PS_OPCODE, // 26 = 0x1A
|
|
||||||
SHIFT_RIGHT_WS_OPCODE, // 27 = 0x1B
|
|
||||||
SHIFT_RIGHT_FB_OPCODE, // 28 = 0x1C
|
|
||||||
SHIFT_RIGHT_PLL_OPCODE, // 29 = 0x1D
|
|
||||||
SHIFT_RIGHT_MC_OPCODE, // 30 = 0x1E
|
|
||||||
// Arithmetic group
|
|
||||||
MUL_REG_OPCODE, // 31 = 0x1F
|
|
||||||
MUL_PS_OPCODE, // 32 = 0x20
|
|
||||||
MUL_WS_OPCODE, // 33 = 0x21
|
|
||||||
MUL_FB_OPCODE, // 34 = 0x22
|
|
||||||
MUL_PLL_OPCODE, // 35 = 0x23
|
|
||||||
MUL_MC_OPCODE, // 36 = 0x24
|
|
||||||
DIV_REG_OPCODE, // 37 = 0x25
|
|
||||||
DIV_PS_OPCODE, // 38 = 0x26
|
|
||||||
DIV_WS_OPCODE, // 39 = 0x27
|
|
||||||
DIV_FB_OPCODE, // 40 = 0x28
|
|
||||||
DIV_PLL_OPCODE, // 41 = 0x29
|
|
||||||
DIV_MC_OPCODE, // 42 = 0x2A
|
|
||||||
ADD_REG_OPCODE, // 43 = 0x2B
|
|
||||||
ADD_PS_OPCODE, // 44 = 0x2C
|
|
||||||
ADD_WS_OPCODE, // 45 = 0x2D
|
|
||||||
ADD_FB_OPCODE, // 46 = 0x2E
|
|
||||||
ADD_PLL_OPCODE, // 47 = 0x2F
|
|
||||||
ADD_MC_OPCODE, // 48 = 0x30
|
|
||||||
SUB_REG_OPCODE, // 49 = 0x31
|
|
||||||
SUB_PS_OPCODE, // 50 = 0x32
|
|
||||||
SUB_WS_OPCODE, // 51 = 0x33
|
|
||||||
SUB_FB_OPCODE, // 52 = 0x34
|
|
||||||
SUB_PLL_OPCODE, // 53 = 0x35
|
|
||||||
SUB_MC_OPCODE, // 54 = 0x36
|
|
||||||
// Control grouop
|
|
||||||
SET_ATI_PORT_OPCODE, // 55 = 0x37
|
|
||||||
SET_PCI_PORT_OPCODE, // 56 = 0x38
|
|
||||||
SET_SYS_IO_PORT_OPCODE, // 57 = 0x39
|
|
||||||
SET_REG_BLOCK_OPCODE, // 58 = 0x3A
|
|
||||||
SET_FB_BASE_OPCODE, // 59 = 0x3B
|
|
||||||
COMPARE_REG_OPCODE, // 60 = 0x3C
|
|
||||||
COMPARE_PS_OPCODE, // 61 = 0x3D
|
|
||||||
COMPARE_WS_OPCODE, // 62 = 0x3E
|
|
||||||
COMPARE_FB_OPCODE, // 63 = 0x3F
|
|
||||||
COMPARE_PLL_OPCODE, // 64 = 0x40
|
|
||||||
COMPARE_MC_OPCODE, // 65 = 0x41
|
|
||||||
SWITCH_OPCODE, // 66 = 0x42
|
|
||||||
JUMP__OPCODE, // 67 = 0x43
|
|
||||||
JUMP_EQUAL_OPCODE, // 68 = 0x44
|
|
||||||
JUMP_BELOW_OPCODE, // 69 = 0x45
|
|
||||||
JUMP_ABOVE_OPCODE, // 70 = 0x46
|
|
||||||
JUMP_BELOW_OR_EQUAL_OPCODE, // 71 = 0x47
|
|
||||||
JUMP_ABOVE_OR_EQUAL_OPCODE, // 72 = 0x48
|
|
||||||
JUMP_NOT_EQUAL_OPCODE, // 73 = 0x49
|
|
||||||
TEST_REG_OPCODE, // 74 = 0x4A
|
|
||||||
TEST_PS_OPCODE, // 75 = 0x4B
|
|
||||||
TEST_WS_OPCODE, // 76 = 0x4C
|
|
||||||
TEST_FB_OPCODE, // 77 = 0x4D
|
|
||||||
TEST_PLL_OPCODE, // 78 = 0x4E
|
|
||||||
TEST_MC_OPCODE, // 79 = 0x4F
|
|
||||||
DELAY_MILLISEC_OPCODE, // 80 = 0x50
|
|
||||||
DELAY_MICROSEC_OPCODE, // 81 = 0x51
|
|
||||||
CALL_TABLE_OPCODE, // 82 = 0x52
|
|
||||||
REPEAT_OPCODE, // 83 = 0x53
|
|
||||||
// Miscellaneous group
|
|
||||||
CLEAR_REG_OPCODE, // 84 = 0x54
|
|
||||||
CLEAR_PS_OPCODE, // 85 = 0x55
|
|
||||||
CLEAR_WS_OPCODE, // 86 = 0x56
|
|
||||||
CLEAR_FB_OPCODE, // 87 = 0x57
|
|
||||||
CLEAR_PLL_OPCODE, // 88 = 0x58
|
|
||||||
CLEAR_MC_OPCODE, // 89 = 0x59
|
|
||||||
NOP_OPCODE, // 90 = 0x5A
|
|
||||||
EOT_OPCODE, // 91 = 0x5B
|
|
||||||
MASK_REG_OPCODE, // 92 = 0x5C
|
|
||||||
MASK_PS_OPCODE, // 93 = 0x5D
|
|
||||||
MASK_WS_OPCODE, // 94 = 0x5E
|
|
||||||
MASK_FB_OPCODE, // 95 = 0x5F
|
|
||||||
MASK_PLL_OPCODE, // 96 = 0x60
|
|
||||||
MASK_MC_OPCODE, // 97 = 0x61
|
|
||||||
// BIOS dedicated group
|
|
||||||
POST_CARD_OPCODE, // 98 = 0x62
|
|
||||||
BEEP_OPCODE, // 99 = 0x63
|
|
||||||
SAVE_REG_OPCODE, // 100 = 0x64
|
|
||||||
RESTORE_REG_OPCODE, // 101 = 0x65
|
|
||||||
SET_DATA_BLOCK_OPCODE, // 102 = 0x66
|
|
||||||
|
|
||||||
XOR_REG_OPCODE, // 103 = 0x67
|
|
||||||
XOR_PS_OPCODE, // 104 = 0x68
|
|
||||||
XOR_WS_OPCODE, // 105 = 0x69
|
|
||||||
XOR_FB_OPCODE, // 106 = 0x6a
|
|
||||||
XOR_PLL_OPCODE, // 107 = 0x6b
|
|
||||||
XOR_MC_OPCODE, // 108 = 0x6c
|
|
||||||
|
|
||||||
SHL_REG_OPCODE, // 109 = 0x6d
|
|
||||||
SHL_PS_OPCODE, // 110 = 0x6e
|
|
||||||
SHL_WS_OPCODE, // 111 = 0x6f
|
|
||||||
SHL_FB_OPCODE, // 112 = 0x70
|
|
||||||
SHL_PLL_OPCODE, // 113 = 0x71
|
|
||||||
SHL_MC_OPCODE, // 114 = 0x72
|
|
||||||
|
|
||||||
SHR_REG_OPCODE, // 115 = 0x73
|
|
||||||
SHR_PS_OPCODE, // 116 = 0x74
|
|
||||||
SHR_WS_OPCODE, // 117 = 0x75
|
|
||||||
SHR_FB_OPCODE, // 118 = 0x76
|
|
||||||
SHR_PLL_OPCODE, // 119 = 0x77
|
|
||||||
SHR_MC_OPCODE, // 120 = 0x78
|
|
||||||
|
|
||||||
DEBUG_OPCODE, // 121 = 0x79
|
|
||||||
CTB_DS_OPCODE, // 122 = 0x7A
|
|
||||||
|
|
||||||
LastValidCommand = CTB_DS_OPCODE,
|
|
||||||
// Extension specificaTOR
|
|
||||||
Extension = 0x80, // 128 = 0x80 // Next byte is an OPCODE as well
|
|
||||||
Reserved_FF = 255 // 255 = 0xFF
|
|
||||||
}OPCODE;
|
|
||||||
#endif // _CD_OPCODES_H_
|
|
||||||
@@ -1,464 +0,0 @@
|
|||||||
/*
|
|
||||||
* Copyright 2006-2007 Advanced Micro Devices, Inc.
|
|
||||||
*
|
|
||||||
* Permission is hereby granted, free of charge, to any person obtaining a
|
|
||||||
* copy of this software and associated documentation files (the "Software"),
|
|
||||||
* to deal in the Software without restriction, including without limitation
|
|
||||||
* the rights to use, copy, modify, merge, publish, distribute, sublicense,
|
|
||||||
* and/or sell copies of the Software, and to permit persons to whom the
|
|
||||||
* Software is furnished to do so, subject to the following conditions:
|
|
||||||
*
|
|
||||||
* The above copyright notice and this permission notice shall be included in
|
|
||||||
* all copies or substantial portions of the Software.
|
|
||||||
*
|
|
||||||
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
|
||||||
* IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
|
||||||
* FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
|
|
||||||
* THE COPYRIGHT HOLDER(S) OR AUTHOR(S) BE LIABLE FOR ANY CLAIM, DAMAGES OR
|
|
||||||
* OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE,
|
|
||||||
* ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
|
|
||||||
* OTHER DEALINGS IN THE SOFTWARE.
|
|
||||||
*/
|
|
||||||
|
|
||||||
/*++
|
|
||||||
|
|
||||||
Module Name:
|
|
||||||
|
|
||||||
CD_Struct.h
|
|
||||||
|
|
||||||
Abstract:
|
|
||||||
|
|
||||||
Defines Script Language commands
|
|
||||||
|
|
||||||
Revision History:
|
|
||||||
|
|
||||||
NEG:26.08.2002 Initiated.
|
|
||||||
--*/
|
|
||||||
|
|
||||||
#include "CD_binding.h"
|
|
||||||
#ifndef _CD_STRUCTS_H_
|
|
||||||
#define _CD_STRUCTS_H_
|
|
||||||
|
|
||||||
#ifdef UEFI_BUILD
|
|
||||||
typedef UINT16** PTABLE_UNIT_TYPE;
|
|
||||||
typedef UINTN TABLE_UNIT_TYPE;
|
|
||||||
#else
|
|
||||||
typedef UINT16* PTABLE_UNIT_TYPE;
|
|
||||||
typedef UINT16 TABLE_UNIT_TYPE;
|
|
||||||
#endif
|
|
||||||
|
|
||||||
#include "regsdef.h" //This important file is dynamically generated based on the ASIC!!!!
|
|
||||||
|
|
||||||
#define PARSER_MAJOR_REVISION 5
|
|
||||||
#define PARSER_MINOR_REVISION 0
|
|
||||||
|
|
||||||
//#include "atombios.h"
|
|
||||||
#if (PARSER_TYPE==DRIVER_TYPE_PARSER) && !defined(__HAIKU__)
|
|
||||||
#ifdef FGL_LINUX
|
|
||||||
#pragma pack(push,1)
|
|
||||||
#else
|
|
||||||
#pragma pack(push)
|
|
||||||
#pragma pack(1)
|
|
||||||
#endif
|
|
||||||
#endif
|
|
||||||
|
|
||||||
#include "CD_Common_Types.h"
|
|
||||||
#include "CD_Opcodes.h"
|
|
||||||
typedef UINT16 WORK_SPACE_SIZE;
|
|
||||||
typedef enum _CD_STATUS{
|
|
||||||
CD_SUCCESS,
|
|
||||||
CD_CALL_TABLE,
|
|
||||||
CD_COMPLETED=0x10,
|
|
||||||
CD_GENERAL_ERROR=0x80,
|
|
||||||
CD_INVALID_OPCODE,
|
|
||||||
CD_NOT_IMPLEMENTED,
|
|
||||||
CD_EXEC_TABLE_NOT_FOUND,
|
|
||||||
CD_EXEC_PARAMETER_ERROR,
|
|
||||||
CD_EXEC_PARSER_ERROR,
|
|
||||||
CD_INVALID_DESTINATION_TYPE,
|
|
||||||
CD_UNEXPECTED_BEHAVIOR,
|
|
||||||
CD_INVALID_SWITCH_OPERAND_SIZE
|
|
||||||
}CD_STATUS;
|
|
||||||
|
|
||||||
#define PARSER_STRINGS 0
|
|
||||||
#define PARSER_DEC 1
|
|
||||||
#define PARSER_HEX 2
|
|
||||||
|
|
||||||
#define DB_CURRENT_COMMAND_TABLE 0xFF
|
|
||||||
|
|
||||||
#define TABLE_FORMAT_BIOS 0
|
|
||||||
#define TABLE_FORMAT_EASF 1
|
|
||||||
|
|
||||||
#define EASF_TABLE_INDEX_MASK 0xfc
|
|
||||||
#define EASF_TABLE_ATTR_MASK 0x03
|
|
||||||
|
|
||||||
#define CD_ERROR(a) (((INTN) (a)) > CD_COMPLETED)
|
|
||||||
#define CD_ERROR_OR_COMPLETED(a) (((INTN) (a)) > CD_SUCCESS)
|
|
||||||
|
|
||||||
|
|
||||||
#if (BIOS_PARSER==1)
|
|
||||||
#ifdef _H2INC
|
|
||||||
#define STACK_BASED
|
|
||||||
#else
|
|
||||||
extern __segment farstack;
|
|
||||||
#define STACK_BASED __based(farstack)
|
|
||||||
#endif
|
|
||||||
#else
|
|
||||||
#define STACK_BASED
|
|
||||||
#endif
|
|
||||||
|
|
||||||
typedef enum _COMPARE_FLAGS{
|
|
||||||
Below,
|
|
||||||
Equal,
|
|
||||||
Above,
|
|
||||||
NotEqual,
|
|
||||||
Overflow,
|
|
||||||
NoCondition
|
|
||||||
}COMPARE_FLAGS;
|
|
||||||
|
|
||||||
typedef UINT16 IO_BASE_ADDR;
|
|
||||||
|
|
||||||
typedef struct _BUS_DEV_FUNC_PCI_ADDR{
|
|
||||||
UINT8 Register;
|
|
||||||
UINT8 Function;
|
|
||||||
UINT8 Device;
|
|
||||||
UINT8 Bus;
|
|
||||||
} BUS_DEV_FUNC_PCI_ADDR;
|
|
||||||
|
|
||||||
typedef struct _BUS_DEV_FUNC{
|
|
||||||
UINT8 Function : 3;
|
|
||||||
UINT8 Device : 5;
|
|
||||||
UINT8 Bus;
|
|
||||||
} BUS_DEV_FUNC;
|
|
||||||
|
|
||||||
#ifndef UEFI_BUILD
|
|
||||||
typedef struct _PCI_CONFIG_ACCESS_CF8{
|
|
||||||
UINT32 Reg : 8;
|
|
||||||
UINT32 Func : 3;
|
|
||||||
UINT32 Dev : 5;
|
|
||||||
UINT32 Bus : 8;
|
|
||||||
UINT32 Reserved: 7;
|
|
||||||
UINT32 Enable : 1;
|
|
||||||
} PCI_CONFIG_ACCESS_CF8;
|
|
||||||
#endif
|
|
||||||
|
|
||||||
typedef enum _MEM_RESOURCE {
|
|
||||||
Stack_Resource,
|
|
||||||
FrameBuffer_Resource,
|
|
||||||
BIOS_Image_Resource
|
|
||||||
}MEM_RESOURCE;
|
|
||||||
|
|
||||||
typedef enum _PORTS{
|
|
||||||
ATI_RegsPort,
|
|
||||||
PCI_Port,
|
|
||||||
SystemIO_Port
|
|
||||||
}PORTS;
|
|
||||||
|
|
||||||
typedef enum _OPERAND_TYPE {
|
|
||||||
typeRegister,
|
|
||||||
typeParamSpace,
|
|
||||||
typeWorkSpace,
|
|
||||||
typeFrameBuffer,
|
|
||||||
typeIndirect,
|
|
||||||
typeDirect,
|
|
||||||
typePLL,
|
|
||||||
typeMC
|
|
||||||
}OPERAND_TYPE;
|
|
||||||
|
|
||||||
typedef enum _DESTINATION_OPERAND_TYPE {
|
|
||||||
destRegister,
|
|
||||||
destParamSpace,
|
|
||||||
destWorkSpace,
|
|
||||||
destFrameBuffer,
|
|
||||||
destPLL,
|
|
||||||
destMC
|
|
||||||
}DESTINATION_OPERAND_TYPE;
|
|
||||||
|
|
||||||
typedef enum _SOURCE_OPERAND_TYPE {
|
|
||||||
sourceRegister,
|
|
||||||
sourceParamSpace,
|
|
||||||
sourceWorkSpace,
|
|
||||||
sourceFrameBuffer,
|
|
||||||
sourceIndirect,
|
|
||||||
sourceDirect,
|
|
||||||
sourcePLL,
|
|
||||||
sourceMC
|
|
||||||
}SOURCE_OPERAND_TYPE;
|
|
||||||
|
|
||||||
typedef enum _ALIGNMENT_TYPE {
|
|
||||||
alignmentDword,
|
|
||||||
alignmentLowerWord,
|
|
||||||
alignmentMiddleWord,
|
|
||||||
alignmentUpperWord,
|
|
||||||
alignmentByte0,
|
|
||||||
alignmentByte1,
|
|
||||||
alignmentByte2,
|
|
||||||
alignmentByte3
|
|
||||||
}ALIGNMENT_TYPE;
|
|
||||||
|
|
||||||
|
|
||||||
#define INDIRECT_IO_READ 0
|
|
||||||
#define INDIRECT_IO_WRITE 0x80
|
|
||||||
#define INDIRECT_IO_MM 0
|
|
||||||
#define INDIRECT_IO_PLL 1
|
|
||||||
#define INDIRECT_IO_MC 2
|
|
||||||
|
|
||||||
typedef struct _PARAMETERS_TYPE{
|
|
||||||
UINT8 Destination;
|
|
||||||
UINT8 Source;
|
|
||||||
}PARAMETERS_TYPE;
|
|
||||||
/* The following structures don't used to allocate any type of objects(variables).
|
|
||||||
they are serve the only purpose: Get proper access to data(commands), found in the tables*/
|
|
||||||
typedef struct _PA_BYTE_BYTE{
|
|
||||||
UINT8 PA_Destination;
|
|
||||||
UINT8 PA_Source;
|
|
||||||
UINT8 PA_Padding[8];
|
|
||||||
}PA_BYTE_BYTE;
|
|
||||||
typedef struct _PA_BYTE_WORD{
|
|
||||||
UINT8 PA_Destination;
|
|
||||||
UINT16 PA_Source;
|
|
||||||
UINT8 PA_Padding[7];
|
|
||||||
}PA_BYTE_WORD;
|
|
||||||
typedef struct _PA_BYTE_DWORD{
|
|
||||||
UINT8 PA_Destination;
|
|
||||||
UINT32 PA_Source;
|
|
||||||
UINT8 PA_Padding[5];
|
|
||||||
}PA_BYTE_DWORD;
|
|
||||||
typedef struct _PA_WORD_BYTE{
|
|
||||||
UINT16 PA_Destination;
|
|
||||||
UINT8 PA_Source;
|
|
||||||
UINT8 PA_Padding[7];
|
|
||||||
}PA_WORD_BYTE;
|
|
||||||
typedef struct _PA_WORD_WORD{
|
|
||||||
UINT16 PA_Destination;
|
|
||||||
UINT16 PA_Source;
|
|
||||||
UINT8 PA_Padding[6];
|
|
||||||
}PA_WORD_WORD;
|
|
||||||
typedef struct _PA_WORD_DWORD{
|
|
||||||
UINT16 PA_Destination;
|
|
||||||
UINT32 PA_Source;
|
|
||||||
UINT8 PA_Padding[4];
|
|
||||||
}PA_WORD_DWORD;
|
|
||||||
typedef struct _PA_WORD_XX{
|
|
||||||
UINT16 PA_Destination;
|
|
||||||
UINT8 PA_Padding[8];
|
|
||||||
}PA_WORD_XX;
|
|
||||||
typedef struct _PA_BYTE_XX{
|
|
||||||
UINT8 PA_Destination;
|
|
||||||
UINT8 PA_Padding[9];
|
|
||||||
}PA_BYTE_XX;
|
|
||||||
/*The following 6 definitions used for Mask operation*/
|
|
||||||
typedef struct _PA_BYTE_BYTE_BYTE{
|
|
||||||
UINT8 PA_Destination;
|
|
||||||
UINT8 PA_AndMaskByte;
|
|
||||||
UINT8 PA_OrMaskByte;
|
|
||||||
UINT8 PA_Padding[7];
|
|
||||||
}PA_BYTE_BYTE_BYTE;
|
|
||||||
typedef struct _PA_BYTE_WORD_WORD{
|
|
||||||
UINT8 PA_Destination;
|
|
||||||
UINT16 PA_AndMaskWord;
|
|
||||||
UINT16 PA_OrMaskWord;
|
|
||||||
UINT8 PA_Padding[5];
|
|
||||||
}PA_BYTE_WORD_WORD;
|
|
||||||
typedef struct _PA_BYTE_DWORD_DWORD{
|
|
||||||
UINT8 PA_Destination;
|
|
||||||
UINT32 PA_AndMaskDword;
|
|
||||||
UINT32 PA_OrMaskDword;
|
|
||||||
UINT8 PA_Padding;
|
|
||||||
}PA_BYTE_DWORD_DWORD;
|
|
||||||
typedef struct _PA_WORD_BYTE_BYTE{
|
|
||||||
UINT16 PA_Destination;
|
|
||||||
UINT8 PA_AndMaskByte;
|
|
||||||
UINT8 PA_OrMaskByte;
|
|
||||||
UINT8 PA_Padding[6];
|
|
||||||
}PA_WORD_BYTE_BYTE;
|
|
||||||
typedef struct _PA_WORD_WORD_WORD{
|
|
||||||
UINT16 PA_Destination;
|
|
||||||
UINT16 PA_AndMaskWord;
|
|
||||||
UINT16 PA_OrMaskWord;
|
|
||||||
UINT8 PA_Padding[4];
|
|
||||||
}PA_WORD_WORD_WORD;
|
|
||||||
typedef struct _PA_WORD_DWORD_DWORD{
|
|
||||||
UINT16 PA_Destination;
|
|
||||||
UINT32 PA_AndMaskDword;
|
|
||||||
UINT32 PA_OrMaskDword;
|
|
||||||
}PA_WORD_DWORD_DWORD;
|
|
||||||
|
|
||||||
|
|
||||||
typedef union _PARAMETER_ACCESS {
|
|
||||||
PA_BYTE_XX ByteXX;
|
|
||||||
PA_BYTE_BYTE ByteByte;
|
|
||||||
PA_BYTE_WORD ByteWord;
|
|
||||||
PA_BYTE_DWORD ByteDword;
|
|
||||||
PA_WORD_BYTE WordByte;
|
|
||||||
PA_WORD_WORD WordWord;
|
|
||||||
PA_WORD_DWORD WordDword;
|
|
||||||
PA_WORD_XX WordXX;
|
|
||||||
/*The following 6 definitions used for Mask operation*/
|
|
||||||
PA_BYTE_BYTE_BYTE ByteByteAndByteOr;
|
|
||||||
PA_BYTE_WORD_WORD ByteWordAndWordOr;
|
|
||||||
PA_BYTE_DWORD_DWORD ByteDwordAndDwordOr;
|
|
||||||
PA_WORD_BYTE_BYTE WordByteAndByteOr;
|
|
||||||
PA_WORD_WORD_WORD WordWordAndWordOr;
|
|
||||||
PA_WORD_DWORD_DWORD WordDwordAndDwordOr;
|
|
||||||
}PARAMETER_ACCESS;
|
|
||||||
|
|
||||||
typedef struct _COMMAND_ATTRIBUTE {
|
|
||||||
UINT8 Source:3;
|
|
||||||
UINT8 SourceAlignment:3;
|
|
||||||
UINT8 DestinationAlignment:2;
|
|
||||||
}COMMAND_ATTRIBUTE;
|
|
||||||
|
|
||||||
typedef struct _SOURCE_DESTINATION_ALIGNMENT{
|
|
||||||
UINT8 DestAlignment;
|
|
||||||
UINT8 SrcAlignment;
|
|
||||||
}SOURCE_DESTINATION_ALIGNMENT;
|
|
||||||
typedef struct _MULTIPLICATION_RESULT{
|
|
||||||
UINT32 Low32Bit;
|
|
||||||
UINT32 High32Bit;
|
|
||||||
}MULTIPLICATION_RESULT;
|
|
||||||
typedef struct _DIVISION_RESULT{
|
|
||||||
UINT32 Quotient32;
|
|
||||||
UINT32 Reminder32;
|
|
||||||
}DIVISION_RESULT;
|
|
||||||
typedef union _DIVISION_MULTIPLICATION_RESULT{
|
|
||||||
MULTIPLICATION_RESULT Multiplication;
|
|
||||||
DIVISION_RESULT Division;
|
|
||||||
}DIVISION_MULTIPLICATION_RESULT;
|
|
||||||
typedef struct _COMMAND_HEADER {
|
|
||||||
UINT8 Opcode;
|
|
||||||
COMMAND_ATTRIBUTE Attribute;
|
|
||||||
}COMMAND_HEADER;
|
|
||||||
|
|
||||||
typedef struct _GENERIC_ATTRIBUTE_COMMAND{
|
|
||||||
COMMAND_HEADER Header;
|
|
||||||
PARAMETER_ACCESS Parameters;
|
|
||||||
} GENERIC_ATTRIBUTE_COMMAND;
|
|
||||||
|
|
||||||
typedef struct _COMMAND_TYPE_1{
|
|
||||||
UINT8 Opcode;
|
|
||||||
PARAMETER_ACCESS Parameters;
|
|
||||||
} COMMAND_TYPE_1;
|
|
||||||
|
|
||||||
typedef struct _COMMAND_TYPE_OPCODE_OFFSET16{
|
|
||||||
UINT8 Opcode;
|
|
||||||
UINT16 CD_Offset16;
|
|
||||||
} COMMAND_TYPE_OPCODE_OFFSET16;
|
|
||||||
|
|
||||||
typedef struct _COMMAND_TYPE_OPCODE_OFFSET32{
|
|
||||||
UINT8 Opcode;
|
|
||||||
UINT32 CD_Offset32;
|
|
||||||
} COMMAND_TYPE_OPCODE_OFFSET32;
|
|
||||||
|
|
||||||
typedef struct _COMMAND_TYPE_OPCODE_VALUE_BYTE{
|
|
||||||
UINT8 Opcode;
|
|
||||||
UINT8 Value;
|
|
||||||
} COMMAND_TYPE_OPCODE_VALUE_BYTE;
|
|
||||||
|
|
||||||
typedef union _COMMAND_SPECIFIC_UNION{
|
|
||||||
UINT8 ContinueSwitch;
|
|
||||||
UINT8 ControlOperandSourcePosition;
|
|
||||||
UINT8 IndexInMasterTable;
|
|
||||||
} COMMAND_SPECIFIC_UNION;
|
|
||||||
|
|
||||||
|
|
||||||
typedef struct _CD_GENERIC_BYTE{
|
|
||||||
UINT16 CommandType:3;
|
|
||||||
UINT16 CurrentParameterSize:3;
|
|
||||||
UINT16 CommandAccessType:3;
|
|
||||||
UINT16 CurrentPort:2;
|
|
||||||
UINT16 PS_SizeInDwordsUsedByCallingTable:5;
|
|
||||||
}CD_GENERIC_BYTE;
|
|
||||||
|
|
||||||
typedef UINT8 COMMAND_TYPE_OPCODE_ONLY;
|
|
||||||
|
|
||||||
typedef UINT8 COMMAND_HEADER_POINTER;
|
|
||||||
|
|
||||||
|
|
||||||
#if (PARSER_TYPE==BIOS_TYPE_PARSER)
|
|
||||||
|
|
||||||
typedef struct _DEVICE_DATA {
|
|
||||||
UINT32 STACK_BASED *pParameterSpace;
|
|
||||||
UINT8 *pBIOS_Image;
|
|
||||||
UINT8 format;
|
|
||||||
#if (IO_INTERFACE==PARSER_INTERFACE)
|
|
||||||
IO_BASE_ADDR IOBase;
|
|
||||||
#endif
|
|
||||||
} DEVICE_DATA;
|
|
||||||
|
|
||||||
#else
|
|
||||||
|
|
||||||
typedef struct _DEVICE_DATA {
|
|
||||||
UINT32 *pParameterSpace;
|
|
||||||
VOID *CAIL;
|
|
||||||
UINT8 *pBIOS_Image;
|
|
||||||
UINT32 format;
|
|
||||||
} DEVICE_DATA;
|
|
||||||
|
|
||||||
#endif
|
|
||||||
|
|
||||||
struct _PARSER_TEMP_DATA;
|
|
||||||
typedef UINT32 WORKSPACE_POINTER;
|
|
||||||
|
|
||||||
struct _WORKING_TABLE_DATA{
|
|
||||||
UINT8 * pTableHead;
|
|
||||||
COMMAND_HEADER_POINTER * IP; // Commands pointer
|
|
||||||
WORKSPACE_POINTER STACK_BASED * pWorkSpace;
|
|
||||||
struct _WORKING_TABLE_DATA STACK_BASED * prevWorkingTableData;
|
|
||||||
};
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
typedef struct _PARSER_TEMP_DATA{
|
|
||||||
DEVICE_DATA STACK_BASED *pDeviceData;
|
|
||||||
struct _WORKING_TABLE_DATA STACK_BASED *pWorkingTableData;
|
|
||||||
UINT32 SourceData32;
|
|
||||||
UINT32 DestData32;
|
|
||||||
DIVISION_MULTIPLICATION_RESULT MultiplicationOrDivision;
|
|
||||||
UINT32 Index;
|
|
||||||
UINT32 CurrentFB_Window;
|
|
||||||
UINT32 IndirectData;
|
|
||||||
UINT16 CurrentRegBlock;
|
|
||||||
TABLE_UNIT_TYPE CurrentDataBlock;
|
|
||||||
UINT16 AttributesData;
|
|
||||||
// UINT8 *IndirectIOTable;
|
|
||||||
UINT8 *IndirectIOTablePointer;
|
|
||||||
GENERIC_ATTRIBUTE_COMMAND *pCmd; //CurrentCommand;
|
|
||||||
SOURCE_DESTINATION_ALIGNMENT CD_Mask;
|
|
||||||
PARAMETERS_TYPE ParametersType;
|
|
||||||
CD_GENERIC_BYTE Multipurpose;
|
|
||||||
UINT8 CompareFlags;
|
|
||||||
COMMAND_SPECIFIC_UNION CommandSpecific;
|
|
||||||
CD_STATUS Status;
|
|
||||||
UINT8 Shift2MaskConverter;
|
|
||||||
UINT8 CurrentPortID;
|
|
||||||
} PARSER_TEMP_DATA;
|
|
||||||
|
|
||||||
|
|
||||||
typedef struct _WORKING_TABLE_DATA WORKING_TABLE_DATA;
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
typedef VOID (*COMMANDS_DECODER)(PARSER_TEMP_DATA STACK_BASED * pParserTempData);
|
|
||||||
typedef VOID (*WRITE_IO_FUNCTION)(PARSER_TEMP_DATA STACK_BASED * pParserTempData);
|
|
||||||
typedef UINT32 (*READ_IO_FUNCTION)(PARSER_TEMP_DATA STACK_BASED * pParserTempData);
|
|
||||||
typedef UINT32 (*CD_GET_PARAMETERS)(PARSER_TEMP_DATA STACK_BASED * pParserTempData);
|
|
||||||
|
|
||||||
typedef struct _COMMANDS_PROPERTIES
|
|
||||||
{
|
|
||||||
COMMANDS_DECODER function;
|
|
||||||
UINT8 destination;
|
|
||||||
UINT8 headersize;
|
|
||||||
} COMMANDS_PROPERTIES;
|
|
||||||
|
|
||||||
typedef struct _INDIRECT_IO_PARSER_COMMANDS
|
|
||||||
{
|
|
||||||
COMMANDS_DECODER func;
|
|
||||||
UINT8 csize;
|
|
||||||
} INDIRECT_IO_PARSER_COMMANDS;
|
|
||||||
|
|
||||||
#if (PARSER_TYPE==DRIVER_TYPE_PARSER) && !defined(__HAIKU__)
|
|
||||||
#pragma pack(pop)
|
|
||||||
#endif
|
|
||||||
|
|
||||||
#endif
|
|
||||||
@@ -1,46 +0,0 @@
|
|||||||
/*
|
|
||||||
* Copyright 2006-2007 Advanced Micro Devices, Inc.
|
|
||||||
*
|
|
||||||
* Permission is hereby granted, free of charge, to any person obtaining a
|
|
||||||
* copy of this software and associated documentation files (the "Software"),
|
|
||||||
* to deal in the Software without restriction, including without limitation
|
|
||||||
* the rights to use, copy, modify, merge, publish, distribute, sublicense,
|
|
||||||
* and/or sell copies of the Software, and to permit persons to whom the
|
|
||||||
* Software is furnished to do so, subject to the following conditions:
|
|
||||||
*
|
|
||||||
* The above copyright notice and this permission notice shall be included in
|
|
||||||
* all copies or substantial portions of the Software.
|
|
||||||
*
|
|
||||||
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
|
||||||
* IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
|
||||||
* FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
|
|
||||||
* THE COPYRIGHT HOLDER(S) OR AUTHOR(S) BE LIABLE FOR ANY CLAIM, DAMAGES OR
|
|
||||||
* OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE,
|
|
||||||
* ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
|
|
||||||
* OTHER DEALINGS IN THE SOFTWARE.
|
|
||||||
*/
|
|
||||||
|
|
||||||
#ifdef NT_BUILD
|
|
||||||
#ifdef LH_BUILD
|
|
||||||
#include <ntddk.h>
|
|
||||||
#else
|
|
||||||
#include <miniport.h>
|
|
||||||
#endif // LH_BUILD
|
|
||||||
#endif // NT_BUILD
|
|
||||||
|
|
||||||
|
|
||||||
#if ((defined DBG) || (defined DEBUG))
|
|
||||||
#define DEBUG_PARSER 1 // enable parser debug output
|
|
||||||
#endif
|
|
||||||
|
|
||||||
#define USE_SWITCH_COMMAND 1
|
|
||||||
#define DRIVER_TYPE_PARSER 0x48
|
|
||||||
|
|
||||||
#define PARSER_TYPE DRIVER_TYPE_PARSER
|
|
||||||
|
|
||||||
#define AllocateWorkSpace(x,y) AllocateMemory(pDeviceData,y)
|
|
||||||
#define FreeWorkSpace(x,y) ReleaseMemory(x,y)
|
|
||||||
|
|
||||||
#define RELATIVE_TO_BIOS_IMAGE( x ) ((ULONG_PTR)x + (ULONG_PTR)((DEVICE_DATA*)pParserTempData->pDeviceData->pBIOS_Image))
|
|
||||||
#define RELATIVE_TO_TABLE( x ) (x + (UCHAR *)(pParserTempData->pWorkingTableData->pTableHead))
|
|
||||||
|
|
||||||
@@ -1,318 +0,0 @@
|
|||||||
/*
|
|
||||||
* Copyright 2006-2007 Advanced Micro Devices, Inc.
|
|
||||||
*
|
|
||||||
* Permission is hereby granted, free of charge, to any person obtaining a
|
|
||||||
* copy of this software and associated documentation files (the "Software"),
|
|
||||||
* to deal in the Software without restriction, including without limitation
|
|
||||||
* the rights to use, copy, modify, merge, publish, distribute, sublicense,
|
|
||||||
* and/or sell copies of the Software, and to permit persons to whom the
|
|
||||||
* Software is furnished to do so, subject to the following conditions:
|
|
||||||
*
|
|
||||||
* The above copyright notice and this permission notice shall be included in
|
|
||||||
* all copies or substantial portions of the Software.
|
|
||||||
*
|
|
||||||
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
|
||||||
* IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
|
||||||
* FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
|
|
||||||
* THE COPYRIGHT HOLDER(S) OR AUTHOR(S) BE LIABLE FOR ANY CLAIM, DAMAGES OR
|
|
||||||
* OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE,
|
|
||||||
* ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
|
|
||||||
* OTHER DEALINGS IN THE SOFTWARE.
|
|
||||||
*/
|
|
||||||
|
|
||||||
#ifndef _HW_SERVICES_INTERFACE_
|
|
||||||
#define _HW_SERVICES_INTERFACE_
|
|
||||||
|
|
||||||
#include "CD_Common_Types.h"
|
|
||||||
#include "CD_Structs.h"
|
|
||||||
|
|
||||||
|
|
||||||
// CD - from Command Decoder
|
|
||||||
typedef UINT16 CD_REG_INDEX;
|
|
||||||
typedef UINT8 CD_PCI_OFFSET;
|
|
||||||
typedef UINT16 CD_FB_OFFSET;
|
|
||||||
typedef UINT16 CD_SYS_IO_PORT;
|
|
||||||
typedef UINT8 CD_MEM_TYPE;
|
|
||||||
typedef UINT8 CD_MEM_SIZE;
|
|
||||||
|
|
||||||
typedef VOID * CD_VIRT_ADDR;
|
|
||||||
typedef UINT32 CD_PHYS_ADDR;
|
|
||||||
typedef UINT32 CD_IO_ADDR;
|
|
||||||
|
|
||||||
/***********************ATI Registers access routines**************************/
|
|
||||||
|
|
||||||
VOID ReadIndReg32(PARSER_TEMP_DATA STACK_BASED * pParserTempData);
|
|
||||||
|
|
||||||
VOID WriteIndReg32(PARSER_TEMP_DATA STACK_BASED * pParserTempData);
|
|
||||||
|
|
||||||
UINT32 ReadReg32(PARSER_TEMP_DATA STACK_BASED * pParserTempData);
|
|
||||||
|
|
||||||
VOID WriteReg32(PARSER_TEMP_DATA STACK_BASED * pParserTempData);
|
|
||||||
|
|
||||||
UINT32 ReadPLL32(PARSER_TEMP_DATA STACK_BASED * pParserTempData);
|
|
||||||
|
|
||||||
VOID WritePLL32(PARSER_TEMP_DATA STACK_BASED * pParserTempData);
|
|
||||||
|
|
||||||
UINT32 ReadMC32(PARSER_TEMP_DATA STACK_BASED * pParserTempData);
|
|
||||||
|
|
||||||
VOID WriteMC32(PARSER_TEMP_DATA STACK_BASED * pParserTempData);
|
|
||||||
|
|
||||||
/************************PCI Registers access routines*************************/
|
|
||||||
|
|
||||||
UINT8 ReadPCIReg8(PARSER_TEMP_DATA STACK_BASED * pParserTempData);
|
|
||||||
|
|
||||||
UINT16 ReadPCIReg16(PARSER_TEMP_DATA STACK_BASED * pParserTempData);
|
|
||||||
|
|
||||||
UINT32 ReadPCIReg32(PARSER_TEMP_DATA STACK_BASED * pParserTempData);
|
|
||||||
|
|
||||||
VOID WritePCIReg8(PARSER_TEMP_DATA STACK_BASED * pParserTempData);
|
|
||||||
|
|
||||||
VOID WritePCIReg16(PARSER_TEMP_DATA STACK_BASED * pParserTempData);
|
|
||||||
|
|
||||||
VOID WritePCIReg32(PARSER_TEMP_DATA STACK_BASED * pParserTempData);
|
|
||||||
|
|
||||||
/***************************Frame buffer access routines************************/
|
|
||||||
|
|
||||||
UINT32 ReadFrameBuffer32(PARSER_TEMP_DATA STACK_BASED * pParserTempData);
|
|
||||||
|
|
||||||
VOID WriteFrameBuffer32(PARSER_TEMP_DATA STACK_BASED * pParserTempData);
|
|
||||||
|
|
||||||
/******************System IO Registers access routines********************/
|
|
||||||
|
|
||||||
UINT8 ReadSysIOReg8(PARSER_TEMP_DATA STACK_BASED * pParserTempData);
|
|
||||||
|
|
||||||
UINT16 ReadSysIOReg16(PARSER_TEMP_DATA STACK_BASED * pParserTempData);
|
|
||||||
|
|
||||||
UINT32 ReadSysIOReg32(PARSER_TEMP_DATA STACK_BASED * pParserTempData);
|
|
||||||
|
|
||||||
VOID WriteSysIOReg8(PARSER_TEMP_DATA STACK_BASED * pParserTempData);
|
|
||||||
|
|
||||||
VOID WriteSysIOReg16(PARSER_TEMP_DATA STACK_BASED * pParserTempData);
|
|
||||||
|
|
||||||
VOID WriteSysIOReg32(PARSER_TEMP_DATA STACK_BASED * pParserTempData);
|
|
||||||
|
|
||||||
/****************************Delay routines****************************************/
|
|
||||||
|
|
||||||
VOID DelayMicroseconds(PARSER_TEMP_DATA STACK_BASED * pParserTempData); // take WORKING_TABLE_DATA->SourceData32 as a delay value
|
|
||||||
|
|
||||||
VOID DelayMilliseconds(PARSER_TEMP_DATA STACK_BASED * pParserTempData);
|
|
||||||
|
|
||||||
VOID PostCharOutput(PARSER_TEMP_DATA STACK_BASED * pParserTempData);
|
|
||||||
|
|
||||||
VOID CallerDebugFunc(PARSER_TEMP_DATA STACK_BASED * pParserTempData);
|
|
||||||
|
|
||||||
|
|
||||||
//************************Tracing/Debugging routines and macroses******************/
|
|
||||||
#define KEYPRESSED -1
|
|
||||||
|
|
||||||
#if (DEBUG_PARSER != 0)
|
|
||||||
|
|
||||||
#ifdef DRIVER_PARSER
|
|
||||||
|
|
||||||
VOID CD_print_string (DEVICE_DATA STACK_BASED *pDeviceData, UINT8 *str);
|
|
||||||
VOID CD_print_value (DEVICE_DATA STACK_BASED *pDeviceData, ULONG_PTR value, UINT16 value_type );
|
|
||||||
|
|
||||||
// Level 1 : can use WorkingTableData or pDeviceData
|
|
||||||
#define CD_TRACE_DL1(string) CD_print_string(pDeviceData, string);
|
|
||||||
#define CD_TRACETAB_DL1(string) CD_TRACE_DL1("\n");CD_TRACE_DL1(string)
|
|
||||||
#define CD_TRACEDEC_DL1(value) CD_print_value( pDeviceData, (ULONG_PTR)value, PARSER_DEC);
|
|
||||||
#define CD_TRACEHEX_DL1(value) CD_print_value( pDeviceData, (ULONG_PTR)value, PARSER_HEX);
|
|
||||||
|
|
||||||
// Level 2:can use pWorkingTableData
|
|
||||||
#define CD_TRACE_DL2(string) CD_print_string( pWorkingTableData->pParserTempData->pDeviceData, string);
|
|
||||||
#define CD_TRACETAB_DL2(string) CD_TRACE_DL2("\n");CD_TRACE_DL2(string)
|
|
||||||
#define CD_TRACEDEC_DL2(value) CD_print_value( pWorkingTableData->pParserTempData->pDeviceData, (ULONG_PTR)value, PARSER_DEC);
|
|
||||||
#define CD_TRACEHEX_DL2(value) CD_print_value( pWorkingTableData->pParserTempData->pDeviceData, (ULONG_PTR)value, PARSER_HEX);
|
|
||||||
|
|
||||||
// Level 3:can use pWorkingTableData
|
|
||||||
#define CD_TRACE_DL3(string) CD_print_string( pWorkingTableData->pParserTempData->pDeviceData, string);
|
|
||||||
#define CD_TRACETAB_DL3(string) CD_TRACE_DL3("\n");CD_TRACE_DL3(string)
|
|
||||||
#define CD_TRACEDEC_DL3(value) CD_print_value( pWorkingTableData->pParserTempData->pDeviceData, value, PARSER_DEC);
|
|
||||||
#define CD_TRACEHEX_DL3(value) CD_print_value( pWorkingTableData->pParserTempData->pDeviceData, value, PARSER_HEX);
|
|
||||||
|
|
||||||
#define CD_TRACE(string)
|
|
||||||
#define CD_WAIT(what)
|
|
||||||
#define CD_BREAKPOINT()
|
|
||||||
|
|
||||||
#else
|
|
||||||
|
|
||||||
|
|
||||||
VOID CD_assert (UINT8 *file, INTN lineno); //output file/line to debug console
|
|
||||||
VOID CD_postcode(UINT8 value); //output post code to debug console
|
|
||||||
VOID CD_print (UINT8 *str); //output text to debug console
|
|
||||||
VOID CD_print_dec(UINTN value); //output value in decimal format to debug console
|
|
||||||
VOID CD_print_hex(UINT32 value, UINT8 len); //output value in hexadecimal format to debug console
|
|
||||||
VOID CD_print_buf(UINT8 *p, UINTN len); //output dump of memory to debug console
|
|
||||||
VOID CD_wait(INT32 what); //wait for KEYPRESSED=-1 or Delay value expires
|
|
||||||
VOID CD_breakpoint(); //insert int3 opcode or 0xF1 (for American Arium)
|
|
||||||
|
|
||||||
#define CD_ASSERT(condition) if(!(condition)) CD_assert(__FILE__, __LINE__)
|
|
||||||
#define CD_POSTCODE(value) CD_postcode(value)
|
|
||||||
#define CD_TRACE(string) CD_print(string)
|
|
||||||
#define CD_TRACETAB(string) CD_print(string)
|
|
||||||
#define CD_TRACEDEC(value) CD_print_dec( (UINTN)(value))
|
|
||||||
#define CD_TRACEHEX(value) CD_print_hex( (UINT32)(value), sizeof(value) )
|
|
||||||
#define CD_TRACEBUF(pointer, len) CD_print_buf( (UINT8 *)(pointer), (UINTN) len)
|
|
||||||
#define CD_WAIT(what) CD_wait((INT32)what)
|
|
||||||
#define CD_BREAKPOINT() CD_breakpoint()
|
|
||||||
|
|
||||||
#if (DEBUG_PARSER == 4)
|
|
||||||
#define CD_ASSERT_DL4(condition) if(!(condition)) CD_assert(__FILE__, __LINE__)
|
|
||||||
#define CD_POSTCODE_DL4(value) CD_postcode(value)
|
|
||||||
#define CD_TRACE_DL4(string) CD_print(string)
|
|
||||||
#define CD_TRACETAB_DL4(string) CD_print("\n\t\t");CD_print(string)
|
|
||||||
#define CD_TRACEDEC_DL4(value) CD_print_dec( (UINTN)(value))
|
|
||||||
#define CD_TRACEHEX_DL4(value) CD_print_hex( (UINT32)(value), sizeof(value) )
|
|
||||||
#define CD_TRACEBUF_DL4(pointer, len) CD_print_buf( (UINT8 *)(pointer), (UINTN) len)
|
|
||||||
#define CD_WAIT_DL4(what) CD_wait((INT32)what)
|
|
||||||
#define CD_BREAKPOINT_DL4() CD_breakpoint()
|
|
||||||
#else
|
|
||||||
#define CD_ASSERT_DL4(condition)
|
|
||||||
#define CD_POSTCODE_DL4(value)
|
|
||||||
#define CD_TRACE_DL4(string)
|
|
||||||
#define CD_TRACETAB_DL4(string)
|
|
||||||
#define CD_TRACEDEC_DL4(value)
|
|
||||||
#define CD_TRACEHEX_DL4(value)
|
|
||||||
#define CD_TRACEBUF_DL4(pointer, len)
|
|
||||||
#define CD_WAIT_DL4(what)
|
|
||||||
#define CD_BREAKPOINT_DL4()
|
|
||||||
#endif
|
|
||||||
|
|
||||||
#if (DEBUG_PARSER >= 3)
|
|
||||||
#define CD_ASSERT_DL3(condition) if(!(condition)) CD_assert(__FILE__, __LINE__)
|
|
||||||
#define CD_POSTCODE_DL3(value) CD_postcode(value)
|
|
||||||
#define CD_TRACE_DL3(string) CD_print(string)
|
|
||||||
#define CD_TRACETAB_DL3(string) CD_print("\n\t\t");CD_print(string)
|
|
||||||
#define CD_TRACEDEC_DL3(value) CD_print_dec( (UINTN)(value))
|
|
||||||
#define CD_TRACEHEX_DL3(value) CD_print_hex( (UINT32)(value), sizeof(value) )
|
|
||||||
#define CD_TRACEBUF_DL3(pointer, len) CD_print_buf( (UINT8 *)(pointer), (UINTN) len)
|
|
||||||
#define CD_WAIT_DL3(what) CD_wait((INT32)what)
|
|
||||||
#define CD_BREAKPOINT_DL3() CD_breakpoint()
|
|
||||||
#else
|
|
||||||
#define CD_ASSERT_DL3(condition)
|
|
||||||
#define CD_POSTCODE_DL3(value)
|
|
||||||
#define CD_TRACE_DL3(string)
|
|
||||||
#define CD_TRACETAB_DL3(string)
|
|
||||||
#define CD_TRACEDEC_DL3(value)
|
|
||||||
#define CD_TRACEHEX_DL3(value)
|
|
||||||
#define CD_TRACEBUF_DL3(pointer, len)
|
|
||||||
#define CD_WAIT_DL3(what)
|
|
||||||
#define CD_BREAKPOINT_DL3()
|
|
||||||
#endif
|
|
||||||
|
|
||||||
|
|
||||||
#if (DEBUG_PARSER >= 2)
|
|
||||||
#define CD_ASSERT_DL2(condition) if(!(condition)) CD_assert(__FILE__, __LINE__)
|
|
||||||
#define CD_POSTCODE_DL2(value) CD_postcode(value)
|
|
||||||
#define CD_TRACE_DL2(string) CD_print(string)
|
|
||||||
#define CD_TRACETAB_DL2(string) CD_print("\n\t");CD_print(string)
|
|
||||||
#define CD_TRACEDEC_DL2(value) CD_print_dec( (UINTN)(value))
|
|
||||||
#define CD_TRACEHEX_DL2(value) CD_print_hex( (UINT32)(value), sizeof(value) )
|
|
||||||
#define CD_TRACEBUF_DL2(pointer, len) CD_print_buf( (UINT8 *)(pointer), (UINTN) len)
|
|
||||||
#define CD_WAIT_DL2(what) CD_wait((INT32)what)
|
|
||||||
#define CD_BREAKPOINT_DL2() CD_breakpoint()
|
|
||||||
#else
|
|
||||||
#define CD_ASSERT_DL2(condition)
|
|
||||||
#define CD_POSTCODE_DL2(value)
|
|
||||||
#define CD_TRACE_DL2(string)
|
|
||||||
#define CD_TRACETAB_DL2(string)
|
|
||||||
#define CD_TRACEDEC_DL2(value)
|
|
||||||
#define CD_TRACEHEX_DL2(value)
|
|
||||||
#define CD_TRACEBUF_DL2(pointer, len)
|
|
||||||
#define CD_WAIT_DL2(what)
|
|
||||||
#define CD_BREAKPOINT_DL2()
|
|
||||||
#endif
|
|
||||||
|
|
||||||
|
|
||||||
#if (DEBUG_PARSER >= 1)
|
|
||||||
#define CD_ASSERT_DL1(condition) if(!(condition)) CD_assert(__FILE__, __LINE__)
|
|
||||||
#define CD_POSTCODE_DL1(value) CD_postcode(value)
|
|
||||||
#define CD_TRACE_DL1(string) CD_print(string)
|
|
||||||
#define CD_TRACETAB_DL1(string) CD_print("\n");CD_print(string)
|
|
||||||
#define CD_TRACEDEC_DL1(value) CD_print_dec( (UINTN)(value))
|
|
||||||
#define CD_TRACEHEX_DL1(value) CD_print_hex( (UINT32)(value), sizeof(value) )
|
|
||||||
#define CD_TRACEBUF_DL1(pointer, len) CD_print_buf( (UINT8 *)(pointer), (UINTN) len)
|
|
||||||
#define CD_WAIT_DL1(what) CD_wait((INT32)what)
|
|
||||||
#define CD_BREAKPOINT_DL1() CD_breakpoint()
|
|
||||||
#else
|
|
||||||
#define CD_ASSERT_DL1(condition)
|
|
||||||
#define CD_POSTCODE_DL1(value)
|
|
||||||
#define CD_TRACE_DL1(string)
|
|
||||||
#define CD_TRACETAB_DL1(string)
|
|
||||||
#define CD_TRACEDEC_DL1(value)
|
|
||||||
#define CD_TRACEHEX_DL1(value)
|
|
||||||
#define CD_TRACEBUF_DL1(pointer, len)
|
|
||||||
#define CD_WAIT_DL1(what)
|
|
||||||
#define CD_BREAKPOINT_DL1()
|
|
||||||
#endif
|
|
||||||
|
|
||||||
#endif //#ifdef DRIVER_PARSER
|
|
||||||
|
|
||||||
|
|
||||||
#else
|
|
||||||
|
|
||||||
#define CD_ASSERT(condition)
|
|
||||||
#define CD_POSTCODE(value)
|
|
||||||
#define CD_TRACE(string)
|
|
||||||
#define CD_TRACEDEC(value)
|
|
||||||
#define CD_TRACEHEX(value)
|
|
||||||
#define CD_TRACEBUF(pointer, len)
|
|
||||||
#define CD_WAIT(what)
|
|
||||||
#define CD_BREAKPOINT()
|
|
||||||
|
|
||||||
#define CD_ASSERT_DL4(condition)
|
|
||||||
#define CD_POSTCODE_DL4(value)
|
|
||||||
#define CD_TRACE_DL4(string)
|
|
||||||
#define CD_TRACETAB_DL4(string)
|
|
||||||
#define CD_TRACEDEC_DL4(value)
|
|
||||||
#define CD_TRACEHEX_DL4(value)
|
|
||||||
#define CD_TRACEBUF_DL4(pointer, len)
|
|
||||||
#define CD_WAIT_DL4(what)
|
|
||||||
#define CD_BREAKPOINT_DL4()
|
|
||||||
|
|
||||||
#define CD_ASSERT_DL3(condition)
|
|
||||||
#define CD_POSTCODE_DL3(value)
|
|
||||||
#define CD_TRACE_DL3(string)
|
|
||||||
#define CD_TRACETAB_DL3(string)
|
|
||||||
#define CD_TRACEDEC_DL3(value)
|
|
||||||
#define CD_TRACEHEX_DL3(value)
|
|
||||||
#define CD_TRACEBUF_DL3(pointer, len)
|
|
||||||
#define CD_WAIT_DL3(what)
|
|
||||||
#define CD_BREAKPOINT_DL3()
|
|
||||||
|
|
||||||
#define CD_ASSERT_DL2(condition)
|
|
||||||
#define CD_POSTCODE_DL2(value)
|
|
||||||
#define CD_TRACE_DL2(string)
|
|
||||||
#define CD_TRACETAB_DL2(string)
|
|
||||||
#define CD_TRACEDEC_DL2(value)
|
|
||||||
#define CD_TRACEHEX_DL2(value)
|
|
||||||
#define CD_TRACEBUF_DL2(pointer, len)
|
|
||||||
#define CD_WAIT_DL2(what)
|
|
||||||
#define CD_BREAKPOINT_DL2()
|
|
||||||
|
|
||||||
#define CD_ASSERT_DL1(condition)
|
|
||||||
#define CD_POSTCODE_DL1(value)
|
|
||||||
#define CD_TRACE_DL1(string)
|
|
||||||
#define CD_TRACETAB_DL1(string)
|
|
||||||
#define CD_TRACEDEC_DL1(value)
|
|
||||||
#define CD_TRACEHEX_DL1(value)
|
|
||||||
#define CD_TRACEBUF_DL1(pointer, len)
|
|
||||||
#define CD_WAIT_DL1(what)
|
|
||||||
#define CD_BREAKPOINT_DL1()
|
|
||||||
|
|
||||||
|
|
||||||
#endif //#if (DEBUG_PARSER > 0)
|
|
||||||
|
|
||||||
|
|
||||||
#ifdef CHECKSTACK
|
|
||||||
VOID CD_fillstack(UINT16 size);
|
|
||||||
UINT16 CD_checkstack(UINT16 size);
|
|
||||||
#define CD_CHECKSTACK(stacksize) CD_checkstack(stacksize)
|
|
||||||
#define CD_FILLSTACK(stacksize) CD_fillstack(stacksize)
|
|
||||||
#else
|
|
||||||
#define CD_CHECKSTACK(stacksize) 0
|
|
||||||
#define CD_FILLSTACK(stacksize)
|
|
||||||
#endif
|
|
||||||
|
|
||||||
|
|
||||||
#endif
|
|
||||||
@@ -1,87 +0,0 @@
|
|||||||
/*
|
|
||||||
* Copyright 2006-2007 Advanced Micro Devices, Inc.
|
|
||||||
*
|
|
||||||
* Permission is hereby granted, free of charge, to any person obtaining a
|
|
||||||
* copy of this software and associated documentation files (the "Software"),
|
|
||||||
* to deal in the Software without restriction, including without limitation
|
|
||||||
* the rights to use, copy, modify, merge, publish, distribute, sublicense,
|
|
||||||
* and/or sell copies of the Software, and to permit persons to whom the
|
|
||||||
* Software is furnished to do so, subject to the following conditions:
|
|
||||||
*
|
|
||||||
* The above copyright notice and this permission notice shall be included in
|
|
||||||
* all copies or substantial portions of the Software.
|
|
||||||
*
|
|
||||||
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
|
||||||
* IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
|
||||||
* FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
|
|
||||||
* THE COPYRIGHT HOLDER(S) OR AUTHOR(S) BE LIABLE FOR ANY CLAIM, DAMAGES OR
|
|
||||||
* OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE,
|
|
||||||
* ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
|
|
||||||
* OTHER DEALINGS IN THE SOFTWARE.
|
|
||||||
*/
|
|
||||||
|
|
||||||
/*++
|
|
||||||
|
|
||||||
Module Name:
|
|
||||||
|
|
||||||
Decoder.h
|
|
||||||
|
|
||||||
Abstract:
|
|
||||||
|
|
||||||
Includes all helper headers
|
|
||||||
|
|
||||||
Revision History:
|
|
||||||
|
|
||||||
NEG:27.08.2002 Initiated.
|
|
||||||
--*/
|
|
||||||
#ifndef _DECODER_H_
|
|
||||||
#define _DECODER_H_
|
|
||||||
#define WS_QUOTIENT_C 64
|
|
||||||
#define WS_REMINDER_C (WS_QUOTIENT_C+1)
|
|
||||||
#define WS_DATAPTR_C (WS_REMINDER_C+1)
|
|
||||||
#define WS_SHIFT_C (WS_DATAPTR_C+1)
|
|
||||||
#define WS_OR_MASK_C (WS_SHIFT_C+1)
|
|
||||||
#define WS_AND_MASK_C (WS_OR_MASK_C+1)
|
|
||||||
#define WS_FB_WINDOW_C (WS_AND_MASK_C+1)
|
|
||||||
#define WS_ATTRIBUTES_C (WS_FB_WINDOW_C+1)
|
|
||||||
#define WS_REGPTR_C (WS_ATTRIBUTES_C+1)
|
|
||||||
#define PARSER_VERSION_MAJOR 0x00000000
|
|
||||||
#define PARSER_VERSION_MINOR 0x0000000E
|
|
||||||
#define PARSER_VERSION (PARSER_VERSION_MAJOR | PARSER_VERSION_MINOR)
|
|
||||||
#include "CD_binding.h"
|
|
||||||
#include "CD_Common_Types.h"
|
|
||||||
#include "CD_hw_services.h"
|
|
||||||
#include "CD_Structs.h"
|
|
||||||
#include "CD_Definitions.h"
|
|
||||||
#include "CD_Opcodes.h"
|
|
||||||
|
|
||||||
#define SOURCE_ONLY_CMD_TYPE 0//0xFE
|
|
||||||
#define SOURCE_DESTINATION_CMD_TYPE 1//0xFD
|
|
||||||
#define DESTINATION_ONLY_CMD_TYPE 2//0xFC
|
|
||||||
|
|
||||||
#define ACCESS_TYPE_BYTE 0//0xF9
|
|
||||||
#define ACCESS_TYPE_WORD 1//0xF8
|
|
||||||
#define ACCESS_TYPE_DWORD 2//0xF7
|
|
||||||
#define SWITCH_TYPE_ACCESS 3//0xF6
|
|
||||||
|
|
||||||
#define CD_CONTINUE 0//0xFB
|
|
||||||
#define CD_STOP 1//0xFA
|
|
||||||
|
|
||||||
|
|
||||||
#define IS_END_OF_TABLE(cmd) ((cmd) == EOT_OPCODE)
|
|
||||||
#define IS_COMMAND_VALID(cmd) (((cmd)<=LastValidCommand)&&((cmd)>=FirstValidCommand))
|
|
||||||
#define IS_IT_SHIFT_COMMAND(Opcode) ((Opcode<=SHIFT_RIGHT_MC_OPCODE)&&(Opcode>=SHIFT_LEFT_REG_OPCODE))
|
|
||||||
#define IS_IT_XXXX_COMMAND(Group, Opcode) ((Opcode<=Group##_MC_OPCODE)&&(Opcode>=Group##_REG_OPCODE))
|
|
||||||
#define CheckCaseAndAdjustIP_Macro(size) \
|
|
||||||
if (pParserTempData->SourceData32==(UINT32)((CASE_OFFSET*)pParserTempData->pWorkingTableData->IP)->XX_Access.size##.Access.Value){\
|
|
||||||
pParserTempData->CommandSpecific.ContinueSwitch = CD_STOP;\
|
|
||||||
pParserTempData->pWorkingTableData->IP =(COMMAND_HEADER_POINTER *) RELATIVE_TO_TABLE(((CASE_OFFSET*)pParserTempData->pWorkingTableData->IP)->XX_Access.size##.Access.JumpOffset);\
|
|
||||||
}else{\
|
|
||||||
pParserTempData->pWorkingTableData->IP+=(sizeof (CASE_##size##ACCESS)\
|
|
||||||
+sizeof(((CASE_OFFSET*)pParserTempData->pWorkingTableData->IP)->CaseSignature));\
|
|
||||||
}
|
|
||||||
|
|
||||||
#endif
|
|
||||||
/* pWorkingTableData->pCmd->Header.Attribute.SourceAlignment=alignmentLowerWord;\*/
|
|
||||||
|
|
||||||
// EOF
|
|
||||||
@@ -1,643 +0,0 @@
|
|||||||
/*
|
|
||||||
* Copyright 2006-2007 Advanced Micro Devices, Inc.
|
|
||||||
*
|
|
||||||
* Permission is hereby granted, free of charge, to any person obtaining a
|
|
||||||
* copy of this software and associated documentation files (the "Software"),
|
|
||||||
* to deal in the Software without restriction, including without limitation
|
|
||||||
* the rights to use, copy, modify, merge, publish, distribute, sublicense,
|
|
||||||
* and/or sell copies of the Software, and to permit persons to whom the
|
|
||||||
* Software is furnished to do so, subject to the following conditions:
|
|
||||||
*
|
|
||||||
* The above copyright notice and this permission notice shall be included in
|
|
||||||
* all copies or substantial portions of the Software.
|
|
||||||
*
|
|
||||||
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
|
||||||
* IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
|
||||||
* FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
|
|
||||||
* THE COPYRIGHT HOLDER(S) OR AUTHOR(S) BE LIABLE FOR ANY CLAIM, DAMAGES OR
|
|
||||||
* OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE,
|
|
||||||
* ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
|
|
||||||
* OTHER DEALINGS IN THE SOFTWARE.
|
|
||||||
*/
|
|
||||||
/* based on stg/asic_reg/drivers/inc/asic_reg/ObjectID.h ver 23 */
|
|
||||||
|
|
||||||
#ifndef _OBJECTID_H
|
|
||||||
#define _OBJECTID_H
|
|
||||||
|
|
||||||
#if defined(_X86_)
|
|
||||||
#pragma pack(1)
|
|
||||||
#endif
|
|
||||||
|
|
||||||
/****************************************************/
|
|
||||||
/* Graphics Object Type Definition */
|
|
||||||
/****************************************************/
|
|
||||||
#define GRAPH_OBJECT_TYPE_NONE 0x0
|
|
||||||
#define GRAPH_OBJECT_TYPE_GPU 0x1
|
|
||||||
#define GRAPH_OBJECT_TYPE_ENCODER 0x2
|
|
||||||
#define GRAPH_OBJECT_TYPE_CONNECTOR 0x3
|
|
||||||
#define GRAPH_OBJECT_TYPE_ROUTER 0x4
|
|
||||||
/* deleted */
|
|
||||||
|
|
||||||
/****************************************************/
|
|
||||||
/* Encoder Object ID Definition */
|
|
||||||
/****************************************************/
|
|
||||||
#define ENCODER_OBJECT_ID_NONE 0x00
|
|
||||||
|
|
||||||
/* Radeon Class Display Hardware */
|
|
||||||
#define ENCODER_OBJECT_ID_INTERNAL_LVDS 0x01
|
|
||||||
#define ENCODER_OBJECT_ID_INTERNAL_TMDS1 0x02
|
|
||||||
#define ENCODER_OBJECT_ID_INTERNAL_TMDS2 0x03
|
|
||||||
#define ENCODER_OBJECT_ID_INTERNAL_DAC1 0x04
|
|
||||||
#define ENCODER_OBJECT_ID_INTERNAL_DAC2 0x05 /* TV/CV DAC */
|
|
||||||
#define ENCODER_OBJECT_ID_INTERNAL_SDVOA 0x06
|
|
||||||
#define ENCODER_OBJECT_ID_INTERNAL_SDVOB 0x07
|
|
||||||
|
|
||||||
/* External Third Party Encoders */
|
|
||||||
#define ENCODER_OBJECT_ID_SI170B 0x08
|
|
||||||
#define ENCODER_OBJECT_ID_CH7303 0x09
|
|
||||||
#define ENCODER_OBJECT_ID_CH7301 0x0A
|
|
||||||
#define ENCODER_OBJECT_ID_INTERNAL_DVO1 0x0B /* This belongs to Radeon Class Display Hardware */
|
|
||||||
#define ENCODER_OBJECT_ID_EXTERNAL_SDVOA 0x0C
|
|
||||||
#define ENCODER_OBJECT_ID_EXTERNAL_SDVOB 0x0D
|
|
||||||
#define ENCODER_OBJECT_ID_TITFP513 0x0E
|
|
||||||
#define ENCODER_OBJECT_ID_INTERNAL_LVTM1 0x0F /* not used for Radeon */
|
|
||||||
#define ENCODER_OBJECT_ID_VT1623 0x10
|
|
||||||
#define ENCODER_OBJECT_ID_HDMI_SI1930 0x11
|
|
||||||
#define ENCODER_OBJECT_ID_HDMI_INTERNAL 0x12
|
|
||||||
/* Kaleidoscope (KLDSCP) Class Display Hardware (internal) */
|
|
||||||
#define ENCODER_OBJECT_ID_INTERNAL_KLDSCP_TMDS1 0x13
|
|
||||||
#define ENCODER_OBJECT_ID_INTERNAL_KLDSCP_DVO1 0x14
|
|
||||||
#define ENCODER_OBJECT_ID_INTERNAL_KLDSCP_DAC1 0x15
|
|
||||||
#define ENCODER_OBJECT_ID_INTERNAL_KLDSCP_DAC2 0x16 /* Shared with CV/TV and CRT */
|
|
||||||
#define ENCODER_OBJECT_ID_SI178 0X17 /* External TMDS (dual link, no HDCP.) */
|
|
||||||
#define ENCODER_OBJECT_ID_MVPU_FPGA 0x18 /* MVPU FPGA chip */
|
|
||||||
#define ENCODER_OBJECT_ID_INTERNAL_DDI 0x19
|
|
||||||
#define ENCODER_OBJECT_ID_VT1625 0x1A
|
|
||||||
#define ENCODER_OBJECT_ID_HDMI_SI1932 0x1B
|
|
||||||
#define ENCODER_OBJECT_ID_DP_AN9801 0x1C
|
|
||||||
#define ENCODER_OBJECT_ID_DP_DP501 0x1D
|
|
||||||
#define ENCODER_OBJECT_ID_INTERNAL_UNIPHY 0x1E
|
|
||||||
#define ENCODER_OBJECT_ID_INTERNAL_KLDSCP_LVTMA 0x1F
|
|
||||||
#define ENCODER_OBJECT_ID_INTERNAL_UNIPHY1 0x20
|
|
||||||
#define ENCODER_OBJECT_ID_INTERNAL_UNIPHY2 0x21
|
|
||||||
|
|
||||||
#define ENCODER_OBJECT_ID_GENERAL_EXTERNAL_DVO 0xFF
|
|
||||||
|
|
||||||
/****************************************************/
|
|
||||||
/* Connector Object ID Definition */
|
|
||||||
/****************************************************/
|
|
||||||
#define CONNECTOR_OBJECT_ID_NONE 0x00
|
|
||||||
#define CONNECTOR_OBJECT_ID_SINGLE_LINK_DVI_I 0x01
|
|
||||||
#define CONNECTOR_OBJECT_ID_DUAL_LINK_DVI_I 0x02
|
|
||||||
#define CONNECTOR_OBJECT_ID_SINGLE_LINK_DVI_D 0x03
|
|
||||||
#define CONNECTOR_OBJECT_ID_DUAL_LINK_DVI_D 0x04
|
|
||||||
#define CONNECTOR_OBJECT_ID_VGA 0x05
|
|
||||||
#define CONNECTOR_OBJECT_ID_COMPOSITE 0x06
|
|
||||||
#define CONNECTOR_OBJECT_ID_SVIDEO 0x07
|
|
||||||
#define CONNECTOR_OBJECT_ID_YPbPr 0x08
|
|
||||||
#define CONNECTOR_OBJECT_ID_D_CONNECTOR 0x09
|
|
||||||
#define CONNECTOR_OBJECT_ID_9PIN_DIN 0x0A /* Supports both CV & TV */
|
|
||||||
#define CONNECTOR_OBJECT_ID_SCART 0x0B
|
|
||||||
#define CONNECTOR_OBJECT_ID_HDMI_TYPE_A 0x0C
|
|
||||||
#define CONNECTOR_OBJECT_ID_HDMI_TYPE_B 0x0D
|
|
||||||
#define CONNECTOR_OBJECT_ID_LVDS 0x0E
|
|
||||||
#define CONNECTOR_OBJECT_ID_7PIN_DIN 0x0F
|
|
||||||
#define CONNECTOR_OBJECT_ID_PCIE_CONNECTOR 0x10
|
|
||||||
#define CONNECTOR_OBJECT_ID_CROSSFIRE 0x11
|
|
||||||
#define CONNECTOR_OBJECT_ID_HARDCODE_DVI 0x12
|
|
||||||
#define CONNECTOR_OBJECT_ID_DISPLAYPORT 0x13
|
|
||||||
#define CONNECTOR_OBJECT_ID_eDP 0x14
|
|
||||||
#define CONNECTOR_OBJECT_ID_MXM 0x15
|
|
||||||
|
|
||||||
/* deleted */
|
|
||||||
|
|
||||||
/****************************************************/
|
|
||||||
/* Router Object ID Definition */
|
|
||||||
/****************************************************/
|
|
||||||
#define ROUTER_OBJECT_ID_NONE 0x00
|
|
||||||
#define ROUTER_OBJECT_ID_I2C_EXTENDER_CNTL 0x01
|
|
||||||
|
|
||||||
/****************************************************/
|
|
||||||
/* Generic Object ID Definition */
|
|
||||||
/****************************************************/
|
|
||||||
#define GENERIC_OBJECT_ID_NONE 0x00
|
|
||||||
#define GENERIC_OBJECT_ID_GLSYNC 0x01
|
|
||||||
#define GENERIC_OBJECT_ID_PX2_NON_DRIVABLE 0x02
|
|
||||||
#define GENERIC_OBJECT_ID_MXM_OPM 0x03
|
|
||||||
|
|
||||||
/****************************************************/
|
|
||||||
/* Graphics Object ENUM ID Definition */
|
|
||||||
/****************************************************/
|
|
||||||
#define GRAPH_OBJECT_ENUM_ID1 0x01
|
|
||||||
#define GRAPH_OBJECT_ENUM_ID2 0x02
|
|
||||||
#define GRAPH_OBJECT_ENUM_ID3 0x03
|
|
||||||
#define GRAPH_OBJECT_ENUM_ID4 0x04
|
|
||||||
#define GRAPH_OBJECT_ENUM_ID5 0x05
|
|
||||||
#define GRAPH_OBJECT_ENUM_ID6 0x06
|
|
||||||
#define GRAPH_OBJECT_ENUM_ID7 0x07
|
|
||||||
|
|
||||||
/****************************************************/
|
|
||||||
/* Graphics Object ID Bit definition */
|
|
||||||
/****************************************************/
|
|
||||||
#define OBJECT_ID_MASK 0x00FF
|
|
||||||
#define ENUM_ID_MASK 0x0700
|
|
||||||
#define RESERVED1_ID_MASK 0x0800
|
|
||||||
#define OBJECT_TYPE_MASK 0x7000
|
|
||||||
#define RESERVED2_ID_MASK 0x8000
|
|
||||||
|
|
||||||
#define OBJECT_ID_SHIFT 0x00
|
|
||||||
#define ENUM_ID_SHIFT 0x08
|
|
||||||
#define OBJECT_TYPE_SHIFT 0x0C
|
|
||||||
|
|
||||||
|
|
||||||
/****************************************************/
|
|
||||||
/* Graphics Object family definition */
|
|
||||||
/****************************************************/
|
|
||||||
#define CONSTRUCTOBJECTFAMILYID(GRAPHICS_OBJECT_TYPE, GRAPHICS_OBJECT_ID) (GRAPHICS_OBJECT_TYPE << OBJECT_TYPE_SHIFT | \
|
|
||||||
GRAPHICS_OBJECT_ID << OBJECT_ID_SHIFT)
|
|
||||||
/****************************************************/
|
|
||||||
/* GPU Object ID definition - Shared with BIOS */
|
|
||||||
/****************************************************/
|
|
||||||
#define GPU_ENUM_ID1 ( GRAPH_OBJECT_TYPE_GPU << OBJECT_TYPE_SHIFT |\
|
|
||||||
GRAPH_OBJECT_ENUM_ID1 << ENUM_ID_SHIFT)
|
|
||||||
|
|
||||||
/****************************************************/
|
|
||||||
/* Encoder Object ID definition - Shared with BIOS */
|
|
||||||
/****************************************************/
|
|
||||||
/*
|
|
||||||
#define ENCODER_INTERNAL_LVDS_ENUM_ID1 0x2101
|
|
||||||
#define ENCODER_INTERNAL_TMDS1_ENUM_ID1 0x2102
|
|
||||||
#define ENCODER_INTERNAL_TMDS2_ENUM_ID1 0x2103
|
|
||||||
#define ENCODER_INTERNAL_DAC1_ENUM_ID1 0x2104
|
|
||||||
#define ENCODER_INTERNAL_DAC2_ENUM_ID1 0x2105
|
|
||||||
#define ENCODER_INTERNAL_SDVOA_ENUM_ID1 0x2106
|
|
||||||
#define ENCODER_INTERNAL_SDVOB_ENUM_ID1 0x2107
|
|
||||||
#define ENCODER_SIL170B_ENUM_ID1 0x2108
|
|
||||||
#define ENCODER_CH7303_ENUM_ID1 0x2109
|
|
||||||
#define ENCODER_CH7301_ENUM_ID1 0x210A
|
|
||||||
#define ENCODER_INTERNAL_DVO1_ENUM_ID1 0x210B
|
|
||||||
#define ENCODER_EXTERNAL_SDVOA_ENUM_ID1 0x210C
|
|
||||||
#define ENCODER_EXTERNAL_SDVOB_ENUM_ID1 0x210D
|
|
||||||
#define ENCODER_TITFP513_ENUM_ID1 0x210E
|
|
||||||
#define ENCODER_INTERNAL_LVTM1_ENUM_ID1 0x210F
|
|
||||||
#define ENCODER_VT1623_ENUM_ID1 0x2110
|
|
||||||
#define ENCODER_HDMI_SI1930_ENUM_ID1 0x2111
|
|
||||||
#define ENCODER_HDMI_INTERNAL_ENUM_ID1 0x2112
|
|
||||||
#define ENCODER_INTERNAL_KLDSCP_TMDS1_ENUM_ID1 0x2113
|
|
||||||
#define ENCODER_INTERNAL_KLDSCP_DVO1_ENUM_ID1 0x2114
|
|
||||||
#define ENCODER_INTERNAL_KLDSCP_DAC1_ENUM_ID1 0x2115
|
|
||||||
#define ENCODER_INTERNAL_KLDSCP_DAC2_ENUM_ID1 0x2116
|
|
||||||
#define ENCODER_SI178_ENUM_ID1 0x2117
|
|
||||||
#define ENCODER_MVPU_FPGA_ENUM_ID1 0x2118
|
|
||||||
#define ENCODER_INTERNAL_DDI_ENUM_ID1 0x2119
|
|
||||||
#define ENCODER_VT1625_ENUM_ID1 0x211A
|
|
||||||
#define ENCODER_HDMI_SI1932_ENUM_ID1 0x211B
|
|
||||||
#define ENCODER_ENCODER_DP_AN9801_ENUM_ID1 0x211C
|
|
||||||
#define ENCODER_DP_DP501_ENUM_ID1 0x211D
|
|
||||||
#define ENCODER_INTERNAL_UNIPHY_ENUM_ID1 0x211E
|
|
||||||
*/
|
|
||||||
#define ENCODER_INTERNAL_LVDS_ENUM_ID1 ( GRAPH_OBJECT_TYPE_ENCODER << OBJECT_TYPE_SHIFT |\
|
|
||||||
GRAPH_OBJECT_ENUM_ID1 << ENUM_ID_SHIFT |\
|
|
||||||
ENCODER_OBJECT_ID_INTERNAL_LVDS << OBJECT_ID_SHIFT)
|
|
||||||
|
|
||||||
#define ENCODER_INTERNAL_TMDS1_ENUM_ID1 ( GRAPH_OBJECT_TYPE_ENCODER << OBJECT_TYPE_SHIFT |\
|
|
||||||
GRAPH_OBJECT_ENUM_ID1 << ENUM_ID_SHIFT |\
|
|
||||||
ENCODER_OBJECT_ID_INTERNAL_TMDS1 << OBJECT_ID_SHIFT)
|
|
||||||
|
|
||||||
#define ENCODER_INTERNAL_TMDS2_ENUM_ID1 ( GRAPH_OBJECT_TYPE_ENCODER << OBJECT_TYPE_SHIFT |\
|
|
||||||
GRAPH_OBJECT_ENUM_ID1 << ENUM_ID_SHIFT |\
|
|
||||||
ENCODER_OBJECT_ID_INTERNAL_TMDS2 << OBJECT_ID_SHIFT)
|
|
||||||
|
|
||||||
#define ENCODER_INTERNAL_DAC1_ENUM_ID1 ( GRAPH_OBJECT_TYPE_ENCODER << OBJECT_TYPE_SHIFT |\
|
|
||||||
GRAPH_OBJECT_ENUM_ID1 << ENUM_ID_SHIFT |\
|
|
||||||
ENCODER_OBJECT_ID_INTERNAL_DAC1 << OBJECT_ID_SHIFT)
|
|
||||||
|
|
||||||
#define ENCODER_INTERNAL_DAC2_ENUM_ID1 ( GRAPH_OBJECT_TYPE_ENCODER << OBJECT_TYPE_SHIFT |\
|
|
||||||
GRAPH_OBJECT_ENUM_ID1 << ENUM_ID_SHIFT |\
|
|
||||||
ENCODER_OBJECT_ID_INTERNAL_DAC2 << OBJECT_ID_SHIFT)
|
|
||||||
|
|
||||||
#define ENCODER_INTERNAL_SDVOA_ENUM_ID1 ( GRAPH_OBJECT_TYPE_ENCODER << OBJECT_TYPE_SHIFT |\
|
|
||||||
GRAPH_OBJECT_ENUM_ID1 << ENUM_ID_SHIFT |\
|
|
||||||
ENCODER_OBJECT_ID_INTERNAL_SDVOA << OBJECT_ID_SHIFT)
|
|
||||||
|
|
||||||
#define ENCODER_INTERNAL_SDVOA_ENUM_ID2 ( GRAPH_OBJECT_TYPE_ENCODER << OBJECT_TYPE_SHIFT |\
|
|
||||||
GRAPH_OBJECT_ENUM_ID2 << ENUM_ID_SHIFT |\
|
|
||||||
ENCODER_OBJECT_ID_INTERNAL_SDVOA << OBJECT_ID_SHIFT)
|
|
||||||
|
|
||||||
#define ENCODER_INTERNAL_SDVOB_ENUM_ID1 ( GRAPH_OBJECT_TYPE_ENCODER << OBJECT_TYPE_SHIFT |\
|
|
||||||
GRAPH_OBJECT_ENUM_ID1 << ENUM_ID_SHIFT |\
|
|
||||||
ENCODER_OBJECT_ID_INTERNAL_SDVOB << OBJECT_ID_SHIFT)
|
|
||||||
|
|
||||||
#define ENCODER_SIL170B_ENUM_ID1 ( GRAPH_OBJECT_TYPE_ENCODER << OBJECT_TYPE_SHIFT |\
|
|
||||||
GRAPH_OBJECT_ENUM_ID1 << ENUM_ID_SHIFT |\
|
|
||||||
ENCODER_OBJECT_ID_SI170B << OBJECT_ID_SHIFT)
|
|
||||||
|
|
||||||
#define ENCODER_CH7303_ENUM_ID1 ( GRAPH_OBJECT_TYPE_ENCODER << OBJECT_TYPE_SHIFT |\
|
|
||||||
GRAPH_OBJECT_ENUM_ID1 << ENUM_ID_SHIFT |\
|
|
||||||
ENCODER_OBJECT_ID_CH7303 << OBJECT_ID_SHIFT)
|
|
||||||
|
|
||||||
#define ENCODER_CH7301_ENUM_ID1 ( GRAPH_OBJECT_TYPE_ENCODER << OBJECT_TYPE_SHIFT |\
|
|
||||||
GRAPH_OBJECT_ENUM_ID1 << ENUM_ID_SHIFT |\
|
|
||||||
ENCODER_OBJECT_ID_CH7301 << OBJECT_ID_SHIFT)
|
|
||||||
|
|
||||||
#define ENCODER_INTERNAL_DVO1_ENUM_ID1 ( GRAPH_OBJECT_TYPE_ENCODER << OBJECT_TYPE_SHIFT |\
|
|
||||||
GRAPH_OBJECT_ENUM_ID1 << ENUM_ID_SHIFT |\
|
|
||||||
ENCODER_OBJECT_ID_INTERNAL_DVO1 << OBJECT_ID_SHIFT)
|
|
||||||
|
|
||||||
#define ENCODER_EXTERNAL_SDVOA_ENUM_ID1 ( GRAPH_OBJECT_TYPE_ENCODER << OBJECT_TYPE_SHIFT |\
|
|
||||||
GRAPH_OBJECT_ENUM_ID1 << ENUM_ID_SHIFT |\
|
|
||||||
ENCODER_OBJECT_ID_EXTERNAL_SDVOA << OBJECT_ID_SHIFT)
|
|
||||||
|
|
||||||
#define ENCODER_EXTERNAL_SDVOA_ENUM_ID2 ( GRAPH_OBJECT_TYPE_ENCODER << OBJECT_TYPE_SHIFT |\
|
|
||||||
GRAPH_OBJECT_ENUM_ID2 << ENUM_ID_SHIFT |\
|
|
||||||
ENCODER_OBJECT_ID_EXTERNAL_SDVOA << OBJECT_ID_SHIFT)
|
|
||||||
|
|
||||||
|
|
||||||
#define ENCODER_EXTERNAL_SDVOB_ENUM_ID1 ( GRAPH_OBJECT_TYPE_ENCODER << OBJECT_TYPE_SHIFT |\
|
|
||||||
GRAPH_OBJECT_ENUM_ID1 << ENUM_ID_SHIFT |\
|
|
||||||
ENCODER_OBJECT_ID_EXTERNAL_SDVOB << OBJECT_ID_SHIFT)
|
|
||||||
|
|
||||||
|
|
||||||
#define ENCODER_TITFP513_ENUM_ID1 ( GRAPH_OBJECT_TYPE_ENCODER << OBJECT_TYPE_SHIFT |\
|
|
||||||
GRAPH_OBJECT_ENUM_ID1 << ENUM_ID_SHIFT |\
|
|
||||||
ENCODER_OBJECT_ID_TITFP513 << OBJECT_ID_SHIFT)
|
|
||||||
|
|
||||||
#define ENCODER_INTERNAL_LVTM1_ENUM_ID1 ( GRAPH_OBJECT_TYPE_ENCODER << OBJECT_TYPE_SHIFT |\
|
|
||||||
GRAPH_OBJECT_ENUM_ID1 << ENUM_ID_SHIFT |\
|
|
||||||
ENCODER_OBJECT_ID_INTERNAL_LVTM1 << OBJECT_ID_SHIFT)
|
|
||||||
|
|
||||||
#define ENCODER_VT1623_ENUM_ID1 ( GRAPH_OBJECT_TYPE_ENCODER << OBJECT_TYPE_SHIFT |\
|
|
||||||
GRAPH_OBJECT_ENUM_ID1 << ENUM_ID_SHIFT |\
|
|
||||||
ENCODER_OBJECT_ID_VT1623 << OBJECT_ID_SHIFT)
|
|
||||||
|
|
||||||
#define ENCODER_HDMI_SI1930_ENUM_ID1 ( GRAPH_OBJECT_TYPE_ENCODER << OBJECT_TYPE_SHIFT |\
|
|
||||||
GRAPH_OBJECT_ENUM_ID1 << ENUM_ID_SHIFT |\
|
|
||||||
ENCODER_OBJECT_ID_HDMI_SI1930 << OBJECT_ID_SHIFT)
|
|
||||||
|
|
||||||
#define ENCODER_HDMI_INTERNAL_ENUM_ID1 ( GRAPH_OBJECT_TYPE_ENCODER << OBJECT_TYPE_SHIFT |\
|
|
||||||
GRAPH_OBJECT_ENUM_ID1 << ENUM_ID_SHIFT |\
|
|
||||||
ENCODER_OBJECT_ID_HDMI_INTERNAL << OBJECT_ID_SHIFT)
|
|
||||||
|
|
||||||
#define ENCODER_INTERNAL_KLDSCP_TMDS1_ENUM_ID1 ( GRAPH_OBJECT_TYPE_ENCODER << OBJECT_TYPE_SHIFT |\
|
|
||||||
GRAPH_OBJECT_ENUM_ID1 << ENUM_ID_SHIFT |\
|
|
||||||
ENCODER_OBJECT_ID_INTERNAL_KLDSCP_TMDS1 << OBJECT_ID_SHIFT)
|
|
||||||
|
|
||||||
|
|
||||||
#define ENCODER_INTERNAL_KLDSCP_TMDS1_ENUM_ID2 ( GRAPH_OBJECT_TYPE_ENCODER << OBJECT_TYPE_SHIFT |\
|
|
||||||
GRAPH_OBJECT_ENUM_ID2 << ENUM_ID_SHIFT |\
|
|
||||||
ENCODER_OBJECT_ID_INTERNAL_KLDSCP_TMDS1 << OBJECT_ID_SHIFT)
|
|
||||||
|
|
||||||
|
|
||||||
#define ENCODER_INTERNAL_KLDSCP_DVO1_ENUM_ID1 ( GRAPH_OBJECT_TYPE_ENCODER << OBJECT_TYPE_SHIFT |\
|
|
||||||
GRAPH_OBJECT_ENUM_ID1 << ENUM_ID_SHIFT |\
|
|
||||||
ENCODER_OBJECT_ID_INTERNAL_KLDSCP_DVO1 << OBJECT_ID_SHIFT)
|
|
||||||
|
|
||||||
#define ENCODER_INTERNAL_KLDSCP_DAC1_ENUM_ID1 ( GRAPH_OBJECT_TYPE_ENCODER << OBJECT_TYPE_SHIFT |\
|
|
||||||
GRAPH_OBJECT_ENUM_ID1 << ENUM_ID_SHIFT |\
|
|
||||||
ENCODER_OBJECT_ID_INTERNAL_KLDSCP_DAC1 << OBJECT_ID_SHIFT)
|
|
||||||
|
|
||||||
#define ENCODER_INTERNAL_KLDSCP_DAC2_ENUM_ID1 ( GRAPH_OBJECT_TYPE_ENCODER << OBJECT_TYPE_SHIFT |\
|
|
||||||
GRAPH_OBJECT_ENUM_ID1 << ENUM_ID_SHIFT |\
|
|
||||||
ENCODER_OBJECT_ID_INTERNAL_KLDSCP_DAC2 << OBJECT_ID_SHIFT) // Shared with CV/TV and CRT
|
|
||||||
|
|
||||||
#define ENCODER_SI178_ENUM_ID1 ( GRAPH_OBJECT_TYPE_ENCODER << OBJECT_TYPE_SHIFT |\
|
|
||||||
GRAPH_OBJECT_ENUM_ID1 << ENUM_ID_SHIFT |\
|
|
||||||
ENCODER_OBJECT_ID_SI178 << OBJECT_ID_SHIFT)
|
|
||||||
|
|
||||||
#define ENCODER_MVPU_FPGA_ENUM_ID1 ( GRAPH_OBJECT_TYPE_ENCODER << OBJECT_TYPE_SHIFT |\
|
|
||||||
GRAPH_OBJECT_ENUM_ID1 << ENUM_ID_SHIFT |\
|
|
||||||
ENCODER_OBJECT_ID_MVPU_FPGA << OBJECT_ID_SHIFT)
|
|
||||||
|
|
||||||
#define ENCODER_INTERNAL_DDI_ENUM_ID1 ( GRAPH_OBJECT_TYPE_ENCODER << OBJECT_TYPE_SHIFT |\
|
|
||||||
GRAPH_OBJECT_ENUM_ID1 << ENUM_ID_SHIFT |\
|
|
||||||
ENCODER_OBJECT_ID_INTERNAL_DDI << OBJECT_ID_SHIFT)
|
|
||||||
|
|
||||||
#define ENCODER_VT1625_ENUM_ID1 ( GRAPH_OBJECT_TYPE_ENCODER << OBJECT_TYPE_SHIFT |\
|
|
||||||
GRAPH_OBJECT_ENUM_ID1 << ENUM_ID_SHIFT |\
|
|
||||||
ENCODER_OBJECT_ID_VT1625 << OBJECT_ID_SHIFT)
|
|
||||||
|
|
||||||
#define ENCODER_HDMI_SI1932_ENUM_ID1 ( GRAPH_OBJECT_TYPE_ENCODER << OBJECT_TYPE_SHIFT |\
|
|
||||||
GRAPH_OBJECT_ENUM_ID1 << ENUM_ID_SHIFT |\
|
|
||||||
ENCODER_OBJECT_ID_HDMI_SI1932 << OBJECT_ID_SHIFT)
|
|
||||||
|
|
||||||
#define ENCODER_DP_DP501_ENUM_ID1 ( GRAPH_OBJECT_TYPE_ENCODER << OBJECT_TYPE_SHIFT |\
|
|
||||||
GRAPH_OBJECT_ENUM_ID1 << ENUM_ID_SHIFT |\
|
|
||||||
ENCODER_OBJECT_ID_DP_DP501 << OBJECT_ID_SHIFT)
|
|
||||||
|
|
||||||
#define ENCODER_DP_AN9801_ENUM_ID1 ( GRAPH_OBJECT_TYPE_ENCODER << OBJECT_TYPE_SHIFT |\
|
|
||||||
GRAPH_OBJECT_ENUM_ID1 << ENUM_ID_SHIFT |\
|
|
||||||
ENCODER_OBJECT_ID_DP_AN9801 << OBJECT_ID_SHIFT)
|
|
||||||
|
|
||||||
#define ENCODER_INTERNAL_UNIPHY_ENUM_ID1 ( GRAPH_OBJECT_TYPE_ENCODER << OBJECT_TYPE_SHIFT |\
|
|
||||||
GRAPH_OBJECT_ENUM_ID1 << ENUM_ID_SHIFT |\
|
|
||||||
ENCODER_OBJECT_ID_INTERNAL_UNIPHY << OBJECT_ID_SHIFT)
|
|
||||||
|
|
||||||
#define ENCODER_INTERNAL_UNIPHY_ENUM_ID2 ( GRAPH_OBJECT_TYPE_ENCODER << OBJECT_TYPE_SHIFT |\
|
|
||||||
GRAPH_OBJECT_ENUM_ID2 << ENUM_ID_SHIFT |\
|
|
||||||
ENCODER_OBJECT_ID_INTERNAL_UNIPHY << OBJECT_ID_SHIFT)
|
|
||||||
|
|
||||||
#define ENCODER_INTERNAL_KLDSCP_LVTMA_ENUM_ID1 ( GRAPH_OBJECT_TYPE_ENCODER << OBJECT_TYPE_SHIFT |\
|
|
||||||
GRAPH_OBJECT_ENUM_ID1 << ENUM_ID_SHIFT |\
|
|
||||||
ENCODER_OBJECT_ID_INTERNAL_KLDSCP_LVTMA << OBJECT_ID_SHIFT)
|
|
||||||
|
|
||||||
#define ENCODER_INTERNAL_UNIPHY1_ENUM_ID1 ( GRAPH_OBJECT_TYPE_ENCODER << OBJECT_TYPE_SHIFT |\
|
|
||||||
GRAPH_OBJECT_ENUM_ID1 << ENUM_ID_SHIFT |\
|
|
||||||
ENCODER_OBJECT_ID_INTERNAL_UNIPHY1 << OBJECT_ID_SHIFT)
|
|
||||||
|
|
||||||
#define ENCODER_INTERNAL_UNIPHY1_ENUM_ID2 ( GRAPH_OBJECT_TYPE_ENCODER << OBJECT_TYPE_SHIFT |\
|
|
||||||
GRAPH_OBJECT_ENUM_ID2 << ENUM_ID_SHIFT |\
|
|
||||||
ENCODER_OBJECT_ID_INTERNAL_UNIPHY1 << OBJECT_ID_SHIFT)
|
|
||||||
|
|
||||||
#define ENCODER_INTERNAL_UNIPHY2_ENUM_ID1 ( GRAPH_OBJECT_TYPE_ENCODER << OBJECT_TYPE_SHIFT |\
|
|
||||||
GRAPH_OBJECT_ENUM_ID1 << ENUM_ID_SHIFT |\
|
|
||||||
ENCODER_OBJECT_ID_INTERNAL_UNIPHY2 << OBJECT_ID_SHIFT)
|
|
||||||
|
|
||||||
#define ENCODER_INTERNAL_UNIPHY2_ENUM_ID2 ( GRAPH_OBJECT_TYPE_ENCODER << OBJECT_TYPE_SHIFT |\
|
|
||||||
GRAPH_OBJECT_ENUM_ID2 << ENUM_ID_SHIFT |\
|
|
||||||
ENCODER_OBJECT_ID_INTERNAL_UNIPHY2 << OBJECT_ID_SHIFT)
|
|
||||||
|
|
||||||
#define ENCODER_GENERAL_EXTERNAL_DVO_ENUM_ID1 ( GRAPH_OBJECT_TYPE_ENCODER << OBJECT_TYPE_SHIFT |\
|
|
||||||
GRAPH_OBJECT_ENUM_ID1 << ENUM_ID_SHIFT |\
|
|
||||||
ENCODER_OBJECT_ID_GENERAL_EXTERNAL_DVO << OBJECT_ID_SHIFT)
|
|
||||||
|
|
||||||
/****************************************************/
|
|
||||||
/* Connector Object ID definition - Shared with BIOS */
|
|
||||||
/****************************************************/
|
|
||||||
/*
|
|
||||||
#define CONNECTOR_SINGLE_LINK_DVI_I_ENUM_ID1 0x3101
|
|
||||||
#define CONNECTOR_DUAL_LINK_DVI_I_ENUM_ID1 0x3102
|
|
||||||
#define CONNECTOR_SINGLE_LINK_DVI_D_ENUM_ID1 0x3103
|
|
||||||
#define CONNECTOR_DUAL_LINK_DVI_D_ENUM_ID1 0x3104
|
|
||||||
#define CONNECTOR_VGA_ENUM_ID1 0x3105
|
|
||||||
#define CONNECTOR_COMPOSITE_ENUM_ID1 0x3106
|
|
||||||
#define CONNECTOR_SVIDEO_ENUM_ID1 0x3107
|
|
||||||
#define CONNECTOR_YPbPr_ENUM_ID1 0x3108
|
|
||||||
#define CONNECTOR_D_CONNECTORE_ENUM_ID1 0x3109
|
|
||||||
#define CONNECTOR_9PIN_DIN_ENUM_ID1 0x310A
|
|
||||||
#define CONNECTOR_SCART_ENUM_ID1 0x310B
|
|
||||||
#define CONNECTOR_HDMI_TYPE_A_ENUM_ID1 0x310C
|
|
||||||
#define CONNECTOR_HDMI_TYPE_B_ENUM_ID1 0x310D
|
|
||||||
#define CONNECTOR_LVDS_ENUM_ID1 0x310E
|
|
||||||
#define CONNECTOR_7PIN_DIN_ENUM_ID1 0x310F
|
|
||||||
#define CONNECTOR_PCIE_CONNECTOR_ENUM_ID1 0x3110
|
|
||||||
*/
|
|
||||||
#define CONNECTOR_LVDS_ENUM_ID1 ( GRAPH_OBJECT_TYPE_CONNECTOR << OBJECT_TYPE_SHIFT |\
|
|
||||||
GRAPH_OBJECT_ENUM_ID1 << ENUM_ID_SHIFT |\
|
|
||||||
CONNECTOR_OBJECT_ID_LVDS << OBJECT_ID_SHIFT)
|
|
||||||
|
|
||||||
#define CONNECTOR_LVDS_ENUM_ID2 ( GRAPH_OBJECT_TYPE_CONNECTOR << OBJECT_TYPE_SHIFT |\
|
|
||||||
GRAPH_OBJECT_ENUM_ID2 << ENUM_ID_SHIFT |\
|
|
||||||
CONNECTOR_OBJECT_ID_LVDS << OBJECT_ID_SHIFT)
|
|
||||||
|
|
||||||
#define CONNECTOR_eDP_ENUM_ID1 ( GRAPH_OBJECT_TYPE_CONNECTOR << OBJECT_TYPE_SHIFT |\
|
|
||||||
GRAPH_OBJECT_ENUM_ID1 << ENUM_ID_SHIFT |\
|
|
||||||
CONNECTOR_OBJECT_ID_eDP << OBJECT_ID_SHIFT)
|
|
||||||
|
|
||||||
#define CONNECTOR_eDP_ENUM_ID2 ( GRAPH_OBJECT_TYPE_CONNECTOR << OBJECT_TYPE_SHIFT |\
|
|
||||||
GRAPH_OBJECT_ENUM_ID2 << ENUM_ID_SHIFT |\
|
|
||||||
CONNECTOR_OBJECT_ID_eDP << OBJECT_ID_SHIFT)
|
|
||||||
|
|
||||||
#define CONNECTOR_SINGLE_LINK_DVI_I_ENUM_ID1 ( GRAPH_OBJECT_TYPE_CONNECTOR << OBJECT_TYPE_SHIFT |\
|
|
||||||
GRAPH_OBJECT_ENUM_ID1 << ENUM_ID_SHIFT |\
|
|
||||||
CONNECTOR_OBJECT_ID_SINGLE_LINK_DVI_I << OBJECT_ID_SHIFT)
|
|
||||||
|
|
||||||
#define CONNECTOR_SINGLE_LINK_DVI_I_ENUM_ID2 ( GRAPH_OBJECT_TYPE_CONNECTOR << OBJECT_TYPE_SHIFT |\
|
|
||||||
GRAPH_OBJECT_ENUM_ID2 << ENUM_ID_SHIFT |\
|
|
||||||
CONNECTOR_OBJECT_ID_SINGLE_LINK_DVI_I << OBJECT_ID_SHIFT)
|
|
||||||
|
|
||||||
#define CONNECTOR_DUAL_LINK_DVI_I_ENUM_ID1 ( GRAPH_OBJECT_TYPE_CONNECTOR << OBJECT_TYPE_SHIFT |\
|
|
||||||
GRAPH_OBJECT_ENUM_ID1 << ENUM_ID_SHIFT |\
|
|
||||||
CONNECTOR_OBJECT_ID_DUAL_LINK_DVI_I << OBJECT_ID_SHIFT)
|
|
||||||
|
|
||||||
#define CONNECTOR_DUAL_LINK_DVI_I_ENUM_ID2 ( GRAPH_OBJECT_TYPE_CONNECTOR << OBJECT_TYPE_SHIFT |\
|
|
||||||
GRAPH_OBJECT_ENUM_ID2 << ENUM_ID_SHIFT |\
|
|
||||||
CONNECTOR_OBJECT_ID_DUAL_LINK_DVI_I << OBJECT_ID_SHIFT)
|
|
||||||
|
|
||||||
#define CONNECTOR_SINGLE_LINK_DVI_D_ENUM_ID1 ( GRAPH_OBJECT_TYPE_CONNECTOR << OBJECT_TYPE_SHIFT |\
|
|
||||||
GRAPH_OBJECT_ENUM_ID1 << ENUM_ID_SHIFT |\
|
|
||||||
CONNECTOR_OBJECT_ID_SINGLE_LINK_DVI_D << OBJECT_ID_SHIFT)
|
|
||||||
|
|
||||||
#define CONNECTOR_SINGLE_LINK_DVI_D_ENUM_ID2 ( GRAPH_OBJECT_TYPE_CONNECTOR << OBJECT_TYPE_SHIFT |\
|
|
||||||
GRAPH_OBJECT_ENUM_ID2 << ENUM_ID_SHIFT |\
|
|
||||||
CONNECTOR_OBJECT_ID_SINGLE_LINK_DVI_D << OBJECT_ID_SHIFT)
|
|
||||||
|
|
||||||
#define CONNECTOR_DUAL_LINK_DVI_D_ENUM_ID1 ( GRAPH_OBJECT_TYPE_CONNECTOR << OBJECT_TYPE_SHIFT |\
|
|
||||||
GRAPH_OBJECT_ENUM_ID1 << ENUM_ID_SHIFT |\
|
|
||||||
CONNECTOR_OBJECT_ID_DUAL_LINK_DVI_D << OBJECT_ID_SHIFT)
|
|
||||||
|
|
||||||
#define CONNECTOR_DUAL_LINK_DVI_D_ENUM_ID2 ( GRAPH_OBJECT_TYPE_CONNECTOR << OBJECT_TYPE_SHIFT |\
|
|
||||||
GRAPH_OBJECT_ENUM_ID2 << ENUM_ID_SHIFT |\
|
|
||||||
CONNECTOR_OBJECT_ID_DUAL_LINK_DVI_D << OBJECT_ID_SHIFT)
|
|
||||||
|
|
||||||
#define CONNECTOR_DUAL_LINK_DVI_D_ENUM_ID3 ( GRAPH_OBJECT_TYPE_CONNECTOR << OBJECT_TYPE_SHIFT |\
|
|
||||||
GRAPH_OBJECT_ENUM_ID3 << ENUM_ID_SHIFT |\
|
|
||||||
CONNECTOR_OBJECT_ID_DUAL_LINK_DVI_D << OBJECT_ID_SHIFT)
|
|
||||||
|
|
||||||
#define CONNECTOR_VGA_ENUM_ID1 ( GRAPH_OBJECT_TYPE_CONNECTOR << OBJECT_TYPE_SHIFT |\
|
|
||||||
GRAPH_OBJECT_ENUM_ID1 << ENUM_ID_SHIFT |\
|
|
||||||
CONNECTOR_OBJECT_ID_VGA << OBJECT_ID_SHIFT)
|
|
||||||
|
|
||||||
#define CONNECTOR_VGA_ENUM_ID2 ( GRAPH_OBJECT_TYPE_CONNECTOR << OBJECT_TYPE_SHIFT |\
|
|
||||||
GRAPH_OBJECT_ENUM_ID2 << ENUM_ID_SHIFT |\
|
|
||||||
CONNECTOR_OBJECT_ID_VGA << OBJECT_ID_SHIFT)
|
|
||||||
|
|
||||||
#define CONNECTOR_COMPOSITE_ENUM_ID1 ( GRAPH_OBJECT_TYPE_CONNECTOR << OBJECT_TYPE_SHIFT |\
|
|
||||||
GRAPH_OBJECT_ENUM_ID1 << ENUM_ID_SHIFT |\
|
|
||||||
CONNECTOR_OBJECT_ID_COMPOSITE << OBJECT_ID_SHIFT)
|
|
||||||
|
|
||||||
#define CONNECTOR_COMPOSITE_ENUM_ID2 ( GRAPH_OBJECT_TYPE_CONNECTOR << OBJECT_TYPE_SHIFT |\
|
|
||||||
GRAPH_OBJECT_ENUM_ID2 << ENUM_ID_SHIFT |\
|
|
||||||
CONNECTOR_OBJECT_ID_COMPOSITE << OBJECT_ID_SHIFT)
|
|
||||||
|
|
||||||
#define CONNECTOR_SVIDEO_ENUM_ID1 ( GRAPH_OBJECT_TYPE_CONNECTOR << OBJECT_TYPE_SHIFT |\
|
|
||||||
GRAPH_OBJECT_ENUM_ID1 << ENUM_ID_SHIFT |\
|
|
||||||
CONNECTOR_OBJECT_ID_SVIDEO << OBJECT_ID_SHIFT)
|
|
||||||
|
|
||||||
#define CONNECTOR_SVIDEO_ENUM_ID2 ( GRAPH_OBJECT_TYPE_CONNECTOR << OBJECT_TYPE_SHIFT |\
|
|
||||||
GRAPH_OBJECT_ENUM_ID2 << ENUM_ID_SHIFT |\
|
|
||||||
CONNECTOR_OBJECT_ID_SVIDEO << OBJECT_ID_SHIFT)
|
|
||||||
|
|
||||||
#define CONNECTOR_YPbPr_ENUM_ID1 ( GRAPH_OBJECT_TYPE_CONNECTOR << OBJECT_TYPE_SHIFT |\
|
|
||||||
GRAPH_OBJECT_ENUM_ID1 << ENUM_ID_SHIFT |\
|
|
||||||
CONNECTOR_OBJECT_ID_YPbPr << OBJECT_ID_SHIFT)
|
|
||||||
|
|
||||||
#define CONNECTOR_YPbPr_ENUM_ID2 ( GRAPH_OBJECT_TYPE_CONNECTOR << OBJECT_TYPE_SHIFT |\
|
|
||||||
GRAPH_OBJECT_ENUM_ID2 << ENUM_ID_SHIFT |\
|
|
||||||
CONNECTOR_OBJECT_ID_YPbPr << OBJECT_ID_SHIFT)
|
|
||||||
|
|
||||||
#define CONNECTOR_D_CONNECTOR_ENUM_ID1 ( GRAPH_OBJECT_TYPE_CONNECTOR << OBJECT_TYPE_SHIFT |\
|
|
||||||
GRAPH_OBJECT_ENUM_ID1 << ENUM_ID_SHIFT |\
|
|
||||||
CONNECTOR_OBJECT_ID_D_CONNECTOR << OBJECT_ID_SHIFT)
|
|
||||||
|
|
||||||
#define CONNECTOR_D_CONNECTOR_ENUM_ID2 ( GRAPH_OBJECT_TYPE_CONNECTOR << OBJECT_TYPE_SHIFT |\
|
|
||||||
GRAPH_OBJECT_ENUM_ID2 << ENUM_ID_SHIFT |\
|
|
||||||
CONNECTOR_OBJECT_ID_D_CONNECTOR << OBJECT_ID_SHIFT)
|
|
||||||
|
|
||||||
#define CONNECTOR_9PIN_DIN_ENUM_ID1 ( GRAPH_OBJECT_TYPE_CONNECTOR << OBJECT_TYPE_SHIFT |\
|
|
||||||
GRAPH_OBJECT_ENUM_ID1 << ENUM_ID_SHIFT |\
|
|
||||||
CONNECTOR_OBJECT_ID_9PIN_DIN << OBJECT_ID_SHIFT)
|
|
||||||
|
|
||||||
#define CONNECTOR_9PIN_DIN_ENUM_ID2 ( GRAPH_OBJECT_TYPE_CONNECTOR << OBJECT_TYPE_SHIFT |\
|
|
||||||
GRAPH_OBJECT_ENUM_ID2 << ENUM_ID_SHIFT |\
|
|
||||||
CONNECTOR_OBJECT_ID_9PIN_DIN << OBJECT_ID_SHIFT)
|
|
||||||
|
|
||||||
#define CONNECTOR_SCART_ENUM_ID1 ( GRAPH_OBJECT_TYPE_CONNECTOR << OBJECT_TYPE_SHIFT |\
|
|
||||||
GRAPH_OBJECT_ENUM_ID1 << ENUM_ID_SHIFT |\
|
|
||||||
CONNECTOR_OBJECT_ID_SCART << OBJECT_ID_SHIFT)
|
|
||||||
|
|
||||||
#define CONNECTOR_SCART_ENUM_ID2 ( GRAPH_OBJECT_TYPE_CONNECTOR << OBJECT_TYPE_SHIFT |\
|
|
||||||
GRAPH_OBJECT_ENUM_ID2 << ENUM_ID_SHIFT |\
|
|
||||||
CONNECTOR_OBJECT_ID_SCART << OBJECT_ID_SHIFT)
|
|
||||||
|
|
||||||
#define CONNECTOR_HDMI_TYPE_A_ENUM_ID1 ( GRAPH_OBJECT_TYPE_CONNECTOR << OBJECT_TYPE_SHIFT |\
|
|
||||||
GRAPH_OBJECT_ENUM_ID1 << ENUM_ID_SHIFT |\
|
|
||||||
CONNECTOR_OBJECT_ID_HDMI_TYPE_A << OBJECT_ID_SHIFT)
|
|
||||||
|
|
||||||
#define CONNECTOR_HDMI_TYPE_A_ENUM_ID2 ( GRAPH_OBJECT_TYPE_CONNECTOR << OBJECT_TYPE_SHIFT |\
|
|
||||||
GRAPH_OBJECT_ENUM_ID2 << ENUM_ID_SHIFT |\
|
|
||||||
CONNECTOR_OBJECT_ID_HDMI_TYPE_A << OBJECT_ID_SHIFT)
|
|
||||||
|
|
||||||
#define CONNECTOR_HDMI_TYPE_A_ENUM_ID3 ( GRAPH_OBJECT_TYPE_CONNECTOR << OBJECT_TYPE_SHIFT |\
|
|
||||||
GRAPH_OBJECT_ENUM_ID3 << ENUM_ID_SHIFT |\
|
|
||||||
CONNECTOR_OBJECT_ID_HDMI_TYPE_A << OBJECT_ID_SHIFT)
|
|
||||||
|
|
||||||
#define CONNECTOR_HDMI_TYPE_B_ENUM_ID1 ( GRAPH_OBJECT_TYPE_CONNECTOR << OBJECT_TYPE_SHIFT |\
|
|
||||||
GRAPH_OBJECT_ENUM_ID1 << ENUM_ID_SHIFT |\
|
|
||||||
CONNECTOR_OBJECT_ID_HDMI_TYPE_B << OBJECT_ID_SHIFT)
|
|
||||||
|
|
||||||
#define CONNECTOR_HDMI_TYPE_B_ENUM_ID2 ( GRAPH_OBJECT_TYPE_CONNECTOR << OBJECT_TYPE_SHIFT |\
|
|
||||||
GRAPH_OBJECT_ENUM_ID2 << ENUM_ID_SHIFT |\
|
|
||||||
CONNECTOR_OBJECT_ID_HDMI_TYPE_B << OBJECT_ID_SHIFT)
|
|
||||||
|
|
||||||
#define CONNECTOR_7PIN_DIN_ENUM_ID1 ( GRAPH_OBJECT_TYPE_CONNECTOR << OBJECT_TYPE_SHIFT |\
|
|
||||||
GRAPH_OBJECT_ENUM_ID1 << ENUM_ID_SHIFT |\
|
|
||||||
CONNECTOR_OBJECT_ID_7PIN_DIN << OBJECT_ID_SHIFT)
|
|
||||||
#define CONNECTOR_7PIN_DIN_ENUM_ID2 ( GRAPH_OBJECT_TYPE_CONNECTOR << OBJECT_TYPE_SHIFT |\
|
|
||||||
GRAPH_OBJECT_ENUM_ID2 << ENUM_ID_SHIFT |\
|
|
||||||
CONNECTOR_OBJECT_ID_7PIN_DIN << OBJECT_ID_SHIFT)
|
|
||||||
|
|
||||||
#define CONNECTOR_PCIE_CONNECTOR_ENUM_ID1 ( GRAPH_OBJECT_TYPE_CONNECTOR << OBJECT_TYPE_SHIFT |\
|
|
||||||
GRAPH_OBJECT_ENUM_ID1 << ENUM_ID_SHIFT |\
|
|
||||||
CONNECTOR_OBJECT_ID_PCIE_CONNECTOR << OBJECT_ID_SHIFT)
|
|
||||||
|
|
||||||
#define CONNECTOR_PCIE_CONNECTOR_ENUM_ID2 ( GRAPH_OBJECT_TYPE_CONNECTOR << OBJECT_TYPE_SHIFT |\
|
|
||||||
GRAPH_OBJECT_ENUM_ID2 << ENUM_ID_SHIFT |\
|
|
||||||
CONNECTOR_OBJECT_ID_PCIE_CONNECTOR << OBJECT_ID_SHIFT)
|
|
||||||
|
|
||||||
#define CONNECTOR_CROSSFIRE_ENUM_ID1 ( GRAPH_OBJECT_TYPE_CONNECTOR << OBJECT_TYPE_SHIFT |\
|
|
||||||
GRAPH_OBJECT_ENUM_ID1 << ENUM_ID_SHIFT |\
|
|
||||||
CONNECTOR_OBJECT_ID_CROSSFIRE << OBJECT_ID_SHIFT)
|
|
||||||
|
|
||||||
#define CONNECTOR_CROSSFIRE_ENUM_ID2 ( GRAPH_OBJECT_TYPE_CONNECTOR << OBJECT_TYPE_SHIFT |\
|
|
||||||
GRAPH_OBJECT_ENUM_ID2 << ENUM_ID_SHIFT |\
|
|
||||||
CONNECTOR_OBJECT_ID_CROSSFIRE << OBJECT_ID_SHIFT)
|
|
||||||
|
|
||||||
|
|
||||||
#define CONNECTOR_HARDCODE_DVI_ENUM_ID1 ( GRAPH_OBJECT_TYPE_CONNECTOR << OBJECT_TYPE_SHIFT |\
|
|
||||||
GRAPH_OBJECT_ENUM_ID1 << ENUM_ID_SHIFT |\
|
|
||||||
CONNECTOR_OBJECT_ID_HARDCODE_DVI << OBJECT_ID_SHIFT)
|
|
||||||
|
|
||||||
#define CONNECTOR_HARDCODE_DVI_ENUM_ID2 ( GRAPH_OBJECT_TYPE_CONNECTOR << OBJECT_TYPE_SHIFT |\
|
|
||||||
GRAPH_OBJECT_ENUM_ID2 << ENUM_ID_SHIFT |\
|
|
||||||
CONNECTOR_OBJECT_ID_HARDCODE_DVI << OBJECT_ID_SHIFT)
|
|
||||||
|
|
||||||
#define CONNECTOR_DISPLAYPORT_ENUM_ID1 ( GRAPH_OBJECT_TYPE_CONNECTOR << OBJECT_TYPE_SHIFT |\
|
|
||||||
GRAPH_OBJECT_ENUM_ID1 << ENUM_ID_SHIFT |\
|
|
||||||
CONNECTOR_OBJECT_ID_DISPLAYPORT << OBJECT_ID_SHIFT)
|
|
||||||
|
|
||||||
#define CONNECTOR_DISPLAYPORT_ENUM_ID2 ( GRAPH_OBJECT_TYPE_CONNECTOR << OBJECT_TYPE_SHIFT |\
|
|
||||||
GRAPH_OBJECT_ENUM_ID2 << ENUM_ID_SHIFT |\
|
|
||||||
CONNECTOR_OBJECT_ID_DISPLAYPORT << OBJECT_ID_SHIFT)
|
|
||||||
|
|
||||||
#define CONNECTOR_DISPLAYPORT_ENUM_ID3 ( GRAPH_OBJECT_TYPE_CONNECTOR << OBJECT_TYPE_SHIFT |\
|
|
||||||
GRAPH_OBJECT_ENUM_ID3 << ENUM_ID_SHIFT |\
|
|
||||||
CONNECTOR_OBJECT_ID_DISPLAYPORT << OBJECT_ID_SHIFT)
|
|
||||||
|
|
||||||
#define CONNECTOR_DISPLAYPORT_ENUM_ID4 ( GRAPH_OBJECT_TYPE_CONNECTOR << OBJECT_TYPE_SHIFT |\
|
|
||||||
GRAPH_OBJECT_ENUM_ID4 << ENUM_ID_SHIFT |\
|
|
||||||
CONNECTOR_OBJECT_ID_DISPLAYPORT << OBJECT_ID_SHIFT)
|
|
||||||
|
|
||||||
#define CONNECTOR_DISPLAYPORT_ENUM_ID5 ( GRAPH_OBJECT_TYPE_CONNECTOR << OBJECT_TYPE_SHIFT |\
|
|
||||||
GRAPH_OBJECT_ENUM_ID5 << ENUM_ID_SHIFT |\
|
|
||||||
CONNECTOR_OBJECT_ID_DISPLAYPORT << OBJECT_ID_SHIFT)
|
|
||||||
|
|
||||||
#define CONNECTOR_DISPLAYPORT_ENUM_ID6 ( GRAPH_OBJECT_TYPE_CONNECTOR << OBJECT_TYPE_SHIFT |\
|
|
||||||
GRAPH_OBJECT_ENUM_ID6 << ENUM_ID_SHIFT |\
|
|
||||||
CONNECTOR_OBJECT_ID_DISPLAYPORT << OBJECT_ID_SHIFT)
|
|
||||||
|
|
||||||
#define CONNECTOR_MXM_ENUM_ID1 ( GRAPH_OBJECT_TYPE_CONNECTOR << OBJECT_TYPE_SHIFT |\
|
|
||||||
GRAPH_OBJECT_ENUM_ID1 << ENUM_ID_SHIFT |\
|
|
||||||
CONNECTOR_OBJECT_ID_MXM << OBJECT_ID_SHIFT) //Mapping to MXM_DP_A
|
|
||||||
|
|
||||||
#define CONNECTOR_MXM_ENUM_ID2 ( GRAPH_OBJECT_TYPE_CONNECTOR << OBJECT_TYPE_SHIFT |\
|
|
||||||
GRAPH_OBJECT_ENUM_ID2 << ENUM_ID_SHIFT |\
|
|
||||||
CONNECTOR_OBJECT_ID_MXM << OBJECT_ID_SHIFT) //Mapping to MXM_DP_B
|
|
||||||
|
|
||||||
#define CONNECTOR_MXM_ENUM_ID3 ( GRAPH_OBJECT_TYPE_CONNECTOR << OBJECT_TYPE_SHIFT |\
|
|
||||||
GRAPH_OBJECT_ENUM_ID3 << ENUM_ID_SHIFT |\
|
|
||||||
CONNECTOR_OBJECT_ID_MXM << OBJECT_ID_SHIFT) //Mapping to MXM_DP_C
|
|
||||||
|
|
||||||
#define CONNECTOR_MXM_ENUM_ID4 ( GRAPH_OBJECT_TYPE_CONNECTOR << OBJECT_TYPE_SHIFT |\
|
|
||||||
GRAPH_OBJECT_ENUM_ID4 << ENUM_ID_SHIFT |\
|
|
||||||
CONNECTOR_OBJECT_ID_MXM << OBJECT_ID_SHIFT) //Mapping to MXM_DP_D
|
|
||||||
|
|
||||||
#define CONNECTOR_MXM_ENUM_ID5 ( GRAPH_OBJECT_TYPE_CONNECTOR << OBJECT_TYPE_SHIFT |\
|
|
||||||
GRAPH_OBJECT_ENUM_ID5 << ENUM_ID_SHIFT |\
|
|
||||||
CONNECTOR_OBJECT_ID_MXM << OBJECT_ID_SHIFT) //Mapping to MXM_LVDS_TXxx
|
|
||||||
|
|
||||||
#define CONNECTOR_MXM_ENUM_ID6 ( GRAPH_OBJECT_TYPE_CONNECTOR << OBJECT_TYPE_SHIFT |\
|
|
||||||
GRAPH_OBJECT_ENUM_ID6 << ENUM_ID_SHIFT |\
|
|
||||||
CONNECTOR_OBJECT_ID_MXM << OBJECT_ID_SHIFT) //Mapping to MXM_LVDS_UXxx
|
|
||||||
|
|
||||||
#define CONNECTOR_MXM_ENUM_ID7 ( GRAPH_OBJECT_TYPE_CONNECTOR << OBJECT_TYPE_SHIFT |\
|
|
||||||
GRAPH_OBJECT_ENUM_ID7 << ENUM_ID_SHIFT |\
|
|
||||||
CONNECTOR_OBJECT_ID_MXM << OBJECT_ID_SHIFT) //Mapping to MXM_DAC
|
|
||||||
|
|
||||||
/****************************************************/
|
|
||||||
/* Router Object ID definition - Shared with BIOS */
|
|
||||||
/****************************************************/
|
|
||||||
#define ROUTER_I2C_EXTENDER_CNTL_ENUM_ID1 ( GRAPH_OBJECT_TYPE_ROUTER << OBJECT_TYPE_SHIFT |\
|
|
||||||
GRAPH_OBJECT_ENUM_ID1 << ENUM_ID_SHIFT |\
|
|
||||||
ROUTER_OBJECT_ID_I2C_EXTENDER_CNTL << OBJECT_ID_SHIFT)
|
|
||||||
|
|
||||||
/* deleted */
|
|
||||||
|
|
||||||
/****************************************************/
|
|
||||||
/* Generic Object ID definition - Shared with BIOS */
|
|
||||||
/****************************************************/
|
|
||||||
#define GENERICOBJECT_GLSYNC_ENUM_ID1 (GRAPH_OBJECT_TYPE_GENERIC << OBJECT_TYPE_SHIFT |\
|
|
||||||
GRAPH_OBJECT_ENUM_ID1 << ENUM_ID_SHIFT |\
|
|
||||||
GENERIC_OBJECT_ID_GLSYNC << OBJECT_ID_SHIFT)
|
|
||||||
|
|
||||||
#define GENERICOBJECT_PX2_NON_DRIVABLE_ID1 (GRAPH_OBJECT_TYPE_GENERIC << OBJECT_TYPE_SHIFT |\
|
|
||||||
GRAPH_OBJECT_ENUM_ID1 << ENUM_ID_SHIFT |\
|
|
||||||
GENERIC_OBJECT_ID_PX2_NON_DRIVABLE<< OBJECT_ID_SHIFT)
|
|
||||||
|
|
||||||
#define GENERICOBJECT_PX2_NON_DRIVABLE_ID2 (GRAPH_OBJECT_TYPE_GENERIC << OBJECT_TYPE_SHIFT |\
|
|
||||||
GRAPH_OBJECT_ENUM_ID2 << ENUM_ID_SHIFT |\
|
|
||||||
GENERIC_OBJECT_ID_PX2_NON_DRIVABLE<< OBJECT_ID_SHIFT)
|
|
||||||
|
|
||||||
#define GENERICOBJECT_MXM_OPM_ENUM_ID1 (GRAPH_OBJECT_TYPE_GENERIC << OBJECT_TYPE_SHIFT |\
|
|
||||||
GRAPH_OBJECT_ENUM_ID1 << ENUM_ID_SHIFT |\
|
|
||||||
GENERIC_OBJECT_ID_MXM_OPM << OBJECT_ID_SHIFT)
|
|
||||||
|
|
||||||
/****************************************************/
|
|
||||||
/* Object Cap definition - Shared with BIOS */
|
|
||||||
/****************************************************/
|
|
||||||
#define GRAPHICS_OBJECT_CAP_I2C 0x00000001L
|
|
||||||
#define GRAPHICS_OBJECT_CAP_TABLE_ID 0x00000002L
|
|
||||||
|
|
||||||
|
|
||||||
#define GRAPHICS_OBJECT_I2CCOMMAND_TABLE_ID 0x01
|
|
||||||
#define GRAPHICS_OBJECT_HOTPLUGDETECTIONINTERUPT_TABLE_ID 0x02
|
|
||||||
#define GRAPHICS_OBJECT_ENCODER_OUTPUT_PROTECTION_TABLE_ID 0x03
|
|
||||||
|
|
||||||
#if defined(_X86_)
|
|
||||||
#pragma pack()
|
|
||||||
#endif
|
|
||||||
|
|
||||||
#endif /*GRAPHICTYPE */
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
File diff suppressed because it is too large
Load Diff
@@ -1,25 +0,0 @@
|
|||||||
/*
|
|
||||||
* Copyright 2006-2007 Advanced Micro Devices, Inc.
|
|
||||||
*
|
|
||||||
* Permission is hereby granted, free of charge, to any person obtaining a
|
|
||||||
* copy of this software and associated documentation files (the "Software"),
|
|
||||||
* to deal in the Software without restriction, including without limitation
|
|
||||||
* the rights to use, copy, modify, merge, publish, distribute, sublicense,
|
|
||||||
* and/or sell copies of the Software, and to permit persons to whom the
|
|
||||||
* Software is furnished to do so, subject to the following conditions:
|
|
||||||
*
|
|
||||||
* The above copyright notice and this permission notice shall be included in
|
|
||||||
* all copies or substantial portions of the Software.
|
|
||||||
*
|
|
||||||
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
|
||||||
* IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
|
||||||
* FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
|
|
||||||
* THE COPYRIGHT HOLDER(S) OR AUTHOR(S) BE LIABLE FOR ANY CLAIM, DAMAGES OR
|
|
||||||
* OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE,
|
|
||||||
* ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
|
|
||||||
* OTHER DEALINGS IN THE SOFTWARE.
|
|
||||||
*/
|
|
||||||
|
|
||||||
//This is a dummy file used by driver-parser during compilation.
|
|
||||||
//Without this file, compatibility will be broken among ASICs and BIOs vs. driver
|
|
||||||
//James H. Apr. 22/03
|
|
||||||
@@ -24,190 +24,3 @@
|
|||||||
# define TRACE(x...) ;
|
# define TRACE(x...) ;
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
|
||||||
status_t
|
|
||||||
AtomParser(void *parameterSpace, uint8_t index, void *handle, void *biosBase)
|
|
||||||
{
|
|
||||||
DEVICE_DATA deviceData;
|
|
||||||
|
|
||||||
deviceData.pParameterSpace = (UINT32*)parameterSpace;
|
|
||||||
deviceData.CAIL = handle;
|
|
||||||
deviceData.pBIOS_Image = (UINT8*)biosBase;
|
|
||||||
deviceData.format = TABLE_FORMAT_BIOS;
|
|
||||||
|
|
||||||
switch (ParseTable(&deviceData, index)) {
|
|
||||||
case CD_SUCCESS:
|
|
||||||
TRACE("%s: CD_SUCCESS : success\n", __func__);
|
|
||||||
return B_OK;
|
|
||||||
break;
|
|
||||||
case CD_CALL_TABLE:
|
|
||||||
TRACE("%s: CD_CALL_TABLE : success\n", __func__);
|
|
||||||
return B_OK;
|
|
||||||
break;
|
|
||||||
case CD_COMPLETED:
|
|
||||||
TRACE("%s: CD_COMPLETED : success\n", __func__);
|
|
||||||
return B_OK;
|
|
||||||
break;
|
|
||||||
default:
|
|
||||||
TRACE("%s: UNKNOWN ERROR\n", __func__);
|
|
||||||
}
|
|
||||||
return B_ERROR;
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
/* Begin AtomBIOS OS callbacks
|
|
||||||
These functions are used by AtomBios to access
|
|
||||||
functions and data provided by the accelerant
|
|
||||||
*/
|
|
||||||
extern "C" {
|
|
||||||
|
|
||||||
|
|
||||||
VOID*
|
|
||||||
CailAllocateMemory(VOID *CAIL, UINT16 size)
|
|
||||||
{
|
|
||||||
TRACE("AtomBios callback %s, size = %d\n", __func__, size);
|
|
||||||
return malloc(size);
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
VOID
|
|
||||||
CailReleaseMemory(VOID *CAIL, VOID *addr)
|
|
||||||
{
|
|
||||||
TRACE("AtomBios callback %s\n", __func__);
|
|
||||||
free(addr);
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
VOID
|
|
||||||
CailDelayMicroSeconds(VOID *CAIL, UINT32 delay)
|
|
||||||
{
|
|
||||||
usleep(delay);
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
UINT32
|
|
||||||
CailReadATIRegister(VOID* CAIL, UINT32 idx)
|
|
||||||
{
|
|
||||||
TRACE("AtomBios callback %s, idx (0x%X)\n", __func__, idx << 2);
|
|
||||||
return Read32(OUT, idx << 2);
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
VOID
|
|
||||||
CailWriteATIRegister(VOID *CAIL, UINT32 idx, UINT32 data)
|
|
||||||
{
|
|
||||||
TRACE("AtomBios callback %s, idx (0x%X)\n", __func__, idx << 2);
|
|
||||||
|
|
||||||
// TODO : save MMIO via atomSaveRegisters in CailWriteATIRegister
|
|
||||||
// atomSaveRegisters((atomBiosHandlePtr)CAIL, atomRegisterMMIO, idx << 2);
|
|
||||||
Write32(OUT, idx << 2, data);
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
VOID
|
|
||||||
CailReadPCIConfigData(VOID *CAIL, VOID* ret, UINT32 idx, UINT16 size)
|
|
||||||
{
|
|
||||||
TRACE("AtomBios callback %s, idx (0x%X)\n", __func__, idx);
|
|
||||||
// TODO : CailReadPCIConfigData
|
|
||||||
|
|
||||||
// pci_device_cfg_read(RHDPTRI((atomBiosHandlePtr)CAIL)->PciInfo,
|
|
||||||
// ret, idx << 2 , size >> 3, NULL);
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
VOID
|
|
||||||
CailWritePCIConfigData(VOID *CAIL, VOID *src, UINT32 idx, UINT16 size)
|
|
||||||
{
|
|
||||||
TRACE("AtomBios callback %s, idx (0x%X)\n", __func__, idx);
|
|
||||||
// TODO : CailWritePCIConfigData
|
|
||||||
|
|
||||||
// atomSaveRegisters((atomBiosHandlePtr)CAIL, atomRegisterPCICFG, idx << 2);
|
|
||||||
// pci_device_cfg_write(RHDPTRI((atomBiosHandlePtr)CAIL)->PciInfo,
|
|
||||||
// src, idx << 2, size >> 3, NULL);
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
ULONG
|
|
||||||
CailReadPLL(VOID *CAIL, ULONG address)
|
|
||||||
{
|
|
||||||
TRACE("AtomBios callback %s, addr (0x%X)\n", __func__, address);
|
|
||||||
return Read32(PLL, address);
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
VOID
|
|
||||||
CailWritePLL(VOID *CAIL, ULONG address, ULONG data)
|
|
||||||
{
|
|
||||||
TRACE("AtomBios callback %s, addr (0x%X)\n", __func__, address);
|
|
||||||
|
|
||||||
// TODO : save PLL registers
|
|
||||||
// atomSaveRegisters((atomBiosHandlePtr)CAIL, atomRegisterPLL, address);
|
|
||||||
// TODO : Assumed screen index 0
|
|
||||||
Write32(PLL, address, data);
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
ULONG
|
|
||||||
CailReadMC(VOID *CAIL, ULONG address)
|
|
||||||
{
|
|
||||||
TRACE("AtomBios callback %s, addr (0x%X)\n", __func__, address);
|
|
||||||
|
|
||||||
return Read32(MC, address | MC_IND_ALL);
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
VOID
|
|
||||||
CailWriteMC(VOID *CAIL, ULONG address, ULONG data)
|
|
||||||
{
|
|
||||||
TRACE("AtomBios callback %s, addr (0x%X)\n", __func__, address);
|
|
||||||
|
|
||||||
// atomSaveRegisters((atomBiosHandlePtr)CAIL, atomRegisterMC, address);
|
|
||||||
Write32(MC, address | MC_IND_ALL | MC_IND_WR_EN, data);
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
UINT32
|
|
||||||
CailReadFBData(VOID* CAIL, UINT32 idx)
|
|
||||||
{
|
|
||||||
// TODO : This should work only in theory and needs tested
|
|
||||||
|
|
||||||
TRACE("AtomBios callback %s, idx (0x%X)\n", __func__, idx);
|
|
||||||
|
|
||||||
UINT32 ret = 0;
|
|
||||||
|
|
||||||
uint32_t fbLocation
|
|
||||||
= gInfo->shared_info->frame_buffer_phys & 0xffffffff;
|
|
||||||
|
|
||||||
// If we have a physical offset for our frame buffer, use it
|
|
||||||
if (fbLocation > 0)
|
|
||||||
ret = Read32(PLL, fbLocation + idx);
|
|
||||||
else {
|
|
||||||
TRACE("%s: ERROR: Frame Buffer offset not defined\n",
|
|
||||||
__func__);
|
|
||||||
return 0;
|
|
||||||
}
|
|
||||||
|
|
||||||
return ret;
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
VOID
|
|
||||||
CailWriteFBData(VOID *CAIL, UINT32 idx, UINT32 data)
|
|
||||||
{
|
|
||||||
// TODO : This should work only in theory and needs tested
|
|
||||||
|
|
||||||
TRACE("AtomBios callback %s, idx (0x%X)\n", __func__, idx);
|
|
||||||
|
|
||||||
uint32_t fbLocation
|
|
||||||
= gInfo->shared_info->frame_buffer_phys & 0xffffffff;
|
|
||||||
|
|
||||||
// If we have a physical offset for our frame buffer, use it
|
|
||||||
if (fbLocation > 0)
|
|
||||||
Write32(OUT, fbLocation + idx, data);
|
|
||||||
else
|
|
||||||
TRACE("%s: ERROR: Frame Buffer offset not defined\n",
|
|
||||||
__func__);
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
} // end extern "C"
|
|
||||||
|
|||||||
@@ -13,12 +13,16 @@
|
|||||||
|
|
||||||
// AtomBios includes
|
// AtomBios includes
|
||||||
extern "C" {
|
extern "C" {
|
||||||
#include "CD_Common_Types.h"
|
//#include "atom.h"
|
||||||
#include "CD_Definitions.h"
|
|
||||||
#include "atombios.h"
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
struct bios_info {
|
||||||
|
uint32 location;
|
||||||
|
uint32 size;
|
||||||
|
};
|
||||||
|
|
||||||
|
|
||||||
status_t AtomParser(void *parameterSpace, uint8_t index,
|
status_t AtomParser(void *parameterSpace, uint8_t index,
|
||||||
void *handle, void *biosBase);
|
void *handle, void *biosBase);
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user