📄 mmconfig.cpp
字号:
if( bResult)
* pusTVTunerId = usValue;
else
OutputDebugError(( "CATIMultimediaTable::GetTVTunerId() fails\n"));
return( bResult);
}
/*^^*
* GetVideoDecoderId()
* Purpose : Retrieves Video decoder Id from the Multimedia configuration table
*
* Inputs : PUSHORT pusDecoderId : pointer to return Video decoder Id
*
* Outputs : BOOL, returns TRUE, if succeeded
* Author : IKLEBANOV
*^^*/
BOOL CATIMultimediaTable::GetVideoDecoderId( PUSHORT pusDecoderId)
{
USHORT usValue;
BOOL bResult = TRUE;
if(( m_pvConfigurationData != NULL) && ( m_ulSize) && ( pusDecoderId != NULL))
{
switch( m_ulRevision)
{
case 0:
usValue = ( USHORT)(((( PATI_MULTIMEDIAINFO)m_pvConfigurationData)->MMInfo_Byte2) & 0x07);
break;
case 1:
usValue = ( USHORT)(((( PATI_MULTIMEDIAINFO1)m_pvConfigurationData)->MMInfo1_Byte5) & 0x0F);
break;
default:
bResult = FALSE;
break;
}
}
else
bResult = FALSE;
if( bResult)
* pusDecoderId = usValue;
else
OutputDebugError(( "CATIMultimediaTable::GetVideoDecoderId() fails\n"));
return( bResult);
}
/*^^*
* GetOEMId()
* Purpose : Retrieves OEM Id from the Multimedia configuration table
*
* Inputs : PUSHORT pusOEMId : pointer to return OEM Id
*
* Outputs : BOOL, returns TRUE, if succeeded
* Author : IKLEBANOV
*^^*/
BOOL CATIMultimediaTable::GetOEMId( PUSHORT pusOEMId)
{
USHORT usValue;
BOOL bResult = TRUE;
if(( m_pvConfigurationData != NULL) && ( m_ulSize) && ( pusOEMId != NULL))
{
switch( m_ulRevision)
{
case 0:
usValue = ( USHORT)((( PATI_MULTIMEDIAINFO)m_pvConfigurationData)->MMInfo_Byte4);
break;
case 1:
usValue = ( USHORT)((( PATI_MULTIMEDIAINFO1)m_pvConfigurationData)->MMInfo1_Byte2);
break;
default:
bResult = FALSE;
break;
}
}
else
bResult = FALSE;
if( bResult)
* pusOEMId = usValue;
else
OutputDebugError(( "CATIMultimediaTable::GetOEMId() fails\n"));
return( bResult);
}
/*^^*
* GetATIProductId()
* Purpose : Retrieves ATI Product Id from the Multimedia configuration table
*
* Inputs : PUSHORT pusProductId: pointer to return Product Id
*
* Outputs : BOOL, returns TRUE, if succeeded
* Author : IKLEBANOV
*^^*/
BOOL CATIMultimediaTable::GetATIProductId( PUSHORT pusProductId)
{
USHORT usValue;
BOOL bResult = TRUE;
if(( m_pvConfigurationData != NULL) && ( m_ulSize) && ( pusProductId != NULL))
{
switch( m_ulRevision)
{
case 0:
usValue = ( USHORT)((((( PATI_MULTIMEDIAINFO)m_pvConfigurationData)->MMInfo_Byte3) >> 4) & 0x0F);
break;
case 1:
usValue = ( USHORT)((( PATI_MULTIMEDIAINFO1)m_pvConfigurationData)->MMInfo1_Byte2);
break;
default:
bResult = FALSE;
break;
}
}
else
bResult = FALSE;
if( bResult)
* pusProductId = usValue;
else
OutputDebugError(( "CATIMultimediaTable::GetVideoDecoderId() fails\n"));
return( bResult);
}
/*^^*
* GetOEMRevisionId()
* Purpose : Retrieves OEM Revision Id from the Multimedia configuration table
*
* Inputs : PUSHORT pusOEMRevisionId : pointer to return OEM Revision Id
*
* Outputs : BOOL, returns TRUE, if succeeded
* Author : IKLEBANOV
*^^*/
BOOL CATIMultimediaTable::GetOEMRevisionId( PUSHORT pusOEMRevisionId)
{
USHORT usValue;
BOOL bResult = TRUE;
if(( m_pvConfigurationData != NULL) && ( m_ulSize) && ( pusOEMRevisionId != NULL))
{
switch( m_ulRevision)
{
case 0:
usValue = ( USHORT)((( PATI_MULTIMEDIAINFO)m_pvConfigurationData)->MMInfo_Byte5);
break;
case 1:
usValue = ( USHORT)((((( PATI_MULTIMEDIAINFO1)m_pvConfigurationData)->MMInfo1_Byte1) >> 5) & 0x07);
break;
default:
bResult = FALSE;
break;
}
}
else
bResult = FALSE;
if( bResult)
* pusOEMRevisionId = usValue;
else
OutputDebugError(( "CATIMultimediaTable::GetVideoDecoderId() fails\n"));
return( bResult);
}
/*^^*
* IsATIProduct()
* Purpose : Returnes ATI ownership
*
* Inputs : PUSHORT pusProductId: pointer to return ATI Product ownership
*
* Outputs : BOOL, returns TRUE, if succeeded
* Author : IKLEBANOV
*^^*/
BOOL CATIMultimediaTable::IsATIProduct( PBOOL pbATIProduct)
{
BOOL bATIOwnership;
BOOL bResult = TRUE;
if(( m_pvConfigurationData != NULL) && ( m_ulSize) && ( pbATIProduct != NULL))
{
switch( m_ulRevision)
{
case 0:
bATIOwnership = (( PATI_MULTIMEDIAINFO)m_pvConfigurationData)->MMInfo_Byte4 == OEM_ID_ATI;
break;
case 1:
bATIOwnership = ( BOOL)(((( PATI_MULTIMEDIAINFO1)m_pvConfigurationData)->MMInfo1_Byte1) & 0x10);
break;
default:
bResult = FALSE;
break;
}
}
else
bResult = FALSE;
if( bResult)
* pbATIProduct = bATIOwnership;
else
OutputDebugError(( "CATIMultimediaTable::GetVideoDecoderId() fails\n"));
return( bResult);
}
/*^^*
* QueryGPIOProvider()
* Purpose : queries the GPIOProvider for the pins supported and private interfaces
*
* Inputs : PDEVICE_OBJECT pDeviceObject : pointer to accosiated Device Object
* GPIOINTERFACE * pGPIOInterface : pointer to GPIO interface
* PGPIOControl pgpioAccessBlock : pointer to GPIO control structure
*
* Outputs : BOOL : retunrs TRUE, if the query function was carried on successfully
* Author : IKLEBANOV
*^^*/
BOOL CATIMultimediaTable::QueryGPIOProvider( PDEVICE_OBJECT pDeviceObject,
GPIOINTERFACE * pGPIOInterface,
PGPIOControl pgpioAccessBlock)
{
ENSURE
{
if(( pGPIOInterface->gpioOpen == NULL) ||
( pGPIOInterface->gpioAccess == NULL) ||
( pDeviceObject == NULL))
FAIL;
pgpioAccessBlock->Status = GPIO_STATUS_NOERROR;
pgpioAccessBlock->Command = GPIO_COMMAND_QUERY;
pgpioAccessBlock->AsynchCompleteCallback = NULL;
pgpioAccessBlock->Pins = NULL;
if(( !NT_SUCCESS( pGPIOInterface->gpioOpen( pDeviceObject, TRUE, pgpioAccessBlock))) ||
( pgpioAccessBlock->Status != GPIO_STATUS_NOERROR))
FAIL;
return( TRUE);
} END_ENSURE;
return( FALSE);
}
/*^^*
* GetDigitalAudioProperties()
* Purpose : Gets Digital Audio support and information
* Inputs : Pointer to Digital Audio Info structure
*
* Outputs : BOOL : returns TRUE
* also sets the requested values into the input pointer
* Author : TOM
*^^*/
BOOL CATIMultimediaTable::GetDigialAudioConfiguration( PDIGITAL_AUD_INFO pInput)
{
BOOL bResult = FALSE;
ENSURE
{
if (pInput == NULL)
FAIL;
#if 1
if (m_pvConfigurationData == NULL)
FAIL;
switch( m_ulRevision)
{
case 1:
// Disable I2S in support for the time being - TL
// pInput->bI2SInSupported = ( BOOL)(((( PATI_MULTIMEDIAINFO1)m_pvConfigurationData)->MMInfo1_Byte4) & 0x01);
pInput->bI2SInSupported = 0;
pInput->bI2SOutSupported = ( BOOL)(((( PATI_MULTIMEDIAINFO1)m_pvConfigurationData)->MMInfo1_Byte4) & 0x02);
pInput->wI2S_DAC_Device = ( WORD)((((( PATI_MULTIMEDIAINFO1)m_pvConfigurationData)->MMInfo1_Byte4) & 0x1c) >> 2);
pInput->bSPDIFSupported = ( BOOL)(((( PATI_MULTIMEDIAINFO1)m_pvConfigurationData)->MMInfo1_Byte4) & 0x20);
pInput->wReference_Clock = ( WORD)((((( PATI_MULTIMEDIAINFO1)m_pvConfigurationData)->MMInfo1_Byte5) & 0xf0) >> 4);
bResult = TRUE;
break;
default:
bResult = FALSE;
break;
}
#else
pInput->bI2SInSupported = TRUE;
pInput->bI2SOutSupported = TRUE;
pInput->wI2S_DAC_Device = TDA1309_32;
pInput->wReference_Clock = REF_295MHZ;
pInput->bSPDIFSupported = TRUE;
bResult = TRUE;
#endif
} END_ENSURE;
return (bResult);
}
/*^^*
* GetVideoInCrystalId()
* Purpose : Retrieves Video in crystal ID from the Multimedia configuration table
*
* Inputs : PUSHORT pusVInCrystalId : pointer to return Video in crystal Id
*
* Outputs : BOOL, returns TRUE, if succeeded
* Author : Paul
*^^*/
BOOL CATIMultimediaTable::GetVideoInCrystalId( PUCHAR pucVInCrystalId)
{
UCHAR ucValue;
BOOL bResult = TRUE;
if(( m_pvConfigurationData != NULL) && ( m_ulSize) && ( pucVInCrystalId != NULL))
{
switch( m_ulRevision)
{
case 0:
ucValue = ( UCHAR)((((( PATI_MULTIMEDIAINFO)m_pvConfigurationData)->MMInfo_Byte2) & 0x18) >> 3);
break;
case 1:
ucValue = ( UCHAR)((((( PATI_MULTIMEDIAINFO1)m_pvConfigurationData)->MMInfo1_Byte5) & 0xF0) >> 4);
break;
default:
bResult = FALSE;
break;
}
}
else
bResult = FALSE;
if( bResult)
* pucVInCrystalId = ucValue;
else
OutputDebugError(( "CATIMultimediaTable::GetVideoInCrystalId() fails\n"));
return( bResult);
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -