Leaked source code of windows server 2003
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

254 lines
11 KiB

  1. //==========================================================================;
  2. //
  3. // ATIConfg.H
  4. // CATIHwConfiguration Class definition.
  5. // Copyright (c) 1996 - 1998 ATI Technologies Inc. All Rights Reserved.
  6. //
  7. // $Date: 16 Nov 1998 13:40:34 $
  8. // $Revision: 1.9 $
  9. // $Author: minyailo $
  10. //
  11. //==========================================================================;
  12. #ifndef _ATICONFG_H_
  13. #define _ATICONFG_H_
  14. #include "i2script.h"
  15. #include "tda9850.h"
  16. #include "tda9851.h"
  17. #include "atibios.h"
  18. // this file is included for compatability with MiniVDD checked in for Beta3 of Windows98
  19. #include "registry.h"
  20. #include "mmconfig.h" //Paul
  21. class CATIHwConfiguration
  22. {
  23. public:
  24. // constructor
  25. CATIHwConfiguration ( PPORT_CONFIGURATION_INFORMATION pConfigInfo, CI2CScript * pCScript, PUINT puiError);
  26. PVOID operator new ( size_t size, PVOID pAllocation);
  27. // Attributes
  28. private:
  29. // tuner's configuration properties
  30. USHORT m_usTunerId;
  31. UCHAR m_uchTunerAddress;
  32. USHORT m_usTunerPowerConfiguration;
  33. // decoder's configuration properties
  34. USHORT m_usDecoderId;
  35. UCHAR m_uchDecoderAddress;
  36. USHORT m_usDecoderConfiguration;
  37. // audio's configuration properties
  38. UCHAR m_uchAudioAddress;
  39. UINT m_uiAudioConfiguration;
  40. // hardware configuration
  41. UCHAR m_uchI2CExpanderAddress;
  42. USHORT m_usE2PROMValidation;
  43. // GPIO Provider related
  44. GPIOINTERFACE m_gpioProviderInterface;
  45. PDEVICE_OBJECT m_pdoDriver;
  46. DWORD m_dwGPIOAccessKey;
  47. // Paul: Decide video in standards supported by crystal by looking at MMTable or I2C expander crystal information
  48. ULONG m_VideoInStandardsSupported;
  49. UCHAR m_CrystalIDInMMTable;
  50. // Implementation
  51. public:
  52. BOOL GetTunerConfiguration ( PUINT puiTunerId, PUCHAR puchTunerAddress);
  53. BOOL GetDecoderConfiguration ( PUINT puiDecoderId, PUCHAR puchDecoderAddress);
  54. BOOL GetAudioConfiguration ( PUINT puiAudioId, PUCHAR puchAudioAddress);
  55. UINT GetDecoderOutputEnableLevel ( void);
  56. void EnableDecoderI2CAccess ( CI2CScript * pCScript, BOOL bEnable);
  57. BOOL GetAudioProperties ( PULONG puiNumberOfInputs, PULONG puiNumberOfOutputs);
  58. BOOL InitializeAudioConfiguration( CI2CScript * pCScript, UINT uiAudioConfigurationId, UCHAR uchAudioChipAddress);
  59. BOOL CanConnectAudioSource ( int nAudioSource);
  60. BOOL ConnectAudioSource ( CI2CScript * pCScript, int nAudioSource);
  61. BOOL GetTVAudioSignalProperties ( CI2CScript * pCScript, PBOOL pbStereo, PBOOL pbSAP);
  62. BOOL SetTunerPowerState ( CI2CScript * pCScript,
  63. BOOL bPowerState);
  64. ULONG GetVideoInStandardsSupportedByCrystal( )
  65. { return m_VideoInStandardsSupported; } //Paul
  66. ULONG GetVideoInStandardsSupportedByTuner( )
  67. { return ReturnTunerVideoStandard( m_usTunerId ); }
  68. BOOL GetMMTableCrystalID( PUCHAR pucCrystalID );
  69. private:
  70. BOOL FindI2CExpanderAddress ( CI2CScript * pCScript);
  71. BOOL FindHardwareProperties ( PDEVICE_OBJECT pDeviceObject, CI2CScript * pCScript);
  72. BOOL GetI2CExpanderConfiguration ( CI2CScript * pCScript, PUCHAR puchI2CValue);
  73. BOOL SetDefaultVolumeControl ( CI2CScript * pCScript);
  74. BOOL ValidateConfigurationE2PROM ( CI2CScript * pCScript);
  75. BOOL ReadConfigurationE2PROM ( CI2CScript * pCScript, ULONG nOffset, PUCHAR puchValue);
  76. BOOL InitializeAttachGPIOProvider( GPIOINTERFACE * pGPIOInterface, PDEVICE_OBJECT pDeviceObject);
  77. BOOL LocateAttachGPIOProvider ( GPIOINTERFACE * pGPIOInterface, PDEVICE_OBJECT pDeviceObject, UCHAR nIrpMajorFunction);
  78. BOOL LockGPIOProviderEx ( PGPIOControl pgpioAccessBlock);
  79. BOOL ReleaseGPIOProvider ( PGPIOControl pgpioAccessBlock);
  80. BOOL AccessGPIOProvider ( PDEVICE_OBJECT pdoClient, PGPIOControl pgpioAccessBlock);
  81. ULONG ReturnTunerVideoStandard ( USHORT usTunerId ); //Paul: For PAL support
  82. ULONG SetVidStdBasedOnI2CExpander ( UCHAR ucI2CValue ); //Paul
  83. ULONG SetVidStdBasedOnMMTable ( CATIMultimediaTable * pCMultimediaInfo ); //Paul
  84. };
  85. #define ATIHARDWARE_TUNER_WAKEUP_DELAY -100000 // 10 msec in 100 nsec units
  86. typedef enum
  87. {
  88. VIDEODECODER_TYPE_NOTINSTALLED = 0,
  89. VIDEODECODER_TYPE_BT819,
  90. VIDEODECODER_TYPE_BT829,
  91. VIDEODECODER_TYPE_BT829A,
  92. VIDEODECODER_TYPE_PH7111,
  93. VIDEODECODER_TYPE_PH7112,
  94. VIDEODECODER_TYPE_RTHEATER // RTheater
  95. } ATI_VIDEODECODER_TYPE;
  96. enum
  97. {
  98. AUDIOSOURCE_MUTE = 0,
  99. AUDIOSOURCE_TVAUDIO,
  100. AUDIOSOURCE_LINEIN,
  101. AUDIOSOURCE_FMAUDIO,
  102. AUDIOSOURCE_LASTSUPPORTED
  103. };
  104. //****************************************************************************
  105. // Decoder Configurations Dec. Type Dec. Enable Method
  106. //****************************************************************************
  107. typedef enum
  108. {
  109. ATI_VIDEODECODER_CONFIG_UNDEFINED = 0,
  110. ATI_VIDEODECODER_CONFIG_1, // BT829 on ATI TV or AIW IO Exp Bit 7
  111. ATI_VIDEODECODER_CONFIG_2, // BT829A and above BT Reg 0x16, OE=1
  112. ATI_VIDEODECODER_CONFIG_3, // BT829 CPU GPIO 0x7c
  113. ATI_VIDEODECODER_CONFIG_4, // BT829 CPU GPIO 0x78
  114. } ATI_DECODER_CONFIGURATION;
  115. //****************************************************************************
  116. // Audio Configurations SAP STEREO VOLUME MUX
  117. //****************************************************************************
  118. enum
  119. {
  120. ATI_AUDIO_CONFIG_1 = 1, // No IO Exp b6=0 No IO Exp
  121. // b6:b4
  122. // M x:0
  123. // T 0:1
  124. // L 1:1
  125. // F n/a
  126. //****************************************************************************
  127. ATI_AUDIO_CONFIG_2, // TDA9850 TDA9850 Yes EXT_DAC_REGS
  128. // b6:b4
  129. // M 1:0
  130. // T 0:1
  131. // L 0:0
  132. // F 1:1
  133. //****************************************************************************
  134. ATI_AUDIO_CONFIG_3, // No No No IO Exp
  135. // b6
  136. // M n/a
  137. // T 0
  138. // L 1
  139. // F n/a
  140. //****************************************************************************
  141. ATI_AUDIO_CONFIG_4, // No No Yes TDA8425
  142. //****************************************************************************
  143. ATI_AUDIO_CONFIG_5, // No TEA5582 No IO Exp
  144. // b6:b4
  145. // M 1:1
  146. // T 0:0
  147. // L 1:0
  148. // F 0:1
  149. //****************************************************************************
  150. ATI_AUDIO_CONFIG_6, // No BT829 Automatic BT829 GPIO
  151. // GPIO4 Volume 0:1
  152. // and Control M 0:1
  153. // TDA9851 T 1:0
  154. // for TV L 0:0
  155. // F 1:1
  156. //****************************************************************************
  157. ATI_AUDIO_CONFIG_7, // TDA9850 TDA9850 Yes BT829 GPIO
  158. // AS0:1
  159. // M 0:1
  160. // T 1:0
  161. // L 0:0
  162. // F 1:1
  163. //****************************************************************************
  164. ATI_AUDIO_CONFIG_8 // MSP3430 MSP3430 Yes MSP3430
  165. //****************************************************************************
  166. };
  167. //****************************************************************************
  168. // Tuner Power Mode Configurations Supported Control
  169. //****************************************************************************
  170. enum
  171. {
  172. ATI_TUNER_POWER_CONFIG_0 = 0, // No
  173. //****************************************************************************
  174. ATI_TUNER_POWER_CONFIG_1, // Yes EXT_DAC_REGS
  175. // b4
  176. // ON 0
  177. // OFF 1
  178. //****************************************************************************
  179. ATI_TUNER_POWER_CONFIG_2 // Yes BT829 GPIO
  180. // 3
  181. // ON 0
  182. // OFF 1
  183. //****************************************************************************
  184. };
  185. enum
  186. {
  187. OEM_ID_ATI = 0,
  188. OEM_ID_INTEL,
  189. OEM_ID_APRICOT,
  190. OEM_ID_COMPAQ,
  191. OEM_ID_SAMSUNG,
  192. OEM_ID_BCM,
  193. OEM_ID_QUANTA,
  194. OEM_ID_SAMREX,
  195. OEM_ID_FUJITSU,
  196. OEM_ID_NEC,
  197. };
  198. enum
  199. {
  200. REVISION0 = 0,
  201. REVISION1,
  202. REVISION2,
  203. REVISION3,
  204. REVISION4,
  205. };
  206. enum
  207. {
  208. ATI_PRODUCT_TYPE_AIW = 1,
  209. ATI_PRODUCT_TYPE_AIW_PRO_NODVD, // 2
  210. ATI_PRODUCT_TYPE_AIW_PRO_DVD, // 3
  211. ATI_PRODUCT_TYPE_AIW_PLUS, // 4
  212. ATI_PRODUCT_TYPE_AIW_PRO_R128_KITCHENER, // 5
  213. ATI_PRODUCT_TYPE_AIW_PRO_R128_TORONTO // 6
  214. };
  215. #define INTEL_ANCHORAGE 1
  216. #define AIWPRO_CONFIGURATIONE2PROM_ADDRESS 0xA8
  217. #define AIWPRO_CONFIGURATIONE2PROM_LENGTH 128 // 0x80
  218. #endif // _ATICONFG_H_