//==========================================================================; // // 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_