1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28 #ifndef _ATOMBIOS_H
29 #define _ATOMBIOS_H
30
31 #define ATOM_VERSION_MAJOR 0x00020000
32 #define ATOM_VERSION_MINOR 0x00000002
33
34 #define ATOM_HEADER_VERSION (ATOM_VERSION_MAJOR | ATOM_VERSION_MINOR)
35
36
37
38
39 #ifndef ATOM_BIG_ENDIAN
40 #error Endian not specified
41 #endif
42
43 #ifdef _H2INC
44 #ifndef ULONG
45 typedef unsigned long ULONG;
46 #endif
47
48 #ifndef UCHAR
49 typedef unsigned char UCHAR;
50 #endif
51
52 #ifndef USHORT
53 typedef unsigned short USHORT;
54 #endif
55 #endif
56
57 #define ATOM_DAC_A 0
58 #define ATOM_DAC_B 1
59 #define ATOM_EXT_DAC 2
60
61 #define ATOM_CRTC1 0
62 #define ATOM_CRTC2 1
63 #define ATOM_CRTC3 2
64 #define ATOM_CRTC4 3
65 #define ATOM_CRTC5 4
66 #define ATOM_CRTC6 5
67
68 #define ATOM_UNDERLAY_PIPE0 16
69 #define ATOM_UNDERLAY_PIPE1 17
70
71 #define ATOM_CRTC_INVALID 0xFF
72
73 #define ATOM_DIGA 0
74 #define ATOM_DIGB 1
75
76 #define ATOM_PPLL1 0
77 #define ATOM_PPLL2 1
78 #define ATOM_DCPLL 2
79 #define ATOM_PPLL0 2
80 #define ATOM_PPLL3 3
81
82 #define ATOM_PHY_PLL0 4
83 #define ATOM_PHY_PLL1 5
84
85 #define ATOM_EXT_PLL1 8
86 #define ATOM_GCK_DFS 8
87 #define ATOM_EXT_PLL2 9
88 #define ATOM_FCH_CLK 9
89 #define ATOM_EXT_CLOCK 10
90 #define ATOM_DP_DTO 11
91
92 #define ATOM_COMBOPHY_PLL0 20
93 #define ATOM_COMBOPHY_PLL1 21
94 #define ATOM_COMBOPHY_PLL2 22
95 #define ATOM_COMBOPHY_PLL3 23
96 #define ATOM_COMBOPHY_PLL4 24
97 #define ATOM_COMBOPHY_PLL5 25
98
99 #define ATOM_PPLL_INVALID 0xFF
100
101 #define ENCODER_REFCLK_SRC_P1PLL 0
102 #define ENCODER_REFCLK_SRC_P2PLL 1
103 #define ENCODER_REFCLK_SRC_DCPLL 2
104 #define ENCODER_REFCLK_SRC_EXTCLK 3
105 #define ENCODER_REFCLK_SRC_INVALID 0xFF
106
107 #define ATOM_SCALER_DISABLE 0
108 #define ATOM_SCALER_CENTER 1
109 #define ATOM_SCALER_EXPANSION 2
110 #define ATOM_SCALER_MULTI_EX 3
111
112 #define ATOM_DISABLE 0
113 #define ATOM_ENABLE 1
114 #define ATOM_LCD_BLOFF (ATOM_DISABLE+2)
115 #define ATOM_LCD_BLON (ATOM_ENABLE+2)
116 #define ATOM_LCD_BL_BRIGHTNESS_CONTROL (ATOM_ENABLE+3)
117 #define ATOM_LCD_SELFTEST_START (ATOM_DISABLE+5)
118 #define ATOM_LCD_SELFTEST_STOP (ATOM_ENABLE+5)
119 #define ATOM_ENCODER_INIT (ATOM_DISABLE+7)
120 #define ATOM_INIT (ATOM_DISABLE+7)
121 #define ATOM_GET_STATUS (ATOM_DISABLE+8)
122
123 #define ATOM_BLANKING 1
124 #define ATOM_BLANKING_OFF 0
125
126
127 #define ATOM_CRT1 0
128 #define ATOM_CRT2 1
129
130 #define ATOM_TV_NTSC 1
131 #define ATOM_TV_NTSCJ 2
132 #define ATOM_TV_PAL 3
133 #define ATOM_TV_PALM 4
134 #define ATOM_TV_PALCN 5
135 #define ATOM_TV_PALN 6
136 #define ATOM_TV_PAL60 7
137 #define ATOM_TV_SECAM 8
138 #define ATOM_TV_CV 16
139
140 #define ATOM_DAC1_PS2 1
141 #define ATOM_DAC1_CV 2
142 #define ATOM_DAC1_NTSC 3
143 #define ATOM_DAC1_PAL 4
144
145 #define ATOM_DAC2_PS2 ATOM_DAC1_PS2
146 #define ATOM_DAC2_CV ATOM_DAC1_CV
147 #define ATOM_DAC2_NTSC ATOM_DAC1_NTSC
148 #define ATOM_DAC2_PAL ATOM_DAC1_PAL
149
150 #define ATOM_PM_ON 0
151 #define ATOM_PM_STANDBY 1
152 #define ATOM_PM_SUSPEND 2
153 #define ATOM_PM_OFF 3
154
155
156
157
158
159
160 #define ATOM_PANEL_MISC_DUAL 0x00000001
161 #define ATOM_PANEL_MISC_888RGB 0x00000002
162 #define ATOM_PANEL_MISC_GREY_LEVEL 0x0000000C
163 #define ATOM_PANEL_MISC_FPDI 0x00000010
164 #define ATOM_PANEL_MISC_GREY_LEVEL_SHIFT 2
165 #define ATOM_PANEL_MISC_SPATIAL 0x00000020
166 #define ATOM_PANEL_MISC_TEMPORAL 0x00000040
167 #define ATOM_PANEL_MISC_API_ENABLED 0x00000080
168
169 #define MEMTYPE_DDR1 "DDR1"
170 #define MEMTYPE_DDR2 "DDR2"
171 #define MEMTYPE_DDR3 "DDR3"
172 #define MEMTYPE_DDR4 "DDR4"
173
174 #define ASIC_BUS_TYPE_PCI "PCI"
175 #define ASIC_BUS_TYPE_AGP "AGP"
176 #define ASIC_BUS_TYPE_PCIE "PCI_EXPRESS"
177
178
179 #define ATOM_FIREGL_FLAG_STRING "FGL"
180 #define ATOM_MAX_SIZE_OF_FIREGL_FLAG_STRING 3
181
182 #define ATOM_FAKE_DESKTOP_STRING "DSK"
183 #define ATOM_MAX_SIZE_OF_FAKE_DESKTOP_STRING ATOM_MAX_SIZE_OF_FIREGL_FLAG_STRING
184
185 #define ATOM_M54T_FLAG_STRING "M54T"
186 #define ATOM_MAX_SIZE_OF_M54T_FLAG_STRING 4
187
188 #define HW_ASSISTED_I2C_STATUS_FAILURE 2
189 #define HW_ASSISTED_I2C_STATUS_SUCCESS 1
190
191 #pragma pack(1)
192
193
194 #define OFFSET_TO_POINTER_TO_ATOM_ROM_HEADER 0x00000048L
195 #define OFFSET_TO_ATOM_ROM_IMAGE_SIZE 0x00000002L
196
197 #define OFFSET_TO_ATOMBIOS_ASIC_BUS_MEM_TYPE 0x94
198 #define MAXSIZE_OF_ATOMBIOS_ASIC_BUS_MEM_TYPE 20
199 #define OFFSET_TO_GET_ATOMBIOS_STRINGS_NUMBER 0x002f
200 #define OFFSET_TO_GET_ATOMBIOS_STRINGS_START 0x006e
201
202
203
204
205
206
207
208 typedef struct _ATOM_COMMON_TABLE_HEADER
209 {
210 USHORT usStructureSize;
211 UCHAR ucTableFormatRevision;
212 UCHAR ucTableContentRevision;
213
214 }ATOM_COMMON_TABLE_HEADER;
215
216
217
218
219 typedef struct _ATOM_ROM_HEADER
220 {
221 ATOM_COMMON_TABLE_HEADER sHeader;
222 UCHAR uaFirmWareSignature[4];
223
224 USHORT usBiosRuntimeSegmentAddress;
225 USHORT usProtectedModeInfoOffset;
226 USHORT usConfigFilenameOffset;
227 USHORT usCRC_BlockOffset;
228 USHORT usBIOS_BootupMessageOffset;
229 USHORT usInt10Offset;
230 USHORT usPciBusDevInitCode;
231 USHORT usIoBaseAddress;
232 USHORT usSubsystemVendorID;
233 USHORT usSubsystemID;
234 USHORT usPCI_InfoOffset;
235 USHORT usMasterCommandTableOffset;
236 USHORT usMasterDataTableOffset;
237 UCHAR ucExtendedFunctionCode;
238 UCHAR ucReserved;
239 }ATOM_ROM_HEADER;
240
241
242 typedef struct _ATOM_ROM_HEADER_V2_1
243 {
244 ATOM_COMMON_TABLE_HEADER sHeader;
245 UCHAR uaFirmWareSignature[4];
246
247 USHORT usBiosRuntimeSegmentAddress;
248 USHORT usProtectedModeInfoOffset;
249 USHORT usConfigFilenameOffset;
250 USHORT usCRC_BlockOffset;
251 USHORT usBIOS_BootupMessageOffset;
252 USHORT usInt10Offset;
253 USHORT usPciBusDevInitCode;
254 USHORT usIoBaseAddress;
255 USHORT usSubsystemVendorID;
256 USHORT usSubsystemID;
257 USHORT usPCI_InfoOffset;
258 USHORT usMasterCommandTableOffset;
259 USHORT usMasterDataTableOffset;
260 UCHAR ucExtendedFunctionCode;
261 UCHAR ucReserved;
262 ULONG ulPSPDirTableOffset;
263 }ATOM_ROM_HEADER_V2_1;
264
265
266
267
268
269
270
271
272 typedef struct _ATOM_MASTER_LIST_OF_COMMAND_TABLES{
273 USHORT ASIC_Init;
274 USHORT GetDisplaySurfaceSize;
275 USHORT ASIC_RegistersInit;
276 USHORT VRAM_BlockVenderDetection;
277 USHORT DIGxEncoderControl;
278 USHORT MemoryControllerInit;
279 USHORT EnableCRTCMemReq;
280 USHORT MemoryParamAdjust;
281 USHORT DVOEncoderControl;
282 USHORT GPIOPinControl;
283 USHORT SetEngineClock;
284 USHORT SetMemoryClock;
285 USHORT SetPixelClock;
286 USHORT EnableDispPowerGating;
287 USHORT ResetMemoryDLL;
288 USHORT ResetMemoryDevice;
289 USHORT MemoryPLLInit;
290 USHORT AdjustDisplayPll;
291 USHORT AdjustMemoryController;
292 USHORT EnableASIC_StaticPwrMgt;
293 USHORT SetUniphyInstance;
294 USHORT DAC_LoadDetection;
295 USHORT LVTMAEncoderControl;
296 USHORT HW_Misc_Operation;
297 USHORT DAC1EncoderControl;
298 USHORT DAC2EncoderControl;
299 USHORT DVOOutputControl;
300 USHORT CV1OutputControl;
301 USHORT GetConditionalGoldenSetting;
302 USHORT SMC_Init;
303 USHORT PatchMCSetting;
304 USHORT MC_SEQ_Control;
305 USHORT Gfx_Harvesting;
306 USHORT EnableScaler;
307 USHORT BlankCRTC;
308 USHORT EnableCRTC;
309 USHORT GetPixelClock;
310 USHORT EnableVGA_Render;
311 USHORT GetSCLKOverMCLKRatio;
312 USHORT SetCRTC_Timing;
313 USHORT SetCRTC_OverScan;
314 USHORT GetSMUClockInfo;
315 USHORT SelectCRTC_Source;
316 USHORT EnableGraphSurfaces;
317 USHORT UpdateCRTC_DoubleBufferRegisters;
318 USHORT LUT_AutoFill;
319 USHORT SetDCEClock;
320 USHORT GetMemoryClock;
321 USHORT GetEngineClock;
322 USHORT SetCRTC_UsingDTDTiming;
323 USHORT ExternalEncoderControl;
324 USHORT LVTMAOutputControl;
325 USHORT VRAM_BlockDetectionByStrap;
326 USHORT MemoryCleanUp;
327 USHORT ProcessI2cChannelTransaction;
328 USHORT WriteOneByteToHWAssistedI2C;
329 USHORT ReadHWAssistedI2CStatus;
330 USHORT SpeedFanControl;
331 USHORT PowerConnectorDetection;
332 USHORT MC_Synchronization;
333 USHORT ComputeMemoryEnginePLL;
334 USHORT Gfx_Init;
335 USHORT VRAM_GetCurrentInfoBlock;
336 USHORT DynamicMemorySettings;
337 USHORT MemoryTraining;
338 USHORT EnableSpreadSpectrumOnPPLL;
339 USHORT TMDSAOutputControl;
340 USHORT SetVoltage;
341 USHORT DAC1OutputControl;
342 USHORT ReadEfuseValue;
343 USHORT ComputeMemoryClockParam;
344 USHORT ClockSource;
345 USHORT MemoryDeviceInit;
346 USHORT GetDispObjectInfo;
347 USHORT DIG1EncoderControl;
348 USHORT DIG2EncoderControl;
349 USHORT DIG1TransmitterControl;
350 USHORT DIG2TransmitterControl;
351 USHORT ProcessAuxChannelTransaction;
352 USHORT DPEncoderService;
353 USHORT GetVoltageInfo;
354 }ATOM_MASTER_LIST_OF_COMMAND_TABLES;
355
356
357 #define ReadEDIDFromHWAssistedI2C ProcessI2cChannelTransaction
358 #define DPTranslatorControl DIG2EncoderControl
359 #define UNIPHYTransmitterControl DIG1TransmitterControl
360 #define LVTMATransmitterControl DIG2TransmitterControl
361 #define SetCRTC_DPM_State GetConditionalGoldenSetting
362 #define ASIC_StaticPwrMgtStatusChange SetUniphyInstance
363 #define HPDInterruptService ReadHWAssistedI2CStatus
364 #define EnableVGA_Access GetSCLKOverMCLKRatio
365 #define EnableYUV GetDispObjectInfo
366 #define DynamicClockGating EnableDispPowerGating
367 #define SetupHWAssistedI2CStatus ComputeMemoryClockParam
368 #define DAC2OutputControl ReadEfuseValue
369
370 #define TMDSAEncoderControl PatchMCSetting
371 #define LVDSEncoderControl MC_SEQ_Control
372 #define LCD1OutputControl HW_Misc_Operation
373 #define TV1OutputControl Gfx_Harvesting
374 #define TVEncoderControl SMC_Init
375 #define EnableHW_IconCursor SetDCEClock
376 #define SetCRTC_Replication GetSMUClockInfo
377
378 #define MemoryRefreshConversion Gfx_Init
379
380 typedef struct _ATOM_MASTER_COMMAND_TABLE
381 {
382 ATOM_COMMON_TABLE_HEADER sHeader;
383 ATOM_MASTER_LIST_OF_COMMAND_TABLES ListOfCommandTables;
384 }ATOM_MASTER_COMMAND_TABLE;
385
386
387
388
389 typedef struct _ATOM_TABLE_ATTRIBUTE
390 {
391 #if ATOM_BIG_ENDIAN
392 USHORT UpdatedByUtility:1;
393 USHORT PS_SizeInBytes:7;
394 USHORT WS_SizeInBytes:8;
395 #else
396 USHORT WS_SizeInBytes:8;
397 USHORT PS_SizeInBytes:7;
398 USHORT UpdatedByUtility:1;
399 #endif
400 }ATOM_TABLE_ATTRIBUTE;
401
402
403
404
405
406
407 typedef struct _ATOM_COMMON_ROM_COMMAND_TABLE_HEADER
408 {
409 ATOM_COMMON_TABLE_HEADER CommonHeader;
410 ATOM_TABLE_ATTRIBUTE TableAttribute;
411 }ATOM_COMMON_ROM_COMMAND_TABLE_HEADER;
412
413
414
415
416
417 #define COMPUTE_MEMORY_PLL_PARAM 1
418 #define COMPUTE_ENGINE_PLL_PARAM 2
419 #define ADJUST_MC_SETTING_PARAM 3
420
421
422
423
424 typedef struct _ATOM_ADJUST_MEMORY_CLOCK_FREQ
425 {
426 #if ATOM_BIG_ENDIAN
427 ULONG ulPointerReturnFlag:1;
428 ULONG ulMemoryModuleNumber:7;
429 ULONG ulClockFreq:24;
430 #else
431 ULONG ulClockFreq:24;
432 ULONG ulMemoryModuleNumber:7;
433 ULONG ulPointerReturnFlag:1;
434 #endif
435 }ATOM_ADJUST_MEMORY_CLOCK_FREQ;
436 #define POINTER_RETURN_FLAG 0x80
437
438 typedef struct _COMPUTE_MEMORY_ENGINE_PLL_PARAMETERS
439 {
440 ULONG ulClock;
441 UCHAR ucAction;
442 UCHAR ucReserved;
443 UCHAR ucFbDiv;
444 UCHAR ucPostDiv;
445 }COMPUTE_MEMORY_ENGINE_PLL_PARAMETERS;
446
447 typedef struct _COMPUTE_MEMORY_ENGINE_PLL_PARAMETERS_V2
448 {
449 ULONG ulClock;
450 UCHAR ucAction;
451 USHORT usFbDiv;
452 UCHAR ucPostDiv;
453 }COMPUTE_MEMORY_ENGINE_PLL_PARAMETERS_V2;
454
455 #define COMPUTE_MEMORY_ENGINE_PLL_PARAMETERS_PS_ALLOCATION COMPUTE_MEMORY_ENGINE_PLL_PARAMETERS
456
457 #define SET_CLOCK_FREQ_MASK 0x00FFFFFF
458 #define USE_NON_BUS_CLOCK_MASK 0x01000000
459 #define USE_MEMORY_SELF_REFRESH_MASK 0x02000000
460 #define SKIP_INTERNAL_MEMORY_PARAMETER_CHANGE 0x04000000
461 #define FIRST_TIME_CHANGE_CLOCK 0x08000000
462 #define SKIP_SW_PROGRAM_PLL 0x10000000
463 #define USE_SS_ENABLED_PIXEL_CLOCK USE_NON_BUS_CLOCK_MASK
464
465 #define b3USE_NON_BUS_CLOCK_MASK 0x01
466 #define b3USE_MEMORY_SELF_REFRESH 0x02
467 #define b3SKIP_INTERNAL_MEMORY_PARAMETER_CHANGE 0x04
468 #define b3FIRST_TIME_CHANGE_CLOCK 0x08
469 #define b3SKIP_SW_PROGRAM_PLL 0x10
470 #define b3DRAM_SELF_REFRESH_EXIT 0x20
471 #define b3SRIOV_INIT_BOOT 0x40
472 #define b3SRIOV_LOAD_UCODE 0x40
473 #define b3SRIOV_SKIP_ASIC_INIT 0x02
474
475 typedef struct _ATOM_COMPUTE_CLOCK_FREQ
476 {
477 #if ATOM_BIG_ENDIAN
478 ULONG ulComputeClockFlag:8;
479 ULONG ulClockFreq:24;
480 #else
481 ULONG ulClockFreq:24;
482 ULONG ulComputeClockFlag:8;
483 #endif
484 }ATOM_COMPUTE_CLOCK_FREQ;
485
486 typedef struct _ATOM_S_MPLL_FB_DIVIDER
487 {
488 USHORT usFbDivFrac;
489 USHORT usFbDiv;
490 }ATOM_S_MPLL_FB_DIVIDER;
491
492 typedef struct _COMPUTE_MEMORY_ENGINE_PLL_PARAMETERS_V3
493 {
494 union
495 {
496 ATOM_COMPUTE_CLOCK_FREQ ulClock;
497 ULONG ulClockParams;
498 ATOM_S_MPLL_FB_DIVIDER ulFbDiv;
499 };
500 UCHAR ucRefDiv;
501 UCHAR ucPostDiv;
502 UCHAR ucCntlFlag;
503 UCHAR ucReserved;
504 }COMPUTE_MEMORY_ENGINE_PLL_PARAMETERS_V3;
505
506
507 #define ATOM_PLL_CNTL_FLAG_PLL_POST_DIV_EN 1
508 #define ATOM_PLL_CNTL_FLAG_MPLL_VCO_MODE 2
509 #define ATOM_PLL_CNTL_FLAG_FRACTION_DISABLE 4
510 #define ATOM_PLL_CNTL_FLAG_SPLL_ISPARE_9 8
511
512
513
514 typedef struct _COMPUTE_MEMORY_ENGINE_PLL_PARAMETERS_V4
515 {
516 #if ATOM_BIG_ENDIAN
517 ULONG ucPostDiv:8;
518 ULONG ulClock:24;
519 #else
520 ULONG ulClock:24;
521 ULONG ucPostDiv:8;
522 #endif
523 }COMPUTE_MEMORY_ENGINE_PLL_PARAMETERS_V4;
524
525 typedef struct _COMPUTE_MEMORY_ENGINE_PLL_PARAMETERS_V5
526 {
527 union
528 {
529 ATOM_COMPUTE_CLOCK_FREQ ulClock;
530 ULONG ulClockParams;
531 ATOM_S_MPLL_FB_DIVIDER ulFbDiv;
532 };
533 UCHAR ucRefDiv;
534 UCHAR ucPostDiv;
535 union
536 {
537 UCHAR ucCntlFlag;
538 UCHAR ucInputFlag;
539 };
540 UCHAR ucReserved;
541 }COMPUTE_MEMORY_ENGINE_PLL_PARAMETERS_V5;
542
543
544 typedef struct _COMPUTE_GPU_CLOCK_INPUT_PARAMETERS_V1_6
545 {
546 ATOM_COMPUTE_CLOCK_FREQ ulClock;
547 ULONG ulReserved[2];
548 }COMPUTE_GPU_CLOCK_INPUT_PARAMETERS_V1_6;
549
550
551 #define COMPUTE_GPUCLK_INPUT_FLAG_CLK_TYPE_MASK 0x0f
552 #define COMPUTE_GPUCLK_INPUT_FLAG_DEFAULT_GPUCLK 0x00
553 #define COMPUTE_GPUCLK_INPUT_FLAG_SCLK 0x01
554
555
556 typedef struct _COMPUTE_GPU_CLOCK_OUTPUT_PARAMETERS_V1_6
557 {
558 COMPUTE_MEMORY_ENGINE_PLL_PARAMETERS_V4 ulClock;
559 ATOM_S_MPLL_FB_DIVIDER ulFbDiv;
560 UCHAR ucPllRefDiv;
561 UCHAR ucPllPostDiv;
562 UCHAR ucPllCntlFlag;
563 UCHAR ucReserved;
564 }COMPUTE_GPU_CLOCK_OUTPUT_PARAMETERS_V1_6;
565
566
567 #define SPLL_CNTL_FLAG_VCO_MODE_MASK 0x03
568
569 typedef struct _COMPUTE_GPU_CLOCK_INPUT_PARAMETERS_V1_7
570 {
571 ATOM_COMPUTE_CLOCK_FREQ ulClock;
572 ULONG ulReserved[5];
573 }COMPUTE_GPU_CLOCK_INPUT_PARAMETERS_V1_7;
574
575
576 #define COMPUTE_GPUCLK_INPUT_FLAG_CLK_TYPE_MASK 0x0f
577 #define COMPUTE_GPUCLK_INPUT_FLAG_DEFAULT_GPUCLK 0x00
578 #define COMPUTE_GPUCLK_INPUT_FLAG_SCLK 0x01
579
580 typedef struct _COMPUTE_GPU_CLOCK_OUTPUT_PARAMETERS_V1_7
581 {
582 COMPUTE_MEMORY_ENGINE_PLL_PARAMETERS_V4 ulClock;
583 USHORT usSclk_fcw_frac;
584 USHORT usSclk_fcw_int;
585 UCHAR ucSclkPostDiv;
586 UCHAR ucSclkVcoMode;
587 UCHAR ucSclkPllRange;
588 UCHAR ucSscEnable;
589 USHORT usSsc_fcw1_frac;
590 USHORT usSsc_fcw1_int;
591 USHORT usReserved;
592 USHORT usPcc_fcw_int;
593 USHORT usSsc_fcw_slew_frac;
594 USHORT usPcc_fcw_slew_frac;
595 }COMPUTE_GPU_CLOCK_OUTPUT_PARAMETERS_V1_7;
596
597
598 #define ATOM_PLL_INPUT_FLAG_PLL_STROBE_MODE_EN 1
599
600
601 typedef struct _COMPUTE_MEMORY_CLOCK_PARAM_PARAMETERS_V2_1
602 {
603 union
604 {
605 ULONG ulClock;
606 ATOM_S_MPLL_FB_DIVIDER ulFbDiv;
607 };
608 UCHAR ucDllSpeed;
609 UCHAR ucPostDiv;
610 union{
611 UCHAR ucInputFlag;
612 UCHAR ucPllCntlFlag;
613 };
614 UCHAR ucBWCntl;
615 }COMPUTE_MEMORY_CLOCK_PARAM_PARAMETERS_V2_1;
616
617
618 #define MPLL_INPUT_FLAG_STROBE_MODE_EN 0x01
619
620 #define MPLL_CNTL_FLAG_VCO_MODE_MASK 0x03
621 #define MPLL_CNTL_FLAG_BYPASS_DQ_PLL 0x04
622 #define MPLL_CNTL_FLAG_QDR_ENABLE 0x08
623 #define MPLL_CNTL_FLAG_AD_HALF_RATE 0x10
624
625
626 #define MPLL_CNTL_FLAG_BYPASS_AD_PLL 0x04
627
628
629 typedef struct _COMPUTE_MEMORY_CLOCK_PARAM_PARAMETERS_V2_2
630 {
631 COMPUTE_MEMORY_ENGINE_PLL_PARAMETERS_V4 ulClock;
632 ULONG ulReserved;
633 }COMPUTE_MEMORY_CLOCK_PARAM_PARAMETERS_V2_2;
634
635 typedef struct _COMPUTE_MEMORY_CLOCK_PARAM_PARAMETERS_V2_3
636 {
637 COMPUTE_MEMORY_ENGINE_PLL_PARAMETERS_V4 ulClock;
638 USHORT usMclk_fcw_frac;
639 USHORT usMclk_fcw_int;
640 }COMPUTE_MEMORY_CLOCK_PARAM_PARAMETERS_V2_3;
641
642
643
644 typedef struct _DYNAMICE_MEMORY_SETTINGS_PARAMETER
645 {
646 ATOM_COMPUTE_CLOCK_FREQ ulClock;
647 ULONG ulReserved[2];
648 }DYNAMICE_MEMORY_SETTINGS_PARAMETER;
649
650
651
652 typedef struct _DYNAMICE_ENGINE_SETTINGS_PARAMETER
653 {
654 ATOM_COMPUTE_CLOCK_FREQ ulClock;
655 ULONG ulMemoryClock;
656 ULONG ulReserved;
657 }DYNAMICE_ENGINE_SETTINGS_PARAMETER;
658
659
660
661 typedef struct _DYNAMICE_MC_DPM_SETTINGS_PARAMETER
662 {
663 ATOM_COMPUTE_CLOCK_FREQ ulClock;
664 UCHAR ucMclkDPMState;
665 UCHAR ucReserved[3];
666 ULONG ulReserved;
667 }DYNAMICE_MC_DPM_SETTINGS_PARAMETER;
668
669
670 #define DYNAMIC_MC_DPM_SETTING_LOW_DPM_STATE 0
671 #define DYNAMIC_MC_DPM_SETTING_MEDIUM_DPM_STATE 1
672 #define DYNAMIC_MC_DPM_SETTING_HIGH_DPM_STATE 2
673
674 typedef union _DYNAMICE_MEMORY_SETTINGS_PARAMETER_V2_1
675 {
676 DYNAMICE_MEMORY_SETTINGS_PARAMETER asMCReg;
677 DYNAMICE_ENGINE_SETTINGS_PARAMETER asMCArbReg;
678 DYNAMICE_MC_DPM_SETTINGS_PARAMETER asDPMMCReg;
679 }DYNAMICE_MEMORY_SETTINGS_PARAMETER_V2_1;
680
681
682
683
684
685 typedef struct _SET_ENGINE_CLOCK_PARAMETERS
686 {
687 ULONG ulTargetEngineClock;
688 }SET_ENGINE_CLOCK_PARAMETERS;
689
690 typedef struct _SET_ENGINE_CLOCK_PS_ALLOCATION
691 {
692 ULONG ulTargetEngineClock;
693 COMPUTE_MEMORY_ENGINE_PLL_PARAMETERS_PS_ALLOCATION sReserved;
694 }SET_ENGINE_CLOCK_PS_ALLOCATION;
695
696 typedef struct _SET_ENGINE_CLOCK_PS_ALLOCATION_V1_2
697 {
698 ULONG ulTargetEngineClock;
699 COMPUTE_GPU_CLOCK_INPUT_PARAMETERS_V1_7 sReserved;
700 }SET_ENGINE_CLOCK_PS_ALLOCATION_V1_2;
701
702
703
704
705
706 typedef struct _SET_MEMORY_CLOCK_PARAMETERS
707 {
708 ULONG ulTargetMemoryClock;
709 }SET_MEMORY_CLOCK_PARAMETERS;
710
711 typedef struct _SET_MEMORY_CLOCK_PS_ALLOCATION
712 {
713 ULONG ulTargetMemoryClock;
714 COMPUTE_MEMORY_ENGINE_PLL_PARAMETERS_PS_ALLOCATION sReserved;
715 }SET_MEMORY_CLOCK_PS_ALLOCATION;
716
717
718
719
720 typedef struct _ASIC_INIT_PARAMETERS
721 {
722 ULONG ulDefaultEngineClock;
723 ULONG ulDefaultMemoryClock;
724 }ASIC_INIT_PARAMETERS;
725
726 typedef struct _ASIC_INIT_PS_ALLOCATION
727 {
728 ASIC_INIT_PARAMETERS sASICInitClocks;
729 SET_ENGINE_CLOCK_PS_ALLOCATION sReserved;
730 }ASIC_INIT_PS_ALLOCATION;
731
732 typedef struct _ASIC_INIT_CLOCK_PARAMETERS
733 {
734 ULONG ulClkFreqIn10Khz:24;
735 ULONG ucClkFlag:8;
736 }ASIC_INIT_CLOCK_PARAMETERS;
737
738 typedef struct _ASIC_INIT_PARAMETERS_V1_2
739 {
740 ASIC_INIT_CLOCK_PARAMETERS asSclkClock;
741 ASIC_INIT_CLOCK_PARAMETERS asMemClock;
742 }ASIC_INIT_PARAMETERS_V1_2;
743
744 typedef struct _ASIC_INIT_PS_ALLOCATION_V1_2
745 {
746 ASIC_INIT_PARAMETERS_V1_2 sASICInitClocks;
747 ULONG ulReserved[8];
748 }ASIC_INIT_PS_ALLOCATION_V1_2;
749
750
751
752
753 typedef struct _DYNAMIC_CLOCK_GATING_PARAMETERS
754 {
755 UCHAR ucEnable;
756 UCHAR ucPadding[3];
757 }DYNAMIC_CLOCK_GATING_PARAMETERS;
758 #define DYNAMIC_CLOCK_GATING_PS_ALLOCATION DYNAMIC_CLOCK_GATING_PARAMETERS
759
760
761
762
763 typedef struct _ENABLE_DISP_POWER_GATING_PARAMETERS_V2_1
764 {
765 UCHAR ucDispPipeId;
766 UCHAR ucEnable;
767 UCHAR ucPadding[2];
768 }ENABLE_DISP_POWER_GATING_PARAMETERS_V2_1;
769
770 typedef struct _ENABLE_DISP_POWER_GATING_PS_ALLOCATION
771 {
772 UCHAR ucDispPipeId;
773 UCHAR ucEnable;
774 UCHAR ucPadding[2];
775 ULONG ulReserved[4];
776 }ENABLE_DISP_POWER_GATING_PS_ALLOCATION;
777
778
779
780
781 typedef struct _ENABLE_ASIC_STATIC_PWR_MGT_PARAMETERS
782 {
783 UCHAR ucEnable;
784 UCHAR ucPadding[3];
785 }ENABLE_ASIC_STATIC_PWR_MGT_PARAMETERS;
786 #define ENABLE_ASIC_STATIC_PWR_MGT_PS_ALLOCATION ENABLE_ASIC_STATIC_PWR_MGT_PARAMETERS
787
788
789
790
791 typedef struct _DAC_LOAD_DETECTION_PARAMETERS
792 {
793 USHORT usDeviceID;
794 UCHAR ucDacType;
795 UCHAR ucMisc;
796 }DAC_LOAD_DETECTION_PARAMETERS;
797
798
799 #define DAC_LOAD_MISC_YPrPb 0x01
800
801 typedef struct _DAC_LOAD_DETECTION_PS_ALLOCATION
802 {
803 DAC_LOAD_DETECTION_PARAMETERS sDacload;
804 ULONG Reserved[2];
805 }DAC_LOAD_DETECTION_PS_ALLOCATION;
806
807
808
809
810 typedef struct _DAC_ENCODER_CONTROL_PARAMETERS
811 {
812 USHORT usPixelClock;
813 UCHAR ucDacStandard;
814 UCHAR ucAction;
815
816
817 }DAC_ENCODER_CONTROL_PARAMETERS;
818
819 #define DAC_ENCODER_CONTROL_PS_ALLOCATION DAC_ENCODER_CONTROL_PARAMETERS
820
821
822
823
824
825
826 typedef struct _DIG_ENCODER_CONTROL_PARAMETERS
827 {
828 USHORT usPixelClock;
829 UCHAR ucConfig;
830
831
832
833
834
835
836
837 UCHAR ucAction;
838
839 UCHAR ucEncoderMode;
840
841
842
843
844
845 UCHAR ucLaneNum;
846 UCHAR ucReserved[2];
847 }DIG_ENCODER_CONTROL_PARAMETERS;
848 #define DIG_ENCODER_CONTROL_PS_ALLOCATION DIG_ENCODER_CONTROL_PARAMETERS
849 #define EXTERNAL_ENCODER_CONTROL_PARAMETER DIG_ENCODER_CONTROL_PARAMETERS
850
851
852 #define ATOM_ENCODER_CONFIG_DPLINKRATE_MASK 0x01
853 #define ATOM_ENCODER_CONFIG_DPLINKRATE_1_62GHZ 0x00
854 #define ATOM_ENCODER_CONFIG_DPLINKRATE_2_70GHZ 0x01
855 #define ATOM_ENCODER_CONFIG_DPLINKRATE_5_40GHZ 0x02
856 #define ATOM_ENCODER_CONFIG_LINK_SEL_MASK 0x04
857 #define ATOM_ENCODER_CONFIG_LINKA 0x00
858 #define ATOM_ENCODER_CONFIG_LINKB 0x04
859 #define ATOM_ENCODER_CONFIG_LINKA_B ATOM_TRANSMITTER_CONFIG_LINKA
860 #define ATOM_ENCODER_CONFIG_LINKB_A ATOM_ENCODER_CONFIG_LINKB
861 #define ATOM_ENCODER_CONFIG_TRANSMITTER_SEL_MASK 0x08
862 #define ATOM_ENCODER_CONFIG_UNIPHY 0x00
863 #define ATOM_ENCODER_CONFIG_LVTMA 0x08
864 #define ATOM_ENCODER_CONFIG_TRANSMITTER1 0x00
865 #define ATOM_ENCODER_CONFIG_TRANSMITTER2 0x08
866 #define ATOM_ENCODER_CONFIG_DIGB 0x80
867
868
869
870
871
872 #define ATOM_ENCODER_MODE_DP 0
873 #define ATOM_ENCODER_MODE_LVDS 1
874 #define ATOM_ENCODER_MODE_DVI 2
875 #define ATOM_ENCODER_MODE_HDMI 3
876 #define ATOM_ENCODER_MODE_SDVO 4
877 #define ATOM_ENCODER_MODE_DP_AUDIO 5
878 #define ATOM_ENCODER_MODE_TV 13
879 #define ATOM_ENCODER_MODE_CV 14
880 #define ATOM_ENCODER_MODE_CRT 15
881 #define ATOM_ENCODER_MODE_DVO 16
882 #define ATOM_ENCODER_MODE_DP_SST ATOM_ENCODER_MODE_DP
883 #define ATOM_ENCODER_MODE_DP_MST 5
884
885
886 typedef struct _ATOM_DIG_ENCODER_CONFIG_V2
887 {
888 #if ATOM_BIG_ENDIAN
889 UCHAR ucReserved1:2;
890 UCHAR ucTransmitterSel:2;
891 UCHAR ucLinkSel:1;
892 UCHAR ucReserved:1;
893 UCHAR ucDPLinkRate:1;
894 #else
895 UCHAR ucDPLinkRate:1;
896 UCHAR ucReserved:1;
897 UCHAR ucLinkSel:1;
898 UCHAR ucTransmitterSel:2;
899 UCHAR ucReserved1:2;
900 #endif
901 }ATOM_DIG_ENCODER_CONFIG_V2;
902
903
904 typedef struct _DIG_ENCODER_CONTROL_PARAMETERS_V2
905 {
906 USHORT usPixelClock;
907 ATOM_DIG_ENCODER_CONFIG_V2 acConfig;
908 UCHAR ucAction;
909 UCHAR ucEncoderMode;
910
911
912
913
914
915 UCHAR ucLaneNum;
916 UCHAR ucStatus;
917 UCHAR ucReserved;
918 }DIG_ENCODER_CONTROL_PARAMETERS_V2;
919
920
921 #define ATOM_ENCODER_CONFIG_V2_DPLINKRATE_MASK 0x01
922 #define ATOM_ENCODER_CONFIG_V2_DPLINKRATE_1_62GHZ 0x00
923 #define ATOM_ENCODER_CONFIG_V2_DPLINKRATE_2_70GHZ 0x01
924 #define ATOM_ENCODER_CONFIG_V2_LINK_SEL_MASK 0x04
925 #define ATOM_ENCODER_CONFIG_V2_LINKA 0x00
926 #define ATOM_ENCODER_CONFIG_V2_LINKB 0x04
927 #define ATOM_ENCODER_CONFIG_V2_TRANSMITTER_SEL_MASK 0x18
928 #define ATOM_ENCODER_CONFIG_V2_TRANSMITTER1 0x00
929 #define ATOM_ENCODER_CONFIG_V2_TRANSMITTER2 0x08
930 #define ATOM_ENCODER_CONFIG_V2_TRANSMITTER3 0x10
931
932
933
934
935 #define ATOM_ENCODER_CMD_DP_LINK_TRAINING_START 0x08
936 #define ATOM_ENCODER_CMD_DP_LINK_TRAINING_PATTERN1 0x09
937 #define ATOM_ENCODER_CMD_DP_LINK_TRAINING_PATTERN2 0x0a
938 #define ATOM_ENCODER_CMD_DP_LINK_TRAINING_PATTERN3 0x13
939 #define ATOM_ENCODER_CMD_DP_LINK_TRAINING_COMPLETE 0x0b
940 #define ATOM_ENCODER_CMD_DP_VIDEO_OFF 0x0c
941 #define ATOM_ENCODER_CMD_DP_VIDEO_ON 0x0d
942 #define ATOM_ENCODER_CMD_QUERY_DP_LINK_TRAINING_STATUS 0x0e
943 #define ATOM_ENCODER_CMD_SETUP 0x0f
944 #define ATOM_ENCODER_CMD_SETUP_PANEL_MODE 0x10
945
946
947 #define ATOM_ENCODER_CMD_DP_LINK_TRAINING_PATTERN4 0x14
948 #define ATOM_ENCODER_CMD_STREAM_SETUP 0x0F
949 #define ATOM_ENCODER_CMD_LINK_SETUP 0x11
950 #define ATOM_ENCODER_CMD_ENCODER_BLANK 0x12
951
952
953 #define ATOM_ENCODER_STATUS_LINK_TRAINING_COMPLETE 0x10
954 #define ATOM_ENCODER_STATUS_LINK_TRAINING_INCOMPLETE 0x00
955
956
957
958
959 typedef struct _ATOM_DIG_ENCODER_CONFIG_V3
960 {
961 #if ATOM_BIG_ENDIAN
962 UCHAR ucReserved1:1;
963 UCHAR ucDigSel:3;
964 UCHAR ucReserved:3;
965 UCHAR ucDPLinkRate:1;
966 #else
967 UCHAR ucDPLinkRate:1;
968 UCHAR ucReserved:3;
969 UCHAR ucDigSel:3;
970 UCHAR ucReserved1:1;
971 #endif
972 }ATOM_DIG_ENCODER_CONFIG_V3;
973
974 #define ATOM_ENCODER_CONFIG_V3_DPLINKRATE_MASK 0x03
975 #define ATOM_ENCODER_CONFIG_V3_DPLINKRATE_1_62GHZ 0x00
976 #define ATOM_ENCODER_CONFIG_V3_DPLINKRATE_2_70GHZ 0x01
977 #define ATOM_ENCODER_CONFIG_V3_ENCODER_SEL 0x70
978 #define ATOM_ENCODER_CONFIG_V3_DIG0_ENCODER 0x00
979 #define ATOM_ENCODER_CONFIG_V3_DIG1_ENCODER 0x10
980 #define ATOM_ENCODER_CONFIG_V3_DIG2_ENCODER 0x20
981 #define ATOM_ENCODER_CONFIG_V3_DIG3_ENCODER 0x30
982 #define ATOM_ENCODER_CONFIG_V3_DIG4_ENCODER 0x40
983 #define ATOM_ENCODER_CONFIG_V3_DIG5_ENCODER 0x50
984
985 typedef struct _DIG_ENCODER_CONTROL_PARAMETERS_V3
986 {
987 USHORT usPixelClock;
988 ATOM_DIG_ENCODER_CONFIG_V3 acConfig;
989 UCHAR ucAction;
990 union{
991 UCHAR ucEncoderMode;
992
993
994
995
996
997
998 UCHAR ucPanelMode;
999
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 ucReserved[3];
5640 ATOM_SCLK_FCW_RANGE_ENTRY_V1 asSclkFcwRangeEntry[8];
5641 }ATOM_SMU_INFO_V2_1;
5642
5643
5644
5645 typedef struct _ATOM_GFX_INFO_V2_1
5646 {
5647 ATOM_COMMON_TABLE_HEADER asHeader;
5648 UCHAR GfxIpMinVer;
5649 UCHAR GfxIpMajVer;
5650 UCHAR max_shader_engines;
5651 UCHAR max_tile_pipes;
5652 UCHAR max_cu_per_sh;
5653 UCHAR max_sh_per_se;
5654 UCHAR max_backends_per_se;
5655 UCHAR max_texture_channel_caches;
5656 }ATOM_GFX_INFO_V2_1;
5657
5658
5659 typedef struct _ATOM_POWER_SOURCE_OBJECT
5660 {
5661 UCHAR ucPwrSrcId;
5662 UCHAR ucPwrSensorType;
5663 UCHAR ucPwrSensId;
5664 UCHAR ucPwrSensSlaveAddr;
5665 UCHAR ucPwrSensRegIndex;
5666 UCHAR ucPwrSensRegBitMask;
5667 UCHAR ucPwrSensActiveState;
5668 UCHAR ucReserve[3];
5669 USHORT usSensPwr;
5670 }ATOM_POWER_SOURCE_OBJECT;
5671
5672 typedef struct _ATOM_POWER_SOURCE_INFO
5673 {
5674 ATOM_COMMON_TABLE_HEADER asHeader;
5675 UCHAR asPwrbehave[16];
5676 ATOM_POWER_SOURCE_OBJECT asPwrObj[1];
5677 }ATOM_POWER_SOURCE_INFO;
5678
5679
5680
5681 #define POWERSOURCE_PCIE_ID1 0x00
5682 #define POWERSOURCE_6PIN_CONNECTOR_ID1 0x01
5683 #define POWERSOURCE_8PIN_CONNECTOR_ID1 0x02
5684 #define POWERSOURCE_6PIN_CONNECTOR_ID2 0x04
5685 #define POWERSOURCE_8PIN_CONNECTOR_ID2 0x08
5686
5687
5688 #define POWER_SENSOR_ALWAYS 0x00
5689 #define POWER_SENSOR_GPIO 0x01
5690 #define POWER_SENSOR_I2C 0x02
5691
5692 typedef struct _ATOM_CLK_VOLT_CAPABILITY
5693 {
5694 ULONG ulVoltageIndex;
5695 ULONG ulMaximumSupportedCLK;
5696 }ATOM_CLK_VOLT_CAPABILITY;
5697
5698
5699 typedef struct _ATOM_CLK_VOLT_CAPABILITY_V2
5700 {
5701 USHORT usVoltageLevel;
5702 ULONG ulMaximumSupportedCLK;
5703 }ATOM_CLK_VOLT_CAPABILITY_V2;
5704
5705 typedef struct _ATOM_AVAILABLE_SCLK_LIST
5706 {
5707 ULONG ulSupportedSCLK;
5708 USHORT usVoltageIndex;
5709 USHORT usVoltageID;
5710 }ATOM_AVAILABLE_SCLK_LIST;
5711
5712
5713 #define ATOM_IGP_INFO_V6_SYSTEM_CONFIG__PCIE_POWER_GATING_ENABLE 1
5714
5715
5716 typedef struct _ATOM_INTEGRATED_SYSTEM_INFO_V6
5717 {
5718 ATOM_COMMON_TABLE_HEADER sHeader;
5719 ULONG ulBootUpEngineClock;
5720 ULONG ulDentistVCOFreq;
5721 ULONG ulBootUpUMAClock;
5722 ATOM_CLK_VOLT_CAPABILITY sDISPCLK_Voltage[4];
5723 ULONG ulBootUpReqDisplayVector;
5724 ULONG ulOtherDisplayMisc;
5725 ULONG ulGPUCapInfo;
5726 ULONG ulSB_MMIO_Base_Addr;
5727 USHORT usRequestedPWMFreqInHz;
5728 UCHAR ucHtcTmpLmt;
5729 UCHAR ucHtcHystLmt;
5730 ULONG ulMinEngineClock;
5731 ULONG ulSystemConfig;
5732 ULONG ulCPUCapInfo;
5733 USHORT usNBP0Voltage;
5734 USHORT usNBP1Voltage;
5735 USHORT usBootUpNBVoltage;
5736 USHORT usExtDispConnInfoOffset;
5737 USHORT usPanelRefreshRateRange;
5738 UCHAR ucMemoryType;
5739 UCHAR ucUMAChannelNumber;
5740 ULONG ulCSR_M3_ARB_CNTL_DEFAULT[10];
5741 ULONG ulCSR_M3_ARB_CNTL_UVD[10];
5742 ULONG ulCSR_M3_ARB_CNTL_FS3D[10];
5743 ATOM_AVAILABLE_SCLK_LIST sAvail_SCLK[5];
5744 ULONG ulGMCRestoreResetTime;
5745 ULONG ulMinimumNClk;
5746 ULONG ulIdleNClk;
5747 ULONG ulDDR_DLL_PowerUpTime;
5748 ULONG ulDDR_PLL_PowerUpTime;
5749 USHORT usPCIEClkSSPercentage;
5750 USHORT usPCIEClkSSType;
5751 USHORT usLvdsSSPercentage;
5752 USHORT usLvdsSSpreadRateIn10Hz;
5753 USHORT usHDMISSPercentage;
5754 USHORT usHDMISSpreadRateIn10Hz;
5755 USHORT usDVISSPercentage;
5756 USHORT usDVISSpreadRateIn10Hz;
5757 ULONG SclkDpmBoostMargin;
5758 ULONG SclkDpmThrottleMargin;
5759 USHORT SclkDpmTdpLimitPG;
5760 USHORT SclkDpmTdpLimitBoost;
5761 ULONG ulBoostEngineCLock;
5762 UCHAR ulBoostVid_2bit;
5763 UCHAR EnableBoost;
5764 USHORT GnbTdpLimit;
5765 USHORT usMaxLVDSPclkFreqInSingleLink;
5766 UCHAR ucLvdsMisc;
5767 UCHAR ucLVDSReserved;
5768 ULONG ulReserved3[15];
5769 ATOM_EXTERNAL_DISPLAY_CONNECTION_INFO sExtDispConnInfo;
5770 }ATOM_INTEGRATED_SYSTEM_INFO_V6;
5771
5772
5773 #define INTEGRATED_SYSTEM_INFO_V6_GPUCAPINFO__TMDSHDMI_COHERENT_SINGLEPLL_MODE 0x01
5774 #define INTEGRATED_SYSTEM_INFO_V6_GPUCAPINFO__DISABLE_AUX_HW_MODE_DETECTION 0x08
5775
5776
5777 #define SYS_INFO_LVDSMISC__888_FPDI_MODE 0x01
5778 #define SYS_INFO_LVDSMISC__DL_CH_SWAP 0x02
5779 #define SYS_INFO_LVDSMISC__888_BPC 0x04
5780 #define SYS_INFO_LVDSMISC__OVERRIDE_EN 0x08
5781 #define SYS_INFO_LVDSMISC__BLON_ACTIVE_LOW 0x10
5782
5783 #define SYS_INFO_LVDSMISC__TRAVIS_LVDS_VOL_OVERRIDE_EN 0x20
5784
5785
5786 #define SYS_INFO_LVDSMISC__VSYNC_ACTIVE_LOW 0x04
5787 #define SYS_INFO_LVDSMISC__HSYNC_ACTIVE_LOW 0x08
5788
5789
5790
5791
5792
5793
5794
5795
5796
5797
5798
5799
5800
5801
5802
5803
5804
5805
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 typedef struct _ATOM_FUSION_SYSTEM_INFO_V1
5880 {
5881 ATOM_INTEGRATED_SYSTEM_INFO_V6 sIntegratedSysInfo;
5882 ULONG ulPowerplayTable[128];
5883 }ATOM_FUSION_SYSTEM_INFO_V1;
5884
5885
5886 typedef struct _ATOM_TDP_CONFIG_BITS
5887 {
5888 #if ATOM_BIG_ENDIAN
5889 ULONG uReserved:2;
5890 ULONG uTDP_Value:14;
5891 ULONG uCTDP_Value:14;
5892 ULONG uCTDP_Enable:2;
5893 #else
5894 ULONG uCTDP_Enable:2;
5895 ULONG uCTDP_Value:14;
5896 ULONG uTDP_Value:14;
5897 ULONG uReserved:2;
5898 #endif
5899 }ATOM_TDP_CONFIG_BITS;
5900
5901 typedef union _ATOM_TDP_CONFIG
5902 {
5903 ATOM_TDP_CONFIG_BITS TDP_config;
5904 ULONG TDP_config_all;
5905 }ATOM_TDP_CONFIG;
5906
5907
5908
5909
5910
5911
5912
5913
5914 typedef struct _ATOM_INTEGRATED_SYSTEM_INFO_V1_7
5915 {
5916 ATOM_COMMON_TABLE_HEADER sHeader;
5917 ULONG ulBootUpEngineClock;
5918 ULONG ulDentistVCOFreq;
5919 ULONG ulBootUpUMAClock;
5920 ATOM_CLK_VOLT_CAPABILITY sDISPCLK_Voltage[4];
5921 ULONG ulBootUpReqDisplayVector;
5922 ULONG ulOtherDisplayMisc;
5923 ULONG ulGPUCapInfo;
5924 ULONG ulSB_MMIO_Base_Addr;
5925 USHORT usRequestedPWMFreqInHz;
5926 UCHAR ucHtcTmpLmt;
5927 UCHAR ucHtcHystLmt;
5928 ULONG ulMinEngineClock;
5929 ULONG ulSystemConfig;
5930 ULONG ulCPUCapInfo;
5931 USHORT usNBP0Voltage;
5932 USHORT usNBP1Voltage;
5933 USHORT usBootUpNBVoltage;
5934 USHORT usExtDispConnInfoOffset;
5935 USHORT usPanelRefreshRateRange;
5936 UCHAR ucMemoryType;
5937 UCHAR ucUMAChannelNumber;
5938 UCHAR strVBIOSMsg[40];
5939 ATOM_TDP_CONFIG asTdpConfig;
5940 ULONG ulReserved[19];
5941 ATOM_AVAILABLE_SCLK_LIST sAvail_SCLK[5];
5942 ULONG ulGMCRestoreResetTime;
5943 ULONG ulMinimumNClk;
5944 ULONG ulIdleNClk;
5945 ULONG ulDDR_DLL_PowerUpTime;
5946 ULONG ulDDR_PLL_PowerUpTime;
5947 USHORT usPCIEClkSSPercentage;
5948 USHORT usPCIEClkSSType;
5949 USHORT usLvdsSSPercentage;
5950 USHORT usLvdsSSpreadRateIn10Hz;
5951 USHORT usHDMISSPercentage;
5952 USHORT usHDMISSpreadRateIn10Hz;
5953 USHORT usDVISSPercentage;
5954 USHORT usDVISSpreadRateIn10Hz;
5955 ULONG SclkDpmBoostMargin;
5956 ULONG SclkDpmThrottleMargin;
5957 USHORT SclkDpmTdpLimitPG;
5958 USHORT SclkDpmTdpLimitBoost;
5959 ULONG ulBoostEngineCLock;
5960 UCHAR ulBoostVid_2bit;
5961 UCHAR EnableBoost;
5962 USHORT GnbTdpLimit;
5963 USHORT usMaxLVDSPclkFreqInSingleLink;
5964 UCHAR ucLvdsMisc;
5965 UCHAR ucTravisLVDSVolAdjust;
5966 UCHAR ucLVDSPwrOnSeqDIGONtoDE_in4Ms;
5967 UCHAR ucLVDSPwrOnSeqDEtoVARY_BL_in4Ms;
5968 UCHAR ucLVDSPwrOffSeqVARY_BLtoDE_in4Ms;
5969 UCHAR ucLVDSPwrOffSeqDEtoDIGON_in4Ms;
5970 UCHAR ucLVDSOffToOnDelay_in4Ms;
5971 UCHAR ucLVDSPwrOnSeqVARY_BLtoBLON_in4Ms;
5972 UCHAR ucLVDSPwrOffSeqBLONtoVARY_BL_in4Ms;
5973 UCHAR ucMinAllowedBL_Level;
5974 ULONG ulLCDBitDepthControlVal;
5975 ULONG ulNbpStateMemclkFreq[4];
5976 USHORT usNBP2Voltage;
5977 USHORT usNBP3Voltage;
5978 ULONG ulNbpStateNClkFreq[4];
5979 UCHAR ucNBDPMEnable;
5980 UCHAR ucReserved[3];
5981 UCHAR ucDPMState0VclkFid;
5982 UCHAR ucDPMState0DclkFid;
5983 UCHAR ucDPMState1VclkFid;
5984 UCHAR ucDPMState1DclkFid;
5985 UCHAR ucDPMState2VclkFid;
5986 UCHAR ucDPMState2DclkFid;
5987 UCHAR ucDPMState3VclkFid;
5988 UCHAR ucDPMState3DclkFid;
5989 ATOM_EXTERNAL_DISPLAY_CONNECTION_INFO sExtDispConnInfo;
5990 }ATOM_INTEGRATED_SYSTEM_INFO_V1_7;
5991
5992
5993 #define INTEGRATED_SYSTEM_INFO__GET_EDID_CALLBACK_FUNC_SUPPORT 0x01
5994 #define INTEGRATED_SYSTEM_INFO__GET_BOOTUP_DISPLAY_CALLBACK_FUNC_SUPPORT 0x02
5995 #define INTEGRATED_SYSTEM_INFO__GET_EXPANSION_CALLBACK_FUNC_SUPPORT 0x04
5996 #define INTEGRATED_SYSTEM_INFO__FAST_BOOT_SUPPORT 0x08
5997
5998
5999 #define SYS_INFO_GPUCAPS__TMDSHDMI_COHERENT_SINGLEPLL_MODE 0x01
6000 #define SYS_INFO_GPUCAPS__DP_SINGLEPLL_MODE 0x02
6001 #define SYS_INFO_GPUCAPS__DISABLE_AUX_MODE_DETECT 0x08
6002 #define SYS_INFO_GPUCAPS__ENABEL_DFS_BYPASS 0x10
6003
6004 #define SYS_INFO_GPUCAPS__GNB_FAST_RESUME_CAPABLE 0x00010000
6005
6006
6007 #define SYS_INFO_GPUCAPS__BATTERY_BOOST_ENABLE 0x00020000
6008
6009
6010
6011
6012
6013
6014
6015
6016
6017
6018
6019
6020
6021
6022
6023
6024
6025
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 typedef struct _ATOM_INTEGRATED_SYSTEM_INFO_V1_8
6147 {
6148 ATOM_COMMON_TABLE_HEADER sHeader;
6149 ULONG ulBootUpEngineClock;
6150 ULONG ulDentistVCOFreq;
6151 ULONG ulBootUpUMAClock;
6152 ATOM_CLK_VOLT_CAPABILITY sDISPCLK_Voltage[4];
6153 ULONG ulBootUpReqDisplayVector;
6154 ULONG ulVBIOSMisc;
6155 ULONG ulGPUCapInfo;
6156 ULONG ulDISP_CLK2Freq;
6157 USHORT usRequestedPWMFreqInHz;
6158 UCHAR ucHtcTmpLmt;
6159 UCHAR ucHtcHystLmt;
6160 ULONG ulReserved2;
6161 ULONG ulSystemConfig;
6162 ULONG ulCPUCapInfo;
6163 ULONG ulReserved3;
6164 USHORT usGPUReservedSysMemSize;
6165 USHORT usExtDispConnInfoOffset;
6166 USHORT usPanelRefreshRateRange;
6167 UCHAR ucMemoryType;
6168 UCHAR ucUMAChannelNumber;
6169 UCHAR strVBIOSMsg[40];
6170 ATOM_TDP_CONFIG asTdpConfig;
6171 ULONG ulReserved[19];
6172 ATOM_AVAILABLE_SCLK_LIST sAvail_SCLK[5];
6173 ULONG ulGMCRestoreResetTime;
6174 ULONG ulReserved4;
6175 ULONG ulIdleNClk;
6176 ULONG ulDDR_DLL_PowerUpTime;
6177 ULONG ulDDR_PLL_PowerUpTime;
6178 USHORT usPCIEClkSSPercentage;
6179 USHORT usPCIEClkSSType;
6180 USHORT usLvdsSSPercentage;
6181 USHORT usLvdsSSpreadRateIn10Hz;
6182 USHORT usHDMISSPercentage;
6183 USHORT usHDMISSpreadRateIn10Hz;
6184 USHORT usDVISSPercentage;
6185 USHORT usDVISSpreadRateIn10Hz;
6186 ULONG ulGPUReservedSysMemBaseAddrLo;
6187 ULONG ulGPUReservedSysMemBaseAddrHi;
6188 ATOM_CLK_VOLT_CAPABILITY s5thDISPCLK_Voltage;
6189 ULONG ulReserved5;
6190 USHORT usMaxLVDSPclkFreqInSingleLink;
6191 UCHAR ucLvdsMisc;
6192 UCHAR ucTravisLVDSVolAdjust;
6193 UCHAR ucLVDSPwrOnSeqDIGONtoDE_in4Ms;
6194 UCHAR ucLVDSPwrOnSeqDEtoVARY_BL_in4Ms;
6195 UCHAR ucLVDSPwrOffSeqVARY_BLtoDE_in4Ms;
6196 UCHAR ucLVDSPwrOffSeqDEtoDIGON_in4Ms;
6197 UCHAR ucLVDSOffToOnDelay_in4Ms;
6198 UCHAR ucLVDSPwrOnSeqVARY_BLtoBLON_in4Ms;
6199 UCHAR ucLVDSPwrOffSeqBLONtoVARY_BL_in4Ms;
6200 UCHAR ucMinAllowedBL_Level;
6201 ULONG ulLCDBitDepthControlVal;
6202 ULONG ulNbpStateMemclkFreq[4];
6203 ULONG ulPSPVersion;
6204 ULONG ulNbpStateNClkFreq[4];
6205 USHORT usNBPStateVoltage[4];
6206 USHORT usBootUpNBVoltage;
6207 USHORT usReserved2;
6208 ATOM_EXTERNAL_DISPLAY_CONNECTION_INFO sExtDispConnInfo;
6209 }ATOM_INTEGRATED_SYSTEM_INFO_V1_8;
6210
6211
6212
6213
6214
6215
6216
6217
6218
6219
6220
6221
6222
6223
6224
6225
6226
6227
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 typedef struct _ATOM_I2C_REG_INFO
6358 {
6359 UCHAR ucI2cRegIndex;
6360 UCHAR ucI2cRegVal;
6361 }ATOM_I2C_REG_INFO;
6362
6363
6364 typedef struct _ATOM_INTEGRATED_SYSTEM_INFO_V1_9
6365 {
6366 ATOM_COMMON_TABLE_HEADER sHeader;
6367 ULONG ulBootUpEngineClock;
6368 ULONG ulDentistVCOFreq;
6369 ULONG ulBootUpUMAClock;
6370 ATOM_CLK_VOLT_CAPABILITY sDISPCLK_Voltage[4];
6371 ULONG ulBootUpReqDisplayVector;
6372 ULONG ulVBIOSMisc;
6373 ULONG ulGPUCapInfo;
6374 ULONG ulDISP_CLK2Freq;
6375 USHORT usRequestedPWMFreqInHz;
6376 UCHAR ucHtcTmpLmt;
6377 UCHAR ucHtcHystLmt;
6378 ULONG ulReserved2;
6379 ULONG ulSystemConfig;
6380 ULONG ulCPUCapInfo;
6381 ULONG ulReserved3;
6382 USHORT usGPUReservedSysMemSize;
6383 USHORT usExtDispConnInfoOffset;
6384 USHORT usPanelRefreshRateRange;
6385 UCHAR ucMemoryType;
6386 UCHAR ucUMAChannelNumber;
6387 UCHAR strVBIOSMsg[40];
6388 ATOM_TDP_CONFIG asTdpConfig;
6389 UCHAR ucExtHDMIReDrvSlvAddr;
6390 UCHAR ucExtHDMIReDrvRegNum;
6391 ATOM_I2C_REG_INFO asExtHDMIRegSetting[9];
6392 ULONG ulReserved[2];
6393 ATOM_CLK_VOLT_CAPABILITY_V2 sDispClkVoltageMapping[8];
6394 ATOM_AVAILABLE_SCLK_LIST sAvail_SCLK[5];
6395 ULONG ulGMCRestoreResetTime;
6396 ULONG ulReserved4;
6397 ULONG ulIdleNClk;
6398 ULONG ulDDR_DLL_PowerUpTime;
6399 ULONG ulDDR_PLL_PowerUpTime;
6400 USHORT usPCIEClkSSPercentage;
6401 USHORT usPCIEClkSSType;
6402 USHORT usLvdsSSPercentage;
6403 USHORT usLvdsSSpreadRateIn10Hz;
6404 USHORT usHDMISSPercentage;
6405 USHORT usHDMISSpreadRateIn10Hz;
6406 USHORT usDVISSPercentage;
6407 USHORT usDVISSpreadRateIn10Hz;
6408 ULONG ulGPUReservedSysMemBaseAddrLo;
6409 ULONG ulGPUReservedSysMemBaseAddrHi;
6410 ULONG ulReserved5[3];
6411 USHORT usMaxLVDSPclkFreqInSingleLink;
6412 UCHAR ucLvdsMisc;
6413 UCHAR ucTravisLVDSVolAdjust;
6414 UCHAR ucLVDSPwrOnSeqDIGONtoDE_in4Ms;
6415 UCHAR ucLVDSPwrOnSeqDEtoVARY_BL_in4Ms;
6416 UCHAR ucLVDSPwrOffSeqVARY_BLtoDE_in4Ms;
6417 UCHAR ucLVDSPwrOffSeqDEtoDIGON_in4Ms;
6418 UCHAR ucLVDSOffToOnDelay_in4Ms;
6419 UCHAR ucLVDSPwrOnSeqVARY_BLtoBLON_in4Ms;
6420 UCHAR ucLVDSPwrOffSeqBLONtoVARY_BL_in4Ms;
6421 UCHAR ucMinAllowedBL_Level;
6422 ULONG ulLCDBitDepthControlVal;
6423 ULONG ulNbpStateMemclkFreq[4];
6424 ULONG ulPSPVersion;
6425 ULONG ulNbpStateNClkFreq[4];
6426 USHORT usNBPStateVoltage[4];
6427 USHORT usBootUpNBVoltage;
6428 UCHAR ucEDPv1_4VSMode;
6429 UCHAR ucReserved2;
6430 ATOM_EXTERNAL_DISPLAY_CONNECTION_INFO sExtDispConnInfo;
6431 }ATOM_INTEGRATED_SYSTEM_INFO_V1_9;
6432
6433
6434
6435 #define EDP_VS_LEGACY_MODE 0
6436 #define EDP_VS_LOW_VDIFF_MODE 1
6437 #define EDP_VS_HIGH_VDIFF_MODE 2
6438 #define EDP_VS_STRETCH_MODE 3
6439 #define EDP_VS_SINGLE_VDIFF_MODE 4
6440 #define EDP_VS_VARIABLE_PREM_MODE 5
6441
6442
6443
6444 #define SYS_INFO_V1_9_GPUCAPSINFO_DISABLE_AUX_MODE_DETECT 0x08
6445 #define SYS_INFO_V1_9_GPUCAPSINFO_ENABEL_DFS_BYPASS 0x10
6446
6447 #define SYS_INFO_V1_9_GPUCAPSINFO_GNB_FAST_RESUME_CAPABLE 0x00010000
6448
6449 #define SYS_INFO_V1_9_GPUCAPINFO_IOMMU_DISABLE 0x00040000
6450
6451 #define SYS_INFO_V1_9_GPUCAPINFO_MARC_APERTURE_ENABLE 0x00080000
6452
6453
6454 typedef struct _DPHY_TIMING_PARA
6455 {
6456 UCHAR ucProfileID;
6457 ULONG ucPara;
6458 } DPHY_TIMING_PARA;
6459
6460 typedef struct _DPHY_ELEC_PARA
6461 {
6462 USHORT usPara[3];
6463 } DPHY_ELEC_PARA;
6464
6465 typedef struct _CAMERA_MODULE_INFO
6466 {
6467 UCHAR ucID;
6468 UCHAR strModuleName[8];
6469 DPHY_TIMING_PARA asTimingPara[6];
6470 } CAMERA_MODULE_INFO;
6471
6472 typedef struct _FLASHLIGHT_INFO
6473 {
6474 UCHAR ucID;
6475 UCHAR strName[8];
6476 } FLASHLIGHT_INFO;
6477
6478 typedef struct _CAMERA_DATA
6479 {
6480 ULONG ulVersionCode;
6481 CAMERA_MODULE_INFO asCameraInfo[3];
6482 FLASHLIGHT_INFO asFlashInfo;
6483 DPHY_ELEC_PARA asDphyElecPara;
6484 ULONG ulCrcVal;
6485 }CAMERA_DATA;
6486
6487 typedef struct _ATOM_INTEGRATED_SYSTEM_INFO_V1_10
6488 {
6489 ATOM_COMMON_TABLE_HEADER sHeader;
6490 ULONG ulBootUpEngineClock;
6491 ULONG ulDentistVCOFreq;
6492 ULONG ulBootUpUMAClock;
6493 ULONG ulReserved0[8];
6494 ULONG ulBootUpReqDisplayVector;
6495 ULONG ulVBIOSMisc;
6496 ULONG ulGPUCapInfo;
6497 ULONG ulReserved1;
6498 USHORT usRequestedPWMFreqInHz;
6499 UCHAR ucHtcTmpLmt;
6500 UCHAR ucHtcHystLmt;
6501 ULONG ulReserved2;
6502 ULONG ulSystemConfig;
6503 ULONG ulCPUCapInfo;
6504 ULONG ulReserved3;
6505 USHORT usGPUReservedSysMemSize;
6506 USHORT usExtDispConnInfoOffset;
6507 USHORT usPanelRefreshRateRange;
6508 UCHAR ucMemoryType;
6509 UCHAR ucUMAChannelNumber;
6510 ULONG ulMsgReserved[10];
6511 ATOM_TDP_CONFIG asTdpConfig;
6512 ULONG ulReserved[7];
6513 ATOM_CLK_VOLT_CAPABILITY_V2 sDispClkVoltageMapping[8];
6514 ULONG ulReserved6[10];
6515 ULONG ulGMCRestoreResetTime;
6516 ULONG ulReserved4;
6517 ULONG ulIdleNClk;
6518 ULONG ulDDR_DLL_PowerUpTime;
6519 ULONG ulDDR_PLL_PowerUpTime;
6520 USHORT usPCIEClkSSPercentage;
6521 USHORT usPCIEClkSSType;
6522 USHORT usLvdsSSPercentage;
6523 USHORT usLvdsSSpreadRateIn10Hz;
6524 USHORT usHDMISSPercentage;
6525 USHORT usHDMISSpreadRateIn10Hz;
6526 USHORT usDVISSPercentage;
6527 USHORT usDVISSpreadRateIn10Hz;
6528 ULONG ulGPUReservedSysMemBaseAddrLo;
6529 ULONG ulGPUReservedSysMemBaseAddrHi;
6530 ULONG ulReserved5[3];
6531 USHORT usMaxLVDSPclkFreqInSingleLink;
6532 UCHAR ucLvdsMisc;
6533 UCHAR ucTravisLVDSVolAdjust;
6534 UCHAR ucLVDSPwrOnSeqDIGONtoDE_in4Ms;
6535 UCHAR ucLVDSPwrOnSeqDEtoVARY_BL_in4Ms;
6536 UCHAR ucLVDSPwrOffSeqVARY_BLtoDE_in4Ms;
6537 UCHAR ucLVDSPwrOffSeqDEtoDIGON_in4Ms;
6538 UCHAR ucLVDSOffToOnDelay_in4Ms;
6539 UCHAR ucLVDSPwrOnSeqVARY_BLtoBLON_in4Ms;
6540 UCHAR ucLVDSPwrOffSeqBLONtoVARY_BL_in4Ms;
6541 UCHAR ucMinAllowedBL_Level;
6542 ULONG ulLCDBitDepthControlVal;
6543 ULONG ulNbpStateMemclkFreq[2];
6544 ULONG ulReserved7[2];
6545 ULONG ulPSPVersion;
6546 ULONG ulNbpStateNClkFreq[4];
6547 USHORT usNBPStateVoltage[4];
6548 USHORT usBootUpNBVoltage;
6549 UCHAR ucEDPv1_4VSMode;
6550 UCHAR ucReserved2;
6551 ATOM_EXTERNAL_DISPLAY_CONNECTION_INFO sExtDispConnInfo;
6552 CAMERA_DATA asCameraInfo;
6553 ULONG ulReserved8[29];
6554 }ATOM_INTEGRATED_SYSTEM_INFO_V1_10;
6555
6556
6557
6558 typedef struct _ATOM_FUSION_SYSTEM_INFO_V2
6559 {
6560 ATOM_INTEGRATED_SYSTEM_INFO_V1_8 sIntegratedSysInfo;
6561 ULONG ulPowerplayTable[128];
6562 }ATOM_FUSION_SYSTEM_INFO_V2;
6563
6564
6565 typedef struct _ATOM_FUSION_SYSTEM_INFO_V3
6566 {
6567 ATOM_INTEGRATED_SYSTEM_INFO_V1_10 sIntegratedSysInfo;
6568 ULONG ulPowerplayTable[192];
6569 }ATOM_FUSION_SYSTEM_INFO_V3;
6570
6571 #define FUSION_V3_OFFSET_FROM_TOP_OF_FB 0x800
6572
6573
6574
6575
6576
6577 #define ICS91719 1
6578 #define ICS91720 2
6579
6580
6581 typedef struct _ATOM_I2C_DATA_RECORD
6582 {
6583 UCHAR ucNunberOfBytes;
6584 UCHAR ucI2CData[1];
6585 }ATOM_I2C_DATA_RECORD;
6586
6587
6588
6589 typedef struct _ATOM_I2C_DEVICE_SETUP_INFO
6590 {
6591 ATOM_I2C_ID_CONFIG_ACCESS sucI2cId;
6592 UCHAR ucSSChipID;
6593 UCHAR ucSSChipSlaveAddr;
6594 UCHAR ucNumOfI2CDataRecords;
6595 ATOM_I2C_DATA_RECORD asI2CData[1];
6596 }ATOM_I2C_DEVICE_SETUP_INFO;
6597
6598
6599 typedef struct _ATOM_ASIC_MVDD_INFO
6600 {
6601 ATOM_COMMON_TABLE_HEADER sHeader;
6602 ATOM_I2C_DEVICE_SETUP_INFO asI2CSetup[1];
6603 }ATOM_ASIC_MVDD_INFO;
6604
6605
6606 #define ATOM_MCLK_SS_INFO ATOM_ASIC_MVDD_INFO
6607
6608
6609
6610
6611 typedef struct _ATOM_ASIC_SS_ASSIGNMENT
6612 {
6613 ULONG ulTargetClockRange;
6614 USHORT usSpreadSpectrumPercentage;
6615 USHORT usSpreadRateInKhz;
6616 UCHAR ucClockIndication;
6617 UCHAR ucSpreadSpectrumMode;
6618 UCHAR ucReserved[2];
6619 }ATOM_ASIC_SS_ASSIGNMENT;
6620
6621
6622
6623 #define ASIC_INTERNAL_MEMORY_SS 1
6624 #define ASIC_INTERNAL_ENGINE_SS 2
6625 #define ASIC_INTERNAL_UVD_SS 3
6626 #define ASIC_INTERNAL_SS_ON_TMDS 4
6627 #define ASIC_INTERNAL_SS_ON_HDMI 5
6628 #define ASIC_INTERNAL_SS_ON_LVDS 6
6629 #define ASIC_INTERNAL_SS_ON_DP 7
6630 #define ASIC_INTERNAL_SS_ON_DCPLL 8
6631 #define ASIC_EXTERNAL_SS_ON_DP_CLOCK 9
6632 #define ASIC_INTERNAL_VCE_SS 10
6633 #define ASIC_INTERNAL_GPUPLL_SS 11
6634
6635
6636 typedef struct _ATOM_ASIC_SS_ASSIGNMENT_V2
6637 {
6638 ULONG ulTargetClockRange;
6639
6640 USHORT usSpreadSpectrumPercentage;
6641 USHORT usSpreadRateIn10Hz;
6642 UCHAR ucClockIndication;
6643 UCHAR ucSpreadSpectrumMode;
6644 UCHAR ucReserved[2];
6645 }ATOM_ASIC_SS_ASSIGNMENT_V2;
6646
6647
6648
6649
6650
6651
6652
6653
6654
6655 typedef struct _ATOM_ASIC_INTERNAL_SS_INFO
6656 {
6657 ATOM_COMMON_TABLE_HEADER sHeader;
6658 ATOM_ASIC_SS_ASSIGNMENT asSpreadSpectrum[4];
6659 }ATOM_ASIC_INTERNAL_SS_INFO;
6660
6661 typedef struct _ATOM_ASIC_INTERNAL_SS_INFO_V2
6662 {
6663 ATOM_COMMON_TABLE_HEADER sHeader;
6664 ATOM_ASIC_SS_ASSIGNMENT_V2 asSpreadSpectrum[1];
6665 }ATOM_ASIC_INTERNAL_SS_INFO_V2;
6666
6667 typedef struct _ATOM_ASIC_SS_ASSIGNMENT_V3
6668 {
6669 ULONG ulTargetClockRange;
6670
6671 USHORT usSpreadSpectrumPercentage;
6672 USHORT usSpreadRateIn10Hz;
6673 UCHAR ucClockIndication;
6674 UCHAR ucSpreadSpectrumMode;
6675 UCHAR ucReserved[2];
6676 }ATOM_ASIC_SS_ASSIGNMENT_V3;
6677
6678
6679 #define SS_MODE_V3_CENTRE_SPREAD_MASK 0x01
6680 #define SS_MODE_V3_EXTERNAL_SS_MASK 0x02
6681 #define SS_MODE_V3_PERCENTAGE_DIV_BY_1000_MASK 0x10
6682
6683 typedef struct _ATOM_ASIC_INTERNAL_SS_INFO_V3
6684 {
6685 ATOM_COMMON_TABLE_HEADER sHeader;
6686 ATOM_ASIC_SS_ASSIGNMENT_V3 asSpreadSpectrum[1];
6687 }ATOM_ASIC_INTERNAL_SS_INFO_V3;
6688
6689
6690
6691 #define ATOM_DEVICE_CONNECT_INFO_DEF 0
6692 #define ATOM_ROM_LOCATION_DEF 1
6693 #define ATOM_TV_STANDARD_DEF 2
6694 #define ATOM_ACTIVE_INFO_DEF 3
6695 #define ATOM_LCD_INFO_DEF 4
6696 #define ATOM_DOS_REQ_INFO_DEF 5
6697 #define ATOM_ACC_CHANGE_INFO_DEF 6
6698 #define ATOM_DOS_MODE_INFO_DEF 7
6699 #define ATOM_I2C_CHANNEL_STATUS_DEF 8
6700 #define ATOM_I2C_CHANNEL_STATUS1_DEF 9
6701 #define ATOM_INTERNAL_TIMER_DEF 10
6702
6703
6704 #define ATOM_S0_CRT1_MONO 0x00000001L
6705 #define ATOM_S0_CRT1_COLOR 0x00000002L
6706 #define ATOM_S0_CRT1_MASK (ATOM_S0_CRT1_MONO+ATOM_S0_CRT1_COLOR)
6707
6708 #define ATOM_S0_TV1_COMPOSITE_A 0x00000004L
6709 #define ATOM_S0_TV1_SVIDEO_A 0x00000008L
6710 #define ATOM_S0_TV1_MASK_A (ATOM_S0_TV1_COMPOSITE_A+ATOM_S0_TV1_SVIDEO_A)
6711
6712 #define ATOM_S0_CV_A 0x00000010L
6713 #define ATOM_S0_CV_DIN_A 0x00000020L
6714 #define ATOM_S0_CV_MASK_A (ATOM_S0_CV_A+ATOM_S0_CV_DIN_A)
6715
6716
6717 #define ATOM_S0_CRT2_MONO 0x00000100L
6718 #define ATOM_S0_CRT2_COLOR 0x00000200L
6719 #define ATOM_S0_CRT2_MASK (ATOM_S0_CRT2_MONO+ATOM_S0_CRT2_COLOR)
6720
6721 #define ATOM_S0_TV1_COMPOSITE 0x00000400L
6722 #define ATOM_S0_TV1_SVIDEO 0x00000800L
6723 #define ATOM_S0_TV1_SCART 0x00004000L
6724 #define ATOM_S0_TV1_MASK (ATOM_S0_TV1_COMPOSITE+ATOM_S0_TV1_SVIDEO+ATOM_S0_TV1_SCART)
6725
6726 #define ATOM_S0_CV 0x00001000L
6727 #define ATOM_S0_CV_DIN 0x00002000L
6728 #define ATOM_S0_CV_MASK (ATOM_S0_CV+ATOM_S0_CV_DIN)
6729
6730 #define ATOM_S0_DFP1 0x00010000L
6731 #define ATOM_S0_DFP2 0x00020000L
6732 #define ATOM_S0_LCD1 0x00040000L
6733 #define ATOM_S0_LCD2 0x00080000L
6734 #define ATOM_S0_DFP6 0x00100000L
6735 #define ATOM_S0_DFP3 0x00200000L
6736 #define ATOM_S0_DFP4 0x00400000L
6737 #define ATOM_S0_DFP5 0x00800000L
6738
6739
6740 #define ATOM_S0_DFP_MASK ATOM_S0_DFP1 | ATOM_S0_DFP2 | ATOM_S0_DFP3 | ATOM_S0_DFP4 | ATOM_S0_DFP5 | ATOM_S0_DFP6
6741
6742 #define ATOM_S0_FAD_REGISTER_BUG 0x02000000L
6743
6744
6745 #define ATOM_S0_THERMAL_STATE_MASK 0x1C000000L
6746 #define ATOM_S0_THERMAL_STATE_SHIFT 26
6747
6748 #define ATOM_S0_SYSTEM_POWER_STATE_MASK 0xE0000000L
6749 #define ATOM_S0_SYSTEM_POWER_STATE_SHIFT 29
6750
6751 #define ATOM_S0_SYSTEM_POWER_STATE_VALUE_AC 1
6752 #define ATOM_S0_SYSTEM_POWER_STATE_VALUE_DC 2
6753 #define ATOM_S0_SYSTEM_POWER_STATE_VALUE_LITEAC 3
6754 #define ATOM_S0_SYSTEM_POWER_STATE_VALUE_LIT2AC 4
6755
6756
6757 #define ATOM_S0_CRT1_MONOb0 0x01
6758 #define ATOM_S0_CRT1_COLORb0 0x02
6759 #define ATOM_S0_CRT1_MASKb0 (ATOM_S0_CRT1_MONOb0+ATOM_S0_CRT1_COLORb0)
6760
6761 #define ATOM_S0_TV1_COMPOSITEb0 0x04
6762 #define ATOM_S0_TV1_SVIDEOb0 0x08
6763 #define ATOM_S0_TV1_MASKb0 (ATOM_S0_TV1_COMPOSITEb0+ATOM_S0_TV1_SVIDEOb0)
6764
6765 #define ATOM_S0_CVb0 0x10
6766 #define ATOM_S0_CV_DINb0 0x20
6767 #define ATOM_S0_CV_MASKb0 (ATOM_S0_CVb0+ATOM_S0_CV_DINb0)
6768
6769 #define ATOM_S0_CRT2_MONOb1 0x01
6770 #define ATOM_S0_CRT2_COLORb1 0x02
6771 #define ATOM_S0_CRT2_MASKb1 (ATOM_S0_CRT2_MONOb1+ATOM_S0_CRT2_COLORb1)
6772
6773 #define ATOM_S0_TV1_COMPOSITEb1 0x04
6774 #define ATOM_S0_TV1_SVIDEOb1 0x08
6775 #define ATOM_S0_TV1_SCARTb1 0x40
6776 #define ATOM_S0_TV1_MASKb1 (ATOM_S0_TV1_COMPOSITEb1+ATOM_S0_TV1_SVIDEOb1+ATOM_S0_TV1_SCARTb1)
6777
6778 #define ATOM_S0_CVb1 0x10
6779 #define ATOM_S0_CV_DINb1 0x20
6780 #define ATOM_S0_CV_MASKb1 (ATOM_S0_CVb1+ATOM_S0_CV_DINb1)
6781
6782 #define ATOM_S0_DFP1b2 0x01
6783 #define ATOM_S0_DFP2b2 0x02
6784 #define ATOM_S0_LCD1b2 0x04
6785 #define ATOM_S0_LCD2b2 0x08
6786 #define ATOM_S0_DFP6b2 0x10
6787 #define ATOM_S0_DFP3b2 0x20
6788 #define ATOM_S0_DFP4b2 0x40
6789 #define ATOM_S0_DFP5b2 0x80
6790
6791
6792 #define ATOM_S0_THERMAL_STATE_MASKb3 0x1C
6793 #define ATOM_S0_THERMAL_STATE_SHIFTb3 2
6794
6795 #define ATOM_S0_SYSTEM_POWER_STATE_MASKb3 0xE0
6796 #define ATOM_S0_LCD1_SHIFT 18
6797
6798
6799 #define ATOM_S1_ROM_LOCATION_MASK 0x0000FFFFL
6800 #define ATOM_S1_PCI_BUS_DEV_MASK 0xFFFF0000L
6801
6802
6803 #define ATOM_S2_TV1_STANDARD_MASK 0x0000000FL
6804 #define ATOM_S2_CURRENT_BL_LEVEL_MASK 0x0000FF00L
6805 #define ATOM_S2_CURRENT_BL_LEVEL_SHIFT 8
6806
6807 #define ATOM_S2_FORCEDLOWPWRMODE_STATE_MASK 0x0C000000L
6808 #define ATOM_S2_FORCEDLOWPWRMODE_STATE_MASK_SHIFT 26
6809 #define ATOM_S2_FORCEDLOWPWRMODE_STATE_CHANGE 0x10000000L
6810
6811 #define ATOM_S2_DEVICE_DPMS_STATE 0x00010000L
6812 #define ATOM_S2_VRI_BRIGHT_ENABLE 0x20000000L
6813
6814 #define ATOM_S2_DISPLAY_ROTATION_0_DEGREE 0x0
6815 #define ATOM_S2_DISPLAY_ROTATION_90_DEGREE 0x1
6816 #define ATOM_S2_DISPLAY_ROTATION_180_DEGREE 0x2
6817 #define ATOM_S2_DISPLAY_ROTATION_270_DEGREE 0x3
6818 #define ATOM_S2_DISPLAY_ROTATION_DEGREE_SHIFT 30
6819 #define ATOM_S2_DISPLAY_ROTATION_ANGLE_MASK 0xC0000000L
6820
6821
6822
6823 #define ATOM_S2_TV1_STANDARD_MASKb0 0x0F
6824 #define ATOM_S2_CURRENT_BL_LEVEL_MASKb1 0xFF
6825 #define ATOM_S2_DEVICE_DPMS_STATEb2 0x01
6826
6827 #define ATOM_S2_TMDS_COHERENT_MODEb3 0x10
6828 #define ATOM_S2_VRI_BRIGHT_ENABLEb3 0x20
6829 #define ATOM_S2_ROTATION_STATE_MASKb3 0xC0
6830
6831
6832
6833 #define ATOM_S3_CRT1_ACTIVE 0x00000001L
6834 #define ATOM_S3_LCD1_ACTIVE 0x00000002L
6835 #define ATOM_S3_TV1_ACTIVE 0x00000004L
6836 #define ATOM_S3_DFP1_ACTIVE 0x00000008L
6837 #define ATOM_S3_CRT2_ACTIVE 0x00000010L
6838 #define ATOM_S3_LCD2_ACTIVE 0x00000020L
6839 #define ATOM_S3_DFP6_ACTIVE 0x00000040L
6840 #define ATOM_S3_DFP2_ACTIVE 0x00000080L
6841 #define ATOM_S3_CV_ACTIVE 0x00000100L
6842 #define ATOM_S3_DFP3_ACTIVE 0x00000200L
6843 #define ATOM_S3_DFP4_ACTIVE 0x00000400L
6844 #define ATOM_S3_DFP5_ACTIVE 0x00000800L
6845
6846
6847 #define ATOM_S3_DEVICE_ACTIVE_MASK 0x00000FFFL
6848
6849 #define ATOM_S3_LCD_FULLEXPANSION_ACTIVE 0x00001000L
6850 #define ATOM_S3_LCD_EXPANSION_ASPEC_RATIO_ACTIVE 0x00002000L
6851
6852 #define ATOM_S3_CRT1_CRTC_ACTIVE 0x00010000L
6853 #define ATOM_S3_LCD1_CRTC_ACTIVE 0x00020000L
6854 #define ATOM_S3_TV1_CRTC_ACTIVE 0x00040000L
6855 #define ATOM_S3_DFP1_CRTC_ACTIVE 0x00080000L
6856 #define ATOM_S3_CRT2_CRTC_ACTIVE 0x00100000L
6857 #define ATOM_S3_LCD2_CRTC_ACTIVE 0x00200000L
6858 #define ATOM_S3_DFP6_CRTC_ACTIVE 0x00400000L
6859 #define ATOM_S3_DFP2_CRTC_ACTIVE 0x00800000L
6860 #define ATOM_S3_CV_CRTC_ACTIVE 0x01000000L
6861 #define ATOM_S3_DFP3_CRTC_ACTIVE 0x02000000L
6862 #define ATOM_S3_DFP4_CRTC_ACTIVE 0x04000000L
6863 #define ATOM_S3_DFP5_CRTC_ACTIVE 0x08000000L
6864
6865
6866 #define ATOM_S3_DEVICE_CRTC_ACTIVE_MASK 0x0FFF0000L
6867 #define ATOM_S3_ASIC_GUI_ENGINE_HUNG 0x20000000L
6868
6869 #define ATOM_S3_ALLOW_FAST_PWR_SWITCH 0x40000000L
6870 #define ATOM_S3_RQST_GPU_USE_MIN_PWR 0x80000000L
6871
6872
6873
6874
6875 #define ATOM_S3_CRT1_ACTIVEb0 0x01
6876 #define ATOM_S3_LCD1_ACTIVEb0 0x02
6877 #define ATOM_S3_TV1_ACTIVEb0 0x04
6878 #define ATOM_S3_DFP1_ACTIVEb0 0x08
6879 #define ATOM_S3_CRT2_ACTIVEb0 0x10
6880 #define ATOM_S3_LCD2_ACTIVEb0 0x20
6881 #define ATOM_S3_DFP6_ACTIVEb0 0x40
6882 #define ATOM_S3_DFP2_ACTIVEb0 0x80
6883 #define ATOM_S3_CV_ACTIVEb1 0x01
6884 #define ATOM_S3_DFP3_ACTIVEb1 0x02
6885 #define ATOM_S3_DFP4_ACTIVEb1 0x04
6886 #define ATOM_S3_DFP5_ACTIVEb1 0x08
6887
6888
6889 #define ATOM_S3_ACTIVE_CRTC1w0 0xFFF
6890
6891 #define ATOM_S3_CRT1_CRTC_ACTIVEb2 0x01
6892 #define ATOM_S3_LCD1_CRTC_ACTIVEb2 0x02
6893 #define ATOM_S3_TV1_CRTC_ACTIVEb2 0x04
6894 #define ATOM_S3_DFP1_CRTC_ACTIVEb2 0x08
6895 #define ATOM_S3_CRT2_CRTC_ACTIVEb2 0x10
6896 #define ATOM_S3_LCD2_CRTC_ACTIVEb2 0x20
6897 #define ATOM_S3_DFP6_CRTC_ACTIVEb2 0x40
6898 #define ATOM_S3_DFP2_CRTC_ACTIVEb2 0x80
6899 #define ATOM_S3_CV_CRTC_ACTIVEb3 0x01
6900 #define ATOM_S3_DFP3_CRTC_ACTIVEb3 0x02
6901 #define ATOM_S3_DFP4_CRTC_ACTIVEb3 0x04
6902 #define ATOM_S3_DFP5_CRTC_ACTIVEb3 0x08
6903
6904
6905 #define ATOM_S3_ACTIVE_CRTC2w1 0xFFF
6906
6907
6908
6909 #define ATOM_S4_LCD1_PANEL_ID_MASK 0x000000FFL
6910 #define ATOM_S4_LCD1_REFRESH_MASK 0x0000FF00L
6911 #define ATOM_S4_LCD1_REFRESH_SHIFT 8
6912
6913
6914 #define ATOM_S4_LCD1_PANEL_ID_MASKb0 0x0FF
6915 #define ATOM_S4_LCD1_REFRESH_MASKb1 ATOM_S4_LCD1_PANEL_ID_MASKb0
6916 #define ATOM_S4_VRAM_INFO_MASKb2 ATOM_S4_LCD1_PANEL_ID_MASKb0
6917
6918
6919 #define ATOM_S5_DOS_REQ_CRT1b0 0x01
6920 #define ATOM_S5_DOS_REQ_LCD1b0 0x02
6921 #define ATOM_S5_DOS_REQ_TV1b0 0x04
6922 #define ATOM_S5_DOS_REQ_DFP1b0 0x08
6923 #define ATOM_S5_DOS_REQ_CRT2b0 0x10
6924 #define ATOM_S5_DOS_REQ_LCD2b0 0x20
6925 #define ATOM_S5_DOS_REQ_DFP6b0 0x40
6926 #define ATOM_S5_DOS_REQ_DFP2b0 0x80
6927 #define ATOM_S5_DOS_REQ_CVb1 0x01
6928 #define ATOM_S5_DOS_REQ_DFP3b1 0x02
6929 #define ATOM_S5_DOS_REQ_DFP4b1 0x04
6930 #define ATOM_S5_DOS_REQ_DFP5b1 0x08
6931
6932
6933 #define ATOM_S5_DOS_REQ_DEVICEw0 0x0FFF
6934
6935 #define ATOM_S5_DOS_REQ_CRT1 0x0001
6936 #define ATOM_S5_DOS_REQ_LCD1 0x0002
6937 #define ATOM_S5_DOS_REQ_TV1 0x0004
6938 #define ATOM_S5_DOS_REQ_DFP1 0x0008
6939 #define ATOM_S5_DOS_REQ_CRT2 0x0010
6940 #define ATOM_S5_DOS_REQ_LCD2 0x0020
6941 #define ATOM_S5_DOS_REQ_DFP6 0x0040
6942 #define ATOM_S5_DOS_REQ_DFP2 0x0080
6943 #define ATOM_S5_DOS_REQ_CV 0x0100
6944 #define ATOM_S5_DOS_REQ_DFP3 0x0200
6945 #define ATOM_S5_DOS_REQ_DFP4 0x0400
6946 #define ATOM_S5_DOS_REQ_DFP5 0x0800
6947
6948 #define ATOM_S5_DOS_FORCE_CRT1b2 ATOM_S5_DOS_REQ_CRT1b0
6949 #define ATOM_S5_DOS_FORCE_TV1b2 ATOM_S5_DOS_REQ_TV1b0
6950 #define ATOM_S5_DOS_FORCE_CRT2b2 ATOM_S5_DOS_REQ_CRT2b0
6951 #define ATOM_S5_DOS_FORCE_CVb3 ATOM_S5_DOS_REQ_CVb1
6952 #define ATOM_S5_DOS_FORCE_DEVICEw1 (ATOM_S5_DOS_FORCE_CRT1b2+ATOM_S5_DOS_FORCE_TV1b2+ATOM_S5_DOS_FORCE_CRT2b2+\
6953 (ATOM_S5_DOS_FORCE_CVb3<<8))
6954
6955 #define ATOM_S6_DEVICE_CHANGE 0x00000001L
6956 #define ATOM_S6_SCALER_CHANGE 0x00000002L
6957 #define ATOM_S6_LID_CHANGE 0x00000004L
6958 #define ATOM_S6_DOCKING_CHANGE 0x00000008L
6959 #define ATOM_S6_ACC_MODE 0x00000010L
6960 #define ATOM_S6_EXT_DESKTOP_MODE 0x00000020L
6961 #define ATOM_S6_LID_STATE 0x00000040L
6962 #define ATOM_S6_DOCK_STATE 0x00000080L
6963 #define ATOM_S6_CRITICAL_STATE 0x00000100L
6964 #define ATOM_S6_HW_I2C_BUSY_STATE 0x00000200L
6965 #define ATOM_S6_THERMAL_STATE_CHANGE 0x00000400L
6966 #define ATOM_S6_INTERRUPT_SET_BY_BIOS 0x00000800L
6967 #define ATOM_S6_REQ_LCD_EXPANSION_FULL 0x00001000L
6968 #define ATOM_S6_REQ_LCD_EXPANSION_ASPEC_RATIO 0x00002000L
6969
6970 #define ATOM_S6_DISPLAY_STATE_CHANGE 0x00004000L
6971 #define ATOM_S6_I2C_STATE_CHANGE 0x00008000L
6972
6973 #define ATOM_S6_ACC_REQ_CRT1 0x00010000L
6974 #define ATOM_S6_ACC_REQ_LCD1 0x00020000L
6975 #define ATOM_S6_ACC_REQ_TV1 0x00040000L
6976 #define ATOM_S6_ACC_REQ_DFP1 0x00080000L
6977 #define ATOM_S6_ACC_REQ_CRT2 0x00100000L
6978 #define ATOM_S6_ACC_REQ_LCD2 0x00200000L
6979 #define ATOM_S6_ACC_REQ_DFP6 0x00400000L
6980 #define ATOM_S6_ACC_REQ_DFP2 0x00800000L
6981 #define ATOM_S6_ACC_REQ_CV 0x01000000L
6982 #define ATOM_S6_ACC_REQ_DFP3 0x02000000L
6983 #define ATOM_S6_ACC_REQ_DFP4 0x04000000L
6984 #define ATOM_S6_ACC_REQ_DFP5 0x08000000L
6985
6986 #define ATOM_S6_ACC_REQ_MASK 0x0FFF0000L
6987 #define ATOM_S6_SYSTEM_POWER_MODE_CHANGE 0x10000000L
6988 #define ATOM_S6_ACC_BLOCK_DISPLAY_SWITCH 0x20000000L
6989 #define ATOM_S6_VRI_BRIGHTNESS_CHANGE 0x40000000L
6990 #define ATOM_S6_CONFIG_DISPLAY_CHANGE_MASK 0x80000000L
6991
6992
6993 #define ATOM_S6_DEVICE_CHANGEb0 0x01
6994 #define ATOM_S6_SCALER_CHANGEb0 0x02
6995 #define ATOM_S6_LID_CHANGEb0 0x04
6996 #define ATOM_S6_DOCKING_CHANGEb0 0x08
6997 #define ATOM_S6_ACC_MODEb0 0x10
6998 #define ATOM_S6_EXT_DESKTOP_MODEb0 0x20
6999 #define ATOM_S6_LID_STATEb0 0x40
7000 #define ATOM_S6_DOCK_STATEb0 0x80
7001 #define ATOM_S6_CRITICAL_STATEb1 0x01
7002 #define ATOM_S6_HW_I2C_BUSY_STATEb1 0x02
7003 #define ATOM_S6_THERMAL_STATE_CHANGEb1 0x04
7004 #define ATOM_S6_INTERRUPT_SET_BY_BIOSb1 0x08
7005 #define ATOM_S6_REQ_LCD_EXPANSION_FULLb1 0x10
7006 #define ATOM_S6_REQ_LCD_EXPANSION_ASPEC_RATIOb1 0x20
7007
7008 #define ATOM_S6_ACC_REQ_CRT1b2 0x01
7009 #define ATOM_S6_ACC_REQ_LCD1b2 0x02
7010 #define ATOM_S6_ACC_REQ_TV1b2 0x04
7011 #define ATOM_S6_ACC_REQ_DFP1b2 0x08
7012 #define ATOM_S6_ACC_REQ_CRT2b2 0x10
7013 #define ATOM_S6_ACC_REQ_LCD2b2 0x20
7014 #define ATOM_S6_ACC_REQ_DFP6b2 0x40
7015 #define ATOM_S6_ACC_REQ_DFP2b2 0x80
7016 #define ATOM_S6_ACC_REQ_CVb3 0x01
7017 #define ATOM_S6_ACC_REQ_DFP3b3 0x02
7018 #define ATOM_S6_ACC_REQ_DFP4b3 0x04
7019 #define ATOM_S6_ACC_REQ_DFP5b3 0x08
7020
7021 #define ATOM_S6_ACC_REQ_DEVICEw1 ATOM_S5_DOS_REQ_DEVICEw0
7022 #define ATOM_S6_SYSTEM_POWER_MODE_CHANGEb3 0x10
7023 #define ATOM_S6_ACC_BLOCK_DISPLAY_SWITCHb3 0x20
7024 #define ATOM_S6_VRI_BRIGHTNESS_CHANGEb3 0x40
7025 #define ATOM_S6_CONFIG_DISPLAY_CHANGEb3 0x80
7026
7027 #define ATOM_S6_DEVICE_CHANGE_SHIFT 0
7028 #define ATOM_S6_SCALER_CHANGE_SHIFT 1
7029 #define ATOM_S6_LID_CHANGE_SHIFT 2
7030 #define ATOM_S6_DOCKING_CHANGE_SHIFT 3
7031 #define ATOM_S6_ACC_MODE_SHIFT 4
7032 #define ATOM_S6_EXT_DESKTOP_MODE_SHIFT 5
7033 #define ATOM_S6_LID_STATE_SHIFT 6
7034 #define ATOM_S6_DOCK_STATE_SHIFT 7
7035 #define ATOM_S6_CRITICAL_STATE_SHIFT 8
7036 #define ATOM_S6_HW_I2C_BUSY_STATE_SHIFT 9
7037 #define ATOM_S6_THERMAL_STATE_CHANGE_SHIFT 10
7038 #define ATOM_S6_INTERRUPT_SET_BY_BIOS_SHIFT 11
7039 #define ATOM_S6_REQ_SCALER_SHIFT 12
7040 #define ATOM_S6_REQ_SCALER_ARATIO_SHIFT 13
7041 #define ATOM_S6_DISPLAY_STATE_CHANGE_SHIFT 14
7042 #define ATOM_S6_I2C_STATE_CHANGE_SHIFT 15
7043 #define ATOM_S6_SYSTEM_POWER_MODE_CHANGE_SHIFT 28
7044 #define ATOM_S6_ACC_BLOCK_DISPLAY_SWITCH_SHIFT 29
7045 #define ATOM_S6_VRI_BRIGHTNESS_CHANGE_SHIFT 30
7046 #define ATOM_S6_CONFIG_DISPLAY_CHANGE_SHIFT 31
7047
7048
7049 #define ATOM_S7_DOS_MODE_TYPEb0 0x03
7050 #define ATOM_S7_DOS_MODE_VGAb0 0x00
7051 #define ATOM_S7_DOS_MODE_VESAb0 0x01
7052 #define ATOM_S7_DOS_MODE_EXTb0 0x02
7053 #define ATOM_S7_DOS_MODE_PIXEL_DEPTHb0 0x0C
7054 #define ATOM_S7_DOS_MODE_PIXEL_FORMATb0 0xF0
7055 #define ATOM_S7_DOS_8BIT_DAC_ENb1 0x01
7056 #define ATOM_S7_ASIC_INIT_COMPLETEb1 0x02
7057 #define ATOM_S7_ASIC_INIT_COMPLETE_MASK 0x00000200
7058 #define ATOM_S7_DOS_MODE_NUMBERw1 0x0FFFF
7059
7060 #define ATOM_S7_DOS_8BIT_DAC_EN_SHIFT 8
7061
7062
7063 #define ATOM_S8_I2C_CHANNEL_BUSY_MASK 0x00000FFFF
7064 #define ATOM_S8_I2C_HW_ENGINE_BUSY_MASK 0x0FFFF0000
7065
7066 #define ATOM_S8_I2C_CHANNEL_BUSY_SHIFT 0
7067 #define ATOM_S8_I2C_ENGINE_BUSY_SHIFT 16
7068
7069
7070 #ifndef ATOM_S9_I2C_CHANNEL_COMPLETED_MASK
7071 #define ATOM_S9_I2C_CHANNEL_COMPLETED_MASK 0x0000FFFF
7072 #endif
7073 #ifndef ATOM_S9_I2C_CHANNEL_ABORTED_MASK
7074 #define ATOM_S9_I2C_CHANNEL_ABORTED_MASK 0xFFFF0000
7075 #endif
7076 #ifndef ATOM_S9_I2C_CHANNEL_COMPLETED_SHIFT
7077 #define ATOM_S9_I2C_CHANNEL_COMPLETED_SHIFT 0
7078 #endif
7079 #ifndef ATOM_S9_I2C_CHANNEL_ABORTED_SHIFT
7080 #define ATOM_S9_I2C_CHANNEL_ABORTED_SHIFT 16
7081 #endif
7082
7083
7084 #define ATOM_FLAG_SET 0x20
7085 #define ATOM_FLAG_CLEAR 0
7086 #define CLEAR_ATOM_S6_ACC_MODE ((ATOM_ACC_CHANGE_INFO_DEF << 8 )|ATOM_S6_ACC_MODE_SHIFT | ATOM_FLAG_CLEAR)
7087 #define SET_ATOM_S6_DEVICE_CHANGE ((ATOM_ACC_CHANGE_INFO_DEF << 8 )|ATOM_S6_DEVICE_CHANGE_SHIFT | ATOM_FLAG_SET)
7088 #define SET_ATOM_S6_VRI_BRIGHTNESS_CHANGE ((ATOM_ACC_CHANGE_INFO_DEF << 8 )|ATOM_S6_VRI_BRIGHTNESS_CHANGE_SHIFT | ATOM_FLAG_SET)
7089 #define SET_ATOM_S6_SCALER_CHANGE ((ATOM_ACC_CHANGE_INFO_DEF << 8 )|ATOM_S6_SCALER_CHANGE_SHIFT | ATOM_FLAG_SET)
7090 #define SET_ATOM_S6_LID_CHANGE ((ATOM_ACC_CHANGE_INFO_DEF << 8 )|ATOM_S6_LID_CHANGE_SHIFT | ATOM_FLAG_SET)
7091
7092 #define SET_ATOM_S6_LID_STATE ((ATOM_ACC_CHANGE_INFO_DEF << 8 )|ATOM_S6_LID_STATE_SHIFT | ATOM_FLAG_SET)
7093 #define CLEAR_ATOM_S6_LID_STATE ((ATOM_ACC_CHANGE_INFO_DEF << 8 )|ATOM_S6_LID_STATE_SHIFT | ATOM_FLAG_CLEAR)
7094
7095 #define SET_ATOM_S6_DOCK_CHANGE ((ATOM_ACC_CHANGE_INFO_DEF << 8 )|ATOM_S6_DOCKING_CHANGE_SHIFT | ATOM_FLAG_SET)
7096 #define SET_ATOM_S6_DOCK_STATE ((ATOM_ACC_CHANGE_INFO_DEF << 8 )|ATOM_S6_DOCK_STATE_SHIFT | ATOM_FLAG_SET)
7097 #define CLEAR_ATOM_S6_DOCK_STATE ((ATOM_ACC_CHANGE_INFO_DEF << 8 )|ATOM_S6_DOCK_STATE_SHIFT | ATOM_FLAG_CLEAR)
7098
7099 #define SET_ATOM_S6_THERMAL_STATE_CHANGE ((ATOM_ACC_CHANGE_INFO_DEF << 8 )|ATOM_S6_THERMAL_STATE_CHANGE_SHIFT | ATOM_FLAG_SET)
7100 #define SET_ATOM_S6_SYSTEM_POWER_MODE_CHANGE ((ATOM_ACC_CHANGE_INFO_DEF << 8 )|ATOM_S6_SYSTEM_POWER_MODE_CHANGE_SHIFT | ATOM_FLAG_SET)
7101 #define SET_ATOM_S6_INTERRUPT_SET_BY_BIOS ((ATOM_ACC_CHANGE_INFO_DEF << 8 )|ATOM_S6_INTERRUPT_SET_BY_BIOS_SHIFT | ATOM_FLAG_SET)
7102
7103 #define SET_ATOM_S6_CRITICAL_STATE ((ATOM_ACC_CHANGE_INFO_DEF << 8 )|ATOM_S6_CRITICAL_STATE_SHIFT | ATOM_FLAG_SET)
7104 #define CLEAR_ATOM_S6_CRITICAL_STATE ((ATOM_ACC_CHANGE_INFO_DEF << 8 )|ATOM_S6_CRITICAL_STATE_SHIFT | ATOM_FLAG_CLEAR)
7105
7106 #define SET_ATOM_S6_REQ_SCALER ((ATOM_ACC_CHANGE_INFO_DEF << 8 )|ATOM_S6_REQ_SCALER_SHIFT | ATOM_FLAG_SET)
7107 #define CLEAR_ATOM_S6_REQ_SCALER ((ATOM_ACC_CHANGE_INFO_DEF << 8 )|ATOM_S6_REQ_SCALER_SHIFT | ATOM_FLAG_CLEAR )
7108
7109 #define SET_ATOM_S6_REQ_SCALER_ARATIO ((ATOM_ACC_CHANGE_INFO_DEF << 8 )|ATOM_S6_REQ_SCALER_ARATIO_SHIFT | ATOM_FLAG_SET )
7110 #define CLEAR_ATOM_S6_REQ_SCALER_ARATIO ((ATOM_ACC_CHANGE_INFO_DEF << 8 )|ATOM_S6_REQ_SCALER_ARATIO_SHIFT | ATOM_FLAG_CLEAR )
7111
7112 #define SET_ATOM_S6_I2C_STATE_CHANGE ((ATOM_ACC_CHANGE_INFO_DEF << 8 )|ATOM_S6_I2C_STATE_CHANGE_SHIFT | ATOM_FLAG_SET )
7113
7114 #define SET_ATOM_S6_DISPLAY_STATE_CHANGE ((ATOM_ACC_CHANGE_INFO_DEF << 8 )|ATOM_S6_DISPLAY_STATE_CHANGE_SHIFT | ATOM_FLAG_SET )
7115
7116 #define SET_ATOM_S6_DEVICE_RECONFIG ((ATOM_ACC_CHANGE_INFO_DEF << 8 )|ATOM_S6_CONFIG_DISPLAY_CHANGE_SHIFT | ATOM_FLAG_SET)
7117 #define CLEAR_ATOM_S0_LCD1 ((ATOM_DEVICE_CONNECT_INFO_DEF << 8 )| ATOM_S0_LCD1_SHIFT | ATOM_FLAG_CLEAR )
7118 #define SET_ATOM_S7_DOS_8BIT_DAC_EN ((ATOM_DOS_MODE_INFO_DEF << 8 )|ATOM_S7_DOS_8BIT_DAC_EN_SHIFT | ATOM_FLAG_SET )
7119 #define CLEAR_ATOM_S7_DOS_8BIT_DAC_EN ((ATOM_DOS_MODE_INFO_DEF << 8 )|ATOM_S7_DOS_8BIT_DAC_EN_SHIFT | ATOM_FLAG_CLEAR )
7120
7121
7122
7123
7124
7125
7126
7127 #ifdef __cplusplus
7128 #define GetIndexIntoMasterTable(MasterOrData, FieldName) ((reinterpret_cast<char*>(&(static_cast<ATOM_MASTER_LIST_OF_##MasterOrData##_TABLES*>(0))->FieldName)-static_cast<char*>(0))/sizeof(USHORT))
7129
7130 #define GET_COMMAND_TABLE_COMMANDSET_REVISION(TABLE_HEADER_OFFSET) (((static_cast<ATOM_COMMON_TABLE_HEADER*>(TABLE_HEADER_OFFSET))->ucTableFormatRevision )&0x3F)
7131 #define GET_COMMAND_TABLE_PARAMETER_REVISION(TABLE_HEADER_OFFSET) (((static_cast<ATOM_COMMON_TABLE_HEADER*>(TABLE_HEADER_OFFSET))->ucTableContentRevision)&0x3F)
7132 #else
7133 #define GetIndexIntoMasterTable(MasterOrData, FieldName) (((char*)(&((ATOM_MASTER_LIST_OF_##MasterOrData##_TABLES*)0)->FieldName)-(char*)0)/sizeof(USHORT))
7134
7135 #define GET_COMMAND_TABLE_COMMANDSET_REVISION(TABLE_HEADER_OFFSET) ((((ATOM_COMMON_TABLE_HEADER*)TABLE_HEADER_OFFSET)->ucTableFormatRevision)&0x3F)
7136 #define GET_COMMAND_TABLE_PARAMETER_REVISION(TABLE_HEADER_OFFSET) ((((ATOM_COMMON_TABLE_HEADER*)TABLE_HEADER_OFFSET)->ucTableContentRevision)&0x3F)
7137 #endif
7138
7139 #define GET_DATA_TABLE_MAJOR_REVISION GET_COMMAND_TABLE_COMMANDSET_REVISION
7140 #define GET_DATA_TABLE_MINOR_REVISION GET_COMMAND_TABLE_PARAMETER_REVISION
7141
7142
7143
7144
7145 #define ATOM_DAC_SRC 0x80
7146 #define ATOM_SRC_DAC1 0
7147 #define ATOM_SRC_DAC2 0x80
7148
7149
7150
7151 typedef struct _MEMORY_PLLINIT_PARAMETERS
7152 {
7153 ULONG ulTargetMemoryClock;
7154 UCHAR ucAction;
7155 UCHAR ucFbDiv_Hi;
7156 UCHAR ucFbDiv;
7157 UCHAR ucPostDiv;
7158 }MEMORY_PLLINIT_PARAMETERS;
7159
7160 #define MEMORY_PLLINIT_PS_ALLOCATION MEMORY_PLLINIT_PARAMETERS
7161
7162
7163 #define GPIO_PIN_WRITE 0x01
7164 #define GPIO_PIN_READ 0x00
7165
7166 typedef struct _GPIO_PIN_CONTROL_PARAMETERS
7167 {
7168 UCHAR ucGPIO_ID;
7169 UCHAR ucGPIOBitShift;
7170 UCHAR ucGPIOBitVal;
7171 UCHAR ucAction;
7172 }GPIO_PIN_CONTROL_PARAMETERS;
7173
7174 typedef struct _ENABLE_SCALER_PARAMETERS
7175 {
7176 UCHAR ucScaler;
7177 UCHAR ucEnable;
7178 UCHAR ucTVStandard;
7179 UCHAR ucPadding[1];
7180 }ENABLE_SCALER_PARAMETERS;
7181 #define ENABLE_SCALER_PS_ALLOCATION ENABLE_SCALER_PARAMETERS
7182
7183
7184 #define SCALER_BYPASS_AUTO_CENTER_NO_REPLICATION 0
7185 #define SCALER_BYPASS_AUTO_CENTER_AUTO_REPLICATION 1
7186 #define SCALER_ENABLE_2TAP_ALPHA_MODE 2
7187 #define SCALER_ENABLE_MULTITAP_MODE 3
7188
7189 typedef struct _ENABLE_HARDWARE_ICON_CURSOR_PARAMETERS
7190 {
7191 ULONG usHWIconHorzVertPosn;
7192 UCHAR ucHWIconVertOffset;
7193 UCHAR ucHWIconHorzOffset;
7194 UCHAR ucSelection;
7195 UCHAR ucEnable;
7196 }ENABLE_HARDWARE_ICON_CURSOR_PARAMETERS;
7197
7198 typedef struct _ENABLE_HARDWARE_ICON_CURSOR_PS_ALLOCATION
7199 {
7200 ENABLE_HARDWARE_ICON_CURSOR_PARAMETERS sEnableIcon;
7201 ENABLE_CRTC_PARAMETERS sReserved;
7202 }ENABLE_HARDWARE_ICON_CURSOR_PS_ALLOCATION;
7203
7204 typedef struct _ENABLE_GRAPH_SURFACE_PARAMETERS
7205 {
7206 USHORT usHight;
7207 USHORT usWidth;
7208 UCHAR ucSurface;
7209 UCHAR ucPadding[3];
7210 }ENABLE_GRAPH_SURFACE_PARAMETERS;
7211
7212 typedef struct _ENABLE_GRAPH_SURFACE_PARAMETERS_V1_2
7213 {
7214 USHORT usHight;
7215 USHORT usWidth;
7216 UCHAR ucSurface;
7217 UCHAR ucEnable;
7218 UCHAR ucPadding[2];
7219 }ENABLE_GRAPH_SURFACE_PARAMETERS_V1_2;
7220
7221 typedef struct _ENABLE_GRAPH_SURFACE_PARAMETERS_V1_3
7222 {
7223 USHORT usHight;
7224 USHORT usWidth;
7225 UCHAR ucSurface;
7226 UCHAR ucEnable;
7227 USHORT usDeviceId;
7228 }ENABLE_GRAPH_SURFACE_PARAMETERS_V1_3;
7229
7230 typedef struct _ENABLE_GRAPH_SURFACE_PARAMETERS_V1_4
7231 {
7232 USHORT usHight;
7233 USHORT usWidth;
7234 USHORT usGraphPitch;
7235 UCHAR ucColorDepth;
7236 UCHAR ucPixelFormat;
7237 UCHAR ucSurface;
7238 UCHAR ucEnable;
7239 UCHAR ucModeType;
7240 UCHAR ucReserved;
7241 }ENABLE_GRAPH_SURFACE_PARAMETERS_V1_4;
7242
7243
7244 #define ATOM_GRAPH_CONTROL_SET_PITCH 0x0f
7245 #define ATOM_GRAPH_CONTROL_SET_DISP_START 0x10
7246
7247 typedef struct _ENABLE_GRAPH_SURFACE_PS_ALLOCATION
7248 {
7249 ENABLE_GRAPH_SURFACE_PARAMETERS sSetSurface;
7250 ENABLE_YUV_PS_ALLOCATION sReserved;
7251 }ENABLE_GRAPH_SURFACE_PS_ALLOCATION;
7252
7253 typedef struct _MEMORY_CLEAN_UP_PARAMETERS
7254 {
7255 USHORT usMemoryStart;
7256 USHORT usMemorySize;
7257 }MEMORY_CLEAN_UP_PARAMETERS;
7258
7259 #define MEMORY_CLEAN_UP_PS_ALLOCATION MEMORY_CLEAN_UP_PARAMETERS
7260
7261 typedef struct _GET_DISPLAY_SURFACE_SIZE_PARAMETERS
7262 {
7263 USHORT usX_Size;
7264 USHORT usY_Size;
7265 }GET_DISPLAY_SURFACE_SIZE_PARAMETERS;
7266
7267 typedef struct _GET_DISPLAY_SURFACE_SIZE_PARAMETERS_V2
7268 {
7269 union{
7270 USHORT usX_Size;
7271 USHORT usSurface;
7272 };
7273 USHORT usY_Size;
7274 USHORT usDispXStart;
7275 USHORT usDispYStart;
7276 }GET_DISPLAY_SURFACE_SIZE_PARAMETERS_V2;
7277
7278
7279 typedef struct _PALETTE_DATA_CONTROL_PARAMETERS_V3
7280 {
7281 UCHAR ucLutId;
7282 UCHAR ucAction;
7283 USHORT usLutStartIndex;
7284 USHORT usLutLength;
7285 USHORT usLutOffsetInVram;
7286 }PALETTE_DATA_CONTROL_PARAMETERS_V3;
7287
7288
7289 #define PALETTE_DATA_AUTO_FILL 1
7290 #define PALETTE_DATA_READ 2
7291 #define PALETTE_DATA_WRITE 3
7292
7293
7294 typedef struct _INTERRUPT_SERVICE_PARAMETERS_V2
7295 {
7296 UCHAR ucInterruptId;
7297 UCHAR ucServiceId;
7298 UCHAR ucStatus;
7299 UCHAR ucReserved;
7300 }INTERRUPT_SERVICE_PARAMETER_V2;
7301
7302
7303 #define HDP1_INTERRUPT_ID 1
7304 #define HDP2_INTERRUPT_ID 2
7305 #define HDP3_INTERRUPT_ID 3
7306 #define HDP4_INTERRUPT_ID 4
7307 #define HDP5_INTERRUPT_ID 5
7308 #define HDP6_INTERRUPT_ID 6
7309 #define SW_INTERRUPT_ID 11
7310
7311
7312 #define INTERRUPT_SERVICE_GEN_SW_INT 1
7313 #define INTERRUPT_SERVICE_GET_STATUS 2
7314
7315
7316 #define INTERRUPT_STATUS__INT_TRIGGER 1
7317 #define INTERRUPT_STATUS__HPD_HIGH 2
7318
7319 typedef struct _EFUSE_INPUT_PARAMETER
7320 {
7321 USHORT usEfuseIndex;
7322 UCHAR ucBitShift;
7323 UCHAR ucBitLength;
7324 }EFUSE_INPUT_PARAMETER;
7325
7326
7327 typedef union _READ_EFUSE_VALUE_PARAMETER
7328 {
7329 EFUSE_INPUT_PARAMETER sEfuse;
7330 ULONG ulEfuseValue;
7331 }READ_EFUSE_VALUE_PARAMETER;
7332
7333 typedef struct _INDIRECT_IO_ACCESS
7334 {
7335 ATOM_COMMON_TABLE_HEADER sHeader;
7336 UCHAR IOAccessSequence[256];
7337 } INDIRECT_IO_ACCESS;
7338
7339 #define INDIRECT_READ 0x00
7340 #define INDIRECT_WRITE 0x80
7341
7342 #define INDIRECT_IO_MM 0
7343 #define INDIRECT_IO_PLL 1
7344 #define INDIRECT_IO_MC 2
7345 #define INDIRECT_IO_PCIE 3
7346 #define INDIRECT_IO_PCIEP 4
7347 #define INDIRECT_IO_NBMISC 5
7348 #define INDIRECT_IO_SMU 5
7349
7350 #define INDIRECT_IO_PLL_READ INDIRECT_IO_PLL | INDIRECT_READ
7351 #define INDIRECT_IO_PLL_WRITE INDIRECT_IO_PLL | INDIRECT_WRITE
7352 #define INDIRECT_IO_MC_READ INDIRECT_IO_MC | INDIRECT_READ
7353 #define INDIRECT_IO_MC_WRITE INDIRECT_IO_MC | INDIRECT_WRITE
7354 #define INDIRECT_IO_PCIE_READ INDIRECT_IO_PCIE | INDIRECT_READ
7355 #define INDIRECT_IO_PCIE_WRITE INDIRECT_IO_PCIE | INDIRECT_WRITE
7356 #define INDIRECT_IO_PCIEP_READ INDIRECT_IO_PCIEP | INDIRECT_READ
7357 #define INDIRECT_IO_PCIEP_WRITE INDIRECT_IO_PCIEP | INDIRECT_WRITE
7358 #define INDIRECT_IO_NBMISC_READ INDIRECT_IO_NBMISC | INDIRECT_READ
7359 #define INDIRECT_IO_NBMISC_WRITE INDIRECT_IO_NBMISC | INDIRECT_WRITE
7360 #define INDIRECT_IO_SMU_READ INDIRECT_IO_SMU | INDIRECT_READ
7361 #define INDIRECT_IO_SMU_WRITE INDIRECT_IO_SMU | INDIRECT_WRITE
7362
7363
7364 typedef struct _ATOM_OEM_INFO
7365 {
7366 ATOM_COMMON_TABLE_HEADER sHeader;
7367 ATOM_I2C_ID_CONFIG_ACCESS sucI2cId;
7368 }ATOM_OEM_INFO;
7369
7370 typedef struct _ATOM_TV_MODE
7371 {
7372 UCHAR ucVMode_Num;
7373 UCHAR ucTV_Mode_Num;
7374 }ATOM_TV_MODE;
7375
7376 typedef struct _ATOM_BIOS_INT_TVSTD_MODE
7377 {
7378 ATOM_COMMON_TABLE_HEADER sHeader;
7379 USHORT usTV_Mode_LUT_Offset;
7380 USHORT usTV_FIFO_Offset;
7381 USHORT usNTSC_Tbl_Offset;
7382 USHORT usPAL_Tbl_Offset;
7383 USHORT usCV_Tbl_Offset;
7384 }ATOM_BIOS_INT_TVSTD_MODE;
7385
7386
7387 typedef struct _ATOM_TV_MODE_SCALER_PTR
7388 {
7389 USHORT ucFilter0_Offset;
7390 USHORT usFilter1_Offset;
7391 UCHAR ucTV_Mode_Num;
7392 }ATOM_TV_MODE_SCALER_PTR;
7393
7394 typedef struct _ATOM_STANDARD_VESA_TIMING
7395 {
7396 ATOM_COMMON_TABLE_HEADER sHeader;
7397 ATOM_DTD_FORMAT aModeTimings[16];
7398 }ATOM_STANDARD_VESA_TIMING;
7399
7400
7401 typedef struct _ATOM_STD_FORMAT
7402 {
7403 USHORT usSTD_HDisp;
7404 USHORT usSTD_VDisp;
7405 USHORT usSTD_RefreshRate;
7406 USHORT usReserved;
7407 }ATOM_STD_FORMAT;
7408
7409 typedef struct _ATOM_VESA_TO_EXTENDED_MODE
7410 {
7411 USHORT usVESA_ModeNumber;
7412 USHORT usExtendedModeNumber;
7413 }ATOM_VESA_TO_EXTENDED_MODE;
7414
7415 typedef struct _ATOM_VESA_TO_INTENAL_MODE_LUT
7416 {
7417 ATOM_COMMON_TABLE_HEADER sHeader;
7418 ATOM_VESA_TO_EXTENDED_MODE asVESA_ToExtendedModeInfo[76];
7419 }ATOM_VESA_TO_INTENAL_MODE_LUT;
7420
7421
7422 typedef struct _ATOM_MEMORY_VENDOR_BLOCK{
7423 UCHAR ucMemoryType;
7424 UCHAR ucMemoryVendor;
7425 UCHAR ucAdjMCId;
7426 UCHAR ucDynClkId;
7427 ULONG ulDllResetClkRange;
7428 }ATOM_MEMORY_VENDOR_BLOCK;
7429
7430
7431 typedef struct _ATOM_MEMORY_SETTING_ID_CONFIG{
7432 #if ATOM_BIG_ENDIAN
7433 ULONG ucMemBlkId:8;
7434 ULONG ulMemClockRange:24;
7435 #else
7436 ULONG ulMemClockRange:24;
7437 ULONG ucMemBlkId:8;
7438 #endif
7439 }ATOM_MEMORY_SETTING_ID_CONFIG;
7440
7441 typedef union _ATOM_MEMORY_SETTING_ID_CONFIG_ACCESS
7442 {
7443 ATOM_MEMORY_SETTING_ID_CONFIG slAccess;
7444 ULONG ulAccess;
7445 }ATOM_MEMORY_SETTING_ID_CONFIG_ACCESS;
7446
7447
7448 typedef struct _ATOM_MEMORY_SETTING_DATA_BLOCK{
7449 ATOM_MEMORY_SETTING_ID_CONFIG_ACCESS ulMemoryID;
7450 ULONG aulMemData[1];
7451 }ATOM_MEMORY_SETTING_DATA_BLOCK;
7452
7453
7454 typedef struct _ATOM_INIT_REG_INDEX_FORMAT{
7455 USHORT usRegIndex;
7456 UCHAR ucPreRegDataLength;
7457 }ATOM_INIT_REG_INDEX_FORMAT;
7458
7459
7460 typedef struct _ATOM_INIT_REG_BLOCK{
7461 USHORT usRegIndexTblSize;
7462 USHORT usRegDataBlkSize;
7463 ATOM_INIT_REG_INDEX_FORMAT asRegIndexBuf[1];
7464 ATOM_MEMORY_SETTING_DATA_BLOCK asRegDataBuf[1];
7465 }ATOM_INIT_REG_BLOCK;
7466
7467 #define END_OF_REG_INDEX_BLOCK 0x0ffff
7468 #define END_OF_REG_DATA_BLOCK 0x00000000
7469 #define ATOM_INIT_REG_MASK_FLAG 0x80
7470 #define CLOCK_RANGE_HIGHEST 0x00ffffff
7471
7472 #define VALUE_DWORD SIZEOF ULONG
7473 #define VALUE_SAME_AS_ABOVE 0
7474 #define VALUE_MASK_DWORD 0x84
7475
7476 #define INDEX_ACCESS_RANGE_BEGIN (VALUE_DWORD + 1)
7477 #define INDEX_ACCESS_RANGE_END (INDEX_ACCESS_RANGE_BEGIN + 1)
7478 #define VALUE_INDEX_ACCESS_SINGLE (INDEX_ACCESS_RANGE_END + 1)
7479
7480 #define ACCESS_PLACEHOLDER 0x80
7481
7482
7483 typedef struct _ATOM_MC_INIT_PARAM_TABLE
7484 {
7485 ATOM_COMMON_TABLE_HEADER sHeader;
7486 USHORT usAdjustARB_SEQDataOffset;
7487 USHORT usMCInitMemTypeTblOffset;
7488 USHORT usMCInitCommonTblOffset;
7489 USHORT usMCInitPowerDownTblOffset;
7490 ULONG ulARB_SEQDataBuf[32];
7491 ATOM_INIT_REG_BLOCK asMCInitMemType;
7492 ATOM_INIT_REG_BLOCK asMCInitCommon;
7493 }ATOM_MC_INIT_PARAM_TABLE;
7494
7495
7496 typedef struct _ATOM_REG_INIT_SETTING
7497 {
7498 USHORT usRegIndex;
7499 ULONG ulRegValue;
7500 }ATOM_REG_INIT_SETTING;
7501
7502 typedef struct _ATOM_MC_INIT_PARAM_TABLE_V2_1
7503 {
7504 ATOM_COMMON_TABLE_HEADER sHeader;
7505 ULONG ulMCUcodeVersion;
7506 ULONG ulMCUcodeRomStartAddr;
7507 ULONG ulMCUcodeLength;
7508 USHORT usMcRegInitTableOffset;
7509 USHORT usReserved;
7510 }ATOM_MC_INIT_PARAM_TABLE_V2_1;
7511
7512
7513 #define _4Mx16 0x2
7514 #define _4Mx32 0x3
7515 #define _8Mx16 0x12
7516 #define _8Mx32 0x13
7517 #define _8Mx128 0x15
7518 #define _16Mx16 0x22
7519 #define _16Mx32 0x23
7520 #define _16Mx128 0x25
7521 #define _32Mx16 0x32
7522 #define _32Mx32 0x33
7523 #define _32Mx128 0x35
7524 #define _64Mx8 0x41
7525 #define _64Mx16 0x42
7526 #define _64Mx32 0x43
7527 #define _64Mx128 0x45
7528 #define _128Mx8 0x51
7529 #define _128Mx16 0x52
7530 #define _128Mx32 0x53
7531 #define _256Mx8 0x61
7532 #define _256Mx16 0x62
7533 #define _256Mx32 0x63
7534 #define _512Mx8 0x71
7535 #define _512Mx16 0x72
7536
7537
7538 #define SAMSUNG 0x1
7539 #define INFINEON 0x2
7540 #define ELPIDA 0x3
7541 #define ETRON 0x4
7542 #define NANYA 0x5
7543 #define HYNIX 0x6
7544 #define MOSEL 0x7
7545 #define WINBOND 0x8
7546 #define ESMT 0x9
7547 #define MICRON 0xF
7548
7549 #define QIMONDA INFINEON
7550 #define PROMOS MOSEL
7551 #define KRETON INFINEON
7552 #define ELIXIR NANYA
7553 #define MEZZA ELPIDA
7554
7555
7556
7557
7558 #define UCODE_ROM_START_ADDRESS 0x1b800
7559 #define UCODE_SIGNATURE 0x4375434d
7560
7561
7562
7563 typedef struct _MCuCodeHeader
7564 {
7565 ULONG ulSignature;
7566 UCHAR ucRevision;
7567 UCHAR ucChecksum;
7568 UCHAR ucReserved1;
7569 UCHAR ucReserved2;
7570 USHORT usParametersLength;
7571 USHORT usUCodeLength;
7572 USHORT usReserved1;
7573 USHORT usReserved2;
7574 } MCuCodeHeader;
7575
7576
7577
7578 #define ATOM_MAX_NUMBER_OF_VRAM_MODULE 16
7579
7580 #define ATOM_VRAM_MODULE_MEMORY_VENDOR_ID_MASK 0xF
7581 typedef struct _ATOM_VRAM_MODULE_V1
7582 {
7583 ULONG ulReserved;
7584 USHORT usEMRSValue;
7585 USHORT usMRSValue;
7586 USHORT usReserved;
7587 UCHAR ucExtMemoryID;
7588 UCHAR ucMemoryType;
7589 UCHAR ucMemoryVenderID;
7590 UCHAR ucMemoryDeviceCfg;
7591 UCHAR ucRow;
7592 UCHAR ucColumn;
7593 UCHAR ucBank;
7594 UCHAR ucRank;
7595 UCHAR ucChannelNum;
7596 UCHAR ucChannelConfig;
7597 UCHAR ucDefaultMVDDQ_ID;
7598 UCHAR ucDefaultMVDDC_ID;
7599 UCHAR ucReserved[2];
7600 }ATOM_VRAM_MODULE_V1;
7601
7602
7603 typedef struct _ATOM_VRAM_MODULE_V2
7604 {
7605 ULONG ulReserved;
7606 ULONG ulFlags;
7607 ULONG ulEngineClock;
7608 ULONG ulMemoryClock;
7609 USHORT usEMRS2Value;
7610 USHORT usEMRS3Value;
7611 USHORT usEMRSValue;
7612 USHORT usMRSValue;
7613 USHORT usReserved;
7614 UCHAR ucExtMemoryID;
7615 UCHAR ucMemoryType;
7616 UCHAR ucMemoryVenderID;
7617 UCHAR ucMemoryDeviceCfg;
7618 UCHAR ucRow;
7619 UCHAR ucColumn;
7620 UCHAR ucBank;
7621 UCHAR ucRank;
7622 UCHAR ucChannelNum;
7623 UCHAR ucChannelConfig;
7624 UCHAR ucDefaultMVDDQ_ID;
7625 UCHAR ucDefaultMVDDC_ID;
7626 UCHAR ucRefreshRateFactor;
7627 UCHAR ucReserved[3];
7628 }ATOM_VRAM_MODULE_V2;
7629
7630
7631 typedef struct _ATOM_MEMORY_TIMING_FORMAT
7632 {
7633 ULONG ulClkRange;
7634 union{
7635 USHORT usMRS;
7636 USHORT usDDR3_MR0;
7637 };
7638 union{
7639 USHORT usEMRS;
7640 USHORT usDDR3_MR1;
7641 };
7642 UCHAR ucCL;
7643 UCHAR ucWL;
7644 UCHAR uctRAS;
7645 UCHAR uctRC;
7646 UCHAR uctRFC;
7647 UCHAR uctRCDR;
7648 UCHAR uctRCDW;
7649 UCHAR uctRP;
7650 UCHAR uctRRD;
7651 UCHAR uctWR;
7652 UCHAR uctWTR;
7653 UCHAR uctPDIX;
7654 UCHAR uctFAW;
7655 UCHAR uctAOND;
7656 union
7657 {
7658 struct {
7659 UCHAR ucflag;
7660 UCHAR ucReserved;
7661 };
7662 USHORT usDDR3_MR2;
7663 };
7664 }ATOM_MEMORY_TIMING_FORMAT;
7665
7666
7667 typedef struct _ATOM_MEMORY_TIMING_FORMAT_V1
7668 {
7669 ULONG ulClkRange;
7670 USHORT usMRS;
7671 USHORT usEMRS;
7672 UCHAR ucCL;
7673 UCHAR ucWL;
7674 UCHAR uctRAS;
7675 UCHAR uctRC;
7676 UCHAR uctRFC;
7677 UCHAR uctRCDR;
7678 UCHAR uctRCDW;
7679 UCHAR uctRP;
7680 UCHAR uctRRD;
7681 UCHAR uctWR;
7682 UCHAR uctWTR;
7683 UCHAR uctPDIX;
7684 UCHAR uctFAW;
7685 UCHAR uctAOND;
7686 UCHAR ucflag;
7687
7688 UCHAR uctCCDL;
7689 UCHAR uctCRCRL;
7690 UCHAR uctCRCWL;
7691 UCHAR uctCKE;
7692 UCHAR uctCKRSE;
7693 UCHAR uctCKRSX;
7694 UCHAR uctFAW32;
7695 UCHAR ucMR5lo;
7696 UCHAR ucMR5hi;
7697 UCHAR ucTerminator;
7698 }ATOM_MEMORY_TIMING_FORMAT_V1;
7699
7700
7701
7702
7703 typedef struct _ATOM_MEMORY_TIMING_FORMAT_V2
7704 {
7705 ULONG ulClkRange;
7706 USHORT usMRS;
7707 USHORT usEMRS;
7708 UCHAR ucCL;
7709 UCHAR ucWL;
7710 UCHAR uctRAS;
7711 UCHAR uctRC;
7712 UCHAR uctRFC;
7713 UCHAR uctRCDR;
7714 UCHAR uctRCDW;
7715 UCHAR uctRP;
7716 UCHAR uctRRD;
7717 UCHAR uctWR;
7718 UCHAR uctWTR;
7719 UCHAR uctPDIX;
7720 UCHAR uctFAW;
7721 UCHAR uctAOND;
7722 UCHAR ucflag;
7723
7724 UCHAR uctCCDL;
7725 UCHAR uctCRCRL;
7726 UCHAR uctCRCWL;
7727 UCHAR uctCKE;
7728 UCHAR uctCKRSE;
7729 UCHAR uctCKRSX;
7730 UCHAR uctFAW32;
7731 UCHAR ucMR4lo;
7732 UCHAR ucMR4hi;
7733 UCHAR ucMR5lo;
7734 UCHAR ucMR5hi;
7735 UCHAR ucTerminator;
7736 UCHAR ucReserved;
7737 }ATOM_MEMORY_TIMING_FORMAT_V2;
7738
7739
7740 typedef struct _ATOM_MEMORY_FORMAT
7741 {
7742 ULONG ulDllDisClock;
7743 union{
7744 USHORT usEMRS2Value;
7745 USHORT usDDR3_Reserved;
7746 };
7747 union{
7748 USHORT usEMRS3Value;
7749 USHORT usDDR3_MR3;
7750 };
7751 UCHAR ucMemoryType;
7752 UCHAR ucMemoryVenderID;
7753 UCHAR ucRow;
7754 UCHAR ucColumn;
7755 UCHAR ucBank;
7756 UCHAR ucRank;
7757 UCHAR ucBurstSize;
7758 UCHAR ucDllDisBit;
7759 UCHAR ucRefreshRateFactor;
7760 UCHAR ucDensity;
7761 UCHAR ucPreamble;
7762 UCHAR ucMemAttrib;
7763 ATOM_MEMORY_TIMING_FORMAT asMemTiming[5];
7764 }ATOM_MEMORY_FORMAT;
7765
7766
7767 typedef struct _ATOM_VRAM_MODULE_V3
7768 {
7769 ULONG ulChannelMapCfg;
7770 USHORT usSize;
7771 USHORT usDefaultMVDDQ;
7772 USHORT usDefaultMVDDC;
7773 UCHAR ucExtMemoryID;
7774 UCHAR ucChannelNum;
7775 UCHAR ucChannelSize;
7776 UCHAR ucVREFI;
7777 UCHAR ucNPL_RT;
7778 UCHAR ucFlag;
7779 ATOM_MEMORY_FORMAT asMemory;
7780 }ATOM_VRAM_MODULE_V3;
7781
7782
7783
7784 #define NPL_RT_MASK 0x0f
7785 #define BATTERY_ODT_MASK 0xc0
7786
7787 #define ATOM_VRAM_MODULE ATOM_VRAM_MODULE_V3
7788
7789 typedef struct _ATOM_VRAM_MODULE_V4
7790 {
7791 ULONG ulChannelMapCfg;
7792 USHORT usModuleSize;
7793 USHORT usPrivateReserved;
7794
7795 USHORT usReserved;
7796 UCHAR ucExtMemoryID;
7797 UCHAR ucMemoryType;
7798 UCHAR ucChannelNum;
7799 UCHAR ucChannelWidth;
7800 UCHAR ucDensity;
7801 UCHAR ucFlag;
7802 UCHAR ucMisc;
7803 UCHAR ucVREFI;
7804 UCHAR ucNPL_RT;
7805 UCHAR ucPreamble;
7806 UCHAR ucMemorySize;
7807
7808 UCHAR ucReserved[3];
7809
7810
7811 union{
7812 USHORT usEMRS2Value;
7813 USHORT usDDR3_Reserved;
7814 };
7815 union{
7816 USHORT usEMRS3Value;
7817 USHORT usDDR3_MR3;
7818 };
7819 UCHAR ucMemoryVenderID;
7820 UCHAR ucRefreshRateFactor;
7821 UCHAR ucReserved2[2];
7822 ATOM_MEMORY_TIMING_FORMAT asMemTiming[5];
7823 }ATOM_VRAM_MODULE_V4;
7824
7825 #define VRAM_MODULE_V4_MISC_RANK_MASK 0x3
7826 #define VRAM_MODULE_V4_MISC_DUAL_RANK 0x1
7827 #define VRAM_MODULE_V4_MISC_BL_MASK 0x4
7828 #define VRAM_MODULE_V4_MISC_BL8 0x4
7829 #define VRAM_MODULE_V4_MISC_DUAL_CS 0x10
7830
7831 typedef struct _ATOM_VRAM_MODULE_V5
7832 {
7833 ULONG ulChannelMapCfg;
7834 USHORT usModuleSize;
7835 USHORT usPrivateReserved;
7836
7837 USHORT usReserved;
7838 UCHAR ucExtMemoryID;
7839 UCHAR ucMemoryType;
7840 UCHAR ucChannelNum;
7841 UCHAR ucChannelWidth;
7842 UCHAR ucDensity;
7843 UCHAR ucFlag;
7844 UCHAR ucMisc;
7845 UCHAR ucVREFI;
7846 UCHAR ucNPL_RT;
7847 UCHAR ucPreamble;
7848 UCHAR ucMemorySize;
7849
7850 UCHAR ucReserved[3];
7851
7852
7853 USHORT usEMRS2Value;
7854 USHORT usEMRS3Value;
7855 UCHAR ucMemoryVenderID;
7856 UCHAR ucRefreshRateFactor;
7857 UCHAR ucFIFODepth;
7858 UCHAR ucCDR_Bandwidth;
7859 ATOM_MEMORY_TIMING_FORMAT_V1 asMemTiming[5];
7860 }ATOM_VRAM_MODULE_V5;
7861
7862
7863 typedef struct _ATOM_VRAM_MODULE_V6
7864 {
7865 ULONG ulChannelMapCfg;
7866 USHORT usModuleSize;
7867 USHORT usPrivateReserved;
7868
7869 USHORT usReserved;
7870 UCHAR ucExtMemoryID;
7871 UCHAR ucMemoryType;
7872 UCHAR ucChannelNum;
7873 UCHAR ucChannelWidth;
7874 UCHAR ucDensity;
7875 UCHAR ucFlag;
7876 UCHAR ucMisc;
7877 UCHAR ucVREFI;
7878 UCHAR ucNPL_RT;
7879 UCHAR ucPreamble;
7880 UCHAR ucMemorySize;
7881
7882 UCHAR ucReserved[3];
7883
7884
7885 USHORT usEMRS2Value;
7886 USHORT usEMRS3Value;
7887 UCHAR ucMemoryVenderID;
7888 UCHAR ucRefreshRateFactor;
7889 UCHAR ucFIFODepth;
7890 UCHAR ucCDR_Bandwidth;
7891 ATOM_MEMORY_TIMING_FORMAT_V2 asMemTiming[5];
7892 }ATOM_VRAM_MODULE_V6;
7893
7894 typedef struct _ATOM_VRAM_MODULE_V7
7895 {
7896
7897 ULONG ulChannelMapCfg;
7898 USHORT usModuleSize;
7899 USHORT usPrivateReserved;
7900 USHORT usEnableChannels;
7901 UCHAR ucExtMemoryID;
7902 UCHAR ucMemoryType;
7903 UCHAR ucChannelNum;
7904 UCHAR ucChannelWidth;
7905 UCHAR ucDensity;
7906 UCHAR ucReserve;
7907 UCHAR ucMisc;
7908 UCHAR ucVREFI;
7909 UCHAR ucNPL_RT;
7910 UCHAR ucPreamble;
7911 UCHAR ucMemorySize;
7912 USHORT usSEQSettingOffset;
7913 UCHAR ucReserved;
7914
7915 USHORT usEMRS2Value;
7916 USHORT usEMRS3Value;
7917 UCHAR ucMemoryVenderID;
7918 UCHAR ucRefreshRateFactor;
7919 UCHAR ucFIFODepth;
7920 UCHAR ucCDR_Bandwidth;
7921 char strMemPNString[20];
7922 }ATOM_VRAM_MODULE_V7;
7923
7924
7925 typedef struct _ATOM_VRAM_MODULE_V8
7926 {
7927
7928 ULONG ulChannelMapCfg;
7929 USHORT usModuleSize;
7930 USHORT usMcRamCfg;
7931 USHORT usEnableChannels;
7932 UCHAR ucExtMemoryID;
7933 UCHAR ucMemoryType;
7934 UCHAR ucChannelNum;
7935 UCHAR ucChannelWidth;
7936 UCHAR ucDensity;
7937 UCHAR ucBankCol;
7938 UCHAR ucMisc;
7939 UCHAR ucVREFI;
7940 USHORT usReserved;
7941 USHORT usMemorySize;
7942 UCHAR ucMcTunningSetId;
7943 UCHAR ucRowNum;
7944
7945 USHORT usEMRS2Value;
7946 USHORT usEMRS3Value;
7947 UCHAR ucMemoryVenderID;
7948 UCHAR ucRefreshRateFactor;
7949 UCHAR ucFIFODepth;
7950 UCHAR ucCDR_Bandwidth;
7951
7952 ULONG ulChannelMapCfg1;
7953 ULONG ulBankMapCfg;
7954 ULONG ulReserved;
7955 char strMemPNString[20];
7956 }ATOM_VRAM_MODULE_V8;
7957
7958
7959 typedef struct _ATOM_VRAM_INFO_V2
7960 {
7961 ATOM_COMMON_TABLE_HEADER sHeader;
7962 UCHAR ucNumOfVRAMModule;
7963 ATOM_VRAM_MODULE aVramInfo[ATOM_MAX_NUMBER_OF_VRAM_MODULE];
7964 }ATOM_VRAM_INFO_V2;
7965
7966 typedef struct _ATOM_VRAM_INFO_V3
7967 {
7968 ATOM_COMMON_TABLE_HEADER sHeader;
7969 USHORT usMemAdjustTblOffset;
7970 USHORT usMemClkPatchTblOffset;
7971 USHORT usRerseved;
7972 UCHAR aVID_PinsShift[9];
7973 UCHAR ucNumOfVRAMModule;
7974 ATOM_VRAM_MODULE aVramInfo[ATOM_MAX_NUMBER_OF_VRAM_MODULE];
7975 ATOM_INIT_REG_BLOCK asMemPatch;
7976
7977 }ATOM_VRAM_INFO_V3;
7978
7979 #define ATOM_VRAM_INFO_LAST ATOM_VRAM_INFO_V3
7980
7981 typedef struct _ATOM_VRAM_INFO_V4
7982 {
7983 ATOM_COMMON_TABLE_HEADER sHeader;
7984 USHORT usMemAdjustTblOffset;
7985 USHORT usMemClkPatchTblOffset;
7986 USHORT usRerseved;
7987 UCHAR ucMemDQ7_0ByteRemap;
7988 ULONG ulMemDQ7_0BitRemap;
7989 UCHAR ucReservde[4];
7990 UCHAR ucNumOfVRAMModule;
7991 ATOM_VRAM_MODULE_V4 aVramInfo[ATOM_MAX_NUMBER_OF_VRAM_MODULE];
7992 ATOM_INIT_REG_BLOCK asMemPatch;
7993 }ATOM_VRAM_INFO_V4;
7994
7995 typedef struct _ATOM_VRAM_INFO_HEADER_V2_1
7996 {
7997 ATOM_COMMON_TABLE_HEADER sHeader;
7998 USHORT usMemAdjustTblOffset;
7999 USHORT usMemClkPatchTblOffset;
8000 USHORT usPerBytePresetOffset;
8001 USHORT usReserved[3];
8002 UCHAR ucNumOfVRAMModule;
8003 UCHAR ucMemoryClkPatchTblVer;
8004 UCHAR ucVramModuleVer;
8005 UCHAR ucReserved;
8006 ATOM_VRAM_MODULE_V7 aVramInfo[ATOM_MAX_NUMBER_OF_VRAM_MODULE];
8007 }ATOM_VRAM_INFO_HEADER_V2_1;
8008
8009 typedef struct _ATOM_VRAM_INFO_HEADER_V2_2
8010 {
8011 ATOM_COMMON_TABLE_HEADER sHeader;
8012 USHORT usMemAdjustTblOffset;
8013 USHORT usMemClkPatchTblOffset;
8014 USHORT usMcAdjustPerTileTblOffset;
8015 USHORT usMcPhyInitTableOffset;
8016 USHORT usDramDataRemapTblOffset;
8017 USHORT usReserved1;
8018 UCHAR ucNumOfVRAMModule;
8019 UCHAR ucMemoryClkPatchTblVer;
8020 UCHAR ucVramModuleVer;
8021 UCHAR ucMcPhyTileNum;
8022 ATOM_VRAM_MODULE_V8 aVramInfo[ATOM_MAX_NUMBER_OF_VRAM_MODULE];
8023 }ATOM_VRAM_INFO_HEADER_V2_2;
8024
8025
8026 typedef struct _ATOM_DRAM_DATA_REMAP
8027 {
8028 UCHAR ucByteRemapCh0;
8029 UCHAR ucByteRemapCh1;
8030 ULONG ulByte0BitRemapCh0;
8031 ULONG ulByte1BitRemapCh0;
8032 ULONG ulByte2BitRemapCh0;
8033 ULONG ulByte3BitRemapCh0;
8034 ULONG ulByte0BitRemapCh1;
8035 ULONG ulByte1BitRemapCh1;
8036 ULONG ulByte2BitRemapCh1;
8037 ULONG ulByte3BitRemapCh1;
8038 }ATOM_DRAM_DATA_REMAP;
8039
8040 typedef struct _ATOM_VRAM_GPIO_DETECTION_INFO
8041 {
8042 ATOM_COMMON_TABLE_HEADER sHeader;
8043 UCHAR aVID_PinsShift[9];
8044 }ATOM_VRAM_GPIO_DETECTION_INFO;
8045
8046
8047 typedef struct _ATOM_MEMORY_TRAINING_INFO
8048 {
8049 ATOM_COMMON_TABLE_HEADER sHeader;
8050 UCHAR ucTrainingLoop;
8051 UCHAR ucReserved[3];
8052 ATOM_INIT_REG_BLOCK asMemTrainingSetting;
8053 }ATOM_MEMORY_TRAINING_INFO;
8054
8055
8056 typedef struct _ATOM_MEMORY_TRAINING_INFO_V3_1
8057 {
8058 ATOM_COMMON_TABLE_HEADER sHeader;
8059 ULONG ulMCUcodeVersion;
8060 USHORT usMCIOInitLen;
8061 USHORT usMCUcodeLen;
8062 USHORT usMCIORegInitOffset;
8063 USHORT usMCUcodeOffset;
8064 }ATOM_MEMORY_TRAINING_INFO_V3_1;
8065
8066
8067 typedef struct SW_I2C_CNTL_DATA_PARAMETERS
8068 {
8069 UCHAR ucControl;
8070 UCHAR ucData;
8071 UCHAR ucSatus;
8072 UCHAR ucTemp;
8073 } SW_I2C_CNTL_DATA_PARAMETERS;
8074
8075 #define SW_I2C_CNTL_DATA_PS_ALLOCATION SW_I2C_CNTL_DATA_PARAMETERS
8076
8077 typedef struct _SW_I2C_IO_DATA_PARAMETERS
8078 {
8079 USHORT GPIO_Info;
8080 UCHAR ucAct;
8081 UCHAR ucData;
8082 } SW_I2C_IO_DATA_PARAMETERS;
8083
8084 #define SW_I2C_IO_DATA_PS_ALLOCATION SW_I2C_IO_DATA_PARAMETERS
8085
8086
8087 #define SW_I2C_IO_RESET 0
8088 #define SW_I2C_IO_GET 1
8089 #define SW_I2C_IO_DRIVE 2
8090 #define SW_I2C_IO_SET 3
8091 #define SW_I2C_IO_START 4
8092
8093 #define SW_I2C_IO_CLOCK 0
8094 #define SW_I2C_IO_DATA 0x80
8095
8096 #define SW_I2C_IO_ZERO 0
8097 #define SW_I2C_IO_ONE 0x100
8098
8099 #define SW_I2C_CNTL_READ 0
8100 #define SW_I2C_CNTL_WRITE 1
8101 #define SW_I2C_CNTL_START 2
8102 #define SW_I2C_CNTL_STOP 3
8103 #define SW_I2C_CNTL_OPEN 4
8104 #define SW_I2C_CNTL_CLOSE 5
8105 #define SW_I2C_CNTL_WRITE1BIT 6
8106
8107
8108 #define VESA_OEM_PRODUCT_REV '01.00'
8109 #define VESA_MODE_ATTRIBUTE_MODE_SUPPORT 0xBB
8110 #define VESA_MODE_WIN_ATTRIBUTE 7
8111 #define VESA_WIN_SIZE 64
8112
8113 typedef struct _PTR_32_BIT_STRUCTURE
8114 {
8115 USHORT Offset16;
8116 USHORT Segment16;
8117 } PTR_32_BIT_STRUCTURE;
8118
8119 typedef union _PTR_32_BIT_UNION
8120 {
8121 PTR_32_BIT_STRUCTURE SegmentOffset;
8122 ULONG Ptr32_Bit;
8123 } PTR_32_BIT_UNION;
8124
8125 typedef struct _VBE_1_2_INFO_BLOCK_UPDATABLE
8126 {
8127 UCHAR VbeSignature[4];
8128 USHORT VbeVersion;
8129 PTR_32_BIT_UNION OemStringPtr;
8130 UCHAR Capabilities[4];
8131 PTR_32_BIT_UNION VideoModePtr;
8132 USHORT TotalMemory;
8133 } VBE_1_2_INFO_BLOCK_UPDATABLE;
8134
8135
8136 typedef struct _VBE_2_0_INFO_BLOCK_UPDATABLE
8137 {
8138 VBE_1_2_INFO_BLOCK_UPDATABLE CommonBlock;
8139 USHORT OemSoftRev;
8140 PTR_32_BIT_UNION OemVendorNamePtr;
8141 PTR_32_BIT_UNION OemProductNamePtr;
8142 PTR_32_BIT_UNION OemProductRevPtr;
8143 } VBE_2_0_INFO_BLOCK_UPDATABLE;
8144
8145 typedef union _VBE_VERSION_UNION
8146 {
8147 VBE_2_0_INFO_BLOCK_UPDATABLE VBE_2_0_InfoBlock;
8148 VBE_1_2_INFO_BLOCK_UPDATABLE VBE_1_2_InfoBlock;
8149 } VBE_VERSION_UNION;
8150
8151 typedef struct _VBE_INFO_BLOCK
8152 {
8153 VBE_VERSION_UNION UpdatableVBE_Info;
8154 UCHAR Reserved[222];
8155 UCHAR OemData[256];
8156 } VBE_INFO_BLOCK;
8157
8158 typedef struct _VBE_FP_INFO
8159 {
8160 USHORT HSize;
8161 USHORT VSize;
8162 USHORT FPType;
8163 UCHAR RedBPP;
8164 UCHAR GreenBPP;
8165 UCHAR BlueBPP;
8166 UCHAR ReservedBPP;
8167 ULONG RsvdOffScrnMemSize;
8168 ULONG RsvdOffScrnMEmPtr;
8169 UCHAR Reserved[14];
8170 } VBE_FP_INFO;
8171
8172 typedef struct _VESA_MODE_INFO_BLOCK
8173 {
8174
8175 USHORT ModeAttributes;
8176 UCHAR WinAAttributes;
8177 UCHAR WinBAttributes;
8178 USHORT WinGranularity;
8179 USHORT WinSize;
8180 USHORT WinASegment;
8181 USHORT WinBSegment;
8182 ULONG WinFuncPtr;
8183 USHORT BytesPerScanLine;
8184
8185
8186 USHORT XResolution;
8187 USHORT YResolution;
8188 UCHAR XCharSize;
8189 UCHAR YCharSize;
8190 UCHAR NumberOfPlanes;
8191 UCHAR BitsPerPixel;
8192 UCHAR NumberOfBanks;
8193 UCHAR MemoryModel;
8194 UCHAR BankSize;
8195 UCHAR NumberOfImagePages;
8196 UCHAR ReservedForPageFunction;
8197
8198
8199 UCHAR RedMaskSize;
8200 UCHAR RedFieldPosition;
8201 UCHAR GreenMaskSize;
8202 UCHAR GreenFieldPosition;
8203 UCHAR BlueMaskSize;
8204 UCHAR BlueFieldPosition;
8205 UCHAR RsvdMaskSize;
8206 UCHAR RsvdFieldPosition;
8207 UCHAR DirectColorModeInfo;
8208
8209
8210 ULONG PhysBasePtr;
8211 ULONG Reserved_1;
8212 USHORT Reserved_2;
8213
8214
8215 USHORT LinBytesPerScanLine;
8216 UCHAR BnkNumberOfImagePages;
8217 UCHAR LinNumberOfImagPages;
8218 UCHAR LinRedMaskSize;
8219 UCHAR LinRedFieldPosition;
8220 UCHAR LinGreenMaskSize;
8221 UCHAR LinGreenFieldPosition;
8222 UCHAR LinBlueMaskSize;
8223 UCHAR LinBlueFieldPosition;
8224 UCHAR LinRsvdMaskSize;
8225 UCHAR LinRsvdFieldPosition;
8226 ULONG MaxPixelClock;
8227 UCHAR Reserved;
8228 } VESA_MODE_INFO_BLOCK;
8229
8230
8231 #define ATOM_BIOS_EXTENDED_FUNCTION_CODE 0xA0
8232 #define ATOM_BIOS_FUNCTION_COP_MODE 0x00
8233 #define ATOM_BIOS_FUNCTION_SHORT_QUERY1 0x04
8234 #define ATOM_BIOS_FUNCTION_SHORT_QUERY2 0x05
8235 #define ATOM_BIOS_FUNCTION_SHORT_QUERY3 0x06
8236 #define ATOM_BIOS_FUNCTION_GET_DDC 0x0B
8237 #define ATOM_BIOS_FUNCTION_ASIC_DSTATE 0x0E
8238 #define ATOM_BIOS_FUNCTION_DEBUG_PLAY 0x0F
8239 #define ATOM_BIOS_FUNCTION_STV_STD 0x16
8240 #define ATOM_BIOS_FUNCTION_DEVICE_DET 0x17
8241 #define ATOM_BIOS_FUNCTION_DEVICE_SWITCH 0x18
8242
8243 #define ATOM_BIOS_FUNCTION_PANEL_CONTROL 0x82
8244 #define ATOM_BIOS_FUNCTION_OLD_DEVICE_DET 0x83
8245 #define ATOM_BIOS_FUNCTION_OLD_DEVICE_SWITCH 0x84
8246 #define ATOM_BIOS_FUNCTION_HW_ICON 0x8A
8247 #define ATOM_BIOS_FUNCTION_SET_CMOS 0x8B
8248 #define SUB_FUNCTION_UPDATE_DISPLAY_INFO 0x8000
8249 #define SUB_FUNCTION_UPDATE_EXPANSION_INFO 0x8100
8250
8251 #define ATOM_BIOS_FUNCTION_DISPLAY_INFO 0x8D
8252 #define ATOM_BIOS_FUNCTION_DEVICE_ON_OFF 0x8E
8253 #define ATOM_BIOS_FUNCTION_VIDEO_STATE 0x8F
8254 #define ATOM_SUB_FUNCTION_GET_CRITICAL_STATE 0x0300
8255 #define ATOM_SUB_FUNCTION_GET_LIDSTATE 0x0700
8256 #define ATOM_SUB_FUNCTION_THERMAL_STATE_NOTICE 0x1400
8257 #define ATOM_SUB_FUNCTION_CRITICAL_STATE_NOTICE 0x8300
8258 #define ATOM_SUB_FUNCTION_SET_LIDSTATE 0x8500
8259 #define ATOM_SUB_FUNCTION_GET_REQ_DISPLAY_FROM_SBIOS_MODE 0x8900
8260 #define ATOM_SUB_FUNCTION_INFORM_ADC_SUPPORT 0x9400
8261
8262
8263 #define ATOM_BIOS_FUNCTION_VESA_DPMS 0x4F10
8264 #define ATOM_SUB_FUNCTION_SET_DPMS 0x0001
8265 #define ATOM_SUB_FUNCTION_GET_DPMS 0x0002
8266 #define ATOM_PARAMETER_VESA_DPMS_ON 0x0000
8267 #define ATOM_PARAMETER_VESA_DPMS_STANDBY 0x0100
8268 #define ATOM_PARAMETER_VESA_DPMS_SUSPEND 0x0200
8269 #define ATOM_PARAMETER_VESA_DPMS_OFF 0x0400
8270 #define ATOM_PARAMETER_VESA_DPMS_REDUCE_ON 0x0800
8271
8272 #define ATOM_BIOS_RETURN_CODE_MASK 0x0000FF00L
8273 #define ATOM_BIOS_REG_HIGH_MASK 0x0000FF00L
8274 #define ATOM_BIOS_REG_LOW_MASK 0x000000FFL
8275
8276
8277
8278
8279 typedef struct _ASIC_TRANSMITTER_INFO
8280 {
8281 USHORT usTransmitterObjId;
8282 USHORT usSupportDevice;
8283 UCHAR ucTransmitterCmdTblId;
8284 UCHAR ucConfig;
8285 UCHAR ucEncoderID;
8286 UCHAR ucOptionEncoderID;
8287 UCHAR uc2ndEncoderID;
8288 UCHAR ucReserved;
8289 }ASIC_TRANSMITTER_INFO;
8290
8291 #define ASIC_TRANSMITTER_INFO_CONFIG__DVO_SDR_MODE 0x01
8292 #define ASIC_TRANSMITTER_INFO_CONFIG__COHERENT_MODE 0x02
8293 #define ASIC_TRANSMITTER_INFO_CONFIG__ENCODEROBJ_ID_MASK 0xc4
8294 #define ASIC_TRANSMITTER_INFO_CONFIG__ENCODER_A 0x00
8295 #define ASIC_TRANSMITTER_INFO_CONFIG__ENCODER_B 0x04
8296 #define ASIC_TRANSMITTER_INFO_CONFIG__ENCODER_C 0x40
8297 #define ASIC_TRANSMITTER_INFO_CONFIG__ENCODER_D 0x44
8298 #define ASIC_TRANSMITTER_INFO_CONFIG__ENCODER_E 0x80
8299 #define ASIC_TRANSMITTER_INFO_CONFIG__ENCODER_F 0x84
8300
8301 typedef struct _ASIC_ENCODER_INFO
8302 {
8303 UCHAR ucEncoderID;
8304 UCHAR ucEncoderConfig;
8305 USHORT usEncoderCmdTblId;
8306 }ASIC_ENCODER_INFO;
8307
8308 typedef struct _ATOM_DISP_OUT_INFO
8309 {
8310 ATOM_COMMON_TABLE_HEADER sHeader;
8311 USHORT ptrTransmitterInfo;
8312 USHORT ptrEncoderInfo;
8313 ASIC_TRANSMITTER_INFO asTransmitterInfo[1];
8314 ASIC_ENCODER_INFO asEncoderInfo[1];
8315 }ATOM_DISP_OUT_INFO;
8316
8317
8318 typedef struct _ATOM_DISP_OUT_INFO_V2
8319 {
8320 ATOM_COMMON_TABLE_HEADER sHeader;
8321 USHORT ptrTransmitterInfo;
8322 USHORT ptrEncoderInfo;
8323 USHORT ptrMainCallParserFar;
8324 ASIC_TRANSMITTER_INFO asTransmitterInfo[1];
8325 ASIC_ENCODER_INFO asEncoderInfo[1];
8326 }ATOM_DISP_OUT_INFO_V2;
8327
8328
8329 typedef struct _ATOM_DISP_CLOCK_ID {
8330 UCHAR ucPpllId;
8331 UCHAR ucPpllAttribute;
8332 }ATOM_DISP_CLOCK_ID;
8333
8334
8335 #define CLOCK_SOURCE_SHAREABLE 0x01
8336 #define CLOCK_SOURCE_DP_MODE 0x02
8337 #define CLOCK_SOURCE_NONE_DP_MODE 0x04
8338
8339
8340 typedef struct _ASIC_TRANSMITTER_INFO_V2
8341 {
8342 USHORT usTransmitterObjId;
8343 USHORT usDispClkIdOffset;
8344 UCHAR ucTransmitterCmdTblId;
8345 UCHAR ucConfig;
8346 UCHAR ucEncoderID;
8347 UCHAR ucOptionEncoderID;
8348 UCHAR uc2ndEncoderID;
8349 UCHAR ucReserved;
8350 }ASIC_TRANSMITTER_INFO_V2;
8351
8352 typedef struct _ATOM_DISP_OUT_INFO_V3
8353 {
8354 ATOM_COMMON_TABLE_HEADER sHeader;
8355 USHORT ptrTransmitterInfo;
8356 USHORT ptrEncoderInfo;
8357 USHORT ptrMainCallParserFar;
8358 USHORT usReserved;
8359 UCHAR ucDCERevision;
8360 UCHAR ucMaxDispEngineNum;
8361 UCHAR ucMaxActiveDispEngineNum;
8362 UCHAR ucMaxPPLLNum;
8363 UCHAR ucCoreRefClkSource;
8364 UCHAR ucDispCaps;
8365 UCHAR ucReserved[2];
8366 ASIC_TRANSMITTER_INFO_V2 asTransmitterInfo[1];
8367 }ATOM_DISP_OUT_INFO_V3;
8368
8369
8370 #define DISPLAY_CAPS__DP_PCLK_FROM_PPLL 0x01
8371 #define DISPLAY_CAPS__FORCE_DISPDEV_CONNECTED 0x02
8372
8373 typedef enum CORE_REF_CLK_SOURCE{
8374 CLOCK_SRC_XTALIN=0,
8375 CLOCK_SRC_XO_IN=1,
8376 CLOCK_SRC_XO_IN2=2,
8377 }CORE_REF_CLK_SOURCE;
8378
8379
8380 typedef struct _ATOM_DISPLAY_DEVICE_PRIORITY_INFO
8381 {
8382 ATOM_COMMON_TABLE_HEADER sHeader;
8383 USHORT asDevicePriority[16];
8384 }ATOM_DISPLAY_DEVICE_PRIORITY_INFO;
8385
8386
8387 typedef struct _PROCESS_AUX_CHANNEL_TRANSACTION_PARAMETERS
8388 {
8389 USHORT lpAuxRequest;
8390 USHORT lpDataOut;
8391 UCHAR ucChannelID;
8392 union
8393 {
8394 UCHAR ucReplyStatus;
8395 UCHAR ucDelay;
8396 };
8397 UCHAR ucDataOutLen;
8398 UCHAR ucReserved;
8399 }PROCESS_AUX_CHANNEL_TRANSACTION_PARAMETERS;
8400
8401
8402 typedef struct _PROCESS_AUX_CHANNEL_TRANSACTION_PARAMETERS_V2
8403 {
8404 USHORT lpAuxRequest;
8405 USHORT lpDataOut;
8406 UCHAR ucChannelID;
8407 union
8408 {
8409 UCHAR ucReplyStatus;
8410 UCHAR ucDelay;
8411 };
8412 UCHAR ucDataOutLen;
8413 UCHAR ucHPD_ID;
8414 }PROCESS_AUX_CHANNEL_TRANSACTION_PARAMETERS_V2;
8415
8416 #define PROCESS_AUX_CHANNEL_TRANSACTION_PS_ALLOCATION PROCESS_AUX_CHANNEL_TRANSACTION_PARAMETERS
8417
8418
8419
8420 typedef struct _DP_ENCODER_SERVICE_PARAMETERS
8421 {
8422 USHORT ucLinkClock;
8423 union
8424 {
8425 UCHAR ucConfig;
8426 UCHAR ucI2cId;
8427 };
8428 UCHAR ucAction;
8429 UCHAR ucStatus;
8430 UCHAR ucLaneNum;
8431 UCHAR ucReserved[2];
8432 }DP_ENCODER_SERVICE_PARAMETERS;
8433
8434
8435 #define ATOM_DP_ACTION_GET_SINK_TYPE 0x01
8436
8437 #define DP_ENCODER_SERVICE_PS_ALLOCATION WRITE_ONE_BYTE_HW_I2C_DATA_PARAMETERS
8438
8439
8440 typedef struct _DP_ENCODER_SERVICE_PARAMETERS_V2
8441 {
8442 USHORT usExtEncoderObjId;
8443 UCHAR ucAuxId;
8444 UCHAR ucAction;
8445 UCHAR ucSinkType;
8446 UCHAR ucHPDId;
8447 UCHAR ucReserved[2];
8448 }DP_ENCODER_SERVICE_PARAMETERS_V2;
8449
8450 typedef struct _DP_ENCODER_SERVICE_PS_ALLOCATION_V2
8451 {
8452 DP_ENCODER_SERVICE_PARAMETERS_V2 asDPServiceParam;
8453 PROCESS_AUX_CHANNEL_TRANSACTION_PARAMETERS_V2 asAuxParam;
8454 }DP_ENCODER_SERVICE_PS_ALLOCATION_V2;
8455
8456
8457 #define DP_SERVICE_V2_ACTION_GET_SINK_TYPE 0x01
8458 #define DP_SERVICE_V2_ACTION_DET_LCD_CONNECTION 0x02
8459
8460
8461
8462 #define DPCD_SET_LINKRATE_LANENUM_PATTERN1_TBL_ADDR ATOM_DP_TRAINING_TBL_ADDR
8463 #define DPCD_SET_SS_CNTL_TBL_ADDR (ATOM_DP_TRAINING_TBL_ADDR + 8 )
8464 #define DPCD_SET_LANE_VSWING_PREEMP_TBL_ADDR (ATOM_DP_TRAINING_TBL_ADDR + 16 )
8465 #define DPCD_SET_TRAINING_PATTERN0_TBL_ADDR (ATOM_DP_TRAINING_TBL_ADDR + 24 )
8466 #define DPCD_SET_TRAINING_PATTERN2_TBL_ADDR (ATOM_DP_TRAINING_TBL_ADDR + 32)
8467 #define DPCD_GET_LINKRATE_LANENUM_SS_TBL_ADDR (ATOM_DP_TRAINING_TBL_ADDR + 40)
8468 #define DPCD_GET_LANE_STATUS_ADJUST_TBL_ADDR (ATOM_DP_TRAINING_TBL_ADDR + 48)
8469 #define DP_I2C_AUX_DDC_WRITE_START_TBL_ADDR (ATOM_DP_TRAINING_TBL_ADDR + 60)
8470 #define DP_I2C_AUX_DDC_WRITE_TBL_ADDR (ATOM_DP_TRAINING_TBL_ADDR + 64)
8471 #define DP_I2C_AUX_DDC_READ_START_TBL_ADDR (ATOM_DP_TRAINING_TBL_ADDR + 72)
8472 #define DP_I2C_AUX_DDC_READ_TBL_ADDR (ATOM_DP_TRAINING_TBL_ADDR + 76)
8473 #define DP_I2C_AUX_DDC_WRITE_END_TBL_ADDR (ATOM_DP_TRAINING_TBL_ADDR + 80)
8474 #define DP_I2C_AUX_DDC_READ_END_TBL_ADDR (ATOM_DP_TRAINING_TBL_ADDR + 84)
8475
8476
8477 typedef struct _PROCESS_I2C_CHANNEL_TRANSACTION_PARAMETERS
8478 {
8479 UCHAR ucI2CSpeed;
8480 union
8481 {
8482 UCHAR ucRegIndex;
8483 UCHAR ucStatus;
8484 };
8485 USHORT lpI2CDataOut;
8486 UCHAR ucFlag;
8487 UCHAR ucTransBytes;
8488 UCHAR ucSlaveAddr;
8489 UCHAR ucLineNumber;
8490 }PROCESS_I2C_CHANNEL_TRANSACTION_PARAMETERS;
8491
8492 #define PROCESS_I2C_CHANNEL_TRANSACTION_PS_ALLOCATION PROCESS_I2C_CHANNEL_TRANSACTION_PARAMETERS
8493
8494
8495 #define HW_I2C_WRITE 1
8496 #define HW_I2C_READ 0
8497 #define I2C_2BYTE_ADDR 0x02
8498
8499
8500
8501
8502 typedef struct _ATOM_HW_MISC_OPERATION_INPUT_PARAMETER_V1_1
8503 {
8504 UCHAR ucCmd;
8505 UCHAR ucReserved[3];
8506 ULONG ulReserved;
8507 }ATOM_HW_MISC_OPERATION_INPUT_PARAMETER_V1_1;
8508
8509 typedef struct _ATOM_HW_MISC_OPERATION_OUTPUT_PARAMETER_V1_1
8510 {
8511 UCHAR ucReturnCode;
8512 UCHAR ucReserved[3];
8513 ULONG ulReserved;
8514 }ATOM_HW_MISC_OPERATION_OUTPUT_PARAMETER_V1_1;
8515
8516
8517 #define ATOM_GET_SDI_SUPPORT 0xF0
8518
8519
8520 #define ATOM_UNKNOWN_CMD 0
8521 #define ATOM_FEATURE_NOT_SUPPORTED 1
8522 #define ATOM_FEATURE_SUPPORTED 2
8523
8524 typedef struct _ATOM_HW_MISC_OPERATION_PS_ALLOCATION
8525 {
8526 ATOM_HW_MISC_OPERATION_INPUT_PARAMETER_V1_1 sInput_Output;
8527 PROCESS_I2C_CHANNEL_TRANSACTION_PARAMETERS sReserved;
8528 }ATOM_HW_MISC_OPERATION_PS_ALLOCATION;
8529
8530
8531
8532 typedef struct _SET_HWBLOCK_INSTANCE_PARAMETER_V2
8533 {
8534 UCHAR ucHWBlkInst;
8535 UCHAR ucReserved[3];
8536 }SET_HWBLOCK_INSTANCE_PARAMETER_V2;
8537
8538 #define HWBLKINST_INSTANCE_MASK 0x07
8539 #define HWBLKINST_HWBLK_MASK 0xF0
8540 #define HWBLKINST_HWBLK_SHIFT 0x04
8541
8542
8543 #define SELECT_DISP_ENGINE 0
8544 #define SELECT_DISP_PLL 1
8545 #define SELECT_DCIO_UNIPHY_LINK0 2
8546 #define SELECT_DCIO_UNIPHY_LINK1 3
8547 #define SELECT_DCIO_IMPCAL 4
8548 #define SELECT_DCIO_DIG 6
8549 #define SELECT_CRTC_PIXEL_RATE 7
8550 #define SELECT_VGA_BLK 8
8551
8552
8553 typedef struct _DIG_TRANSMITTER_INFO_HEADER_V3_1{
8554 ATOM_COMMON_TABLE_HEADER sHeader;
8555 USHORT usDPVsPreEmphSettingOffset;
8556 USHORT usPhyAnalogRegListOffset;
8557 USHORT usPhyAnalogSettingOffset;
8558 USHORT usPhyPllRegListOffset;
8559 USHORT usPhyPllSettingOffset;
8560 }DIG_TRANSMITTER_INFO_HEADER_V3_1;
8561
8562 typedef struct _DIG_TRANSMITTER_INFO_HEADER_V3_2{
8563 ATOM_COMMON_TABLE_HEADER sHeader;
8564 USHORT usDPVsPreEmphSettingOffset;
8565 USHORT usPhyAnalogRegListOffset;
8566 USHORT usPhyAnalogSettingOffset;
8567 USHORT usPhyPllRegListOffset;
8568 USHORT usPhyPllSettingOffset;
8569 USHORT usDPSSRegListOffset;
8570 USHORT usDPSSSettingOffset;
8571 }DIG_TRANSMITTER_INFO_HEADER_V3_2;
8572
8573
8574 typedef struct _DIG_TRANSMITTER_INFO_HEADER_V3_3{
8575 ATOM_COMMON_TABLE_HEADER sHeader;
8576 USHORT usDPVsPreEmphSettingOffset;
8577 USHORT usPhyAnalogRegListOffset;
8578 USHORT usPhyAnalogSettingOffset;
8579 USHORT usPhyPllRegListOffset;
8580 USHORT usPhyPllSettingOffset;
8581 USHORT usDPSSRegListOffset;
8582 USHORT usDPSSSettingOffset;
8583 USHORT usEDPVsLegacyModeOffset;
8584 USHORT useDPVsLowVdiffModeOffset;
8585 USHORT useDPVsHighVdiffModeOffset;
8586 USHORT useDPVsStretchModeOffset;
8587 USHORT useDPVsSingleVdiffModeOffset;
8588 USHORT useDPVsVariablePremModeOffset;
8589 }DIG_TRANSMITTER_INFO_HEADER_V3_3;
8590
8591
8592 typedef struct _CLOCK_CONDITION_REGESTER_INFO{
8593 USHORT usRegisterIndex;
8594 UCHAR ucStartBit;
8595 UCHAR ucEndBit;
8596 }CLOCK_CONDITION_REGESTER_INFO;
8597
8598 typedef struct _CLOCK_CONDITION_SETTING_ENTRY{
8599 USHORT usMaxClockFreq;
8600 UCHAR ucEncodeMode;
8601 UCHAR ucPhySel;
8602 ULONG ulAnalogSetting[1];
8603 }CLOCK_CONDITION_SETTING_ENTRY;
8604
8605 typedef struct _CLOCK_CONDITION_SETTING_INFO{
8606 USHORT usEntrySize;
8607 CLOCK_CONDITION_SETTING_ENTRY asClkCondSettingEntry[1];
8608 }CLOCK_CONDITION_SETTING_INFO;
8609
8610 typedef struct _PHY_CONDITION_REG_VAL{
8611 ULONG ulCondition;
8612 ULONG ulRegVal;
8613 }PHY_CONDITION_REG_VAL;
8614
8615 typedef struct _PHY_CONDITION_REG_VAL_V2{
8616 ULONG ulCondition;
8617 UCHAR ucCondition2;
8618 ULONG ulRegVal;
8619 }PHY_CONDITION_REG_VAL_V2;
8620
8621 typedef struct _PHY_CONDITION_REG_INFO{
8622 USHORT usRegIndex;
8623 USHORT usSize;
8624 PHY_CONDITION_REG_VAL asRegVal[1];
8625 }PHY_CONDITION_REG_INFO;
8626
8627 typedef struct _PHY_CONDITION_REG_INFO_V2{
8628 USHORT usRegIndex;
8629 USHORT usSize;
8630 PHY_CONDITION_REG_VAL_V2 asRegVal[1];
8631 }PHY_CONDITION_REG_INFO_V2;
8632
8633 typedef struct _PHY_ANALOG_SETTING_INFO{
8634 UCHAR ucEncodeMode;
8635 UCHAR ucPhySel;
8636 USHORT usSize;
8637 PHY_CONDITION_REG_INFO asAnalogSetting[1];
8638 }PHY_ANALOG_SETTING_INFO;
8639
8640 typedef struct _PHY_ANALOG_SETTING_INFO_V2{
8641 UCHAR ucEncodeMode;
8642 UCHAR ucPhySel;
8643 USHORT usSize;
8644 PHY_CONDITION_REG_INFO_V2 asAnalogSetting[1];
8645 }PHY_ANALOG_SETTING_INFO_V2;
8646
8647
8648 typedef struct _GFX_HAVESTING_PARAMETERS {
8649 UCHAR ucGfxBlkId;
8650 UCHAR ucReserved;
8651 UCHAR ucActiveUnitNumPerSH;
8652 UCHAR ucMaxUnitNumPerSH;
8653 } GFX_HAVESTING_PARAMETERS;
8654
8655
8656 #define GFX_HARVESTING_CU_ID 0
8657 #define GFX_HARVESTING_RB_ID 1
8658 #define GFX_HARVESTING_PRIM_ID 2
8659
8660
8661 typedef struct _VBIOS_ROM_HEADER{
8662 UCHAR PciRomSignature[2];
8663 UCHAR ucPciRomSizeIn512bytes;
8664 UCHAR ucJumpCoreMainInitBIOS;
8665 USHORT usLabelCoreMainInitBIOS;
8666 UCHAR PciReservedSpace[18];
8667 USHORT usPciDataStructureOffset;
8668 UCHAR Rsvd1d_1a[4];
8669 char strIbm[3];
8670 UCHAR CheckSum[14];
8671 UCHAR ucBiosMsgNumber;
8672 char str761295520[16];
8673 USHORT usLabelCoreVPOSTNoMode;
8674 USHORT usSpecialPostOffset;
8675 UCHAR ucSpeicalPostImageSizeIn512Bytes;
8676 UCHAR Rsved47_45[3];
8677 USHORT usROM_HeaderInformationTableOffset;
8678 UCHAR Rsved4f_4a[6];
8679 char strBuildTimeStamp[20];
8680 UCHAR ucJumpCoreXFuncFarHandler;
8681 USHORT usCoreXFuncFarHandlerOffset;
8682 UCHAR ucRsved67;
8683 UCHAR ucJumpCoreVFuncFarHandler;
8684 USHORT usCoreVFuncFarHandlerOffset;
8685 UCHAR Rsved6d_6b[3];
8686 USHORT usATOM_BIOS_MESSAGE_Offset;
8687 }VBIOS_ROM_HEADER;
8688
8689
8690
8691
8692
8693 #define MC_MISC0__MEMORY_TYPE_MASK 0xF0000000
8694 #define MC_MISC0__MEMORY_TYPE__GDDR1 0x10000000
8695 #define MC_MISC0__MEMORY_TYPE__DDR2 0x20000000
8696 #define MC_MISC0__MEMORY_TYPE__GDDR3 0x30000000
8697 #define MC_MISC0__MEMORY_TYPE__GDDR4 0x40000000
8698 #define MC_MISC0__MEMORY_TYPE__GDDR5 0x50000000
8699 #define MC_MISC0__MEMORY_TYPE__HBM 0x60000000
8700 #define MC_MISC0__MEMORY_TYPE__DDR3 0xB0000000
8701
8702 #define ATOM_MEM_TYPE_DDR_STRING "DDR"
8703 #define ATOM_MEM_TYPE_DDR2_STRING "DDR2"
8704 #define ATOM_MEM_TYPE_GDDR3_STRING "GDDR3"
8705 #define ATOM_MEM_TYPE_GDDR4_STRING "GDDR4"
8706 #define ATOM_MEM_TYPE_GDDR5_STRING "GDDR5"
8707 #define ATOM_MEM_TYPE_HBM_STRING "HBM"
8708 #define ATOM_MEM_TYPE_DDR3_STRING "DDR3"
8709
8710
8711
8712
8713
8714
8715
8716 typedef struct _ATOM_DAC_INFO
8717 {
8718 ATOM_COMMON_TABLE_HEADER sHeader;
8719 USHORT usMaxFrequency;
8720 USHORT usReserved;
8721 }ATOM_DAC_INFO;
8722
8723
8724 typedef struct _COMPASSIONATE_DATA
8725 {
8726 ATOM_COMMON_TABLE_HEADER sHeader;
8727
8728
8729 UCHAR ucDAC1_BG_Adjustment;
8730 UCHAR ucDAC1_DAC_Adjustment;
8731 USHORT usDAC1_FORCE_Data;
8732
8733 UCHAR ucDAC2_CRT2_BG_Adjustment;
8734 UCHAR ucDAC2_CRT2_DAC_Adjustment;
8735 USHORT usDAC2_CRT2_FORCE_Data;
8736 USHORT usDAC2_CRT2_MUX_RegisterIndex;
8737 UCHAR ucDAC2_CRT2_MUX_RegisterInfo;
8738 UCHAR ucDAC2_NTSC_BG_Adjustment;
8739 UCHAR ucDAC2_NTSC_DAC_Adjustment;
8740 USHORT usDAC2_TV1_FORCE_Data;
8741 USHORT usDAC2_TV1_MUX_RegisterIndex;
8742 UCHAR ucDAC2_TV1_MUX_RegisterInfo;
8743 UCHAR ucDAC2_CV_BG_Adjustment;
8744 UCHAR ucDAC2_CV_DAC_Adjustment;
8745 USHORT usDAC2_CV_FORCE_Data;
8746 USHORT usDAC2_CV_MUX_RegisterIndex;
8747 UCHAR ucDAC2_CV_MUX_RegisterInfo;
8748 UCHAR ucDAC2_PAL_BG_Adjustment;
8749 UCHAR ucDAC2_PAL_DAC_Adjustment;
8750 USHORT usDAC2_TV2_FORCE_Data;
8751 }COMPASSIONATE_DATA;
8752
8753
8754
8755
8756
8757
8758
8759
8760
8761
8762
8763
8764
8765
8766
8767
8768
8769
8770
8771
8772
8773
8774
8775
8776
8777 typedef struct _ATOM_CONNECTOR_INFO
8778 {
8779 #if ATOM_BIG_ENDIAN
8780 UCHAR bfConnectorType:4;
8781 UCHAR bfAssociatedDAC:4;
8782 #else
8783 UCHAR bfAssociatedDAC:4;
8784 UCHAR bfConnectorType:4;
8785 #endif
8786 }ATOM_CONNECTOR_INFO;
8787
8788 typedef union _ATOM_CONNECTOR_INFO_ACCESS
8789 {
8790 ATOM_CONNECTOR_INFO sbfAccess;
8791 UCHAR ucAccess;
8792 }ATOM_CONNECTOR_INFO_ACCESS;
8793
8794 typedef struct _ATOM_CONNECTOR_INFO_I2C
8795 {
8796 ATOM_CONNECTOR_INFO_ACCESS sucConnectorInfo;
8797 ATOM_I2C_ID_CONFIG_ACCESS sucI2cId;
8798 }ATOM_CONNECTOR_INFO_I2C;
8799
8800
8801 typedef struct _ATOM_SUPPORTED_DEVICES_INFO
8802 {
8803 ATOM_COMMON_TABLE_HEADER sHeader;
8804 USHORT usDeviceSupport;
8805 ATOM_CONNECTOR_INFO_I2C asConnInfo[ATOM_MAX_SUPPORTED_DEVICE_INFO];
8806 }ATOM_SUPPORTED_DEVICES_INFO;
8807
8808 #define NO_INT_SRC_MAPPED 0xFF
8809
8810 typedef struct _ATOM_CONNECTOR_INC_SRC_BITMAP
8811 {
8812 UCHAR ucIntSrcBitmap;
8813 }ATOM_CONNECTOR_INC_SRC_BITMAP;
8814
8815 typedef struct _ATOM_SUPPORTED_DEVICES_INFO_2
8816 {
8817 ATOM_COMMON_TABLE_HEADER sHeader;
8818 USHORT usDeviceSupport;
8819 ATOM_CONNECTOR_INFO_I2C asConnInfo[ATOM_MAX_SUPPORTED_DEVICE_INFO_2];
8820 ATOM_CONNECTOR_INC_SRC_BITMAP asIntSrcInfo[ATOM_MAX_SUPPORTED_DEVICE_INFO_2];
8821 }ATOM_SUPPORTED_DEVICES_INFO_2;
8822
8823 typedef struct _ATOM_SUPPORTED_DEVICES_INFO_2d1
8824 {
8825 ATOM_COMMON_TABLE_HEADER sHeader;
8826 USHORT usDeviceSupport;
8827 ATOM_CONNECTOR_INFO_I2C asConnInfo[ATOM_MAX_SUPPORTED_DEVICE];
8828 ATOM_CONNECTOR_INC_SRC_BITMAP asIntSrcInfo[ATOM_MAX_SUPPORTED_DEVICE];
8829 }ATOM_SUPPORTED_DEVICES_INFO_2d1;
8830
8831 #define ATOM_SUPPORTED_DEVICES_INFO_LAST ATOM_SUPPORTED_DEVICES_INFO_2d1
8832
8833
8834
8835 typedef struct _ATOM_MISC_CONTROL_INFO
8836 {
8837 USHORT usFrequency;
8838 UCHAR ucPLL_ChargePump;
8839 UCHAR ucPLL_DutyCycle;
8840 UCHAR ucPLL_VCO_Gain;
8841 UCHAR ucPLL_VoltageSwing;
8842 }ATOM_MISC_CONTROL_INFO;
8843
8844
8845 #define ATOM_MAX_MISC_INFO 4
8846
8847 typedef struct _ATOM_TMDS_INFO
8848 {
8849 ATOM_COMMON_TABLE_HEADER sHeader;
8850 USHORT usMaxFrequency;
8851 ATOM_MISC_CONTROL_INFO asMiscInfo[ATOM_MAX_MISC_INFO];
8852 }ATOM_TMDS_INFO;
8853
8854
8855 typedef struct _ATOM_ENCODER_ANALOG_ATTRIBUTE
8856 {
8857 UCHAR ucTVStandard;
8858 UCHAR ucPadding[1];
8859 }ATOM_ENCODER_ANALOG_ATTRIBUTE;
8860
8861 typedef struct _ATOM_ENCODER_DIGITAL_ATTRIBUTE
8862 {
8863 UCHAR ucAttribute;
8864 UCHAR ucPadding[1];
8865 }ATOM_ENCODER_DIGITAL_ATTRIBUTE;
8866
8867 typedef union _ATOM_ENCODER_ATTRIBUTE
8868 {
8869 ATOM_ENCODER_ANALOG_ATTRIBUTE sAlgAttrib;
8870 ATOM_ENCODER_DIGITAL_ATTRIBUTE sDigAttrib;
8871 }ATOM_ENCODER_ATTRIBUTE;
8872
8873
8874 typedef struct _DVO_ENCODER_CONTROL_PARAMETERS
8875 {
8876 USHORT usPixelClock;
8877 USHORT usEncoderID;
8878 UCHAR ucDeviceType;
8879 UCHAR ucAction;
8880 ATOM_ENCODER_ATTRIBUTE usDevAttr;
8881 }DVO_ENCODER_CONTROL_PARAMETERS;
8882
8883 typedef struct _DVO_ENCODER_CONTROL_PS_ALLOCATION
8884 {
8885 DVO_ENCODER_CONTROL_PARAMETERS sDVOEncoder;
8886 WRITE_ONE_BYTE_HW_I2C_DATA_PS_ALLOCATION sReserved;
8887 }DVO_ENCODER_CONTROL_PS_ALLOCATION;
8888
8889
8890 #define ATOM_XTMDS_ASIC_SI164_ID 1
8891 #define ATOM_XTMDS_ASIC_SI178_ID 2
8892 #define ATOM_XTMDS_ASIC_TFP513_ID 3
8893 #define ATOM_XTMDS_SUPPORTED_SINGLELINK 0x00000001
8894 #define ATOM_XTMDS_SUPPORTED_DUALLINK 0x00000002
8895 #define ATOM_XTMDS_MVPU_FPGA 0x00000004
8896
8897
8898 typedef struct _ATOM_XTMDS_INFO
8899 {
8900 ATOM_COMMON_TABLE_HEADER sHeader;
8901 USHORT usSingleLinkMaxFrequency;
8902 ATOM_I2C_ID_CONFIG_ACCESS sucI2cId;
8903 UCHAR ucXtransimitterID;
8904 UCHAR ucSupportedLink;
8905 UCHAR ucSequnceAlterID;
8906
8907 UCHAR ucMasterAddress;
8908 UCHAR ucSlaveAddress;
8909 }ATOM_XTMDS_INFO;
8910
8911 typedef struct _DFP_DPMS_STATUS_CHANGE_PARAMETERS
8912 {
8913 UCHAR ucEnable;
8914 UCHAR ucDevice;
8915 UCHAR ucPadding[2];
8916 }DFP_DPMS_STATUS_CHANGE_PARAMETERS;
8917
8918
8919
8920
8921 #define ATOM_PM_MISCINFO_SPLIT_CLOCK 0x00000000L
8922 #define ATOM_PM_MISCINFO_USING_MCLK_SRC 0x00000001L
8923 #define ATOM_PM_MISCINFO_USING_SCLK_SRC 0x00000002L
8924
8925 #define ATOM_PM_MISCINFO_VOLTAGE_DROP_SUPPORT 0x00000004L
8926 #define ATOM_PM_MISCINFO_VOLTAGE_DROP_ACTIVE_HIGH 0x00000008L
8927
8928 #define ATOM_PM_MISCINFO_LOAD_PERFORMANCE_EN 0x00000010L
8929
8930 #define ATOM_PM_MISCINFO_ENGINE_CLOCK_CONTRL_EN 0x00000020L
8931 #define ATOM_PM_MISCINFO_MEMORY_CLOCK_CONTRL_EN 0x00000040L
8932 #define ATOM_PM_MISCINFO_PROGRAM_VOLTAGE 0x00000080L
8933
8934 #define ATOM_PM_MISCINFO_ASIC_REDUCED_SPEED_SCLK_EN 0x00000100L
8935 #define ATOM_PM_MISCINFO_ASIC_DYNAMIC_VOLTAGE_EN 0x00000200L
8936 #define ATOM_PM_MISCINFO_ASIC_SLEEP_MODE_EN 0x00000400L
8937 #define ATOM_PM_MISCINFO_LOAD_BALANCE_EN 0x00000800L
8938 #define ATOM_PM_MISCINFO_DEFAULT_DC_STATE_ENTRY_TRUE 0x00001000L
8939 #define ATOM_PM_MISCINFO_DEFAULT_LOW_DC_STATE_ENTRY_TRUE 0x00002000L
8940 #define ATOM_PM_MISCINFO_LOW_LCD_REFRESH_RATE 0x00004000L
8941
8942 #define ATOM_PM_MISCINFO_DRIVER_DEFAULT_MODE 0x00008000L
8943 #define ATOM_PM_MISCINFO_OVER_CLOCK_MODE 0x00010000L
8944 #define ATOM_PM_MISCINFO_OVER_DRIVE_MODE 0x00020000L
8945 #define ATOM_PM_MISCINFO_POWER_SAVING_MODE 0x00040000L
8946 #define ATOM_PM_MISCINFO_THERMAL_DIODE_MODE 0x00080000L
8947
8948 #define ATOM_PM_MISCINFO_FRAME_MODULATION_MASK 0x00300000L
8949 #define ATOM_PM_MISCINFO_FRAME_MODULATION_SHIFT 20
8950
8951 #define ATOM_PM_MISCINFO_DYN_CLK_3D_IDLE 0x00400000L
8952 #define ATOM_PM_MISCINFO_DYNAMIC_CLOCK_DIVIDER_BY_2 0x00800000L
8953 #define ATOM_PM_MISCINFO_DYNAMIC_CLOCK_DIVIDER_BY_4 0x01000000L
8954 #define ATOM_PM_MISCINFO_DYNAMIC_HDP_BLOCK_EN 0x02000000L
8955 #define ATOM_PM_MISCINFO_DYNAMIC_MC_HOST_BLOCK_EN 0x04000000L
8956 #define ATOM_PM_MISCINFO_3D_ACCELERATION_EN 0x08000000L
8957
8958 #define ATOM_PM_MISCINFO_POWERPLAY_SETTINGS_GROUP_MASK 0x70000000L
8959 #define ATOM_PM_MISCINFO_POWERPLAY_SETTINGS_GROUP_SHIFT 28
8960 #define ATOM_PM_MISCINFO_ENABLE_BACK_BIAS 0x80000000L
8961
8962 #define ATOM_PM_MISCINFO2_SYSTEM_AC_LITE_MODE 0x00000001L
8963 #define ATOM_PM_MISCINFO2_MULTI_DISPLAY_SUPPORT 0x00000002L
8964 #define ATOM_PM_MISCINFO2_DYNAMIC_BACK_BIAS_EN 0x00000004L
8965 #define ATOM_PM_MISCINFO2_FS3D_OVERDRIVE_INFO 0x00000008L
8966 #define ATOM_PM_MISCINFO2_FORCEDLOWPWR_MODE 0x00000010L
8967 #define ATOM_PM_MISCINFO2_VDDCI_DYNAMIC_VOLTAGE_EN 0x00000020L
8968 #define ATOM_PM_MISCINFO2_VIDEO_PLAYBACK_CAPABLE 0x00000040L
8969
8970 #define ATOM_PM_MISCINFO2_NOT_VALID_ON_DC 0x00000080L
8971 #define ATOM_PM_MISCINFO2_STUTTER_MODE_EN 0x00000100L
8972 #define ATOM_PM_MISCINFO2_UVD_SUPPORT_MODE 0x00000200L
8973
8974
8975
8976 typedef struct _ATOM_POWERMODE_INFO
8977 {
8978 ULONG ulMiscInfo;
8979 ULONG ulReserved1;
8980 ULONG ulReserved2;
8981 USHORT usEngineClock;
8982 USHORT usMemoryClock;
8983 UCHAR ucVoltageDropIndex;
8984 UCHAR ucSelectedPanel_RefreshRate;
8985 UCHAR ucMinTemperature;
8986 UCHAR ucMaxTemperature;
8987 UCHAR ucNumPciELanes;
8988 }ATOM_POWERMODE_INFO;
8989
8990
8991
8992 typedef struct _ATOM_POWERMODE_INFO_V2
8993 {
8994 ULONG ulMiscInfo;
8995 ULONG ulMiscInfo2;
8996 ULONG ulEngineClock;
8997 ULONG ulMemoryClock;
8998 UCHAR ucVoltageDropIndex;
8999 UCHAR ucSelectedPanel_RefreshRate;
9000 UCHAR ucMinTemperature;
9001 UCHAR ucMaxTemperature;
9002 UCHAR ucNumPciELanes;
9003 }ATOM_POWERMODE_INFO_V2;
9004
9005
9006
9007 typedef struct _ATOM_POWERMODE_INFO_V3
9008 {
9009 ULONG ulMiscInfo;
9010 ULONG ulMiscInfo2;
9011 ULONG ulEngineClock;
9012 ULONG ulMemoryClock;
9013 UCHAR ucVoltageDropIndex;
9014 UCHAR ucSelectedPanel_RefreshRate;
9015 UCHAR ucMinTemperature;
9016 UCHAR ucMaxTemperature;
9017 UCHAR ucNumPciELanes;
9018 UCHAR ucVDDCI_VoltageDropIndex;
9019 }ATOM_POWERMODE_INFO_V3;
9020
9021
9022 #define ATOM_MAX_NUMBEROF_POWER_BLOCK 8
9023
9024 #define ATOM_PP_OVERDRIVE_INTBITMAP_AUXWIN 0x01
9025 #define ATOM_PP_OVERDRIVE_INTBITMAP_OVERDRIVE 0x02
9026
9027 #define ATOM_PP_OVERDRIVE_THERMALCONTROLLER_LM63 0x01
9028 #define ATOM_PP_OVERDRIVE_THERMALCONTROLLER_ADM1032 0x02
9029 #define ATOM_PP_OVERDRIVE_THERMALCONTROLLER_ADM1030 0x03
9030 #define ATOM_PP_OVERDRIVE_THERMALCONTROLLER_MUA6649 0x04
9031 #define ATOM_PP_OVERDRIVE_THERMALCONTROLLER_LM64 0x05
9032 #define ATOM_PP_OVERDRIVE_THERMALCONTROLLER_F75375 0x06
9033 #define ATOM_PP_OVERDRIVE_THERMALCONTROLLER_ASC7512 0x07
9034
9035
9036 typedef struct _ATOM_POWERPLAY_INFO
9037 {
9038 ATOM_COMMON_TABLE_HEADER sHeader;
9039 UCHAR ucOverdriveThermalController;
9040 UCHAR ucOverdriveI2cLine;
9041 UCHAR ucOverdriveIntBitmap;
9042 UCHAR ucOverdriveControllerAddress;
9043 UCHAR ucSizeOfPowerModeEntry;
9044 UCHAR ucNumOfPowerModeEntries;
9045 ATOM_POWERMODE_INFO asPowerPlayInfo[ATOM_MAX_NUMBEROF_POWER_BLOCK];
9046 }ATOM_POWERPLAY_INFO;
9047
9048 typedef struct _ATOM_POWERPLAY_INFO_V2
9049 {
9050 ATOM_COMMON_TABLE_HEADER sHeader;
9051 UCHAR ucOverdriveThermalController;
9052 UCHAR ucOverdriveI2cLine;
9053 UCHAR ucOverdriveIntBitmap;
9054 UCHAR ucOverdriveControllerAddress;
9055 UCHAR ucSizeOfPowerModeEntry;
9056 UCHAR ucNumOfPowerModeEntries;
9057 ATOM_POWERMODE_INFO_V2 asPowerPlayInfo[ATOM_MAX_NUMBEROF_POWER_BLOCK];
9058 }ATOM_POWERPLAY_INFO_V2;
9059
9060 typedef struct _ATOM_POWERPLAY_INFO_V3
9061 {
9062 ATOM_COMMON_TABLE_HEADER sHeader;
9063 UCHAR ucOverdriveThermalController;
9064 UCHAR ucOverdriveI2cLine;
9065 UCHAR ucOverdriveIntBitmap;
9066 UCHAR ucOverdriveControllerAddress;
9067 UCHAR ucSizeOfPowerModeEntry;
9068 UCHAR ucNumOfPowerModeEntries;
9069 ATOM_POWERMODE_INFO_V3 asPowerPlayInfo[ATOM_MAX_NUMBEROF_POWER_BLOCK];
9070 }ATOM_POWERPLAY_INFO_V3;
9071
9072
9073
9074
9075
9076
9077
9078 #define ATOM_MASTER_DATA_TABLE_REVISION 0x01
9079 #define Object_Info Object_Header
9080 #define AdjustARB_SEQ MC_InitParameter
9081 #define VRAM_GPIO_DetectionInfo VoltageObjectInfo
9082 #define ASIC_VDDCI_Info ASIC_ProfilingInfo
9083 #define ASIC_MVDDQ_Info MemoryTrainingInfo
9084 #define SS_Info PPLL_SS_Info
9085 #define ASIC_MVDDC_Info ASIC_InternalSS_Info
9086 #define DispDevicePriorityInfo SaveRestoreInfo
9087 #define DispOutInfo TV_VideoMode
9088
9089
9090 #define ATOM_ENCODER_OBJECT_TABLE ATOM_OBJECT_TABLE
9091 #define ATOM_CONNECTOR_OBJECT_TABLE ATOM_OBJECT_TABLE
9092
9093
9094 #define DFP2I_OUTPUT_CONTROL_PARAMETERS CRT1_OUTPUT_CONTROL_PARAMETERS
9095 #define DFP2I_OUTPUT_CONTROL_PS_ALLOCATION DFP2I_OUTPUT_CONTROL_PARAMETERS
9096
9097 #define DFP1X_OUTPUT_CONTROL_PARAMETERS CRT1_OUTPUT_CONTROL_PARAMETERS
9098 #define DFP1X_OUTPUT_CONTROL_PS_ALLOCATION DFP1X_OUTPUT_CONTROL_PARAMETERS
9099
9100 #define DFP1I_OUTPUT_CONTROL_PARAMETERS DFP1_OUTPUT_CONTROL_PARAMETERS
9101 #define DFP1I_OUTPUT_CONTROL_PS_ALLOCATION DFP1_OUTPUT_CONTROL_PS_ALLOCATION
9102
9103 #define ATOM_DEVICE_DFP1I_SUPPORT ATOM_DEVICE_DFP1_SUPPORT
9104 #define ATOM_DEVICE_DFP1X_SUPPORT ATOM_DEVICE_DFP2_SUPPORT
9105
9106 #define ATOM_DEVICE_DFP1I_INDEX ATOM_DEVICE_DFP1_INDEX
9107 #define ATOM_DEVICE_DFP1X_INDEX ATOM_DEVICE_DFP2_INDEX
9108
9109 #define ATOM_DEVICE_DFP2I_INDEX 0x00000009
9110 #define ATOM_DEVICE_DFP2I_SUPPORT (0x1L << ATOM_DEVICE_DFP2I_INDEX)
9111
9112 #define ATOM_S0_DFP1I ATOM_S0_DFP1
9113 #define ATOM_S0_DFP1X ATOM_S0_DFP2
9114
9115 #define ATOM_S0_DFP2I 0x00200000L
9116 #define ATOM_S0_DFP2Ib2 0x20
9117
9118 #define ATOM_S2_DFP1I_DPMS_STATE ATOM_S2_DFP1_DPMS_STATE
9119 #define ATOM_S2_DFP1X_DPMS_STATE ATOM_S2_DFP2_DPMS_STATE
9120
9121 #define ATOM_S2_DFP2I_DPMS_STATE 0x02000000L
9122 #define ATOM_S2_DFP2I_DPMS_STATEb3 0x02
9123
9124 #define ATOM_S3_DFP2I_ACTIVEb1 0x02
9125
9126 #define ATOM_S3_DFP1I_ACTIVE ATOM_S3_DFP1_ACTIVE
9127 #define ATOM_S3_DFP1X_ACTIVE ATOM_S3_DFP2_ACTIVE
9128
9129 #define ATOM_S3_DFP2I_ACTIVE 0x00000200L
9130
9131 #define ATOM_S3_DFP1I_CRTC_ACTIVE ATOM_S3_DFP1_CRTC_ACTIVE
9132 #define ATOM_S3_DFP1X_CRTC_ACTIVE ATOM_S3_DFP2_CRTC_ACTIVE
9133 #define ATOM_S3_DFP2I_CRTC_ACTIVE 0x02000000L
9134
9135
9136 #define ATOM_S3_DFP2I_CRTC_ACTIVEb3 0x02
9137 #define ATOM_S5_DOS_REQ_DFP2Ib1 0x02
9138
9139 #define ATOM_S5_DOS_REQ_DFP2I 0x0200
9140 #define ATOM_S6_ACC_REQ_DFP1I ATOM_S6_ACC_REQ_DFP1
9141 #define ATOM_S6_ACC_REQ_DFP1X ATOM_S6_ACC_REQ_DFP2
9142
9143 #define ATOM_S6_ACC_REQ_DFP2Ib3 0x02
9144 #define ATOM_S6_ACC_REQ_DFP2I 0x02000000L
9145
9146 #define TMDS1XEncoderControl DVOEncoderControl
9147 #define DFP1XOutputControl DVOOutputControl
9148
9149 #define ExternalDFPOutputControl DFP1XOutputControl
9150 #define EnableExternalTMDS_Encoder TMDS1XEncoderControl
9151
9152 #define DFP1IOutputControl TMDSAOutputControl
9153 #define DFP2IOutputControl LVTMAOutputControl
9154
9155 #define DAC1_ENCODER_CONTROL_PARAMETERS DAC_ENCODER_CONTROL_PARAMETERS
9156 #define DAC1_ENCODER_CONTROL_PS_ALLOCATION DAC_ENCODER_CONTROL_PS_ALLOCATION
9157
9158 #define DAC2_ENCODER_CONTROL_PARAMETERS DAC_ENCODER_CONTROL_PARAMETERS
9159 #define DAC2_ENCODER_CONTROL_PS_ALLOCATION DAC_ENCODER_CONTROL_PS_ALLOCATION
9160
9161 #define ucDac1Standard ucDacStandard
9162 #define ucDac2Standard ucDacStandard
9163
9164 #define TMDS1EncoderControl TMDSAEncoderControl
9165 #define TMDS2EncoderControl LVTMAEncoderControl
9166
9167 #define DFP1OutputControl TMDSAOutputControl
9168 #define DFP2OutputControl LVTMAOutputControl
9169 #define CRT1OutputControl DAC1OutputControl
9170 #define CRT2OutputControl DAC2OutputControl
9171
9172
9173 #define EnableLVDS_SS EnableSpreadSpectrumOnPPLL
9174 #define ENABLE_LVDS_SS_PARAMETERS_V3 ENABLE_SPREAD_SPECTRUM_ON_PPLL
9175
9176 #define ATOM_S2_CRT1_DPMS_STATE 0x00010000L
9177 #define ATOM_S2_LCD1_DPMS_STATE ATOM_S2_CRT1_DPMS_STATE
9178 #define ATOM_S2_TV1_DPMS_STATE ATOM_S2_CRT1_DPMS_STATE
9179 #define ATOM_S2_DFP1_DPMS_STATE ATOM_S2_CRT1_DPMS_STATE
9180 #define ATOM_S2_CRT2_DPMS_STATE ATOM_S2_CRT1_DPMS_STATE
9181
9182 #define ATOM_S6_ACC_REQ_TV2 0x00400000L
9183 #define ATOM_DEVICE_TV2_INDEX 0x00000006
9184 #define ATOM_DEVICE_TV2_SUPPORT (0x1L << ATOM_DEVICE_TV2_INDEX)
9185 #define ATOM_S0_TV2 0x00100000L
9186 #define ATOM_S3_TV2_ACTIVE ATOM_S3_DFP6_ACTIVE
9187 #define ATOM_S3_TV2_CRTC_ACTIVE ATOM_S3_DFP6_CRTC_ACTIVE
9188
9189
9190
9191 #pragma pack()
9192
9193 #pragma pack(1)
9194
9195 typedef struct _ATOM_HOLE_INFO
9196 {
9197 USHORT usOffset;
9198 USHORT usLength;
9199 }ATOM_HOLE_INFO;
9200
9201 typedef struct _ATOM_SERVICE_DESCRIPTION
9202 {
9203 UCHAR ucRevision;
9204 UCHAR ucAlgorithm;
9205 UCHAR ucSignatureType;
9206 UCHAR ucReserved;
9207 USHORT usSigOffset;
9208 USHORT usSigLength;
9209 }ATOM_SERVICE_DESCRIPTION;
9210
9211
9212 typedef struct _ATOM_SERVICE_INFO
9213 {
9214 ATOM_COMMON_TABLE_HEADER asHeader;
9215 ATOM_SERVICE_DESCRIPTION asDescr;
9216 UCHAR ucholesNo;
9217 ATOM_HOLE_INFO holes[1];
9218 }ATOM_SERVICE_INFO;
9219
9220
9221
9222 #pragma pack()
9223
9224
9225
9226
9227 #pragma pack(1)
9228
9229 typedef struct {
9230 ULONG Signature;
9231 ULONG TableLength;
9232 UCHAR Revision;
9233 UCHAR Checksum;
9234 UCHAR OemId[6];
9235 UCHAR OemTableId[8];
9236 ULONG OemRevision;
9237 ULONG CreatorId;
9238 ULONG CreatorRevision;
9239 } AMD_ACPI_DESCRIPTION_HEADER;
9240
9241
9242
9243
9244
9245
9246
9247
9248
9249
9250
9251
9252
9253
9254 typedef struct {
9255 AMD_ACPI_DESCRIPTION_HEADER SHeader;
9256 UCHAR TableUUID[16];
9257 ULONG VBIOSImageOffset;
9258 ULONG Lib1ImageOffset;
9259 ULONG Reserved[4];
9260 }UEFI_ACPI_VFCT;
9261
9262 typedef struct {
9263 ULONG PCIBus;
9264 ULONG PCIDevice;
9265 ULONG PCIFunction;
9266 USHORT VendorID;
9267 USHORT DeviceID;
9268 USHORT SSVID;
9269 USHORT SSID;
9270 ULONG Revision;
9271 ULONG ImageLength;
9272 }VFCT_IMAGE_HEADER;
9273
9274
9275 typedef struct {
9276 VFCT_IMAGE_HEADER VbiosHeader;
9277 UCHAR VbiosContent[1];
9278 }GOP_VBIOS_CONTENT;
9279
9280 typedef struct {
9281 VFCT_IMAGE_HEADER Lib1Header;
9282 UCHAR Lib1Content[1];
9283 }GOP_LIB1_CONTENT;
9284
9285 #pragma pack()
9286
9287
9288 #endif
9289
9290 #include "pptable.h"
9291