|
|
//==========================================================================;
//
// ATIConfg.H
// CATIHwConfiguration Class definition.
// Copyright (c) 1996 - 1998 ATI Technologies Inc. All Rights Reserved.
//
// $Date: 16 Nov 1998 13:40:34 $
// $Revision: 1.9 $
// $Author: minyailo $
//
//==========================================================================;
#ifndef _ATICONFG_H_
#define _ATICONFG_H_
#include "i2script.h"
#include "tda9850.h"
#include "tda9851.h"
#include "atibios.h"
// this file is included for compatability with MiniVDD checked in for Beta3 of Windows98
#include "registry.h"
#include "mmconfig.h" //Paul
class CATIHwConfiguration { public: // constructor
CATIHwConfiguration ( PPORT_CONFIGURATION_INFORMATION pConfigInfo, CI2CScript * pCScript, PUINT puiError); PVOID operator new ( size_t size, PVOID pAllocation);
// Attributes
private: // tuner's configuration properties
USHORT m_usTunerId; UCHAR m_uchTunerAddress; USHORT m_usTunerPowerConfiguration; // decoder's configuration properties
USHORT m_usDecoderId; UCHAR m_uchDecoderAddress; USHORT m_usDecoderConfiguration; // audio's configuration properties
UCHAR m_uchAudioAddress; UINT m_uiAudioConfiguration; // hardware configuration
UCHAR m_uchI2CExpanderAddress; USHORT m_usE2PROMValidation; // GPIO Provider related
GPIOINTERFACE m_gpioProviderInterface; PDEVICE_OBJECT m_pdoDriver; DWORD m_dwGPIOAccessKey; // Paul: Decide video in standards supported by crystal by looking at MMTable or I2C expander crystal information
ULONG m_VideoInStandardsSupported; UCHAR m_CrystalIDInMMTable;
// Implementation
public: BOOL GetTunerConfiguration ( PUINT puiTunerId, PUCHAR puchTunerAddress); BOOL GetDecoderConfiguration ( PUINT puiDecoderId, PUCHAR puchDecoderAddress); BOOL GetAudioConfiguration ( PUINT puiAudioId, PUCHAR puchAudioAddress); UINT GetDecoderOutputEnableLevel ( void);
void EnableDecoderI2CAccess ( CI2CScript * pCScript, BOOL bEnable); BOOL GetAudioProperties ( PULONG puiNumberOfInputs, PULONG puiNumberOfOutputs); BOOL InitializeAudioConfiguration( CI2CScript * pCScript, UINT uiAudioConfigurationId, UCHAR uchAudioChipAddress);
BOOL CanConnectAudioSource ( int nAudioSource); BOOL ConnectAudioSource ( CI2CScript * pCScript, int nAudioSource); BOOL GetTVAudioSignalProperties ( CI2CScript * pCScript, PBOOL pbStereo, PBOOL pbSAP);
BOOL SetTunerPowerState ( CI2CScript * pCScript, BOOL bPowerState); ULONG GetVideoInStandardsSupportedByCrystal( ) { return m_VideoInStandardsSupported; } //Paul
ULONG GetVideoInStandardsSupportedByTuner( ) { return ReturnTunerVideoStandard( m_usTunerId ); } BOOL GetMMTableCrystalID( PUCHAR pucCrystalID );
private: BOOL FindI2CExpanderAddress ( CI2CScript * pCScript); BOOL FindHardwareProperties ( PDEVICE_OBJECT pDeviceObject, CI2CScript * pCScript);
BOOL GetI2CExpanderConfiguration ( CI2CScript * pCScript, PUCHAR puchI2CValue); BOOL SetDefaultVolumeControl ( CI2CScript * pCScript);
BOOL ValidateConfigurationE2PROM ( CI2CScript * pCScript); BOOL ReadConfigurationE2PROM ( CI2CScript * pCScript, ULONG nOffset, PUCHAR puchValue);
BOOL InitializeAttachGPIOProvider( GPIOINTERFACE * pGPIOInterface, PDEVICE_OBJECT pDeviceObject); BOOL LocateAttachGPIOProvider ( GPIOINTERFACE * pGPIOInterface, PDEVICE_OBJECT pDeviceObject, UCHAR nIrpMajorFunction);
BOOL LockGPIOProviderEx ( PGPIOControl pgpioAccessBlock); BOOL ReleaseGPIOProvider ( PGPIOControl pgpioAccessBlock); BOOL AccessGPIOProvider ( PDEVICE_OBJECT pdoClient, PGPIOControl pgpioAccessBlock); ULONG ReturnTunerVideoStandard ( USHORT usTunerId ); //Paul: For PAL support
ULONG SetVidStdBasedOnI2CExpander ( UCHAR ucI2CValue ); //Paul
ULONG SetVidStdBasedOnMMTable ( CATIMultimediaTable * pCMultimediaInfo ); //Paul
};
#define ATIHARDWARE_TUNER_WAKEUP_DELAY -100000 // 10 msec in 100 nsec units
typedef enum { VIDEODECODER_TYPE_NOTINSTALLED = 0, VIDEODECODER_TYPE_BT819, VIDEODECODER_TYPE_BT829, VIDEODECODER_TYPE_BT829A, VIDEODECODER_TYPE_PH7111, VIDEODECODER_TYPE_PH7112, VIDEODECODER_TYPE_RTHEATER // RTheater
} ATI_VIDEODECODER_TYPE;
enum { AUDIOSOURCE_MUTE = 0, AUDIOSOURCE_TVAUDIO, AUDIOSOURCE_LINEIN, AUDIOSOURCE_FMAUDIO, AUDIOSOURCE_LASTSUPPORTED
}; //****************************************************************************
// Decoder Configurations Dec. Type Dec. Enable Method
//****************************************************************************
typedef enum { ATI_VIDEODECODER_CONFIG_UNDEFINED = 0, ATI_VIDEODECODER_CONFIG_1, // BT829 on ATI TV or AIW IO Exp Bit 7
ATI_VIDEODECODER_CONFIG_2, // BT829A and above BT Reg 0x16, OE=1
ATI_VIDEODECODER_CONFIG_3, // BT829 CPU GPIO 0x7c
ATI_VIDEODECODER_CONFIG_4, // BT829 CPU GPIO 0x78
} ATI_DECODER_CONFIGURATION;
//****************************************************************************
// Audio Configurations SAP STEREO VOLUME MUX
//****************************************************************************
enum { ATI_AUDIO_CONFIG_1 = 1, // No IO Exp b6=0 No IO Exp
// b6:b4
// M x:0
// T 0:1
// L 1:1
// F n/a
//****************************************************************************
ATI_AUDIO_CONFIG_2, // TDA9850 TDA9850 Yes EXT_DAC_REGS
// b6:b4
// M 1:0
// T 0:1
// L 0:0
// F 1:1
//****************************************************************************
ATI_AUDIO_CONFIG_3, // No No No IO Exp
// b6
// M n/a
// T 0
// L 1
// F n/a
//****************************************************************************
ATI_AUDIO_CONFIG_4, // No No Yes TDA8425
//****************************************************************************
ATI_AUDIO_CONFIG_5, // No TEA5582 No IO Exp
// b6:b4
// M 1:1
// T 0:0
// L 1:0
// F 0:1
//****************************************************************************
ATI_AUDIO_CONFIG_6, // No BT829 Automatic BT829 GPIO
// GPIO4 Volume 0:1
// and Control M 0:1
// TDA9851 T 1:0
// for TV L 0:0
// F 1:1
//****************************************************************************
ATI_AUDIO_CONFIG_7, // TDA9850 TDA9850 Yes BT829 GPIO
// AS0:1
// M 0:1
// T 1:0
// L 0:0
// F 1:1
//****************************************************************************
ATI_AUDIO_CONFIG_8 // MSP3430 MSP3430 Yes MSP3430
//****************************************************************************
};
//****************************************************************************
// Tuner Power Mode Configurations Supported Control
//****************************************************************************
enum { ATI_TUNER_POWER_CONFIG_0 = 0, // No
//****************************************************************************
ATI_TUNER_POWER_CONFIG_1, // Yes EXT_DAC_REGS
// b4
// ON 0
// OFF 1
//****************************************************************************
ATI_TUNER_POWER_CONFIG_2 // Yes BT829 GPIO
// 3
// ON 0
// OFF 1
//****************************************************************************
};
enum { OEM_ID_ATI = 0, OEM_ID_INTEL, OEM_ID_APRICOT, OEM_ID_COMPAQ, OEM_ID_SAMSUNG, OEM_ID_BCM, OEM_ID_QUANTA, OEM_ID_SAMREX, OEM_ID_FUJITSU, OEM_ID_NEC,
};
enum { REVISION0 = 0, REVISION1, REVISION2, REVISION3, REVISION4, };
enum { ATI_PRODUCT_TYPE_AIW = 1, ATI_PRODUCT_TYPE_AIW_PRO_NODVD, // 2
ATI_PRODUCT_TYPE_AIW_PRO_DVD, // 3
ATI_PRODUCT_TYPE_AIW_PLUS, // 4
ATI_PRODUCT_TYPE_AIW_PRO_R128_KITCHENER, // 5
ATI_PRODUCT_TYPE_AIW_PRO_R128_TORONTO // 6
};
#define INTEL_ANCHORAGE 1
#define AIWPRO_CONFIGURATIONE2PROM_ADDRESS 0xA8
#define AIWPRO_CONFIGURATIONE2PROM_LENGTH 128 // 0x80
#endif // _ATICONFG_H_
|