0001
0002
0003
0004
0005
0006
0007
0008
0009
0010
0011
0012
0013
0014
0015
0016
0017
0018
0019
0020
0021
0022
0023
0024
0025
0026
0027
0028 #ifndef _ATOMBIOS_H
0029 #define _ATOMBIOS_H
0030
0031 #define ATOM_VERSION_MAJOR 0x00020000
0032 #define ATOM_VERSION_MINOR 0x00000002
0033
0034 #define ATOM_HEADER_VERSION (ATOM_VERSION_MAJOR | ATOM_VERSION_MINOR)
0035
0036
0037
0038
0039 #ifndef ATOM_BIG_ENDIAN
0040 #error Endian not specified
0041 #endif
0042
0043 #ifdef _H2INC
0044 #ifndef ULONG
0045 typedef unsigned long ULONG;
0046 #endif
0047
0048 #ifndef UCHAR
0049 typedef unsigned char UCHAR;
0050 #endif
0051
0052 #ifndef USHORT
0053 typedef unsigned short USHORT;
0054 #endif
0055 #endif
0056
0057 #define ATOM_DAC_A 0
0058 #define ATOM_DAC_B 1
0059 #define ATOM_EXT_DAC 2
0060
0061 #define ATOM_CRTC1 0
0062 #define ATOM_CRTC2 1
0063 #define ATOM_CRTC3 2
0064 #define ATOM_CRTC4 3
0065 #define ATOM_CRTC5 4
0066 #define ATOM_CRTC6 5
0067
0068 #define ATOM_UNDERLAY_PIPE0 16
0069 #define ATOM_UNDERLAY_PIPE1 17
0070
0071 #define ATOM_CRTC_INVALID 0xFF
0072
0073 #define ATOM_DIGA 0
0074 #define ATOM_DIGB 1
0075
0076 #define ATOM_PPLL1 0
0077 #define ATOM_PPLL2 1
0078 #define ATOM_DCPLL 2
0079 #define ATOM_PPLL0 2
0080 #define ATOM_PPLL3 3
0081
0082 #define ATOM_PHY_PLL0 4
0083 #define ATOM_PHY_PLL1 5
0084
0085 #define ATOM_EXT_PLL1 8
0086 #define ATOM_GCK_DFS 8
0087 #define ATOM_EXT_PLL2 9
0088 #define ATOM_FCH_CLK 9
0089 #define ATOM_EXT_CLOCK 10
0090 #define ATOM_DP_DTO 11
0091
0092 #define ATOM_COMBOPHY_PLL0 20
0093 #define ATOM_COMBOPHY_PLL1 21
0094 #define ATOM_COMBOPHY_PLL2 22
0095 #define ATOM_COMBOPHY_PLL3 23
0096 #define ATOM_COMBOPHY_PLL4 24
0097 #define ATOM_COMBOPHY_PLL5 25
0098
0099 #define ATOM_PPLL_INVALID 0xFF
0100
0101 #define ENCODER_REFCLK_SRC_P1PLL 0
0102 #define ENCODER_REFCLK_SRC_P2PLL 1
0103 #define ENCODER_REFCLK_SRC_DCPLL 2
0104 #define ENCODER_REFCLK_SRC_EXTCLK 3
0105 #define ENCODER_REFCLK_SRC_INVALID 0xFF
0106
0107 #define ATOM_SCALER_DISABLE 0
0108 #define ATOM_SCALER_CENTER 1
0109 #define ATOM_SCALER_EXPANSION 2
0110 #define ATOM_SCALER_MULTI_EX 3
0111
0112 #define ATOM_DISABLE 0
0113 #define ATOM_ENABLE 1
0114 #define ATOM_LCD_BLOFF (ATOM_DISABLE+2)
0115 #define ATOM_LCD_BLON (ATOM_ENABLE+2)
0116 #define ATOM_LCD_BL_BRIGHTNESS_CONTROL (ATOM_ENABLE+3)
0117 #define ATOM_LCD_SELFTEST_START (ATOM_DISABLE+5)
0118 #define ATOM_LCD_SELFTEST_STOP (ATOM_ENABLE+5)
0119 #define ATOM_ENCODER_INIT (ATOM_DISABLE+7)
0120 #define ATOM_INIT (ATOM_DISABLE+7)
0121 #define ATOM_GET_STATUS (ATOM_DISABLE+8)
0122
0123 #define ATOM_BLANKING 1
0124 #define ATOM_BLANKING_OFF 0
0125
0126
0127 #define ATOM_CRT1 0
0128 #define ATOM_CRT2 1
0129
0130 #define ATOM_TV_NTSC 1
0131 #define ATOM_TV_NTSCJ 2
0132 #define ATOM_TV_PAL 3
0133 #define ATOM_TV_PALM 4
0134 #define ATOM_TV_PALCN 5
0135 #define ATOM_TV_PALN 6
0136 #define ATOM_TV_PAL60 7
0137 #define ATOM_TV_SECAM 8
0138 #define ATOM_TV_CV 16
0139
0140 #define ATOM_DAC1_PS2 1
0141 #define ATOM_DAC1_CV 2
0142 #define ATOM_DAC1_NTSC 3
0143 #define ATOM_DAC1_PAL 4
0144
0145 #define ATOM_DAC2_PS2 ATOM_DAC1_PS2
0146 #define ATOM_DAC2_CV ATOM_DAC1_CV
0147 #define ATOM_DAC2_NTSC ATOM_DAC1_NTSC
0148 #define ATOM_DAC2_PAL ATOM_DAC1_PAL
0149
0150 #define ATOM_PM_ON 0
0151 #define ATOM_PM_STANDBY 1
0152 #define ATOM_PM_SUSPEND 2
0153 #define ATOM_PM_OFF 3
0154
0155
0156
0157
0158
0159
0160 #define ATOM_PANEL_MISC_DUAL 0x00000001
0161 #define ATOM_PANEL_MISC_888RGB 0x00000002
0162 #define ATOM_PANEL_MISC_GREY_LEVEL 0x0000000C
0163 #define ATOM_PANEL_MISC_FPDI 0x00000010
0164 #define ATOM_PANEL_MISC_GREY_LEVEL_SHIFT 2
0165 #define ATOM_PANEL_MISC_SPATIAL 0x00000020
0166 #define ATOM_PANEL_MISC_TEMPORAL 0x00000040
0167 #define ATOM_PANEL_MISC_API_ENABLED 0x00000080
0168
0169 #define MEMTYPE_DDR1 "DDR1"
0170 #define MEMTYPE_DDR2 "DDR2"
0171 #define MEMTYPE_DDR3 "DDR3"
0172 #define MEMTYPE_DDR4 "DDR4"
0173
0174 #define ASIC_BUS_TYPE_PCI "PCI"
0175 #define ASIC_BUS_TYPE_AGP "AGP"
0176 #define ASIC_BUS_TYPE_PCIE "PCI_EXPRESS"
0177
0178
0179 #define ATOM_FIREGL_FLAG_STRING "FGL"
0180 #define ATOM_MAX_SIZE_OF_FIREGL_FLAG_STRING 3
0181
0182 #define ATOM_FAKE_DESKTOP_STRING "DSK"
0183 #define ATOM_MAX_SIZE_OF_FAKE_DESKTOP_STRING ATOM_MAX_SIZE_OF_FIREGL_FLAG_STRING
0184
0185 #define ATOM_M54T_FLAG_STRING "M54T"
0186 #define ATOM_MAX_SIZE_OF_M54T_FLAG_STRING 4
0187
0188 #define HW_ASSISTED_I2C_STATUS_FAILURE 2
0189 #define HW_ASSISTED_I2C_STATUS_SUCCESS 1
0190
0191 #pragma pack(1)
0192
0193
0194 #define OFFSET_TO_POINTER_TO_ATOM_ROM_HEADER 0x00000048L
0195 #define OFFSET_TO_ATOM_ROM_IMAGE_SIZE 0x00000002L
0196
0197 #define OFFSET_TO_ATOMBIOS_ASIC_BUS_MEM_TYPE 0x94
0198 #define MAXSIZE_OF_ATOMBIOS_ASIC_BUS_MEM_TYPE 20
0199 #define OFFSET_TO_GET_ATOMBIOS_STRINGS_NUMBER 0x002f
0200 #define OFFSET_TO_GET_ATOMBIOS_STRINGS_START 0x006e
0201
0202
0203
0204
0205
0206
0207
0208 typedef struct _ATOM_COMMON_TABLE_HEADER
0209 {
0210 USHORT usStructureSize;
0211 UCHAR ucTableFormatRevision;
0212 UCHAR ucTableContentRevision;
0213
0214 }ATOM_COMMON_TABLE_HEADER;
0215
0216
0217
0218
0219 typedef struct _ATOM_ROM_HEADER
0220 {
0221 ATOM_COMMON_TABLE_HEADER sHeader;
0222 UCHAR uaFirmWareSignature[4];
0223
0224 USHORT usBiosRuntimeSegmentAddress;
0225 USHORT usProtectedModeInfoOffset;
0226 USHORT usConfigFilenameOffset;
0227 USHORT usCRC_BlockOffset;
0228 USHORT usBIOS_BootupMessageOffset;
0229 USHORT usInt10Offset;
0230 USHORT usPciBusDevInitCode;
0231 USHORT usIoBaseAddress;
0232 USHORT usSubsystemVendorID;
0233 USHORT usSubsystemID;
0234 USHORT usPCI_InfoOffset;
0235 USHORT usMasterCommandTableOffset;
0236 USHORT usMasterDataTableOffset;
0237 UCHAR ucExtendedFunctionCode;
0238 UCHAR ucReserved;
0239 }ATOM_ROM_HEADER;
0240
0241
0242 typedef struct _ATOM_ROM_HEADER_V2_1
0243 {
0244 ATOM_COMMON_TABLE_HEADER sHeader;
0245 UCHAR uaFirmWareSignature[4];
0246
0247 USHORT usBiosRuntimeSegmentAddress;
0248 USHORT usProtectedModeInfoOffset;
0249 USHORT usConfigFilenameOffset;
0250 USHORT usCRC_BlockOffset;
0251 USHORT usBIOS_BootupMessageOffset;
0252 USHORT usInt10Offset;
0253 USHORT usPciBusDevInitCode;
0254 USHORT usIoBaseAddress;
0255 USHORT usSubsystemVendorID;
0256 USHORT usSubsystemID;
0257 USHORT usPCI_InfoOffset;
0258 USHORT usMasterCommandTableOffset;
0259 USHORT usMasterDataTableOffset;
0260 UCHAR ucExtendedFunctionCode;
0261 UCHAR ucReserved;
0262 ULONG ulPSPDirTableOffset;
0263 }ATOM_ROM_HEADER_V2_1;
0264
0265
0266
0267
0268
0269
0270
0271
0272 typedef struct _ATOM_MASTER_LIST_OF_COMMAND_TABLES{
0273 USHORT ASIC_Init;
0274 USHORT GetDisplaySurfaceSize;
0275 USHORT ASIC_RegistersInit;
0276 USHORT VRAM_BlockVenderDetection;
0277 USHORT DIGxEncoderControl;
0278 USHORT MemoryControllerInit;
0279 USHORT EnableCRTCMemReq;
0280 USHORT MemoryParamAdjust;
0281 USHORT DVOEncoderControl;
0282 USHORT GPIOPinControl;
0283 USHORT SetEngineClock;
0284 USHORT SetMemoryClock;
0285 USHORT SetPixelClock;
0286 USHORT EnableDispPowerGating;
0287 USHORT ResetMemoryDLL;
0288 USHORT ResetMemoryDevice;
0289 USHORT MemoryPLLInit;
0290 USHORT AdjustDisplayPll;
0291 USHORT AdjustMemoryController;
0292 USHORT EnableASIC_StaticPwrMgt;
0293 USHORT SetUniphyInstance;
0294 USHORT DAC_LoadDetection;
0295 USHORT LVTMAEncoderControl;
0296 USHORT HW_Misc_Operation;
0297 USHORT DAC1EncoderControl;
0298 USHORT DAC2EncoderControl;
0299 USHORT DVOOutputControl;
0300 USHORT CV1OutputControl;
0301 USHORT GetConditionalGoldenSetting;
0302 USHORT SMC_Init;
0303 USHORT PatchMCSetting;
0304 USHORT MC_SEQ_Control;
0305 USHORT Gfx_Harvesting;
0306 USHORT EnableScaler;
0307 USHORT BlankCRTC;
0308 USHORT EnableCRTC;
0309 USHORT GetPixelClock;
0310 USHORT EnableVGA_Render;
0311 USHORT GetSCLKOverMCLKRatio;
0312 USHORT SetCRTC_Timing;
0313 USHORT SetCRTC_OverScan;
0314 USHORT GetSMUClockInfo;
0315 USHORT SelectCRTC_Source;
0316 USHORT EnableGraphSurfaces;
0317 USHORT UpdateCRTC_DoubleBufferRegisters;
0318 USHORT LUT_AutoFill;
0319 USHORT SetDCEClock;
0320 USHORT GetMemoryClock;
0321 USHORT GetEngineClock;
0322 USHORT SetCRTC_UsingDTDTiming;
0323 USHORT ExternalEncoderControl;
0324 USHORT LVTMAOutputControl;
0325 USHORT VRAM_BlockDetectionByStrap;
0326 USHORT MemoryCleanUp;
0327 USHORT ProcessI2cChannelTransaction;
0328 USHORT WriteOneByteToHWAssistedI2C;
0329 USHORT ReadHWAssistedI2CStatus;
0330 USHORT SpeedFanControl;
0331 USHORT PowerConnectorDetection;
0332 USHORT MC_Synchronization;
0333 USHORT ComputeMemoryEnginePLL;
0334 USHORT Gfx_Init;
0335 USHORT VRAM_GetCurrentInfoBlock;
0336 USHORT DynamicMemorySettings;
0337 USHORT MemoryTraining;
0338 USHORT EnableSpreadSpectrumOnPPLL;
0339 USHORT TMDSAOutputControl;
0340 USHORT SetVoltage;
0341 USHORT DAC1OutputControl;
0342 USHORT ReadEfuseValue;
0343 USHORT ComputeMemoryClockParam;
0344 USHORT ClockSource;
0345 USHORT MemoryDeviceInit;
0346 USHORT GetDispObjectInfo;
0347 USHORT DIG1EncoderControl;
0348 USHORT DIG2EncoderControl;
0349 USHORT DIG1TransmitterControl;
0350 USHORT DIG2TransmitterControl;
0351 USHORT ProcessAuxChannelTransaction;
0352 USHORT DPEncoderService;
0353 USHORT GetVoltageInfo;
0354 }ATOM_MASTER_LIST_OF_COMMAND_TABLES;
0355
0356
0357 #define ReadEDIDFromHWAssistedI2C ProcessI2cChannelTransaction
0358 #define DPTranslatorControl DIG2EncoderControl
0359 #define UNIPHYTransmitterControl DIG1TransmitterControl
0360 #define LVTMATransmitterControl DIG2TransmitterControl
0361 #define SetCRTC_DPM_State GetConditionalGoldenSetting
0362 #define ASIC_StaticPwrMgtStatusChange SetUniphyInstance
0363 #define HPDInterruptService ReadHWAssistedI2CStatus
0364 #define EnableVGA_Access GetSCLKOverMCLKRatio
0365 #define EnableYUV GetDispObjectInfo
0366 #define DynamicClockGating EnableDispPowerGating
0367 #define SetupHWAssistedI2CStatus ComputeMemoryClockParam
0368 #define DAC2OutputControl ReadEfuseValue
0369
0370 #define TMDSAEncoderControl PatchMCSetting
0371 #define LVDSEncoderControl MC_SEQ_Control
0372 #define LCD1OutputControl HW_Misc_Operation
0373 #define TV1OutputControl Gfx_Harvesting
0374 #define TVEncoderControl SMC_Init
0375 #define EnableHW_IconCursor SetDCEClock
0376 #define SetCRTC_Replication GetSMUClockInfo
0377
0378 #define MemoryRefreshConversion Gfx_Init
0379
0380 typedef struct _ATOM_MASTER_COMMAND_TABLE
0381 {
0382 ATOM_COMMON_TABLE_HEADER sHeader;
0383 ATOM_MASTER_LIST_OF_COMMAND_TABLES ListOfCommandTables;
0384 }ATOM_MASTER_COMMAND_TABLE;
0385
0386
0387
0388
0389 typedef struct _ATOM_TABLE_ATTRIBUTE
0390 {
0391 #if ATOM_BIG_ENDIAN
0392 USHORT UpdatedByUtility:1;
0393 USHORT PS_SizeInBytes:7;
0394 USHORT WS_SizeInBytes:8;
0395 #else
0396 USHORT WS_SizeInBytes:8;
0397 USHORT PS_SizeInBytes:7;
0398 USHORT UpdatedByUtility:1;
0399 #endif
0400 }ATOM_TABLE_ATTRIBUTE;
0401
0402
0403
0404
0405
0406
0407 typedef struct _ATOM_COMMON_ROM_COMMAND_TABLE_HEADER
0408 {
0409 ATOM_COMMON_TABLE_HEADER CommonHeader;
0410 ATOM_TABLE_ATTRIBUTE TableAttribute;
0411 }ATOM_COMMON_ROM_COMMAND_TABLE_HEADER;
0412
0413
0414
0415
0416
0417 #define COMPUTE_MEMORY_PLL_PARAM 1
0418 #define COMPUTE_ENGINE_PLL_PARAM 2
0419 #define ADJUST_MC_SETTING_PARAM 3
0420
0421
0422
0423
0424 typedef struct _ATOM_ADJUST_MEMORY_CLOCK_FREQ
0425 {
0426 #if ATOM_BIG_ENDIAN
0427 ULONG ulPointerReturnFlag:1;
0428 ULONG ulMemoryModuleNumber:7;
0429 ULONG ulClockFreq:24;
0430 #else
0431 ULONG ulClockFreq:24;
0432 ULONG ulMemoryModuleNumber:7;
0433 ULONG ulPointerReturnFlag:1;
0434 #endif
0435 }ATOM_ADJUST_MEMORY_CLOCK_FREQ;
0436 #define POINTER_RETURN_FLAG 0x80
0437
0438 typedef struct _COMPUTE_MEMORY_ENGINE_PLL_PARAMETERS
0439 {
0440 ULONG ulClock;
0441 UCHAR ucAction;
0442 UCHAR ucReserved;
0443 UCHAR ucFbDiv;
0444 UCHAR ucPostDiv;
0445 }COMPUTE_MEMORY_ENGINE_PLL_PARAMETERS;
0446
0447 typedef struct _COMPUTE_MEMORY_ENGINE_PLL_PARAMETERS_V2
0448 {
0449 ULONG ulClock;
0450 UCHAR ucAction;
0451 USHORT usFbDiv;
0452 UCHAR ucPostDiv;
0453 }COMPUTE_MEMORY_ENGINE_PLL_PARAMETERS_V2;
0454
0455 #define COMPUTE_MEMORY_ENGINE_PLL_PARAMETERS_PS_ALLOCATION COMPUTE_MEMORY_ENGINE_PLL_PARAMETERS
0456
0457 #define SET_CLOCK_FREQ_MASK 0x00FFFFFF
0458 #define USE_NON_BUS_CLOCK_MASK 0x01000000
0459 #define USE_MEMORY_SELF_REFRESH_MASK 0x02000000
0460 #define SKIP_INTERNAL_MEMORY_PARAMETER_CHANGE 0x04000000
0461 #define FIRST_TIME_CHANGE_CLOCK 0x08000000
0462 #define SKIP_SW_PROGRAM_PLL 0x10000000
0463 #define USE_SS_ENABLED_PIXEL_CLOCK USE_NON_BUS_CLOCK_MASK
0464
0465 #define b3USE_NON_BUS_CLOCK_MASK 0x01
0466 #define b3USE_MEMORY_SELF_REFRESH 0x02
0467 #define b3SKIP_INTERNAL_MEMORY_PARAMETER_CHANGE 0x04
0468 #define b3FIRST_TIME_CHANGE_CLOCK 0x08
0469 #define b3SKIP_SW_PROGRAM_PLL 0x10
0470 #define b3DRAM_SELF_REFRESH_EXIT 0x20
0471 #define b3SRIOV_INIT_BOOT 0x40
0472 #define b3SRIOV_LOAD_UCODE 0x40
0473 #define b3SRIOV_SKIP_ASIC_INIT 0x02
0474
0475 typedef struct _ATOM_COMPUTE_CLOCK_FREQ
0476 {
0477 #if ATOM_BIG_ENDIAN
0478 ULONG ulComputeClockFlag:8;
0479 ULONG ulClockFreq:24;
0480 #else
0481 ULONG ulClockFreq:24;
0482 ULONG ulComputeClockFlag:8;
0483 #endif
0484 }ATOM_COMPUTE_CLOCK_FREQ;
0485
0486 typedef struct _ATOM_S_MPLL_FB_DIVIDER
0487 {
0488 USHORT usFbDivFrac;
0489 USHORT usFbDiv;
0490 }ATOM_S_MPLL_FB_DIVIDER;
0491
0492 typedef struct _COMPUTE_MEMORY_ENGINE_PLL_PARAMETERS_V3
0493 {
0494 union
0495 {
0496 ATOM_COMPUTE_CLOCK_FREQ ulClock;
0497 ULONG ulClockParams;
0498 ATOM_S_MPLL_FB_DIVIDER ulFbDiv;
0499 };
0500 UCHAR ucRefDiv;
0501 UCHAR ucPostDiv;
0502 UCHAR ucCntlFlag;
0503 UCHAR ucReserved;
0504 }COMPUTE_MEMORY_ENGINE_PLL_PARAMETERS_V3;
0505
0506
0507 #define ATOM_PLL_CNTL_FLAG_PLL_POST_DIV_EN 1
0508 #define ATOM_PLL_CNTL_FLAG_MPLL_VCO_MODE 2
0509 #define ATOM_PLL_CNTL_FLAG_FRACTION_DISABLE 4
0510 #define ATOM_PLL_CNTL_FLAG_SPLL_ISPARE_9 8
0511
0512
0513
0514 typedef struct _COMPUTE_MEMORY_ENGINE_PLL_PARAMETERS_V4
0515 {
0516 #if ATOM_BIG_ENDIAN
0517 ULONG ucPostDiv:8;
0518 ULONG ulClock:24;
0519 #else
0520 ULONG ulClock:24;
0521 ULONG ucPostDiv:8;
0522 #endif
0523 }COMPUTE_MEMORY_ENGINE_PLL_PARAMETERS_V4;
0524
0525 typedef struct _COMPUTE_MEMORY_ENGINE_PLL_PARAMETERS_V5
0526 {
0527 union
0528 {
0529 ATOM_COMPUTE_CLOCK_FREQ ulClock;
0530 ULONG ulClockParams;
0531 ATOM_S_MPLL_FB_DIVIDER ulFbDiv;
0532 };
0533 UCHAR ucRefDiv;
0534 UCHAR ucPostDiv;
0535 union
0536 {
0537 UCHAR ucCntlFlag;
0538 UCHAR ucInputFlag;
0539 };
0540 UCHAR ucReserved;
0541 }COMPUTE_MEMORY_ENGINE_PLL_PARAMETERS_V5;
0542
0543
0544 typedef struct _COMPUTE_GPU_CLOCK_INPUT_PARAMETERS_V1_6
0545 {
0546 ATOM_COMPUTE_CLOCK_FREQ ulClock;
0547 ULONG ulReserved[2];
0548 }COMPUTE_GPU_CLOCK_INPUT_PARAMETERS_V1_6;
0549
0550
0551 #define COMPUTE_GPUCLK_INPUT_FLAG_CLK_TYPE_MASK 0x0f
0552 #define COMPUTE_GPUCLK_INPUT_FLAG_DEFAULT_GPUCLK 0x00
0553 #define COMPUTE_GPUCLK_INPUT_FLAG_SCLK 0x01
0554
0555
0556 typedef struct _COMPUTE_GPU_CLOCK_OUTPUT_PARAMETERS_V1_6
0557 {
0558 COMPUTE_MEMORY_ENGINE_PLL_PARAMETERS_V4 ulClock;
0559 ATOM_S_MPLL_FB_DIVIDER ulFbDiv;
0560 UCHAR ucPllRefDiv;
0561 UCHAR ucPllPostDiv;
0562 UCHAR ucPllCntlFlag;
0563 UCHAR ucReserved;
0564 }COMPUTE_GPU_CLOCK_OUTPUT_PARAMETERS_V1_6;
0565
0566
0567 #define SPLL_CNTL_FLAG_VCO_MODE_MASK 0x03
0568
0569 typedef struct _COMPUTE_GPU_CLOCK_INPUT_PARAMETERS_V1_7
0570 {
0571 ATOM_COMPUTE_CLOCK_FREQ ulClock;
0572 ULONG ulReserved[5];
0573 }COMPUTE_GPU_CLOCK_INPUT_PARAMETERS_V1_7;
0574
0575
0576 #define COMPUTE_GPUCLK_INPUT_FLAG_CLK_TYPE_MASK 0x0f
0577 #define COMPUTE_GPUCLK_INPUT_FLAG_DEFAULT_GPUCLK 0x00
0578 #define COMPUTE_GPUCLK_INPUT_FLAG_SCLK 0x01
0579
0580 typedef struct _COMPUTE_GPU_CLOCK_OUTPUT_PARAMETERS_V1_7
0581 {
0582 COMPUTE_MEMORY_ENGINE_PLL_PARAMETERS_V4 ulClock;
0583 USHORT usSclk_fcw_frac;
0584 USHORT usSclk_fcw_int;
0585 UCHAR ucSclkPostDiv;
0586 UCHAR ucSclkVcoMode;
0587 UCHAR ucSclkPllRange;
0588 UCHAR ucSscEnable;
0589 USHORT usSsc_fcw1_frac;
0590 USHORT usSsc_fcw1_int;
0591 USHORT usReserved;
0592 USHORT usPcc_fcw_int;
0593 USHORT usSsc_fcw_slew_frac;
0594 USHORT usPcc_fcw_slew_frac;
0595 }COMPUTE_GPU_CLOCK_OUTPUT_PARAMETERS_V1_7;
0596
0597
0598 #define ATOM_PLL_INPUT_FLAG_PLL_STROBE_MODE_EN 1
0599
0600
0601 typedef struct _COMPUTE_MEMORY_CLOCK_PARAM_PARAMETERS_V2_1
0602 {
0603 union
0604 {
0605 ULONG ulClock;
0606 ATOM_S_MPLL_FB_DIVIDER ulFbDiv;
0607 };
0608 UCHAR ucDllSpeed;
0609 UCHAR ucPostDiv;
0610 union{
0611 UCHAR ucInputFlag;
0612 UCHAR ucPllCntlFlag;
0613 };
0614 UCHAR ucBWCntl;
0615 }COMPUTE_MEMORY_CLOCK_PARAM_PARAMETERS_V2_1;
0616
0617
0618 #define MPLL_INPUT_FLAG_STROBE_MODE_EN 0x01
0619
0620 #define MPLL_CNTL_FLAG_VCO_MODE_MASK 0x03
0621 #define MPLL_CNTL_FLAG_BYPASS_DQ_PLL 0x04
0622 #define MPLL_CNTL_FLAG_QDR_ENABLE 0x08
0623 #define MPLL_CNTL_FLAG_AD_HALF_RATE 0x10
0624
0625
0626 #define MPLL_CNTL_FLAG_BYPASS_AD_PLL 0x04
0627
0628
0629 typedef struct _COMPUTE_MEMORY_CLOCK_PARAM_PARAMETERS_V2_2
0630 {
0631 COMPUTE_MEMORY_ENGINE_PLL_PARAMETERS_V4 ulClock;
0632 ULONG ulReserved;
0633 }COMPUTE_MEMORY_CLOCK_PARAM_PARAMETERS_V2_2;
0634
0635 typedef struct _COMPUTE_MEMORY_CLOCK_PARAM_PARAMETERS_V2_3
0636 {
0637 COMPUTE_MEMORY_ENGINE_PLL_PARAMETERS_V4 ulClock;
0638 USHORT usMclk_fcw_frac;
0639 USHORT usMclk_fcw_int;
0640 }COMPUTE_MEMORY_CLOCK_PARAM_PARAMETERS_V2_3;
0641
0642
0643
0644 typedef struct _DYNAMICE_MEMORY_SETTINGS_PARAMETER
0645 {
0646 ATOM_COMPUTE_CLOCK_FREQ ulClock;
0647 ULONG ulReserved[2];
0648 }DYNAMICE_MEMORY_SETTINGS_PARAMETER;
0649
0650
0651
0652 typedef struct _DYNAMICE_ENGINE_SETTINGS_PARAMETER
0653 {
0654 ATOM_COMPUTE_CLOCK_FREQ ulClock;
0655 ULONG ulMemoryClock;
0656 ULONG ulReserved;
0657 }DYNAMICE_ENGINE_SETTINGS_PARAMETER;
0658
0659
0660
0661 typedef struct _DYNAMICE_MC_DPM_SETTINGS_PARAMETER
0662 {
0663 ATOM_COMPUTE_CLOCK_FREQ ulClock;
0664 UCHAR ucMclkDPMState;
0665 UCHAR ucReserved[3];
0666 ULONG ulReserved;
0667 }DYNAMICE_MC_DPM_SETTINGS_PARAMETER;
0668
0669
0670 #define DYNAMIC_MC_DPM_SETTING_LOW_DPM_STATE 0
0671 #define DYNAMIC_MC_DPM_SETTING_MEDIUM_DPM_STATE 1
0672 #define DYNAMIC_MC_DPM_SETTING_HIGH_DPM_STATE 2
0673
0674 typedef union _DYNAMICE_MEMORY_SETTINGS_PARAMETER_V2_1
0675 {
0676 DYNAMICE_MEMORY_SETTINGS_PARAMETER asMCReg;
0677 DYNAMICE_ENGINE_SETTINGS_PARAMETER asMCArbReg;
0678 DYNAMICE_MC_DPM_SETTINGS_PARAMETER asDPMMCReg;
0679 }DYNAMICE_MEMORY_SETTINGS_PARAMETER_V2_1;
0680
0681
0682
0683
0684
0685 typedef struct _SET_ENGINE_CLOCK_PARAMETERS
0686 {
0687 ULONG ulTargetEngineClock;
0688 }SET_ENGINE_CLOCK_PARAMETERS;
0689
0690 typedef struct _SET_ENGINE_CLOCK_PS_ALLOCATION
0691 {
0692 ULONG ulTargetEngineClock;
0693 COMPUTE_MEMORY_ENGINE_PLL_PARAMETERS_PS_ALLOCATION sReserved;
0694 }SET_ENGINE_CLOCK_PS_ALLOCATION;
0695
0696 typedef struct _SET_ENGINE_CLOCK_PS_ALLOCATION_V1_2
0697 {
0698 ULONG ulTargetEngineClock;
0699 COMPUTE_GPU_CLOCK_INPUT_PARAMETERS_V1_7 sReserved;
0700 }SET_ENGINE_CLOCK_PS_ALLOCATION_V1_2;
0701
0702
0703
0704
0705
0706 typedef struct _SET_MEMORY_CLOCK_PARAMETERS
0707 {
0708 ULONG ulTargetMemoryClock;
0709 }SET_MEMORY_CLOCK_PARAMETERS;
0710
0711 typedef struct _SET_MEMORY_CLOCK_PS_ALLOCATION
0712 {
0713 ULONG ulTargetMemoryClock;
0714 COMPUTE_MEMORY_ENGINE_PLL_PARAMETERS_PS_ALLOCATION sReserved;
0715 }SET_MEMORY_CLOCK_PS_ALLOCATION;
0716
0717
0718
0719
0720 typedef struct _ASIC_INIT_PARAMETERS
0721 {
0722 ULONG ulDefaultEngineClock;
0723 ULONG ulDefaultMemoryClock;
0724 }ASIC_INIT_PARAMETERS;
0725
0726 typedef struct _ASIC_INIT_PS_ALLOCATION
0727 {
0728 ASIC_INIT_PARAMETERS sASICInitClocks;
0729 SET_ENGINE_CLOCK_PS_ALLOCATION sReserved;
0730 }ASIC_INIT_PS_ALLOCATION;
0731
0732 typedef struct _ASIC_INIT_CLOCK_PARAMETERS
0733 {
0734 ULONG ulClkFreqIn10Khz:24;
0735 ULONG ucClkFlag:8;
0736 }ASIC_INIT_CLOCK_PARAMETERS;
0737
0738 typedef struct _ASIC_INIT_PARAMETERS_V1_2
0739 {
0740 ASIC_INIT_CLOCK_PARAMETERS asSclkClock;
0741 ASIC_INIT_CLOCK_PARAMETERS asMemClock;
0742 }ASIC_INIT_PARAMETERS_V1_2;
0743
0744 typedef struct _ASIC_INIT_PS_ALLOCATION_V1_2
0745 {
0746 ASIC_INIT_PARAMETERS_V1_2 sASICInitClocks;
0747 ULONG ulReserved[8];
0748 }ASIC_INIT_PS_ALLOCATION_V1_2;
0749
0750
0751
0752
0753 typedef struct _DYNAMIC_CLOCK_GATING_PARAMETERS
0754 {
0755 UCHAR ucEnable;
0756 UCHAR ucPadding[3];
0757 }DYNAMIC_CLOCK_GATING_PARAMETERS;
0758 #define DYNAMIC_CLOCK_GATING_PS_ALLOCATION DYNAMIC_CLOCK_GATING_PARAMETERS
0759
0760
0761
0762
0763 typedef struct _ENABLE_DISP_POWER_GATING_PARAMETERS_V2_1
0764 {
0765 UCHAR ucDispPipeId;
0766 UCHAR ucEnable;
0767 UCHAR ucPadding[2];
0768 }ENABLE_DISP_POWER_GATING_PARAMETERS_V2_1;
0769
0770 typedef struct _ENABLE_DISP_POWER_GATING_PS_ALLOCATION
0771 {
0772 UCHAR ucDispPipeId;
0773 UCHAR ucEnable;
0774 UCHAR ucPadding[2];
0775 ULONG ulReserved[4];
0776 }ENABLE_DISP_POWER_GATING_PS_ALLOCATION;
0777
0778
0779
0780
0781 typedef struct _ENABLE_ASIC_STATIC_PWR_MGT_PARAMETERS
0782 {
0783 UCHAR ucEnable;
0784 UCHAR ucPadding[3];
0785 }ENABLE_ASIC_STATIC_PWR_MGT_PARAMETERS;
0786 #define ENABLE_ASIC_STATIC_PWR_MGT_PS_ALLOCATION ENABLE_ASIC_STATIC_PWR_MGT_PARAMETERS
0787
0788
0789
0790
0791 typedef struct _DAC_LOAD_DETECTION_PARAMETERS
0792 {
0793 USHORT usDeviceID;
0794 UCHAR ucDacType;
0795 UCHAR ucMisc;
0796 }DAC_LOAD_DETECTION_PARAMETERS;
0797
0798
0799 #define DAC_LOAD_MISC_YPrPb 0x01
0800
0801 typedef struct _DAC_LOAD_DETECTION_PS_ALLOCATION
0802 {
0803 DAC_LOAD_DETECTION_PARAMETERS sDacload;
0804 ULONG Reserved[2];
0805 }DAC_LOAD_DETECTION_PS_ALLOCATION;
0806
0807
0808
0809
0810 typedef struct _DAC_ENCODER_CONTROL_PARAMETERS
0811 {
0812 USHORT usPixelClock;
0813 UCHAR ucDacStandard;
0814 UCHAR ucAction;
0815
0816
0817 }DAC_ENCODER_CONTROL_PARAMETERS;
0818
0819 #define DAC_ENCODER_CONTROL_PS_ALLOCATION DAC_ENCODER_CONTROL_PARAMETERS
0820
0821
0822
0823
0824
0825
0826 typedef struct _DIG_ENCODER_CONTROL_PARAMETERS
0827 {
0828 USHORT usPixelClock;
0829 UCHAR ucConfig;
0830
0831
0832
0833
0834
0835
0836
0837 UCHAR ucAction;
0838
0839 UCHAR ucEncoderMode;
0840
0841
0842
0843
0844
0845 UCHAR ucLaneNum;
0846 UCHAR ucReserved[2];
0847 }DIG_ENCODER_CONTROL_PARAMETERS;
0848 #define DIG_ENCODER_CONTROL_PS_ALLOCATION DIG_ENCODER_CONTROL_PARAMETERS
0849 #define EXTERNAL_ENCODER_CONTROL_PARAMETER DIG_ENCODER_CONTROL_PARAMETERS
0850
0851
0852 #define ATOM_ENCODER_CONFIG_DPLINKRATE_MASK 0x01
0853 #define ATOM_ENCODER_CONFIG_DPLINKRATE_1_62GHZ 0x00
0854 #define ATOM_ENCODER_CONFIG_DPLINKRATE_2_70GHZ 0x01
0855 #define ATOM_ENCODER_CONFIG_DPLINKRATE_5_40GHZ 0x02
0856 #define ATOM_ENCODER_CONFIG_LINK_SEL_MASK 0x04
0857 #define ATOM_ENCODER_CONFIG_LINKA 0x00
0858 #define ATOM_ENCODER_CONFIG_LINKB 0x04
0859 #define ATOM_ENCODER_CONFIG_LINKA_B ATOM_TRANSMITTER_CONFIG_LINKA
0860 #define ATOM_ENCODER_CONFIG_LINKB_A ATOM_ENCODER_CONFIG_LINKB
0861 #define ATOM_ENCODER_CONFIG_TRANSMITTER_SEL_MASK 0x08
0862 #define ATOM_ENCODER_CONFIG_UNIPHY 0x00
0863 #define ATOM_ENCODER_CONFIG_LVTMA 0x08
0864 #define ATOM_ENCODER_CONFIG_TRANSMITTER1 0x00
0865 #define ATOM_ENCODER_CONFIG_TRANSMITTER2 0x08
0866 #define ATOM_ENCODER_CONFIG_DIGB 0x80
0867
0868
0869
0870
0871
0872 #define ATOM_ENCODER_MODE_DP 0
0873 #define ATOM_ENCODER_MODE_LVDS 1
0874 #define ATOM_ENCODER_MODE_DVI 2
0875 #define ATOM_ENCODER_MODE_HDMI 3
0876 #define ATOM_ENCODER_MODE_SDVO 4
0877 #define ATOM_ENCODER_MODE_DP_AUDIO 5
0878 #define ATOM_ENCODER_MODE_TV 13
0879 #define ATOM_ENCODER_MODE_CV 14
0880 #define ATOM_ENCODER_MODE_CRT 15
0881 #define ATOM_ENCODER_MODE_DVO 16
0882 #define ATOM_ENCODER_MODE_DP_SST ATOM_ENCODER_MODE_DP
0883 #define ATOM_ENCODER_MODE_DP_MST 5
0884
0885
0886 typedef struct _ATOM_DIG_ENCODER_CONFIG_V2
0887 {
0888 #if ATOM_BIG_ENDIAN
0889 UCHAR ucReserved1:2;
0890 UCHAR ucTransmitterSel:2;
0891 UCHAR ucLinkSel:1;
0892 UCHAR ucReserved:1;
0893 UCHAR ucDPLinkRate:1;
0894 #else
0895 UCHAR ucDPLinkRate:1;
0896 UCHAR ucReserved:1;
0897 UCHAR ucLinkSel:1;
0898 UCHAR ucTransmitterSel:2;
0899 UCHAR ucReserved1:2;
0900 #endif
0901 }ATOM_DIG_ENCODER_CONFIG_V2;
0902
0903
0904 typedef struct _DIG_ENCODER_CONTROL_PARAMETERS_V2
0905 {
0906 USHORT usPixelClock;
0907 ATOM_DIG_ENCODER_CONFIG_V2 acConfig;
0908 UCHAR ucAction;
0909 UCHAR ucEncoderMode;
0910
0911
0912
0913
0914
0915 UCHAR ucLaneNum;
0916 UCHAR ucStatus;
0917 UCHAR ucReserved;
0918 }DIG_ENCODER_CONTROL_PARAMETERS_V2;
0919
0920
0921 #define ATOM_ENCODER_CONFIG_V2_DPLINKRATE_MASK 0x01
0922 #define ATOM_ENCODER_CONFIG_V2_DPLINKRATE_1_62GHZ 0x00
0923 #define ATOM_ENCODER_CONFIG_V2_DPLINKRATE_2_70GHZ 0x01
0924 #define ATOM_ENCODER_CONFIG_V2_LINK_SEL_MASK 0x04
0925 #define ATOM_ENCODER_CONFIG_V2_LINKA 0x00
0926 #define ATOM_ENCODER_CONFIG_V2_LINKB 0x04
0927 #define ATOM_ENCODER_CONFIG_V2_TRANSMITTER_SEL_MASK 0x18
0928 #define ATOM_ENCODER_CONFIG_V2_TRANSMITTER1 0x00
0929 #define ATOM_ENCODER_CONFIG_V2_TRANSMITTER2 0x08
0930 #define ATOM_ENCODER_CONFIG_V2_TRANSMITTER3 0x10
0931
0932
0933
0934
0935 #define ATOM_ENCODER_CMD_DP_LINK_TRAINING_START 0x08
0936 #define ATOM_ENCODER_CMD_DP_LINK_TRAINING_PATTERN1 0x09
0937 #define ATOM_ENCODER_CMD_DP_LINK_TRAINING_PATTERN2 0x0a
0938 #define ATOM_ENCODER_CMD_DP_LINK_TRAINING_PATTERN3 0x13
0939 #define ATOM_ENCODER_CMD_DP_LINK_TRAINING_COMPLETE 0x0b
0940 #define ATOM_ENCODER_CMD_DP_VIDEO_OFF 0x0c
0941 #define ATOM_ENCODER_CMD_DP_VIDEO_ON 0x0d
0942 #define ATOM_ENCODER_CMD_QUERY_DP_LINK_TRAINING_STATUS 0x0e
0943 #define ATOM_ENCODER_CMD_SETUP 0x0f
0944 #define ATOM_ENCODER_CMD_SETUP_PANEL_MODE 0x10
0945
0946
0947 #define ATOM_ENCODER_CMD_DP_LINK_TRAINING_PATTERN4 0x14
0948 #define ATOM_ENCODER_CMD_STREAM_SETUP 0x0F
0949 #define ATOM_ENCODER_CMD_LINK_SETUP 0x11
0950 #define ATOM_ENCODER_CMD_ENCODER_BLANK 0x12
0951
0952
0953 #define ATOM_ENCODER_STATUS_LINK_TRAINING_COMPLETE 0x10
0954 #define ATOM_ENCODER_STATUS_LINK_TRAINING_INCOMPLETE 0x00
0955
0956
0957
0958
0959 typedef struct _ATOM_DIG_ENCODER_CONFIG_V3
0960 {
0961 #if ATOM_BIG_ENDIAN
0962 UCHAR ucReserved1:1;
0963 UCHAR ucDigSel:3;
0964 UCHAR ucReserved:3;
0965 UCHAR ucDPLinkRate:1;
0966 #else
0967 UCHAR ucDPLinkRate:1;
0968 UCHAR ucReserved:3;
0969 UCHAR ucDigSel:3;
0970 UCHAR ucReserved1:1;
0971 #endif
0972 }ATOM_DIG_ENCODER_CONFIG_V3;
0973
0974 #define ATOM_ENCODER_CONFIG_V3_DPLINKRATE_MASK 0x03
0975 #define ATOM_ENCODER_CONFIG_V3_DPLINKRATE_1_62GHZ 0x00
0976 #define ATOM_ENCODER_CONFIG_V3_DPLINKRATE_2_70GHZ 0x01
0977 #define ATOM_ENCODER_CONFIG_V3_ENCODER_SEL 0x70
0978 #define ATOM_ENCODER_CONFIG_V3_DIG0_ENCODER 0x00
0979 #define ATOM_ENCODER_CONFIG_V3_DIG1_ENCODER 0x10
0980 #define ATOM_ENCODER_CONFIG_V3_DIG2_ENCODER 0x20
0981 #define ATOM_ENCODER_CONFIG_V3_DIG3_ENCODER 0x30
0982 #define ATOM_ENCODER_CONFIG_V3_DIG4_ENCODER 0x40
0983 #define ATOM_ENCODER_CONFIG_V3_DIG5_ENCODER 0x50
0984
0985 typedef struct _DIG_ENCODER_CONTROL_PARAMETERS_V3
0986 {
0987 USHORT usPixelClock;
0988 ATOM_DIG_ENCODER_CONFIG_V3 acConfig;
0989 UCHAR ucAction;
0990 union{
0991 UCHAR ucEncoderMode;
0992
0993
0994
0995
0996
0997
0998 UCHAR ucPanelMode;
0999
1000
1001
1002 };
1003 UCHAR ucLaneNum;
1004 UCHAR ucBitPerColor;
1005 UCHAR ucReserved;
1006 }DIG_ENCODER_CONTROL_PARAMETERS_V3;
1007
1008
1009
1010
1011
1012 typedef struct _ATOM_DIG_ENCODER_CONFIG_V4
1013 {
1014 #if ATOM_BIG_ENDIAN
1015 UCHAR ucReserved1:1;
1016 UCHAR ucDigSel:3;
1017 UCHAR ucReserved:2;
1018 UCHAR ucDPLinkRate:2;
1019 #else
1020 UCHAR ucDPLinkRate:2;
1021 UCHAR ucReserved:2;
1022 UCHAR ucDigSel:3;
1023 UCHAR ucReserved1:1;
1024 #endif
1025 }ATOM_DIG_ENCODER_CONFIG_V4;
1026
1027 #define ATOM_ENCODER_CONFIG_V4_DPLINKRATE_MASK 0x03
1028 #define ATOM_ENCODER_CONFIG_V4_DPLINKRATE_1_62GHZ 0x00
1029 #define ATOM_ENCODER_CONFIG_V4_DPLINKRATE_2_70GHZ 0x01
1030 #define ATOM_ENCODER_CONFIG_V4_DPLINKRATE_5_40GHZ 0x02
1031 #define ATOM_ENCODER_CONFIG_V4_DPLINKRATE_3_24GHZ 0x03
1032 #define ATOM_ENCODER_CONFIG_V4_ENCODER_SEL 0x70
1033 #define ATOM_ENCODER_CONFIG_V4_DIG0_ENCODER 0x00
1034 #define ATOM_ENCODER_CONFIG_V4_DIG1_ENCODER 0x10
1035 #define ATOM_ENCODER_CONFIG_V4_DIG2_ENCODER 0x20
1036 #define ATOM_ENCODER_CONFIG_V4_DIG3_ENCODER 0x30
1037 #define ATOM_ENCODER_CONFIG_V4_DIG4_ENCODER 0x40
1038 #define ATOM_ENCODER_CONFIG_V4_DIG5_ENCODER 0x50
1039 #define ATOM_ENCODER_CONFIG_V4_DIG6_ENCODER 0x60
1040
1041 typedef struct _DIG_ENCODER_CONTROL_PARAMETERS_V4
1042 {
1043 USHORT usPixelClock;
1044 union{
1045 ATOM_DIG_ENCODER_CONFIG_V4 acConfig;
1046 UCHAR ucConfig;
1047 };
1048 UCHAR ucAction;
1049 union{
1050 UCHAR ucEncoderMode;
1051
1052
1053
1054
1055
1056
1057 UCHAR ucPanelMode;
1058
1059
1060
1061 };
1062 UCHAR ucLaneNum;
1063 UCHAR ucBitPerColor;
1064 UCHAR ucHPD_ID;
1065 }DIG_ENCODER_CONTROL_PARAMETERS_V4;
1066
1067
1068 #define PANEL_BPC_UNDEFINE 0x00
1069 #define PANEL_6BIT_PER_COLOR 0x01
1070 #define PANEL_8BIT_PER_COLOR 0x02
1071 #define PANEL_10BIT_PER_COLOR 0x03
1072 #define PANEL_12BIT_PER_COLOR 0x04
1073 #define PANEL_16BIT_PER_COLOR 0x05
1074
1075
1076 #define DP_PANEL_MODE_EXTERNAL_DP_MODE 0x00
1077 #define DP_PANEL_MODE_INTERNAL_DP2_MODE 0x01
1078 #define DP_PANEL_MODE_INTERNAL_DP1_MODE 0x11
1079
1080
1081 typedef struct _ENCODER_STREAM_SETUP_PARAMETERS_V5
1082 {
1083 UCHAR ucDigId;
1084 UCHAR ucAction;
1085 UCHAR ucDigMode;
1086 UCHAR ucLaneNum;
1087 ULONG ulPixelClock;
1088 UCHAR ucBitPerColor;
1089 UCHAR ucLinkRateIn270Mhz;
1090 UCHAR ucReserved[2];
1091 }ENCODER_STREAM_SETUP_PARAMETERS_V5;
1092
1093 typedef struct _ENCODER_LINK_SETUP_PARAMETERS_V5
1094 {
1095 UCHAR ucDigId;
1096 UCHAR ucAction;
1097 UCHAR ucDigMode;
1098 UCHAR ucLaneNum;
1099 ULONG ulSymClock;
1100 UCHAR ucHPDSel;
1101 UCHAR ucDigEncoderSel;
1102 UCHAR ucReserved[2];
1103 }ENCODER_LINK_SETUP_PARAMETERS_V5;
1104
1105 typedef struct _DP_PANEL_MODE_SETUP_PARAMETERS_V5
1106 {
1107 UCHAR ucDigId;
1108 UCHAR ucAction;
1109 UCHAR ucPanelMode;
1110
1111
1112 UCHAR ucReserved;
1113 ULONG ulReserved[2];
1114 }DP_PANEL_MODE_SETUP_PARAMETERS_V5;
1115
1116 typedef struct _ENCODER_GENERIC_CMD_PARAMETERS_V5
1117 {
1118 UCHAR ucDigId;
1119 UCHAR ucAction;
1120 UCHAR ucReserved[2];
1121 ULONG ulReserved[2];
1122 }ENCODER_GENERIC_CMD_PARAMETERS_V5;
1123
1124
1125 #define ATOM_ENCODER_CONFIG_V5_DIG0_ENCODER 0x00
1126 #define ATOM_ENCODER_CONFIG_V5_DIG1_ENCODER 0x01
1127 #define ATOM_ENCODER_CONFIG_V5_DIG2_ENCODER 0x02
1128 #define ATOM_ENCODER_CONFIG_V5_DIG3_ENCODER 0x03
1129 #define ATOM_ENCODER_CONFIG_V5_DIG4_ENCODER 0x04
1130 #define ATOM_ENCODER_CONFIG_V5_DIG5_ENCODER 0x05
1131 #define ATOM_ENCODER_CONFIG_V5_DIG6_ENCODER 0x06
1132
1133
1134 typedef union _DIG_ENCODER_CONTROL_PARAMETERS_V5
1135 {
1136 ENCODER_GENERIC_CMD_PARAMETERS_V5 asCmdParam;
1137 ENCODER_STREAM_SETUP_PARAMETERS_V5 asStreamParam;
1138 ENCODER_LINK_SETUP_PARAMETERS_V5 asLinkParam;
1139 DP_PANEL_MODE_SETUP_PARAMETERS_V5 asDPPanelModeParam;
1140 }DIG_ENCODER_CONTROL_PARAMETERS_V5;
1141
1142
1143
1144
1145
1146
1147
1148 typedef struct _ATOM_DP_VS_MODE
1149 {
1150 UCHAR ucLaneSel;
1151 UCHAR ucLaneSet;
1152 }ATOM_DP_VS_MODE;
1153
1154 typedef struct _DIG_TRANSMITTER_CONTROL_PARAMETERS
1155 {
1156 union
1157 {
1158 USHORT usPixelClock;
1159 USHORT usInitInfo;
1160 ATOM_DP_VS_MODE asMode;
1161 };
1162 UCHAR ucConfig;
1163
1164
1165
1166
1167
1168
1169
1170
1171
1172
1173
1174
1175
1176 UCHAR ucAction;
1177
1178 UCHAR ucReserved[4];
1179 }DIG_TRANSMITTER_CONTROL_PARAMETERS;
1180
1181 #define DIG_TRANSMITTER_CONTROL_PS_ALLOCATION DIG_TRANSMITTER_CONTROL_PARAMETERS
1182
1183
1184 #define ATOM_TRAMITTER_INITINFO_CONNECTOR_MASK 0x00ff
1185
1186
1187 #define ATOM_TRANSMITTER_CONFIG_8LANE_LINK 0x01
1188 #define ATOM_TRANSMITTER_CONFIG_COHERENT 0x02
1189 #define ATOM_TRANSMITTER_CONFIG_LINK_SEL_MASK 0x04
1190 #define ATOM_TRANSMITTER_CONFIG_LINKA 0x00
1191 #define ATOM_TRANSMITTER_CONFIG_LINKB 0x04
1192 #define ATOM_TRANSMITTER_CONFIG_LINKA_B 0x00
1193 #define ATOM_TRANSMITTER_CONFIG_LINKB_A 0x04
1194
1195 #define ATOM_TRANSMITTER_CONFIG_ENCODER_SEL_MASK 0x08
1196 #define ATOM_TRANSMITTER_CONFIG_DIG1_ENCODER 0x00
1197 #define ATOM_TRANSMITTER_CONFIG_DIG2_ENCODER 0x08
1198
1199 #define ATOM_TRANSMITTER_CONFIG_CLKSRC_MASK 0x30
1200 #define ATOM_TRANSMITTER_CONFIG_CLKSRC_PPLL 0x00
1201 #define ATOM_TRANSMITTER_CONFIG_CLKSRC_PCIE 0x20
1202 #define ATOM_TRANSMITTER_CONFIG_CLKSRC_XTALIN 0x30
1203 #define ATOM_TRANSMITTER_CONFIG_LANE_SEL_MASK 0xc0
1204 #define ATOM_TRANSMITTER_CONFIG_LANE_0_3 0x00
1205 #define ATOM_TRANSMITTER_CONFIG_LANE_0_7 0x00
1206 #define ATOM_TRANSMITTER_CONFIG_LANE_4_7 0x40
1207 #define ATOM_TRANSMITTER_CONFIG_LANE_8_11 0x80
1208 #define ATOM_TRANSMITTER_CONFIG_LANE_8_15 0x80
1209 #define ATOM_TRANSMITTER_CONFIG_LANE_12_15 0xc0
1210
1211
1212 #define ATOM_TRANSMITTER_ACTION_DISABLE 0
1213 #define ATOM_TRANSMITTER_ACTION_ENABLE 1
1214 #define ATOM_TRANSMITTER_ACTION_LCD_BLOFF 2
1215 #define ATOM_TRANSMITTER_ACTION_LCD_BLON 3
1216 #define ATOM_TRANSMITTER_ACTION_BL_BRIGHTNESS_CONTROL 4
1217 #define ATOM_TRANSMITTER_ACTION_LCD_SELFTEST_START 5
1218 #define ATOM_TRANSMITTER_ACTION_LCD_SELFTEST_STOP 6
1219 #define ATOM_TRANSMITTER_ACTION_INIT 7
1220 #define ATOM_TRANSMITTER_ACTION_DISABLE_OUTPUT 8
1221 #define ATOM_TRANSMITTER_ACTION_ENABLE_OUTPUT 9
1222 #define ATOM_TRANSMITTER_ACTION_SETUP 10
1223 #define ATOM_TRANSMITTER_ACTION_SETUP_VSEMPH 11
1224 #define ATOM_TRANSMITTER_ACTION_POWER_ON 12
1225 #define ATOM_TRANSMITTER_ACTION_POWER_OFF 13
1226
1227
1228 typedef struct _ATOM_DIG_TRANSMITTER_CONFIG_V2
1229 {
1230 #if ATOM_BIG_ENDIAN
1231 UCHAR ucTransmitterSel:2;
1232
1233
1234 UCHAR ucReserved:1;
1235 UCHAR fDPConnector:1;
1236 UCHAR ucEncoderSel:1;
1237 UCHAR ucLinkSel:1;
1238
1239
1240 UCHAR fCoherentMode:1;
1241 UCHAR fDualLinkConnector:1;
1242 #else
1243 UCHAR fDualLinkConnector:1;
1244 UCHAR fCoherentMode:1;
1245 UCHAR ucLinkSel:1;
1246
1247 UCHAR ucEncoderSel:1;
1248 UCHAR fDPConnector:1;
1249 UCHAR ucReserved:1;
1250 UCHAR ucTransmitterSel:2;
1251
1252
1253 #endif
1254 }ATOM_DIG_TRANSMITTER_CONFIG_V2;
1255
1256
1257
1258 #define ATOM_TRANSMITTER_CONFIG_V2_DUAL_LINK_CONNECTOR 0x01
1259
1260
1261 #define ATOM_TRANSMITTER_CONFIG_V2_COHERENT 0x02
1262
1263
1264 #define ATOM_TRANSMITTER_CONFIG_V2_LINK_SEL_MASK 0x04
1265 #define ATOM_TRANSMITTER_CONFIG_V2_LINKA 0x00
1266 #define ATOM_TRANSMITTER_CONFIG_V2_LINKB 0x04
1267
1268
1269 #define ATOM_TRANSMITTER_CONFIG_V2_ENCODER_SEL_MASK 0x08
1270 #define ATOM_TRANSMITTER_CONFIG_V2_DIG1_ENCODER 0x00
1271 #define ATOM_TRANSMITTER_CONFIG_V2_DIG2_ENCODER 0x08
1272
1273
1274 #define ATOM_TRASMITTER_CONFIG_V2_DP_CONNECTOR 0x10
1275
1276
1277 #define ATOM_TRANSMITTER_CONFIG_V2_TRANSMITTER_SEL_MASK 0xC0
1278 #define ATOM_TRANSMITTER_CONFIG_V2_TRANSMITTER1 0x00
1279 #define ATOM_TRANSMITTER_CONFIG_V2_TRANSMITTER2 0x40
1280 #define ATOM_TRANSMITTER_CONFIG_V2_TRANSMITTER3 0x80
1281
1282 typedef struct _DIG_TRANSMITTER_CONTROL_PARAMETERS_V2
1283 {
1284 union
1285 {
1286 USHORT usPixelClock;
1287 USHORT usInitInfo;
1288 ATOM_DP_VS_MODE asMode;
1289 };
1290 ATOM_DIG_TRANSMITTER_CONFIG_V2 acConfig;
1291 UCHAR ucAction;
1292 UCHAR ucReserved[4];
1293 }DIG_TRANSMITTER_CONTROL_PARAMETERS_V2;
1294
1295 typedef struct _ATOM_DIG_TRANSMITTER_CONFIG_V3
1296 {
1297 #if ATOM_BIG_ENDIAN
1298 UCHAR ucTransmitterSel:2;
1299
1300
1301 UCHAR ucRefClkSource:2;
1302 UCHAR ucEncoderSel:1;
1303 UCHAR ucLinkSel:1;
1304
1305 UCHAR fCoherentMode:1;
1306 UCHAR fDualLinkConnector:1;
1307 #else
1308 UCHAR fDualLinkConnector:1;
1309 UCHAR fCoherentMode:1;
1310 UCHAR ucLinkSel:1;
1311
1312 UCHAR ucEncoderSel:1;
1313 UCHAR ucRefClkSource:2;
1314 UCHAR ucTransmitterSel:2;
1315
1316
1317 #endif
1318 }ATOM_DIG_TRANSMITTER_CONFIG_V3;
1319
1320
1321 typedef struct _DIG_TRANSMITTER_CONTROL_PARAMETERS_V3
1322 {
1323 union
1324 {
1325 USHORT usPixelClock;
1326 USHORT usInitInfo;
1327 ATOM_DP_VS_MODE asMode;
1328 };
1329 ATOM_DIG_TRANSMITTER_CONFIG_V3 acConfig;
1330 UCHAR ucAction;
1331 UCHAR ucLaneNum;
1332 UCHAR ucReserved[3];
1333 }DIG_TRANSMITTER_CONTROL_PARAMETERS_V3;
1334
1335
1336
1337 #define ATOM_TRANSMITTER_CONFIG_V3_DUAL_LINK_CONNECTOR 0x01
1338
1339
1340 #define ATOM_TRANSMITTER_CONFIG_V3_COHERENT 0x02
1341
1342
1343 #define ATOM_TRANSMITTER_CONFIG_V3_LINK_SEL_MASK 0x04
1344 #define ATOM_TRANSMITTER_CONFIG_V3_LINKA 0x00
1345 #define ATOM_TRANSMITTER_CONFIG_V3_LINKB 0x04
1346
1347
1348 #define ATOM_TRANSMITTER_CONFIG_V3_ENCODER_SEL_MASK 0x08
1349 #define ATOM_TRANSMITTER_CONFIG_V3_DIG1_ENCODER 0x00
1350 #define ATOM_TRANSMITTER_CONFIG_V3_DIG2_ENCODER 0x08
1351
1352
1353 #define ATOM_TRASMITTER_CONFIG_V3_REFCLK_SEL_MASK 0x30
1354 #define ATOM_TRASMITTER_CONFIG_V3_P1PLL 0x00
1355 #define ATOM_TRASMITTER_CONFIG_V3_P2PLL 0x10
1356 #define ATOM_TRASMITTER_CONFIG_V3_REFCLK_SRC_EXT 0x20
1357
1358
1359 #define ATOM_TRANSMITTER_CONFIG_V3_TRANSMITTER_SEL_MASK 0xC0
1360 #define ATOM_TRANSMITTER_CONFIG_V3_TRANSMITTER1 0x00
1361 #define ATOM_TRANSMITTER_CONFIG_V3_TRANSMITTER2 0x40
1362 #define ATOM_TRANSMITTER_CONFIG_V3_TRANSMITTER3 0x80
1363
1364
1365
1366
1367
1368
1369
1370
1371 typedef struct _ATOM_DP_VS_MODE_V4
1372 {
1373 UCHAR ucLaneSel;
1374 union
1375 {
1376 UCHAR ucLaneSet;
1377 struct {
1378 #if ATOM_BIG_ENDIAN
1379 UCHAR ucPOST_CURSOR2:2;
1380 UCHAR ucPRE_EMPHASIS:3;
1381 UCHAR ucVOLTAGE_SWING:3;
1382 #else
1383 UCHAR ucVOLTAGE_SWING:3;
1384 UCHAR ucPRE_EMPHASIS:3;
1385 UCHAR ucPOST_CURSOR2:2;
1386 #endif
1387 };
1388 };
1389 }ATOM_DP_VS_MODE_V4;
1390
1391 typedef struct _ATOM_DIG_TRANSMITTER_CONFIG_V4
1392 {
1393 #if ATOM_BIG_ENDIAN
1394 UCHAR ucTransmitterSel:2;
1395
1396
1397 UCHAR ucRefClkSource:2;
1398 UCHAR ucEncoderSel:1;
1399 UCHAR ucLinkSel:1;
1400
1401 UCHAR fCoherentMode:1;
1402 UCHAR fDualLinkConnector:1;
1403 #else
1404 UCHAR fDualLinkConnector:1;
1405 UCHAR fCoherentMode:1;
1406 UCHAR ucLinkSel:1;
1407
1408 UCHAR ucEncoderSel:1;
1409 UCHAR ucRefClkSource:2;
1410 UCHAR ucTransmitterSel:2;
1411
1412
1413 #endif
1414 }ATOM_DIG_TRANSMITTER_CONFIG_V4;
1415
1416 typedef struct _DIG_TRANSMITTER_CONTROL_PARAMETERS_V4
1417 {
1418 union
1419 {
1420 USHORT usPixelClock;
1421 USHORT usInitInfo;
1422 ATOM_DP_VS_MODE_V4 asMode;
1423 };
1424 union
1425 {
1426 ATOM_DIG_TRANSMITTER_CONFIG_V4 acConfig;
1427 UCHAR ucConfig;
1428 };
1429 UCHAR ucAction;
1430 UCHAR ucLaneNum;
1431 UCHAR ucReserved[3];
1432 }DIG_TRANSMITTER_CONTROL_PARAMETERS_V4;
1433
1434
1435
1436 #define ATOM_TRANSMITTER_CONFIG_V4_DUAL_LINK_CONNECTOR 0x01
1437
1438 #define ATOM_TRANSMITTER_CONFIG_V4_COHERENT 0x02
1439
1440 #define ATOM_TRANSMITTER_CONFIG_V4_LINK_SEL_MASK 0x04
1441 #define ATOM_TRANSMITTER_CONFIG_V4_LINKA 0x00
1442 #define ATOM_TRANSMITTER_CONFIG_V4_LINKB 0x04
1443
1444 #define ATOM_TRANSMITTER_CONFIG_V4_ENCODER_SEL_MASK 0x08
1445 #define ATOM_TRANSMITTER_CONFIG_V4_DIG1_ENCODER 0x00
1446 #define ATOM_TRANSMITTER_CONFIG_V4_DIG2_ENCODER 0x08
1447
1448 #define ATOM_TRANSMITTER_CONFIG_V4_REFCLK_SEL_MASK 0x30
1449 #define ATOM_TRANSMITTER_CONFIG_V4_P1PLL 0x00
1450 #define ATOM_TRANSMITTER_CONFIG_V4_P2PLL 0x10
1451 #define ATOM_TRANSMITTER_CONFIG_V4_DCPLL 0x20
1452 #define ATOM_TRANSMITTER_CONFIG_V4_REFCLK_SRC_EXT 0x30
1453
1454 #define ATOM_TRANSMITTER_CONFIG_V4_TRANSMITTER_SEL_MASK 0xC0
1455 #define ATOM_TRANSMITTER_CONFIG_V4_TRANSMITTER1 0x00
1456 #define ATOM_TRANSMITTER_CONFIG_V4_TRANSMITTER2 0x40
1457 #define ATOM_TRANSMITTER_CONFIG_V4_TRANSMITTER3 0x80
1458
1459
1460 typedef struct _ATOM_DIG_TRANSMITTER_CONFIG_V5
1461 {
1462 #if ATOM_BIG_ENDIAN
1463 UCHAR ucReservd1:1;
1464 UCHAR ucHPDSel:3;
1465 UCHAR ucPhyClkSrcId:2;
1466 UCHAR ucCoherentMode:1;
1467 UCHAR ucReserved:1;
1468 #else
1469 UCHAR ucReserved:1;
1470 UCHAR ucCoherentMode:1;
1471 UCHAR ucPhyClkSrcId:2;
1472 UCHAR ucHPDSel:3;
1473 UCHAR ucReservd1:1;
1474 #endif
1475 }ATOM_DIG_TRANSMITTER_CONFIG_V5;
1476
1477 typedef struct _DIG_TRANSMITTER_CONTROL_PARAMETERS_V1_5
1478 {
1479 USHORT usSymClock;
1480 UCHAR ucPhyId;
1481 UCHAR ucAction;
1482 UCHAR ucLaneNum;
1483 UCHAR ucConnObjId;
1484 UCHAR ucDigMode;
1485 union{
1486 ATOM_DIG_TRANSMITTER_CONFIG_V5 asConfig;
1487 UCHAR ucConfig;
1488 };
1489 UCHAR ucDigEncoderSel;
1490 UCHAR ucDPLaneSet;
1491 UCHAR ucReserved;
1492 UCHAR ucReserved1;
1493 }DIG_TRANSMITTER_CONTROL_PARAMETERS_V1_5;
1494
1495
1496 #define ATOM_PHY_ID_UNIPHYA 0
1497 #define ATOM_PHY_ID_UNIPHYB 1
1498 #define ATOM_PHY_ID_UNIPHYC 2
1499 #define ATOM_PHY_ID_UNIPHYD 3
1500 #define ATOM_PHY_ID_UNIPHYE 4
1501 #define ATOM_PHY_ID_UNIPHYF 5
1502 #define ATOM_PHY_ID_UNIPHYG 6
1503
1504
1505 #define ATOM_TRANMSITTER_V5__DIGA_SEL 0x01
1506 #define ATOM_TRANMSITTER_V5__DIGB_SEL 0x02
1507 #define ATOM_TRANMSITTER_V5__DIGC_SEL 0x04
1508 #define ATOM_TRANMSITTER_V5__DIGD_SEL 0x08
1509 #define ATOM_TRANMSITTER_V5__DIGE_SEL 0x10
1510 #define ATOM_TRANMSITTER_V5__DIGF_SEL 0x20
1511 #define ATOM_TRANMSITTER_V5__DIGG_SEL 0x40
1512
1513
1514 #define ATOM_TRANSMITTER_DIGMODE_V5_DP 0
1515 #define ATOM_TRANSMITTER_DIGMODE_V5_LVDS 1
1516 #define ATOM_TRANSMITTER_DIGMODE_V5_DVI 2
1517 #define ATOM_TRANSMITTER_DIGMODE_V5_HDMI 3
1518 #define ATOM_TRANSMITTER_DIGMODE_V5_SDVO 4
1519 #define ATOM_TRANSMITTER_DIGMODE_V5_DP_MST 5
1520
1521
1522 #define DP_LANE_SET__0DB_0_4V 0x00
1523 #define DP_LANE_SET__0DB_0_6V 0x01
1524 #define DP_LANE_SET__0DB_0_8V 0x02
1525 #define DP_LANE_SET__0DB_1_2V 0x03
1526 #define DP_LANE_SET__3_5DB_0_4V 0x08
1527 #define DP_LANE_SET__3_5DB_0_6V 0x09
1528 #define DP_LANE_SET__3_5DB_0_8V 0x0a
1529 #define DP_LANE_SET__6DB_0_4V 0x10
1530 #define DP_LANE_SET__6DB_0_6V 0x11
1531 #define DP_LANE_SET__9_5DB_0_4V 0x18
1532
1533
1534
1535 #define ATOM_TRANSMITTER_CONFIG_V5_COHERENT 0x02
1536
1537
1538 #define ATOM_TRANSMITTER_CONFIG_V5_REFCLK_SEL_MASK 0x0c
1539 #define ATOM_TRANSMITTER_CONFIG_V5_REFCLK_SEL_SHIFT 0x02
1540
1541 #define ATOM_TRANSMITTER_CONFIG_V5_P1PLL 0x00
1542 #define ATOM_TRANSMITTER_CONFIG_V5_P2PLL 0x04
1543 #define ATOM_TRANSMITTER_CONFIG_V5_P0PLL 0x08
1544 #define ATOM_TRANSMITTER_CONFIG_V5_REFCLK_SRC_EXT 0x0c
1545
1546 #define ATOM_TRANSMITTER_CONFIG_V5_HPD_SEL_MASK 0x70
1547 #define ATOM_TRANSMITTER_CONFIG_V5_HPD_SEL_SHIFT 0x04
1548
1549 #define ATOM_TRANSMITTER_CONFIG_V5_NO_HPD_SEL 0x00
1550 #define ATOM_TRANSMITTER_CONFIG_V5_HPD1_SEL 0x10
1551 #define ATOM_TRANSMITTER_CONFIG_V5_HPD2_SEL 0x20
1552 #define ATOM_TRANSMITTER_CONFIG_V5_HPD3_SEL 0x30
1553 #define ATOM_TRANSMITTER_CONFIG_V5_HPD4_SEL 0x40
1554 #define ATOM_TRANSMITTER_CONFIG_V5_HPD5_SEL 0x50
1555 #define ATOM_TRANSMITTER_CONFIG_V5_HPD6_SEL 0x60
1556
1557 #define DIG_TRANSMITTER_CONTROL_PS_ALLOCATION_V1_5 DIG_TRANSMITTER_CONTROL_PARAMETERS_V1_5
1558
1559 typedef struct _DIG_TRANSMITTER_CONTROL_PARAMETERS_V1_6
1560 {
1561 UCHAR ucPhyId;
1562 UCHAR ucAction;
1563 union
1564 {
1565 UCHAR ucDigMode;
1566 UCHAR ucDPLaneSet;
1567 };
1568 UCHAR ucLaneNum;
1569 ULONG ulSymClock;
1570 UCHAR ucHPDSel;
1571 UCHAR ucDigEncoderSel;
1572 UCHAR ucConnObjId;
1573 UCHAR ucReserved;
1574 ULONG ulReserved;
1575 }DIG_TRANSMITTER_CONTROL_PARAMETERS_V1_6;
1576
1577
1578
1579 #define ATOM_TRANMSITTER_V6__DIGA_SEL 0x01
1580 #define ATOM_TRANMSITTER_V6__DIGB_SEL 0x02
1581 #define ATOM_TRANMSITTER_V6__DIGC_SEL 0x04
1582 #define ATOM_TRANMSITTER_V6__DIGD_SEL 0x08
1583 #define ATOM_TRANMSITTER_V6__DIGE_SEL 0x10
1584 #define ATOM_TRANMSITTER_V6__DIGF_SEL 0x20
1585 #define ATOM_TRANMSITTER_V6__DIGG_SEL 0x40
1586
1587
1588 #define ATOM_TRANSMITTER_DIGMODE_V6_DP 0
1589 #define ATOM_TRANSMITTER_DIGMODE_V6_DVI 2
1590 #define ATOM_TRANSMITTER_DIGMODE_V6_HDMI 3
1591 #define ATOM_TRANSMITTER_DIGMODE_V6_DP_MST 5
1592
1593
1594 #define ATOM_TRANSMITTER_V6_NO_HPD_SEL 0x00
1595 #define ATOM_TRANSMITTER_V6_HPD1_SEL 0x01
1596 #define ATOM_TRANSMITTER_V6_HPD2_SEL 0x02
1597 #define ATOM_TRANSMITTER_V6_HPD3_SEL 0x03
1598 #define ATOM_TRANSMITTER_V6_HPD4_SEL 0x04
1599 #define ATOM_TRANSMITTER_V6_HPD5_SEL 0x05
1600 #define ATOM_TRANSMITTER_V6_HPD6_SEL 0x06
1601
1602
1603
1604
1605
1606
1607
1608
1609
1610 typedef struct _EXTERNAL_ENCODER_CONTROL_PARAMETERS_V3
1611 {
1612 union{
1613 USHORT usPixelClock;
1614 USHORT usConnectorId;
1615 };
1616 UCHAR ucConfig;
1617 UCHAR ucAction;
1618 UCHAR ucEncoderMode;
1619 UCHAR ucLaneNum;
1620 UCHAR ucBitPerColor;
1621 UCHAR ucReserved;
1622 }EXTERNAL_ENCODER_CONTROL_PARAMETERS_V3;
1623
1624
1625 #define EXTERANL_ENCODER_ACTION_V3_DISABLE_OUTPUT 0x00
1626 #define EXTERANL_ENCODER_ACTION_V3_ENABLE_OUTPUT 0x01
1627 #define EXTERNAL_ENCODER_ACTION_V3_ENCODER_INIT 0x07
1628 #define EXTERNAL_ENCODER_ACTION_V3_ENCODER_SETUP 0x0f
1629 #define EXTERNAL_ENCODER_ACTION_V3_ENCODER_BLANKING_OFF 0x10
1630 #define EXTERNAL_ENCODER_ACTION_V3_ENCODER_BLANKING 0x11
1631 #define EXTERNAL_ENCODER_ACTION_V3_DACLOAD_DETECTION 0x12
1632 #define EXTERNAL_ENCODER_ACTION_V3_DDC_SETUP 0x14
1633
1634
1635 #define EXTERNAL_ENCODER_CONFIG_V3_DPLINKRATE_MASK 0x03
1636 #define EXTERNAL_ENCODER_CONFIG_V3_DPLINKRATE_1_62GHZ 0x00
1637 #define EXTERNAL_ENCODER_CONFIG_V3_DPLINKRATE_2_70GHZ 0x01
1638 #define EXTERNAL_ENCODER_CONFIG_V3_DPLINKRATE_5_40GHZ 0x02
1639 #define EXTERNAL_ENCODER_CONFIG_V3_ENCODER_SEL_MAKS 0x70
1640 #define EXTERNAL_ENCODER_CONFIG_V3_ENCODER1 0x00
1641 #define EXTERNAL_ENCODER_CONFIG_V3_ENCODER2 0x10
1642 #define EXTERNAL_ENCODER_CONFIG_V3_ENCODER3 0x20
1643
1644 typedef struct _EXTERNAL_ENCODER_CONTROL_PS_ALLOCATION_V3
1645 {
1646 EXTERNAL_ENCODER_CONTROL_PARAMETERS_V3 sExtEncoder;
1647 ULONG ulReserved[2];
1648 }EXTERNAL_ENCODER_CONTROL_PS_ALLOCATION_V3;
1649
1650
1651
1652
1653
1654
1655
1656
1657 typedef struct _DISPLAY_DEVICE_OUTPUT_CONTROL_PARAMETERS
1658 {
1659 UCHAR ucAction;
1660
1661
1662
1663
1664 UCHAR aucPadding[3];
1665 }DISPLAY_DEVICE_OUTPUT_CONTROL_PARAMETERS;
1666
1667 #define DISPLAY_DEVICE_OUTPUT_CONTROL_PS_ALLOCATION DISPLAY_DEVICE_OUTPUT_CONTROL_PARAMETERS
1668
1669
1670 #define CRT1_OUTPUT_CONTROL_PARAMETERS DISPLAY_DEVICE_OUTPUT_CONTROL_PARAMETERS
1671 #define CRT1_OUTPUT_CONTROL_PS_ALLOCATION DISPLAY_DEVICE_OUTPUT_CONTROL_PS_ALLOCATION
1672
1673 #define CRT2_OUTPUT_CONTROL_PARAMETERS DISPLAY_DEVICE_OUTPUT_CONTROL_PARAMETERS
1674 #define CRT2_OUTPUT_CONTROL_PS_ALLOCATION DISPLAY_DEVICE_OUTPUT_CONTROL_PS_ALLOCATION
1675
1676 #define CV1_OUTPUT_CONTROL_PARAMETERS DISPLAY_DEVICE_OUTPUT_CONTROL_PARAMETERS
1677 #define CV1_OUTPUT_CONTROL_PS_ALLOCATION DISPLAY_DEVICE_OUTPUT_CONTROL_PS_ALLOCATION
1678
1679 #define TV1_OUTPUT_CONTROL_PARAMETERS DISPLAY_DEVICE_OUTPUT_CONTROL_PARAMETERS
1680 #define TV1_OUTPUT_CONTROL_PS_ALLOCATION DISPLAY_DEVICE_OUTPUT_CONTROL_PS_ALLOCATION
1681
1682 #define DFP1_OUTPUT_CONTROL_PARAMETERS DISPLAY_DEVICE_OUTPUT_CONTROL_PARAMETERS
1683 #define DFP1_OUTPUT_CONTROL_PS_ALLOCATION DISPLAY_DEVICE_OUTPUT_CONTROL_PS_ALLOCATION
1684
1685 #define DFP2_OUTPUT_CONTROL_PARAMETERS DISPLAY_DEVICE_OUTPUT_CONTROL_PARAMETERS
1686 #define DFP2_OUTPUT_CONTROL_PS_ALLOCATION DISPLAY_DEVICE_OUTPUT_CONTROL_PS_ALLOCATION
1687
1688 #define LCD1_OUTPUT_CONTROL_PARAMETERS DISPLAY_DEVICE_OUTPUT_CONTROL_PARAMETERS
1689 #define LCD1_OUTPUT_CONTROL_PS_ALLOCATION DISPLAY_DEVICE_OUTPUT_CONTROL_PS_ALLOCATION
1690
1691 #define DVO_OUTPUT_CONTROL_PARAMETERS DISPLAY_DEVICE_OUTPUT_CONTROL_PARAMETERS
1692 #define DVO_OUTPUT_CONTROL_PS_ALLOCATION DIG_TRANSMITTER_CONTROL_PS_ALLOCATION
1693 #define DVO_OUTPUT_CONTROL_PARAMETERS_V3 DIG_TRANSMITTER_CONTROL_PARAMETERS
1694
1695
1696 typedef struct _LVTMA_OUTPUT_CONTROL_PARAMETERS_V2
1697 {
1698
1699
1700
1701
1702
1703
1704 UCHAR ucAction;
1705 UCHAR ucBriLevel;
1706 USHORT usPwmFreq;
1707 }LVTMA_OUTPUT_CONTROL_PARAMETERS_V2;
1708
1709
1710
1711
1712
1713
1714 typedef struct _BLANK_CRTC_PARAMETERS
1715 {
1716 UCHAR ucCRTC;
1717 UCHAR ucBlanking;
1718 USHORT usBlackColorRCr;
1719 USHORT usBlackColorGY;
1720 USHORT usBlackColorBCb;
1721 }BLANK_CRTC_PARAMETERS;
1722 #define BLANK_CRTC_PS_ALLOCATION BLANK_CRTC_PARAMETERS
1723
1724
1725
1726
1727
1728
1729 typedef struct _ENABLE_CRTC_PARAMETERS
1730 {
1731 UCHAR ucCRTC;
1732 UCHAR ucEnable;
1733 UCHAR ucPadding[2];
1734 }ENABLE_CRTC_PARAMETERS;
1735 #define ENABLE_CRTC_PS_ALLOCATION ENABLE_CRTC_PARAMETERS
1736
1737
1738
1739
1740 typedef struct _SET_CRTC_OVERSCAN_PARAMETERS
1741 {
1742 USHORT usOverscanRight;
1743 USHORT usOverscanLeft;
1744 USHORT usOverscanBottom;
1745 USHORT usOverscanTop;
1746 UCHAR ucCRTC;
1747 UCHAR ucPadding[3];
1748 }SET_CRTC_OVERSCAN_PARAMETERS;
1749 #define SET_CRTC_OVERSCAN_PS_ALLOCATION SET_CRTC_OVERSCAN_PARAMETERS
1750
1751
1752
1753
1754 typedef struct _SET_CRTC_REPLICATION_PARAMETERS
1755 {
1756 UCHAR ucH_Replication;
1757 UCHAR ucV_Replication;
1758 UCHAR usCRTC;
1759 UCHAR ucPadding;
1760 }SET_CRTC_REPLICATION_PARAMETERS;
1761 #define SET_CRTC_REPLICATION_PS_ALLOCATION SET_CRTC_REPLICATION_PARAMETERS
1762
1763
1764
1765
1766 typedef struct _SELECT_CRTC_SOURCE_PARAMETERS
1767 {
1768 UCHAR ucCRTC;
1769 UCHAR ucDevice;
1770 UCHAR ucPadding[2];
1771 }SELECT_CRTC_SOURCE_PARAMETERS;
1772 #define SELECT_CRTC_SOURCE_PS_ALLOCATION SELECT_CRTC_SOURCE_PARAMETERS
1773
1774 typedef struct _SELECT_CRTC_SOURCE_PARAMETERS_V2
1775 {
1776 UCHAR ucCRTC;
1777 UCHAR ucEncoderID;
1778 UCHAR ucEncodeMode;
1779 UCHAR ucPadding;
1780 }SELECT_CRTC_SOURCE_PARAMETERS_V2;
1781
1782
1783
1784
1785
1786
1787
1788
1789
1790
1791
1792
1793
1794
1795
1796
1797
1798
1799
1800
1801
1802
1803 typedef struct _SELECT_CRTC_SOURCE_PARAMETERS_V3
1804 {
1805 UCHAR ucCRTC;
1806 UCHAR ucEncoderID;
1807 UCHAR ucEncodeMode;
1808 UCHAR ucDstBpc;
1809 }SELECT_CRTC_SOURCE_PARAMETERS_V3;
1810
1811
1812
1813
1814
1815
1816
1817 typedef struct _PIXEL_CLOCK_PARAMETERS
1818 {
1819 USHORT usPixelClock;
1820
1821 USHORT usRefDiv;
1822 USHORT usFbDiv;
1823 UCHAR ucPostDiv;
1824 UCHAR ucFracFbDiv;
1825 UCHAR ucPpll;
1826 UCHAR ucRefDivSrc;
1827 UCHAR ucCRTC;
1828 UCHAR ucPadding;
1829 }PIXEL_CLOCK_PARAMETERS;
1830
1831
1832
1833 #define MISC_FORCE_REPROG_PIXEL_CLOCK 0x1
1834 #define MISC_DEVICE_INDEX_MASK 0xF0
1835 #define MISC_DEVICE_INDEX_SHIFT 4
1836
1837 typedef struct _PIXEL_CLOCK_PARAMETERS_V2
1838 {
1839 USHORT usPixelClock;
1840
1841 USHORT usRefDiv;
1842 USHORT usFbDiv;
1843 UCHAR ucPostDiv;
1844 UCHAR ucFracFbDiv;
1845 UCHAR ucPpll;
1846 UCHAR ucRefDivSrc;
1847 UCHAR ucCRTC;
1848 UCHAR ucMiscInfo;
1849 }PIXEL_CLOCK_PARAMETERS_V2;
1850
1851
1852
1853
1854
1855
1856
1857
1858
1859
1860
1861
1862
1863
1864
1865
1866
1867
1868
1869
1870
1871
1872 #define PIXEL_CLOCK_MISC_FORCE_PROG_PPLL 0x01
1873 #define PIXEL_CLOCK_MISC_VGA_MODE 0x02
1874 #define PIXEL_CLOCK_MISC_CRTC_SEL_MASK 0x04
1875 #define PIXEL_CLOCK_MISC_CRTC_SEL_CRTC1 0x00
1876 #define PIXEL_CLOCK_MISC_CRTC_SEL_CRTC2 0x04
1877 #define PIXEL_CLOCK_MISC_USE_ENGINE_FOR_DISPCLK 0x08
1878 #define PIXEL_CLOCK_MISC_REF_DIV_SRC 0x10
1879
1880 #define PIXEL_CLOCK_V4_MISC_SS_ENABLE 0x10
1881 #define PIXEL_CLOCK_V4_MISC_COHERENT_MODE 0x20
1882
1883
1884 typedef struct _PIXEL_CLOCK_PARAMETERS_V3
1885 {
1886 USHORT usPixelClock;
1887
1888 USHORT usRefDiv;
1889 USHORT usFbDiv;
1890 UCHAR ucPostDiv;
1891 UCHAR ucFracFbDiv;
1892 UCHAR ucPpll;
1893 UCHAR ucTransmitterId;
1894 union
1895 {
1896 UCHAR ucEncoderMode;
1897 UCHAR ucDVOConfig;
1898 };
1899 UCHAR ucMiscInfo;
1900
1901
1902 }PIXEL_CLOCK_PARAMETERS_V3;
1903
1904 #define PIXEL_CLOCK_PARAMETERS_LAST PIXEL_CLOCK_PARAMETERS_V2
1905 #define GET_PIXEL_CLOCK_PS_ALLOCATION PIXEL_CLOCK_PARAMETERS_LAST
1906
1907
1908 typedef struct _PIXEL_CLOCK_PARAMETERS_V5
1909 {
1910 UCHAR ucCRTC;
1911
1912 union{
1913 UCHAR ucReserved;
1914 UCHAR ucFracFbDiv;
1915 };
1916 USHORT usPixelClock;
1917
1918 USHORT usFbDiv;
1919 UCHAR ucPostDiv;
1920 UCHAR ucRefDiv;
1921 UCHAR ucPpll;
1922 UCHAR ucTransmitterID;
1923
1924 UCHAR ucEncoderMode;
1925 UCHAR ucMiscInfo;
1926
1927
1928
1929
1930
1931
1932
1933 ULONG ulFbDivDecFrac;
1934
1935 }PIXEL_CLOCK_PARAMETERS_V5;
1936
1937 #define PIXEL_CLOCK_V5_MISC_FORCE_PROG_PPLL 0x01
1938 #define PIXEL_CLOCK_V5_MISC_VGA_MODE 0x02
1939 #define PIXEL_CLOCK_V5_MISC_HDMI_BPP_MASK 0x0c
1940 #define PIXEL_CLOCK_V5_MISC_HDMI_24BPP 0x00
1941 #define PIXEL_CLOCK_V5_MISC_HDMI_30BPP 0x04
1942 #define PIXEL_CLOCK_V5_MISC_HDMI_32BPP 0x08
1943 #define PIXEL_CLOCK_V5_MISC_REF_DIV_SRC 0x10
1944
1945 typedef struct _CRTC_PIXEL_CLOCK_FREQ
1946 {
1947 #if ATOM_BIG_ENDIAN
1948 ULONG ucCRTC:8;
1949
1950 ULONG ulPixelClock:24;
1951
1952 #else
1953 ULONG ulPixelClock:24;
1954
1955 ULONG ucCRTC:8;
1956
1957 #endif
1958 }CRTC_PIXEL_CLOCK_FREQ;
1959
1960 typedef struct _PIXEL_CLOCK_PARAMETERS_V6
1961 {
1962 union{
1963 CRTC_PIXEL_CLOCK_FREQ ulCrtcPclkFreq;
1964 ULONG ulDispEngClkFreq;
1965 };
1966 USHORT usFbDiv;
1967 UCHAR ucPostDiv;
1968 UCHAR ucRefDiv;
1969 UCHAR ucPpll;
1970 UCHAR ucTransmitterID;
1971
1972 UCHAR ucEncoderMode;
1973 UCHAR ucMiscInfo;
1974
1975
1976
1977
1978
1979
1980
1981 ULONG ulFbDivDecFrac;
1982
1983 }PIXEL_CLOCK_PARAMETERS_V6;
1984
1985 #define PIXEL_CLOCK_V6_MISC_FORCE_PROG_PPLL 0x01
1986 #define PIXEL_CLOCK_V6_MISC_VGA_MODE 0x02
1987 #define PIXEL_CLOCK_V6_MISC_HDMI_BPP_MASK 0x0c
1988 #define PIXEL_CLOCK_V6_MISC_HDMI_24BPP 0x00
1989 #define PIXEL_CLOCK_V6_MISC_HDMI_36BPP 0x04
1990 #define PIXEL_CLOCK_V6_MISC_HDMI_36BPP_V6 0x08
1991 #define PIXEL_CLOCK_V6_MISC_HDMI_30BPP 0x08
1992 #define PIXEL_CLOCK_V6_MISC_HDMI_30BPP_V6 0x04
1993 #define PIXEL_CLOCK_V6_MISC_HDMI_48BPP 0x0c
1994 #define PIXEL_CLOCK_V6_MISC_REF_DIV_SRC 0x10
1995 #define PIXEL_CLOCK_V6_MISC_GEN_DPREFCLK 0x40
1996 #define PIXEL_CLOCK_V6_MISC_DPREFCLK_BYPASS 0x40
1997
1998 typedef struct _GET_DISP_PLL_STATUS_INPUT_PARAMETERS_V2
1999 {
2000 PIXEL_CLOCK_PARAMETERS_V3 sDispClkInput;
2001 }GET_DISP_PLL_STATUS_INPUT_PARAMETERS_V2;
2002
2003 typedef struct _GET_DISP_PLL_STATUS_OUTPUT_PARAMETERS_V2
2004 {
2005 UCHAR ucStatus;
2006 UCHAR ucRefDivSrc;
2007 UCHAR ucReserved[2];
2008 }GET_DISP_PLL_STATUS_OUTPUT_PARAMETERS_V2;
2009
2010 typedef struct _GET_DISP_PLL_STATUS_INPUT_PARAMETERS_V3
2011 {
2012 PIXEL_CLOCK_PARAMETERS_V5 sDispClkInput;
2013 }GET_DISP_PLL_STATUS_INPUT_PARAMETERS_V3;
2014
2015 typedef struct _PIXEL_CLOCK_PARAMETERS_V7
2016 {
2017 ULONG ulPixelClock;
2018
2019 UCHAR ucPpll;
2020 UCHAR ucTransmitterID;
2021
2022 UCHAR ucEncoderMode;
2023 UCHAR ucMiscInfo;
2024
2025
2026
2027
2028
2029 UCHAR ucCRTC;
2030 UCHAR ucDeepColorRatio;
2031 UCHAR ucReserved[2];
2032 ULONG ulReserved;
2033 }PIXEL_CLOCK_PARAMETERS_V7;
2034
2035
2036 #define PIXEL_CLOCK_V7_MISC_FORCE_PROG_PPLL 0x01
2037 #define PIXEL_CLOCK_V7_MISC_PROG_PHYPLL 0x02
2038 #define PIXEL_CLOCK_V7_MISC_YUV420_MODE 0x04
2039 #define PIXEL_CLOCK_V7_MISC_DVI_DUALLINK_EN 0x08
2040 #define PIXEL_CLOCK_V7_MISC_REF_DIV_SRC 0x30
2041 #define PIXEL_CLOCK_V7_MISC_REF_DIV_SRC_XTALIN 0x00
2042 #define PIXEL_CLOCK_V7_MISC_REF_DIV_SRC_PCIE 0x10
2043 #define PIXEL_CLOCK_V7_MISC_REF_DIV_SRC_GENLK 0x20
2044
2045
2046 #define PIXEL_CLOCK_V7_DEEPCOLOR_RATIO_DIS 0x00
2047 #define PIXEL_CLOCK_V7_DEEPCOLOR_RATIO_5_4 0x01
2048 #define PIXEL_CLOCK_V7_DEEPCOLOR_RATIO_3_2 0x02
2049 #define PIXEL_CLOCK_V7_DEEPCOLOR_RATIO_2_1 0x03
2050
2051
2052 typedef struct _SET_DCE_CLOCK_PARAMETERS_V1_1
2053 {
2054 ULONG ulDISPClkFreq;
2055 UCHAR ucFlag;
2056 UCHAR ucCrtc;
2057 UCHAR ucPpllId;
2058 UCHAR ucDeepColorRatio;
2059 }SET_DCE_CLOCK_PARAMETERS_V1_1;
2060
2061
2062 typedef struct _SET_DCE_CLOCK_PS_ALLOCATION_V1_1
2063 {
2064 SET_DCE_CLOCK_PARAMETERS_V1_1 asParam;
2065 ULONG ulReserved[2];
2066 }SET_DCE_CLOCK_PS_ALLOCATION_V1_1;
2067
2068
2069 #define SET_DCE_CLOCK_FLAG_GEN_DPREFCLK 0x01
2070 #define SET_DCE_CLOCK_FLAG_DPREFCLK_BYPASS 0x01
2071 #define SET_DCE_CLOCK_FLAG_ENABLE_PIXCLK 0x02
2072
2073
2074 typedef struct _SET_DCE_CLOCK_PARAMETERS_V2_1
2075 {
2076 ULONG ulDCEClkFreq;
2077 UCHAR ucDCEClkType;
2078 UCHAR ucDCEClkSrc;
2079 UCHAR ucDCEClkFlag;
2080 UCHAR ucCRTC;
2081 }SET_DCE_CLOCK_PARAMETERS_V2_1;
2082
2083
2084 #define DCE_CLOCK_TYPE_DISPCLK 0
2085 #define DCE_CLOCK_TYPE_DPREFCLK 1
2086 #define DCE_CLOCK_TYPE_PIXELCLK 2
2087
2088
2089 #define DCE_CLOCK_FLAG_PLL_REFCLK_SRC_MASK 0x03
2090 #define DCE_CLOCK_FLAG_PLL_REFCLK_SRC_GENERICA 0x00
2091 #define DCE_CLOCK_FLAG_PLL_REFCLK_SRC_GENLK 0x01
2092 #define DCE_CLOCK_FLAG_PLL_REFCLK_SRC_PCIE 0x02
2093 #define DCE_CLOCK_FLAG_PLL_REFCLK_SRC_XTALIN 0x03
2094
2095
2096 #define DCE_CLOCK_FLAG_PCLK_DEEPCOLOR_RATIO_MASK 0x03
2097 #define DCE_CLOCK_FLAG_PCLK_DEEPCOLOR_RATIO_DIS 0x00
2098 #define DCE_CLOCK_FLAG_PCLK_DEEPCOLOR_RATIO_5_4 0x01
2099 #define DCE_CLOCK_FLAG_PCLK_DEEPCOLOR_RATIO_3_2 0x02
2100 #define DCE_CLOCK_FLAG_PCLK_DEEPCOLOR_RATIO_2_1 0x03
2101 #define DCE_CLOCK_FLAG_PIXCLK_YUV420_MODE 0x04
2102
2103 typedef struct _SET_DCE_CLOCK_PS_ALLOCATION_V2_1
2104 {
2105 SET_DCE_CLOCK_PARAMETERS_V2_1 asParam;
2106 ULONG ulReserved[2];
2107 }SET_DCE_CLOCK_PS_ALLOCATION_V2_1;
2108
2109
2110
2111
2112
2113
2114 typedef struct _ADJUST_DISPLAY_PLL_PARAMETERS
2115 {
2116 USHORT usPixelClock;
2117 UCHAR ucTransmitterID;
2118 UCHAR ucEncodeMode;
2119 union
2120 {
2121 UCHAR ucDVOConfig;
2122 UCHAR ucConfig;
2123 };
2124 UCHAR ucReserved[3];
2125 }ADJUST_DISPLAY_PLL_PARAMETERS;
2126
2127 #define ADJUST_DISPLAY_CONFIG_SS_ENABLE 0x10
2128 #define ADJUST_DISPLAY_PLL_PS_ALLOCATION ADJUST_DISPLAY_PLL_PARAMETERS
2129
2130 typedef struct _ADJUST_DISPLAY_PLL_INPUT_PARAMETERS_V3
2131 {
2132 USHORT usPixelClock;
2133 UCHAR ucTransmitterID;
2134 UCHAR ucEncodeMode;
2135 UCHAR ucDispPllConfig;
2136 UCHAR ucExtTransmitterID;
2137 UCHAR ucReserved[2];
2138 }ADJUST_DISPLAY_PLL_INPUT_PARAMETERS_V3;
2139
2140
2141 #define DISPPLL_CONFIG_DVO_RATE_SEL 0x0001
2142 #define DISPPLL_CONFIG_DVO_DDR_SPEED 0x0000
2143 #define DISPPLL_CONFIG_DVO_SDR_SPEED 0x0001
2144 #define DISPPLL_CONFIG_DVO_OUTPUT_SEL 0x000c
2145 #define DISPPLL_CONFIG_DVO_LOW12BIT 0x0000
2146 #define DISPPLL_CONFIG_DVO_UPPER12BIT 0x0004
2147 #define DISPPLL_CONFIG_DVO_24BIT 0x0008
2148 #define DISPPLL_CONFIG_SS_ENABLE 0x0010
2149 #define DISPPLL_CONFIG_COHERENT_MODE 0x0020
2150 #define DISPPLL_CONFIG_DUAL_LINK 0x0040
2151
2152
2153 typedef struct _ADJUST_DISPLAY_PLL_OUTPUT_PARAMETERS_V3
2154 {
2155 ULONG ulDispPllFreq;
2156 UCHAR ucRefDiv;
2157 UCHAR ucPostDiv;
2158 UCHAR ucReserved[2];
2159 }ADJUST_DISPLAY_PLL_OUTPUT_PARAMETERS_V3;
2160
2161 typedef struct _ADJUST_DISPLAY_PLL_PS_ALLOCATION_V3
2162 {
2163 union
2164 {
2165 ADJUST_DISPLAY_PLL_INPUT_PARAMETERS_V3 sInput;
2166 ADJUST_DISPLAY_PLL_OUTPUT_PARAMETERS_V3 sOutput;
2167 };
2168 } ADJUST_DISPLAY_PLL_PS_ALLOCATION_V3;
2169
2170
2171
2172
2173 typedef struct _ENABLE_YUV_PARAMETERS
2174 {
2175 UCHAR ucEnable;
2176 UCHAR ucCRTC;
2177 UCHAR ucPadding[2];
2178 }ENABLE_YUV_PARAMETERS;
2179 #define ENABLE_YUV_PS_ALLOCATION ENABLE_YUV_PARAMETERS
2180
2181
2182
2183
2184 typedef struct _GET_MEMORY_CLOCK_PARAMETERS
2185 {
2186 ULONG ulReturnMemoryClock;
2187 } GET_MEMORY_CLOCK_PARAMETERS;
2188 #define GET_MEMORY_CLOCK_PS_ALLOCATION GET_MEMORY_CLOCK_PARAMETERS
2189
2190
2191
2192
2193 typedef struct _GET_ENGINE_CLOCK_PARAMETERS
2194 {
2195 ULONG ulReturnEngineClock;
2196 } GET_ENGINE_CLOCK_PARAMETERS;
2197 #define GET_ENGINE_CLOCK_PS_ALLOCATION GET_ENGINE_CLOCK_PARAMETERS
2198
2199
2200
2201
2202
2203
2204 typedef struct _READ_EDID_FROM_HW_I2C_DATA_PARAMETERS
2205 {
2206 USHORT usPrescale;
2207 USHORT usVRAMAddress;
2208 USHORT usStatus;
2209
2210 UCHAR ucSlaveAddr;
2211 UCHAR ucLineNumber;
2212 }READ_EDID_FROM_HW_I2C_DATA_PARAMETERS;
2213 #define READ_EDID_FROM_HW_I2C_DATA_PS_ALLOCATION READ_EDID_FROM_HW_I2C_DATA_PARAMETERS
2214
2215
2216 #define ATOM_WRITE_I2C_FORMAT_PSOFFSET_PSDATABYTE 0
2217 #define ATOM_WRITE_I2C_FORMAT_PSOFFSET_PSTWODATABYTES 1
2218 #define ATOM_WRITE_I2C_FORMAT_PSCOUNTER_PSOFFSET_IDDATABLOCK 2
2219 #define ATOM_WRITE_I2C_FORMAT_PSCOUNTER_IDOFFSET_PLUS_IDDATABLOCK 3
2220 #define ATOM_WRITE_I2C_FORMAT_IDCOUNTER_IDOFFSET_IDDATABLOCK 4
2221
2222 typedef struct _WRITE_ONE_BYTE_HW_I2C_DATA_PARAMETERS
2223 {
2224 USHORT usPrescale;
2225 USHORT usByteOffset;
2226
2227
2228
2229
2230
2231
2232 UCHAR ucData;
2233 UCHAR ucStatus;
2234 UCHAR ucSlaveAddr;
2235 UCHAR ucLineNumber;
2236 }WRITE_ONE_BYTE_HW_I2C_DATA_PARAMETERS;
2237
2238 #define WRITE_ONE_BYTE_HW_I2C_DATA_PS_ALLOCATION WRITE_ONE_BYTE_HW_I2C_DATA_PARAMETERS
2239
2240 typedef struct _SET_UP_HW_I2C_DATA_PARAMETERS
2241 {
2242 USHORT usPrescale;
2243 UCHAR ucSlaveAddr;
2244 UCHAR ucLineNumber;
2245 }SET_UP_HW_I2C_DATA_PARAMETERS;
2246
2247
2248 #define SPEED_FAN_CONTROL_PS_ALLOCATION WRITE_ONE_BYTE_HW_I2C_DATA_PARAMETERS
2249
2250
2251
2252
2253
2254 typedef struct _POWER_CONNECTOR_DETECTION_PARAMETERS
2255 {
2256 UCHAR ucPowerConnectorStatus;
2257 UCHAR ucPwrBehaviorId;
2258 USHORT usPwrBudget;
2259 }POWER_CONNECTOR_DETECTION_PARAMETERS;
2260
2261 typedef struct POWER_CONNECTOR_DETECTION_PS_ALLOCATION
2262 {
2263 UCHAR ucPowerConnectorStatus;
2264 UCHAR ucReserved;
2265 USHORT usPwrBudget;
2266 WRITE_ONE_BYTE_HW_I2C_DATA_PS_ALLOCATION sReserved;
2267 }POWER_CONNECTOR_DETECTION_PS_ALLOCATION;
2268
2269
2270
2271
2272
2273
2274
2275 typedef struct _ENABLE_LVDS_SS_PARAMETERS
2276 {
2277 USHORT usSpreadSpectrumPercentage;
2278 UCHAR ucSpreadSpectrumType;
2279 UCHAR ucSpreadSpectrumStepSize_Delay;
2280 UCHAR ucEnable;
2281 UCHAR ucPadding[3];
2282 }ENABLE_LVDS_SS_PARAMETERS;
2283
2284
2285 typedef struct _ENABLE_LVDS_SS_PARAMETERS_V2
2286 {
2287 USHORT usSpreadSpectrumPercentage;
2288 UCHAR ucSpreadSpectrumType;
2289 UCHAR ucSpreadSpectrumStep;
2290 UCHAR ucEnable;
2291 UCHAR ucSpreadSpectrumDelay;
2292 UCHAR ucSpreadSpectrumRange;
2293 UCHAR ucPadding;
2294 }ENABLE_LVDS_SS_PARAMETERS_V2;
2295
2296
2297 typedef struct _ENABLE_SPREAD_SPECTRUM_ON_PPLL
2298 {
2299 USHORT usSpreadSpectrumPercentage;
2300 UCHAR ucSpreadSpectrumType;
2301 UCHAR ucSpreadSpectrumStep;
2302 UCHAR ucEnable;
2303 UCHAR ucSpreadSpectrumDelay;
2304 UCHAR ucSpreadSpectrumRange;
2305 UCHAR ucPpll;
2306 }ENABLE_SPREAD_SPECTRUM_ON_PPLL;
2307
2308 typedef struct _ENABLE_SPREAD_SPECTRUM_ON_PPLL_V2
2309 {
2310 USHORT usSpreadSpectrumPercentage;
2311 UCHAR ucSpreadSpectrumType;
2312
2313
2314
2315 UCHAR ucEnable;
2316 USHORT usSpreadSpectrumAmount;
2317 USHORT usSpreadSpectrumStep;
2318 }ENABLE_SPREAD_SPECTRUM_ON_PPLL_V2;
2319
2320 #define ATOM_PPLL_SS_TYPE_V2_DOWN_SPREAD 0x00
2321 #define ATOM_PPLL_SS_TYPE_V2_CENTRE_SPREAD 0x01
2322 #define ATOM_PPLL_SS_TYPE_V2_EXT_SPREAD 0x02
2323 #define ATOM_PPLL_SS_TYPE_V2_PPLL_SEL_MASK 0x0c
2324 #define ATOM_PPLL_SS_TYPE_V2_P1PLL 0x00
2325 #define ATOM_PPLL_SS_TYPE_V2_P2PLL 0x04
2326 #define ATOM_PPLL_SS_TYPE_V2_DCPLL 0x08
2327 #define ATOM_PPLL_SS_AMOUNT_V2_FBDIV_MASK 0x00FF
2328 #define ATOM_PPLL_SS_AMOUNT_V2_FBDIV_SHIFT 0
2329 #define ATOM_PPLL_SS_AMOUNT_V2_NFRAC_MASK 0x0F00
2330 #define ATOM_PPLL_SS_AMOUNT_V2_NFRAC_SHIFT 8
2331
2332
2333 typedef struct _ENABLE_SPREAD_SPECTRUM_ON_PPLL_V3
2334 {
2335 USHORT usSpreadSpectrumAmountFrac;
2336 UCHAR ucSpreadSpectrumType;
2337
2338
2339
2340 UCHAR ucEnable;
2341 USHORT usSpreadSpectrumAmount;
2342 USHORT usSpreadSpectrumStep;
2343 }ENABLE_SPREAD_SPECTRUM_ON_PPLL_V3;
2344
2345
2346 #define ATOM_PPLL_SS_TYPE_V3_DOWN_SPREAD 0x00
2347 #define ATOM_PPLL_SS_TYPE_V3_CENTRE_SPREAD 0x01
2348 #define ATOM_PPLL_SS_TYPE_V3_EXT_SPREAD 0x02
2349 #define ATOM_PPLL_SS_TYPE_V3_PPLL_SEL_MASK 0x0c
2350 #define ATOM_PPLL_SS_TYPE_V3_P1PLL 0x00
2351 #define ATOM_PPLL_SS_TYPE_V3_P2PLL 0x04
2352 #define ATOM_PPLL_SS_TYPE_V3_DCPLL 0x08
2353 #define ATOM_PPLL_SS_TYPE_V3_P0PLL ATOM_PPLL_SS_TYPE_V3_DCPLL
2354 #define ATOM_PPLL_SS_AMOUNT_V3_FBDIV_MASK 0x00FF
2355 #define ATOM_PPLL_SS_AMOUNT_V3_FBDIV_SHIFT 0
2356 #define ATOM_PPLL_SS_AMOUNT_V3_NFRAC_MASK 0x0F00
2357 #define ATOM_PPLL_SS_AMOUNT_V3_NFRAC_SHIFT 8
2358
2359 #define ENABLE_SPREAD_SPECTRUM_ON_PPLL_PS_ALLOCATION ENABLE_SPREAD_SPECTRUM_ON_PPLL
2360
2361 typedef struct _SET_PIXEL_CLOCK_PS_ALLOCATION
2362 {
2363 PIXEL_CLOCK_PARAMETERS sPCLKInput;
2364 ENABLE_SPREAD_SPECTRUM_ON_PPLL sReserved;
2365 }SET_PIXEL_CLOCK_PS_ALLOCATION;
2366
2367
2368
2369 #define ENABLE_VGA_RENDER_PS_ALLOCATION SET_PIXEL_CLOCK_PS_ALLOCATION
2370
2371
2372
2373
2374 typedef struct _MEMORY_TRAINING_PARAMETERS
2375 {
2376 ULONG ulTargetMemoryClock;
2377 }MEMORY_TRAINING_PARAMETERS;
2378 #define MEMORY_TRAINING_PS_ALLOCATION MEMORY_TRAINING_PARAMETERS
2379
2380
2381 typedef struct _MEMORY_TRAINING_PARAMETERS_V1_2
2382 {
2383 USHORT usMemTrainingMode;
2384 USHORT usReserved;
2385 }MEMORY_TRAINING_PARAMETERS_V1_2;
2386
2387
2388 #define NORMAL_MEMORY_TRAINING_MODE 0
2389 #define ENTER_DRAM_SELFREFRESH_MODE 1
2390 #define EXIT_DRAM_SELFRESH_MODE 2
2391
2392
2393
2394
2395
2396
2397
2398
2399
2400 typedef struct _LVDS_ENCODER_CONTROL_PARAMETERS
2401 {
2402 USHORT usPixelClock;
2403 UCHAR ucMisc;
2404
2405
2406
2407 UCHAR ucAction;
2408
2409 }LVDS_ENCODER_CONTROL_PARAMETERS;
2410
2411 #define LVDS_ENCODER_CONTROL_PS_ALLOCATION LVDS_ENCODER_CONTROL_PARAMETERS
2412
2413 #define TMDS1_ENCODER_CONTROL_PARAMETERS LVDS_ENCODER_CONTROL_PARAMETERS
2414 #define TMDS1_ENCODER_CONTROL_PS_ALLOCATION TMDS1_ENCODER_CONTROL_PARAMETERS
2415
2416 #define TMDS2_ENCODER_CONTROL_PARAMETERS TMDS1_ENCODER_CONTROL_PARAMETERS
2417 #define TMDS2_ENCODER_CONTROL_PS_ALLOCATION TMDS2_ENCODER_CONTROL_PARAMETERS
2418
2419
2420 typedef struct _LVDS_ENCODER_CONTROL_PARAMETERS_V2
2421 {
2422 USHORT usPixelClock;
2423 UCHAR ucMisc;
2424 UCHAR ucAction;
2425
2426 UCHAR ucTruncate;
2427
2428
2429
2430 UCHAR ucSpatial;
2431
2432
2433
2434 UCHAR ucTemporal;
2435
2436
2437
2438
2439
2440 UCHAR ucFRC;
2441
2442
2443
2444
2445
2446
2447
2448 }LVDS_ENCODER_CONTROL_PARAMETERS_V2;
2449
2450 #define LVDS_ENCODER_CONTROL_PS_ALLOCATION_V2 LVDS_ENCODER_CONTROL_PARAMETERS_V2
2451
2452 #define TMDS1_ENCODER_CONTROL_PARAMETERS_V2 LVDS_ENCODER_CONTROL_PARAMETERS_V2
2453 #define TMDS1_ENCODER_CONTROL_PS_ALLOCATION_V2 TMDS1_ENCODER_CONTROL_PARAMETERS_V2
2454
2455 #define TMDS2_ENCODER_CONTROL_PARAMETERS_V2 TMDS1_ENCODER_CONTROL_PARAMETERS_V2
2456 #define TMDS2_ENCODER_CONTROL_PS_ALLOCATION_V2 TMDS2_ENCODER_CONTROL_PARAMETERS_V2
2457
2458
2459 #define LVDS_ENCODER_CONTROL_PARAMETERS_V3 LVDS_ENCODER_CONTROL_PARAMETERS_V2
2460 #define LVDS_ENCODER_CONTROL_PS_ALLOCATION_V3 LVDS_ENCODER_CONTROL_PARAMETERS_V3
2461
2462 #define TMDS1_ENCODER_CONTROL_PARAMETERS_V3 LVDS_ENCODER_CONTROL_PARAMETERS_V3
2463 #define TMDS1_ENCODER_CONTROL_PS_ALLOCATION_V3 TMDS1_ENCODER_CONTROL_PARAMETERS_V3
2464
2465 #define TMDS2_ENCODER_CONTROL_PARAMETERS_V3 LVDS_ENCODER_CONTROL_PARAMETERS_V3
2466 #define TMDS2_ENCODER_CONTROL_PS_ALLOCATION_V3 TMDS2_ENCODER_CONTROL_PARAMETERS_V3
2467
2468
2469
2470
2471 typedef struct _ENABLE_EXTERNAL_TMDS_ENCODER_PARAMETERS
2472 {
2473 UCHAR ucEnable;
2474 UCHAR ucMisc;
2475 UCHAR ucPadding[2];
2476 }ENABLE_EXTERNAL_TMDS_ENCODER_PARAMETERS;
2477
2478 typedef struct _ENABLE_EXTERNAL_TMDS_ENCODER_PS_ALLOCATION
2479 {
2480 ENABLE_EXTERNAL_TMDS_ENCODER_PARAMETERS sXTmdsEncoder;
2481 WRITE_ONE_BYTE_HW_I2C_DATA_PS_ALLOCATION sReserved;
2482 }ENABLE_EXTERNAL_TMDS_ENCODER_PS_ALLOCATION;
2483
2484 #define ENABLE_EXTERNAL_TMDS_ENCODER_PARAMETERS_V2 LVDS_ENCODER_CONTROL_PARAMETERS_V2
2485 typedef struct _ENABLE_EXTERNAL_TMDS_ENCODER_PS_ALLOCATION_V2
2486 {
2487 ENABLE_EXTERNAL_TMDS_ENCODER_PARAMETERS_V2 sXTmdsEncoder;
2488 WRITE_ONE_BYTE_HW_I2C_DATA_PS_ALLOCATION sReserved;
2489 }ENABLE_EXTERNAL_TMDS_ENCODER_PS_ALLOCATION_V2;
2490
2491 typedef struct _EXTERNAL_ENCODER_CONTROL_PS_ALLOCATION
2492 {
2493 DIG_ENCODER_CONTROL_PARAMETERS sDigEncoder;
2494 WRITE_ONE_BYTE_HW_I2C_DATA_PS_ALLOCATION sReserved;
2495 }EXTERNAL_ENCODER_CONTROL_PS_ALLOCATION;
2496
2497
2498
2499
2500
2501
2502 #define DVO_ENCODER_CONFIG_RATE_SEL 0x01
2503 #define DVO_ENCODER_CONFIG_DDR_SPEED 0x00
2504 #define DVO_ENCODER_CONFIG_SDR_SPEED 0x01
2505 #define DVO_ENCODER_CONFIG_OUTPUT_SEL 0x0c
2506 #define DVO_ENCODER_CONFIG_LOW12BIT 0x00
2507 #define DVO_ENCODER_CONFIG_UPPER12BIT 0x04
2508 #define DVO_ENCODER_CONFIG_24BIT 0x08
2509
2510 typedef struct _DVO_ENCODER_CONTROL_PARAMETERS_V3
2511 {
2512 USHORT usPixelClock;
2513 UCHAR ucDVOConfig;
2514 UCHAR ucAction;
2515 UCHAR ucReseved[4];
2516 }DVO_ENCODER_CONTROL_PARAMETERS_V3;
2517 #define DVO_ENCODER_CONTROL_PS_ALLOCATION_V3 DVO_ENCODER_CONTROL_PARAMETERS_V3
2518
2519 typedef struct _DVO_ENCODER_CONTROL_PARAMETERS_V1_4
2520 {
2521 USHORT usPixelClock;
2522 UCHAR ucDVOConfig;
2523 UCHAR ucAction;
2524 UCHAR ucBitPerColor;
2525 UCHAR ucReseved[3];
2526 }DVO_ENCODER_CONTROL_PARAMETERS_V1_4;
2527 #define DVO_ENCODER_CONTROL_PS_ALLOCATION_V1_4 DVO_ENCODER_CONTROL_PARAMETERS_V1_4
2528
2529
2530
2531
2532
2533
2534
2535
2536
2537 #define LVDS_ENCODER_CONTROL_PARAMETERS_LAST LVDS_ENCODER_CONTROL_PARAMETERS_V3
2538 #define LVDS_ENCODER_CONTROL_PS_ALLOCATION_LAST LVDS_ENCODER_CONTROL_PARAMETERS_LAST
2539
2540 #define TMDS1_ENCODER_CONTROL_PARAMETERS_LAST LVDS_ENCODER_CONTROL_PARAMETERS_V3
2541 #define TMDS1_ENCODER_CONTROL_PS_ALLOCATION_LAST TMDS1_ENCODER_CONTROL_PARAMETERS_LAST
2542
2543 #define TMDS2_ENCODER_CONTROL_PARAMETERS_LAST LVDS_ENCODER_CONTROL_PARAMETERS_V3
2544 #define TMDS2_ENCODER_CONTROL_PS_ALLOCATION_LAST TMDS2_ENCODER_CONTROL_PARAMETERS_LAST
2545
2546 #define DVO_ENCODER_CONTROL_PARAMETERS_LAST DVO_ENCODER_CONTROL_PARAMETERS
2547 #define DVO_ENCODER_CONTROL_PS_ALLOCATION_LAST DVO_ENCODER_CONTROL_PS_ALLOCATION
2548
2549
2550 #define PANEL_ENCODER_MISC_DUAL 0x01
2551 #define PANEL_ENCODER_MISC_COHERENT 0x02
2552 #define PANEL_ENCODER_MISC_TMDS_LINKB 0x04
2553 #define PANEL_ENCODER_MISC_HDMI_TYPE 0x08
2554
2555 #define PANEL_ENCODER_ACTION_DISABLE ATOM_DISABLE
2556 #define PANEL_ENCODER_ACTION_ENABLE ATOM_ENABLE
2557 #define PANEL_ENCODER_ACTION_COHERENTSEQ (ATOM_ENABLE+1)
2558
2559 #define PANEL_ENCODER_TRUNCATE_EN 0x01
2560 #define PANEL_ENCODER_TRUNCATE_DEPTH 0x10
2561 #define PANEL_ENCODER_SPATIAL_DITHER_EN 0x01
2562 #define PANEL_ENCODER_SPATIAL_DITHER_DEPTH 0x10
2563 #define PANEL_ENCODER_TEMPORAL_DITHER_EN 0x01
2564 #define PANEL_ENCODER_TEMPORAL_DITHER_DEPTH 0x10
2565 #define PANEL_ENCODER_TEMPORAL_LEVEL_4 0x20
2566 #define PANEL_ENCODER_25FRC_MASK 0x10
2567 #define PANEL_ENCODER_25FRC_E 0x00
2568 #define PANEL_ENCODER_25FRC_F 0x10
2569 #define PANEL_ENCODER_50FRC_MASK 0x60
2570 #define PANEL_ENCODER_50FRC_A 0x00
2571 #define PANEL_ENCODER_50FRC_B 0x20
2572 #define PANEL_ENCODER_50FRC_C 0x40
2573 #define PANEL_ENCODER_50FRC_D 0x60
2574 #define PANEL_ENCODER_75FRC_MASK 0x80
2575 #define PANEL_ENCODER_75FRC_E 0x00
2576 #define PANEL_ENCODER_75FRC_F 0x80
2577
2578
2579
2580
2581 #define SET_VOLTAGE_TYPE_ASIC_VDDC 1
2582 #define SET_VOLTAGE_TYPE_ASIC_MVDDC 2
2583 #define SET_VOLTAGE_TYPE_ASIC_MVDDQ 3
2584 #define SET_VOLTAGE_TYPE_ASIC_VDDCI 4
2585 #define SET_VOLTAGE_INIT_MODE 5
2586 #define SET_VOLTAGE_GET_MAX_VOLTAGE 6
2587
2588 #define SET_ASIC_VOLTAGE_MODE_ALL_SOURCE 0x1
2589 #define SET_ASIC_VOLTAGE_MODE_SOURCE_A 0x2
2590 #define SET_ASIC_VOLTAGE_MODE_SOURCE_B 0x4
2591
2592 #define SET_ASIC_VOLTAGE_MODE_SET_VOLTAGE 0x0
2593 #define SET_ASIC_VOLTAGE_MODE_GET_GPIOVAL 0x1
2594 #define SET_ASIC_VOLTAGE_MODE_GET_GPIOMASK 0x2
2595
2596 typedef struct _SET_VOLTAGE_PARAMETERS
2597 {
2598 UCHAR ucVoltageType;
2599 UCHAR ucVoltageMode;
2600 UCHAR ucVoltageIndex;
2601 UCHAR ucReserved;
2602 }SET_VOLTAGE_PARAMETERS;
2603
2604 typedef struct _SET_VOLTAGE_PARAMETERS_V2
2605 {
2606 UCHAR ucVoltageType;
2607 UCHAR ucVoltageMode;
2608 USHORT usVoltageLevel;
2609 }SET_VOLTAGE_PARAMETERS_V2;
2610
2611
2612 typedef struct _SET_VOLTAGE_PARAMETERS_V1_3
2613 {
2614 UCHAR ucVoltageType;
2615 UCHAR ucVoltageMode;
2616 USHORT usVoltageLevel;
2617 }SET_VOLTAGE_PARAMETERS_V1_3;
2618
2619
2620 #define VOLTAGE_TYPE_VDDC 1
2621 #define VOLTAGE_TYPE_MVDDC 2
2622 #define VOLTAGE_TYPE_MVDDQ 3
2623 #define VOLTAGE_TYPE_VDDCI 4
2624 #define VOLTAGE_TYPE_VDDGFX 5
2625 #define VOLTAGE_TYPE_PCC 6
2626 #define VOLTAGE_TYPE_MVPP 7
2627 #define VOLTAGE_TYPE_LEDDPM 8
2628 #define VOLTAGE_TYPE_PCC_MVDD 9
2629 #define VOLTAGE_TYPE_PCIE_VDDC 10
2630 #define VOLTAGE_TYPE_PCIE_VDDR 11
2631
2632 #define VOLTAGE_TYPE_GENERIC_I2C_1 0x11
2633 #define VOLTAGE_TYPE_GENERIC_I2C_2 0x12
2634 #define VOLTAGE_TYPE_GENERIC_I2C_3 0x13
2635 #define VOLTAGE_TYPE_GENERIC_I2C_4 0x14
2636 #define VOLTAGE_TYPE_GENERIC_I2C_5 0x15
2637 #define VOLTAGE_TYPE_GENERIC_I2C_6 0x16
2638 #define VOLTAGE_TYPE_GENERIC_I2C_7 0x17
2639 #define VOLTAGE_TYPE_GENERIC_I2C_8 0x18
2640 #define VOLTAGE_TYPE_GENERIC_I2C_9 0x19
2641 #define VOLTAGE_TYPE_GENERIC_I2C_10 0x1A
2642
2643
2644 #define ATOM_SET_VOLTAGE 0
2645 #define ATOM_INIT_VOLTAGE_REGULATOR 3
2646 #define ATOM_SET_VOLTAGE_PHASE 4
2647 #define ATOM_GET_MAX_VOLTAGE 6
2648 #define ATOM_GET_VOLTAGE_LEVEL 6
2649 #define ATOM_GET_LEAKAGE_ID 8
2650
2651
2652 #define ATOM_VIRTUAL_VOLTAGE_ID0 0xff01
2653 #define ATOM_VIRTUAL_VOLTAGE_ID1 0xff02
2654 #define ATOM_VIRTUAL_VOLTAGE_ID2 0xff03
2655 #define ATOM_VIRTUAL_VOLTAGE_ID3 0xff04
2656 #define ATOM_VIRTUAL_VOLTAGE_ID4 0xff05
2657 #define ATOM_VIRTUAL_VOLTAGE_ID5 0xff06
2658 #define ATOM_VIRTUAL_VOLTAGE_ID6 0xff07
2659 #define ATOM_VIRTUAL_VOLTAGE_ID7 0xff08
2660
2661 typedef struct _SET_VOLTAGE_PS_ALLOCATION
2662 {
2663 SET_VOLTAGE_PARAMETERS sASICSetVoltage;
2664 WRITE_ONE_BYTE_HW_I2C_DATA_PS_ALLOCATION sReserved;
2665 }SET_VOLTAGE_PS_ALLOCATION;
2666
2667
2668 typedef struct _GET_VOLTAGE_INFO_INPUT_PARAMETER_V1_1
2669 {
2670 UCHAR ucVoltageType;
2671 UCHAR ucVoltageMode;
2672 USHORT usVoltageLevel;
2673 ULONG ulReserved;
2674 }GET_VOLTAGE_INFO_INPUT_PARAMETER_V1_1;
2675
2676
2677 typedef struct _GET_VOLTAGE_INFO_OUTPUT_PARAMETER_V1_1
2678 {
2679 ULONG ulVotlageGpioState;
2680 ULONG ulVoltageGPioMask;
2681 }GET_VOLTAGE_INFO_OUTPUT_PARAMETER_V1_1;
2682
2683
2684 typedef struct _GET_LEAKAGE_VOLTAGE_INFO_OUTPUT_PARAMETER_V1_1
2685 {
2686 USHORT usVoltageLevel;
2687 USHORT usVoltageId;
2688 ULONG ulReseved;
2689 }GET_LEAKAGE_VOLTAGE_INFO_OUTPUT_PARAMETER_V1_1;
2690
2691
2692 #define ATOM_GET_VOLTAGE_VID 0x00
2693 #define ATOM_GET_VOTLAGE_INIT_SEQ 0x03
2694 #define ATOM_GET_VOLTTAGE_PHASE_PHASE_VID 0x04
2695 #define ATOM_GET_VOLTAGE_SVID2 0x07
2696
2697
2698 #define ATOM_GET_VOLTAGE_STATE0_LEAKAGE_VID 0x10
2699
2700 #define ATOM_GET_VOLTAGE_STATE1_LEAKAGE_VID 0x11
2701
2702 #define ATOM_GET_VOLTAGE_STATE2_LEAKAGE_VID 0x12
2703 #define ATOM_GET_VOLTAGE_STATE3_LEAKAGE_VID 0x13
2704
2705
2706
2707 typedef struct _GET_VOLTAGE_INFO_INPUT_PARAMETER_V1_2
2708 {
2709 UCHAR ucVoltageType;
2710 UCHAR ucVoltageMode;
2711 USHORT usVoltageLevel;
2712 ULONG ulSCLKFreq;
2713 }GET_VOLTAGE_INFO_INPUT_PARAMETER_V1_2;
2714
2715
2716 #define ATOM_GET_VOLTAGE_EVV_VOLTAGE 0x09
2717
2718
2719 typedef struct _GET_EVV_VOLTAGE_INFO_OUTPUT_PARAMETER_V1_2
2720 {
2721 USHORT usVoltageLevel;
2722 USHORT usVoltageId;
2723 USHORT usTDP_Current;
2724 USHORT usTDP_Power;
2725 }GET_EVV_VOLTAGE_INFO_OUTPUT_PARAMETER_V1_2;
2726
2727
2728
2729 typedef struct _GET_VOLTAGE_INFO_INPUT_PARAMETER_V1_3
2730 {
2731 UCHAR ucVoltageType;
2732 UCHAR ucVoltageMode;
2733 USHORT usVoltageLevel;
2734 ULONG ulSCLKFreq;
2735 ULONG ulReserved[3];
2736 }GET_VOLTAGE_INFO_INPUT_PARAMETER_V1_3;
2737
2738
2739 typedef struct _GET_EVV_VOLTAGE_INFO_OUTPUT_PARAMETER_V1_3
2740 {
2741 ULONG ulVoltageLevel;
2742 ULONG ulReserved[4];
2743 }GET_EVV_VOLTAGE_INFO_OUTPUT_PARAMETER_V1_3;
2744
2745
2746
2747
2748
2749 typedef struct _GET_SMU_CLOCK_INFO_INPUT_PARAMETER_V2_1
2750 {
2751 ULONG ulDfsPllOutputFreq:24;
2752 ULONG ucDfsDivider:8;
2753 }GET_SMU_CLOCK_INFO_INPUT_PARAMETER_V2_1;
2754
2755 typedef struct _GET_SMU_CLOCK_INFO_OUTPUT_PARAMETER_V2_1
2756 {
2757 ULONG ulDfsOutputFreq;
2758 }GET_SMU_CLOCK_INFO_OUTPUT_PARAMETER_V2_1;
2759
2760
2761
2762
2763 typedef struct _TV_ENCODER_CONTROL_PARAMETERS
2764 {
2765 USHORT usPixelClock;
2766 UCHAR ucTvStandard;
2767 UCHAR ucAction;
2768
2769 }TV_ENCODER_CONTROL_PARAMETERS;
2770
2771 typedef struct _TV_ENCODER_CONTROL_PS_ALLOCATION
2772 {
2773 TV_ENCODER_CONTROL_PARAMETERS sTVEncoder;
2774 WRITE_ONE_BYTE_HW_I2C_DATA_PS_ALLOCATION sReserved;
2775 }TV_ENCODER_CONTROL_PS_ALLOCATION;
2776
2777
2778
2779
2780
2781
2782
2783 typedef struct _ATOM_MASTER_LIST_OF_DATA_TABLES
2784 {
2785 USHORT UtilityPipeLine;
2786 USHORT MultimediaCapabilityInfo;
2787 USHORT MultimediaConfigInfo;
2788 USHORT StandardVESA_Timing;
2789 USHORT FirmwareInfo;
2790 USHORT PaletteData;
2791 USHORT LCD_Info;
2792 USHORT DIGTransmitterInfo;
2793 USHORT SMU_Info;
2794 USHORT SupportedDevicesInfo;
2795 USHORT GPIO_I2C_Info;
2796 USHORT VRAM_UsageByFirmware;
2797 USHORT GPIO_Pin_LUT;
2798 USHORT VESA_ToInternalModeLUT;
2799 USHORT GFX_Info;
2800 USHORT PowerPlayInfo;
2801 USHORT GPUVirtualizationInfo;
2802 USHORT SaveRestoreInfo;
2803 USHORT PPLL_SS_Info;
2804 USHORT OemInfo;
2805 USHORT XTMDS_Info;
2806 USHORT MclkSS_Info;
2807 USHORT Object_Header;
2808 USHORT IndirectIOAccess;
2809 USHORT MC_InitParameter;
2810 USHORT ASIC_VDDC_Info;
2811 USHORT ASIC_InternalSS_Info;
2812 USHORT TV_VideoMode;
2813 USHORT VRAM_Info;
2814 USHORT MemoryTrainingInfo;
2815 USHORT IntegratedSystemInfo;
2816 USHORT ASIC_ProfilingInfo;
2817 USHORT VoltageObjectInfo;
2818 USHORT PowerSourceInfo;
2819 USHORT ServiceInfo;
2820 }ATOM_MASTER_LIST_OF_DATA_TABLES;
2821
2822 typedef struct _ATOM_MASTER_DATA_TABLE
2823 {
2824 ATOM_COMMON_TABLE_HEADER sHeader;
2825 ATOM_MASTER_LIST_OF_DATA_TABLES ListOfDataTables;
2826 }ATOM_MASTER_DATA_TABLE;
2827
2828
2829 #define LVDS_Info LCD_Info
2830 #define DAC_Info PaletteData
2831 #define TMDS_Info DIGTransmitterInfo
2832 #define CompassionateData GPUVirtualizationInfo
2833 #define AnalogTV_Info SMU_Info
2834 #define ComponentVideoInfo GFX_Info
2835
2836
2837
2838
2839 typedef struct _ATOM_MULTIMEDIA_CAPABILITY_INFO
2840 {
2841 ATOM_COMMON_TABLE_HEADER sHeader;
2842 ULONG ulSignature;
2843 UCHAR ucI2C_Type;
2844 UCHAR ucTV_OutInfo;
2845 UCHAR ucVideoPortInfo;
2846 UCHAR ucHostPortInfo;
2847 }ATOM_MULTIMEDIA_CAPABILITY_INFO;
2848
2849
2850
2851
2852
2853 typedef struct _ATOM_MULTIMEDIA_CONFIG_INFO
2854 {
2855 ATOM_COMMON_TABLE_HEADER sHeader;
2856 ULONG ulSignature;
2857 UCHAR ucTunerInfo;
2858 UCHAR ucAudioChipInfo;
2859 UCHAR ucProductID;
2860 UCHAR ucMiscInfo1;
2861 UCHAR ucMiscInfo2;
2862 UCHAR ucMiscInfo3;
2863 UCHAR ucMiscInfo4;
2864 UCHAR ucVideoInput0Info;
2865 UCHAR ucVideoInput1Info;
2866 UCHAR ucVideoInput2Info;
2867 UCHAR ucVideoInput3Info;
2868 UCHAR ucVideoInput4Info;
2869 }ATOM_MULTIMEDIA_CONFIG_INFO;
2870
2871
2872
2873
2874
2875
2876
2877
2878
2879
2880
2881 #define ATOM_BIOS_INFO_ATOM_FIRMWARE_POSTED 0x0001
2882 #define ATOM_BIOS_INFO_DUAL_CRTC_SUPPORT 0x0002
2883 #define ATOM_BIOS_INFO_EXTENDED_DESKTOP_SUPPORT 0x0004
2884 #define ATOM_BIOS_INFO_MEMORY_CLOCK_SS_SUPPORT 0x0008
2885 #define ATOM_BIOS_INFO_ENGINE_CLOCK_SS_SUPPORT 0x0010
2886 #define ATOM_BIOS_INFO_BL_CONTROLLED_BY_GPU 0x0020
2887 #define ATOM_BIOS_INFO_WMI_SUPPORT 0x0040
2888 #define ATOM_BIOS_INFO_PPMODE_ASSIGNGED_BY_SYSTEM 0x0080
2889 #define ATOM_BIOS_INFO_HYPERMEMORY_SUPPORT 0x0100
2890 #define ATOM_BIOS_INFO_HYPERMEMORY_SIZE_MASK 0x1E00
2891 #define ATOM_BIOS_INFO_VPOST_WITHOUT_FIRST_MODE_SET 0x2000
2892 #define ATOM_BIOS_INFO_BIOS_SCRATCH6_SCL2_REDEFINE 0x4000
2893 #define ATOM_BIOS_INFO_MEMORY_CLOCK_EXT_SS_SUPPORT 0x0008
2894 #define ATOM_BIOS_INFO_ENGINE_CLOCK_EXT_SS_SUPPORT 0x0010
2895
2896
2897 #ifndef _H2INC
2898
2899
2900 typedef struct _ATOM_FIRMWARE_CAPABILITY
2901 {
2902 #if ATOM_BIG_ENDIAN
2903 USHORT Reserved:1;
2904 USHORT SCL2Redefined:1;
2905 USHORT PostWithoutModeSet:1;
2906 USHORT HyperMemory_Size:4;
2907 USHORT HyperMemory_Support:1;
2908 USHORT PPMode_Assigned:1;
2909 USHORT WMI_SUPPORT:1;
2910 USHORT GPUControlsBL:1;
2911 USHORT EngineClockSS_Support:1;
2912 USHORT MemoryClockSS_Support:1;
2913 USHORT ExtendedDesktopSupport:1;
2914 USHORT DualCRTC_Support:1;
2915 USHORT FirmwarePosted:1;
2916 #else
2917 USHORT FirmwarePosted:1;
2918 USHORT DualCRTC_Support:1;
2919 USHORT ExtendedDesktopSupport:1;
2920 USHORT MemoryClockSS_Support:1;
2921 USHORT EngineClockSS_Support:1;
2922 USHORT GPUControlsBL:1;
2923 USHORT WMI_SUPPORT:1;
2924 USHORT PPMode_Assigned:1;
2925 USHORT HyperMemory_Support:1;
2926 USHORT HyperMemory_Size:4;
2927 USHORT PostWithoutModeSet:1;
2928 USHORT SCL2Redefined:1;
2929 USHORT Reserved:1;
2930 #endif
2931 }ATOM_FIRMWARE_CAPABILITY;
2932
2933 typedef union _ATOM_FIRMWARE_CAPABILITY_ACCESS
2934 {
2935 ATOM_FIRMWARE_CAPABILITY sbfAccess;
2936 USHORT susAccess;
2937 }ATOM_FIRMWARE_CAPABILITY_ACCESS;
2938
2939 #else
2940
2941 typedef union _ATOM_FIRMWARE_CAPABILITY_ACCESS
2942 {
2943 USHORT susAccess;
2944 }ATOM_FIRMWARE_CAPABILITY_ACCESS;
2945
2946 #endif
2947
2948 typedef struct _ATOM_FIRMWARE_INFO
2949 {
2950 ATOM_COMMON_TABLE_HEADER sHeader;
2951 ULONG ulFirmwareRevision;
2952 ULONG ulDefaultEngineClock;
2953 ULONG ulDefaultMemoryClock;
2954 ULONG ulDriverTargetEngineClock;
2955 ULONG ulDriverTargetMemoryClock;
2956 ULONG ulMaxEngineClockPLL_Output;
2957 ULONG ulMaxMemoryClockPLL_Output;
2958 ULONG ulMaxPixelClockPLL_Output;
2959 ULONG ulASICMaxEngineClock;
2960 ULONG ulASICMaxMemoryClock;
2961 UCHAR ucASICMaxTemperature;
2962 UCHAR ucPadding[3];
2963 ULONG aulReservedForBIOS[3];
2964 USHORT usMinEngineClockPLL_Input;
2965 USHORT usMaxEngineClockPLL_Input;
2966 USHORT usMinEngineClockPLL_Output;
2967 USHORT usMinMemoryClockPLL_Input;
2968 USHORT usMaxMemoryClockPLL_Input;
2969 USHORT usMinMemoryClockPLL_Output;
2970 USHORT usMaxPixelClock;
2971 USHORT usMinPixelClockPLL_Input;
2972 USHORT usMaxPixelClockPLL_Input;
2973 USHORT usMinPixelClockPLL_Output;
2974 ATOM_FIRMWARE_CAPABILITY_ACCESS usFirmwareCapability;
2975 USHORT usReferenceClock;
2976 USHORT usPM_RTS_Location;
2977 UCHAR ucPM_RTS_StreamSize;
2978 UCHAR ucDesign_ID;
2979 UCHAR ucMemoryModule_ID;
2980 }ATOM_FIRMWARE_INFO;
2981
2982 typedef struct _ATOM_FIRMWARE_INFO_V1_2
2983 {
2984 ATOM_COMMON_TABLE_HEADER sHeader;
2985 ULONG ulFirmwareRevision;
2986 ULONG ulDefaultEngineClock;
2987 ULONG ulDefaultMemoryClock;
2988 ULONG ulDriverTargetEngineClock;
2989 ULONG ulDriverTargetMemoryClock;
2990 ULONG ulMaxEngineClockPLL_Output;
2991 ULONG ulMaxMemoryClockPLL_Output;
2992 ULONG ulMaxPixelClockPLL_Output;
2993 ULONG ulASICMaxEngineClock;
2994 ULONG ulASICMaxMemoryClock;
2995 UCHAR ucASICMaxTemperature;
2996 UCHAR ucMinAllowedBL_Level;
2997 UCHAR ucPadding[2];
2998 ULONG aulReservedForBIOS[2];
2999 ULONG ulMinPixelClockPLL_Output;
3000 USHORT usMinEngineClockPLL_Input;
3001 USHORT usMaxEngineClockPLL_Input;
3002 USHORT usMinEngineClockPLL_Output;
3003 USHORT usMinMemoryClockPLL_Input;
3004 USHORT usMaxMemoryClockPLL_Input;
3005 USHORT usMinMemoryClockPLL_Output;
3006 USHORT usMaxPixelClock;
3007 USHORT usMinPixelClockPLL_Input;
3008 USHORT usMaxPixelClockPLL_Input;
3009 USHORT usMinPixelClockPLL_Output;
3010 ATOM_FIRMWARE_CAPABILITY_ACCESS usFirmwareCapability;
3011 USHORT usReferenceClock;
3012 USHORT usPM_RTS_Location;
3013 UCHAR ucPM_RTS_StreamSize;
3014 UCHAR ucDesign_ID;
3015 UCHAR ucMemoryModule_ID;
3016 }ATOM_FIRMWARE_INFO_V1_2;
3017
3018 typedef struct _ATOM_FIRMWARE_INFO_V1_3
3019 {
3020 ATOM_COMMON_TABLE_HEADER sHeader;
3021 ULONG ulFirmwareRevision;
3022 ULONG ulDefaultEngineClock;
3023 ULONG ulDefaultMemoryClock;
3024 ULONG ulDriverTargetEngineClock;
3025 ULONG ulDriverTargetMemoryClock;
3026 ULONG ulMaxEngineClockPLL_Output;
3027 ULONG ulMaxMemoryClockPLL_Output;
3028 ULONG ulMaxPixelClockPLL_Output;
3029 ULONG ulASICMaxEngineClock;
3030 ULONG ulASICMaxMemoryClock;
3031 UCHAR ucASICMaxTemperature;
3032 UCHAR ucMinAllowedBL_Level;
3033 UCHAR ucPadding[2];
3034 ULONG aulReservedForBIOS;
3035 ULONG ul3DAccelerationEngineClock;
3036 ULONG ulMinPixelClockPLL_Output;
3037 USHORT usMinEngineClockPLL_Input;
3038 USHORT usMaxEngineClockPLL_Input;
3039 USHORT usMinEngineClockPLL_Output;
3040 USHORT usMinMemoryClockPLL_Input;
3041 USHORT usMaxMemoryClockPLL_Input;
3042 USHORT usMinMemoryClockPLL_Output;
3043 USHORT usMaxPixelClock;
3044 USHORT usMinPixelClockPLL_Input;
3045 USHORT usMaxPixelClockPLL_Input;
3046 USHORT usMinPixelClockPLL_Output;
3047 ATOM_FIRMWARE_CAPABILITY_ACCESS usFirmwareCapability;
3048 USHORT usReferenceClock;
3049 USHORT usPM_RTS_Location;
3050 UCHAR ucPM_RTS_StreamSize;
3051 UCHAR ucDesign_ID;
3052 UCHAR ucMemoryModule_ID;
3053 }ATOM_FIRMWARE_INFO_V1_3;
3054
3055 typedef struct _ATOM_FIRMWARE_INFO_V1_4
3056 {
3057 ATOM_COMMON_TABLE_HEADER sHeader;
3058 ULONG ulFirmwareRevision;
3059 ULONG ulDefaultEngineClock;
3060 ULONG ulDefaultMemoryClock;
3061 ULONG ulDriverTargetEngineClock;
3062 ULONG ulDriverTargetMemoryClock;
3063 ULONG ulMaxEngineClockPLL_Output;
3064 ULONG ulMaxMemoryClockPLL_Output;
3065 ULONG ulMaxPixelClockPLL_Output;
3066 ULONG ulASICMaxEngineClock;
3067 ULONG ulASICMaxMemoryClock;
3068 UCHAR ucASICMaxTemperature;
3069 UCHAR ucMinAllowedBL_Level;
3070 USHORT usBootUpVDDCVoltage;
3071 USHORT usLcdMinPixelClockPLL_Output;
3072 USHORT usLcdMaxPixelClockPLL_Output;
3073 ULONG ul3DAccelerationEngineClock;
3074 ULONG ulMinPixelClockPLL_Output;
3075 USHORT usMinEngineClockPLL_Input;
3076 USHORT usMaxEngineClockPLL_Input;
3077 USHORT usMinEngineClockPLL_Output;
3078 USHORT usMinMemoryClockPLL_Input;
3079 USHORT usMaxMemoryClockPLL_Input;
3080 USHORT usMinMemoryClockPLL_Output;
3081 USHORT usMaxPixelClock;
3082 USHORT usMinPixelClockPLL_Input;
3083 USHORT usMaxPixelClockPLL_Input;
3084 USHORT usMinPixelClockPLL_Output;
3085 ATOM_FIRMWARE_CAPABILITY_ACCESS usFirmwareCapability;
3086 USHORT usReferenceClock;
3087 USHORT usPM_RTS_Location;
3088 UCHAR ucPM_RTS_StreamSize;
3089 UCHAR ucDesign_ID;
3090 UCHAR ucMemoryModule_ID;
3091 }ATOM_FIRMWARE_INFO_V1_4;
3092
3093
3094 typedef struct _ATOM_FIRMWARE_INFO_V2_1
3095 {
3096 ATOM_COMMON_TABLE_HEADER sHeader;
3097 ULONG ulFirmwareRevision;
3098 ULONG ulDefaultEngineClock;
3099 ULONG ulDefaultMemoryClock;
3100 ULONG ulReserved1;
3101 ULONG ulReserved2;
3102 ULONG ulMaxEngineClockPLL_Output;
3103 ULONG ulMaxMemoryClockPLL_Output;
3104 ULONG ulMaxPixelClockPLL_Output;
3105 ULONG ulBinaryAlteredInfo;
3106 ULONG ulDefaultDispEngineClkFreq;
3107 UCHAR ucReserved1;
3108 UCHAR ucMinAllowedBL_Level;
3109 USHORT usBootUpVDDCVoltage;
3110 USHORT usLcdMinPixelClockPLL_Output;
3111 USHORT usLcdMaxPixelClockPLL_Output;
3112 ULONG ulReserved4;
3113 ULONG ulMinPixelClockPLL_Output;
3114 USHORT usMinEngineClockPLL_Input;
3115 USHORT usMaxEngineClockPLL_Input;
3116 USHORT usMinEngineClockPLL_Output;
3117 USHORT usMinMemoryClockPLL_Input;
3118 USHORT usMaxMemoryClockPLL_Input;
3119 USHORT usMinMemoryClockPLL_Output;
3120 USHORT usMaxPixelClock;
3121 USHORT usMinPixelClockPLL_Input;
3122 USHORT usMaxPixelClockPLL_Input;
3123 USHORT usMinPixelClockPLL_Output;
3124 ATOM_FIRMWARE_CAPABILITY_ACCESS usFirmwareCapability;
3125 USHORT usCoreReferenceClock;
3126 USHORT usMemoryReferenceClock;
3127 USHORT usUniphyDPModeExtClkFreq;
3128 UCHAR ucMemoryModule_ID;
3129 UCHAR ucReserved4[3];
3130
3131 }ATOM_FIRMWARE_INFO_V2_1;
3132
3133
3134
3135
3136
3137 typedef struct _PRODUCT_BRANDING
3138 {
3139 UCHAR ucEMBEDDED_CAP:2;
3140 UCHAR ucReserved:2;
3141 UCHAR ucBRANDING_ID:4;
3142 }PRODUCT_BRANDING;
3143
3144 typedef struct _ATOM_FIRMWARE_INFO_V2_2
3145 {
3146 ATOM_COMMON_TABLE_HEADER sHeader;
3147 ULONG ulFirmwareRevision;
3148 ULONG ulDefaultEngineClock;
3149 ULONG ulDefaultMemoryClock;
3150 ULONG ulSPLL_OutputFreq;
3151 ULONG ulGPUPLL_OutputFreq;
3152 ULONG ulReserved1;
3153 ULONG ulReserved2;
3154 ULONG ulMaxPixelClockPLL_Output;
3155 ULONG ulBinaryAlteredInfo;
3156 ULONG ulDefaultDispEngineClkFreq;
3157 UCHAR ucReserved3;
3158 UCHAR ucMinAllowedBL_Level;
3159 USHORT usBootUpVDDCVoltage;
3160 USHORT usLcdMinPixelClockPLL_Output;
3161 USHORT usLcdMaxPixelClockPLL_Output;
3162 ULONG ulReserved4;
3163 ULONG ulMinPixelClockPLL_Output;
3164 UCHAR ucRemoteDisplayConfig;
3165 UCHAR ucReserved5[3];
3166 ULONG ulReserved6;
3167 ULONG ulReserved7;
3168 USHORT usReserved11;
3169 USHORT usMinPixelClockPLL_Input;
3170 USHORT usMaxPixelClockPLL_Input;
3171 USHORT usBootUpVDDCIVoltage;
3172 ATOM_FIRMWARE_CAPABILITY_ACCESS usFirmwareCapability;
3173 USHORT usCoreReferenceClock;
3174 USHORT usMemoryReferenceClock;
3175 USHORT usUniphyDPModeExtClkFreq;
3176 UCHAR ucMemoryModule_ID;
3177 UCHAR ucCoolingSolution_ID;
3178 PRODUCT_BRANDING ucProductBranding;
3179 UCHAR ucReserved9;
3180 USHORT usBootUpMVDDCVoltage;
3181 USHORT usBootUpVDDGFXVoltage;
3182 ULONG ulReserved10[3];
3183 }ATOM_FIRMWARE_INFO_V2_2;
3184
3185 #define ATOM_FIRMWARE_INFO_LAST ATOM_FIRMWARE_INFO_V2_2
3186
3187
3188
3189 #define REMOTE_DISPLAY_DISABLE 0x00
3190 #define REMOTE_DISPLAY_ENABLE 0x01
3191
3192
3193
3194
3195 #define IGP_CAP_FLAG_DYNAMIC_CLOCK_EN 0x2
3196 #define IGP_CAP_FLAG_AC_CARD 0x4
3197 #define IGP_CAP_FLAG_SDVO_CARD 0x8
3198 #define IGP_CAP_FLAG_POSTDIV_BY_2_MODE 0x10
3199
3200 typedef struct _ATOM_INTEGRATED_SYSTEM_INFO
3201 {
3202 ATOM_COMMON_TABLE_HEADER sHeader;
3203 ULONG ulBootUpEngineClock;
3204 ULONG ulBootUpMemoryClock;
3205 ULONG ulMaxSystemMemoryClock;
3206 ULONG ulMinSystemMemoryClock;
3207 UCHAR ucNumberOfCyclesInPeriodHi;
3208 UCHAR ucLCDTimingSel;
3209 USHORT usReserved1;
3210 USHORT usInterNBVoltageLow;
3211 USHORT usInterNBVoltageHigh;
3212 ULONG ulReserved[2];
3213
3214 USHORT usFSBClock;
3215 USHORT usCapabilityFlag;
3216
3217
3218 USHORT usPCIENBCfgReg7;
3219 USHORT usK8MemoryClock;
3220 USHORT usK8SyncStartDelay;
3221 USHORT usK8DataReturnTime;
3222 UCHAR ucMaxNBVoltage;
3223 UCHAR ucMinNBVoltage;
3224 UCHAR ucMemoryType;
3225 UCHAR ucNumberOfCyclesInPeriod;
3226 UCHAR ucStartingPWM_HighTime;
3227 UCHAR ucHTLinkWidth;
3228 UCHAR ucMaxNBVoltageHigh;
3229 UCHAR ucMinNBVoltageHigh;
3230 }ATOM_INTEGRATED_SYSTEM_INFO;
3231
3232
3233
3234
3235
3236
3237
3238
3239
3240
3241
3242
3243
3244
3245
3246
3247
3248
3249
3250
3251
3252
3253
3254
3255
3256
3257
3258
3259
3260
3261
3262
3263
3264
3265
3266
3267
3268
3269
3270
3271
3272 typedef struct _ATOM_INTEGRATED_SYSTEM_INFO_V2
3273 {
3274 ATOM_COMMON_TABLE_HEADER sHeader;
3275 ULONG ulBootUpEngineClock;
3276 ULONG ulReserved1[2];
3277 ULONG ulBootUpUMAClock;
3278 ULONG ulBootUpSidePortClock;
3279 ULONG ulMinSidePortClock;
3280 ULONG ulReserved2[6];
3281 ULONG ulSystemConfig;
3282 ULONG ulBootUpReqDisplayVector;
3283 ULONG ulOtherDisplayMisc;
3284 ULONG ulDDISlot1Config;
3285 ULONG ulDDISlot2Config;
3286 UCHAR ucMemoryType;
3287 UCHAR ucUMAChannelNumber;
3288 UCHAR ucDockingPinBit;
3289 UCHAR ucDockingPinPolarity;
3290 ULONG ulDockingPinCFGInfo;
3291 ULONG ulCPUCapInfo;
3292 USHORT usNumberOfCyclesInPeriod;
3293 USHORT usMaxNBVoltage;
3294 USHORT usMinNBVoltage;
3295 USHORT usBootUpNBVoltage;
3296 ULONG ulHTLinkFreq;
3297 USHORT usMinHTLinkWidth;
3298 USHORT usMaxHTLinkWidth;
3299 USHORT usUMASyncStartDelay;
3300 USHORT usUMADataReturnTime;
3301 USHORT usLinkStatusZeroTime;
3302 USHORT usDACEfuse;
3303 ULONG ulHighVoltageHTLinkFreq;
3304 ULONG ulLowVoltageHTLinkFreq;
3305 USHORT usMaxUpStreamHTLinkWidth;
3306 USHORT usMaxDownStreamHTLinkWidth;
3307 USHORT usMinUpStreamHTLinkWidth;
3308 USHORT usMinDownStreamHTLinkWidth;
3309 USHORT usFirmwareVersion;
3310 USHORT usFullT0Time;
3311 ULONG ulReserved3[96];
3312 }ATOM_INTEGRATED_SYSTEM_INFO_V2;
3313
3314
3315
3316
3317
3318
3319
3320
3321
3322
3323
3324
3325
3326
3327
3328
3329
3330
3331
3332
3333
3334
3335
3336
3337
3338
3339
3340
3341
3342
3343
3344
3345
3346
3347
3348
3349
3350
3351
3352
3353
3354
3355
3356
3357
3358
3359
3360
3361
3362
3363
3364
3365
3366
3367
3368
3369
3370
3371
3372
3373
3374
3375
3376
3377
3378
3379
3380
3381
3382
3383
3384
3385
3386
3387
3388
3389
3390
3391
3392
3393
3394
3395
3396
3397
3398
3399
3400
3401
3402
3403
3404
3405
3406
3407
3408
3409
3410 #define INTEGRATED_SYSTEM_INFO__UNKNOWN_CPU 0
3411 #define INTEGRATED_SYSTEM_INFO__AMD_CPU__GRIFFIN 1
3412 #define INTEGRATED_SYSTEM_INFO__AMD_CPU__GREYHOUND 2
3413 #define INTEGRATED_SYSTEM_INFO__AMD_CPU__K8 3
3414 #define INTEGRATED_SYSTEM_INFO__AMD_CPU__PHARAOH 4
3415 #define INTEGRATED_SYSTEM_INFO__AMD_CPU__OROCHI 5
3416
3417 #define INTEGRATED_SYSTEM_INFO__AMD_CPU__MAX_CODE INTEGRATED_SYSTEM_INFO__AMD_CPU__OROCHI
3418
3419 #define SYSTEM_CONFIG_POWEREXPRESS_ENABLE 0x00000001
3420 #define SYSTEM_CONFIG_RUN_AT_OVERDRIVE_ENGINE 0x00000002
3421 #define SYSTEM_CONFIG_USE_PWM_ON_VOLTAGE 0x00000004
3422 #define SYSTEM_CONFIG_PERFORMANCE_POWERSTATE_ONLY 0x00000008
3423 #define SYSTEM_CONFIG_CLMC_ENABLED 0x00000010
3424 #define SYSTEM_CONFIG_CDLW_ENABLED 0x00000020
3425 #define SYSTEM_CONFIG_HIGH_VOLTAGE_REQUESTED 0x00000040
3426 #define SYSTEM_CONFIG_CLMC_HYBRID_MODE_ENABLED 0x00000080
3427 #define SYSTEM_CONFIG_CDLF_ENABLED 0x00000100
3428 #define SYSTEM_CONFIG_DLL_SHUTDOWN_ENABLED 0x00000200
3429
3430 #define IGP_DDI_SLOT_LANE_CONFIG_MASK 0x000000FF
3431
3432 #define b0IGP_DDI_SLOT_LANE_MAP_MASK 0x0F
3433 #define b0IGP_DDI_SLOT_DOCKING_LANE_MAP_MASK 0xF0
3434 #define b0IGP_DDI_SLOT_CONFIG_LANE_0_3 0x01
3435 #define b0IGP_DDI_SLOT_CONFIG_LANE_4_7 0x02
3436 #define b0IGP_DDI_SLOT_CONFIG_LANE_8_11 0x04
3437 #define b0IGP_DDI_SLOT_CONFIG_LANE_12_15 0x08
3438
3439 #define IGP_DDI_SLOT_ATTRIBUTE_MASK 0x0000FF00
3440 #define IGP_DDI_SLOT_CONFIG_REVERSED 0x00000100
3441 #define b1IGP_DDI_SLOT_CONFIG_REVERSED 0x01
3442
3443 #define IGP_DDI_SLOT_CONNECTOR_TYPE_MASK 0x00FF0000
3444
3445
3446 typedef struct _ATOM_INTEGRATED_SYSTEM_INFO_V5
3447 {
3448 ATOM_COMMON_TABLE_HEADER sHeader;
3449 ULONG ulBootUpEngineClock;
3450 ULONG ulDentistVCOFreq;
3451 ULONG ulLClockFreq;
3452 ULONG ulBootUpUMAClock;
3453 ULONG ulReserved1[8];
3454 ULONG ulBootUpReqDisplayVector;
3455 ULONG ulOtherDisplayMisc;
3456 ULONG ulReserved2[4];
3457 ULONG ulSystemConfig;
3458 ULONG ulCPUCapInfo;
3459 USHORT usMaxNBVoltage;
3460 USHORT usMinNBVoltage;
3461 USHORT usBootUpNBVoltage;
3462 UCHAR ucHtcTmpLmt;
3463 UCHAR ucTjOffset;
3464 ULONG ulReserved3[4];
3465 ULONG ulDDISlot1Config;
3466 ULONG ulDDISlot2Config;
3467 ULONG ulDDISlot3Config;
3468 ULONG ulDDISlot4Config;
3469 ULONG ulReserved4[4];
3470 UCHAR ucMemoryType;
3471 UCHAR ucUMAChannelNumber;
3472 USHORT usReserved;
3473 ULONG ulReserved5[4];
3474 ULONG ulCSR_M3_ARB_CNTL_DEFAULT[10];
3475 ULONG ulCSR_M3_ARB_CNTL_UVD[10];
3476 ULONG ulCSR_M3_ARB_CNTL_FS3D[10];
3477 ULONG ulReserved6[61];
3478 }ATOM_INTEGRATED_SYSTEM_INFO_V5;
3479
3480
3481
3482
3483
3484
3485 typedef struct _ATOM_GPU_VIRTUALIZATION_INFO_V2_1
3486 {
3487 ATOM_COMMON_TABLE_HEADER sHeader;
3488 ULONG ulMCUcodeRomStartAddr;
3489 ULONG ulMCUcodeLength;
3490 ULONG ulSMCUcodeRomStartAddr;
3491 ULONG ulSMCUcodeLength;
3492 ULONG ulRLCVUcodeRomStartAddr;
3493 ULONG ulRLCVUcodeLength;
3494 ULONG ulTOCUcodeStartAddr;
3495 ULONG ulTOCUcodeLength;
3496 ULONG ulSMCPatchTableStartAddr;
3497 ULONG ulSmcPatchTableLength;
3498 ULONG ulSystemFlag;
3499 }ATOM_GPU_VIRTUALIZATION_INFO_V2_1;
3500
3501
3502 #define ATOM_CRT_INT_ENCODER1_INDEX 0x00000000
3503 #define ATOM_LCD_INT_ENCODER1_INDEX 0x00000001
3504 #define ATOM_TV_INT_ENCODER1_INDEX 0x00000002
3505 #define ATOM_DFP_INT_ENCODER1_INDEX 0x00000003
3506 #define ATOM_CRT_INT_ENCODER2_INDEX 0x00000004
3507 #define ATOM_LCD_EXT_ENCODER1_INDEX 0x00000005
3508 #define ATOM_TV_EXT_ENCODER1_INDEX 0x00000006
3509 #define ATOM_DFP_EXT_ENCODER1_INDEX 0x00000007
3510 #define ATOM_CV_INT_ENCODER1_INDEX 0x00000008
3511 #define ATOM_DFP_INT_ENCODER2_INDEX 0x00000009
3512 #define ATOM_CRT_EXT_ENCODER1_INDEX 0x0000000A
3513 #define ATOM_CV_EXT_ENCODER1_INDEX 0x0000000B
3514 #define ATOM_DFP_INT_ENCODER3_INDEX 0x0000000C
3515 #define ATOM_DFP_INT_ENCODER4_INDEX 0x0000000D
3516
3517
3518 #define ASIC_INT_DAC1_ENCODER_ID 0x00
3519 #define ASIC_INT_TV_ENCODER_ID 0x02
3520 #define ASIC_INT_DIG1_ENCODER_ID 0x03
3521 #define ASIC_INT_DAC2_ENCODER_ID 0x04
3522 #define ASIC_EXT_TV_ENCODER_ID 0x06
3523 #define ASIC_INT_DVO_ENCODER_ID 0x07
3524 #define ASIC_INT_DIG2_ENCODER_ID 0x09
3525 #define ASIC_EXT_DIG_ENCODER_ID 0x05
3526 #define ASIC_EXT_DIG2_ENCODER_ID 0x08
3527 #define ASIC_INT_DIG3_ENCODER_ID 0x0a
3528 #define ASIC_INT_DIG4_ENCODER_ID 0x0b
3529 #define ASIC_INT_DIG5_ENCODER_ID 0x0c
3530 #define ASIC_INT_DIG6_ENCODER_ID 0x0d
3531 #define ASIC_INT_DIG7_ENCODER_ID 0x0e
3532
3533
3534 #define ATOM_ANALOG_ENCODER 0
3535 #define ATOM_DIGITAL_ENCODER 1
3536 #define ATOM_DP_ENCODER 2
3537
3538 #define ATOM_ENCODER_ENUM_MASK 0x70
3539 #define ATOM_ENCODER_ENUM_ID1 0x00
3540 #define ATOM_ENCODER_ENUM_ID2 0x10
3541 #define ATOM_ENCODER_ENUM_ID3 0x20
3542 #define ATOM_ENCODER_ENUM_ID4 0x30
3543 #define ATOM_ENCODER_ENUM_ID5 0x40
3544 #define ATOM_ENCODER_ENUM_ID6 0x50
3545
3546 #define ATOM_DEVICE_CRT1_INDEX 0x00000000
3547 #define ATOM_DEVICE_LCD1_INDEX 0x00000001
3548 #define ATOM_DEVICE_TV1_INDEX 0x00000002
3549 #define ATOM_DEVICE_DFP1_INDEX 0x00000003
3550 #define ATOM_DEVICE_CRT2_INDEX 0x00000004
3551 #define ATOM_DEVICE_LCD2_INDEX 0x00000005
3552 #define ATOM_DEVICE_DFP6_INDEX 0x00000006
3553 #define ATOM_DEVICE_DFP2_INDEX 0x00000007
3554 #define ATOM_DEVICE_CV_INDEX 0x00000008
3555 #define ATOM_DEVICE_DFP3_INDEX 0x00000009
3556 #define ATOM_DEVICE_DFP4_INDEX 0x0000000A
3557 #define ATOM_DEVICE_DFP5_INDEX 0x0000000B
3558
3559 #define ATOM_DEVICE_RESERVEDC_INDEX 0x0000000C
3560 #define ATOM_DEVICE_RESERVEDD_INDEX 0x0000000D
3561 #define ATOM_DEVICE_RESERVEDE_INDEX 0x0000000E
3562 #define ATOM_DEVICE_RESERVEDF_INDEX 0x0000000F
3563 #define ATOM_MAX_SUPPORTED_DEVICE_INFO (ATOM_DEVICE_DFP3_INDEX+1)
3564 #define ATOM_MAX_SUPPORTED_DEVICE_INFO_2 ATOM_MAX_SUPPORTED_DEVICE_INFO
3565 #define ATOM_MAX_SUPPORTED_DEVICE_INFO_3 (ATOM_DEVICE_DFP5_INDEX + 1 )
3566
3567 #define ATOM_MAX_SUPPORTED_DEVICE (ATOM_DEVICE_RESERVEDF_INDEX+1)
3568
3569 #define ATOM_DEVICE_CRT1_SUPPORT (0x1L << ATOM_DEVICE_CRT1_INDEX )
3570 #define ATOM_DEVICE_LCD1_SUPPORT (0x1L << ATOM_DEVICE_LCD1_INDEX )
3571 #define ATOM_DEVICE_TV1_SUPPORT (0x1L << ATOM_DEVICE_TV1_INDEX )
3572 #define ATOM_DEVICE_DFP1_SUPPORT (0x1L << ATOM_DEVICE_DFP1_INDEX )
3573 #define ATOM_DEVICE_CRT2_SUPPORT (0x1L << ATOM_DEVICE_CRT2_INDEX )
3574 #define ATOM_DEVICE_LCD2_SUPPORT (0x1L << ATOM_DEVICE_LCD2_INDEX )
3575 #define ATOM_DEVICE_DFP6_SUPPORT (0x1L << ATOM_DEVICE_DFP6_INDEX )
3576 #define ATOM_DEVICE_DFP2_SUPPORT (0x1L << ATOM_DEVICE_DFP2_INDEX )
3577 #define ATOM_DEVICE_CV_SUPPORT (0x1L << ATOM_DEVICE_CV_INDEX )
3578 #define ATOM_DEVICE_DFP3_SUPPORT (0x1L << ATOM_DEVICE_DFP3_INDEX )
3579 #define ATOM_DEVICE_DFP4_SUPPORT (0x1L << ATOM_DEVICE_DFP4_INDEX )
3580 #define ATOM_DEVICE_DFP5_SUPPORT (0x1L << ATOM_DEVICE_DFP5_INDEX )
3581
3582
3583 #define ATOM_DEVICE_CRT_SUPPORT (ATOM_DEVICE_CRT1_SUPPORT | ATOM_DEVICE_CRT2_SUPPORT)
3584 #define ATOM_DEVICE_DFP_SUPPORT (ATOM_DEVICE_DFP1_SUPPORT | ATOM_DEVICE_DFP2_SUPPORT | ATOM_DEVICE_DFP3_SUPPORT | ATOM_DEVICE_DFP4_SUPPORT | ATOM_DEVICE_DFP5_SUPPORT | ATOM_DEVICE_DFP6_SUPPORT)
3585 #define ATOM_DEVICE_TV_SUPPORT ATOM_DEVICE_TV1_SUPPORT
3586 #define ATOM_DEVICE_LCD_SUPPORT (ATOM_DEVICE_LCD1_SUPPORT | ATOM_DEVICE_LCD2_SUPPORT)
3587
3588 #define ATOM_DEVICE_CONNECTOR_TYPE_MASK 0x000000F0
3589 #define ATOM_DEVICE_CONNECTOR_TYPE_SHIFT 0x00000004
3590 #define ATOM_DEVICE_CONNECTOR_VGA 0x00000001
3591 #define ATOM_DEVICE_CONNECTOR_DVI_I 0x00000002
3592 #define ATOM_DEVICE_CONNECTOR_DVI_D 0x00000003
3593 #define ATOM_DEVICE_CONNECTOR_DVI_A 0x00000004
3594 #define ATOM_DEVICE_CONNECTOR_SVIDEO 0x00000005
3595 #define ATOM_DEVICE_CONNECTOR_COMPOSITE 0x00000006
3596 #define ATOM_DEVICE_CONNECTOR_LVDS 0x00000007
3597 #define ATOM_DEVICE_CONNECTOR_DIGI_LINK 0x00000008
3598 #define ATOM_DEVICE_CONNECTOR_SCART 0x00000009
3599 #define ATOM_DEVICE_CONNECTOR_HDMI_TYPE_A 0x0000000A
3600 #define ATOM_DEVICE_CONNECTOR_HDMI_TYPE_B 0x0000000B
3601 #define ATOM_DEVICE_CONNECTOR_CASE_1 0x0000000E
3602 #define ATOM_DEVICE_CONNECTOR_DISPLAYPORT 0x0000000F
3603
3604
3605 #define ATOM_DEVICE_DAC_INFO_MASK 0x0000000F
3606 #define ATOM_DEVICE_DAC_INFO_SHIFT 0x00000000
3607 #define ATOM_DEVICE_DAC_INFO_NODAC 0x00000000
3608 #define ATOM_DEVICE_DAC_INFO_DACA 0x00000001
3609 #define ATOM_DEVICE_DAC_INFO_DACB 0x00000002
3610 #define ATOM_DEVICE_DAC_INFO_EXDAC 0x00000003
3611
3612 #define ATOM_DEVICE_I2C_ID_NOI2C 0x00000000
3613
3614 #define ATOM_DEVICE_I2C_LINEMUX_MASK 0x0000000F
3615 #define ATOM_DEVICE_I2C_LINEMUX_SHIFT 0x00000000
3616
3617 #define ATOM_DEVICE_I2C_ID_MASK 0x00000070
3618 #define ATOM_DEVICE_I2C_ID_SHIFT 0x00000004
3619 #define ATOM_DEVICE_I2C_ID_IS_FOR_NON_MM_USE 0x00000001
3620 #define ATOM_DEVICE_I2C_ID_IS_FOR_MM_USE 0x00000002
3621 #define ATOM_DEVICE_I2C_ID_IS_FOR_SDVO_USE 0x00000003
3622 #define ATOM_DEVICE_I2C_ID_IS_FOR_DAC_SCL 0x00000004
3623
3624 #define ATOM_DEVICE_I2C_HARDWARE_CAP_MASK 0x00000080
3625 #define ATOM_DEVICE_I2C_HARDWARE_CAP_SHIFT 0x00000007
3626 #define ATOM_DEVICE_USES_SOFTWARE_ASSISTED_I2C 0x00000000
3627 #define ATOM_DEVICE_USES_HARDWARE_ASSISTED_I2C 0x00000001
3628
3629
3630
3631
3632
3633
3634
3635
3636
3637
3638
3639
3640
3641
3642
3643
3644
3645
3646
3647
3648
3649
3650
3651
3652
3653
3654
3655
3656
3657
3658 typedef struct _ATOM_I2C_ID_CONFIG
3659 {
3660 #if ATOM_BIG_ENDIAN
3661 UCHAR bfHW_Capable:1;
3662 UCHAR bfHW_EngineID:3;
3663 UCHAR bfI2C_LineMux:4;
3664 #else
3665 UCHAR bfI2C_LineMux:4;
3666 UCHAR bfHW_EngineID:3;
3667 UCHAR bfHW_Capable:1;
3668 #endif
3669 }ATOM_I2C_ID_CONFIG;
3670
3671 typedef union _ATOM_I2C_ID_CONFIG_ACCESS
3672 {
3673 ATOM_I2C_ID_CONFIG sbfAccess;
3674 UCHAR ucAccess;
3675 }ATOM_I2C_ID_CONFIG_ACCESS;
3676
3677
3678
3679
3680
3681 typedef struct _ATOM_GPIO_I2C_ASSIGMENT
3682 {
3683 USHORT usClkMaskRegisterIndex;
3684 USHORT usClkEnRegisterIndex;
3685 USHORT usClkY_RegisterIndex;
3686 USHORT usClkA_RegisterIndex;
3687 USHORT usDataMaskRegisterIndex;
3688 USHORT usDataEnRegisterIndex;
3689 USHORT usDataY_RegisterIndex;
3690 USHORT usDataA_RegisterIndex;
3691 ATOM_I2C_ID_CONFIG_ACCESS sucI2cId;
3692 UCHAR ucClkMaskShift;
3693 UCHAR ucClkEnShift;
3694 UCHAR ucClkY_Shift;
3695 UCHAR ucClkA_Shift;
3696 UCHAR ucDataMaskShift;
3697 UCHAR ucDataEnShift;
3698 UCHAR ucDataY_Shift;
3699 UCHAR ucDataA_Shift;
3700 UCHAR ucReserved1;
3701 UCHAR ucReserved2;
3702 }ATOM_GPIO_I2C_ASSIGMENT;
3703
3704 typedef struct _ATOM_GPIO_I2C_INFO
3705 {
3706 ATOM_COMMON_TABLE_HEADER sHeader;
3707 ATOM_GPIO_I2C_ASSIGMENT asGPIO_Info[ATOM_MAX_SUPPORTED_DEVICE];
3708 }ATOM_GPIO_I2C_INFO;
3709
3710
3711
3712
3713
3714 #ifndef _H2INC
3715
3716
3717 typedef struct _ATOM_MODE_MISC_INFO
3718 {
3719 #if ATOM_BIG_ENDIAN
3720 USHORT Reserved:6;
3721 USHORT RGB888:1;
3722 USHORT DoubleClock:1;
3723 USHORT Interlace:1;
3724 USHORT CompositeSync:1;
3725 USHORT V_ReplicationBy2:1;
3726 USHORT H_ReplicationBy2:1;
3727 USHORT VerticalCutOff:1;
3728 USHORT VSyncPolarity:1;
3729 USHORT HSyncPolarity:1;
3730 USHORT HorizontalCutOff:1;
3731 #else
3732 USHORT HorizontalCutOff:1;
3733 USHORT HSyncPolarity:1;
3734 USHORT VSyncPolarity:1;
3735 USHORT VerticalCutOff:1;
3736 USHORT H_ReplicationBy2:1;
3737 USHORT V_ReplicationBy2:1;
3738 USHORT CompositeSync:1;
3739 USHORT Interlace:1;
3740 USHORT DoubleClock:1;
3741 USHORT RGB888:1;
3742 USHORT Reserved:6;
3743 #endif
3744 }ATOM_MODE_MISC_INFO;
3745
3746 typedef union _ATOM_MODE_MISC_INFO_ACCESS
3747 {
3748 ATOM_MODE_MISC_INFO sbfAccess;
3749 USHORT usAccess;
3750 }ATOM_MODE_MISC_INFO_ACCESS;
3751
3752 #else
3753
3754 typedef union _ATOM_MODE_MISC_INFO_ACCESS
3755 {
3756 USHORT usAccess;
3757 }ATOM_MODE_MISC_INFO_ACCESS;
3758
3759 #endif
3760
3761
3762 #define ATOM_H_CUTOFF 0x01
3763 #define ATOM_HSYNC_POLARITY 0x02
3764 #define ATOM_VSYNC_POLARITY 0x04
3765 #define ATOM_V_CUTOFF 0x08
3766 #define ATOM_H_REPLICATIONBY2 0x10
3767 #define ATOM_V_REPLICATIONBY2 0x20
3768 #define ATOM_COMPOSITESYNC 0x40
3769 #define ATOM_INTERLACE 0x80
3770 #define ATOM_DOUBLE_CLOCK_MODE 0x100
3771 #define ATOM_RGB888_MODE 0x200
3772
3773
3774 #define ATOM_REFRESH_43 43
3775 #define ATOM_REFRESH_47 47
3776 #define ATOM_REFRESH_56 56
3777 #define ATOM_REFRESH_60 60
3778 #define ATOM_REFRESH_65 65
3779 #define ATOM_REFRESH_70 70
3780 #define ATOM_REFRESH_72 72
3781 #define ATOM_REFRESH_75 75
3782 #define ATOM_REFRESH_85 85
3783
3784
3785
3786
3787
3788
3789
3790
3791
3792
3793
3794
3795
3796
3797
3798
3799 typedef struct _SET_CRTC_USING_DTD_TIMING_PARAMETERS
3800 {
3801 USHORT usH_Size;
3802 USHORT usH_Blanking_Time;
3803 USHORT usV_Size;
3804 USHORT usV_Blanking_Time;
3805 USHORT usH_SyncOffset;
3806 USHORT usH_SyncWidth;
3807 USHORT usV_SyncOffset;
3808 USHORT usV_SyncWidth;
3809 ATOM_MODE_MISC_INFO_ACCESS susModeMiscInfo;
3810 UCHAR ucH_Border;
3811 UCHAR ucV_Border;
3812 UCHAR ucCRTC;
3813 UCHAR ucPadding[3];
3814 }SET_CRTC_USING_DTD_TIMING_PARAMETERS;
3815
3816
3817
3818
3819 typedef struct _SET_CRTC_TIMING_PARAMETERS
3820 {
3821 USHORT usH_Total;
3822 USHORT usH_Disp;
3823 USHORT usH_SyncStart;
3824 USHORT usH_SyncWidth;
3825 USHORT usV_Total;
3826 USHORT usV_Disp;
3827 USHORT usV_SyncStart;
3828 USHORT usV_SyncWidth;
3829 ATOM_MODE_MISC_INFO_ACCESS susModeMiscInfo;
3830 UCHAR ucCRTC;
3831 UCHAR ucOverscanRight;
3832 UCHAR ucOverscanLeft;
3833 UCHAR ucOverscanBottom;
3834 UCHAR ucOverscanTop;
3835 UCHAR ucReserved;
3836 }SET_CRTC_TIMING_PARAMETERS;
3837 #define SET_CRTC_TIMING_PARAMETERS_PS_ALLOCATION SET_CRTC_TIMING_PARAMETERS
3838
3839
3840
3841
3842
3843
3844
3845 typedef struct _ATOM_MODE_TIMING
3846 {
3847 USHORT usCRTC_H_Total;
3848 USHORT usCRTC_H_Disp;
3849 USHORT usCRTC_H_SyncStart;
3850 USHORT usCRTC_H_SyncWidth;
3851 USHORT usCRTC_V_Total;
3852 USHORT usCRTC_V_Disp;
3853 USHORT usCRTC_V_SyncStart;
3854 USHORT usCRTC_V_SyncWidth;
3855 USHORT usPixelClock;
3856 ATOM_MODE_MISC_INFO_ACCESS susModeMiscInfo;
3857 USHORT usCRTC_OverscanRight;
3858 USHORT usCRTC_OverscanLeft;
3859 USHORT usCRTC_OverscanBottom;
3860 USHORT usCRTC_OverscanTop;
3861 USHORT usReserve;
3862 UCHAR ucInternalModeNumber;
3863 UCHAR ucRefreshRate;
3864 }ATOM_MODE_TIMING;
3865
3866 typedef struct _ATOM_DTD_FORMAT
3867 {
3868 USHORT usPixClk;
3869 USHORT usHActive;
3870 USHORT usHBlanking_Time;
3871 USHORT usVActive;
3872 USHORT usVBlanking_Time;
3873 USHORT usHSyncOffset;
3874 USHORT usHSyncWidth;
3875 USHORT usVSyncOffset;
3876 USHORT usVSyncWidth;
3877 USHORT usImageHSize;
3878 USHORT usImageVSize;
3879 UCHAR ucHBorder;
3880 UCHAR ucVBorder;
3881 ATOM_MODE_MISC_INFO_ACCESS susModeMiscInfo;
3882 UCHAR ucInternalModeNumber;
3883 UCHAR ucRefreshRate;
3884 }ATOM_DTD_FORMAT;
3885
3886
3887
3888
3889
3890 #define SUPPORTED_LCD_REFRESHRATE_30Hz 0x0004
3891 #define SUPPORTED_LCD_REFRESHRATE_40Hz 0x0008
3892 #define SUPPORTED_LCD_REFRESHRATE_50Hz 0x0010
3893 #define SUPPORTED_LCD_REFRESHRATE_60Hz 0x0020
3894 #define SUPPORTED_LCD_REFRESHRATE_48Hz 0x0040
3895
3896
3897
3898 typedef struct _ATOM_LVDS_INFO
3899 {
3900 ATOM_COMMON_TABLE_HEADER sHeader;
3901 ATOM_DTD_FORMAT sLCDTiming;
3902 USHORT usModePatchTableOffset;
3903 USHORT usSupportedRefreshRate;
3904 USHORT usOffDelayInMs;
3905 UCHAR ucPowerSequenceDigOntoDEin10Ms;
3906 UCHAR ucPowerSequenceDEtoBLOnin10Ms;
3907 UCHAR ucLVDS_Misc;
3908
3909
3910
3911 UCHAR ucPanelDefaultRefreshRate;
3912 UCHAR ucPanelIdentification;
3913 UCHAR ucSS_Id;
3914 }ATOM_LVDS_INFO;
3915
3916
3917
3918 typedef struct _ATOM_LVDS_INFO_V12
3919 {
3920 ATOM_COMMON_TABLE_HEADER sHeader;
3921 ATOM_DTD_FORMAT sLCDTiming;
3922 USHORT usExtInfoTableOffset;
3923 USHORT usSupportedRefreshRate;
3924 USHORT usOffDelayInMs;
3925 UCHAR ucPowerSequenceDigOntoDEin10Ms;
3926 UCHAR ucPowerSequenceDEtoBLOnin10Ms;
3927 UCHAR ucLVDS_Misc;
3928
3929
3930
3931 UCHAR ucPanelDefaultRefreshRate;
3932 UCHAR ucPanelIdentification;
3933 UCHAR ucSS_Id;
3934 USHORT usLCDVenderID;
3935 USHORT usLCDProductID;
3936 UCHAR ucLCDPanel_SpecialHandlingCap;
3937 UCHAR ucPanelInfoSize;
3938 UCHAR ucReserved[2];
3939 }ATOM_LVDS_INFO_V12;
3940
3941
3942
3943
3944
3945 #define LCDPANEL_CAP_READ_EDID 0x1
3946
3947
3948
3949
3950 #define LCDPANEL_CAP_DRR_SUPPORTED 0x2
3951
3952
3953 #define LCDPANEL_CAP_eDP 0x4
3954
3955
3956
3957
3958
3959
3960
3961
3962
3963
3964
3965
3966
3967 #define PANEL_COLOR_BIT_DEPTH_MASK 0x70
3968
3969
3970 #define PANEL_RANDOM_DITHER 0x80
3971 #define PANEL_RANDOM_DITHER_MASK 0x80
3972
3973 #define ATOM_LVDS_INFO_LAST ATOM_LVDS_INFO_V12
3974
3975
3976 typedef struct _ATOM_LCD_REFRESH_RATE_SUPPORT
3977 {
3978 UCHAR ucSupportedRefreshRate;
3979 UCHAR ucMinRefreshRateForDRR;
3980 }ATOM_LCD_REFRESH_RATE_SUPPORT;
3981
3982
3983
3984
3985
3986
3987
3988 typedef struct _ATOM_LCD_INFO_V13
3989 {
3990 ATOM_COMMON_TABLE_HEADER sHeader;
3991 ATOM_DTD_FORMAT sLCDTiming;
3992 USHORT usExtInfoTableOffset;
3993 union
3994 {
3995 USHORT usSupportedRefreshRate;
3996 ATOM_LCD_REFRESH_RATE_SUPPORT sRefreshRateSupport;
3997 };
3998 ULONG ulReserved0;
3999 UCHAR ucLCD_Misc;
4000
4001
4002
4003
4004
4005 UCHAR ucPanelDefaultRefreshRate;
4006 UCHAR ucPanelIdentification;
4007 UCHAR ucSS_Id;
4008 USHORT usLCDVenderID;
4009 USHORT usLCDProductID;
4010 UCHAR ucLCDPanel_SpecialHandlingCap;
4011
4012
4013
4014
4015 UCHAR ucPanelInfoSize;
4016 USHORT usBacklightPWM;
4017
4018 UCHAR ucPowerSequenceDIGONtoDE_in4Ms;
4019 UCHAR ucPowerSequenceDEtoVARY_BL_in4Ms;
4020 UCHAR ucPowerSequenceVARY_BLtoDE_in4Ms;
4021 UCHAR ucPowerSequenceDEtoDIGON_in4Ms;
4022
4023 UCHAR ucOffDelay_in4Ms;
4024 UCHAR ucPowerSequenceVARY_BLtoBLON_in4Ms;
4025 UCHAR ucPowerSequenceBLONtoVARY_BL_in4Ms;
4026 UCHAR ucReserved1;
4027
4028 UCHAR ucDPCD_eDP_CONFIGURATION_CAP;
4029 UCHAR ucDPCD_MAX_LINK_RATE;
4030 UCHAR ucDPCD_MAX_LANE_COUNT;
4031 UCHAR ucDPCD_MAX_DOWNSPREAD;
4032
4033 USHORT usMaxPclkFreqInSingleLink;
4034 UCHAR uceDPToLVDSRxId;
4035 UCHAR ucLcdReservd;
4036 ULONG ulReserved[2];
4037 }ATOM_LCD_INFO_V13;
4038
4039 #define ATOM_LCD_INFO_LAST ATOM_LCD_INFO_V13
4040
4041
4042 #define ATOM_PANEL_MISC_V13_DUAL 0x00000001
4043 #define ATOM_PANEL_MISC_V13_FPDI 0x00000002
4044 #define ATOM_PANEL_MISC_V13_GREY_LEVEL 0x0000000C
4045 #define ATOM_PANEL_MISC_V13_GREY_LEVEL_SHIFT 2
4046 #define ATOM_PANEL_MISC_V13_COLOR_BIT_DEPTH_MASK 0x70
4047 #define ATOM_PANEL_MISC_V13_6BIT_PER_COLOR 0x10
4048 #define ATOM_PANEL_MISC_V13_8BIT_PER_COLOR 0x20
4049
4050
4051
4052
4053
4054
4055
4056
4057
4058
4059
4060
4061
4062
4063
4064
4065 #define LCDPANEL_CAP_V13_READ_EDID 0x1
4066
4067
4068
4069
4070 #define LCDPANEL_CAP_V13_DRR_SUPPORTED 0x2
4071
4072
4073 #define LCDPANEL_CAP_V13_eDP 0x4
4074
4075
4076 #define eDP_TO_LVDS_RX_DISABLE 0x00
4077 #define eDP_TO_LVDS_COMMON_ID 0x01
4078 #define eDP_TO_LVDS_RT_ID 0x02
4079
4080 typedef struct _ATOM_PATCH_RECORD_MODE
4081 {
4082 UCHAR ucRecordType;
4083 USHORT usHDisp;
4084 USHORT usVDisp;
4085 }ATOM_PATCH_RECORD_MODE;
4086
4087 typedef struct _ATOM_LCD_RTS_RECORD
4088 {
4089 UCHAR ucRecordType;
4090 UCHAR ucRTSValue;
4091 }ATOM_LCD_RTS_RECORD;
4092
4093
4094
4095 typedef struct _ATOM_LCD_MODE_CONTROL_CAP
4096 {
4097 UCHAR ucRecordType;
4098 USHORT usLCDCap;
4099 }ATOM_LCD_MODE_CONTROL_CAP;
4100
4101 #define LCD_MODE_CAP_BL_OFF 1
4102 #define LCD_MODE_CAP_CRTC_OFF 2
4103 #define LCD_MODE_CAP_PANEL_OFF 4
4104
4105
4106 typedef struct _ATOM_FAKE_EDID_PATCH_RECORD
4107 {
4108 UCHAR ucRecordType;
4109 UCHAR ucFakeEDIDLength;
4110 UCHAR ucFakeEDIDString[1];
4111 } ATOM_FAKE_EDID_PATCH_RECORD;
4112
4113 typedef struct _ATOM_PANEL_RESOLUTION_PATCH_RECORD
4114 {
4115 UCHAR ucRecordType;
4116 USHORT usHSize;
4117 USHORT usVSize;
4118 }ATOM_PANEL_RESOLUTION_PATCH_RECORD;
4119
4120 #define LCD_MODE_PATCH_RECORD_MODE_TYPE 1
4121 #define LCD_RTS_RECORD_TYPE 2
4122 #define LCD_CAP_RECORD_TYPE 3
4123 #define LCD_FAKE_EDID_PATCH_RECORD_TYPE 4
4124 #define LCD_PANEL_RESOLUTION_RECORD_TYPE 5
4125 #define LCD_EDID_OFFSET_PATCH_RECORD_TYPE 6
4126 #define ATOM_RECORD_END_TYPE 0xFF
4127
4128
4129
4130
4131
4132 typedef struct _ATOM_SPREAD_SPECTRUM_ASSIGNMENT
4133 {
4134 USHORT usSpreadSpectrumPercentage;
4135 UCHAR ucSpreadSpectrumType;
4136 UCHAR ucSS_Step;
4137 UCHAR ucSS_Delay;
4138 UCHAR ucSS_Id;
4139 UCHAR ucRecommendedRef_Div;
4140 UCHAR ucSS_Range;
4141 }ATOM_SPREAD_SPECTRUM_ASSIGNMENT;
4142
4143 #define ATOM_MAX_SS_ENTRY 16
4144 #define ATOM_DP_SS_ID1 0x0f1
4145 #define ATOM_DP_SS_ID2 0x0f2
4146 #define ATOM_LVLINK_2700MHz_SS_ID 0x0f3
4147 #define ATOM_LVLINK_1620MHz_SS_ID 0x0f4
4148
4149
4150
4151 #define ATOM_SS_DOWN_SPREAD_MODE_MASK 0x00000000
4152 #define ATOM_SS_DOWN_SPREAD_MODE 0x00000000
4153 #define ATOM_SS_CENTRE_SPREAD_MODE_MASK 0x00000001
4154 #define ATOM_SS_CENTRE_SPREAD_MODE 0x00000001
4155 #define ATOM_INTERNAL_SS_MASK 0x00000000
4156 #define ATOM_EXTERNAL_SS_MASK 0x00000002
4157 #define EXEC_SS_STEP_SIZE_SHIFT 2
4158 #define EXEC_SS_DELAY_SHIFT 4
4159 #define ACTIVEDATA_TO_BLON_DELAY_SHIFT 4
4160
4161 typedef struct _ATOM_SPREAD_SPECTRUM_INFO
4162 {
4163 ATOM_COMMON_TABLE_HEADER sHeader;
4164 ATOM_SPREAD_SPECTRUM_ASSIGNMENT asSS_Info[ATOM_MAX_SS_ENTRY];
4165 }ATOM_SPREAD_SPECTRUM_INFO;
4166
4167
4168
4169
4170
4171
4172
4173
4174
4175
4176
4177
4178
4179
4180
4181
4182
4183 #define NTSC_SUPPORT 0x1
4184 #define NTSCJ_SUPPORT 0x2
4185
4186 #define PAL_SUPPORT 0x4
4187 #define PALM_SUPPORT 0x8
4188 #define PALCN_SUPPORT 0x10
4189 #define PALN_SUPPORT 0x20
4190 #define PAL60_SUPPORT 0x40
4191 #define SECAM_SUPPORT 0x80
4192
4193 #define MAX_SUPPORTED_TV_TIMING 2
4194
4195 typedef struct _ATOM_ANALOG_TV_INFO
4196 {
4197 ATOM_COMMON_TABLE_HEADER sHeader;
4198 UCHAR ucTV_SuppportedStandard;
4199 UCHAR ucTV_BootUpDefaultStandard;
4200 UCHAR ucExt_TV_ASIC_ID;
4201 UCHAR ucExt_TV_ASIC_SlaveAddr;
4202 ATOM_DTD_FORMAT aModeTimings[MAX_SUPPORTED_TV_TIMING];
4203 }ATOM_ANALOG_TV_INFO;
4204
4205 typedef struct _ATOM_DPCD_INFO
4206 {
4207 UCHAR ucRevisionNumber;
4208 UCHAR ucMaxLinkRate;
4209 UCHAR ucMaxLane;
4210 UCHAR ucMaxDownSpread;
4211 }ATOM_DPCD_INFO;
4212
4213 #define ATOM_DPCD_MAX_LANE_MASK 0x1F
4214
4215
4216
4217
4218
4219
4220
4221
4222
4223
4224
4225
4226
4227
4228
4229 #define ATOM_EDID_RAW_DATASIZE 256
4230 #define ATOM_HWICON_SURFACE_SIZE 4096
4231 #define ATOM_HWICON_INFOTABLE_SIZE 32
4232 #define MAX_DTD_MODE_IN_VRAM 6
4233 #define ATOM_DTD_MODE_SUPPORT_TBL_SIZE (MAX_DTD_MODE_IN_VRAM*28)
4234 #define ATOM_STD_MODE_SUPPORT_TBL_SIZE 32*8
4235
4236 #define DFP_ENCODER_TYPE_OFFSET (ATOM_EDID_RAW_DATASIZE + ATOM_DTD_MODE_SUPPORT_TBL_SIZE + ATOM_STD_MODE_SUPPORT_TBL_SIZE - 20)
4237 #define ATOM_DP_DPCD_OFFSET (DFP_ENCODER_TYPE_OFFSET + 4 )
4238
4239 #define ATOM_HWICON1_SURFACE_ADDR 0
4240 #define ATOM_HWICON2_SURFACE_ADDR (ATOM_HWICON1_SURFACE_ADDR + ATOM_HWICON_SURFACE_SIZE)
4241 #define ATOM_HWICON_INFOTABLE_ADDR (ATOM_HWICON2_SURFACE_ADDR + ATOM_HWICON_SURFACE_SIZE)
4242 #define ATOM_CRT1_EDID_ADDR (ATOM_HWICON_INFOTABLE_ADDR + ATOM_HWICON_INFOTABLE_SIZE)
4243 #define ATOM_CRT1_DTD_MODE_TBL_ADDR (ATOM_CRT1_EDID_ADDR + ATOM_EDID_RAW_DATASIZE)
4244 #define ATOM_CRT1_STD_MODE_TBL_ADDR (ATOM_CRT1_DTD_MODE_TBL_ADDR + ATOM_DTD_MODE_SUPPORT_TBL_SIZE)
4245
4246 #define ATOM_LCD1_EDID_ADDR (ATOM_CRT1_STD_MODE_TBL_ADDR + ATOM_STD_MODE_SUPPORT_TBL_SIZE)
4247 #define ATOM_LCD1_DTD_MODE_TBL_ADDR (ATOM_LCD1_EDID_ADDR + ATOM_EDID_RAW_DATASIZE)
4248 #define ATOM_LCD1_STD_MODE_TBL_ADDR (ATOM_LCD1_DTD_MODE_TBL_ADDR + ATOM_DTD_MODE_SUPPORT_TBL_SIZE)
4249
4250 #define ATOM_TV1_DTD_MODE_TBL_ADDR (ATOM_LCD1_STD_MODE_TBL_ADDR + ATOM_STD_MODE_SUPPORT_TBL_SIZE)
4251
4252 #define ATOM_DFP1_EDID_ADDR (ATOM_TV1_DTD_MODE_TBL_ADDR + ATOM_DTD_MODE_SUPPORT_TBL_SIZE)
4253 #define ATOM_DFP1_DTD_MODE_TBL_ADDR (ATOM_DFP1_EDID_ADDR + ATOM_EDID_RAW_DATASIZE)
4254 #define ATOM_DFP1_STD_MODE_TBL_ADDR (ATOM_DFP1_DTD_MODE_TBL_ADDR + ATOM_DTD_MODE_SUPPORT_TBL_SIZE)
4255
4256 #define ATOM_CRT2_EDID_ADDR (ATOM_DFP1_STD_MODE_TBL_ADDR + ATOM_STD_MODE_SUPPORT_TBL_SIZE)
4257 #define ATOM_CRT2_DTD_MODE_TBL_ADDR (ATOM_CRT2_EDID_ADDR + ATOM_EDID_RAW_DATASIZE)
4258 #define ATOM_CRT2_STD_MODE_TBL_ADDR (ATOM_CRT2_DTD_MODE_TBL_ADDR + ATOM_DTD_MODE_SUPPORT_TBL_SIZE)
4259
4260 #define ATOM_LCD2_EDID_ADDR (ATOM_CRT2_STD_MODE_TBL_ADDR + ATOM_STD_MODE_SUPPORT_TBL_SIZE)
4261 #define ATOM_LCD2_DTD_MODE_TBL_ADDR (ATOM_LCD2_EDID_ADDR + ATOM_EDID_RAW_DATASIZE)
4262 #define ATOM_LCD2_STD_MODE_TBL_ADDR (ATOM_LCD2_DTD_MODE_TBL_ADDR + ATOM_DTD_MODE_SUPPORT_TBL_SIZE)
4263
4264 #define ATOM_DFP6_EDID_ADDR (ATOM_LCD2_STD_MODE_TBL_ADDR + ATOM_STD_MODE_SUPPORT_TBL_SIZE)
4265 #define ATOM_DFP6_DTD_MODE_TBL_ADDR (ATOM_DFP6_EDID_ADDR + ATOM_EDID_RAW_DATASIZE)
4266 #define ATOM_DFP6_STD_MODE_TBL_ADDR (ATOM_DFP6_DTD_MODE_TBL_ADDR + ATOM_DTD_MODE_SUPPORT_TBL_SIZE)
4267
4268 #define ATOM_DFP2_EDID_ADDR (ATOM_DFP6_STD_MODE_TBL_ADDR + ATOM_STD_MODE_SUPPORT_TBL_SIZE)
4269 #define ATOM_DFP2_DTD_MODE_TBL_ADDR (ATOM_DFP2_EDID_ADDR + ATOM_EDID_RAW_DATASIZE)
4270 #define ATOM_DFP2_STD_MODE_TBL_ADDR (ATOM_DFP2_DTD_MODE_TBL_ADDR + ATOM_DTD_MODE_SUPPORT_TBL_SIZE)
4271
4272 #define ATOM_CV_EDID_ADDR (ATOM_DFP2_STD_MODE_TBL_ADDR + ATOM_STD_MODE_SUPPORT_TBL_SIZE)
4273 #define ATOM_CV_DTD_MODE_TBL_ADDR (ATOM_CV_EDID_ADDR + ATOM_EDID_RAW_DATASIZE)
4274 #define ATOM_CV_STD_MODE_TBL_ADDR (ATOM_CV_DTD_MODE_TBL_ADDR + ATOM_DTD_MODE_SUPPORT_TBL_SIZE)
4275
4276 #define ATOM_DFP3_EDID_ADDR (ATOM_CV_STD_MODE_TBL_ADDR + ATOM_STD_MODE_SUPPORT_TBL_SIZE)
4277 #define ATOM_DFP3_DTD_MODE_TBL_ADDR (ATOM_DFP3_EDID_ADDR + ATOM_EDID_RAW_DATASIZE)
4278 #define ATOM_DFP3_STD_MODE_TBL_ADDR (ATOM_DFP3_DTD_MODE_TBL_ADDR + ATOM_DTD_MODE_SUPPORT_TBL_SIZE)
4279
4280 #define ATOM_DFP4_EDID_ADDR (ATOM_DFP3_STD_MODE_TBL_ADDR + ATOM_STD_MODE_SUPPORT_TBL_SIZE)
4281 #define ATOM_DFP4_DTD_MODE_TBL_ADDR (ATOM_DFP4_EDID_ADDR + ATOM_EDID_RAW_DATASIZE)
4282 #define ATOM_DFP4_STD_MODE_TBL_ADDR (ATOM_DFP4_DTD_MODE_TBL_ADDR + ATOM_DTD_MODE_SUPPORT_TBL_SIZE)
4283
4284 #define ATOM_DFP5_EDID_ADDR (ATOM_DFP4_STD_MODE_TBL_ADDR + ATOM_STD_MODE_SUPPORT_TBL_SIZE)
4285 #define ATOM_DFP5_DTD_MODE_TBL_ADDR (ATOM_DFP5_EDID_ADDR + ATOM_EDID_RAW_DATASIZE)
4286 #define ATOM_DFP5_STD_MODE_TBL_ADDR (ATOM_DFP5_DTD_MODE_TBL_ADDR + ATOM_DTD_MODE_SUPPORT_TBL_SIZE)
4287
4288 #define ATOM_DP_TRAINING_TBL_ADDR (ATOM_DFP5_STD_MODE_TBL_ADDR + ATOM_STD_MODE_SUPPORT_TBL_SIZE)
4289
4290 #define ATOM_STACK_STORAGE_START (ATOM_DP_TRAINING_TBL_ADDR + 1024)
4291 #define ATOM_STACK_STORAGE_END ATOM_STACK_STORAGE_START + 512
4292
4293
4294 #define ATOM_VRAM_RESERVE_SIZE ((((ATOM_STACK_STORAGE_END - ATOM_HWICON1_SURFACE_ADDR)>>10)+4)&0xFFFC)
4295
4296 #define ATOM_VRAM_RESERVE_V2_SIZE 32
4297
4298 #define ATOM_VRAM_OPERATION_FLAGS_MASK 0xC0000000L
4299 #define ATOM_VRAM_OPERATION_FLAGS_SHIFT 30
4300 #define ATOM_VRAM_BLOCK_NEEDS_NO_RESERVATION 0x1
4301 #define ATOM_VRAM_BLOCK_NEEDS_RESERVATION 0x0
4302 #define ATOM_VRAM_BLOCK_SRIOV_MSG_SHARE_RESERVATION 0x2
4303
4304
4305
4306
4307
4308
4309
4310
4311
4312
4313
4314
4315
4316
4317
4318
4319
4320
4321
4322
4323
4324
4325
4326
4327
4328
4329 #define ATOM_MAX_FIRMWARE_VRAM_USAGE_INFO 1
4330
4331 typedef struct _ATOM_FIRMWARE_VRAM_RESERVE_INFO
4332 {
4333 ULONG ulStartAddrUsedByFirmware;
4334 USHORT usFirmwareUseInKb;
4335 USHORT usReserved;
4336 }ATOM_FIRMWARE_VRAM_RESERVE_INFO;
4337
4338 typedef struct _ATOM_VRAM_USAGE_BY_FIRMWARE
4339 {
4340 ATOM_COMMON_TABLE_HEADER sHeader;
4341 ATOM_FIRMWARE_VRAM_RESERVE_INFO asFirmwareVramReserveInfo[ATOM_MAX_FIRMWARE_VRAM_USAGE_INFO];
4342 }ATOM_VRAM_USAGE_BY_FIRMWARE;
4343
4344
4345 typedef struct _ATOM_FIRMWARE_VRAM_RESERVE_INFO_V1_5
4346 {
4347 ULONG ulStartAddrUsedByFirmware;
4348 USHORT usFirmwareUseInKb;
4349 USHORT usFBUsedByDrvInKb;
4350 }ATOM_FIRMWARE_VRAM_RESERVE_INFO_V1_5;
4351
4352 typedef struct _ATOM_VRAM_USAGE_BY_FIRMWARE_V1_5
4353 {
4354 ATOM_COMMON_TABLE_HEADER sHeader;
4355 ATOM_FIRMWARE_VRAM_RESERVE_INFO_V1_5 asFirmwareVramReserveInfo[ATOM_MAX_FIRMWARE_VRAM_USAGE_INFO];
4356 }ATOM_VRAM_USAGE_BY_FIRMWARE_V1_5;
4357
4358
4359
4360
4361 typedef struct _ATOM_GPIO_PIN_ASSIGNMENT
4362 {
4363 USHORT usGpioPin_AIndex;
4364 UCHAR ucGpioPinBitShift;
4365 UCHAR ucGPIO_ID;
4366 }ATOM_GPIO_PIN_ASSIGNMENT;
4367
4368
4369
4370 #define PCIE_VDDC_CONTROL_GPIO_PINID 56
4371
4372
4373 #define PP_AC_DC_SWITCH_GPIO_PINID 60
4374
4375 #define VDDC_VRHOT_GPIO_PINID 61
4376
4377 #define VDDC_PCC_GPIO_PINID 62
4378
4379 #define EFUSE_CUT_ENABLE_GPIO_PINID 63
4380
4381 #define DRAM_SELF_REFRESH_GPIO_PINID 64
4382
4383 #define THERMAL_INT_OUTPUT_GPIO_PINID 65
4384
4385
4386 typedef struct _ATOM_GPIO_PIN_LUT
4387 {
4388 ATOM_COMMON_TABLE_HEADER sHeader;
4389 ATOM_GPIO_PIN_ASSIGNMENT asGPIO_Pin[1];
4390 }ATOM_GPIO_PIN_LUT;
4391
4392
4393
4394
4395 #define GPIO_PIN_ACTIVE_HIGH 0x1
4396 #define MAX_SUPPORTED_CV_STANDARDS 5
4397
4398
4399 #define ATOM_GPIO_SETTINGS_BITSHIFT_MASK 0x1F
4400 #define ATOM_GPIO_SETTINGS_RESERVED_MASK 0x60
4401 #define ATOM_GPIO_SETTINGS_ACTIVE_MASK 0x80
4402
4403 typedef struct _ATOM_GPIO_INFO
4404 {
4405 USHORT usAOffset;
4406 UCHAR ucSettings;
4407 UCHAR ucReserved;
4408 }ATOM_GPIO_INFO;
4409
4410
4411 #define ATOM_CV_RESTRICT_FORMAT_SELECTION 0x2
4412
4413
4414 #define ATOM_GPIO_DEFAULT_MODE_EN 0x80
4415 #define ATOM_GPIO_SETTING_PERMODE_MASK 0x7F
4416
4417
4418
4419 #define ATOM_CV_LINE3_ASPECTRATIO_16_9_GPIO_A 0x01
4420 #define ATOM_CV_LINE3_ASPECTRATIO_16_9_GPIO_B 0x02
4421 #define ATOM_CV_LINE3_ASPECTRATIO_16_9_GPIO_SHIFT 0x0
4422
4423
4424 #define ATOM_CV_LINE3_ASPECTRATIO_4_3_LETBOX_GPIO_A 0x04
4425 #define ATOM_CV_LINE3_ASPECTRATIO_4_3_LETBOX_GPIO_B 0x08
4426 #define ATOM_CV_LINE3_ASPECTRATIO_4_3_LETBOX_GPIO_SHIFT 0x2
4427
4428
4429 #define ATOM_CV_LINE3_ASPECTRATIO_4_3_GPIO_A 0x10
4430 #define ATOM_CV_LINE3_ASPECTRATIO_4_3_GPIO_B 0x20
4431 #define ATOM_CV_LINE3_ASPECTRATIO_4_3_GPIO_SHIFT 0x4
4432
4433 #define ATOM_CV_LINE3_ASPECTRATIO_MASK 0x3F
4434
4435 #define ATOM_CV_LINE3_ASPECTRATIO_EXIST 0x80
4436
4437
4438 #define ATOM_GPIO_INDEX_LINE3_ASPECRATIO_GPIO_A 3
4439 #define ATOM_GPIO_INDEX_LINE3_ASPECRATIO_GPIO_B 4
4440
4441
4442 typedef struct _ATOM_COMPONENT_VIDEO_INFO
4443 {
4444 ATOM_COMMON_TABLE_HEADER sHeader;
4445 USHORT usMask_PinRegisterIndex;
4446 USHORT usEN_PinRegisterIndex;
4447 USHORT usY_PinRegisterIndex;
4448 USHORT usA_PinRegisterIndex;
4449 UCHAR ucBitShift;
4450 UCHAR ucPinActiveState;
4451 ATOM_DTD_FORMAT sReserved;
4452 UCHAR ucMiscInfo;
4453 UCHAR uc480i;
4454 UCHAR uc480p;
4455 UCHAR uc720p;
4456 UCHAR uc1080i;
4457 UCHAR ucLetterBoxMode;
4458 UCHAR ucReserved[3];
4459 UCHAR ucNumOfWbGpioBlocks;
4460 ATOM_GPIO_INFO aWbGpioStateBlock[MAX_SUPPORTED_CV_STANDARDS];
4461 ATOM_DTD_FORMAT aModeTimings[MAX_SUPPORTED_CV_STANDARDS];
4462 }ATOM_COMPONENT_VIDEO_INFO;
4463
4464
4465
4466 typedef struct _ATOM_COMPONENT_VIDEO_INFO_V21
4467 {
4468 ATOM_COMMON_TABLE_HEADER sHeader;
4469 UCHAR ucMiscInfo;
4470 UCHAR uc480i;
4471 UCHAR uc480p;
4472 UCHAR uc720p;
4473 UCHAR uc1080i;
4474 UCHAR ucReserved;
4475 UCHAR ucLetterBoxMode;
4476 UCHAR ucNumOfWbGpioBlocks;
4477 ATOM_GPIO_INFO aWbGpioStateBlock[MAX_SUPPORTED_CV_STANDARDS];
4478 ATOM_DTD_FORMAT aModeTimings[MAX_SUPPORTED_CV_STANDARDS];
4479 }ATOM_COMPONENT_VIDEO_INFO_V21;
4480
4481 #define ATOM_COMPONENT_VIDEO_INFO_LAST ATOM_COMPONENT_VIDEO_INFO_V21
4482
4483
4484
4485
4486 typedef struct _ATOM_OBJECT_HEADER
4487 {
4488 ATOM_COMMON_TABLE_HEADER sHeader;
4489 USHORT usDeviceSupport;
4490 USHORT usConnectorObjectTableOffset;
4491 USHORT usRouterObjectTableOffset;
4492 USHORT usEncoderObjectTableOffset;
4493 USHORT usProtectionObjectTableOffset;
4494 USHORT usDisplayPathTableOffset;
4495 }ATOM_OBJECT_HEADER;
4496
4497 typedef struct _ATOM_OBJECT_HEADER_V3
4498 {
4499 ATOM_COMMON_TABLE_HEADER sHeader;
4500 USHORT usDeviceSupport;
4501 USHORT usConnectorObjectTableOffset;
4502 USHORT usRouterObjectTableOffset;
4503 USHORT usEncoderObjectTableOffset;
4504 USHORT usProtectionObjectTableOffset;
4505 USHORT usDisplayPathTableOffset;
4506 USHORT usMiscObjectTableOffset;
4507 }ATOM_OBJECT_HEADER_V3;
4508
4509
4510 typedef struct _ATOM_DISPLAY_OBJECT_PATH
4511 {
4512 USHORT usDeviceTag;
4513 USHORT usSize;
4514 USHORT usConnObjectId;
4515 USHORT usGPUObjectId;
4516 USHORT usGraphicObjIds[1];
4517 }ATOM_DISPLAY_OBJECT_PATH;
4518
4519 typedef struct _ATOM_DISPLAY_EXTERNAL_OBJECT_PATH
4520 {
4521 USHORT usDeviceTag;
4522 USHORT usSize;
4523 USHORT usConnObjectId;
4524 USHORT usGPUObjectId;
4525 USHORT usGraphicObjIds[2];
4526 }ATOM_DISPLAY_EXTERNAL_OBJECT_PATH;
4527
4528 typedef struct _ATOM_DISPLAY_OBJECT_PATH_TABLE
4529 {
4530 UCHAR ucNumOfDispPath;
4531 UCHAR ucVersion;
4532 UCHAR ucPadding[2];
4533 ATOM_DISPLAY_OBJECT_PATH asDispPath[1];
4534 }ATOM_DISPLAY_OBJECT_PATH_TABLE;
4535
4536 typedef struct _ATOM_OBJECT
4537 {
4538 USHORT usObjectID;
4539 USHORT usSrcDstTableOffset;
4540 USHORT usRecordOffset;
4541 USHORT usReserved;
4542 }ATOM_OBJECT;
4543
4544 typedef struct _ATOM_OBJECT_TABLE
4545 {
4546 UCHAR ucNumberOfObjects;
4547 UCHAR ucPadding[3];
4548 ATOM_OBJECT asObjects[1];
4549 }ATOM_OBJECT_TABLE;
4550
4551 typedef struct _ATOM_SRC_DST_TABLE_FOR_ONE_OBJECT
4552 {
4553 UCHAR ucNumberOfSrc;
4554 USHORT usSrcObjectID[1];
4555 UCHAR ucNumberOfDst;
4556 USHORT usDstObjectID[1];
4557 }ATOM_SRC_DST_TABLE_FOR_ONE_OBJECT;
4558
4559
4560
4561
4562 #define EXT_HPDPIN_LUTINDEX_0 0
4563 #define EXT_HPDPIN_LUTINDEX_1 1
4564 #define EXT_HPDPIN_LUTINDEX_2 2
4565 #define EXT_HPDPIN_LUTINDEX_3 3
4566 #define EXT_HPDPIN_LUTINDEX_4 4
4567 #define EXT_HPDPIN_LUTINDEX_5 5
4568 #define EXT_HPDPIN_LUTINDEX_6 6
4569 #define EXT_HPDPIN_LUTINDEX_7 7
4570 #define MAX_NUMBER_OF_EXT_HPDPIN_LUT_ENTRIES (EXT_HPDPIN_LUTINDEX_7+1)
4571
4572 #define EXT_AUXDDC_LUTINDEX_0 0
4573 #define EXT_AUXDDC_LUTINDEX_1 1
4574 #define EXT_AUXDDC_LUTINDEX_2 2
4575 #define EXT_AUXDDC_LUTINDEX_3 3
4576 #define EXT_AUXDDC_LUTINDEX_4 4
4577 #define EXT_AUXDDC_LUTINDEX_5 5
4578 #define EXT_AUXDDC_LUTINDEX_6 6
4579 #define EXT_AUXDDC_LUTINDEX_7 7
4580 #define MAX_NUMBER_OF_EXT_AUXDDC_LUT_ENTRIES (EXT_AUXDDC_LUTINDEX_7+1)
4581
4582
4583
4584
4585
4586
4587
4588 typedef struct _ATOM_DP_CONN_CHANNEL_MAPPING
4589 {
4590 #if ATOM_BIG_ENDIAN
4591 UCHAR ucDP_Lane3_Source:2;
4592 UCHAR ucDP_Lane2_Source:2;
4593 UCHAR ucDP_Lane1_Source:2;
4594 UCHAR ucDP_Lane0_Source:2;
4595 #else
4596 UCHAR ucDP_Lane0_Source:2;
4597 UCHAR ucDP_Lane1_Source:2;
4598 UCHAR ucDP_Lane2_Source:2;
4599 UCHAR ucDP_Lane3_Source:2;
4600 #endif
4601 }ATOM_DP_CONN_CHANNEL_MAPPING;
4602
4603
4604
4605
4606
4607
4608 typedef struct _ATOM_DVI_CONN_CHANNEL_MAPPING
4609 {
4610 #if ATOM_BIG_ENDIAN
4611 UCHAR ucDVI_CLK_Source:2;
4612 UCHAR ucDVI_DATA0_Source:2;
4613 UCHAR ucDVI_DATA1_Source:2;
4614 UCHAR ucDVI_DATA2_Source:2;
4615 #else
4616 UCHAR ucDVI_DATA2_Source:2;
4617 UCHAR ucDVI_DATA1_Source:2;
4618 UCHAR ucDVI_DATA0_Source:2;
4619 UCHAR ucDVI_CLK_Source:2;
4620 #endif
4621 }ATOM_DVI_CONN_CHANNEL_MAPPING;
4622
4623 typedef struct _EXT_DISPLAY_PATH
4624 {
4625 USHORT usDeviceTag;
4626 USHORT usDeviceACPIEnum;
4627 USHORT usDeviceConnector;
4628 UCHAR ucExtAUXDDCLutIndex;
4629 UCHAR ucExtHPDPINLutIndex;
4630 USHORT usExtEncoderObjId;
4631 union{
4632 UCHAR ucChannelMapping;
4633 ATOM_DP_CONN_CHANNEL_MAPPING asDPMapping;
4634 ATOM_DVI_CONN_CHANNEL_MAPPING asDVIMapping;
4635 };
4636 UCHAR ucChPNInvert;
4637 USHORT usCaps;
4638 USHORT usReserved;
4639 }EXT_DISPLAY_PATH;
4640
4641 #define NUMBER_OF_UCHAR_FOR_GUID 16
4642 #define MAX_NUMBER_OF_EXT_DISPLAY_PATH 7
4643
4644
4645 #define EXT_DISPLAY_PATH_CAPS__HBR2_DISABLE 0x0001
4646 #define EXT_DISPLAY_PATH_CAPS__DP_FIXED_VS_EN 0x0002
4647 #define EXT_DISPLAY_PATH_CAPS__EXT_CHIP_MASK 0x007C
4648 #define EXT_DISPLAY_PATH_CAPS__HDMI20_PI3EQX1204 (0x01 << 2 )
4649 #define EXT_DISPLAY_PATH_CAPS__HDMI20_TISN65DP159RSBT (0x02 << 2 )
4650 #define EXT_DISPLAY_PATH_CAPS__HDMI20_PARADE_PS175 (0x03 << 2 )
4651
4652
4653
4654
4655 typedef struct _ATOM_EXTERNAL_DISPLAY_CONNECTION_INFO
4656 {
4657 ATOM_COMMON_TABLE_HEADER sHeader;
4658 UCHAR ucGuid [NUMBER_OF_UCHAR_FOR_GUID];
4659 EXT_DISPLAY_PATH sPath[MAX_NUMBER_OF_EXT_DISPLAY_PATH];
4660 UCHAR ucChecksum;
4661 UCHAR uc3DStereoPinId;
4662 UCHAR ucRemoteDisplayConfig;
4663 UCHAR uceDPToLVDSRxId;
4664 UCHAR ucFixDPVoltageSwing;
4665 UCHAR Reserved[3];
4666 }ATOM_EXTERNAL_DISPLAY_CONNECTION_INFO;
4667
4668
4669 typedef struct _ATOM_COMMON_RECORD_HEADER
4670 {
4671 UCHAR ucRecordType;
4672 UCHAR ucRecordSize;
4673 }ATOM_COMMON_RECORD_HEADER;
4674
4675
4676 #define ATOM_I2C_RECORD_TYPE 1
4677 #define ATOM_HPD_INT_RECORD_TYPE 2
4678 #define ATOM_OUTPUT_PROTECTION_RECORD_TYPE 3
4679 #define ATOM_CONNECTOR_DEVICE_TAG_RECORD_TYPE 4
4680 #define ATOM_CONNECTOR_DVI_EXT_INPUT_RECORD_TYPE 5
4681 #define ATOM_ENCODER_FPGA_CONTROL_RECORD_TYPE 6
4682 #define ATOM_CONNECTOR_CVTV_SHARE_DIN_RECORD_TYPE 7
4683 #define ATOM_JTAG_RECORD_TYPE 8
4684 #define ATOM_OBJECT_GPIO_CNTL_RECORD_TYPE 9
4685 #define ATOM_ENCODER_DVO_CF_RECORD_TYPE 10
4686 #define ATOM_CONNECTOR_CF_RECORD_TYPE 11
4687 #define ATOM_CONNECTOR_HARDCODE_DTD_RECORD_TYPE 12
4688 #define ATOM_CONNECTOR_PCIE_SUBCONNECTOR_RECORD_TYPE 13
4689 #define ATOM_ROUTER_DDC_PATH_SELECT_RECORD_TYPE 14
4690 #define ATOM_ROUTER_DATA_CLOCK_PATH_SELECT_RECORD_TYPE 15
4691 #define ATOM_CONNECTOR_HPDPIN_LUT_RECORD_TYPE 16
4692 #define ATOM_CONNECTOR_AUXDDC_LUT_RECORD_TYPE 17
4693 #define ATOM_OBJECT_LINK_RECORD_TYPE 18
4694 #define ATOM_CONNECTOR_REMOTE_CAP_RECORD_TYPE 19
4695 #define ATOM_ENCODER_CAP_RECORD_TYPE 20
4696 #define ATOM_BRACKET_LAYOUT_RECORD_TYPE 21
4697 #define ATOM_CONNECTOR_FORCED_TMDS_CAP_RECORD_TYPE 22
4698
4699
4700 #define ATOM_MAX_OBJECT_RECORD_NUMBER ATOM_CONNECTOR_FORCED_TMDS_CAP_RECORD_TYPE
4701
4702 typedef struct _ATOM_I2C_RECORD
4703 {
4704 ATOM_COMMON_RECORD_HEADER sheader;
4705 ATOM_I2C_ID_CONFIG sucI2cId;
4706 UCHAR ucI2CAddr;
4707 }ATOM_I2C_RECORD;
4708
4709 typedef struct _ATOM_HPD_INT_RECORD
4710 {
4711 ATOM_COMMON_RECORD_HEADER sheader;
4712 UCHAR ucHPDIntGPIOID;
4713 UCHAR ucPlugged_PinState;
4714 }ATOM_HPD_INT_RECORD;
4715
4716
4717 typedef struct _ATOM_OUTPUT_PROTECTION_RECORD
4718 {
4719 ATOM_COMMON_RECORD_HEADER sheader;
4720 UCHAR ucProtectionFlag;
4721 UCHAR ucReserved;
4722 }ATOM_OUTPUT_PROTECTION_RECORD;
4723
4724 typedef struct _ATOM_CONNECTOR_DEVICE_TAG
4725 {
4726 ULONG ulACPIDeviceEnum;
4727 USHORT usDeviceID;
4728 USHORT usPadding;
4729 }ATOM_CONNECTOR_DEVICE_TAG;
4730
4731 typedef struct _ATOM_CONNECTOR_DEVICE_TAG_RECORD
4732 {
4733 ATOM_COMMON_RECORD_HEADER sheader;
4734 UCHAR ucNumberOfDevice;
4735 UCHAR ucReserved;
4736 ATOM_CONNECTOR_DEVICE_TAG asDeviceTag[1];
4737 }ATOM_CONNECTOR_DEVICE_TAG_RECORD;
4738
4739
4740 typedef struct _ATOM_CONNECTOR_DVI_EXT_INPUT_RECORD
4741 {
4742 ATOM_COMMON_RECORD_HEADER sheader;
4743 UCHAR ucConfigGPIOID;
4744 UCHAR ucConfigGPIOState;
4745 UCHAR ucFlowinGPIPID;
4746 UCHAR ucExtInGPIPID;
4747 }ATOM_CONNECTOR_DVI_EXT_INPUT_RECORD;
4748
4749 typedef struct _ATOM_ENCODER_FPGA_CONTROL_RECORD
4750 {
4751 ATOM_COMMON_RECORD_HEADER sheader;
4752 UCHAR ucCTL1GPIO_ID;
4753 UCHAR ucCTL1GPIOState;
4754 UCHAR ucCTL2GPIO_ID;
4755 UCHAR ucCTL2GPIOState;
4756 UCHAR ucCTL3GPIO_ID;
4757 UCHAR ucCTL3GPIOState;
4758 UCHAR ucCTLFPGA_IN_ID;
4759 UCHAR ucPadding[3];
4760 }ATOM_ENCODER_FPGA_CONTROL_RECORD;
4761
4762 typedef struct _ATOM_CONNECTOR_CVTV_SHARE_DIN_RECORD
4763 {
4764 ATOM_COMMON_RECORD_HEADER sheader;
4765 UCHAR ucGPIOID;
4766 UCHAR ucTVActiveState;
4767 }ATOM_CONNECTOR_CVTV_SHARE_DIN_RECORD;
4768
4769 typedef struct _ATOM_JTAG_RECORD
4770 {
4771 ATOM_COMMON_RECORD_HEADER sheader;
4772 UCHAR ucTMSGPIO_ID;
4773 UCHAR ucTMSGPIOState;
4774 UCHAR ucTCKGPIO_ID;
4775 UCHAR ucTCKGPIOState;
4776 UCHAR ucTDOGPIO_ID;
4777 UCHAR ucTDOGPIOState;
4778 UCHAR ucTDIGPIO_ID;
4779 UCHAR ucTDIGPIOState;
4780 UCHAR ucPadding[2];
4781 }ATOM_JTAG_RECORD;
4782
4783
4784
4785 typedef struct _ATOM_GPIO_PIN_CONTROL_PAIR
4786 {
4787 UCHAR ucGPIOID;
4788 UCHAR ucGPIO_PinState;
4789 }ATOM_GPIO_PIN_CONTROL_PAIR;
4790
4791 typedef struct _ATOM_OBJECT_GPIO_CNTL_RECORD
4792 {
4793 ATOM_COMMON_RECORD_HEADER sheader;
4794 UCHAR ucFlags;
4795 UCHAR ucNumberOfPins;
4796 ATOM_GPIO_PIN_CONTROL_PAIR asGpio[1];
4797 }ATOM_OBJECT_GPIO_CNTL_RECORD;
4798
4799
4800 #define GPIO_PIN_TYPE_INPUT 0x00
4801 #define GPIO_PIN_TYPE_OUTPUT 0x10
4802 #define GPIO_PIN_TYPE_HW_CONTROL 0x20
4803
4804
4805 #define GPIO_PIN_OUTPUT_STATE_MASK 0x01
4806 #define GPIO_PIN_OUTPUT_STATE_SHIFT 0
4807 #define GPIO_PIN_STATE_ACTIVE_LOW 0x0
4808 #define GPIO_PIN_STATE_ACTIVE_HIGH 0x1
4809
4810
4811
4812 #define ATOM_GPIO_INDEX_GLSYNC_REFCLK 0
4813 #define ATOM_GPIO_INDEX_GLSYNC_HSYNC 1
4814 #define ATOM_GPIO_INDEX_GLSYNC_VSYNC 2
4815 #define ATOM_GPIO_INDEX_GLSYNC_SWAP_REQ 3
4816 #define ATOM_GPIO_INDEX_GLSYNC_SWAP_GNT 4
4817 #define ATOM_GPIO_INDEX_GLSYNC_INTERRUPT 5
4818 #define ATOM_GPIO_INDEX_GLSYNC_V_RESET 6
4819 #define ATOM_GPIO_INDEX_GLSYNC_SWAP_CNTL 7
4820 #define ATOM_GPIO_INDEX_GLSYNC_SWAP_SEL 8
4821 #define ATOM_GPIO_INDEX_GLSYNC_MAX 9
4822
4823 typedef struct _ATOM_ENCODER_DVO_CF_RECORD
4824 {
4825 ATOM_COMMON_RECORD_HEADER sheader;
4826 ULONG ulStrengthControl;
4827 UCHAR ucPadding[2];
4828 }ATOM_ENCODER_DVO_CF_RECORD;
4829
4830
4831 #define ATOM_ENCODER_CAP_RECORD_HBR2 0x01
4832 #define ATOM_ENCODER_CAP_RECORD_MST_EN 0x01
4833 #define ATOM_ENCODER_CAP_RECORD_HBR2_EN 0x02
4834 #define ATOM_ENCODER_CAP_RECORD_HDMI6Gbps_EN 0x04
4835 #define ATOM_ENCODER_CAP_RECORD_HBR3_EN 0x08
4836
4837 typedef struct _ATOM_ENCODER_CAP_RECORD
4838 {
4839 ATOM_COMMON_RECORD_HEADER sheader;
4840 union {
4841 USHORT usEncoderCap;
4842 struct {
4843 #if ATOM_BIG_ENDIAN
4844 USHORT usReserved:14;
4845 USHORT usHBR2En:1;
4846 USHORT usHBR2Cap:1;
4847 #else
4848 USHORT usHBR2Cap:1;
4849 USHORT usHBR2En:1;
4850 USHORT usReserved:14;
4851 #endif
4852 };
4853 };
4854 }ATOM_ENCODER_CAP_RECORD;
4855
4856
4857 typedef struct _ATOM_ENCODER_CAP_RECORD_V2
4858 {
4859 ATOM_COMMON_RECORD_HEADER sheader;
4860 union {
4861 USHORT usEncoderCap;
4862 struct {
4863 #if ATOM_BIG_ENDIAN
4864 USHORT usReserved:12;
4865 USHORT usHBR3En:1;
4866 USHORT usHDMI6GEn:1;
4867 USHORT usHBR2En:1;
4868 USHORT usMSTEn:1;
4869 #else
4870 USHORT usMSTEn:1;
4871 USHORT usHBR2En:1;
4872 USHORT usHDMI6GEn:1;
4873 USHORT usHBR3En:1;
4874 USHORT usReserved:12;
4875 #endif
4876 };
4877 };
4878 }ATOM_ENCODER_CAP_RECORD_V2;
4879
4880
4881
4882 #define ATOM_CONNECTOR_CF_RECORD_CONNECTED_UPPER12BITBUNDLEA 1
4883 #define ATOM_CONNECTOR_CF_RECORD_CONNECTED_LOWER12BITBUNDLEB 2
4884
4885 typedef struct _ATOM_CONNECTOR_CF_RECORD
4886 {
4887 ATOM_COMMON_RECORD_HEADER sheader;
4888 USHORT usMaxPixClk;
4889 UCHAR ucFlowCntlGpioId;
4890 UCHAR ucSwapCntlGpioId;
4891 UCHAR ucConnectedDvoBundle;
4892 UCHAR ucPadding;
4893 }ATOM_CONNECTOR_CF_RECORD;
4894
4895 typedef struct _ATOM_CONNECTOR_HARDCODE_DTD_RECORD
4896 {
4897 ATOM_COMMON_RECORD_HEADER sheader;
4898 ATOM_DTD_FORMAT asTiming;
4899 }ATOM_CONNECTOR_HARDCODE_DTD_RECORD;
4900
4901 typedef struct _ATOM_CONNECTOR_PCIE_SUBCONNECTOR_RECORD
4902 {
4903 ATOM_COMMON_RECORD_HEADER sheader;
4904 UCHAR ucSubConnectorType;
4905 UCHAR ucReserved;
4906 }ATOM_CONNECTOR_PCIE_SUBCONNECTOR_RECORD;
4907
4908
4909 typedef struct _ATOM_ROUTER_DDC_PATH_SELECT_RECORD
4910 {
4911 ATOM_COMMON_RECORD_HEADER sheader;
4912 UCHAR ucMuxType;
4913 UCHAR ucMuxControlPin;
4914 UCHAR ucMuxState[2];
4915 }ATOM_ROUTER_DDC_PATH_SELECT_RECORD;
4916
4917 typedef struct _ATOM_ROUTER_DATA_CLOCK_PATH_SELECT_RECORD
4918 {
4919 ATOM_COMMON_RECORD_HEADER sheader;
4920 UCHAR ucMuxType;
4921 UCHAR ucMuxControlPin;
4922 UCHAR ucMuxState[2];
4923 }ATOM_ROUTER_DATA_CLOCK_PATH_SELECT_RECORD;
4924
4925
4926 #define ATOM_ROUTER_MUX_PIN_STATE_MASK 0x0f
4927 #define ATOM_ROUTER_MUX_PIN_SINGLE_STATE_COMPLEMENT 0x01
4928
4929 typedef struct _ATOM_CONNECTOR_HPDPIN_LUT_RECORD
4930 {
4931 ATOM_COMMON_RECORD_HEADER sheader;
4932 UCHAR ucHPDPINMap[MAX_NUMBER_OF_EXT_HPDPIN_LUT_ENTRIES];
4933 }ATOM_CONNECTOR_HPDPIN_LUT_RECORD;
4934
4935 typedef struct _ATOM_CONNECTOR_AUXDDC_LUT_RECORD
4936 {
4937 ATOM_COMMON_RECORD_HEADER sheader;
4938 ATOM_I2C_ID_CONFIG ucAUXDDCMap[MAX_NUMBER_OF_EXT_AUXDDC_LUT_ENTRIES];
4939 }ATOM_CONNECTOR_AUXDDC_LUT_RECORD;
4940
4941 typedef struct _ATOM_OBJECT_LINK_RECORD
4942 {
4943 ATOM_COMMON_RECORD_HEADER sheader;
4944 USHORT usObjectID;
4945 }ATOM_OBJECT_LINK_RECORD;
4946
4947 typedef struct _ATOM_CONNECTOR_REMOTE_CAP_RECORD
4948 {
4949 ATOM_COMMON_RECORD_HEADER sheader;
4950 USHORT usReserved;
4951 }ATOM_CONNECTOR_REMOTE_CAP_RECORD;
4952
4953
4954 typedef struct _ATOM_CONNECTOR_FORCED_TMDS_CAP_RECORD
4955 {
4956 ATOM_COMMON_RECORD_HEADER sheader;
4957
4958 UCHAR ucMaxTmdsClkRateIn2_5Mhz;
4959 UCHAR ucReserved;
4960 } ATOM_CONNECTOR_FORCED_TMDS_CAP_RECORD;
4961
4962
4963 typedef struct _ATOM_CONNECTOR_LAYOUT_INFO
4964 {
4965 USHORT usConnectorObjectId;
4966 UCHAR ucConnectorType;
4967 UCHAR ucPosition;
4968 }ATOM_CONNECTOR_LAYOUT_INFO;
4969
4970
4971 #define CONNECTOR_TYPE_DVI_D 1
4972 #define CONNECTOR_TYPE_DVI_I 2
4973 #define CONNECTOR_TYPE_VGA 3
4974 #define CONNECTOR_TYPE_HDMI 4
4975 #define CONNECTOR_TYPE_DISPLAY_PORT 5
4976 #define CONNECTOR_TYPE_MINI_DISPLAY_PORT 6
4977
4978 typedef struct _ATOM_BRACKET_LAYOUT_RECORD
4979 {
4980 ATOM_COMMON_RECORD_HEADER sheader;
4981 UCHAR ucLength;
4982 UCHAR ucWidth;
4983 UCHAR ucConnNum;
4984 UCHAR ucReserved;
4985 ATOM_CONNECTOR_LAYOUT_INFO asConnInfo[1];
4986 }ATOM_BRACKET_LAYOUT_RECORD;
4987
4988
4989
4990
4991
4992 typedef struct _ATOM_VOLTAGE_INFO_HEADER
4993 {
4994 USHORT usVDDCBaseLevel;
4995 USHORT usReserved;
4996 UCHAR ucNumOfVoltageEntries;
4997 UCHAR ucBytesPerVoltageEntry;
4998 UCHAR ucVoltageStep;
4999 UCHAR ucDefaultVoltageEntry;
5000 UCHAR ucVoltageControlI2cLine;
5001 UCHAR ucVoltageControlAddress;
5002 UCHAR ucVoltageControlOffset;
5003 }ATOM_VOLTAGE_INFO_HEADER;
5004
5005 typedef struct _ATOM_VOLTAGE_INFO
5006 {
5007 ATOM_COMMON_TABLE_HEADER sHeader;
5008 ATOM_VOLTAGE_INFO_HEADER viHeader;
5009 UCHAR ucVoltageEntries[64];
5010 }ATOM_VOLTAGE_INFO;
5011
5012
5013 typedef struct _ATOM_VOLTAGE_FORMULA
5014 {
5015 USHORT usVoltageBaseLevel;
5016 USHORT usVoltageStep;
5017 UCHAR ucNumOfVoltageEntries;
5018 UCHAR ucFlag;
5019 UCHAR ucBaseVID;
5020 UCHAR ucReserved;
5021 UCHAR ucVIDAdjustEntries[32];
5022 }ATOM_VOLTAGE_FORMULA;
5023
5024 typedef struct _VOLTAGE_LUT_ENTRY
5025 {
5026 USHORT usVoltageCode;
5027 USHORT usVoltageValue;
5028 }VOLTAGE_LUT_ENTRY;
5029
5030 typedef struct _ATOM_VOLTAGE_FORMULA_V2
5031 {
5032 UCHAR ucNumOfVoltageEntries;
5033 UCHAR ucReserved[3];
5034 VOLTAGE_LUT_ENTRY asVIDAdjustEntries[32];
5035 }ATOM_VOLTAGE_FORMULA_V2;
5036
5037 typedef struct _ATOM_VOLTAGE_CONTROL
5038 {
5039 UCHAR ucVoltageControlId;
5040 UCHAR ucVoltageControlI2cLine;
5041 UCHAR ucVoltageControlAddress;
5042 UCHAR ucVoltageControlOffset;
5043 USHORT usGpioPin_AIndex;
5044 UCHAR ucGpioPinBitShift[9];
5045 UCHAR ucReserved;
5046 }ATOM_VOLTAGE_CONTROL;
5047
5048
5049 #define VOLTAGE_CONTROLLED_BY_HW 0x00
5050 #define VOLTAGE_CONTROLLED_BY_I2C_MASK 0x7F
5051 #define VOLTAGE_CONTROLLED_BY_GPIO 0x80
5052 #define VOLTAGE_CONTROL_ID_LM64 0x01
5053 #define VOLTAGE_CONTROL_ID_DAC 0x02
5054 #define VOLTAGE_CONTROL_ID_VT116xM 0x03
5055 #define VOLTAGE_CONTROL_ID_DS4402 0x04
5056 #define VOLTAGE_CONTROL_ID_UP6266 0x05
5057 #define VOLTAGE_CONTROL_ID_SCORPIO 0x06
5058 #define VOLTAGE_CONTROL_ID_VT1556M 0x07
5059 #define VOLTAGE_CONTROL_ID_CHL822x 0x08
5060 #define VOLTAGE_CONTROL_ID_VT1586M 0x09
5061 #define VOLTAGE_CONTROL_ID_UP1637 0x0A
5062 #define VOLTAGE_CONTROL_ID_CHL8214 0x0B
5063 #define VOLTAGE_CONTROL_ID_UP1801 0x0C
5064 #define VOLTAGE_CONTROL_ID_ST6788A 0x0D
5065 #define VOLTAGE_CONTROL_ID_CHLIR3564SVI2 0x0E
5066 #define VOLTAGE_CONTROL_ID_AD527x 0x0F
5067 #define VOLTAGE_CONTROL_ID_NCP81022 0x10
5068 #define VOLTAGE_CONTROL_ID_LTC2635 0x11
5069 #define VOLTAGE_CONTROL_ID_NCP4208 0x12
5070 #define VOLTAGE_CONTROL_ID_IR35xx 0x13
5071 #define VOLTAGE_CONTROL_ID_RT9403 0x14
5072
5073 #define VOLTAGE_CONTROL_ID_GENERIC_I2C 0x40
5074
5075 typedef struct _ATOM_VOLTAGE_OBJECT
5076 {
5077 UCHAR ucVoltageType;
5078 UCHAR ucSize;
5079 ATOM_VOLTAGE_CONTROL asControl;
5080 ATOM_VOLTAGE_FORMULA asFormula;
5081 }ATOM_VOLTAGE_OBJECT;
5082
5083 typedef struct _ATOM_VOLTAGE_OBJECT_V2
5084 {
5085 UCHAR ucVoltageType;
5086 UCHAR ucSize;
5087 ATOM_VOLTAGE_CONTROL asControl;
5088 ATOM_VOLTAGE_FORMULA_V2 asFormula;
5089 }ATOM_VOLTAGE_OBJECT_V2;
5090
5091 typedef struct _ATOM_VOLTAGE_OBJECT_INFO
5092 {
5093 ATOM_COMMON_TABLE_HEADER sHeader;
5094 ATOM_VOLTAGE_OBJECT asVoltageObj[3];
5095 }ATOM_VOLTAGE_OBJECT_INFO;
5096
5097 typedef struct _ATOM_VOLTAGE_OBJECT_INFO_V2
5098 {
5099 ATOM_COMMON_TABLE_HEADER sHeader;
5100 ATOM_VOLTAGE_OBJECT_V2 asVoltageObj[3];
5101 }ATOM_VOLTAGE_OBJECT_INFO_V2;
5102
5103 typedef struct _ATOM_LEAKID_VOLTAGE
5104 {
5105 UCHAR ucLeakageId;
5106 UCHAR ucReserved;
5107 USHORT usVoltage;
5108 }ATOM_LEAKID_VOLTAGE;
5109
5110 typedef struct _ATOM_VOLTAGE_OBJECT_HEADER_V3{
5111 UCHAR ucVoltageType;
5112 UCHAR ucVoltageMode;
5113 USHORT usSize;
5114 }ATOM_VOLTAGE_OBJECT_HEADER_V3;
5115
5116
5117 #define VOLTAGE_OBJ_GPIO_LUT 0
5118 #define VOLTAGE_OBJ_VR_I2C_INIT_SEQ 3
5119 #define VOLTAGE_OBJ_PHASE_LUT 4
5120 #define VOLTAGE_OBJ_SVID2 7
5121 #define VOLTAGE_OBJ_EVV 8
5122 #define VOLTAGE_OBJ_PWRBOOST_LEAKAGE_LUT 0x10
5123 #define VOLTAGE_OBJ_HIGH_STATE_LEAKAGE_LUT 0x11
5124 #define VOLTAGE_OBJ_HIGH1_STATE_LEAKAGE_LUT 0x12
5125
5126 typedef struct _VOLTAGE_LUT_ENTRY_V2
5127 {
5128 ULONG ulVoltageId;
5129 USHORT usVoltageValue;
5130 }VOLTAGE_LUT_ENTRY_V2;
5131
5132 typedef struct _LEAKAGE_VOLTAGE_LUT_ENTRY_V2
5133 {
5134 USHORT usVoltageLevel;
5135 USHORT usVoltageId;
5136 USHORT usLeakageId;
5137 }LEAKAGE_VOLTAGE_LUT_ENTRY_V2;
5138
5139
5140 typedef struct _ATOM_I2C_VOLTAGE_OBJECT_V3
5141 {
5142 ATOM_VOLTAGE_OBJECT_HEADER_V3 sHeader;
5143 UCHAR ucVoltageRegulatorId;
5144 UCHAR ucVoltageControlI2cLine;
5145 UCHAR ucVoltageControlAddress;
5146 UCHAR ucVoltageControlOffset;
5147 UCHAR ucVoltageControlFlag;
5148 UCHAR ulReserved[3];
5149 VOLTAGE_LUT_ENTRY asVolI2cLut[1];
5150 }ATOM_I2C_VOLTAGE_OBJECT_V3;
5151
5152
5153 #define VOLTAGE_DATA_ONE_BYTE 0
5154 #define VOLTAGE_DATA_TWO_BYTE 1
5155
5156 typedef struct _ATOM_GPIO_VOLTAGE_OBJECT_V3
5157 {
5158 ATOM_VOLTAGE_OBJECT_HEADER_V3 sHeader;
5159 UCHAR ucVoltageGpioCntlId;
5160 UCHAR ucGpioEntryNum;
5161 UCHAR ucPhaseDelay;
5162 UCHAR ucReserved;
5163 ULONG ulGpioMaskVal;
5164 VOLTAGE_LUT_ENTRY_V2 asVolGpioLut[1];
5165 }ATOM_GPIO_VOLTAGE_OBJECT_V3;
5166
5167 typedef struct _ATOM_LEAKAGE_VOLTAGE_OBJECT_V3
5168 {
5169 ATOM_VOLTAGE_OBJECT_HEADER_V3 sHeader;
5170 UCHAR ucLeakageCntlId;
5171 UCHAR ucLeakageEntryNum;
5172 UCHAR ucReserved[2];
5173 ULONG ulMaxVoltageLevel;
5174 LEAKAGE_VOLTAGE_LUT_ENTRY_V2 asLeakageIdLut[1];
5175 }ATOM_LEAKAGE_VOLTAGE_OBJECT_V3;
5176
5177
5178 typedef struct _ATOM_SVID2_VOLTAGE_OBJECT_V3
5179 {
5180 ATOM_VOLTAGE_OBJECT_HEADER_V3 sHeader;
5181
5182
5183
5184
5185
5186 USHORT usLoadLine_PSI;
5187
5188 UCHAR ucSVDGpioId;
5189 UCHAR ucSVCGpioId;
5190 ULONG ulReserved;
5191 }ATOM_SVID2_VOLTAGE_OBJECT_V3;
5192
5193
5194
5195 typedef struct _ATOM_MERGED_VOLTAGE_OBJECT_V3
5196 {
5197 ATOM_VOLTAGE_OBJECT_HEADER_V3 sHeader;
5198 UCHAR ucMergedVType;
5199 UCHAR ucReserved[3];
5200 }ATOM_MERGED_VOLTAGE_OBJECT_V3;
5201
5202
5203 typedef struct _ATOM_EVV_DPM_INFO
5204 {
5205 ULONG ulDPMSclk;
5206 USHORT usVAdjOffset;
5207 UCHAR ucDPMTblVIndex;
5208 UCHAR ucDPMState;
5209 } ATOM_EVV_DPM_INFO;
5210
5211
5212 typedef struct _ATOM_EVV_VOLTAGE_OBJECT_V3
5213 {
5214 ATOM_VOLTAGE_OBJECT_HEADER_V3 sHeader;
5215 ATOM_EVV_DPM_INFO asEvvDpmList[8];
5216 }ATOM_EVV_VOLTAGE_OBJECT_V3;
5217
5218
5219 typedef union _ATOM_VOLTAGE_OBJECT_V3{
5220 ATOM_GPIO_VOLTAGE_OBJECT_V3 asGpioVoltageObj;
5221 ATOM_I2C_VOLTAGE_OBJECT_V3 asI2cVoltageObj;
5222 ATOM_LEAKAGE_VOLTAGE_OBJECT_V3 asLeakageObj;
5223 ATOM_SVID2_VOLTAGE_OBJECT_V3 asSVID2Obj;
5224 ATOM_EVV_VOLTAGE_OBJECT_V3 asEvvObj;
5225 }ATOM_VOLTAGE_OBJECT_V3;
5226
5227 typedef struct _ATOM_VOLTAGE_OBJECT_INFO_V3_1
5228 {
5229 ATOM_COMMON_TABLE_HEADER sHeader;
5230 ATOM_VOLTAGE_OBJECT_V3 asVoltageObj[3];
5231 }ATOM_VOLTAGE_OBJECT_INFO_V3_1;
5232
5233
5234 typedef struct _ATOM_ASIC_PROFILE_VOLTAGE
5235 {
5236 UCHAR ucProfileId;
5237 UCHAR ucReserved;
5238 USHORT usSize;
5239 USHORT usEfuseSpareStartAddr;
5240 USHORT usFuseIndex[8];
5241 ATOM_LEAKID_VOLTAGE asLeakVol[2];
5242 }ATOM_ASIC_PROFILE_VOLTAGE;
5243
5244
5245 #define ATOM_ASIC_PROFILE_ID_EFUSE_VOLTAGE 1
5246 #define ATOM_ASIC_PROFILE_ID_EFUSE_PERFORMANCE_VOLTAGE 1
5247 #define ATOM_ASIC_PROFILE_ID_EFUSE_THERMAL_VOLTAGE 2
5248
5249 typedef struct _ATOM_ASIC_PROFILING_INFO
5250 {
5251 ATOM_COMMON_TABLE_HEADER asHeader;
5252 ATOM_ASIC_PROFILE_VOLTAGE asVoltage;
5253 }ATOM_ASIC_PROFILING_INFO;
5254
5255 typedef struct _ATOM_ASIC_PROFILING_INFO_V2_1
5256 {
5257 ATOM_COMMON_TABLE_HEADER asHeader;
5258 UCHAR ucLeakageBinNum;
5259 USHORT usLeakageBinArrayOffset;
5260
5261 UCHAR ucElbVDDC_Num;
5262 USHORT usElbVDDC_IdArrayOffset;
5263 USHORT usElbVDDC_LevelArrayOffset;
5264
5265 UCHAR ucElbVDDCI_Num;
5266 USHORT usElbVDDCI_IdArrayOffset;
5267 USHORT usElbVDDCI_LevelArrayOffset;
5268 }ATOM_ASIC_PROFILING_INFO_V2_1;
5269
5270
5271
5272
5273 typedef struct _EFUSE_LOGISTIC_FUNC_PARAM
5274 {
5275 USHORT usEfuseIndex;
5276 UCHAR ucEfuseBitLSB;
5277 UCHAR ucEfuseLength;
5278 ULONG ulEfuseEncodeRange;
5279 ULONG ulEfuseEncodeAverage;
5280 }EFUSE_LOGISTIC_FUNC_PARAM;
5281
5282
5283 typedef struct _EFUSE_LINEAR_FUNC_PARAM
5284 {
5285 USHORT usEfuseIndex;
5286 UCHAR ucEfuseBitLSB;
5287 UCHAR ucEfuseLength;
5288 ULONG ulEfuseEncodeRange;
5289 ULONG ulEfuseMin;
5290 }EFUSE_LINEAR_FUNC_PARAM;
5291
5292
5293 typedef struct _ATOM_ASIC_PROFILING_INFO_V3_1
5294 {
5295 ATOM_COMMON_TABLE_HEADER asHeader;
5296 ULONG ulEvvDerateTdp;
5297 ULONG ulEvvDerateTdc;
5298 ULONG ulBoardCoreTemp;
5299 ULONG ulMaxVddc;
5300 ULONG ulMinVddc;
5301 ULONG ulLoadLineSlop;
5302 ULONG ulLeakageTemp;
5303 ULONG ulLeakageVoltage;
5304 EFUSE_LINEAR_FUNC_PARAM sCACm;
5305 EFUSE_LINEAR_FUNC_PARAM sCACb;
5306 EFUSE_LOGISTIC_FUNC_PARAM sKt_b;
5307 EFUSE_LOGISTIC_FUNC_PARAM sKv_m;
5308 EFUSE_LOGISTIC_FUNC_PARAM sKv_b;
5309 USHORT usLkgEuseIndex;
5310 UCHAR ucLkgEfuseBitLSB;
5311 UCHAR ucLkgEfuseLength;
5312 ULONG ulLkgEncodeLn_MaxDivMin;
5313 ULONG ulLkgEncodeMax;
5314 ULONG ulLkgEncodeMin;
5315 ULONG ulEfuseLogisticAlpha;
5316 USHORT usPowerDpm0;
5317 USHORT usCurrentDpm0;
5318 USHORT usPowerDpm1;
5319 USHORT usCurrentDpm1;
5320 USHORT usPowerDpm2;
5321 USHORT usCurrentDpm2;
5322 USHORT usPowerDpm3;
5323 USHORT usCurrentDpm3;
5324 USHORT usPowerDpm4;
5325 USHORT usCurrentDpm4;
5326 USHORT usPowerDpm5;
5327 USHORT usCurrentDpm5;
5328 USHORT usPowerDpm6;
5329 USHORT usCurrentDpm6;
5330 USHORT usPowerDpm7;
5331 USHORT usCurrentDpm7;
5332 }ATOM_ASIC_PROFILING_INFO_V3_1;
5333
5334
5335 typedef struct _ATOM_ASIC_PROFILING_INFO_V3_2
5336 {
5337 ATOM_COMMON_TABLE_HEADER asHeader;
5338 ULONG ulEvvLkgFactor;
5339 ULONG ulBoardCoreTemp;
5340 ULONG ulMaxVddc;
5341 ULONG ulMinVddc;
5342 ULONG ulLoadLineSlop;
5343 ULONG ulLeakageTemp;
5344 ULONG ulLeakageVoltage;
5345 EFUSE_LINEAR_FUNC_PARAM sCACm;
5346 EFUSE_LINEAR_FUNC_PARAM sCACb;
5347 EFUSE_LOGISTIC_FUNC_PARAM sKt_b;
5348 EFUSE_LOGISTIC_FUNC_PARAM sKv_m;
5349 EFUSE_LOGISTIC_FUNC_PARAM sKv_b;
5350 USHORT usLkgEuseIndex;
5351 UCHAR ucLkgEfuseBitLSB;
5352 UCHAR ucLkgEfuseLength;
5353 ULONG ulLkgEncodeLn_MaxDivMin;
5354 ULONG ulLkgEncodeMax;
5355 ULONG ulLkgEncodeMin;
5356 ULONG ulEfuseLogisticAlpha;
5357 USHORT usPowerDpm0;
5358 USHORT usPowerDpm1;
5359 USHORT usPowerDpm2;
5360 USHORT usPowerDpm3;
5361 USHORT usPowerDpm4;
5362 USHORT usPowerDpm5;
5363 USHORT usPowerDpm6;
5364 USHORT usPowerDpm7;
5365 ULONG ulTdpDerateDPM0;
5366 ULONG ulTdpDerateDPM1;
5367 ULONG ulTdpDerateDPM2;
5368 ULONG ulTdpDerateDPM3;
5369 ULONG ulTdpDerateDPM4;
5370 ULONG ulTdpDerateDPM5;
5371 ULONG ulTdpDerateDPM6;
5372 ULONG ulTdpDerateDPM7;
5373 }ATOM_ASIC_PROFILING_INFO_V3_2;
5374
5375
5376
5377 typedef struct _ATOM_ASIC_PROFILING_INFO_V3_3
5378 {
5379 ATOM_COMMON_TABLE_HEADER asHeader;
5380 ULONG ulEvvLkgFactor;
5381 ULONG ulBoardCoreTemp;
5382 ULONG ulMaxVddc;
5383 ULONG ulMinVddc;
5384 ULONG ulLoadLineSlop;
5385 ULONG ulLeakageTemp;
5386 ULONG ulLeakageVoltage;
5387 EFUSE_LINEAR_FUNC_PARAM sCACm;
5388 EFUSE_LINEAR_FUNC_PARAM sCACb;
5389 EFUSE_LOGISTIC_FUNC_PARAM sKt_b;
5390 EFUSE_LOGISTIC_FUNC_PARAM sKv_m;
5391 EFUSE_LOGISTIC_FUNC_PARAM sKv_b;
5392 USHORT usLkgEuseIndex;
5393 UCHAR ucLkgEfuseBitLSB;
5394 UCHAR ucLkgEfuseLength;
5395 ULONG ulLkgEncodeLn_MaxDivMin;
5396 ULONG ulLkgEncodeMax;
5397 ULONG ulLkgEncodeMin;
5398 ULONG ulEfuseLogisticAlpha;
5399
5400 union{
5401 USHORT usPowerDpm0;
5402 USHORT usParamNegFlag;
5403 };
5404 USHORT usPowerDpm1;
5405 USHORT usPowerDpm2;
5406 USHORT usPowerDpm3;
5407 USHORT usPowerDpm4;
5408 USHORT usPowerDpm5;
5409 USHORT usPowerDpm6;
5410 USHORT usPowerDpm7;
5411 ULONG ulTdpDerateDPM0;
5412 ULONG ulTdpDerateDPM1;
5413 ULONG ulTdpDerateDPM2;
5414 ULONG ulTdpDerateDPM3;
5415 ULONG ulTdpDerateDPM4;
5416 ULONG ulTdpDerateDPM5;
5417 ULONG ulTdpDerateDPM6;
5418 ULONG ulTdpDerateDPM7;
5419 EFUSE_LINEAR_FUNC_PARAM sRoFuse;
5420 ULONG ulRoAlpha;
5421 ULONG ulRoBeta;
5422 ULONG ulRoGamma;
5423 ULONG ulRoEpsilon;
5424 ULONG ulATermRo;
5425 ULONG ulBTermRo;
5426 ULONG ulCTermRo;
5427 ULONG ulSclkMargin;
5428 ULONG ulFmaxPercent;
5429 ULONG ulCRPercent;
5430 ULONG ulSFmaxPercent;
5431 ULONG ulSCRPercent;
5432 ULONG ulSDCMargine;
5433 }ATOM_ASIC_PROFILING_INFO_V3_3;
5434
5435
5436 typedef struct _ATOM_ASIC_PROFILING_INFO_V3_4
5437 {
5438 ATOM_COMMON_TABLE_HEADER asHeader;
5439 ULONG ulEvvLkgFactor;
5440 ULONG ulBoardCoreTemp;
5441 ULONG ulMaxVddc;
5442 ULONG ulMinVddc;
5443 ULONG ulLoadLineSlop;
5444 ULONG ulLeakageTemp;
5445 ULONG ulLeakageVoltage;
5446 EFUSE_LINEAR_FUNC_PARAM sCACm;
5447 EFUSE_LINEAR_FUNC_PARAM sCACb;
5448 EFUSE_LOGISTIC_FUNC_PARAM sKt_b;
5449 EFUSE_LOGISTIC_FUNC_PARAM sKv_m;
5450 EFUSE_LOGISTIC_FUNC_PARAM sKv_b;
5451 USHORT usLkgEuseIndex;
5452 UCHAR ucLkgEfuseBitLSB;
5453 UCHAR ucLkgEfuseLength;
5454 ULONG ulLkgEncodeLn_MaxDivMin;
5455 ULONG ulLkgEncodeMax;
5456 ULONG ulLkgEncodeMin;
5457 ULONG ulEfuseLogisticAlpha;
5458 USHORT usPowerDpm0;
5459 USHORT usPowerDpm1;
5460 USHORT usPowerDpm2;
5461 USHORT usPowerDpm3;
5462 USHORT usPowerDpm4;
5463 USHORT usPowerDpm5;
5464 USHORT usPowerDpm6;
5465 USHORT usPowerDpm7;
5466 ULONG ulTdpDerateDPM0;
5467 ULONG ulTdpDerateDPM1;
5468 ULONG ulTdpDerateDPM2;
5469 ULONG ulTdpDerateDPM3;
5470 ULONG ulTdpDerateDPM4;
5471 ULONG ulTdpDerateDPM5;
5472 ULONG ulTdpDerateDPM6;
5473 ULONG ulTdpDerateDPM7;
5474 EFUSE_LINEAR_FUNC_PARAM sRoFuse;
5475 ULONG ulEvvDefaultVddc;
5476 ULONG ulEvvNoCalcVddc;
5477 USHORT usParamNegFlag;
5478 USHORT usSpeed_Model;
5479 ULONG ulSM_A0;
5480 ULONG ulSM_A1;
5481 ULONG ulSM_A2;
5482 ULONG ulSM_A3;
5483 ULONG ulSM_A4;
5484 ULONG ulSM_A5;
5485 ULONG ulSM_A6;
5486 ULONG ulSM_A7;
5487 UCHAR ucSM_A0_sign;
5488 UCHAR ucSM_A1_sign;
5489 UCHAR ucSM_A2_sign;
5490 UCHAR ucSM_A3_sign;
5491 UCHAR ucSM_A4_sign;
5492 UCHAR ucSM_A5_sign;
5493 UCHAR ucSM_A6_sign;
5494 UCHAR ucSM_A7_sign;
5495 ULONG ulMargin_RO_a;
5496 ULONG ulMargin_RO_b;
5497 ULONG ulMargin_RO_c;
5498 ULONG ulMargin_fixed;
5499 ULONG ulMargin_Fmax_mean;
5500 ULONG ulMargin_plat_mean;
5501 ULONG ulMargin_Fmax_sigma;
5502 ULONG ulMargin_plat_sigma;
5503 ULONG ulMargin_DC_sigma;
5504 ULONG ulReserved[8];
5505 }ATOM_ASIC_PROFILING_INFO_V3_4;
5506
5507
5508 typedef struct _ATOM_ASIC_PROFILING_INFO_V3_5
5509 {
5510 ATOM_COMMON_TABLE_HEADER asHeader;
5511 ULONG ulMaxVddc;
5512 ULONG ulMinVddc;
5513 USHORT usLkgEuseIndex;
5514 UCHAR ucLkgEfuseBitLSB;
5515 UCHAR ucLkgEfuseLength;
5516 ULONG ulLkgEncodeLn_MaxDivMin;
5517 ULONG ulLkgEncodeMax;
5518 ULONG ulLkgEncodeMin;
5519 EFUSE_LINEAR_FUNC_PARAM sRoFuse;
5520 ULONG ulEvvDefaultVddc;
5521 ULONG ulEvvNoCalcVddc;
5522 ULONG ulSpeed_Model;
5523 ULONG ulSM_A0;
5524 ULONG ulSM_A1;
5525 ULONG ulSM_A2;
5526 ULONG ulSM_A3;
5527 ULONG ulSM_A4;
5528 ULONG ulSM_A5;
5529 ULONG ulSM_A6;
5530 ULONG ulSM_A7;
5531 UCHAR ucSM_A0_sign;
5532 UCHAR ucSM_A1_sign;
5533 UCHAR ucSM_A2_sign;
5534 UCHAR ucSM_A3_sign;
5535 UCHAR ucSM_A4_sign;
5536 UCHAR ucSM_A5_sign;
5537 UCHAR ucSM_A6_sign;
5538 UCHAR ucSM_A7_sign;
5539 ULONG ulMargin_RO_a;
5540 ULONG ulMargin_RO_b;
5541 ULONG ulMargin_RO_c;
5542 ULONG ulMargin_fixed;
5543 ULONG ulMargin_Fmax_mean;
5544 ULONG ulMargin_plat_mean;
5545 ULONG ulMargin_Fmax_sigma;
5546 ULONG ulMargin_plat_sigma;
5547 ULONG ulMargin_DC_sigma;
5548 ULONG ulReserved[12];
5549 }ATOM_ASIC_PROFILING_INFO_V3_5;
5550
5551
5552 typedef struct _ATOM_ASIC_PROFILING_INFO_V3_6
5553 {
5554 ATOM_COMMON_TABLE_HEADER asHeader;
5555 ULONG ulMaxVddc;
5556 ULONG ulMinVddc;
5557 USHORT usLkgEuseIndex;
5558 UCHAR ucLkgEfuseBitLSB;
5559 UCHAR ucLkgEfuseLength;
5560 ULONG ulLkgEncodeLn_MaxDivMin;
5561 ULONG ulLkgEncodeMax;
5562 ULONG ulLkgEncodeMin;
5563 EFUSE_LINEAR_FUNC_PARAM sRoFuse;
5564 ULONG ulEvvDefaultVddc;
5565 ULONG ulEvvNoCalcVddc;
5566 ULONG ulSpeed_Model;
5567 ULONG ulSM_A0;
5568 ULONG ulSM_A1;
5569 ULONG ulSM_A2;
5570 ULONG ulSM_A3;
5571 ULONG ulSM_A4;
5572 ULONG ulSM_A5;
5573 ULONG ulSM_A6;
5574 ULONG ulSM_A7;
5575 UCHAR ucSM_A0_sign;
5576 UCHAR ucSM_A1_sign;
5577 UCHAR ucSM_A2_sign;
5578 UCHAR ucSM_A3_sign;
5579 UCHAR ucSM_A4_sign;
5580 UCHAR ucSM_A5_sign;
5581 UCHAR ucSM_A6_sign;
5582 UCHAR ucSM_A7_sign;
5583 ULONG ulMargin_RO_a;
5584 ULONG ulMargin_RO_b;
5585 ULONG ulMargin_RO_c;
5586 ULONG ulMargin_fixed;
5587 ULONG ulMargin_Fmax_mean;
5588 ULONG ulMargin_plat_mean;
5589 ULONG ulMargin_Fmax_sigma;
5590 ULONG ulMargin_plat_sigma;
5591 ULONG ulMargin_DC_sigma;
5592 ULONG ulLoadLineSlop;
5593 ULONG ulaTDClimitPerDPM[8];
5594 ULONG ulaNoCalcVddcPerDPM[8];
5595 ULONG ulAVFS_meanNsigma_Acontant0;
5596 ULONG ulAVFS_meanNsigma_Acontant1;
5597 ULONG ulAVFS_meanNsigma_Acontant2;
5598 USHORT usAVFS_meanNsigma_DC_tol_sigma;
5599 USHORT usAVFS_meanNsigma_Platform_mean;
5600 USHORT usAVFS_meanNsigma_Platform_sigma;
5601 ULONG ulGB_VDROOP_TABLE_CKSOFF_a0;
5602 ULONG ulGB_VDROOP_TABLE_CKSOFF_a1;
5603 ULONG ulGB_VDROOP_TABLE_CKSOFF_a2;
5604 ULONG ulGB_VDROOP_TABLE_CKSON_a0;
5605 ULONG ulGB_VDROOP_TABLE_CKSON_a1;
5606 ULONG ulGB_VDROOP_TABLE_CKSON_a2;
5607 ULONG ulAVFSGB_FUSE_TABLE_CKSOFF_m1;
5608 USHORT usAVFSGB_FUSE_TABLE_CKSOFF_m2;
5609 ULONG ulAVFSGB_FUSE_TABLE_CKSOFF_b;
5610 ULONG ulAVFSGB_FUSE_TABLE_CKSON_m1;
5611 USHORT usAVFSGB_FUSE_TABLE_CKSON_m2;
5612 ULONG ulAVFSGB_FUSE_TABLE_CKSON_b;
5613 USHORT usMaxVoltage_0_25mv;
5614 UCHAR ucEnableGB_VDROOP_TABLE_CKSOFF;
5615 UCHAR ucEnableGB_VDROOP_TABLE_CKSON;
5616 UCHAR ucEnableGB_FUSE_TABLE_CKSOFF;
5617 UCHAR ucEnableGB_FUSE_TABLE_CKSON;
5618 USHORT usPSM_Age_ComFactor;
5619 UCHAR ucEnableApplyAVFS_CKS_OFF_Voltage;
5620 UCHAR ucReserved;
5621 }ATOM_ASIC_PROFILING_INFO_V3_6;
5622
5623
5624 typedef struct _ATOM_SCLK_FCW_RANGE_ENTRY_V1{
5625 ULONG ulMaxSclkFreq;
5626 UCHAR ucVco_setting;
5627 UCHAR ucPostdiv;
5628 USHORT ucFcw_pcc;
5629 USHORT ucFcw_trans_upper;
5630 USHORT ucRcw_trans_lower;
5631 }ATOM_SCLK_FCW_RANGE_ENTRY_V1;
5632
5633
5634
5635 typedef struct _ATOM_SMU_INFO_V2_1
5636 {
5637 ATOM_COMMON_TABLE_HEADER asHeader;
5638 UCHAR ucSclkEntryNum;
5639 UCHAR ucSMUVer;
5640 UCHAR ucSharePowerSource;
5641 UCHAR ucReserved;
5642 ATOM_SCLK_FCW_RANGE_ENTRY_V1 asSclkFcwRangeEntry[8];
5643 }ATOM_SMU_INFO_V2_1;
5644
5645
5646
5647 typedef struct _ATOM_GFX_INFO_V2_1
5648 {
5649 ATOM_COMMON_TABLE_HEADER asHeader;
5650 UCHAR GfxIpMinVer;
5651 UCHAR GfxIpMajVer;
5652 UCHAR max_shader_engines;
5653 UCHAR max_tile_pipes;
5654 UCHAR max_cu_per_sh;
5655 UCHAR max_sh_per_se;
5656 UCHAR max_backends_per_se;
5657 UCHAR max_texture_channel_caches;
5658 }ATOM_GFX_INFO_V2_1;
5659
5660 typedef struct _ATOM_GFX_INFO_V2_3
5661 {
5662 ATOM_COMMON_TABLE_HEADER asHeader;
5663 UCHAR GfxIpMinVer;
5664 UCHAR GfxIpMajVer;
5665 UCHAR max_shader_engines;
5666 UCHAR max_tile_pipes;
5667 UCHAR max_cu_per_sh;
5668 UCHAR max_sh_per_se;
5669 UCHAR max_backends_per_se;
5670 UCHAR max_texture_channel_caches;
5671 USHORT usHiLoLeakageThreshold;
5672 USHORT usEdcDidtLoDpm7TableOffset;
5673 USHORT usEdcDidtHiDpm7TableOffset;
5674 USHORT usReserverd[3];
5675 }ATOM_GFX_INFO_V2_3;
5676
5677 typedef struct _ATOM_POWER_SOURCE_OBJECT
5678 {
5679 UCHAR ucPwrSrcId;
5680 UCHAR ucPwrSensorType;
5681 UCHAR ucPwrSensId;
5682 UCHAR ucPwrSensSlaveAddr;
5683 UCHAR ucPwrSensRegIndex;
5684 UCHAR ucPwrSensRegBitMask;
5685 UCHAR ucPwrSensActiveState;
5686 UCHAR ucReserve[3];
5687 USHORT usSensPwr;
5688 }ATOM_POWER_SOURCE_OBJECT;
5689
5690 typedef struct _ATOM_POWER_SOURCE_INFO
5691 {
5692 ATOM_COMMON_TABLE_HEADER asHeader;
5693 UCHAR asPwrbehave[16];
5694 ATOM_POWER_SOURCE_OBJECT asPwrObj[1];
5695 }ATOM_POWER_SOURCE_INFO;
5696
5697
5698
5699 #define POWERSOURCE_PCIE_ID1 0x00
5700 #define POWERSOURCE_6PIN_CONNECTOR_ID1 0x01
5701 #define POWERSOURCE_8PIN_CONNECTOR_ID1 0x02
5702 #define POWERSOURCE_6PIN_CONNECTOR_ID2 0x04
5703 #define POWERSOURCE_8PIN_CONNECTOR_ID2 0x08
5704
5705
5706 #define POWER_SENSOR_ALWAYS 0x00
5707 #define POWER_SENSOR_GPIO 0x01
5708 #define POWER_SENSOR_I2C 0x02
5709
5710 typedef struct _ATOM_CLK_VOLT_CAPABILITY
5711 {
5712 ULONG ulVoltageIndex;
5713 ULONG ulMaximumSupportedCLK;
5714 }ATOM_CLK_VOLT_CAPABILITY;
5715
5716
5717 typedef struct _ATOM_CLK_VOLT_CAPABILITY_V2
5718 {
5719 USHORT usVoltageLevel;
5720 ULONG ulMaximumSupportedCLK;
5721 }ATOM_CLK_VOLT_CAPABILITY_V2;
5722
5723 typedef struct _ATOM_AVAILABLE_SCLK_LIST
5724 {
5725 ULONG ulSupportedSCLK;
5726 USHORT usVoltageIndex;
5727 USHORT usVoltageID;
5728 }ATOM_AVAILABLE_SCLK_LIST;
5729
5730
5731 #define ATOM_IGP_INFO_V6_SYSTEM_CONFIG__PCIE_POWER_GATING_ENABLE 1
5732
5733
5734 typedef struct _ATOM_INTEGRATED_SYSTEM_INFO_V6
5735 {
5736 ATOM_COMMON_TABLE_HEADER sHeader;
5737 ULONG ulBootUpEngineClock;
5738 ULONG ulDentistVCOFreq;
5739 ULONG ulBootUpUMAClock;
5740 ATOM_CLK_VOLT_CAPABILITY sDISPCLK_Voltage[4];
5741 ULONG ulBootUpReqDisplayVector;
5742 ULONG ulOtherDisplayMisc;
5743 ULONG ulGPUCapInfo;
5744 ULONG ulSB_MMIO_Base_Addr;
5745 USHORT usRequestedPWMFreqInHz;
5746 UCHAR ucHtcTmpLmt;
5747 UCHAR ucHtcHystLmt;
5748 ULONG ulMinEngineClock;
5749 ULONG ulSystemConfig;
5750 ULONG ulCPUCapInfo;
5751 USHORT usNBP0Voltage;
5752 USHORT usNBP1Voltage;
5753 USHORT usBootUpNBVoltage;
5754 USHORT usExtDispConnInfoOffset;
5755 USHORT usPanelRefreshRateRange;
5756 UCHAR ucMemoryType;
5757 UCHAR ucUMAChannelNumber;
5758 ULONG ulCSR_M3_ARB_CNTL_DEFAULT[10];
5759 ULONG ulCSR_M3_ARB_CNTL_UVD[10];
5760 ULONG ulCSR_M3_ARB_CNTL_FS3D[10];
5761 ATOM_AVAILABLE_SCLK_LIST sAvail_SCLK[5];
5762 ULONG ulGMCRestoreResetTime;
5763 ULONG ulMinimumNClk;
5764 ULONG ulIdleNClk;
5765 ULONG ulDDR_DLL_PowerUpTime;
5766 ULONG ulDDR_PLL_PowerUpTime;
5767 USHORT usPCIEClkSSPercentage;
5768 USHORT usPCIEClkSSType;
5769 USHORT usLvdsSSPercentage;
5770 USHORT usLvdsSSpreadRateIn10Hz;
5771 USHORT usHDMISSPercentage;
5772 USHORT usHDMISSpreadRateIn10Hz;
5773 USHORT usDVISSPercentage;
5774 USHORT usDVISSpreadRateIn10Hz;
5775 ULONG SclkDpmBoostMargin;
5776 ULONG SclkDpmThrottleMargin;
5777 USHORT SclkDpmTdpLimitPG;
5778 USHORT SclkDpmTdpLimitBoost;
5779 ULONG ulBoostEngineCLock;
5780 UCHAR ulBoostVid_2bit;
5781 UCHAR EnableBoost;
5782 USHORT GnbTdpLimit;
5783 USHORT usMaxLVDSPclkFreqInSingleLink;
5784 UCHAR ucLvdsMisc;
5785 UCHAR ucLVDSReserved;
5786 ULONG ulReserved3[15];
5787 ATOM_EXTERNAL_DISPLAY_CONNECTION_INFO sExtDispConnInfo;
5788 }ATOM_INTEGRATED_SYSTEM_INFO_V6;
5789
5790
5791 #define INTEGRATED_SYSTEM_INFO_V6_GPUCAPINFO__TMDSHDMI_COHERENT_SINGLEPLL_MODE 0x01
5792 #define INTEGRATED_SYSTEM_INFO_V6_GPUCAPINFO__DISABLE_AUX_HW_MODE_DETECTION 0x08
5793
5794
5795 #define SYS_INFO_LVDSMISC__888_FPDI_MODE 0x01
5796 #define SYS_INFO_LVDSMISC__DL_CH_SWAP 0x02
5797 #define SYS_INFO_LVDSMISC__888_BPC 0x04
5798 #define SYS_INFO_LVDSMISC__OVERRIDE_EN 0x08
5799 #define SYS_INFO_LVDSMISC__BLON_ACTIVE_LOW 0x10
5800
5801 #define SYS_INFO_LVDSMISC__TRAVIS_LVDS_VOL_OVERRIDE_EN 0x20
5802
5803
5804 #define SYS_INFO_LVDSMISC__VSYNC_ACTIVE_LOW 0x04
5805 #define SYS_INFO_LVDSMISC__HSYNC_ACTIVE_LOW 0x08
5806
5807
5808
5809
5810
5811
5812
5813
5814
5815
5816
5817
5818
5819
5820
5821
5822
5823
5824
5825
5826
5827
5828
5829
5830
5831
5832
5833
5834
5835
5836
5837
5838
5839
5840
5841
5842
5843
5844
5845
5846
5847
5848
5849
5850
5851
5852
5853
5854
5855
5856
5857
5858
5859
5860
5861
5862
5863
5864
5865
5866
5867
5868
5869
5870
5871
5872
5873
5874
5875
5876
5877
5878
5879
5880
5881
5882
5883
5884
5885
5886
5887
5888
5889
5890
5891
5892
5893
5894
5895
5896
5897 typedef struct _ATOM_FUSION_SYSTEM_INFO_V1
5898 {
5899 ATOM_INTEGRATED_SYSTEM_INFO_V6 sIntegratedSysInfo;
5900 ULONG ulPowerplayTable[128];
5901 }ATOM_FUSION_SYSTEM_INFO_V1;
5902
5903
5904 typedef struct _ATOM_TDP_CONFIG_BITS
5905 {
5906 #if ATOM_BIG_ENDIAN
5907 ULONG uReserved:2;
5908 ULONG uTDP_Value:14;
5909 ULONG uCTDP_Value:14;
5910 ULONG uCTDP_Enable:2;
5911 #else
5912 ULONG uCTDP_Enable:2;
5913 ULONG uCTDP_Value:14;
5914 ULONG uTDP_Value:14;
5915 ULONG uReserved:2;
5916 #endif
5917 }ATOM_TDP_CONFIG_BITS;
5918
5919 typedef union _ATOM_TDP_CONFIG
5920 {
5921 ATOM_TDP_CONFIG_BITS TDP_config;
5922 ULONG TDP_config_all;
5923 }ATOM_TDP_CONFIG;
5924
5925
5926
5927
5928
5929
5930
5931
5932 typedef struct _ATOM_INTEGRATED_SYSTEM_INFO_V1_7
5933 {
5934 ATOM_COMMON_TABLE_HEADER sHeader;
5935 ULONG ulBootUpEngineClock;
5936 ULONG ulDentistVCOFreq;
5937 ULONG ulBootUpUMAClock;
5938 ATOM_CLK_VOLT_CAPABILITY sDISPCLK_Voltage[4];
5939 ULONG ulBootUpReqDisplayVector;
5940 ULONG ulOtherDisplayMisc;
5941 ULONG ulGPUCapInfo;
5942 ULONG ulSB_MMIO_Base_Addr;
5943 USHORT usRequestedPWMFreqInHz;
5944 UCHAR ucHtcTmpLmt;
5945 UCHAR ucHtcHystLmt;
5946 ULONG ulMinEngineClock;
5947 ULONG ulSystemConfig;
5948 ULONG ulCPUCapInfo;
5949 USHORT usNBP0Voltage;
5950 USHORT usNBP1Voltage;
5951 USHORT usBootUpNBVoltage;
5952 USHORT usExtDispConnInfoOffset;
5953 USHORT usPanelRefreshRateRange;
5954 UCHAR ucMemoryType;
5955 UCHAR ucUMAChannelNumber;
5956 UCHAR strVBIOSMsg[40];
5957 ATOM_TDP_CONFIG asTdpConfig;
5958 ULONG ulReserved[19];
5959 ATOM_AVAILABLE_SCLK_LIST sAvail_SCLK[5];
5960 ULONG ulGMCRestoreResetTime;
5961 ULONG ulMinimumNClk;
5962 ULONG ulIdleNClk;
5963 ULONG ulDDR_DLL_PowerUpTime;
5964 ULONG ulDDR_PLL_PowerUpTime;
5965 USHORT usPCIEClkSSPercentage;
5966 USHORT usPCIEClkSSType;
5967 USHORT usLvdsSSPercentage;
5968 USHORT usLvdsSSpreadRateIn10Hz;
5969 USHORT usHDMISSPercentage;
5970 USHORT usHDMISSpreadRateIn10Hz;
5971 USHORT usDVISSPercentage;
5972 USHORT usDVISSpreadRateIn10Hz;
5973 ULONG SclkDpmBoostMargin;
5974 ULONG SclkDpmThrottleMargin;
5975 USHORT SclkDpmTdpLimitPG;
5976 USHORT SclkDpmTdpLimitBoost;
5977 ULONG ulBoostEngineCLock;
5978 UCHAR ulBoostVid_2bit;
5979 UCHAR EnableBoost;
5980 USHORT GnbTdpLimit;
5981 USHORT usMaxLVDSPclkFreqInSingleLink;
5982 UCHAR ucLvdsMisc;
5983 UCHAR ucTravisLVDSVolAdjust;
5984 UCHAR ucLVDSPwrOnSeqDIGONtoDE_in4Ms;
5985 UCHAR ucLVDSPwrOnSeqDEtoVARY_BL_in4Ms;
5986 UCHAR ucLVDSPwrOffSeqVARY_BLtoDE_in4Ms;
5987 UCHAR ucLVDSPwrOffSeqDEtoDIGON_in4Ms;
5988 UCHAR ucLVDSOffToOnDelay_in4Ms;
5989 UCHAR ucLVDSPwrOnSeqVARY_BLtoBLON_in4Ms;
5990 UCHAR ucLVDSPwrOffSeqBLONtoVARY_BL_in4Ms;
5991 UCHAR ucMinAllowedBL_Level;
5992 ULONG ulLCDBitDepthControlVal;
5993 ULONG ulNbpStateMemclkFreq[4];
5994 USHORT usNBP2Voltage;
5995 USHORT usNBP3Voltage;
5996 ULONG ulNbpStateNClkFreq[4];
5997 UCHAR ucNBDPMEnable;
5998 UCHAR ucReserved[3];
5999 UCHAR ucDPMState0VclkFid;
6000 UCHAR ucDPMState0DclkFid;
6001 UCHAR ucDPMState1VclkFid;
6002 UCHAR ucDPMState1DclkFid;
6003 UCHAR ucDPMState2VclkFid;
6004 UCHAR ucDPMState2DclkFid;
6005 UCHAR ucDPMState3VclkFid;
6006 UCHAR ucDPMState3DclkFid;
6007 ATOM_EXTERNAL_DISPLAY_CONNECTION_INFO sExtDispConnInfo;
6008 }ATOM_INTEGRATED_SYSTEM_INFO_V1_7;
6009
6010
6011 #define INTEGRATED_SYSTEM_INFO__GET_EDID_CALLBACK_FUNC_SUPPORT 0x01
6012 #define INTEGRATED_SYSTEM_INFO__GET_BOOTUP_DISPLAY_CALLBACK_FUNC_SUPPORT 0x02
6013 #define INTEGRATED_SYSTEM_INFO__GET_EXPANSION_CALLBACK_FUNC_SUPPORT 0x04
6014 #define INTEGRATED_SYSTEM_INFO__FAST_BOOT_SUPPORT 0x08
6015
6016
6017 #define SYS_INFO_GPUCAPS__TMDSHDMI_COHERENT_SINGLEPLL_MODE 0x01
6018 #define SYS_INFO_GPUCAPS__DP_SINGLEPLL_MODE 0x02
6019 #define SYS_INFO_GPUCAPS__DISABLE_AUX_MODE_DETECT 0x08
6020 #define SYS_INFO_GPUCAPS__ENABEL_DFS_BYPASS 0x10
6021
6022 #define SYS_INFO_GPUCAPS__GNB_FAST_RESUME_CAPABLE 0x00010000
6023
6024
6025 #define SYS_INFO_GPUCAPS__BATTERY_BOOST_ENABLE 0x00020000
6026
6027
6028
6029
6030
6031
6032
6033
6034
6035
6036
6037
6038
6039
6040
6041
6042
6043
6044
6045
6046
6047
6048
6049
6050
6051
6052
6053
6054
6055
6056
6057
6058
6059
6060
6061
6062
6063
6064
6065
6066
6067
6068
6069
6070
6071
6072
6073
6074
6075
6076
6077
6078
6079
6080
6081
6082
6083
6084
6085
6086
6087
6088
6089
6090
6091
6092
6093
6094
6095
6096
6097
6098
6099
6100
6101
6102
6103
6104
6105
6106
6107
6108
6109
6110
6111
6112
6113
6114
6115
6116
6117
6118
6119
6120
6121
6122
6123
6124
6125
6126
6127
6128
6129
6130
6131
6132
6133
6134
6135
6136
6137
6138
6139
6140
6141
6142
6143
6144
6145
6146
6147
6148
6149
6150
6151
6152
6153
6154
6155
6156
6157
6158
6159
6160
6161
6162
6163
6164 typedef struct _ATOM_INTEGRATED_SYSTEM_INFO_V1_8
6165 {
6166 ATOM_COMMON_TABLE_HEADER sHeader;
6167 ULONG ulBootUpEngineClock;
6168 ULONG ulDentistVCOFreq;
6169 ULONG ulBootUpUMAClock;
6170 ATOM_CLK_VOLT_CAPABILITY sDISPCLK_Voltage[4];
6171 ULONG ulBootUpReqDisplayVector;
6172 ULONG ulVBIOSMisc;
6173 ULONG ulGPUCapInfo;
6174 ULONG ulDISP_CLK2Freq;
6175 USHORT usRequestedPWMFreqInHz;
6176 UCHAR ucHtcTmpLmt;
6177 UCHAR ucHtcHystLmt;
6178 ULONG ulReserved2;
6179 ULONG ulSystemConfig;
6180 ULONG ulCPUCapInfo;
6181 ULONG ulReserved3;
6182 USHORT usGPUReservedSysMemSize;
6183 USHORT usExtDispConnInfoOffset;
6184 USHORT usPanelRefreshRateRange;
6185 UCHAR ucMemoryType;
6186 UCHAR ucUMAChannelNumber;
6187 UCHAR strVBIOSMsg[40];
6188 ATOM_TDP_CONFIG asTdpConfig;
6189 ULONG ulReserved[19];
6190 ATOM_AVAILABLE_SCLK_LIST sAvail_SCLK[5];
6191 ULONG ulGMCRestoreResetTime;
6192 ULONG ulReserved4;
6193 ULONG ulIdleNClk;
6194 ULONG ulDDR_DLL_PowerUpTime;
6195 ULONG ulDDR_PLL_PowerUpTime;
6196 USHORT usPCIEClkSSPercentage;
6197 USHORT usPCIEClkSSType;
6198 USHORT usLvdsSSPercentage;
6199 USHORT usLvdsSSpreadRateIn10Hz;
6200 USHORT usHDMISSPercentage;
6201 USHORT usHDMISSpreadRateIn10Hz;
6202 USHORT usDVISSPercentage;
6203 USHORT usDVISSpreadRateIn10Hz;
6204 ULONG ulGPUReservedSysMemBaseAddrLo;
6205 ULONG ulGPUReservedSysMemBaseAddrHi;
6206 ATOM_CLK_VOLT_CAPABILITY s5thDISPCLK_Voltage;
6207 ULONG ulReserved5;
6208 USHORT usMaxLVDSPclkFreqInSingleLink;
6209 UCHAR ucLvdsMisc;
6210 UCHAR ucTravisLVDSVolAdjust;
6211 UCHAR ucLVDSPwrOnSeqDIGONtoDE_in4Ms;
6212 UCHAR ucLVDSPwrOnSeqDEtoVARY_BL_in4Ms;
6213 UCHAR ucLVDSPwrOffSeqVARY_BLtoDE_in4Ms;
6214 UCHAR ucLVDSPwrOffSeqDEtoDIGON_in4Ms;
6215 UCHAR ucLVDSOffToOnDelay_in4Ms;
6216 UCHAR ucLVDSPwrOnSeqVARY_BLtoBLON_in4Ms;
6217 UCHAR ucLVDSPwrOffSeqBLONtoVARY_BL_in4Ms;
6218 UCHAR ucMinAllowedBL_Level;
6219 ULONG ulLCDBitDepthControlVal;
6220 ULONG ulNbpStateMemclkFreq[4];
6221 ULONG ulPSPVersion;
6222 ULONG ulNbpStateNClkFreq[4];
6223 USHORT usNBPStateVoltage[4];
6224 USHORT usBootUpNBVoltage;
6225 USHORT usReserved2;
6226 ATOM_EXTERNAL_DISPLAY_CONNECTION_INFO sExtDispConnInfo;
6227 }ATOM_INTEGRATED_SYSTEM_INFO_V1_8;
6228
6229
6230
6231
6232
6233
6234
6235
6236
6237
6238
6239
6240
6241
6242
6243
6244
6245
6246
6247
6248
6249
6250
6251
6252
6253
6254
6255
6256
6257
6258
6259
6260
6261
6262
6263
6264
6265
6266
6267
6268
6269
6270
6271
6272
6273
6274
6275
6276
6277
6278
6279
6280
6281
6282
6283
6284
6285
6286
6287
6288
6289
6290
6291
6292
6293
6294
6295
6296
6297
6298
6299
6300
6301
6302
6303
6304
6305
6306
6307
6308
6309
6310
6311
6312
6313
6314
6315
6316
6317
6318
6319
6320
6321
6322
6323
6324
6325
6326
6327
6328
6329
6330
6331
6332
6333
6334
6335
6336
6337
6338
6339
6340
6341
6342
6343
6344
6345
6346
6347
6348
6349
6350
6351
6352
6353
6354
6355
6356
6357
6358
6359
6360
6361
6362
6363
6364
6365
6366
6367
6368
6369
6370
6371
6372
6373
6374
6375 typedef struct _ATOM_I2C_REG_INFO
6376 {
6377 UCHAR ucI2cRegIndex;
6378 UCHAR ucI2cRegVal;
6379 }ATOM_I2C_REG_INFO;
6380
6381
6382 typedef struct _ATOM_INTEGRATED_SYSTEM_INFO_V1_9
6383 {
6384 ATOM_COMMON_TABLE_HEADER sHeader;
6385 ULONG ulBootUpEngineClock;
6386 ULONG ulDentistVCOFreq;
6387 ULONG ulBootUpUMAClock;
6388 ATOM_CLK_VOLT_CAPABILITY sDISPCLK_Voltage[4];
6389 ULONG ulBootUpReqDisplayVector;
6390 ULONG ulVBIOSMisc;
6391 ULONG ulGPUCapInfo;
6392 ULONG ulDISP_CLK2Freq;
6393 USHORT usRequestedPWMFreqInHz;
6394 UCHAR ucHtcTmpLmt;
6395 UCHAR ucHtcHystLmt;
6396 ULONG ulReserved2;
6397 ULONG ulSystemConfig;
6398 ULONG ulCPUCapInfo;
6399 ULONG ulReserved3;
6400 USHORT usGPUReservedSysMemSize;
6401 USHORT usExtDispConnInfoOffset;
6402 USHORT usPanelRefreshRateRange;
6403 UCHAR ucMemoryType;
6404 UCHAR ucUMAChannelNumber;
6405 UCHAR strVBIOSMsg[40];
6406 ATOM_TDP_CONFIG asTdpConfig;
6407 UCHAR ucExtHDMIReDrvSlvAddr;
6408 UCHAR ucExtHDMIReDrvRegNum;
6409 ATOM_I2C_REG_INFO asExtHDMIRegSetting[9];
6410 ULONG ulReserved[2];
6411 ATOM_CLK_VOLT_CAPABILITY_V2 sDispClkVoltageMapping[8];
6412 ATOM_AVAILABLE_SCLK_LIST sAvail_SCLK[5];
6413 ULONG ulGMCRestoreResetTime;
6414 ULONG ulReserved4;
6415 ULONG ulIdleNClk;
6416 ULONG ulDDR_DLL_PowerUpTime;
6417 ULONG ulDDR_PLL_PowerUpTime;
6418 USHORT usPCIEClkSSPercentage;
6419 USHORT usPCIEClkSSType;
6420 USHORT usLvdsSSPercentage;
6421 USHORT usLvdsSSpreadRateIn10Hz;
6422 USHORT usHDMISSPercentage;
6423 USHORT usHDMISSpreadRateIn10Hz;
6424 USHORT usDVISSPercentage;
6425 USHORT usDVISSpreadRateIn10Hz;
6426 ULONG ulGPUReservedSysMemBaseAddrLo;
6427 ULONG ulGPUReservedSysMemBaseAddrHi;
6428 ULONG ulReserved5[3];
6429 USHORT usMaxLVDSPclkFreqInSingleLink;
6430 UCHAR ucLvdsMisc;
6431 UCHAR ucTravisLVDSVolAdjust;
6432 UCHAR ucLVDSPwrOnSeqDIGONtoDE_in4Ms;
6433 UCHAR ucLVDSPwrOnSeqDEtoVARY_BL_in4Ms;
6434 UCHAR ucLVDSPwrOffSeqVARY_BLtoDE_in4Ms;
6435 UCHAR ucLVDSPwrOffSeqDEtoDIGON_in4Ms;
6436 UCHAR ucLVDSOffToOnDelay_in4Ms;
6437 UCHAR ucLVDSPwrOnSeqVARY_BLtoBLON_in4Ms;
6438 UCHAR ucLVDSPwrOffSeqBLONtoVARY_BL_in4Ms;
6439 UCHAR ucMinAllowedBL_Level;
6440 ULONG ulLCDBitDepthControlVal;
6441 ULONG ulNbpStateMemclkFreq[4];
6442 ULONG ulPSPVersion;
6443 ULONG ulNbpStateNClkFreq[4];
6444 USHORT usNBPStateVoltage[4];
6445 USHORT usBootUpNBVoltage;
6446 UCHAR ucEDPv1_4VSMode;
6447 UCHAR ucReserved2;
6448 ATOM_EXTERNAL_DISPLAY_CONNECTION_INFO sExtDispConnInfo;
6449 }ATOM_INTEGRATED_SYSTEM_INFO_V1_9;
6450
6451
6452
6453 #define EDP_VS_LEGACY_MODE 0
6454 #define EDP_VS_LOW_VDIFF_MODE 1
6455 #define EDP_VS_HIGH_VDIFF_MODE 2
6456 #define EDP_VS_STRETCH_MODE 3
6457 #define EDP_VS_SINGLE_VDIFF_MODE 4
6458 #define EDP_VS_VARIABLE_PREM_MODE 5
6459
6460
6461
6462 #define SYS_INFO_V1_9_GPUCAPSINFO_DISABLE_AUX_MODE_DETECT 0x08
6463 #define SYS_INFO_V1_9_GPUCAPSINFO_ENABEL_DFS_BYPASS 0x10
6464
6465 #define SYS_INFO_V1_9_GPUCAPSINFO_GNB_FAST_RESUME_CAPABLE 0x00010000
6466
6467 #define SYS_INFO_V1_9_GPUCAPINFO_IOMMU_DISABLE 0x00040000
6468
6469 #define SYS_INFO_V1_9_GPUCAPINFO_MARC_APERTURE_ENABLE 0x00080000
6470
6471
6472 typedef struct _DPHY_TIMING_PARA
6473 {
6474 UCHAR ucProfileID;
6475 ULONG ucPara;
6476 } DPHY_TIMING_PARA;
6477
6478 typedef struct _DPHY_ELEC_PARA
6479 {
6480 USHORT usPara[3];
6481 } DPHY_ELEC_PARA;
6482
6483 typedef struct _CAMERA_MODULE_INFO
6484 {
6485 UCHAR ucID;
6486 UCHAR strModuleName[8];
6487 DPHY_TIMING_PARA asTimingPara[6];
6488 } CAMERA_MODULE_INFO;
6489
6490 typedef struct _FLASHLIGHT_INFO
6491 {
6492 UCHAR ucID;
6493 UCHAR strName[8];
6494 } FLASHLIGHT_INFO;
6495
6496 typedef struct _CAMERA_DATA
6497 {
6498 ULONG ulVersionCode;
6499 CAMERA_MODULE_INFO asCameraInfo[3];
6500 FLASHLIGHT_INFO asFlashInfo;
6501 DPHY_ELEC_PARA asDphyElecPara;
6502 ULONG ulCrcVal;
6503 }CAMERA_DATA;
6504
6505 typedef struct _ATOM_INTEGRATED_SYSTEM_INFO_V1_10
6506 {
6507 ATOM_COMMON_TABLE_HEADER sHeader;
6508 ULONG ulBootUpEngineClock;
6509 ULONG ulDentistVCOFreq;
6510 ULONG ulBootUpUMAClock;
6511 ULONG ulReserved0[8];
6512 ULONG ulBootUpReqDisplayVector;
6513 ULONG ulVBIOSMisc;
6514 ULONG ulGPUCapInfo;
6515 ULONG ulReserved1;
6516 USHORT usRequestedPWMFreqInHz;
6517 UCHAR ucHtcTmpLmt;
6518 UCHAR ucHtcHystLmt;
6519 ULONG ulReserved2;
6520 ULONG ulSystemConfig;
6521 ULONG ulCPUCapInfo;
6522 ULONG ulReserved3;
6523 USHORT usGPUReservedSysMemSize;
6524 USHORT usExtDispConnInfoOffset;
6525 USHORT usPanelRefreshRateRange;
6526 UCHAR ucMemoryType;
6527 UCHAR ucUMAChannelNumber;
6528 ULONG ulMsgReserved[10];
6529 ATOM_TDP_CONFIG asTdpConfig;
6530 ULONG ulReserved[7];
6531 ATOM_CLK_VOLT_CAPABILITY_V2 sDispClkVoltageMapping[8];
6532 ULONG ulReserved6[10];
6533 ULONG ulGMCRestoreResetTime;
6534 ULONG ulReserved4;
6535 ULONG ulIdleNClk;
6536 ULONG ulDDR_DLL_PowerUpTime;
6537 ULONG ulDDR_PLL_PowerUpTime;
6538 USHORT usPCIEClkSSPercentage;
6539 USHORT usPCIEClkSSType;
6540 USHORT usLvdsSSPercentage;
6541 USHORT usLvdsSSpreadRateIn10Hz;
6542 USHORT usHDMISSPercentage;
6543 USHORT usHDMISSpreadRateIn10Hz;
6544 USHORT usDVISSPercentage;
6545 USHORT usDVISSpreadRateIn10Hz;
6546 ULONG ulGPUReservedSysMemBaseAddrLo;
6547 ULONG ulGPUReservedSysMemBaseAddrHi;
6548 ULONG ulReserved5[3];
6549 USHORT usMaxLVDSPclkFreqInSingleLink;
6550 UCHAR ucLvdsMisc;
6551 UCHAR ucTravisLVDSVolAdjust;
6552 UCHAR ucLVDSPwrOnSeqDIGONtoDE_in4Ms;
6553 UCHAR ucLVDSPwrOnSeqDEtoVARY_BL_in4Ms;
6554 UCHAR ucLVDSPwrOffSeqVARY_BLtoDE_in4Ms;
6555 UCHAR ucLVDSPwrOffSeqDEtoDIGON_in4Ms;
6556 UCHAR ucLVDSOffToOnDelay_in4Ms;
6557 UCHAR ucLVDSPwrOnSeqVARY_BLtoBLON_in4Ms;
6558 UCHAR ucLVDSPwrOffSeqBLONtoVARY_BL_in4Ms;
6559 UCHAR ucMinAllowedBL_Level;
6560 ULONG ulLCDBitDepthControlVal;
6561 ULONG ulNbpStateMemclkFreq[2];
6562 ULONG ulReserved7[2];
6563 ULONG ulPSPVersion;
6564 ULONG ulNbpStateNClkFreq[4];
6565 USHORT usNBPStateVoltage[4];
6566 USHORT usBootUpNBVoltage;
6567 UCHAR ucEDPv1_4VSMode;
6568 UCHAR ucReserved2;
6569 ATOM_EXTERNAL_DISPLAY_CONNECTION_INFO sExtDispConnInfo;
6570 CAMERA_DATA asCameraInfo;
6571 ULONG ulReserved8[29];
6572 }ATOM_INTEGRATED_SYSTEM_INFO_V1_10;
6573
6574
6575
6576 typedef struct _ATOM_FUSION_SYSTEM_INFO_V2
6577 {
6578 ATOM_INTEGRATED_SYSTEM_INFO_V1_8 sIntegratedSysInfo;
6579 ULONG ulPowerplayTable[128];
6580 }ATOM_FUSION_SYSTEM_INFO_V2;
6581
6582
6583 typedef struct _ATOM_FUSION_SYSTEM_INFO_V3
6584 {
6585 ATOM_INTEGRATED_SYSTEM_INFO_V1_10 sIntegratedSysInfo;
6586 ULONG ulPowerplayTable[192];
6587 }ATOM_FUSION_SYSTEM_INFO_V3;
6588
6589 #define FUSION_V3_OFFSET_FROM_TOP_OF_FB 0x800
6590
6591
6592
6593
6594
6595 #define ICS91719 1
6596 #define ICS91720 2
6597
6598
6599 typedef struct _ATOM_I2C_DATA_RECORD
6600 {
6601 UCHAR ucNunberOfBytes;
6602 UCHAR ucI2CData[1];
6603 }ATOM_I2C_DATA_RECORD;
6604
6605
6606
6607 typedef struct _ATOM_I2C_DEVICE_SETUP_INFO
6608 {
6609 ATOM_I2C_ID_CONFIG_ACCESS sucI2cId;
6610 UCHAR ucSSChipID;
6611 UCHAR ucSSChipSlaveAddr;
6612 UCHAR ucNumOfI2CDataRecords;
6613 ATOM_I2C_DATA_RECORD asI2CData[1];
6614 }ATOM_I2C_DEVICE_SETUP_INFO;
6615
6616
6617 typedef struct _ATOM_ASIC_MVDD_INFO
6618 {
6619 ATOM_COMMON_TABLE_HEADER sHeader;
6620 ATOM_I2C_DEVICE_SETUP_INFO asI2CSetup[1];
6621 }ATOM_ASIC_MVDD_INFO;
6622
6623
6624 #define ATOM_MCLK_SS_INFO ATOM_ASIC_MVDD_INFO
6625
6626
6627
6628
6629 typedef struct _ATOM_ASIC_SS_ASSIGNMENT
6630 {
6631 ULONG ulTargetClockRange;
6632 USHORT usSpreadSpectrumPercentage;
6633 USHORT usSpreadRateInKhz;
6634 UCHAR ucClockIndication;
6635 UCHAR ucSpreadSpectrumMode;
6636 UCHAR ucReserved[2];
6637 }ATOM_ASIC_SS_ASSIGNMENT;
6638
6639
6640
6641 #define ASIC_INTERNAL_MEMORY_SS 1
6642 #define ASIC_INTERNAL_ENGINE_SS 2
6643 #define ASIC_INTERNAL_UVD_SS 3
6644 #define ASIC_INTERNAL_SS_ON_TMDS 4
6645 #define ASIC_INTERNAL_SS_ON_HDMI 5
6646 #define ASIC_INTERNAL_SS_ON_LVDS 6
6647 #define ASIC_INTERNAL_SS_ON_DP 7
6648 #define ASIC_INTERNAL_SS_ON_DCPLL 8
6649 #define ASIC_EXTERNAL_SS_ON_DP_CLOCK 9
6650 #define ASIC_INTERNAL_VCE_SS 10
6651 #define ASIC_INTERNAL_GPUPLL_SS 11
6652
6653
6654 typedef struct _ATOM_ASIC_SS_ASSIGNMENT_V2
6655 {
6656 ULONG ulTargetClockRange;
6657
6658 USHORT usSpreadSpectrumPercentage;
6659 USHORT usSpreadRateIn10Hz;
6660 UCHAR ucClockIndication;
6661 UCHAR ucSpreadSpectrumMode;
6662 UCHAR ucReserved[2];
6663 }ATOM_ASIC_SS_ASSIGNMENT_V2;
6664
6665
6666
6667
6668
6669
6670
6671
6672
6673 typedef struct _ATOM_ASIC_INTERNAL_SS_INFO
6674 {
6675 ATOM_COMMON_TABLE_HEADER sHeader;
6676 ATOM_ASIC_SS_ASSIGNMENT asSpreadSpectrum[4];
6677 }ATOM_ASIC_INTERNAL_SS_INFO;
6678
6679 typedef struct _ATOM_ASIC_INTERNAL_SS_INFO_V2
6680 {
6681 ATOM_COMMON_TABLE_HEADER sHeader;
6682 ATOM_ASIC_SS_ASSIGNMENT_V2 asSpreadSpectrum[1];
6683 }ATOM_ASIC_INTERNAL_SS_INFO_V2;
6684
6685 typedef struct _ATOM_ASIC_SS_ASSIGNMENT_V3
6686 {
6687 ULONG ulTargetClockRange;
6688
6689 USHORT usSpreadSpectrumPercentage;
6690 USHORT usSpreadRateIn10Hz;
6691 UCHAR ucClockIndication;
6692 UCHAR ucSpreadSpectrumMode;
6693 UCHAR ucReserved[2];
6694 }ATOM_ASIC_SS_ASSIGNMENT_V3;
6695
6696
6697 #define SS_MODE_V3_CENTRE_SPREAD_MASK 0x01
6698 #define SS_MODE_V3_EXTERNAL_SS_MASK 0x02
6699 #define SS_MODE_V3_PERCENTAGE_DIV_BY_1000_MASK 0x10
6700
6701 typedef struct _ATOM_ASIC_INTERNAL_SS_INFO_V3
6702 {
6703 ATOM_COMMON_TABLE_HEADER sHeader;
6704 ATOM_ASIC_SS_ASSIGNMENT_V3 asSpreadSpectrum[1];
6705 }ATOM_ASIC_INTERNAL_SS_INFO_V3;
6706
6707
6708
6709 #define ATOM_DEVICE_CONNECT_INFO_DEF 0
6710 #define ATOM_ROM_LOCATION_DEF 1
6711 #define ATOM_TV_STANDARD_DEF 2
6712 #define ATOM_ACTIVE_INFO_DEF 3
6713 #define ATOM_LCD_INFO_DEF 4
6714 #define ATOM_DOS_REQ_INFO_DEF 5
6715 #define ATOM_ACC_CHANGE_INFO_DEF 6
6716 #define ATOM_DOS_MODE_INFO_DEF 7
6717 #define ATOM_I2C_CHANNEL_STATUS_DEF 8
6718 #define ATOM_I2C_CHANNEL_STATUS1_DEF 9
6719 #define ATOM_INTERNAL_TIMER_DEF 10
6720
6721
6722 #define ATOM_S0_CRT1_MONO 0x00000001L
6723 #define ATOM_S0_CRT1_COLOR 0x00000002L
6724 #define ATOM_S0_CRT1_MASK (ATOM_S0_CRT1_MONO+ATOM_S0_CRT1_COLOR)
6725
6726 #define ATOM_S0_TV1_COMPOSITE_A 0x00000004L
6727 #define ATOM_S0_TV1_SVIDEO_A 0x00000008L
6728 #define ATOM_S0_TV1_MASK_A (ATOM_S0_TV1_COMPOSITE_A+ATOM_S0_TV1_SVIDEO_A)
6729
6730 #define ATOM_S0_CV_A 0x00000010L
6731 #define ATOM_S0_CV_DIN_A 0x00000020L
6732 #define ATOM_S0_CV_MASK_A (ATOM_S0_CV_A+ATOM_S0_CV_DIN_A)
6733
6734
6735 #define ATOM_S0_CRT2_MONO 0x00000100L
6736 #define ATOM_S0_CRT2_COLOR 0x00000200L
6737 #define ATOM_S0_CRT2_MASK (ATOM_S0_CRT2_MONO+ATOM_S0_CRT2_COLOR)
6738
6739 #define ATOM_S0_TV1_COMPOSITE 0x00000400L
6740 #define ATOM_S0_TV1_SVIDEO 0x00000800L
6741 #define ATOM_S0_TV1_SCART 0x00004000L
6742 #define ATOM_S0_TV1_MASK (ATOM_S0_TV1_COMPOSITE+ATOM_S0_TV1_SVIDEO+ATOM_S0_TV1_SCART)
6743
6744 #define ATOM_S0_CV 0x00001000L
6745 #define ATOM_S0_CV_DIN 0x00002000L
6746 #define ATOM_S0_CV_MASK (ATOM_S0_CV+ATOM_S0_CV_DIN)
6747
6748 #define ATOM_S0_DFP1 0x00010000L
6749 #define ATOM_S0_DFP2 0x00020000L
6750 #define ATOM_S0_LCD1 0x00040000L
6751 #define ATOM_S0_LCD2 0x00080000L
6752 #define ATOM_S0_DFP6 0x00100000L
6753 #define ATOM_S0_DFP3 0x00200000L
6754 #define ATOM_S0_DFP4 0x00400000L
6755 #define ATOM_S0_DFP5 0x00800000L
6756
6757
6758 #define ATOM_S0_DFP_MASK ATOM_S0_DFP1 | ATOM_S0_DFP2 | ATOM_S0_DFP3 | ATOM_S0_DFP4 | ATOM_S0_DFP5 | ATOM_S0_DFP6
6759
6760 #define ATOM_S0_FAD_REGISTER_BUG 0x02000000L
6761
6762
6763 #define ATOM_S0_THERMAL_STATE_MASK 0x1C000000L
6764 #define ATOM_S0_THERMAL_STATE_SHIFT 26
6765
6766 #define ATOM_S0_SYSTEM_POWER_STATE_MASK 0xE0000000L
6767 #define ATOM_S0_SYSTEM_POWER_STATE_SHIFT 29
6768
6769 #define ATOM_S0_SYSTEM_POWER_STATE_VALUE_AC 1
6770 #define ATOM_S0_SYSTEM_POWER_STATE_VALUE_DC 2
6771 #define ATOM_S0_SYSTEM_POWER_STATE_VALUE_LITEAC 3
6772 #define ATOM_S0_SYSTEM_POWER_STATE_VALUE_LIT2AC 4
6773
6774
6775 #define ATOM_S0_CRT1_MONOb0 0x01
6776 #define ATOM_S0_CRT1_COLORb0 0x02
6777 #define ATOM_S0_CRT1_MASKb0 (ATOM_S0_CRT1_MONOb0+ATOM_S0_CRT1_COLORb0)
6778
6779 #define ATOM_S0_TV1_COMPOSITEb0 0x04
6780 #define ATOM_S0_TV1_SVIDEOb0 0x08
6781 #define ATOM_S0_TV1_MASKb0 (ATOM_S0_TV1_COMPOSITEb0+ATOM_S0_TV1_SVIDEOb0)
6782
6783 #define ATOM_S0_CVb0 0x10
6784 #define ATOM_S0_CV_DINb0 0x20
6785 #define ATOM_S0_CV_MASKb0 (ATOM_S0_CVb0+ATOM_S0_CV_DINb0)
6786
6787 #define ATOM_S0_CRT2_MONOb1 0x01
6788 #define ATOM_S0_CRT2_COLORb1 0x02
6789 #define ATOM_S0_CRT2_MASKb1 (ATOM_S0_CRT2_MONOb1+ATOM_S0_CRT2_COLORb1)
6790
6791 #define ATOM_S0_TV1_COMPOSITEb1 0x04
6792 #define ATOM_S0_TV1_SVIDEOb1 0x08
6793 #define ATOM_S0_TV1_SCARTb1 0x40
6794 #define ATOM_S0_TV1_MASKb1 (ATOM_S0_TV1_COMPOSITEb1+ATOM_S0_TV1_SVIDEOb1+ATOM_S0_TV1_SCARTb1)
6795
6796 #define ATOM_S0_CVb1 0x10
6797 #define ATOM_S0_CV_DINb1 0x20
6798 #define ATOM_S0_CV_MASKb1 (ATOM_S0_CVb1+ATOM_S0_CV_DINb1)
6799
6800 #define ATOM_S0_DFP1b2 0x01
6801 #define ATOM_S0_DFP2b2 0x02
6802 #define ATOM_S0_LCD1b2 0x04
6803 #define ATOM_S0_LCD2b2 0x08
6804 #define ATOM_S0_DFP6b2 0x10
6805 #define ATOM_S0_DFP3b2 0x20
6806 #define ATOM_S0_DFP4b2 0x40
6807 #define ATOM_S0_DFP5b2 0x80
6808
6809
6810 #define ATOM_S0_THERMAL_STATE_MASKb3 0x1C
6811 #define ATOM_S0_THERMAL_STATE_SHIFTb3 2
6812
6813 #define ATOM_S0_SYSTEM_POWER_STATE_MASKb3 0xE0
6814 #define ATOM_S0_LCD1_SHIFT 18
6815
6816
6817 #define ATOM_S1_ROM_LOCATION_MASK 0x0000FFFFL
6818 #define ATOM_S1_PCI_BUS_DEV_MASK 0xFFFF0000L
6819
6820
6821 #define ATOM_S2_TV1_STANDARD_MASK 0x0000000FL
6822 #define ATOM_S2_CURRENT_BL_LEVEL_MASK 0x0000FF00L
6823 #define ATOM_S2_CURRENT_BL_LEVEL_SHIFT 8
6824
6825 #define ATOM_S2_FORCEDLOWPWRMODE_STATE_MASK 0x0C000000L
6826 #define ATOM_S2_FORCEDLOWPWRMODE_STATE_MASK_SHIFT 26
6827 #define ATOM_S2_FORCEDLOWPWRMODE_STATE_CHANGE 0x10000000L
6828
6829 #define ATOM_S2_DEVICE_DPMS_STATE 0x00010000L
6830 #define ATOM_S2_VRI_BRIGHT_ENABLE 0x20000000L
6831
6832 #define ATOM_S2_DISPLAY_ROTATION_0_DEGREE 0x0
6833 #define ATOM_S2_DISPLAY_ROTATION_90_DEGREE 0x1
6834 #define ATOM_S2_DISPLAY_ROTATION_180_DEGREE 0x2
6835 #define ATOM_S2_DISPLAY_ROTATION_270_DEGREE 0x3
6836 #define ATOM_S2_DISPLAY_ROTATION_DEGREE_SHIFT 30
6837 #define ATOM_S2_DISPLAY_ROTATION_ANGLE_MASK 0xC0000000L
6838
6839
6840
6841 #define ATOM_S2_TV1_STANDARD_MASKb0 0x0F
6842 #define ATOM_S2_CURRENT_BL_LEVEL_MASKb1 0xFF
6843 #define ATOM_S2_DEVICE_DPMS_STATEb2 0x01
6844
6845 #define ATOM_S2_TMDS_COHERENT_MODEb3 0x10
6846 #define ATOM_S2_VRI_BRIGHT_ENABLEb3 0x20
6847 #define ATOM_S2_ROTATION_STATE_MASKb3 0xC0
6848
6849
6850
6851 #define ATOM_S3_CRT1_ACTIVE 0x00000001L
6852 #define ATOM_S3_LCD1_ACTIVE 0x00000002L
6853 #define ATOM_S3_TV1_ACTIVE 0x00000004L
6854 #define ATOM_S3_DFP1_ACTIVE 0x00000008L
6855 #define ATOM_S3_CRT2_ACTIVE 0x00000010L
6856 #define ATOM_S3_LCD2_ACTIVE 0x00000020L
6857 #define ATOM_S3_DFP6_ACTIVE 0x00000040L
6858 #define ATOM_S3_DFP2_ACTIVE 0x00000080L
6859 #define ATOM_S3_CV_ACTIVE 0x00000100L
6860 #define ATOM_S3_DFP3_ACTIVE 0x00000200L
6861 #define ATOM_S3_DFP4_ACTIVE 0x00000400L
6862 #define ATOM_S3_DFP5_ACTIVE 0x00000800L
6863
6864
6865 #define ATOM_S3_DEVICE_ACTIVE_MASK 0x00000FFFL
6866
6867 #define ATOM_S3_LCD_FULLEXPANSION_ACTIVE 0x00001000L
6868 #define ATOM_S3_LCD_EXPANSION_ASPEC_RATIO_ACTIVE 0x00002000L
6869
6870 #define ATOM_S3_CRT1_CRTC_ACTIVE 0x00010000L
6871 #define ATOM_S3_LCD1_CRTC_ACTIVE 0x00020000L
6872 #define ATOM_S3_TV1_CRTC_ACTIVE 0x00040000L
6873 #define ATOM_S3_DFP1_CRTC_ACTIVE 0x00080000L
6874 #define ATOM_S3_CRT2_CRTC_ACTIVE 0x00100000L
6875 #define ATOM_S3_LCD2_CRTC_ACTIVE 0x00200000L
6876 #define ATOM_S3_DFP6_CRTC_ACTIVE 0x00400000L
6877 #define ATOM_S3_DFP2_CRTC_ACTIVE 0x00800000L
6878 #define ATOM_S3_CV_CRTC_ACTIVE 0x01000000L
6879 #define ATOM_S3_DFP3_CRTC_ACTIVE 0x02000000L
6880 #define ATOM_S3_DFP4_CRTC_ACTIVE 0x04000000L
6881 #define ATOM_S3_DFP5_CRTC_ACTIVE 0x08000000L
6882
6883
6884 #define ATOM_S3_DEVICE_CRTC_ACTIVE_MASK 0x0FFF0000L
6885 #define ATOM_S3_ASIC_GUI_ENGINE_HUNG 0x20000000L
6886
6887 #define ATOM_S3_ALLOW_FAST_PWR_SWITCH 0x40000000L
6888 #define ATOM_S3_RQST_GPU_USE_MIN_PWR 0x80000000L
6889
6890
6891
6892
6893 #define ATOM_S3_CRT1_ACTIVEb0 0x01
6894 #define ATOM_S3_LCD1_ACTIVEb0 0x02
6895 #define ATOM_S3_TV1_ACTIVEb0 0x04
6896 #define ATOM_S3_DFP1_ACTIVEb0 0x08
6897 #define ATOM_S3_CRT2_ACTIVEb0 0x10
6898 #define ATOM_S3_LCD2_ACTIVEb0 0x20
6899 #define ATOM_S3_DFP6_ACTIVEb0 0x40
6900 #define ATOM_S3_DFP2_ACTIVEb0 0x80
6901 #define ATOM_S3_CV_ACTIVEb1 0x01
6902 #define ATOM_S3_DFP3_ACTIVEb1 0x02
6903 #define ATOM_S3_DFP4_ACTIVEb1 0x04
6904 #define ATOM_S3_DFP5_ACTIVEb1 0x08
6905
6906
6907 #define ATOM_S3_ACTIVE_CRTC1w0 0xFFF
6908
6909 #define ATOM_S3_CRT1_CRTC_ACTIVEb2 0x01
6910 #define ATOM_S3_LCD1_CRTC_ACTIVEb2 0x02
6911 #define ATOM_S3_TV1_CRTC_ACTIVEb2 0x04
6912 #define ATOM_S3_DFP1_CRTC_ACTIVEb2 0x08
6913 #define ATOM_S3_CRT2_CRTC_ACTIVEb2 0x10
6914 #define ATOM_S3_LCD2_CRTC_ACTIVEb2 0x20
6915 #define ATOM_S3_DFP6_CRTC_ACTIVEb2 0x40
6916 #define ATOM_S3_DFP2_CRTC_ACTIVEb2 0x80
6917 #define ATOM_S3_CV_CRTC_ACTIVEb3 0x01
6918 #define ATOM_S3_DFP3_CRTC_ACTIVEb3 0x02
6919 #define ATOM_S3_DFP4_CRTC_ACTIVEb3 0x04
6920 #define ATOM_S3_DFP5_CRTC_ACTIVEb3 0x08
6921
6922
6923 #define ATOM_S3_ACTIVE_CRTC2w1 0xFFF
6924
6925
6926
6927 #define ATOM_S4_LCD1_PANEL_ID_MASK 0x000000FFL
6928 #define ATOM_S4_LCD1_REFRESH_MASK 0x0000FF00L
6929 #define ATOM_S4_LCD1_REFRESH_SHIFT 8
6930
6931
6932 #define ATOM_S4_LCD1_PANEL_ID_MASKb0 0x0FF
6933 #define ATOM_S4_LCD1_REFRESH_MASKb1 ATOM_S4_LCD1_PANEL_ID_MASKb0
6934 #define ATOM_S4_VRAM_INFO_MASKb2 ATOM_S4_LCD1_PANEL_ID_MASKb0
6935
6936
6937 #define ATOM_S5_DOS_REQ_CRT1b0 0x01
6938 #define ATOM_S5_DOS_REQ_LCD1b0 0x02
6939 #define ATOM_S5_DOS_REQ_TV1b0 0x04
6940 #define ATOM_S5_DOS_REQ_DFP1b0 0x08
6941 #define ATOM_S5_DOS_REQ_CRT2b0 0x10
6942 #define ATOM_S5_DOS_REQ_LCD2b0 0x20
6943 #define ATOM_S5_DOS_REQ_DFP6b0 0x40
6944 #define ATOM_S5_DOS_REQ_DFP2b0 0x80
6945 #define ATOM_S5_DOS_REQ_CVb1 0x01
6946 #define ATOM_S5_DOS_REQ_DFP3b1 0x02
6947 #define ATOM_S5_DOS_REQ_DFP4b1 0x04
6948 #define ATOM_S5_DOS_REQ_DFP5b1 0x08
6949
6950
6951 #define ATOM_S5_DOS_REQ_DEVICEw0 0x0FFF
6952
6953 #define ATOM_S5_DOS_REQ_CRT1 0x0001
6954 #define ATOM_S5_DOS_REQ_LCD1 0x0002
6955 #define ATOM_S5_DOS_REQ_TV1 0x0004
6956 #define ATOM_S5_DOS_REQ_DFP1 0x0008
6957 #define ATOM_S5_DOS_REQ_CRT2 0x0010
6958 #define ATOM_S5_DOS_REQ_LCD2 0x0020
6959 #define ATOM_S5_DOS_REQ_DFP6 0x0040
6960 #define ATOM_S5_DOS_REQ_DFP2 0x0080
6961 #define ATOM_S5_DOS_REQ_CV 0x0100
6962 #define ATOM_S5_DOS_REQ_DFP3 0x0200
6963 #define ATOM_S5_DOS_REQ_DFP4 0x0400
6964 #define ATOM_S5_DOS_REQ_DFP5 0x0800
6965
6966 #define ATOM_S5_DOS_FORCE_CRT1b2 ATOM_S5_DOS_REQ_CRT1b0
6967 #define ATOM_S5_DOS_FORCE_TV1b2 ATOM_S5_DOS_REQ_TV1b0
6968 #define ATOM_S5_DOS_FORCE_CRT2b2 ATOM_S5_DOS_REQ_CRT2b0
6969 #define ATOM_S5_DOS_FORCE_CVb3 ATOM_S5_DOS_REQ_CVb1
6970 #define ATOM_S5_DOS_FORCE_DEVICEw1 (ATOM_S5_DOS_FORCE_CRT1b2+ATOM_S5_DOS_FORCE_TV1b2+ATOM_S5_DOS_FORCE_CRT2b2+\
6971 (ATOM_S5_DOS_FORCE_CVb3<<8))
6972
6973 #define ATOM_S6_DEVICE_CHANGE 0x00000001L
6974 #define ATOM_S6_SCALER_CHANGE 0x00000002L
6975 #define ATOM_S6_LID_CHANGE 0x00000004L
6976 #define ATOM_S6_DOCKING_CHANGE 0x00000008L
6977 #define ATOM_S6_ACC_MODE 0x00000010L
6978 #define ATOM_S6_EXT_DESKTOP_MODE 0x00000020L
6979 #define ATOM_S6_LID_STATE 0x00000040L
6980 #define ATOM_S6_DOCK_STATE 0x00000080L
6981 #define ATOM_S6_CRITICAL_STATE 0x00000100L
6982 #define ATOM_S6_HW_I2C_BUSY_STATE 0x00000200L
6983 #define ATOM_S6_THERMAL_STATE_CHANGE 0x00000400L
6984 #define ATOM_S6_INTERRUPT_SET_BY_BIOS 0x00000800L
6985 #define ATOM_S6_REQ_LCD_EXPANSION_FULL 0x00001000L
6986 #define ATOM_S6_REQ_LCD_EXPANSION_ASPEC_RATIO 0x00002000L
6987
6988 #define ATOM_S6_DISPLAY_STATE_CHANGE 0x00004000L
6989 #define ATOM_S6_I2C_STATE_CHANGE 0x00008000L
6990
6991 #define ATOM_S6_ACC_REQ_CRT1 0x00010000L
6992 #define ATOM_S6_ACC_REQ_LCD1 0x00020000L
6993 #define ATOM_S6_ACC_REQ_TV1 0x00040000L
6994 #define ATOM_S6_ACC_REQ_DFP1 0x00080000L
6995 #define ATOM_S6_ACC_REQ_CRT2 0x00100000L
6996 #define ATOM_S6_ACC_REQ_LCD2 0x00200000L
6997 #define ATOM_S6_ACC_REQ_DFP6 0x00400000L
6998 #define ATOM_S6_ACC_REQ_DFP2 0x00800000L
6999 #define ATOM_S6_ACC_REQ_CV 0x01000000L
7000 #define ATOM_S6_ACC_REQ_DFP3 0x02000000L
7001 #define ATOM_S6_ACC_REQ_DFP4 0x04000000L
7002 #define ATOM_S6_ACC_REQ_DFP5 0x08000000L
7003
7004 #define ATOM_S6_ACC_REQ_MASK 0x0FFF0000L
7005 #define ATOM_S6_SYSTEM_POWER_MODE_CHANGE 0x10000000L
7006 #define ATOM_S6_ACC_BLOCK_DISPLAY_SWITCH 0x20000000L
7007 #define ATOM_S6_VRI_BRIGHTNESS_CHANGE 0x40000000L
7008 #define ATOM_S6_CONFIG_DISPLAY_CHANGE_MASK 0x80000000L
7009
7010
7011 #define ATOM_S6_DEVICE_CHANGEb0 0x01
7012 #define ATOM_S6_SCALER_CHANGEb0 0x02
7013 #define ATOM_S6_LID_CHANGEb0 0x04
7014 #define ATOM_S6_DOCKING_CHANGEb0 0x08
7015 #define ATOM_S6_ACC_MODEb0 0x10
7016 #define ATOM_S6_EXT_DESKTOP_MODEb0 0x20
7017 #define ATOM_S6_LID_STATEb0 0x40
7018 #define ATOM_S6_DOCK_STATEb0 0x80
7019 #define ATOM_S6_CRITICAL_STATEb1 0x01
7020 #define ATOM_S6_HW_I2C_BUSY_STATEb1 0x02
7021 #define ATOM_S6_THERMAL_STATE_CHANGEb1 0x04
7022 #define ATOM_S6_INTERRUPT_SET_BY_BIOSb1 0x08
7023 #define ATOM_S6_REQ_LCD_EXPANSION_FULLb1 0x10
7024 #define ATOM_S6_REQ_LCD_EXPANSION_ASPEC_RATIOb1 0x20
7025
7026 #define ATOM_S6_ACC_REQ_CRT1b2 0x01
7027 #define ATOM_S6_ACC_REQ_LCD1b2 0x02
7028 #define ATOM_S6_ACC_REQ_TV1b2 0x04
7029 #define ATOM_S6_ACC_REQ_DFP1b2 0x08
7030 #define ATOM_S6_ACC_REQ_CRT2b2 0x10
7031 #define ATOM_S6_ACC_REQ_LCD2b2 0x20
7032 #define ATOM_S6_ACC_REQ_DFP6b2 0x40
7033 #define ATOM_S6_ACC_REQ_DFP2b2 0x80
7034 #define ATOM_S6_ACC_REQ_CVb3 0x01
7035 #define ATOM_S6_ACC_REQ_DFP3b3 0x02
7036 #define ATOM_S6_ACC_REQ_DFP4b3 0x04
7037 #define ATOM_S6_ACC_REQ_DFP5b3 0x08
7038
7039 #define ATOM_S6_ACC_REQ_DEVICEw1 ATOM_S5_DOS_REQ_DEVICEw0
7040 #define ATOM_S6_SYSTEM_POWER_MODE_CHANGEb3 0x10
7041 #define ATOM_S6_ACC_BLOCK_DISPLAY_SWITCHb3 0x20
7042 #define ATOM_S6_VRI_BRIGHTNESS_CHANGEb3 0x40
7043 #define ATOM_S6_CONFIG_DISPLAY_CHANGEb3 0x80
7044
7045 #define ATOM_S6_DEVICE_CHANGE_SHIFT 0
7046 #define ATOM_S6_SCALER_CHANGE_SHIFT 1
7047 #define ATOM_S6_LID_CHANGE_SHIFT 2
7048 #define ATOM_S6_DOCKING_CHANGE_SHIFT 3
7049 #define ATOM_S6_ACC_MODE_SHIFT 4
7050 #define ATOM_S6_EXT_DESKTOP_MODE_SHIFT 5
7051 #define ATOM_S6_LID_STATE_SHIFT 6
7052 #define ATOM_S6_DOCK_STATE_SHIFT 7
7053 #define ATOM_S6_CRITICAL_STATE_SHIFT 8
7054 #define ATOM_S6_HW_I2C_BUSY_STATE_SHIFT 9
7055 #define ATOM_S6_THERMAL_STATE_CHANGE_SHIFT 10
7056 #define ATOM_S6_INTERRUPT_SET_BY_BIOS_SHIFT 11
7057 #define ATOM_S6_REQ_SCALER_SHIFT 12
7058 #define ATOM_S6_REQ_SCALER_ARATIO_SHIFT 13
7059 #define ATOM_S6_DISPLAY_STATE_CHANGE_SHIFT 14
7060 #define ATOM_S6_I2C_STATE_CHANGE_SHIFT 15
7061 #define ATOM_S6_SYSTEM_POWER_MODE_CHANGE_SHIFT 28
7062 #define ATOM_S6_ACC_BLOCK_DISPLAY_SWITCH_SHIFT 29
7063 #define ATOM_S6_VRI_BRIGHTNESS_CHANGE_SHIFT 30
7064 #define ATOM_S6_CONFIG_DISPLAY_CHANGE_SHIFT 31
7065
7066
7067 #define ATOM_S7_DOS_MODE_TYPEb0 0x03
7068 #define ATOM_S7_DOS_MODE_VGAb0 0x00
7069 #define ATOM_S7_DOS_MODE_VESAb0 0x01
7070 #define ATOM_S7_DOS_MODE_EXTb0 0x02
7071 #define ATOM_S7_DOS_MODE_PIXEL_DEPTHb0 0x0C
7072 #define ATOM_S7_DOS_MODE_PIXEL_FORMATb0 0xF0
7073 #define ATOM_S7_DOS_8BIT_DAC_ENb1 0x01
7074 #define ATOM_S7_ASIC_INIT_COMPLETEb1 0x02
7075 #define ATOM_S7_ASIC_INIT_COMPLETE_MASK 0x00000200
7076 #define ATOM_S7_DOS_MODE_NUMBERw1 0x0FFFF
7077
7078 #define ATOM_S7_DOS_8BIT_DAC_EN_SHIFT 8
7079
7080
7081 #define ATOM_S8_I2C_CHANNEL_BUSY_MASK 0x00000FFFF
7082 #define ATOM_S8_I2C_HW_ENGINE_BUSY_MASK 0x0FFFF0000
7083
7084 #define ATOM_S8_I2C_CHANNEL_BUSY_SHIFT 0
7085 #define ATOM_S8_I2C_ENGINE_BUSY_SHIFT 16
7086
7087
7088 #ifndef ATOM_S9_I2C_CHANNEL_COMPLETED_MASK
7089 #define ATOM_S9_I2C_CHANNEL_COMPLETED_MASK 0x0000FFFF
7090 #endif
7091 #ifndef ATOM_S9_I2C_CHANNEL_ABORTED_MASK
7092 #define ATOM_S9_I2C_CHANNEL_ABORTED_MASK 0xFFFF0000
7093 #endif
7094 #ifndef ATOM_S9_I2C_CHANNEL_COMPLETED_SHIFT
7095 #define ATOM_S9_I2C_CHANNEL_COMPLETED_SHIFT 0
7096 #endif
7097 #ifndef ATOM_S9_I2C_CHANNEL_ABORTED_SHIFT
7098 #define ATOM_S9_I2C_CHANNEL_ABORTED_SHIFT 16
7099 #endif
7100
7101
7102 #define ATOM_FLAG_SET 0x20
7103 #define ATOM_FLAG_CLEAR 0
7104 #define CLEAR_ATOM_S6_ACC_MODE ((ATOM_ACC_CHANGE_INFO_DEF << 8 )|ATOM_S6_ACC_MODE_SHIFT | ATOM_FLAG_CLEAR)
7105 #define SET_ATOM_S6_DEVICE_CHANGE ((ATOM_ACC_CHANGE_INFO_DEF << 8 )|ATOM_S6_DEVICE_CHANGE_SHIFT | ATOM_FLAG_SET)
7106 #define SET_ATOM_S6_VRI_BRIGHTNESS_CHANGE ((ATOM_ACC_CHANGE_INFO_DEF << 8 )|ATOM_S6_VRI_BRIGHTNESS_CHANGE_SHIFT | ATOM_FLAG_SET)
7107 #define SET_ATOM_S6_SCALER_CHANGE ((ATOM_ACC_CHANGE_INFO_DEF << 8 )|ATOM_S6_SCALER_CHANGE_SHIFT | ATOM_FLAG_SET)
7108 #define SET_ATOM_S6_LID_CHANGE ((ATOM_ACC_CHANGE_INFO_DEF << 8 )|ATOM_S6_LID_CHANGE_SHIFT | ATOM_FLAG_SET)
7109
7110 #define SET_ATOM_S6_LID_STATE ((ATOM_ACC_CHANGE_INFO_DEF << 8 )|ATOM_S6_LID_STATE_SHIFT | ATOM_FLAG_SET)
7111 #define CLEAR_ATOM_S6_LID_STATE ((ATOM_ACC_CHANGE_INFO_DEF << 8 )|ATOM_S6_LID_STATE_SHIFT | ATOM_FLAG_CLEAR)
7112
7113 #define SET_ATOM_S6_DOCK_CHANGE ((ATOM_ACC_CHANGE_INFO_DEF << 8 )|ATOM_S6_DOCKING_CHANGE_SHIFT | ATOM_FLAG_SET)
7114 #define SET_ATOM_S6_DOCK_STATE ((ATOM_ACC_CHANGE_INFO_DEF << 8 )|ATOM_S6_DOCK_STATE_SHIFT | ATOM_FLAG_SET)
7115 #define CLEAR_ATOM_S6_DOCK_STATE ((ATOM_ACC_CHANGE_INFO_DEF << 8 )|ATOM_S6_DOCK_STATE_SHIFT | ATOM_FLAG_CLEAR)
7116
7117 #define SET_ATOM_S6_THERMAL_STATE_CHANGE ((ATOM_ACC_CHANGE_INFO_DEF << 8 )|ATOM_S6_THERMAL_STATE_CHANGE_SHIFT | ATOM_FLAG_SET)
7118 #define SET_ATOM_S6_SYSTEM_POWER_MODE_CHANGE ((ATOM_ACC_CHANGE_INFO_DEF << 8 )|ATOM_S6_SYSTEM_POWER_MODE_CHANGE_SHIFT | ATOM_FLAG_SET)
7119 #define SET_ATOM_S6_INTERRUPT_SET_BY_BIOS ((ATOM_ACC_CHANGE_INFO_DEF << 8 )|ATOM_S6_INTERRUPT_SET_BY_BIOS_SHIFT | ATOM_FLAG_SET)
7120
7121 #define SET_ATOM_S6_CRITICAL_STATE ((ATOM_ACC_CHANGE_INFO_DEF << 8 )|ATOM_S6_CRITICAL_STATE_SHIFT | ATOM_FLAG_SET)
7122 #define CLEAR_ATOM_S6_CRITICAL_STATE ((ATOM_ACC_CHANGE_INFO_DEF << 8 )|ATOM_S6_CRITICAL_STATE_SHIFT | ATOM_FLAG_CLEAR)
7123
7124 #define SET_ATOM_S6_REQ_SCALER ((ATOM_ACC_CHANGE_INFO_DEF << 8 )|ATOM_S6_REQ_SCALER_SHIFT | ATOM_FLAG_SET)
7125 #define CLEAR_ATOM_S6_REQ_SCALER ((ATOM_ACC_CHANGE_INFO_DEF << 8 )|ATOM_S6_REQ_SCALER_SHIFT | ATOM_FLAG_CLEAR )
7126
7127 #define SET_ATOM_S6_REQ_SCALER_ARATIO ((ATOM_ACC_CHANGE_INFO_DEF << 8 )|ATOM_S6_REQ_SCALER_ARATIO_SHIFT | ATOM_FLAG_SET )
7128 #define CLEAR_ATOM_S6_REQ_SCALER_ARATIO ((ATOM_ACC_CHANGE_INFO_DEF << 8 )|ATOM_S6_REQ_SCALER_ARATIO_SHIFT | ATOM_FLAG_CLEAR )
7129
7130 #define SET_ATOM_S6_I2C_STATE_CHANGE ((ATOM_ACC_CHANGE_INFO_DEF << 8 )|ATOM_S6_I2C_STATE_CHANGE_SHIFT | ATOM_FLAG_SET )
7131
7132 #define SET_ATOM_S6_DISPLAY_STATE_CHANGE ((ATOM_ACC_CHANGE_INFO_DEF << 8 )|ATOM_S6_DISPLAY_STATE_CHANGE_SHIFT | ATOM_FLAG_SET )
7133
7134 #define SET_ATOM_S6_DEVICE_RECONFIG ((ATOM_ACC_CHANGE_INFO_DEF << 8 )|ATOM_S6_CONFIG_DISPLAY_CHANGE_SHIFT | ATOM_FLAG_SET)
7135 #define CLEAR_ATOM_S0_LCD1 ((ATOM_DEVICE_CONNECT_INFO_DEF << 8 )| ATOM_S0_LCD1_SHIFT | ATOM_FLAG_CLEAR )
7136 #define SET_ATOM_S7_DOS_8BIT_DAC_EN ((ATOM_DOS_MODE_INFO_DEF << 8 )|ATOM_S7_DOS_8BIT_DAC_EN_SHIFT | ATOM_FLAG_SET )
7137 #define CLEAR_ATOM_S7_DOS_8BIT_DAC_EN ((ATOM_DOS_MODE_INFO_DEF << 8 )|ATOM_S7_DOS_8BIT_DAC_EN_SHIFT | ATOM_FLAG_CLEAR )
7138
7139
7140
7141
7142
7143
7144
7145 #ifdef __cplusplus
7146 #define GetIndexIntoMasterTable(MasterOrData, FieldName) ((reinterpret_cast<char*>(&(static_cast<ATOM_MASTER_LIST_OF_##MasterOrData##_TABLES*>(0))->FieldName)-static_cast<char*>(0))/sizeof(USHORT))
7147
7148 #define GET_COMMAND_TABLE_COMMANDSET_REVISION(TABLE_HEADER_OFFSET) (((static_cast<ATOM_COMMON_TABLE_HEADER*>(TABLE_HEADER_OFFSET))->ucTableFormatRevision )&0x3F)
7149 #define GET_COMMAND_TABLE_PARAMETER_REVISION(TABLE_HEADER_OFFSET) (((static_cast<ATOM_COMMON_TABLE_HEADER*>(TABLE_HEADER_OFFSET))->ucTableContentRevision)&0x3F)
7150 #else
7151 #define GetIndexIntoMasterTable(MasterOrData, FieldName) (offsetof(ATOM_MASTER_LIST_OF_##MasterOrData##_TABLES, FieldName) / sizeof(USHORT))
7152
7153 #define GET_COMMAND_TABLE_COMMANDSET_REVISION(TABLE_HEADER_OFFSET) ((((ATOM_COMMON_TABLE_HEADER*)TABLE_HEADER_OFFSET)->ucTableFormatRevision)&0x3F)
7154 #define GET_COMMAND_TABLE_PARAMETER_REVISION(TABLE_HEADER_OFFSET) ((((ATOM_COMMON_TABLE_HEADER*)TABLE_HEADER_OFFSET)->ucTableContentRevision)&0x3F)
7155 #endif
7156
7157 #define GET_DATA_TABLE_MAJOR_REVISION GET_COMMAND_TABLE_COMMANDSET_REVISION
7158 #define GET_DATA_TABLE_MINOR_REVISION GET_COMMAND_TABLE_PARAMETER_REVISION
7159
7160
7161
7162
7163 #define ATOM_DAC_SRC 0x80
7164 #define ATOM_SRC_DAC1 0
7165 #define ATOM_SRC_DAC2 0x80
7166
7167
7168
7169 typedef struct _MEMORY_PLLINIT_PARAMETERS
7170 {
7171 ULONG ulTargetMemoryClock;
7172 UCHAR ucAction;
7173 UCHAR ucFbDiv_Hi;
7174 UCHAR ucFbDiv;
7175 UCHAR ucPostDiv;
7176 }MEMORY_PLLINIT_PARAMETERS;
7177
7178 #define MEMORY_PLLINIT_PS_ALLOCATION MEMORY_PLLINIT_PARAMETERS
7179
7180
7181 #define GPIO_PIN_WRITE 0x01
7182 #define GPIO_PIN_READ 0x00
7183
7184 typedef struct _GPIO_PIN_CONTROL_PARAMETERS
7185 {
7186 UCHAR ucGPIO_ID;
7187 UCHAR ucGPIOBitShift;
7188 UCHAR ucGPIOBitVal;
7189 UCHAR ucAction;
7190 }GPIO_PIN_CONTROL_PARAMETERS;
7191
7192 typedef struct _ENABLE_SCALER_PARAMETERS
7193 {
7194 UCHAR ucScaler;
7195 UCHAR ucEnable;
7196 UCHAR ucTVStandard;
7197 UCHAR ucPadding[1];
7198 }ENABLE_SCALER_PARAMETERS;
7199 #define ENABLE_SCALER_PS_ALLOCATION ENABLE_SCALER_PARAMETERS
7200
7201
7202 #define SCALER_BYPASS_AUTO_CENTER_NO_REPLICATION 0
7203 #define SCALER_BYPASS_AUTO_CENTER_AUTO_REPLICATION 1
7204 #define SCALER_ENABLE_2TAP_ALPHA_MODE 2
7205 #define SCALER_ENABLE_MULTITAP_MODE 3
7206
7207 typedef struct _ENABLE_HARDWARE_ICON_CURSOR_PARAMETERS
7208 {
7209 ULONG usHWIconHorzVertPosn;
7210 UCHAR ucHWIconVertOffset;
7211 UCHAR ucHWIconHorzOffset;
7212 UCHAR ucSelection;
7213 UCHAR ucEnable;
7214 }ENABLE_HARDWARE_ICON_CURSOR_PARAMETERS;
7215
7216 typedef struct _ENABLE_HARDWARE_ICON_CURSOR_PS_ALLOCATION
7217 {
7218 ENABLE_HARDWARE_ICON_CURSOR_PARAMETERS sEnableIcon;
7219 ENABLE_CRTC_PARAMETERS sReserved;
7220 }ENABLE_HARDWARE_ICON_CURSOR_PS_ALLOCATION;
7221
7222 typedef struct _ENABLE_GRAPH_SURFACE_PARAMETERS
7223 {
7224 USHORT usHight;
7225 USHORT usWidth;
7226 UCHAR ucSurface;
7227 UCHAR ucPadding[3];
7228 }ENABLE_GRAPH_SURFACE_PARAMETERS;
7229
7230 typedef struct _ENABLE_GRAPH_SURFACE_PARAMETERS_V1_2
7231 {
7232 USHORT usHight;
7233 USHORT usWidth;
7234 UCHAR ucSurface;
7235 UCHAR ucEnable;
7236 UCHAR ucPadding[2];
7237 }ENABLE_GRAPH_SURFACE_PARAMETERS_V1_2;
7238
7239 typedef struct _ENABLE_GRAPH_SURFACE_PARAMETERS_V1_3
7240 {
7241 USHORT usHight;
7242 USHORT usWidth;
7243 UCHAR ucSurface;
7244 UCHAR ucEnable;
7245 USHORT usDeviceId;
7246 }ENABLE_GRAPH_SURFACE_PARAMETERS_V1_3;
7247
7248 typedef struct _ENABLE_GRAPH_SURFACE_PARAMETERS_V1_4
7249 {
7250 USHORT usHight;
7251 USHORT usWidth;
7252 USHORT usGraphPitch;
7253 UCHAR ucColorDepth;
7254 UCHAR ucPixelFormat;
7255 UCHAR ucSurface;
7256 UCHAR ucEnable;
7257 UCHAR ucModeType;
7258 UCHAR ucReserved;
7259 }ENABLE_GRAPH_SURFACE_PARAMETERS_V1_4;
7260
7261
7262 #define ATOM_GRAPH_CONTROL_SET_PITCH 0x0f
7263 #define ATOM_GRAPH_CONTROL_SET_DISP_START 0x10
7264
7265 typedef struct _ENABLE_GRAPH_SURFACE_PS_ALLOCATION
7266 {
7267 ENABLE_GRAPH_SURFACE_PARAMETERS sSetSurface;
7268 ENABLE_YUV_PS_ALLOCATION sReserved;
7269 }ENABLE_GRAPH_SURFACE_PS_ALLOCATION;
7270
7271 typedef struct _MEMORY_CLEAN_UP_PARAMETERS
7272 {
7273 USHORT usMemoryStart;
7274 USHORT usMemorySize;
7275 }MEMORY_CLEAN_UP_PARAMETERS;
7276
7277 #define MEMORY_CLEAN_UP_PS_ALLOCATION MEMORY_CLEAN_UP_PARAMETERS
7278
7279 typedef struct _GET_DISPLAY_SURFACE_SIZE_PARAMETERS
7280 {
7281 USHORT usX_Size;
7282 USHORT usY_Size;
7283 }GET_DISPLAY_SURFACE_SIZE_PARAMETERS;
7284
7285 typedef struct _GET_DISPLAY_SURFACE_SIZE_PARAMETERS_V2
7286 {
7287 union{
7288 USHORT usX_Size;
7289 USHORT usSurface;
7290 };
7291 USHORT usY_Size;
7292 USHORT usDispXStart;
7293 USHORT usDispYStart;
7294 }GET_DISPLAY_SURFACE_SIZE_PARAMETERS_V2;
7295
7296
7297 typedef struct _PALETTE_DATA_CONTROL_PARAMETERS_V3
7298 {
7299 UCHAR ucLutId;
7300 UCHAR ucAction;
7301 USHORT usLutStartIndex;
7302 USHORT usLutLength;
7303 USHORT usLutOffsetInVram;
7304 }PALETTE_DATA_CONTROL_PARAMETERS_V3;
7305
7306
7307 #define PALETTE_DATA_AUTO_FILL 1
7308 #define PALETTE_DATA_READ 2
7309 #define PALETTE_DATA_WRITE 3
7310
7311
7312 typedef struct _INTERRUPT_SERVICE_PARAMETERS_V2
7313 {
7314 UCHAR ucInterruptId;
7315 UCHAR ucServiceId;
7316 UCHAR ucStatus;
7317 UCHAR ucReserved;
7318 }INTERRUPT_SERVICE_PARAMETER_V2;
7319
7320
7321 #define HDP1_INTERRUPT_ID 1
7322 #define HDP2_INTERRUPT_ID 2
7323 #define HDP3_INTERRUPT_ID 3
7324 #define HDP4_INTERRUPT_ID 4
7325 #define HDP5_INTERRUPT_ID 5
7326 #define HDP6_INTERRUPT_ID 6
7327 #define SW_INTERRUPT_ID 11
7328
7329
7330 #define INTERRUPT_SERVICE_GEN_SW_INT 1
7331 #define INTERRUPT_SERVICE_GET_STATUS 2
7332
7333
7334 #define INTERRUPT_STATUS__INT_TRIGGER 1
7335 #define INTERRUPT_STATUS__HPD_HIGH 2
7336
7337 typedef struct _EFUSE_INPUT_PARAMETER
7338 {
7339 USHORT usEfuseIndex;
7340 UCHAR ucBitShift;
7341 UCHAR ucBitLength;
7342 }EFUSE_INPUT_PARAMETER;
7343
7344
7345 typedef union _READ_EFUSE_VALUE_PARAMETER
7346 {
7347 EFUSE_INPUT_PARAMETER sEfuse;
7348 ULONG ulEfuseValue;
7349 }READ_EFUSE_VALUE_PARAMETER;
7350
7351 typedef struct _INDIRECT_IO_ACCESS
7352 {
7353 ATOM_COMMON_TABLE_HEADER sHeader;
7354 UCHAR IOAccessSequence[256];
7355 } INDIRECT_IO_ACCESS;
7356
7357 #define INDIRECT_READ 0x00
7358 #define INDIRECT_WRITE 0x80
7359
7360 #define INDIRECT_IO_MM 0
7361 #define INDIRECT_IO_PLL 1
7362 #define INDIRECT_IO_MC 2
7363 #define INDIRECT_IO_PCIE 3
7364 #define INDIRECT_IO_PCIEP 4
7365 #define INDIRECT_IO_NBMISC 5
7366 #define INDIRECT_IO_SMU 5
7367
7368 #define INDIRECT_IO_PLL_READ INDIRECT_IO_PLL | INDIRECT_READ
7369 #define INDIRECT_IO_PLL_WRITE INDIRECT_IO_PLL | INDIRECT_WRITE
7370 #define INDIRECT_IO_MC_READ INDIRECT_IO_MC | INDIRECT_READ
7371 #define INDIRECT_IO_MC_WRITE INDIRECT_IO_MC | INDIRECT_WRITE
7372 #define INDIRECT_IO_PCIE_READ INDIRECT_IO_PCIE | INDIRECT_READ
7373 #define INDIRECT_IO_PCIE_WRITE INDIRECT_IO_PCIE | INDIRECT_WRITE
7374 #define INDIRECT_IO_PCIEP_READ INDIRECT_IO_PCIEP | INDIRECT_READ
7375 #define INDIRECT_IO_PCIEP_WRITE INDIRECT_IO_PCIEP | INDIRECT_WRITE
7376 #define INDIRECT_IO_NBMISC_READ INDIRECT_IO_NBMISC | INDIRECT_READ
7377 #define INDIRECT_IO_NBMISC_WRITE INDIRECT_IO_NBMISC | INDIRECT_WRITE
7378 #define INDIRECT_IO_SMU_READ INDIRECT_IO_SMU | INDIRECT_READ
7379 #define INDIRECT_IO_SMU_WRITE INDIRECT_IO_SMU | INDIRECT_WRITE
7380
7381
7382 typedef struct _ATOM_OEM_INFO
7383 {
7384 ATOM_COMMON_TABLE_HEADER sHeader;
7385 ATOM_I2C_ID_CONFIG_ACCESS sucI2cId;
7386 }ATOM_OEM_INFO;
7387
7388 typedef struct _ATOM_TV_MODE
7389 {
7390 UCHAR ucVMode_Num;
7391 UCHAR ucTV_Mode_Num;
7392 }ATOM_TV_MODE;
7393
7394 typedef struct _ATOM_BIOS_INT_TVSTD_MODE
7395 {
7396 ATOM_COMMON_TABLE_HEADER sHeader;
7397 USHORT usTV_Mode_LUT_Offset;
7398 USHORT usTV_FIFO_Offset;
7399 USHORT usNTSC_Tbl_Offset;
7400 USHORT usPAL_Tbl_Offset;
7401 USHORT usCV_Tbl_Offset;
7402 }ATOM_BIOS_INT_TVSTD_MODE;
7403
7404
7405 typedef struct _ATOM_TV_MODE_SCALER_PTR
7406 {
7407 USHORT ucFilter0_Offset;
7408 USHORT usFilter1_Offset;
7409 UCHAR ucTV_Mode_Num;
7410 }ATOM_TV_MODE_SCALER_PTR;
7411
7412 typedef struct _ATOM_STANDARD_VESA_TIMING
7413 {
7414 ATOM_COMMON_TABLE_HEADER sHeader;
7415 ATOM_DTD_FORMAT aModeTimings[16];
7416 }ATOM_STANDARD_VESA_TIMING;
7417
7418
7419 typedef struct _ATOM_STD_FORMAT
7420 {
7421 USHORT usSTD_HDisp;
7422 USHORT usSTD_VDisp;
7423 USHORT usSTD_RefreshRate;
7424 USHORT usReserved;
7425 }ATOM_STD_FORMAT;
7426
7427 typedef struct _ATOM_VESA_TO_EXTENDED_MODE
7428 {
7429 USHORT usVESA_ModeNumber;
7430 USHORT usExtendedModeNumber;
7431 }ATOM_VESA_TO_EXTENDED_MODE;
7432
7433 typedef struct _ATOM_VESA_TO_INTENAL_MODE_LUT
7434 {
7435 ATOM_COMMON_TABLE_HEADER sHeader;
7436 ATOM_VESA_TO_EXTENDED_MODE asVESA_ToExtendedModeInfo[76];
7437 }ATOM_VESA_TO_INTENAL_MODE_LUT;
7438
7439
7440 typedef struct _ATOM_MEMORY_VENDOR_BLOCK{
7441 UCHAR ucMemoryType;
7442 UCHAR ucMemoryVendor;
7443 UCHAR ucAdjMCId;
7444 UCHAR ucDynClkId;
7445 ULONG ulDllResetClkRange;
7446 }ATOM_MEMORY_VENDOR_BLOCK;
7447
7448
7449 typedef struct _ATOM_MEMORY_SETTING_ID_CONFIG{
7450 #if ATOM_BIG_ENDIAN
7451 ULONG ucMemBlkId:8;
7452 ULONG ulMemClockRange:24;
7453 #else
7454 ULONG ulMemClockRange:24;
7455 ULONG ucMemBlkId:8;
7456 #endif
7457 }ATOM_MEMORY_SETTING_ID_CONFIG;
7458
7459 typedef union _ATOM_MEMORY_SETTING_ID_CONFIG_ACCESS
7460 {
7461 ATOM_MEMORY_SETTING_ID_CONFIG slAccess;
7462 ULONG ulAccess;
7463 }ATOM_MEMORY_SETTING_ID_CONFIG_ACCESS;
7464
7465
7466 typedef struct _ATOM_MEMORY_SETTING_DATA_BLOCK{
7467 ATOM_MEMORY_SETTING_ID_CONFIG_ACCESS ulMemoryID;
7468 ULONG aulMemData[1];
7469 }ATOM_MEMORY_SETTING_DATA_BLOCK;
7470
7471
7472 typedef struct _ATOM_INIT_REG_INDEX_FORMAT{
7473 USHORT usRegIndex;
7474 UCHAR ucPreRegDataLength;
7475 }ATOM_INIT_REG_INDEX_FORMAT;
7476
7477
7478 typedef struct _ATOM_INIT_REG_BLOCK{
7479 USHORT usRegIndexTblSize;
7480 USHORT usRegDataBlkSize;
7481 ATOM_INIT_REG_INDEX_FORMAT asRegIndexBuf[1];
7482 ATOM_MEMORY_SETTING_DATA_BLOCK asRegDataBuf[1];
7483 }ATOM_INIT_REG_BLOCK;
7484
7485 #define END_OF_REG_INDEX_BLOCK 0x0ffff
7486 #define END_OF_REG_DATA_BLOCK 0x00000000
7487 #define ATOM_INIT_REG_MASK_FLAG 0x80
7488 #define CLOCK_RANGE_HIGHEST 0x00ffffff
7489
7490 #define VALUE_DWORD SIZEOF ULONG
7491 #define VALUE_SAME_AS_ABOVE 0
7492 #define VALUE_MASK_DWORD 0x84
7493
7494 #define INDEX_ACCESS_RANGE_BEGIN (VALUE_DWORD + 1)
7495 #define INDEX_ACCESS_RANGE_END (INDEX_ACCESS_RANGE_BEGIN + 1)
7496 #define VALUE_INDEX_ACCESS_SINGLE (INDEX_ACCESS_RANGE_END + 1)
7497
7498 #define ACCESS_PLACEHOLDER 0x80
7499
7500
7501 typedef struct _ATOM_MC_INIT_PARAM_TABLE
7502 {
7503 ATOM_COMMON_TABLE_HEADER sHeader;
7504 USHORT usAdjustARB_SEQDataOffset;
7505 USHORT usMCInitMemTypeTblOffset;
7506 USHORT usMCInitCommonTblOffset;
7507 USHORT usMCInitPowerDownTblOffset;
7508 ULONG ulARB_SEQDataBuf[32];
7509 ATOM_INIT_REG_BLOCK asMCInitMemType;
7510 ATOM_INIT_REG_BLOCK asMCInitCommon;
7511 }ATOM_MC_INIT_PARAM_TABLE;
7512
7513
7514 typedef struct _ATOM_REG_INIT_SETTING
7515 {
7516 USHORT usRegIndex;
7517 ULONG ulRegValue;
7518 }ATOM_REG_INIT_SETTING;
7519
7520 typedef struct _ATOM_MC_INIT_PARAM_TABLE_V2_1
7521 {
7522 ATOM_COMMON_TABLE_HEADER sHeader;
7523 ULONG ulMCUcodeVersion;
7524 ULONG ulMCUcodeRomStartAddr;
7525 ULONG ulMCUcodeLength;
7526 USHORT usMcRegInitTableOffset;
7527 USHORT usReserved;
7528 }ATOM_MC_INIT_PARAM_TABLE_V2_1;
7529
7530
7531 #define _4Mx16 0x2
7532 #define _4Mx32 0x3
7533 #define _8Mx16 0x12
7534 #define _8Mx32 0x13
7535 #define _8Mx128 0x15
7536 #define _16Mx16 0x22
7537 #define _16Mx32 0x23
7538 #define _16Mx128 0x25
7539 #define _32Mx16 0x32
7540 #define _32Mx32 0x33
7541 #define _32Mx128 0x35
7542 #define _64Mx8 0x41
7543 #define _64Mx16 0x42
7544 #define _64Mx32 0x43
7545 #define _64Mx128 0x45
7546 #define _128Mx8 0x51
7547 #define _128Mx16 0x52
7548 #define _128Mx32 0x53
7549 #define _256Mx8 0x61
7550 #define _256Mx16 0x62
7551 #define _256Mx32 0x63
7552 #define _512Mx8 0x71
7553 #define _512Mx16 0x72
7554
7555
7556 #define SAMSUNG 0x1
7557 #define INFINEON 0x2
7558 #define ELPIDA 0x3
7559 #define ETRON 0x4
7560 #define NANYA 0x5
7561 #define HYNIX 0x6
7562 #define MOSEL 0x7
7563 #define WINBOND 0x8
7564 #define ESMT 0x9
7565 #define MICRON 0xF
7566
7567 #define QIMONDA INFINEON
7568 #define PROMOS MOSEL
7569 #define KRETON INFINEON
7570 #define ELIXIR NANYA
7571 #define MEZZA ELPIDA
7572
7573
7574
7575
7576 #define UCODE_ROM_START_ADDRESS 0x1b800
7577 #define UCODE_SIGNATURE 0x4375434d
7578
7579
7580
7581 typedef struct _MCuCodeHeader
7582 {
7583 ULONG ulSignature;
7584 UCHAR ucRevision;
7585 UCHAR ucChecksum;
7586 UCHAR ucReserved1;
7587 UCHAR ucReserved2;
7588 USHORT usParametersLength;
7589 USHORT usUCodeLength;
7590 USHORT usReserved1;
7591 USHORT usReserved2;
7592 } MCuCodeHeader;
7593
7594
7595
7596 #define ATOM_MAX_NUMBER_OF_VRAM_MODULE 16
7597
7598 #define ATOM_VRAM_MODULE_MEMORY_VENDOR_ID_MASK 0xF
7599 typedef struct _ATOM_VRAM_MODULE_V1
7600 {
7601 ULONG ulReserved;
7602 USHORT usEMRSValue;
7603 USHORT usMRSValue;
7604 USHORT usReserved;
7605 UCHAR ucExtMemoryID;
7606 UCHAR ucMemoryType;
7607 UCHAR ucMemoryVenderID;
7608 UCHAR ucMemoryDeviceCfg;
7609 UCHAR ucRow;
7610 UCHAR ucColumn;
7611 UCHAR ucBank;
7612 UCHAR ucRank;
7613 UCHAR ucChannelNum;
7614 UCHAR ucChannelConfig;
7615 UCHAR ucDefaultMVDDQ_ID;
7616 UCHAR ucDefaultMVDDC_ID;
7617 UCHAR ucReserved[2];
7618 }ATOM_VRAM_MODULE_V1;
7619
7620
7621 typedef struct _ATOM_VRAM_MODULE_V2
7622 {
7623 ULONG ulReserved;
7624 ULONG ulFlags;
7625 ULONG ulEngineClock;
7626 ULONG ulMemoryClock;
7627 USHORT usEMRS2Value;
7628 USHORT usEMRS3Value;
7629 USHORT usEMRSValue;
7630 USHORT usMRSValue;
7631 USHORT usReserved;
7632 UCHAR ucExtMemoryID;
7633 UCHAR ucMemoryType;
7634 UCHAR ucMemoryVenderID;
7635 UCHAR ucMemoryDeviceCfg;
7636 UCHAR ucRow;
7637 UCHAR ucColumn;
7638 UCHAR ucBank;
7639 UCHAR ucRank;
7640 UCHAR ucChannelNum;
7641 UCHAR ucChannelConfig;
7642 UCHAR ucDefaultMVDDQ_ID;
7643 UCHAR ucDefaultMVDDC_ID;
7644 UCHAR ucRefreshRateFactor;
7645 UCHAR ucReserved[3];
7646 }ATOM_VRAM_MODULE_V2;
7647
7648
7649 typedef struct _ATOM_MEMORY_TIMING_FORMAT
7650 {
7651 ULONG ulClkRange;
7652 union{
7653 USHORT usMRS;
7654 USHORT usDDR3_MR0;
7655 };
7656 union{
7657 USHORT usEMRS;
7658 USHORT usDDR3_MR1;
7659 };
7660 UCHAR ucCL;
7661 UCHAR ucWL;
7662 UCHAR uctRAS;
7663 UCHAR uctRC;
7664 UCHAR uctRFC;
7665 UCHAR uctRCDR;
7666 UCHAR uctRCDW;
7667 UCHAR uctRP;
7668 UCHAR uctRRD;
7669 UCHAR uctWR;
7670 UCHAR uctWTR;
7671 UCHAR uctPDIX;
7672 UCHAR uctFAW;
7673 UCHAR uctAOND;
7674 union
7675 {
7676 struct {
7677 UCHAR ucflag;
7678 UCHAR ucReserved;
7679 };
7680 USHORT usDDR3_MR2;
7681 };
7682 }ATOM_MEMORY_TIMING_FORMAT;
7683
7684
7685 typedef struct _ATOM_MEMORY_TIMING_FORMAT_V1
7686 {
7687 ULONG ulClkRange;
7688 USHORT usMRS;
7689 USHORT usEMRS;
7690 UCHAR ucCL;
7691 UCHAR ucWL;
7692 UCHAR uctRAS;
7693 UCHAR uctRC;
7694 UCHAR uctRFC;
7695 UCHAR uctRCDR;
7696 UCHAR uctRCDW;
7697 UCHAR uctRP;
7698 UCHAR uctRRD;
7699 UCHAR uctWR;
7700 UCHAR uctWTR;
7701 UCHAR uctPDIX;
7702 UCHAR uctFAW;
7703 UCHAR uctAOND;
7704 UCHAR ucflag;
7705
7706 UCHAR uctCCDL;
7707 UCHAR uctCRCRL;
7708 UCHAR uctCRCWL;
7709 UCHAR uctCKE;
7710 UCHAR uctCKRSE;
7711 UCHAR uctCKRSX;
7712 UCHAR uctFAW32;
7713 UCHAR ucMR5lo;
7714 UCHAR ucMR5hi;
7715 UCHAR ucTerminator;
7716 }ATOM_MEMORY_TIMING_FORMAT_V1;
7717
7718
7719
7720
7721 typedef struct _ATOM_MEMORY_TIMING_FORMAT_V2
7722 {
7723 ULONG ulClkRange;
7724 USHORT usMRS;
7725 USHORT usEMRS;
7726 UCHAR ucCL;
7727 UCHAR ucWL;
7728 UCHAR uctRAS;
7729 UCHAR uctRC;
7730 UCHAR uctRFC;
7731 UCHAR uctRCDR;
7732 UCHAR uctRCDW;
7733 UCHAR uctRP;
7734 UCHAR uctRRD;
7735 UCHAR uctWR;
7736 UCHAR uctWTR;
7737 UCHAR uctPDIX;
7738 UCHAR uctFAW;
7739 UCHAR uctAOND;
7740 UCHAR ucflag;
7741
7742 UCHAR uctCCDL;
7743 UCHAR uctCRCRL;
7744 UCHAR uctCRCWL;
7745 UCHAR uctCKE;
7746 UCHAR uctCKRSE;
7747 UCHAR uctCKRSX;
7748 UCHAR uctFAW32;
7749 UCHAR ucMR4lo;
7750 UCHAR ucMR4hi;
7751 UCHAR ucMR5lo;
7752 UCHAR ucMR5hi;
7753 UCHAR ucTerminator;
7754 UCHAR ucReserved;
7755 }ATOM_MEMORY_TIMING_FORMAT_V2;
7756
7757
7758 typedef struct _ATOM_MEMORY_FORMAT
7759 {
7760 ULONG ulDllDisClock;
7761 union{
7762 USHORT usEMRS2Value;
7763 USHORT usDDR3_Reserved;
7764 };
7765 union{
7766 USHORT usEMRS3Value;
7767 USHORT usDDR3_MR3;
7768 };
7769 UCHAR ucMemoryType;
7770 UCHAR ucMemoryVenderID;
7771 UCHAR ucRow;
7772 UCHAR ucColumn;
7773 UCHAR ucBank;
7774 UCHAR ucRank;
7775 UCHAR ucBurstSize;
7776 UCHAR ucDllDisBit;
7777 UCHAR ucRefreshRateFactor;
7778 UCHAR ucDensity;
7779 UCHAR ucPreamble;
7780 UCHAR ucMemAttrib;
7781 ATOM_MEMORY_TIMING_FORMAT asMemTiming[5];
7782 }ATOM_MEMORY_FORMAT;
7783
7784
7785 typedef struct _ATOM_VRAM_MODULE_V3
7786 {
7787 ULONG ulChannelMapCfg;
7788 USHORT usSize;
7789 USHORT usDefaultMVDDQ;
7790 USHORT usDefaultMVDDC;
7791 UCHAR ucExtMemoryID;
7792 UCHAR ucChannelNum;
7793 UCHAR ucChannelSize;
7794 UCHAR ucVREFI;
7795 UCHAR ucNPL_RT;
7796 UCHAR ucFlag;
7797 ATOM_MEMORY_FORMAT asMemory;
7798 }ATOM_VRAM_MODULE_V3;
7799
7800
7801
7802 #define NPL_RT_MASK 0x0f
7803 #define BATTERY_ODT_MASK 0xc0
7804
7805 #define ATOM_VRAM_MODULE ATOM_VRAM_MODULE_V3
7806
7807 typedef struct _ATOM_VRAM_MODULE_V4
7808 {
7809 ULONG ulChannelMapCfg;
7810 USHORT usModuleSize;
7811 USHORT usPrivateReserved;
7812
7813 USHORT usReserved;
7814 UCHAR ucExtMemoryID;
7815 UCHAR ucMemoryType;
7816 UCHAR ucChannelNum;
7817 UCHAR ucChannelWidth;
7818 UCHAR ucDensity;
7819 UCHAR ucFlag;
7820 UCHAR ucMisc;
7821 UCHAR ucVREFI;
7822 UCHAR ucNPL_RT;
7823 UCHAR ucPreamble;
7824 UCHAR ucMemorySize;
7825
7826 UCHAR ucReserved[3];
7827
7828
7829 union{
7830 USHORT usEMRS2Value;
7831 USHORT usDDR3_Reserved;
7832 };
7833 union{
7834 USHORT usEMRS3Value;
7835 USHORT usDDR3_MR3;
7836 };
7837 UCHAR ucMemoryVenderID;
7838 UCHAR ucRefreshRateFactor;
7839 UCHAR ucReserved2[2];
7840 ATOM_MEMORY_TIMING_FORMAT asMemTiming[5];
7841 }ATOM_VRAM_MODULE_V4;
7842
7843 #define VRAM_MODULE_V4_MISC_RANK_MASK 0x3
7844 #define VRAM_MODULE_V4_MISC_DUAL_RANK 0x1
7845 #define VRAM_MODULE_V4_MISC_BL_MASK 0x4
7846 #define VRAM_MODULE_V4_MISC_BL8 0x4
7847 #define VRAM_MODULE_V4_MISC_DUAL_CS 0x10
7848
7849 typedef struct _ATOM_VRAM_MODULE_V5
7850 {
7851 ULONG ulChannelMapCfg;
7852 USHORT usModuleSize;
7853 USHORT usPrivateReserved;
7854
7855 USHORT usReserved;
7856 UCHAR ucExtMemoryID;
7857 UCHAR ucMemoryType;
7858 UCHAR ucChannelNum;
7859 UCHAR ucChannelWidth;
7860 UCHAR ucDensity;
7861 UCHAR ucFlag;
7862 UCHAR ucMisc;
7863 UCHAR ucVREFI;
7864 UCHAR ucNPL_RT;
7865 UCHAR ucPreamble;
7866 UCHAR ucMemorySize;
7867
7868 UCHAR ucReserved[3];
7869
7870
7871 USHORT usEMRS2Value;
7872 USHORT usEMRS3Value;
7873 UCHAR ucMemoryVenderID;
7874 UCHAR ucRefreshRateFactor;
7875 UCHAR ucFIFODepth;
7876 UCHAR ucCDR_Bandwidth;
7877 ATOM_MEMORY_TIMING_FORMAT_V1 asMemTiming[5];
7878 }ATOM_VRAM_MODULE_V5;
7879
7880
7881 typedef struct _ATOM_VRAM_MODULE_V6
7882 {
7883 ULONG ulChannelMapCfg;
7884 USHORT usModuleSize;
7885 USHORT usPrivateReserved;
7886
7887 USHORT usReserved;
7888 UCHAR ucExtMemoryID;
7889 UCHAR ucMemoryType;
7890 UCHAR ucChannelNum;
7891 UCHAR ucChannelWidth;
7892 UCHAR ucDensity;
7893 UCHAR ucFlag;
7894 UCHAR ucMisc;
7895 UCHAR ucVREFI;
7896 UCHAR ucNPL_RT;
7897 UCHAR ucPreamble;
7898 UCHAR ucMemorySize;
7899
7900 UCHAR ucReserved[3];
7901
7902
7903 USHORT usEMRS2Value;
7904 USHORT usEMRS3Value;
7905 UCHAR ucMemoryVenderID;
7906 UCHAR ucRefreshRateFactor;
7907 UCHAR ucFIFODepth;
7908 UCHAR ucCDR_Bandwidth;
7909 ATOM_MEMORY_TIMING_FORMAT_V2 asMemTiming[5];
7910 }ATOM_VRAM_MODULE_V6;
7911
7912 typedef struct _ATOM_VRAM_MODULE_V7
7913 {
7914
7915 ULONG ulChannelMapCfg;
7916 USHORT usModuleSize;
7917 USHORT usPrivateReserved;
7918 USHORT usEnableChannels;
7919 UCHAR ucExtMemoryID;
7920 UCHAR ucMemoryType;
7921 UCHAR ucChannelNum;
7922 UCHAR ucChannelWidth;
7923 UCHAR ucDensity;
7924 UCHAR ucReserve;
7925 UCHAR ucMisc;
7926 UCHAR ucVREFI;
7927 UCHAR ucNPL_RT;
7928 UCHAR ucPreamble;
7929 UCHAR ucMemorySize;
7930 USHORT usSEQSettingOffset;
7931 UCHAR ucReserved;
7932
7933 USHORT usEMRS2Value;
7934 USHORT usEMRS3Value;
7935 UCHAR ucMemoryVenderID;
7936 UCHAR ucRefreshRateFactor;
7937 UCHAR ucFIFODepth;
7938 UCHAR ucCDR_Bandwidth;
7939 char strMemPNString[20];
7940 }ATOM_VRAM_MODULE_V7;
7941
7942
7943 typedef struct _ATOM_VRAM_MODULE_V8
7944 {
7945
7946 ULONG ulChannelMapCfg;
7947 USHORT usModuleSize;
7948 USHORT usMcRamCfg;
7949 USHORT usEnableChannels;
7950 UCHAR ucExtMemoryID;
7951 UCHAR ucMemoryType;
7952 UCHAR ucChannelNum;
7953 UCHAR ucChannelWidth;
7954 UCHAR ucDensity;
7955 UCHAR ucBankCol;
7956 UCHAR ucMisc;
7957 UCHAR ucVREFI;
7958 USHORT usReserved;
7959 USHORT usMemorySize;
7960 UCHAR ucMcTunningSetId;
7961 UCHAR ucRowNum;
7962
7963 USHORT usEMRS2Value;
7964 USHORT usEMRS3Value;
7965 UCHAR ucMemoryVenderID;
7966 UCHAR ucRefreshRateFactor;
7967 UCHAR ucFIFODepth;
7968 UCHAR ucCDR_Bandwidth;
7969
7970 ULONG ulChannelMapCfg1;
7971 ULONG ulBankMapCfg;
7972 ULONG ulReserved;
7973 char strMemPNString[20];
7974 }ATOM_VRAM_MODULE_V8;
7975
7976
7977 typedef struct _ATOM_VRAM_INFO_V2
7978 {
7979 ATOM_COMMON_TABLE_HEADER sHeader;
7980 UCHAR ucNumOfVRAMModule;
7981 ATOM_VRAM_MODULE aVramInfo[ATOM_MAX_NUMBER_OF_VRAM_MODULE];
7982 }ATOM_VRAM_INFO_V2;
7983
7984 typedef struct _ATOM_VRAM_INFO_V3
7985 {
7986 ATOM_COMMON_TABLE_HEADER sHeader;
7987 USHORT usMemAdjustTblOffset;
7988 USHORT usMemClkPatchTblOffset;
7989 USHORT usRerseved;
7990 UCHAR aVID_PinsShift[9];
7991 UCHAR ucNumOfVRAMModule;
7992 ATOM_VRAM_MODULE aVramInfo[ATOM_MAX_NUMBER_OF_VRAM_MODULE];
7993 ATOM_INIT_REG_BLOCK asMemPatch;
7994
7995 }ATOM_VRAM_INFO_V3;
7996
7997 #define ATOM_VRAM_INFO_LAST ATOM_VRAM_INFO_V3
7998
7999 typedef struct _ATOM_VRAM_INFO_V4
8000 {
8001 ATOM_COMMON_TABLE_HEADER sHeader;
8002 USHORT usMemAdjustTblOffset;
8003 USHORT usMemClkPatchTblOffset;
8004 USHORT usRerseved;
8005 UCHAR ucMemDQ7_0ByteRemap;
8006 ULONG ulMemDQ7_0BitRemap;
8007 UCHAR ucReservde[4];
8008 UCHAR ucNumOfVRAMModule;
8009 ATOM_VRAM_MODULE_V4 aVramInfo[ATOM_MAX_NUMBER_OF_VRAM_MODULE];
8010 ATOM_INIT_REG_BLOCK asMemPatch;
8011 }ATOM_VRAM_INFO_V4;
8012
8013 typedef struct _ATOM_VRAM_INFO_HEADER_V2_1
8014 {
8015 ATOM_COMMON_TABLE_HEADER sHeader;
8016 USHORT usMemAdjustTblOffset;
8017 USHORT usMemClkPatchTblOffset;
8018 USHORT usPerBytePresetOffset;
8019 USHORT usReserved[3];
8020 UCHAR ucNumOfVRAMModule;
8021 UCHAR ucMemoryClkPatchTblVer;
8022 UCHAR ucVramModuleVer;
8023 UCHAR ucReserved;
8024 ATOM_VRAM_MODULE_V7 aVramInfo[ATOM_MAX_NUMBER_OF_VRAM_MODULE];
8025 }ATOM_VRAM_INFO_HEADER_V2_1;
8026
8027 typedef struct _ATOM_VRAM_INFO_HEADER_V2_2
8028 {
8029 ATOM_COMMON_TABLE_HEADER sHeader;
8030 USHORT usMemAdjustTblOffset;
8031 USHORT usMemClkPatchTblOffset;
8032 USHORT usMcAdjustPerTileTblOffset;
8033 USHORT usMcPhyInitTableOffset;
8034 USHORT usDramDataRemapTblOffset;
8035 USHORT usReserved1;
8036 UCHAR ucNumOfVRAMModule;
8037 UCHAR ucMemoryClkPatchTblVer;
8038 UCHAR ucVramModuleVer;
8039 UCHAR ucMcPhyTileNum;
8040 ATOM_VRAM_MODULE_V8 aVramInfo[ATOM_MAX_NUMBER_OF_VRAM_MODULE];
8041 }ATOM_VRAM_INFO_HEADER_V2_2;
8042
8043
8044 typedef struct _ATOM_DRAM_DATA_REMAP
8045 {
8046 UCHAR ucByteRemapCh0;
8047 UCHAR ucByteRemapCh1;
8048 ULONG ulByte0BitRemapCh0;
8049 ULONG ulByte1BitRemapCh0;
8050 ULONG ulByte2BitRemapCh0;
8051 ULONG ulByte3BitRemapCh0;
8052 ULONG ulByte0BitRemapCh1;
8053 ULONG ulByte1BitRemapCh1;
8054 ULONG ulByte2BitRemapCh1;
8055 ULONG ulByte3BitRemapCh1;
8056 }ATOM_DRAM_DATA_REMAP;
8057
8058 typedef struct _ATOM_VRAM_GPIO_DETECTION_INFO
8059 {
8060 ATOM_COMMON_TABLE_HEADER sHeader;
8061 UCHAR aVID_PinsShift[9];
8062 }ATOM_VRAM_GPIO_DETECTION_INFO;
8063
8064
8065 typedef struct _ATOM_MEMORY_TRAINING_INFO
8066 {
8067 ATOM_COMMON_TABLE_HEADER sHeader;
8068 UCHAR ucTrainingLoop;
8069 UCHAR ucReserved[3];
8070 ATOM_INIT_REG_BLOCK asMemTrainingSetting;
8071 }ATOM_MEMORY_TRAINING_INFO;
8072
8073
8074 typedef struct _ATOM_MEMORY_TRAINING_INFO_V3_1
8075 {
8076 ATOM_COMMON_TABLE_HEADER sHeader;
8077 ULONG ulMCUcodeVersion;
8078 USHORT usMCIOInitLen;
8079 USHORT usMCUcodeLen;
8080 USHORT usMCIORegInitOffset;
8081 USHORT usMCUcodeOffset;
8082 }ATOM_MEMORY_TRAINING_INFO_V3_1;
8083
8084
8085 typedef struct SW_I2C_CNTL_DATA_PARAMETERS
8086 {
8087 UCHAR ucControl;
8088 UCHAR ucData;
8089 UCHAR ucSatus;
8090 UCHAR ucTemp;
8091 } SW_I2C_CNTL_DATA_PARAMETERS;
8092
8093 #define SW_I2C_CNTL_DATA_PS_ALLOCATION SW_I2C_CNTL_DATA_PARAMETERS
8094
8095 typedef struct _SW_I2C_IO_DATA_PARAMETERS
8096 {
8097 USHORT GPIO_Info;
8098 UCHAR ucAct;
8099 UCHAR ucData;
8100 } SW_I2C_IO_DATA_PARAMETERS;
8101
8102 #define SW_I2C_IO_DATA_PS_ALLOCATION SW_I2C_IO_DATA_PARAMETERS
8103
8104
8105 #define SW_I2C_IO_RESET 0
8106 #define SW_I2C_IO_GET 1
8107 #define SW_I2C_IO_DRIVE 2
8108 #define SW_I2C_IO_SET 3
8109 #define SW_I2C_IO_START 4
8110
8111 #define SW_I2C_IO_CLOCK 0
8112 #define SW_I2C_IO_DATA 0x80
8113
8114 #define SW_I2C_IO_ZERO 0
8115 #define SW_I2C_IO_ONE 0x100
8116
8117 #define SW_I2C_CNTL_READ 0
8118 #define SW_I2C_CNTL_WRITE 1
8119 #define SW_I2C_CNTL_START 2
8120 #define SW_I2C_CNTL_STOP 3
8121 #define SW_I2C_CNTL_OPEN 4
8122 #define SW_I2C_CNTL_CLOSE 5
8123 #define SW_I2C_CNTL_WRITE1BIT 6
8124
8125
8126 #define VESA_OEM_PRODUCT_REV '01.00'
8127 #define VESA_MODE_ATTRIBUTE_MODE_SUPPORT 0xBB
8128 #define VESA_MODE_WIN_ATTRIBUTE 7
8129 #define VESA_WIN_SIZE 64
8130
8131 typedef struct _PTR_32_BIT_STRUCTURE
8132 {
8133 USHORT Offset16;
8134 USHORT Segment16;
8135 } PTR_32_BIT_STRUCTURE;
8136
8137 typedef union _PTR_32_BIT_UNION
8138 {
8139 PTR_32_BIT_STRUCTURE SegmentOffset;
8140 ULONG Ptr32_Bit;
8141 } PTR_32_BIT_UNION;
8142
8143 typedef struct _VBE_1_2_INFO_BLOCK_UPDATABLE
8144 {
8145 UCHAR VbeSignature[4];
8146 USHORT VbeVersion;
8147 PTR_32_BIT_UNION OemStringPtr;
8148 UCHAR Capabilities[4];
8149 PTR_32_BIT_UNION VideoModePtr;
8150 USHORT TotalMemory;
8151 } VBE_1_2_INFO_BLOCK_UPDATABLE;
8152
8153
8154 typedef struct _VBE_2_0_INFO_BLOCK_UPDATABLE
8155 {
8156 VBE_1_2_INFO_BLOCK_UPDATABLE CommonBlock;
8157 USHORT OemSoftRev;
8158 PTR_32_BIT_UNION OemVendorNamePtr;
8159 PTR_32_BIT_UNION OemProductNamePtr;
8160 PTR_32_BIT_UNION OemProductRevPtr;
8161 } VBE_2_0_INFO_BLOCK_UPDATABLE;
8162
8163 typedef union _VBE_VERSION_UNION
8164 {
8165 VBE_2_0_INFO_BLOCK_UPDATABLE VBE_2_0_InfoBlock;
8166 VBE_1_2_INFO_BLOCK_UPDATABLE VBE_1_2_InfoBlock;
8167 } VBE_VERSION_UNION;
8168
8169 typedef struct _VBE_INFO_BLOCK
8170 {
8171 VBE_VERSION_UNION UpdatableVBE_Info;
8172 UCHAR Reserved[222];
8173 UCHAR OemData[256];
8174 } VBE_INFO_BLOCK;
8175
8176 typedef struct _VBE_FP_INFO
8177 {
8178 USHORT HSize;
8179 USHORT VSize;
8180 USHORT FPType;
8181 UCHAR RedBPP;
8182 UCHAR GreenBPP;
8183 UCHAR BlueBPP;
8184 UCHAR ReservedBPP;
8185 ULONG RsvdOffScrnMemSize;
8186 ULONG RsvdOffScrnMEmPtr;
8187 UCHAR Reserved[14];
8188 } VBE_FP_INFO;
8189
8190 typedef struct _VESA_MODE_INFO_BLOCK
8191 {
8192
8193 USHORT ModeAttributes;
8194 UCHAR WinAAttributes;
8195 UCHAR WinBAttributes;
8196 USHORT WinGranularity;
8197 USHORT WinSize;
8198 USHORT WinASegment;
8199 USHORT WinBSegment;
8200 ULONG WinFuncPtr;
8201 USHORT BytesPerScanLine;
8202
8203
8204 USHORT XResolution;
8205 USHORT YResolution;
8206 UCHAR XCharSize;
8207 UCHAR YCharSize;
8208 UCHAR NumberOfPlanes;
8209 UCHAR BitsPerPixel;
8210 UCHAR NumberOfBanks;
8211 UCHAR MemoryModel;
8212 UCHAR BankSize;
8213 UCHAR NumberOfImagePages;
8214 UCHAR ReservedForPageFunction;
8215
8216
8217 UCHAR RedMaskSize;
8218 UCHAR RedFieldPosition;
8219 UCHAR GreenMaskSize;
8220 UCHAR GreenFieldPosition;
8221 UCHAR BlueMaskSize;
8222 UCHAR BlueFieldPosition;
8223 UCHAR RsvdMaskSize;
8224 UCHAR RsvdFieldPosition;
8225 UCHAR DirectColorModeInfo;
8226
8227
8228 ULONG PhysBasePtr;
8229 ULONG Reserved_1;
8230 USHORT Reserved_2;
8231
8232
8233 USHORT LinBytesPerScanLine;
8234 UCHAR BnkNumberOfImagePages;
8235 UCHAR LinNumberOfImagPages;
8236 UCHAR LinRedMaskSize;
8237 UCHAR LinRedFieldPosition;
8238 UCHAR LinGreenMaskSize;
8239 UCHAR LinGreenFieldPosition;
8240 UCHAR LinBlueMaskSize;
8241 UCHAR LinBlueFieldPosition;
8242 UCHAR LinRsvdMaskSize;
8243 UCHAR LinRsvdFieldPosition;
8244 ULONG MaxPixelClock;
8245 UCHAR Reserved;
8246 } VESA_MODE_INFO_BLOCK;
8247
8248
8249 #define ATOM_BIOS_EXTENDED_FUNCTION_CODE 0xA0
8250 #define ATOM_BIOS_FUNCTION_COP_MODE 0x00
8251 #define ATOM_BIOS_FUNCTION_SHORT_QUERY1 0x04
8252 #define ATOM_BIOS_FUNCTION_SHORT_QUERY2 0x05
8253 #define ATOM_BIOS_FUNCTION_SHORT_QUERY3 0x06
8254 #define ATOM_BIOS_FUNCTION_GET_DDC 0x0B
8255 #define ATOM_BIOS_FUNCTION_ASIC_DSTATE 0x0E
8256 #define ATOM_BIOS_FUNCTION_DEBUG_PLAY 0x0F
8257 #define ATOM_BIOS_FUNCTION_STV_STD 0x16
8258 #define ATOM_BIOS_FUNCTION_DEVICE_DET 0x17
8259 #define ATOM_BIOS_FUNCTION_DEVICE_SWITCH 0x18
8260
8261 #define ATOM_BIOS_FUNCTION_PANEL_CONTROL 0x82
8262 #define ATOM_BIOS_FUNCTION_OLD_DEVICE_DET 0x83
8263 #define ATOM_BIOS_FUNCTION_OLD_DEVICE_SWITCH 0x84
8264 #define ATOM_BIOS_FUNCTION_HW_ICON 0x8A
8265 #define ATOM_BIOS_FUNCTION_SET_CMOS 0x8B
8266 #define SUB_FUNCTION_UPDATE_DISPLAY_INFO 0x8000
8267 #define SUB_FUNCTION_UPDATE_EXPANSION_INFO 0x8100
8268
8269 #define ATOM_BIOS_FUNCTION_DISPLAY_INFO 0x8D
8270 #define ATOM_BIOS_FUNCTION_DEVICE_ON_OFF 0x8E
8271 #define ATOM_BIOS_FUNCTION_VIDEO_STATE 0x8F
8272 #define ATOM_SUB_FUNCTION_GET_CRITICAL_STATE 0x0300
8273 #define ATOM_SUB_FUNCTION_GET_LIDSTATE 0x0700
8274 #define ATOM_SUB_FUNCTION_THERMAL_STATE_NOTICE 0x1400
8275 #define ATOM_SUB_FUNCTION_CRITICAL_STATE_NOTICE 0x8300
8276 #define ATOM_SUB_FUNCTION_SET_LIDSTATE 0x8500
8277 #define ATOM_SUB_FUNCTION_GET_REQ_DISPLAY_FROM_SBIOS_MODE 0x8900
8278 #define ATOM_SUB_FUNCTION_INFORM_ADC_SUPPORT 0x9400
8279
8280
8281 #define ATOM_BIOS_FUNCTION_VESA_DPMS 0x4F10
8282 #define ATOM_SUB_FUNCTION_SET_DPMS 0x0001
8283 #define ATOM_SUB_FUNCTION_GET_DPMS 0x0002
8284 #define ATOM_PARAMETER_VESA_DPMS_ON 0x0000
8285 #define ATOM_PARAMETER_VESA_DPMS_STANDBY 0x0100
8286 #define ATOM_PARAMETER_VESA_DPMS_SUSPEND 0x0200
8287 #define ATOM_PARAMETER_VESA_DPMS_OFF 0x0400
8288 #define ATOM_PARAMETER_VESA_DPMS_REDUCE_ON 0x0800
8289
8290 #define ATOM_BIOS_RETURN_CODE_MASK 0x0000FF00L
8291 #define ATOM_BIOS_REG_HIGH_MASK 0x0000FF00L
8292 #define ATOM_BIOS_REG_LOW_MASK 0x000000FFL
8293
8294
8295
8296
8297 typedef struct _ASIC_TRANSMITTER_INFO
8298 {
8299 USHORT usTransmitterObjId;
8300 USHORT usSupportDevice;
8301 UCHAR ucTransmitterCmdTblId;
8302 UCHAR ucConfig;
8303 UCHAR ucEncoderID;
8304 UCHAR ucOptionEncoderID;
8305 UCHAR uc2ndEncoderID;
8306 UCHAR ucReserved;
8307 }ASIC_TRANSMITTER_INFO;
8308
8309 #define ASIC_TRANSMITTER_INFO_CONFIG__DVO_SDR_MODE 0x01
8310 #define ASIC_TRANSMITTER_INFO_CONFIG__COHERENT_MODE 0x02
8311 #define ASIC_TRANSMITTER_INFO_CONFIG__ENCODEROBJ_ID_MASK 0xc4
8312 #define ASIC_TRANSMITTER_INFO_CONFIG__ENCODER_A 0x00
8313 #define ASIC_TRANSMITTER_INFO_CONFIG__ENCODER_B 0x04
8314 #define ASIC_TRANSMITTER_INFO_CONFIG__ENCODER_C 0x40
8315 #define ASIC_TRANSMITTER_INFO_CONFIG__ENCODER_D 0x44
8316 #define ASIC_TRANSMITTER_INFO_CONFIG__ENCODER_E 0x80
8317 #define ASIC_TRANSMITTER_INFO_CONFIG__ENCODER_F 0x84
8318
8319 typedef struct _ASIC_ENCODER_INFO
8320 {
8321 UCHAR ucEncoderID;
8322 UCHAR ucEncoderConfig;
8323 USHORT usEncoderCmdTblId;
8324 }ASIC_ENCODER_INFO;
8325
8326 typedef struct _ATOM_DISP_OUT_INFO
8327 {
8328 ATOM_COMMON_TABLE_HEADER sHeader;
8329 USHORT ptrTransmitterInfo;
8330 USHORT ptrEncoderInfo;
8331 ASIC_TRANSMITTER_INFO asTransmitterInfo[1];
8332 ASIC_ENCODER_INFO asEncoderInfo[1];
8333 }ATOM_DISP_OUT_INFO;
8334
8335
8336 typedef struct _ATOM_DISP_OUT_INFO_V2
8337 {
8338 ATOM_COMMON_TABLE_HEADER sHeader;
8339 USHORT ptrTransmitterInfo;
8340 USHORT ptrEncoderInfo;
8341 USHORT ptrMainCallParserFar;
8342 ASIC_TRANSMITTER_INFO asTransmitterInfo[1];
8343 ASIC_ENCODER_INFO asEncoderInfo[1];
8344 }ATOM_DISP_OUT_INFO_V2;
8345
8346
8347 typedef struct _ATOM_DISP_CLOCK_ID {
8348 UCHAR ucPpllId;
8349 UCHAR ucPpllAttribute;
8350 }ATOM_DISP_CLOCK_ID;
8351
8352
8353 #define CLOCK_SOURCE_SHAREABLE 0x01
8354 #define CLOCK_SOURCE_DP_MODE 0x02
8355 #define CLOCK_SOURCE_NONE_DP_MODE 0x04
8356
8357
8358 typedef struct _ASIC_TRANSMITTER_INFO_V2
8359 {
8360 USHORT usTransmitterObjId;
8361 USHORT usDispClkIdOffset;
8362 UCHAR ucTransmitterCmdTblId;
8363 UCHAR ucConfig;
8364 UCHAR ucEncoderID;
8365 UCHAR ucOptionEncoderID;
8366 UCHAR uc2ndEncoderID;
8367 UCHAR ucReserved;
8368 }ASIC_TRANSMITTER_INFO_V2;
8369
8370 typedef struct _ATOM_DISP_OUT_INFO_V3
8371 {
8372 ATOM_COMMON_TABLE_HEADER sHeader;
8373 USHORT ptrTransmitterInfo;
8374 USHORT ptrEncoderInfo;
8375 USHORT ptrMainCallParserFar;
8376 USHORT usReserved;
8377 UCHAR ucDCERevision;
8378 UCHAR ucMaxDispEngineNum;
8379 UCHAR ucMaxActiveDispEngineNum;
8380 UCHAR ucMaxPPLLNum;
8381 UCHAR ucCoreRefClkSource;
8382 UCHAR ucDispCaps;
8383 UCHAR ucReserved[2];
8384 ASIC_TRANSMITTER_INFO_V2 asTransmitterInfo[1];
8385 }ATOM_DISP_OUT_INFO_V3;
8386
8387
8388 #define DISPLAY_CAPS__DP_PCLK_FROM_PPLL 0x01
8389 #define DISPLAY_CAPS__FORCE_DISPDEV_CONNECTED 0x02
8390
8391 typedef enum CORE_REF_CLK_SOURCE{
8392 CLOCK_SRC_XTALIN=0,
8393 CLOCK_SRC_XO_IN=1,
8394 CLOCK_SRC_XO_IN2=2,
8395 }CORE_REF_CLK_SOURCE;
8396
8397
8398 typedef struct _ATOM_DISPLAY_DEVICE_PRIORITY_INFO
8399 {
8400 ATOM_COMMON_TABLE_HEADER sHeader;
8401 USHORT asDevicePriority[16];
8402 }ATOM_DISPLAY_DEVICE_PRIORITY_INFO;
8403
8404
8405 typedef struct _PROCESS_AUX_CHANNEL_TRANSACTION_PARAMETERS
8406 {
8407 USHORT lpAuxRequest;
8408 USHORT lpDataOut;
8409 UCHAR ucChannelID;
8410 union
8411 {
8412 UCHAR ucReplyStatus;
8413 UCHAR ucDelay;
8414 };
8415 UCHAR ucDataOutLen;
8416 UCHAR ucReserved;
8417 }PROCESS_AUX_CHANNEL_TRANSACTION_PARAMETERS;
8418
8419
8420 typedef struct _PROCESS_AUX_CHANNEL_TRANSACTION_PARAMETERS_V2
8421 {
8422 USHORT lpAuxRequest;
8423 USHORT lpDataOut;
8424 UCHAR ucChannelID;
8425 union
8426 {
8427 UCHAR ucReplyStatus;
8428 UCHAR ucDelay;
8429 };
8430 UCHAR ucDataOutLen;
8431 UCHAR ucHPD_ID;
8432 }PROCESS_AUX_CHANNEL_TRANSACTION_PARAMETERS_V2;
8433
8434 #define PROCESS_AUX_CHANNEL_TRANSACTION_PS_ALLOCATION PROCESS_AUX_CHANNEL_TRANSACTION_PARAMETERS
8435
8436
8437
8438 typedef struct _DP_ENCODER_SERVICE_PARAMETERS
8439 {
8440 USHORT ucLinkClock;
8441 union
8442 {
8443 UCHAR ucConfig;
8444 UCHAR ucI2cId;
8445 };
8446 UCHAR ucAction;
8447 UCHAR ucStatus;
8448 UCHAR ucLaneNum;
8449 UCHAR ucReserved[2];
8450 }DP_ENCODER_SERVICE_PARAMETERS;
8451
8452
8453 #define ATOM_DP_ACTION_GET_SINK_TYPE 0x01
8454
8455 #define DP_ENCODER_SERVICE_PS_ALLOCATION WRITE_ONE_BYTE_HW_I2C_DATA_PARAMETERS
8456
8457
8458 typedef struct _DP_ENCODER_SERVICE_PARAMETERS_V2
8459 {
8460 USHORT usExtEncoderObjId;
8461 UCHAR ucAuxId;
8462 UCHAR ucAction;
8463 UCHAR ucSinkType;
8464 UCHAR ucHPDId;
8465 UCHAR ucReserved[2];
8466 }DP_ENCODER_SERVICE_PARAMETERS_V2;
8467
8468 typedef struct _DP_ENCODER_SERVICE_PS_ALLOCATION_V2
8469 {
8470 DP_ENCODER_SERVICE_PARAMETERS_V2 asDPServiceParam;
8471 PROCESS_AUX_CHANNEL_TRANSACTION_PARAMETERS_V2 asAuxParam;
8472 }DP_ENCODER_SERVICE_PS_ALLOCATION_V2;
8473
8474
8475 #define DP_SERVICE_V2_ACTION_GET_SINK_TYPE 0x01
8476 #define DP_SERVICE_V2_ACTION_DET_LCD_CONNECTION 0x02
8477
8478
8479
8480 #define DPCD_SET_LINKRATE_LANENUM_PATTERN1_TBL_ADDR ATOM_DP_TRAINING_TBL_ADDR
8481 #define DPCD_SET_SS_CNTL_TBL_ADDR (ATOM_DP_TRAINING_TBL_ADDR + 8 )
8482 #define DPCD_SET_LANE_VSWING_PREEMP_TBL_ADDR (ATOM_DP_TRAINING_TBL_ADDR + 16 )
8483 #define DPCD_SET_TRAINING_PATTERN0_TBL_ADDR (ATOM_DP_TRAINING_TBL_ADDR + 24 )
8484 #define DPCD_SET_TRAINING_PATTERN2_TBL_ADDR (ATOM_DP_TRAINING_TBL_ADDR + 32)
8485 #define DPCD_GET_LINKRATE_LANENUM_SS_TBL_ADDR (ATOM_DP_TRAINING_TBL_ADDR + 40)
8486 #define DPCD_GET_LANE_STATUS_ADJUST_TBL_ADDR (ATOM_DP_TRAINING_TBL_ADDR + 48)
8487 #define DP_I2C_AUX_DDC_WRITE_START_TBL_ADDR (ATOM_DP_TRAINING_TBL_ADDR + 60)
8488 #define DP_I2C_AUX_DDC_WRITE_TBL_ADDR (ATOM_DP_TRAINING_TBL_ADDR + 64)
8489 #define DP_I2C_AUX_DDC_READ_START_TBL_ADDR (ATOM_DP_TRAINING_TBL_ADDR + 72)
8490 #define DP_I2C_AUX_DDC_READ_TBL_ADDR (ATOM_DP_TRAINING_TBL_ADDR + 76)
8491 #define DP_I2C_AUX_DDC_WRITE_END_TBL_ADDR (ATOM_DP_TRAINING_TBL_ADDR + 80)
8492 #define DP_I2C_AUX_DDC_READ_END_TBL_ADDR (ATOM_DP_TRAINING_TBL_ADDR + 84)
8493
8494
8495 typedef struct _PROCESS_I2C_CHANNEL_TRANSACTION_PARAMETERS
8496 {
8497 UCHAR ucI2CSpeed;
8498 union
8499 {
8500 UCHAR ucRegIndex;
8501 UCHAR ucStatus;
8502 };
8503 USHORT lpI2CDataOut;
8504 UCHAR ucFlag;
8505 UCHAR ucTransBytes;
8506 UCHAR ucSlaveAddr;
8507 UCHAR ucLineNumber;
8508 }PROCESS_I2C_CHANNEL_TRANSACTION_PARAMETERS;
8509
8510 #define PROCESS_I2C_CHANNEL_TRANSACTION_PS_ALLOCATION PROCESS_I2C_CHANNEL_TRANSACTION_PARAMETERS
8511
8512
8513 #define HW_I2C_WRITE 1
8514 #define HW_I2C_READ 0
8515 #define I2C_2BYTE_ADDR 0x02
8516
8517
8518
8519
8520 typedef struct _ATOM_HW_MISC_OPERATION_INPUT_PARAMETER_V1_1
8521 {
8522 UCHAR ucCmd;
8523 UCHAR ucReserved[3];
8524 ULONG ulReserved;
8525 }ATOM_HW_MISC_OPERATION_INPUT_PARAMETER_V1_1;
8526
8527 typedef struct _ATOM_HW_MISC_OPERATION_OUTPUT_PARAMETER_V1_1
8528 {
8529 UCHAR ucReturnCode;
8530 UCHAR ucReserved[3];
8531 ULONG ulReserved;
8532 }ATOM_HW_MISC_OPERATION_OUTPUT_PARAMETER_V1_1;
8533
8534
8535 #define ATOM_GET_SDI_SUPPORT 0xF0
8536
8537
8538 #define ATOM_UNKNOWN_CMD 0
8539 #define ATOM_FEATURE_NOT_SUPPORTED 1
8540 #define ATOM_FEATURE_SUPPORTED 2
8541
8542 typedef struct _ATOM_HW_MISC_OPERATION_PS_ALLOCATION
8543 {
8544 ATOM_HW_MISC_OPERATION_INPUT_PARAMETER_V1_1 sInput_Output;
8545 PROCESS_I2C_CHANNEL_TRANSACTION_PARAMETERS sReserved;
8546 }ATOM_HW_MISC_OPERATION_PS_ALLOCATION;
8547
8548
8549
8550 typedef struct _SET_HWBLOCK_INSTANCE_PARAMETER_V2
8551 {
8552 UCHAR ucHWBlkInst;
8553 UCHAR ucReserved[3];
8554 }SET_HWBLOCK_INSTANCE_PARAMETER_V2;
8555
8556 #define HWBLKINST_INSTANCE_MASK 0x07
8557 #define HWBLKINST_HWBLK_MASK 0xF0
8558 #define HWBLKINST_HWBLK_SHIFT 0x04
8559
8560
8561 #define SELECT_DISP_ENGINE 0
8562 #define SELECT_DISP_PLL 1
8563 #define SELECT_DCIO_UNIPHY_LINK0 2
8564 #define SELECT_DCIO_UNIPHY_LINK1 3
8565 #define SELECT_DCIO_IMPCAL 4
8566 #define SELECT_DCIO_DIG 6
8567 #define SELECT_CRTC_PIXEL_RATE 7
8568 #define SELECT_VGA_BLK 8
8569
8570
8571 typedef struct _DIG_TRANSMITTER_INFO_HEADER_V3_1{
8572 ATOM_COMMON_TABLE_HEADER sHeader;
8573 USHORT usDPVsPreEmphSettingOffset;
8574 USHORT usPhyAnalogRegListOffset;
8575 USHORT usPhyAnalogSettingOffset;
8576 USHORT usPhyPllRegListOffset;
8577 USHORT usPhyPllSettingOffset;
8578 }DIG_TRANSMITTER_INFO_HEADER_V3_1;
8579
8580 typedef struct _DIG_TRANSMITTER_INFO_HEADER_V3_2{
8581 ATOM_COMMON_TABLE_HEADER sHeader;
8582 USHORT usDPVsPreEmphSettingOffset;
8583 USHORT usPhyAnalogRegListOffset;
8584 USHORT usPhyAnalogSettingOffset;
8585 USHORT usPhyPllRegListOffset;
8586 USHORT usPhyPllSettingOffset;
8587 USHORT usDPSSRegListOffset;
8588 USHORT usDPSSSettingOffset;
8589 }DIG_TRANSMITTER_INFO_HEADER_V3_2;
8590
8591
8592 typedef struct _DIG_TRANSMITTER_INFO_HEADER_V3_3{
8593 ATOM_COMMON_TABLE_HEADER sHeader;
8594 USHORT usDPVsPreEmphSettingOffset;
8595 USHORT usPhyAnalogRegListOffset;
8596 USHORT usPhyAnalogSettingOffset;
8597 USHORT usPhyPllRegListOffset;
8598 USHORT usPhyPllSettingOffset;
8599 USHORT usDPSSRegListOffset;
8600 USHORT usDPSSSettingOffset;
8601 USHORT usEDPVsLegacyModeOffset;
8602 USHORT useDPVsLowVdiffModeOffset;
8603 USHORT useDPVsHighVdiffModeOffset;
8604 USHORT useDPVsStretchModeOffset;
8605 USHORT useDPVsSingleVdiffModeOffset;
8606 USHORT useDPVsVariablePremModeOffset;
8607 }DIG_TRANSMITTER_INFO_HEADER_V3_3;
8608
8609
8610 typedef struct _CLOCK_CONDITION_REGESTER_INFO{
8611 USHORT usRegisterIndex;
8612 UCHAR ucStartBit;
8613 UCHAR ucEndBit;
8614 }CLOCK_CONDITION_REGESTER_INFO;
8615
8616 typedef struct _CLOCK_CONDITION_SETTING_ENTRY{
8617 USHORT usMaxClockFreq;
8618 UCHAR ucEncodeMode;
8619 UCHAR ucPhySel;
8620 ULONG ulAnalogSetting[1];
8621 }CLOCK_CONDITION_SETTING_ENTRY;
8622
8623 typedef struct _CLOCK_CONDITION_SETTING_INFO{
8624 USHORT usEntrySize;
8625 CLOCK_CONDITION_SETTING_ENTRY asClkCondSettingEntry[1];
8626 }CLOCK_CONDITION_SETTING_INFO;
8627
8628 typedef struct _PHY_CONDITION_REG_VAL{
8629 ULONG ulCondition;
8630 ULONG ulRegVal;
8631 }PHY_CONDITION_REG_VAL;
8632
8633 typedef struct _PHY_CONDITION_REG_VAL_V2{
8634 ULONG ulCondition;
8635 UCHAR ucCondition2;
8636 ULONG ulRegVal;
8637 }PHY_CONDITION_REG_VAL_V2;
8638
8639 typedef struct _PHY_CONDITION_REG_INFO{
8640 USHORT usRegIndex;
8641 USHORT usSize;
8642 PHY_CONDITION_REG_VAL asRegVal[1];
8643 }PHY_CONDITION_REG_INFO;
8644
8645 typedef struct _PHY_CONDITION_REG_INFO_V2{
8646 USHORT usRegIndex;
8647 USHORT usSize;
8648 PHY_CONDITION_REG_VAL_V2 asRegVal[1];
8649 }PHY_CONDITION_REG_INFO_V2;
8650
8651 typedef struct _PHY_ANALOG_SETTING_INFO{
8652 UCHAR ucEncodeMode;
8653 UCHAR ucPhySel;
8654 USHORT usSize;
8655 PHY_CONDITION_REG_INFO asAnalogSetting[1];
8656 }PHY_ANALOG_SETTING_INFO;
8657
8658 typedef struct _PHY_ANALOG_SETTING_INFO_V2{
8659 UCHAR ucEncodeMode;
8660 UCHAR ucPhySel;
8661 USHORT usSize;
8662 PHY_CONDITION_REG_INFO_V2 asAnalogSetting[1];
8663 }PHY_ANALOG_SETTING_INFO_V2;
8664
8665
8666 typedef struct _GFX_HAVESTING_PARAMETERS {
8667 UCHAR ucGfxBlkId;
8668 UCHAR ucReserved;
8669 UCHAR ucActiveUnitNumPerSH;
8670 UCHAR ucMaxUnitNumPerSH;
8671 } GFX_HAVESTING_PARAMETERS;
8672
8673
8674 #define GFX_HARVESTING_CU_ID 0
8675 #define GFX_HARVESTING_RB_ID 1
8676 #define GFX_HARVESTING_PRIM_ID 2
8677
8678
8679 typedef struct _VBIOS_ROM_HEADER{
8680 UCHAR PciRomSignature[2];
8681 UCHAR ucPciRomSizeIn512bytes;
8682 UCHAR ucJumpCoreMainInitBIOS;
8683 USHORT usLabelCoreMainInitBIOS;
8684 UCHAR PciReservedSpace[18];
8685 USHORT usPciDataStructureOffset;
8686 UCHAR Rsvd1d_1a[4];
8687 char strIbm[3];
8688 UCHAR CheckSum[14];
8689 UCHAR ucBiosMsgNumber;
8690 char str761295520[16];
8691 USHORT usLabelCoreVPOSTNoMode;
8692 USHORT usSpecialPostOffset;
8693 UCHAR ucSpeicalPostImageSizeIn512Bytes;
8694 UCHAR Rsved47_45[3];
8695 USHORT usROM_HeaderInformationTableOffset;
8696 UCHAR Rsved4f_4a[6];
8697 char strBuildTimeStamp[20];
8698 UCHAR ucJumpCoreXFuncFarHandler;
8699 USHORT usCoreXFuncFarHandlerOffset;
8700 UCHAR ucRsved67;
8701 UCHAR ucJumpCoreVFuncFarHandler;
8702 USHORT usCoreVFuncFarHandlerOffset;
8703 UCHAR Rsved6d_6b[3];
8704 USHORT usATOM_BIOS_MESSAGE_Offset;
8705 }VBIOS_ROM_HEADER;
8706
8707
8708
8709
8710
8711 #define MC_MISC0__MEMORY_TYPE_MASK 0xF0000000
8712 #define MC_MISC0__MEMORY_TYPE__GDDR1 0x10000000
8713 #define MC_MISC0__MEMORY_TYPE__DDR2 0x20000000
8714 #define MC_MISC0__MEMORY_TYPE__GDDR3 0x30000000
8715 #define MC_MISC0__MEMORY_TYPE__GDDR4 0x40000000
8716 #define MC_MISC0__MEMORY_TYPE__GDDR5 0x50000000
8717 #define MC_MISC0__MEMORY_TYPE__HBM 0x60000000
8718 #define MC_MISC0__MEMORY_TYPE__DDR3 0xB0000000
8719
8720 #define ATOM_MEM_TYPE_DDR_STRING "DDR"
8721 #define ATOM_MEM_TYPE_DDR2_STRING "DDR2"
8722 #define ATOM_MEM_TYPE_GDDR3_STRING "GDDR3"
8723 #define ATOM_MEM_TYPE_GDDR4_STRING "GDDR4"
8724 #define ATOM_MEM_TYPE_GDDR5_STRING "GDDR5"
8725 #define ATOM_MEM_TYPE_HBM_STRING "HBM"
8726 #define ATOM_MEM_TYPE_DDR3_STRING "DDR3"
8727
8728
8729
8730
8731
8732
8733
8734 typedef struct _ATOM_DAC_INFO
8735 {
8736 ATOM_COMMON_TABLE_HEADER sHeader;
8737 USHORT usMaxFrequency;
8738 USHORT usReserved;
8739 }ATOM_DAC_INFO;
8740
8741
8742 typedef struct _COMPASSIONATE_DATA
8743 {
8744 ATOM_COMMON_TABLE_HEADER sHeader;
8745
8746
8747 UCHAR ucDAC1_BG_Adjustment;
8748 UCHAR ucDAC1_DAC_Adjustment;
8749 USHORT usDAC1_FORCE_Data;
8750
8751 UCHAR ucDAC2_CRT2_BG_Adjustment;
8752 UCHAR ucDAC2_CRT2_DAC_Adjustment;
8753 USHORT usDAC2_CRT2_FORCE_Data;
8754 USHORT usDAC2_CRT2_MUX_RegisterIndex;
8755 UCHAR ucDAC2_CRT2_MUX_RegisterInfo;
8756 UCHAR ucDAC2_NTSC_BG_Adjustment;
8757 UCHAR ucDAC2_NTSC_DAC_Adjustment;
8758 USHORT usDAC2_TV1_FORCE_Data;
8759 USHORT usDAC2_TV1_MUX_RegisterIndex;
8760 UCHAR ucDAC2_TV1_MUX_RegisterInfo;
8761 UCHAR ucDAC2_CV_BG_Adjustment;
8762 UCHAR ucDAC2_CV_DAC_Adjustment;
8763 USHORT usDAC2_CV_FORCE_Data;
8764 USHORT usDAC2_CV_MUX_RegisterIndex;
8765 UCHAR ucDAC2_CV_MUX_RegisterInfo;
8766 UCHAR ucDAC2_PAL_BG_Adjustment;
8767 UCHAR ucDAC2_PAL_DAC_Adjustment;
8768 USHORT usDAC2_TV2_FORCE_Data;
8769 }COMPASSIONATE_DATA;
8770
8771
8772
8773
8774
8775
8776
8777
8778
8779
8780
8781
8782
8783
8784
8785
8786
8787
8788
8789
8790
8791
8792
8793
8794
8795 typedef struct _ATOM_CONNECTOR_INFO
8796 {
8797 #if ATOM_BIG_ENDIAN
8798 UCHAR bfConnectorType:4;
8799 UCHAR bfAssociatedDAC:4;
8800 #else
8801 UCHAR bfAssociatedDAC:4;
8802 UCHAR bfConnectorType:4;
8803 #endif
8804 }ATOM_CONNECTOR_INFO;
8805
8806 typedef union _ATOM_CONNECTOR_INFO_ACCESS
8807 {
8808 ATOM_CONNECTOR_INFO sbfAccess;
8809 UCHAR ucAccess;
8810 }ATOM_CONNECTOR_INFO_ACCESS;
8811
8812 typedef struct _ATOM_CONNECTOR_INFO_I2C
8813 {
8814 ATOM_CONNECTOR_INFO_ACCESS sucConnectorInfo;
8815 ATOM_I2C_ID_CONFIG_ACCESS sucI2cId;
8816 }ATOM_CONNECTOR_INFO_I2C;
8817
8818
8819 typedef struct _ATOM_SUPPORTED_DEVICES_INFO
8820 {
8821 ATOM_COMMON_TABLE_HEADER sHeader;
8822 USHORT usDeviceSupport;
8823 ATOM_CONNECTOR_INFO_I2C asConnInfo[ATOM_MAX_SUPPORTED_DEVICE_INFO];
8824 }ATOM_SUPPORTED_DEVICES_INFO;
8825
8826 #define NO_INT_SRC_MAPPED 0xFF
8827
8828 typedef struct _ATOM_CONNECTOR_INC_SRC_BITMAP
8829 {
8830 UCHAR ucIntSrcBitmap;
8831 }ATOM_CONNECTOR_INC_SRC_BITMAP;
8832
8833 typedef struct _ATOM_SUPPORTED_DEVICES_INFO_2
8834 {
8835 ATOM_COMMON_TABLE_HEADER sHeader;
8836 USHORT usDeviceSupport;
8837 ATOM_CONNECTOR_INFO_I2C asConnInfo[ATOM_MAX_SUPPORTED_DEVICE_INFO_2];
8838 ATOM_CONNECTOR_INC_SRC_BITMAP asIntSrcInfo[ATOM_MAX_SUPPORTED_DEVICE_INFO_2];
8839 }ATOM_SUPPORTED_DEVICES_INFO_2;
8840
8841 typedef struct _ATOM_SUPPORTED_DEVICES_INFO_2d1
8842 {
8843 ATOM_COMMON_TABLE_HEADER sHeader;
8844 USHORT usDeviceSupport;
8845 ATOM_CONNECTOR_INFO_I2C asConnInfo[ATOM_MAX_SUPPORTED_DEVICE];
8846 ATOM_CONNECTOR_INC_SRC_BITMAP asIntSrcInfo[ATOM_MAX_SUPPORTED_DEVICE];
8847 }ATOM_SUPPORTED_DEVICES_INFO_2d1;
8848
8849 #define ATOM_SUPPORTED_DEVICES_INFO_LAST ATOM_SUPPORTED_DEVICES_INFO_2d1
8850
8851
8852
8853 typedef struct _ATOM_MISC_CONTROL_INFO
8854 {
8855 USHORT usFrequency;
8856 UCHAR ucPLL_ChargePump;
8857 UCHAR ucPLL_DutyCycle;
8858 UCHAR ucPLL_VCO_Gain;
8859 UCHAR ucPLL_VoltageSwing;
8860 }ATOM_MISC_CONTROL_INFO;
8861
8862
8863 #define ATOM_MAX_MISC_INFO 4
8864
8865 typedef struct _ATOM_TMDS_INFO
8866 {
8867 ATOM_COMMON_TABLE_HEADER sHeader;
8868 USHORT usMaxFrequency;
8869 ATOM_MISC_CONTROL_INFO asMiscInfo[ATOM_MAX_MISC_INFO];
8870 }ATOM_TMDS_INFO;
8871
8872
8873 typedef struct _ATOM_ENCODER_ANALOG_ATTRIBUTE
8874 {
8875 UCHAR ucTVStandard;
8876 UCHAR ucPadding[1];
8877 }ATOM_ENCODER_ANALOG_ATTRIBUTE;
8878
8879 typedef struct _ATOM_ENCODER_DIGITAL_ATTRIBUTE
8880 {
8881 UCHAR ucAttribute;
8882 UCHAR ucPadding[1];
8883 }ATOM_ENCODER_DIGITAL_ATTRIBUTE;
8884
8885 typedef union _ATOM_ENCODER_ATTRIBUTE
8886 {
8887 ATOM_ENCODER_ANALOG_ATTRIBUTE sAlgAttrib;
8888 ATOM_ENCODER_DIGITAL_ATTRIBUTE sDigAttrib;
8889 }ATOM_ENCODER_ATTRIBUTE;
8890
8891
8892 typedef struct _DVO_ENCODER_CONTROL_PARAMETERS
8893 {
8894 USHORT usPixelClock;
8895 USHORT usEncoderID;
8896 UCHAR ucDeviceType;
8897 UCHAR ucAction;
8898 ATOM_ENCODER_ATTRIBUTE usDevAttr;
8899 }DVO_ENCODER_CONTROL_PARAMETERS;
8900
8901 typedef struct _DVO_ENCODER_CONTROL_PS_ALLOCATION
8902 {
8903 DVO_ENCODER_CONTROL_PARAMETERS sDVOEncoder;
8904 WRITE_ONE_BYTE_HW_I2C_DATA_PS_ALLOCATION sReserved;
8905 }DVO_ENCODER_CONTROL_PS_ALLOCATION;
8906
8907
8908 #define ATOM_XTMDS_ASIC_SI164_ID 1
8909 #define ATOM_XTMDS_ASIC_SI178_ID 2
8910 #define ATOM_XTMDS_ASIC_TFP513_ID 3
8911 #define ATOM_XTMDS_SUPPORTED_SINGLELINK 0x00000001
8912 #define ATOM_XTMDS_SUPPORTED_DUALLINK 0x00000002
8913 #define ATOM_XTMDS_MVPU_FPGA 0x00000004
8914
8915
8916 typedef struct _ATOM_XTMDS_INFO
8917 {
8918 ATOM_COMMON_TABLE_HEADER sHeader;
8919 USHORT usSingleLinkMaxFrequency;
8920 ATOM_I2C_ID_CONFIG_ACCESS sucI2cId;
8921 UCHAR ucXtransimitterID;
8922 UCHAR ucSupportedLink;
8923 UCHAR ucSequnceAlterID;
8924
8925 UCHAR ucMasterAddress;
8926 UCHAR ucSlaveAddress;
8927 }ATOM_XTMDS_INFO;
8928
8929 typedef struct _DFP_DPMS_STATUS_CHANGE_PARAMETERS
8930 {
8931 UCHAR ucEnable;
8932 UCHAR ucDevice;
8933 UCHAR ucPadding[2];
8934 }DFP_DPMS_STATUS_CHANGE_PARAMETERS;
8935
8936
8937
8938
8939 #define ATOM_PM_MISCINFO_SPLIT_CLOCK 0x00000000L
8940 #define ATOM_PM_MISCINFO_USING_MCLK_SRC 0x00000001L
8941 #define ATOM_PM_MISCINFO_USING_SCLK_SRC 0x00000002L
8942
8943 #define ATOM_PM_MISCINFO_VOLTAGE_DROP_SUPPORT 0x00000004L
8944 #define ATOM_PM_MISCINFO_VOLTAGE_DROP_ACTIVE_HIGH 0x00000008L
8945
8946 #define ATOM_PM_MISCINFO_LOAD_PERFORMANCE_EN 0x00000010L
8947
8948 #define ATOM_PM_MISCINFO_ENGINE_CLOCK_CONTRL_EN 0x00000020L
8949 #define ATOM_PM_MISCINFO_MEMORY_CLOCK_CONTRL_EN 0x00000040L
8950 #define ATOM_PM_MISCINFO_PROGRAM_VOLTAGE 0x00000080L
8951
8952 #define ATOM_PM_MISCINFO_ASIC_REDUCED_SPEED_SCLK_EN 0x00000100L
8953 #define ATOM_PM_MISCINFO_ASIC_DYNAMIC_VOLTAGE_EN 0x00000200L
8954 #define ATOM_PM_MISCINFO_ASIC_SLEEP_MODE_EN 0x00000400L
8955 #define ATOM_PM_MISCINFO_LOAD_BALANCE_EN 0x00000800L
8956 #define ATOM_PM_MISCINFO_DEFAULT_DC_STATE_ENTRY_TRUE 0x00001000L
8957 #define ATOM_PM_MISCINFO_DEFAULT_LOW_DC_STATE_ENTRY_TRUE 0x00002000L
8958 #define ATOM_PM_MISCINFO_LOW_LCD_REFRESH_RATE 0x00004000L
8959
8960 #define ATOM_PM_MISCINFO_DRIVER_DEFAULT_MODE 0x00008000L
8961 #define ATOM_PM_MISCINFO_OVER_CLOCK_MODE 0x00010000L
8962 #define ATOM_PM_MISCINFO_OVER_DRIVE_MODE 0x00020000L
8963 #define ATOM_PM_MISCINFO_POWER_SAVING_MODE 0x00040000L
8964 #define ATOM_PM_MISCINFO_THERMAL_DIODE_MODE 0x00080000L
8965
8966 #define ATOM_PM_MISCINFO_FRAME_MODULATION_MASK 0x00300000L
8967 #define ATOM_PM_MISCINFO_FRAME_MODULATION_SHIFT 20
8968
8969 #define ATOM_PM_MISCINFO_DYN_CLK_3D_IDLE 0x00400000L
8970 #define ATOM_PM_MISCINFO_DYNAMIC_CLOCK_DIVIDER_BY_2 0x00800000L
8971 #define ATOM_PM_MISCINFO_DYNAMIC_CLOCK_DIVIDER_BY_4 0x01000000L
8972 #define ATOM_PM_MISCINFO_DYNAMIC_HDP_BLOCK_EN 0x02000000L
8973 #define ATOM_PM_MISCINFO_DYNAMIC_MC_HOST_BLOCK_EN 0x04000000L
8974 #define ATOM_PM_MISCINFO_3D_ACCELERATION_EN 0x08000000L
8975
8976 #define ATOM_PM_MISCINFO_POWERPLAY_SETTINGS_GROUP_MASK 0x70000000L
8977 #define ATOM_PM_MISCINFO_POWERPLAY_SETTINGS_GROUP_SHIFT 28
8978 #define ATOM_PM_MISCINFO_ENABLE_BACK_BIAS 0x80000000L
8979
8980 #define ATOM_PM_MISCINFO2_SYSTEM_AC_LITE_MODE 0x00000001L
8981 #define ATOM_PM_MISCINFO2_MULTI_DISPLAY_SUPPORT 0x00000002L
8982 #define ATOM_PM_MISCINFO2_DYNAMIC_BACK_BIAS_EN 0x00000004L
8983 #define ATOM_PM_MISCINFO2_FS3D_OVERDRIVE_INFO 0x00000008L
8984 #define ATOM_PM_MISCINFO2_FORCEDLOWPWR_MODE 0x00000010L
8985 #define ATOM_PM_MISCINFO2_VDDCI_DYNAMIC_VOLTAGE_EN 0x00000020L
8986 #define ATOM_PM_MISCINFO2_VIDEO_PLAYBACK_CAPABLE 0x00000040L
8987
8988 #define ATOM_PM_MISCINFO2_NOT_VALID_ON_DC 0x00000080L
8989 #define ATOM_PM_MISCINFO2_STUTTER_MODE_EN 0x00000100L
8990 #define ATOM_PM_MISCINFO2_UVD_SUPPORT_MODE 0x00000200L
8991
8992
8993
8994 typedef struct _ATOM_POWERMODE_INFO
8995 {
8996 ULONG ulMiscInfo;
8997 ULONG ulReserved1;
8998 ULONG ulReserved2;
8999 USHORT usEngineClock;
9000 USHORT usMemoryClock;
9001 UCHAR ucVoltageDropIndex;
9002 UCHAR ucSelectedPanel_RefreshRate;
9003 UCHAR ucMinTemperature;
9004 UCHAR ucMaxTemperature;
9005 UCHAR ucNumPciELanes;
9006 }ATOM_POWERMODE_INFO;
9007
9008
9009
9010 typedef struct _ATOM_POWERMODE_INFO_V2
9011 {
9012 ULONG ulMiscInfo;
9013 ULONG ulMiscInfo2;
9014 ULONG ulEngineClock;
9015 ULONG ulMemoryClock;
9016 UCHAR ucVoltageDropIndex;
9017 UCHAR ucSelectedPanel_RefreshRate;
9018 UCHAR ucMinTemperature;
9019 UCHAR ucMaxTemperature;
9020 UCHAR ucNumPciELanes;
9021 }ATOM_POWERMODE_INFO_V2;
9022
9023
9024
9025 typedef struct _ATOM_POWERMODE_INFO_V3
9026 {
9027 ULONG ulMiscInfo;
9028 ULONG ulMiscInfo2;
9029 ULONG ulEngineClock;
9030 ULONG ulMemoryClock;
9031 UCHAR ucVoltageDropIndex;
9032 UCHAR ucSelectedPanel_RefreshRate;
9033 UCHAR ucMinTemperature;
9034 UCHAR ucMaxTemperature;
9035 UCHAR ucNumPciELanes;
9036 UCHAR ucVDDCI_VoltageDropIndex;
9037 }ATOM_POWERMODE_INFO_V3;
9038
9039
9040 #define ATOM_MAX_NUMBEROF_POWER_BLOCK 8
9041
9042 #define ATOM_PP_OVERDRIVE_INTBITMAP_AUXWIN 0x01
9043 #define ATOM_PP_OVERDRIVE_INTBITMAP_OVERDRIVE 0x02
9044
9045 #define ATOM_PP_OVERDRIVE_THERMALCONTROLLER_LM63 0x01
9046 #define ATOM_PP_OVERDRIVE_THERMALCONTROLLER_ADM1032 0x02
9047 #define ATOM_PP_OVERDRIVE_THERMALCONTROLLER_ADM1030 0x03
9048 #define ATOM_PP_OVERDRIVE_THERMALCONTROLLER_MUA6649 0x04
9049 #define ATOM_PP_OVERDRIVE_THERMALCONTROLLER_LM64 0x05
9050 #define ATOM_PP_OVERDRIVE_THERMALCONTROLLER_F75375 0x06
9051 #define ATOM_PP_OVERDRIVE_THERMALCONTROLLER_ASC7512 0x07
9052
9053
9054 typedef struct _ATOM_POWERPLAY_INFO
9055 {
9056 ATOM_COMMON_TABLE_HEADER sHeader;
9057 UCHAR ucOverdriveThermalController;
9058 UCHAR ucOverdriveI2cLine;
9059 UCHAR ucOverdriveIntBitmap;
9060 UCHAR ucOverdriveControllerAddress;
9061 UCHAR ucSizeOfPowerModeEntry;
9062 UCHAR ucNumOfPowerModeEntries;
9063 ATOM_POWERMODE_INFO asPowerPlayInfo[ATOM_MAX_NUMBEROF_POWER_BLOCK];
9064 }ATOM_POWERPLAY_INFO;
9065
9066 typedef struct _ATOM_POWERPLAY_INFO_V2
9067 {
9068 ATOM_COMMON_TABLE_HEADER sHeader;
9069 UCHAR ucOverdriveThermalController;
9070 UCHAR ucOverdriveI2cLine;
9071 UCHAR ucOverdriveIntBitmap;
9072 UCHAR ucOverdriveControllerAddress;
9073 UCHAR ucSizeOfPowerModeEntry;
9074 UCHAR ucNumOfPowerModeEntries;
9075 ATOM_POWERMODE_INFO_V2 asPowerPlayInfo[ATOM_MAX_NUMBEROF_POWER_BLOCK];
9076 }ATOM_POWERPLAY_INFO_V2;
9077
9078 typedef struct _ATOM_POWERPLAY_INFO_V3
9079 {
9080 ATOM_COMMON_TABLE_HEADER sHeader;
9081 UCHAR ucOverdriveThermalController;
9082 UCHAR ucOverdriveI2cLine;
9083 UCHAR ucOverdriveIntBitmap;
9084 UCHAR ucOverdriveControllerAddress;
9085 UCHAR ucSizeOfPowerModeEntry;
9086 UCHAR ucNumOfPowerModeEntries;
9087 ATOM_POWERMODE_INFO_V3 asPowerPlayInfo[ATOM_MAX_NUMBEROF_POWER_BLOCK];
9088 }ATOM_POWERPLAY_INFO_V3;
9089
9090
9091
9092
9093
9094
9095
9096 #define ATOM_MASTER_DATA_TABLE_REVISION 0x01
9097 #define Object_Info Object_Header
9098 #define AdjustARB_SEQ MC_InitParameter
9099 #define VRAM_GPIO_DetectionInfo VoltageObjectInfo
9100 #define ASIC_VDDCI_Info ASIC_ProfilingInfo
9101 #define ASIC_MVDDQ_Info MemoryTrainingInfo
9102 #define SS_Info PPLL_SS_Info
9103 #define ASIC_MVDDC_Info ASIC_InternalSS_Info
9104 #define DispDevicePriorityInfo SaveRestoreInfo
9105 #define DispOutInfo TV_VideoMode
9106
9107
9108 #define ATOM_ENCODER_OBJECT_TABLE ATOM_OBJECT_TABLE
9109 #define ATOM_CONNECTOR_OBJECT_TABLE ATOM_OBJECT_TABLE
9110
9111
9112 #define DFP2I_OUTPUT_CONTROL_PARAMETERS CRT1_OUTPUT_CONTROL_PARAMETERS
9113 #define DFP2I_OUTPUT_CONTROL_PS_ALLOCATION DFP2I_OUTPUT_CONTROL_PARAMETERS
9114
9115 #define DFP1X_OUTPUT_CONTROL_PARAMETERS CRT1_OUTPUT_CONTROL_PARAMETERS
9116 #define DFP1X_OUTPUT_CONTROL_PS_ALLOCATION DFP1X_OUTPUT_CONTROL_PARAMETERS
9117
9118 #define DFP1I_OUTPUT_CONTROL_PARAMETERS DFP1_OUTPUT_CONTROL_PARAMETERS
9119 #define DFP1I_OUTPUT_CONTROL_PS_ALLOCATION DFP1_OUTPUT_CONTROL_PS_ALLOCATION
9120
9121 #define ATOM_DEVICE_DFP1I_SUPPORT ATOM_DEVICE_DFP1_SUPPORT
9122 #define ATOM_DEVICE_DFP1X_SUPPORT ATOM_DEVICE_DFP2_SUPPORT
9123
9124 #define ATOM_DEVICE_DFP1I_INDEX ATOM_DEVICE_DFP1_INDEX
9125 #define ATOM_DEVICE_DFP1X_INDEX ATOM_DEVICE_DFP2_INDEX
9126
9127 #define ATOM_DEVICE_DFP2I_INDEX 0x00000009
9128 #define ATOM_DEVICE_DFP2I_SUPPORT (0x1L << ATOM_DEVICE_DFP2I_INDEX)
9129
9130 #define ATOM_S0_DFP1I ATOM_S0_DFP1
9131 #define ATOM_S0_DFP1X ATOM_S0_DFP2
9132
9133 #define ATOM_S0_DFP2I 0x00200000L
9134 #define ATOM_S0_DFP2Ib2 0x20
9135
9136 #define ATOM_S2_DFP1I_DPMS_STATE ATOM_S2_DFP1_DPMS_STATE
9137 #define ATOM_S2_DFP1X_DPMS_STATE ATOM_S2_DFP2_DPMS_STATE
9138
9139 #define ATOM_S2_DFP2I_DPMS_STATE 0x02000000L
9140 #define ATOM_S2_DFP2I_DPMS_STATEb3 0x02
9141
9142 #define ATOM_S3_DFP2I_ACTIVEb1 0x02
9143
9144 #define ATOM_S3_DFP1I_ACTIVE ATOM_S3_DFP1_ACTIVE
9145 #define ATOM_S3_DFP1X_ACTIVE ATOM_S3_DFP2_ACTIVE
9146
9147 #define ATOM_S3_DFP2I_ACTIVE 0x00000200L
9148
9149 #define ATOM_S3_DFP1I_CRTC_ACTIVE ATOM_S3_DFP1_CRTC_ACTIVE
9150 #define ATOM_S3_DFP1X_CRTC_ACTIVE ATOM_S3_DFP2_CRTC_ACTIVE
9151 #define ATOM_S3_DFP2I_CRTC_ACTIVE 0x02000000L
9152
9153
9154 #define ATOM_S3_DFP2I_CRTC_ACTIVEb3 0x02
9155 #define ATOM_S5_DOS_REQ_DFP2Ib1 0x02
9156
9157 #define ATOM_S5_DOS_REQ_DFP2I 0x0200
9158 #define ATOM_S6_ACC_REQ_DFP1I ATOM_S6_ACC_REQ_DFP1
9159 #define ATOM_S6_ACC_REQ_DFP1X ATOM_S6_ACC_REQ_DFP2
9160
9161 #define ATOM_S6_ACC_REQ_DFP2Ib3 0x02
9162 #define ATOM_S6_ACC_REQ_DFP2I 0x02000000L
9163
9164 #define TMDS1XEncoderControl DVOEncoderControl
9165 #define DFP1XOutputControl DVOOutputControl
9166
9167 #define ExternalDFPOutputControl DFP1XOutputControl
9168 #define EnableExternalTMDS_Encoder TMDS1XEncoderControl
9169
9170 #define DFP1IOutputControl TMDSAOutputControl
9171 #define DFP2IOutputControl LVTMAOutputControl
9172
9173 #define DAC1_ENCODER_CONTROL_PARAMETERS DAC_ENCODER_CONTROL_PARAMETERS
9174 #define DAC1_ENCODER_CONTROL_PS_ALLOCATION DAC_ENCODER_CONTROL_PS_ALLOCATION
9175
9176 #define DAC2_ENCODER_CONTROL_PARAMETERS DAC_ENCODER_CONTROL_PARAMETERS
9177 #define DAC2_ENCODER_CONTROL_PS_ALLOCATION DAC_ENCODER_CONTROL_PS_ALLOCATION
9178
9179 #define ucDac1Standard ucDacStandard
9180 #define ucDac2Standard ucDacStandard
9181
9182 #define TMDS1EncoderControl TMDSAEncoderControl
9183 #define TMDS2EncoderControl LVTMAEncoderControl
9184
9185 #define DFP1OutputControl TMDSAOutputControl
9186 #define DFP2OutputControl LVTMAOutputControl
9187 #define CRT1OutputControl DAC1OutputControl
9188 #define CRT2OutputControl DAC2OutputControl
9189
9190
9191 #define EnableLVDS_SS EnableSpreadSpectrumOnPPLL
9192 #define ENABLE_LVDS_SS_PARAMETERS_V3 ENABLE_SPREAD_SPECTRUM_ON_PPLL
9193
9194 #define ATOM_S2_CRT1_DPMS_STATE 0x00010000L
9195 #define ATOM_S2_LCD1_DPMS_STATE ATOM_S2_CRT1_DPMS_STATE
9196 #define ATOM_S2_TV1_DPMS_STATE ATOM_S2_CRT1_DPMS_STATE
9197 #define ATOM_S2_DFP1_DPMS_STATE ATOM_S2_CRT1_DPMS_STATE
9198 #define ATOM_S2_CRT2_DPMS_STATE ATOM_S2_CRT1_DPMS_STATE
9199
9200 #define ATOM_S6_ACC_REQ_TV2 0x00400000L
9201 #define ATOM_DEVICE_TV2_INDEX 0x00000006
9202 #define ATOM_DEVICE_TV2_SUPPORT (0x1L << ATOM_DEVICE_TV2_INDEX)
9203 #define ATOM_S0_TV2 0x00100000L
9204 #define ATOM_S3_TV2_ACTIVE ATOM_S3_DFP6_ACTIVE
9205 #define ATOM_S3_TV2_CRTC_ACTIVE ATOM_S3_DFP6_CRTC_ACTIVE
9206
9207
9208
9209 #pragma pack()
9210
9211 #pragma pack(1)
9212
9213 typedef struct _ATOM_HOLE_INFO
9214 {
9215 USHORT usOffset;
9216 USHORT usLength;
9217 }ATOM_HOLE_INFO;
9218
9219 typedef struct _ATOM_SERVICE_DESCRIPTION
9220 {
9221 UCHAR ucRevision;
9222 UCHAR ucAlgorithm;
9223 UCHAR ucSignatureType;
9224 UCHAR ucReserved;
9225 USHORT usSigOffset;
9226 USHORT usSigLength;
9227 }ATOM_SERVICE_DESCRIPTION;
9228
9229
9230 typedef struct _ATOM_SERVICE_INFO
9231 {
9232 ATOM_COMMON_TABLE_HEADER asHeader;
9233 ATOM_SERVICE_DESCRIPTION asDescr;
9234 UCHAR ucholesNo;
9235 ATOM_HOLE_INFO holes[1];
9236 }ATOM_SERVICE_INFO;
9237
9238
9239
9240 #pragma pack()
9241
9242
9243
9244
9245 #pragma pack(1)
9246
9247 typedef struct {
9248 ULONG Signature;
9249 ULONG TableLength;
9250 UCHAR Revision;
9251 UCHAR Checksum;
9252 UCHAR OemId[6];
9253 UCHAR OemTableId[8];
9254 ULONG OemRevision;
9255 ULONG CreatorId;
9256 ULONG CreatorRevision;
9257 } AMD_ACPI_DESCRIPTION_HEADER;
9258
9259
9260
9261
9262
9263
9264
9265
9266
9267
9268
9269
9270
9271
9272 typedef struct {
9273 AMD_ACPI_DESCRIPTION_HEADER SHeader;
9274 UCHAR TableUUID[16];
9275 ULONG VBIOSImageOffset;
9276 ULONG Lib1ImageOffset;
9277 ULONG Reserved[4];
9278 }UEFI_ACPI_VFCT;
9279
9280 typedef struct {
9281 ULONG PCIBus;
9282 ULONG PCIDevice;
9283 ULONG PCIFunction;
9284 USHORT VendorID;
9285 USHORT DeviceID;
9286 USHORT SSVID;
9287 USHORT SSID;
9288 ULONG Revision;
9289 ULONG ImageLength;
9290 }VFCT_IMAGE_HEADER;
9291
9292
9293 typedef struct {
9294 VFCT_IMAGE_HEADER VbiosHeader;
9295 UCHAR VbiosContent[1];
9296 }GOP_VBIOS_CONTENT;
9297
9298 typedef struct {
9299 VFCT_IMAGE_HEADER Lib1Header;
9300 UCHAR Lib1Content[1];
9301 }GOP_LIB1_CONTENT;
9302
9303 #pragma pack()
9304
9305
9306 #endif
9307
9308 #include "pptable.h"
9309