Subversion Repositories Kolibri OS

Rev

Rev 3764 | Go to most recent revision | Show entire file | Regard whitespace | Details | Blame | Last modification | View Log | RSS feed

Rev 3764 Rev 5078
Line 72... Line 72...
72
 
72
 
73
#define ATOM_PPLL1            0
73
#define ATOM_PPLL1            0
74
#define ATOM_PPLL2            1
74
#define ATOM_PPLL2            1
75
#define ATOM_DCPLL            2
75
#define ATOM_DCPLL            2
-
 
76
#define ATOM_PPLL0            2
-
 
77
#define ATOM_PPLL3            3
76
#define ATOM_PPLL0            2
78
 
77
#define ATOM_EXT_PLL1         8
79
#define ATOM_EXT_PLL1         8
78
#define ATOM_EXT_PLL2         9
80
#define ATOM_EXT_PLL2         9
79
#define ATOM_EXT_CLOCK        10
81
#define ATOM_EXT_CLOCK        10
Line 257... Line 259...
257
  USHORT ResetMemoryDevice;                      //Atomic Table,  indirectly used by various SW components,called from SetMemoryClock
259
  USHORT ResetMemoryDevice;                      //Atomic Table,  indirectly used by various SW components,called from SetMemoryClock
258
  USHORT MemoryPLLInit;                          //Atomic Table,  used only by Bios
260
  USHORT MemoryPLLInit;                          //Atomic Table,  used only by Bios
259
  USHORT AdjustDisplayPll;											 //Atomic Table,  used by various SW componentes. 
261
  USHORT AdjustDisplayPll;											 //Atomic Table,  used by various SW componentes. 
260
  USHORT AdjustMemoryController;                 //Atomic Table,  indirectly used by various SW components,called from SetMemoryClock                
262
  USHORT AdjustMemoryController;                 //Atomic Table,  indirectly used by various SW components,called from SetMemoryClock                
261
  USHORT EnableASIC_StaticPwrMgt;                //Atomic Table,  only used by Bios
263
  USHORT EnableASIC_StaticPwrMgt;                //Atomic Table,  only used by Bios
262
  USHORT ASIC_StaticPwrMgtStatusChange;          //Obsolete ,     only used by Bios   
264
  USHORT SetUniphyInstance;                      //Atomic Table,  only used by Bios   
263
  USHORT DAC_LoadDetection;                      //Atomic Table,  directly used by various SW components,latest version 1.2  
265
  USHORT DAC_LoadDetection;                      //Atomic Table,  directly used by various SW components,latest version 1.2  
264
  USHORT LVTMAEncoderControl;                    //Atomic Table,directly used by various SW components,latest version 1.3
266
  USHORT LVTMAEncoderControl;                    //Atomic Table,directly used by various SW components,latest version 1.3
265
  USHORT HW_Misc_Operation;                      //Atomic Table,  directly used by various SW components,latest version 1.1 
267
  USHORT HW_Misc_Operation;                      //Atomic Table,  directly used by various SW components,latest version 1.1 
266
  USHORT DAC1EncoderControl;                     //Atomic Table,  directly used by various SW components,latest version 1.1  
268
  USHORT DAC1EncoderControl;                     //Atomic Table,  directly used by various SW components,latest version 1.1  
267
  USHORT DAC2EncoderControl;                     //Atomic Table,  directly used by various SW components,latest version 1.1 
269
  USHORT DAC2EncoderControl;                     //Atomic Table,  directly used by various SW components,latest version 1.1 
Line 269... Line 271...
269
  USHORT CV1OutputControl;                       //Atomic Table,  Atomic Table,  Obsolete from Ry6xx, use DAC2 Output instead 
271
  USHORT CV1OutputControl;                       //Atomic Table,  Atomic Table,  Obsolete from Ry6xx, use DAC2 Output instead 
270
  USHORT GetConditionalGoldenSetting;            //Only used by Bios
272
  USHORT GetConditionalGoldenSetting;            //Only used by Bios
271
  USHORT TVEncoderControl;                       //Function Table,directly used by various SW components,latest version 1.1
273
  USHORT TVEncoderControl;                       //Function Table,directly used by various SW components,latest version 1.1
272
  USHORT PatchMCSetting;                         //only used by BIOS
274
  USHORT PatchMCSetting;                         //only used by BIOS
273
  USHORT MC_SEQ_Control;                         //only used by BIOS
275
  USHORT MC_SEQ_Control;                         //only used by BIOS
274
  USHORT TV1OutputControl;                       //Atomic Table,  Obsolete from Ry6xx, use DAC2 Output instead
276
  USHORT Gfx_Harvesting;                         //Atomic Table,  Obsolete from Ry6xx, Now only used by BIOS for GFX harvesting
275
  USHORT EnableScaler;                           //Atomic Table,  used only by Bios
277
  USHORT EnableScaler;                           //Atomic Table,  used only by Bios
276
  USHORT BlankCRTC;                              //Atomic Table,  directly used by various SW components,latest version 1.1 
278
  USHORT BlankCRTC;                              //Atomic Table,  directly used by various SW components,latest version 1.1 
277
  USHORT EnableCRTC;                             //Atomic Table,  directly used by various SW components,latest version 1.1 
279
  USHORT EnableCRTC;                             //Atomic Table,  directly used by various SW components,latest version 1.1 
278
  USHORT GetPixelClock;                          //Atomic Table,  directly used by various SW components,latest version 1.1 
280
  USHORT GetPixelClock;                          //Atomic Table,  directly used by various SW components,latest version 1.1 
279
  USHORT EnableVGA_Render;                       //Function Table,directly used by various SW components,latest version 1.1
281
  USHORT EnableVGA_Render;                       //Function Table,directly used by various SW components,latest version 1.1
Line 326... Line 328...
326
#define ReadEDIDFromHWAssistedI2C                ProcessI2cChannelTransaction
328
#define ReadEDIDFromHWAssistedI2C                ProcessI2cChannelTransaction
327
#define DPTranslatorControl                      DIG2EncoderControl
329
#define DPTranslatorControl                      DIG2EncoderControl
328
#define UNIPHYTransmitterControl						     DIG1TransmitterControl
330
#define UNIPHYTransmitterControl						     DIG1TransmitterControl
329
#define LVTMATransmitterControl							     DIG2TransmitterControl
331
#define LVTMATransmitterControl							     DIG2TransmitterControl
330
#define SetCRTC_DPM_State                        GetConditionalGoldenSetting
332
#define SetCRTC_DPM_State                        GetConditionalGoldenSetting
331
#define SetUniphyInstance                        ASIC_StaticPwrMgtStatusChange
333
#define ASIC_StaticPwrMgtStatusChange            SetUniphyInstance 
332
#define HPDInterruptService                      ReadHWAssistedI2CStatus
334
#define HPDInterruptService                      ReadHWAssistedI2CStatus
333
#define EnableVGA_Access                         GetSCLKOverMCLKRatio
335
#define EnableVGA_Access                         GetSCLKOverMCLKRatio
334
#define EnableYUV                                GetDispObjectInfo                         
336
#define EnableYUV                                GetDispObjectInfo                         
335
#define DynamicClockGating                       EnableDispPowerGating
337
#define DynamicClockGating                       EnableDispPowerGating
336
#define SetupHWAssistedI2CStatus                 ComputeMemoryClockParam
338
#define SetupHWAssistedI2CStatus                 ComputeMemoryClockParam
Line 337... Line 339...
337
 
339
 
338
#define TMDSAEncoderControl                      PatchMCSetting
340
#define TMDSAEncoderControl                      PatchMCSetting
339
#define LVDSEncoderControl                       MC_SEQ_Control
341
#define LVDSEncoderControl                       MC_SEQ_Control
340
#define LCD1OutputControl                        HW_Misc_Operation
-
 
-
 
342
#define LCD1OutputControl                        HW_Misc_Operation
Line 341... Line 343...
341
 
343
#define TV1OutputControl                         Gfx_Harvesting
342
 
344
 
343
typedef struct _ATOM_MASTER_COMMAND_TABLE
345
typedef struct _ATOM_MASTER_COMMAND_TABLE
344
{
346
{
Line 476... Line 478...
476
 
478
 
477
// V4 are only used for APU which PLL outside GPU
479
// V4 are only used for APU which PLL outside GPU
478
typedef struct _COMPUTE_MEMORY_ENGINE_PLL_PARAMETERS_V4
480
typedef struct _COMPUTE_MEMORY_ENGINE_PLL_PARAMETERS_V4
479
{
481
{
480
#if ATOM_BIG_ENDIAN
482
#if ATOM_BIG_ENDIAN
481
  ULONG  ucPostDiv;          //return parameter: post divider which is used to program to register directly
483
  ULONG  ucPostDiv:8;        //return parameter: post divider which is used to program to register directly
482
  ULONG  ulClock:24;         //Input= target clock, output = actual clock 
484
  ULONG  ulClock:24;         //Input= target clock, output = actual clock 
483
#else
485
#else
484
  ULONG  ulClock:24;         //Input= target clock, output = actual clock 
486
  ULONG  ulClock:24;         //Input= target clock, output = actual clock 
485
  ULONG  ucPostDiv;          //return parameter: post divider which is used to program to register directly
487
  ULONG  ucPostDiv:8;        //return parameter: post divider which is used to program to register directly
486
#endif
488
#endif
Line 487... Line 489...
487
}COMPUTE_MEMORY_ENGINE_PLL_PARAMETERS_V4;
489
}COMPUTE_MEMORY_ENGINE_PLL_PARAMETERS_V4;
488
 
490
 
Line 502... Line 504...
502
    UCHAR   ucInputFlag;                      //Input Flags. ucInputFlag[0] - Strobe(1)/Performance(0) mode
504
    UCHAR   ucInputFlag;                      //Input Flags. ucInputFlag[0] - Strobe(1)/Performance(0) mode
503
  };
505
  };
504
  UCHAR   ucReserved;                       
506
  UCHAR   ucReserved;                       
505
}COMPUTE_MEMORY_ENGINE_PLL_PARAMETERS_V5;
507
}COMPUTE_MEMORY_ENGINE_PLL_PARAMETERS_V5;
Line -... Line 508...
-
 
508
 
-
 
509
 
-
 
510
typedef struct _COMPUTE_GPU_CLOCK_INPUT_PARAMETERS_V1_6
-
 
511
{
-
 
512
  ATOM_COMPUTE_CLOCK_FREQ  ulClock;         //Input Parameter
-
 
513
  ULONG   ulReserved[2];
-
 
514
}COMPUTE_GPU_CLOCK_INPUT_PARAMETERS_V1_6;
-
 
515
 
-
 
516
//ATOM_COMPUTE_CLOCK_FREQ.ulComputeClockFlag
-
 
517
#define COMPUTE_GPUCLK_INPUT_FLAG_CLK_TYPE_MASK            0x0f
-
 
518
#define COMPUTE_GPUCLK_INPUT_FLAG_DEFAULT_GPUCLK           0x00
-
 
519
#define COMPUTE_GPUCLK_INPUT_FLAG_SCLK                     0x01
-
 
520
 
-
 
521
typedef struct _COMPUTE_GPU_CLOCK_OUTPUT_PARAMETERS_V1_6
-
 
522
{
-
 
523
  COMPUTE_MEMORY_ENGINE_PLL_PARAMETERS_V4  ulClock;         //Output Parameter: ucPostDiv=DFS divider
-
 
524
  ATOM_S_MPLL_FB_DIVIDER   ulFbDiv;         //Output Parameter: PLL FB divider
-
 
525
  UCHAR   ucPllRefDiv;                      //Output Parameter: PLL ref divider      
-
 
526
  UCHAR   ucPllPostDiv;                     //Output Parameter: PLL post divider      
-
 
527
  UCHAR   ucPllCntlFlag;                    //Output Flags: control flag
-
 
528
  UCHAR   ucReserved;                       
-
 
529
}COMPUTE_GPU_CLOCK_OUTPUT_PARAMETERS_V1_6;
-
 
530
 
-
 
531
//ucPllCntlFlag
-
 
532
#define SPLL_CNTL_FLAG_VCO_MODE_MASK            0x03 
-
 
533
 
506
 
534
 
507
// ucInputFlag
535
// ucInputFlag
Line 508... Line 536...
508
#define ATOM_PLL_INPUT_FLAG_PLL_STROBE_MODE_EN  1   // 1-StrobeMode, 0-PerformanceMode
536
#define ATOM_PLL_INPUT_FLAG_PLL_STROBE_MODE_EN  1   // 1-StrobeMode, 0-PerformanceMode
509
 
537
 
Line 1681... Line 1709...
1681
#define PIXEL_CLOCK_V6_MISC_FORCE_PROG_PPLL					0x01
1709
#define PIXEL_CLOCK_V6_MISC_FORCE_PROG_PPLL					0x01
1682
#define PIXEL_CLOCK_V6_MISC_VGA_MODE								0x02
1710
#define PIXEL_CLOCK_V6_MISC_VGA_MODE								0x02
1683
#define PIXEL_CLOCK_V6_MISC_HDMI_BPP_MASK           0x0c
1711
#define PIXEL_CLOCK_V6_MISC_HDMI_BPP_MASK           0x0c
1684
#define PIXEL_CLOCK_V6_MISC_HDMI_24BPP              0x00
1712
#define PIXEL_CLOCK_V6_MISC_HDMI_24BPP              0x00
1685
#define PIXEL_CLOCK_V6_MISC_HDMI_36BPP              0x04
1713
#define PIXEL_CLOCK_V6_MISC_HDMI_36BPP              0x04
-
 
1714
#define PIXEL_CLOCK_V6_MISC_HDMI_36BPP_V6           0x08    //for V6, the correct defintion for 36bpp should be 2 for 36bpp(2:1)
1686
#define PIXEL_CLOCK_V6_MISC_HDMI_30BPP              0x08
1715
#define PIXEL_CLOCK_V6_MISC_HDMI_30BPP              0x08
-
 
1716
#define PIXEL_CLOCK_V6_MISC_HDMI_30BPP_V6           0x04    //for V6, the correct defintion for 30bpp should be 1 for 36bpp(5:4)
1687
#define PIXEL_CLOCK_V6_MISC_HDMI_48BPP              0x0c
1717
#define PIXEL_CLOCK_V6_MISC_HDMI_48BPP              0x0c
1688
#define PIXEL_CLOCK_V6_MISC_REF_DIV_SRC             0x10
1718
#define PIXEL_CLOCK_V6_MISC_REF_DIV_SRC             0x10
-
 
1719
#define PIXEL_CLOCK_V6_MISC_GEN_DPREFCLK            0x40
Line 1689... Line 1720...
1689
 
1720
 
1690
typedef struct _GET_DISP_PLL_STATUS_INPUT_PARAMETERS_V2
1721
typedef struct _GET_DISP_PLL_STATUS_INPUT_PARAMETERS_V2
1691
{
1722
{
1692
  PIXEL_CLOCK_PARAMETERS_V3 sDispClkInput;
1723
  PIXEL_CLOCK_PARAMETERS_V3 sDispClkInput;
Line 2100... Line 2131...
2100
  UCHAR  ucAction;														//ATOM_ENABLE/ATOM_DISABLE/ATOM_HPD_INIT
2131
  UCHAR  ucAction;														//ATOM_ENABLE/ATOM_DISABLE/ATOM_HPD_INIT
2101
	UCHAR ucReseved[4];
2132
	UCHAR ucReseved[4];
2102
}DVO_ENCODER_CONTROL_PARAMETERS_V3;
2133
}DVO_ENCODER_CONTROL_PARAMETERS_V3;
2103
#define DVO_ENCODER_CONTROL_PS_ALLOCATION_V3	DVO_ENCODER_CONTROL_PARAMETERS_V3
2134
#define DVO_ENCODER_CONTROL_PS_ALLOCATION_V3	DVO_ENCODER_CONTROL_PARAMETERS_V3
Line -... Line 2135...
-
 
2135
 
-
 
2136
typedef struct _DVO_ENCODER_CONTROL_PARAMETERS_V1_4
-
 
2137
{
-
 
2138
  USHORT usPixelClock; 
-
 
2139
  UCHAR  ucDVOConfig;
-
 
2140
  UCHAR  ucAction;														//ATOM_ENABLE/ATOM_DISABLE/ATOM_HPD_INIT
-
 
2141
  UCHAR  ucBitPerColor;                       //please refer to definition of PANEL_xBIT_PER_COLOR
-
 
2142
  UCHAR  ucReseved[3];
-
 
2143
}DVO_ENCODER_CONTROL_PARAMETERS_V1_4;
-
 
2144
#define DVO_ENCODER_CONTROL_PS_ALLOCATION_V1_4	DVO_ENCODER_CONTROL_PARAMETERS_V1_4
-
 
2145
 
2104
 
2146
 
2105
//ucTableFormatRevision=1
2147
//ucTableFormatRevision=1
2106
//ucTableContentRevision=3 structure is not changed but usMisc add bit 1 as another input for 
2148
//ucTableContentRevision=3 structure is not changed but usMisc add bit 1 as another input for 
2107
// bit1=0: non-coherent mode
2149
// bit1=0: non-coherent mode
Line 2181... Line 2223...
2181
  UCHAR    ucVoltageType;               // To tell which voltage to set up, VDDC/MVDDC/MVDDQ
2223
  UCHAR    ucVoltageType;               // To tell which voltage to set up, VDDC/MVDDC/MVDDQ
2182
  UCHAR    ucVoltageMode;               // Not used, maybe use for state machine for differen power mode
2224
  UCHAR    ucVoltageMode;               // Not used, maybe use for state machine for differen power mode
2183
  USHORT   usVoltageLevel;              // real voltage level
2225
  USHORT   usVoltageLevel;              // real voltage level
2184
}SET_VOLTAGE_PARAMETERS_V2;
2226
}SET_VOLTAGE_PARAMETERS_V2;
Line 2185... Line -...
2185
 
-
 
-
 
2227
 
2186
 
2228
// used by both SetVoltageTable v1.3 and v1.4
2187
typedef struct	_SET_VOLTAGE_PARAMETERS_V1_3
2229
typedef struct	_SET_VOLTAGE_PARAMETERS_V1_3
2188
{
2230
{
2189
  UCHAR    ucVoltageType;               // To tell which voltage to set up, VDDC/MVDDC/MVDDQ/VDDCI
2231
  UCHAR    ucVoltageType;               // To tell which voltage to set up, VDDC/MVDDC/MVDDQ/VDDCI
2190
  UCHAR    ucVoltageMode;               // Indicate action: Set voltage level
2232
  UCHAR    ucVoltageMode;               // Indicate action: Set voltage level
Line 2198... Line 2240...
2198
#define VOLTAGE_TYPE_VDDCI                   4
2240
#define VOLTAGE_TYPE_VDDCI                   4
Line 2199... Line 2241...
2199
 
2241
 
2200
//SET_VOLTAGE_PARAMETERS_V3.ucVoltageMode
2242
//SET_VOLTAGE_PARAMETERS_V3.ucVoltageMode
2201
#define ATOM_SET_VOLTAGE                     0        //Set voltage Level
2243
#define ATOM_SET_VOLTAGE                     0        //Set voltage Level
2202
#define ATOM_INIT_VOLTAGE_REGULATOR          3        //Init Regulator
2244
#define ATOM_INIT_VOLTAGE_REGULATOR          3        //Init Regulator
2203
#define ATOM_SET_VOLTAGE_PHASE               4        //Set Vregulator Phase
2245
#define ATOM_SET_VOLTAGE_PHASE               4        //Set Vregulator Phase, only for SVID/PVID regulator
2204
#define ATOM_GET_MAX_VOLTAGE                 6        //Get Max Voltage, not used in SetVoltageTable v1.3
2246
#define ATOM_GET_MAX_VOLTAGE                 6        //Get Max Voltage, not used from SetVoltageTable v1.3
-
 
2247
#define ATOM_GET_VOLTAGE_LEVEL               6        //Get Voltage level from vitual voltage ID, not used for SetVoltage v1.4
Line 2205... Line 2248...
2205
#define ATOM_GET_VOLTAGE_LEVEL               6        //Get Voltage level from vitual voltage ID
2248
#define ATOM_GET_LEAKAGE_ID                  8        //Get Leakage Voltage Id ( starting from SMU7x IP ), SetVoltage v1.4 
2206
 
2249
 
2207
// define vitual voltage id in usVoltageLevel
2250
// define vitual voltage id in usVoltageLevel
2208
#define ATOM_VIRTUAL_VOLTAGE_ID0             0xff01
2251
#define ATOM_VIRTUAL_VOLTAGE_ID0             0xff01
2209
#define ATOM_VIRTUAL_VOLTAGE_ID1             0xff02
2252
#define ATOM_VIRTUAL_VOLTAGE_ID1             0xff02
-
 
2253
#define ATOM_VIRTUAL_VOLTAGE_ID2             0xff03
-
 
2254
#define ATOM_VIRTUAL_VOLTAGE_ID3             0xff04
-
 
2255
#define ATOM_VIRTUAL_VOLTAGE_ID4             0xff05
-
 
2256
#define ATOM_VIRTUAL_VOLTAGE_ID5             0xff06
Line 2210... Line 2257...
2210
#define ATOM_VIRTUAL_VOLTAGE_ID2             0xff03
2257
#define ATOM_VIRTUAL_VOLTAGE_ID6             0xff07
2211
#define ATOM_VIRTUAL_VOLTAGE_ID3             0xff04
2258
#define ATOM_VIRTUAL_VOLTAGE_ID7             0xff08
2212
 
2259
 
2213
typedef struct _SET_VOLTAGE_PS_ALLOCATION
2260
typedef struct _SET_VOLTAGE_PS_ALLOCATION
Line 2243... Line 2290...
2243
 
2290
 
2244
// GetVoltageInfo v1.1 ucVoltageMode
2291
// GetVoltageInfo v1.1 ucVoltageMode
2245
#define	ATOM_GET_VOLTAGE_VID                0x00
2292
#define	ATOM_GET_VOLTAGE_VID                0x00
2246
#define ATOM_GET_VOTLAGE_INIT_SEQ           0x03
2293
#define ATOM_GET_VOTLAGE_INIT_SEQ           0x03
-
 
2294
#define ATOM_GET_VOLTTAGE_PHASE_PHASE_VID   0x04
-
 
2295
#define ATOM_GET_VOLTAGE_SVID2              0x07        //Get SVI2 Regulator Info
2247
#define ATOM_GET_VOLTTAGE_PHASE_PHASE_VID   0x04
2296
 
2248
// for SI, this state map to 0xff02 voltage state in Power Play table, which is power boost state
2297
// for SI, this state map to 0xff02 voltage state in Power Play table, which is power boost state
2249
#define	ATOM_GET_VOLTAGE_STATE0_LEAKAGE_VID 0x10
-
 
2250
 
2298
#define	ATOM_GET_VOLTAGE_STATE0_LEAKAGE_VID 0x10
2251
// for SI, this state map to 0xff01 voltage state in Power Play table, which is performance state
2299
// for SI, this state map to 0xff01 voltage state in Power Play table, which is performance state
2252
#define	ATOM_GET_VOLTAGE_STATE1_LEAKAGE_VID 0x11
-
 
-
 
2300
#define	ATOM_GET_VOLTAGE_STATE1_LEAKAGE_VID 0x11
2253
// undefined power state
2301
 
2254
#define	ATOM_GET_VOLTAGE_STATE2_LEAKAGE_VID 0x12
2302
#define	ATOM_GET_VOLTAGE_STATE2_LEAKAGE_VID 0x12
Line -... Line 2303...
-
 
2303
#define	ATOM_GET_VOLTAGE_STATE3_LEAKAGE_VID 0x13
-
 
2304
 
-
 
2305
// New Added from CI Hawaii for GetVoltageInfoTable, input parameter structure
-
 
2306
typedef struct  _GET_VOLTAGE_INFO_INPUT_PARAMETER_V1_2
-
 
2307
{
-
 
2308
  UCHAR    ucVoltageType;               // Input: To tell which voltage to set up, VDDC/MVDDC/MVDDQ/VDDCI
-
 
2309
  UCHAR    ucVoltageMode;               // Input: Indicate action: Get voltage info
-
 
2310
  USHORT   usVoltageLevel;              // Input: real voltage level in unit of mv or Voltage Phase (0, 1, 2, .. ) or Leakage Id 
-
 
2311
  ULONG    ulSCLKFreq;                  // Input: when ucVoltageMode= ATOM_GET_VOLTAGE_EVV_VOLTAGE, DPM state SCLK frequency, Define in PPTable SCLK/Voltage dependence table
-
 
2312
}GET_VOLTAGE_INFO_INPUT_PARAMETER_V1_2;
-
 
2313
 
-
 
2314
// New in GetVoltageInfo v1.2 ucVoltageMode
-
 
2315
#define ATOM_GET_VOLTAGE_EVV_VOLTAGE        0x09        
-
 
2316
 
-
 
2317
// New Added from CI Hawaii for EVV feature 
-
 
2318
typedef struct  _GET_EVV_VOLTAGE_INFO_OUTPUT_PARAMETER_V1_2
-
 
2319
{
-
 
2320
  USHORT   usVoltageLevel;                               // real voltage level in unit of mv
-
 
2321
  USHORT   usVoltageId;                                  // Voltage Id programmed in Voltage Regulator
-
 
2322
  ULONG    ulReseved;
2255
#define	ATOM_GET_VOLTAGE_STATE3_LEAKAGE_VID 0x13
2323
}GET_EVV_VOLTAGE_INFO_OUTPUT_PARAMETER_V1_2;
2256
 
2324
 
2257
/****************************************************************************/
2325
/****************************************************************************/
2258
// Structures used by TVEncoderControlTable
2326
// Structures used by TVEncoderControlTable
2259
/****************************************************************************/
2327
/****************************************************************************/
Line 2626... Line 2694...
2626
{
2694
{
2627
  ATOM_COMMON_TABLE_HEADER        sHeader; 
2695
  ATOM_COMMON_TABLE_HEADER        sHeader; 
2628
  ULONG                           ulFirmwareRevision;
2696
  ULONG                           ulFirmwareRevision;
2629
  ULONG                           ulDefaultEngineClock;       //In 10Khz unit
2697
  ULONG                           ulDefaultEngineClock;       //In 10Khz unit
2630
  ULONG                           ulDefaultMemoryClock;       //In 10Khz unit
2698
  ULONG                           ulDefaultMemoryClock;       //In 10Khz unit
-
 
2699
  ULONG                           ulSPLL_OutputFreq;          //In 10Khz unit  
2631
  ULONG                           ulReserved[2];
2700
  ULONG                           ulGPUPLL_OutputFreq;        //In 10Khz unit
2632
  ULONG                           ulReserved1;                //Was ulMaxEngineClockPLL_Output; //In 10Khz unit*
2701
  ULONG                           ulReserved1;                //Was ulMaxEngineClockPLL_Output; //In 10Khz unit*
2633
  ULONG                           ulReserved2;                //Was ulMaxMemoryClockPLL_Output; //In 10Khz unit*
2702
  ULONG                           ulReserved2;                //Was ulMaxMemoryClockPLL_Output; //In 10Khz unit*
2634
  ULONG                           ulMaxPixelClockPLL_Output;  //In 10Khz unit
2703
  ULONG                           ulMaxPixelClockPLL_Output;  //In 10Khz unit
2635
  ULONG                           ulBinaryAlteredInfo;        //Was ulASICMaxEngineClock  ?
2704
  ULONG                           ulBinaryAlteredInfo;        //Was ulASICMaxEngineClock  ?
2636
  ULONG                           ulDefaultDispEngineClkFreq; //In 10Khz unit. This is the frequency before DCDTO, corresponding to usBootUpVDDCVoltage.          
2705
  ULONG                           ulDefaultDispEngineClkFreq; //In 10Khz unit. This is the frequency before DCDTO, corresponding to usBootUpVDDCVoltage.          
Line 3811... Line 3880...
3811
	USHORT usGpioPin_AIndex;
3880
	USHORT usGpioPin_AIndex;
3812
	UCHAR ucGpioPinBitShift;
3881
	UCHAR ucGpioPinBitShift;
3813
	UCHAR ucGPIO_ID;
3882
	UCHAR ucGPIO_ID;
3814
}ATOM_GPIO_PIN_ASSIGNMENT;
3883
}ATOM_GPIO_PIN_ASSIGNMENT;
Line -... Line 3884...
-
 
3884
 
-
 
3885
//ucGPIO_ID pre-define id for multiple usage
-
 
3886
//from SMU7.x, if ucGPIO_ID=PP_AC_DC_SWITCH_GPIO_PINID in GPIO_LUTTable, AC/DC swithing feature is enable
-
 
3887
#define PP_AC_DC_SWITCH_GPIO_PINID          60
-
 
3888
//from SMU7.x, if ucGPIO_ID=VDDC_REGULATOR_VRHOT_GPIO_PINID in GPIO_LUTable, VRHot feature is enable
-
 
3889
#define VDDC_VRHOT_GPIO_PINID               61
-
 
3890
//if ucGPIO_ID=VDDC_PCC_GPIO_PINID in GPIO_LUTable, Peak Current Control feature is enabled
-
 
3891
#define VDDC_PCC_GPIO_PINID                 62
3815
 
3892
 
3816
typedef struct _ATOM_GPIO_PIN_LUT
3893
typedef struct _ATOM_GPIO_PIN_LUT
3817
{
3894
{
3818
	ATOM_COMMON_TABLE_HEADER sHeader;
3895
	ATOM_COMMON_TABLE_HEADER sHeader;
3819
	ATOM_GPIO_PIN_ASSIGNMENT asGPIO_Pin[1];
3896
	ATOM_GPIO_PIN_ASSIGNMENT asGPIO_Pin[1];
Line 4072... Line 4149...
4072
#define NUMBER_OF_UCHAR_FOR_GUID          16
4149
#define NUMBER_OF_UCHAR_FOR_GUID          16
4073
#define MAX_NUMBER_OF_EXT_DISPLAY_PATH    7
4150
#define MAX_NUMBER_OF_EXT_DISPLAY_PATH    7
Line 4074... Line 4151...
4074
 
4151
 
4075
//usCaps
4152
//usCaps
-
 
4153
#define  EXT_DISPLAY_PATH_CAPS__HBR2_DISABLE          0x01
Line 4076... Line 4154...
4076
#define  EXT_DISPLAY_PATH_CAPS__HBR2_DISABLE          0x01
4154
#define  EXT_DISPLAY_PATH_CAPS__DP_FIXED_VS_EN        0x02
4077
 
4155
 
4078
typedef  struct _ATOM_EXTERNAL_DISPLAY_CONNECTION_INFO
4156
typedef  struct _ATOM_EXTERNAL_DISPLAY_CONNECTION_INFO
4079
{
4157
{
4080
  ATOM_COMMON_TABLE_HEADER sHeader;
4158
  ATOM_COMMON_TABLE_HEADER sHeader;
4081
  UCHAR                    ucGuid [NUMBER_OF_UCHAR_FOR_GUID];     // a GUID is a 16 byte long string
4159
  UCHAR                    ucGuid [NUMBER_OF_UCHAR_FOR_GUID];     // a GUID is a 16 byte long string
4082
  EXT_DISPLAY_PATH         sPath[MAX_NUMBER_OF_EXT_DISPLAY_PATH]; // total of fixed 7 entries.
4160
  EXT_DISPLAY_PATH         sPath[MAX_NUMBER_OF_EXT_DISPLAY_PATH]; // total of fixed 7 entries.
4083
  UCHAR                    ucChecksum;                            // a  simple Checksum of the sum of whole structure equal to 0x0. 
4161
  UCHAR                    ucChecksum;                            // a  simple Checksum of the sum of whole structure equal to 0x0. 
4084
  UCHAR                    uc3DStereoPinId;                       // use for eDP panel
4162
  UCHAR                    uc3DStereoPinId;                       // use for eDP panel
-
 
4163
  UCHAR                    ucRemoteDisplayConfig;
4085
  UCHAR                    ucRemoteDisplayConfig;
4164
  UCHAR                    uceDPToLVDSRxId;
4086
  UCHAR                    uceDPToLVDSRxId;
4165
  UCHAR                    ucFixDPVoltageSwing;                   // usCaps[1]=1, this indicate DP_LANE_SET value
Line 4087... Line 4166...
4087
  UCHAR                    Reserved[4];                           // for potential expansion
4166
  UCHAR                    Reserved[3];                           // for potential expansion
4088
}ATOM_EXTERNAL_DISPLAY_CONNECTION_INFO;
4167
}ATOM_EXTERNAL_DISPLAY_CONNECTION_INFO;
4089
 
4168
 
Line 4113... Line 4192...
4113
#define ATOM_CONNECTOR_HPDPIN_LUT_RECORD_TYPE          16 //This is for the case when connectors are not known to object table
4192
#define ATOM_CONNECTOR_HPDPIN_LUT_RECORD_TYPE          16 //This is for the case when connectors are not known to object table
4114
#define ATOM_CONNECTOR_AUXDDC_LUT_RECORD_TYPE          17 //This is for the case when connectors are not known to object table
4193
#define ATOM_CONNECTOR_AUXDDC_LUT_RECORD_TYPE          17 //This is for the case when connectors are not known to object table
4115
#define ATOM_OBJECT_LINK_RECORD_TYPE                   18 //Once this record is present under one object, it indicats the oobject is linked to another obj described by the record
4194
#define ATOM_OBJECT_LINK_RECORD_TYPE                   18 //Once this record is present under one object, it indicats the oobject is linked to another obj described by the record
4116
#define ATOM_CONNECTOR_REMOTE_CAP_RECORD_TYPE          19
4195
#define ATOM_CONNECTOR_REMOTE_CAP_RECORD_TYPE          19
4117
#define ATOM_ENCODER_CAP_RECORD_TYPE                   20
4196
#define ATOM_ENCODER_CAP_RECORD_TYPE                   20
4118
 
-
 
-
 
4197
#define ATOM_BRACKET_LAYOUT_RECORD_TYPE                21
Line 4119... Line 4198...
4119
 
4198
 
4120
//Must be updated when new record type is added,equal to that record definition!
4199
//Must be updated when new record type is added,equal to that record definition!
Line 4121... Line 4200...
4121
#define ATOM_MAX_OBJECT_RECORD_NUMBER             ATOM_ENCODER_CAP_RECORD_TYPE
4200
#define ATOM_MAX_OBJECT_RECORD_NUMBER             ATOM_BRACKET_LAYOUT_RECORD_TYPE
4122
 
4201
 
4123
typedef struct  _ATOM_I2C_RECORD
4202
typedef struct  _ATOM_I2C_RECORD
4124
{
4203
{
Line 4341... Line 4420...
4341
{
4420
{
4342
  ATOM_COMMON_RECORD_HEADER   sheader;
4421
  ATOM_COMMON_RECORD_HEADER   sheader;
4343
  USHORT                      usReserved;
4422
  USHORT                      usReserved;
4344
}ATOM_CONNECTOR_REMOTE_CAP_RECORD;
4423
}ATOM_CONNECTOR_REMOTE_CAP_RECORD;
Line -... Line 4424...
-
 
4424
 
-
 
4425
typedef struct  _ATOM_CONNECTOR_LAYOUT_INFO
-
 
4426
{
-
 
4427
   USHORT usConnectorObjectId;
-
 
4428
   UCHAR  ucConnectorType;
-
 
4429
   UCHAR  ucPosition;
-
 
4430
}ATOM_CONNECTOR_LAYOUT_INFO;
-
 
4431
 
-
 
4432
// define ATOM_CONNECTOR_LAYOUT_INFO.ucConnectorType to describe the display connector size
-
 
4433
#define CONNECTOR_TYPE_DVI_D                 1
-
 
4434
#define CONNECTOR_TYPE_DVI_I                 2
-
 
4435
#define CONNECTOR_TYPE_VGA                   3
-
 
4436
#define CONNECTOR_TYPE_HDMI                  4
-
 
4437
#define CONNECTOR_TYPE_DISPLAY_PORT          5
-
 
4438
#define CONNECTOR_TYPE_MINI_DISPLAY_PORT     6
-
 
4439
 
-
 
4440
typedef struct  _ATOM_BRACKET_LAYOUT_RECORD
-
 
4441
{
-
 
4442
  ATOM_COMMON_RECORD_HEADER   sheader;
-
 
4443
  UCHAR                       ucLength;
-
 
4444
  UCHAR                       ucWidth;
-
 
4445
  UCHAR                       ucConnNum;
-
 
4446
  UCHAR                       ucReserved;
-
 
4447
  ATOM_CONNECTOR_LAYOUT_INFO  asConnInfo[1];
-
 
4448
}ATOM_BRACKET_LAYOUT_RECORD;
4345
 
4449
 
4346
/****************************************************************************/
4450
/****************************************************************************/
4347
// ASIC voltage data table
4451
// ASIC voltage data table
4348
/****************************************************************************/
4452
/****************************************************************************/
4349
typedef struct  _ATOM_VOLTAGE_INFO_HEADER
4453
typedef struct  _ATOM_VOLTAGE_INFO_HEADER
Line 4414... Line 4518...
4414
#define VOLTAGE_CONTROL_ID_SCORPIO						0x06
4518
#define VOLTAGE_CONTROL_ID_SCORPIO						0x06
4415
#define	VOLTAGE_CONTROL_ID_VT1556M						0x07									
4519
#define	VOLTAGE_CONTROL_ID_VT1556M						0x07									
4416
#define	VOLTAGE_CONTROL_ID_CHL822x						0x08									
4520
#define	VOLTAGE_CONTROL_ID_CHL822x						0x08									
4417
#define	VOLTAGE_CONTROL_ID_VT1586M						0x09
4521
#define	VOLTAGE_CONTROL_ID_VT1586M						0x09
4418
#define VOLTAGE_CONTROL_ID_UP1637 						0x0A
4522
#define VOLTAGE_CONTROL_ID_UP1637 						0x0A
-
 
4523
#define	VOLTAGE_CONTROL_ID_CHL8214            0x0B
-
 
4524
#define	VOLTAGE_CONTROL_ID_UP1801             0x0C
-
 
4525
#define	VOLTAGE_CONTROL_ID_ST6788A            0x0D
-
 
4526
#define VOLTAGE_CONTROL_ID_CHLIR3564SVI2      0x0E
-
 
4527
#define VOLTAGE_CONTROL_ID_AD527x      	      0x0F
-
 
4528
#define VOLTAGE_CONTROL_ID_NCP81022    	      0x10
-
 
4529
#define VOLTAGE_CONTROL_ID_LTC2635			  0x11
Line 4419... Line 4530...
4419
 
4530
 
4420
typedef struct  _ATOM_VOLTAGE_OBJECT
4531
typedef struct  _ATOM_VOLTAGE_OBJECT
4421
{
4532
{
4422
 	 UCHAR		ucVoltageType;									//Indicate Voltage Source: VDDC, MVDDC, MVDDQ or MVDDCI	 
4533
 	 UCHAR		ucVoltageType;									//Indicate Voltage Source: VDDC, MVDDC, MVDDQ or MVDDCI	 
Line 4456... Line 4567...
4456
 	 UCHAR		ucVoltageType;									//Indicate Voltage Source: VDDC, MVDDC, MVDDQ or MVDDCI	 
4567
 	 UCHAR		ucVoltageType;									//Indicate Voltage Source: VDDC, MVDDC, MVDDQ or MVDDCI	 
4457
   UCHAR		ucVoltageMode;							    //Indicate voltage control mode: Init/Set/Leakage/Set phase 
4568
   UCHAR		ucVoltageMode;							    //Indicate voltage control mode: Init/Set/Leakage/Set phase 
4458
	 USHORT		usSize;													//Size of Object	
4569
	 USHORT		usSize;													//Size of Object	
4459
}ATOM_VOLTAGE_OBJECT_HEADER_V3;
4570
}ATOM_VOLTAGE_OBJECT_HEADER_V3;
Line -... Line 4571...
-
 
4571
 
-
 
4572
// ATOM_VOLTAGE_OBJECT_HEADER_V3.ucVoltageMode
-
 
4573
#define VOLTAGE_OBJ_GPIO_LUT                 0        //VOLTAGE and GPIO Lookup table ->ATOM_GPIO_VOLTAGE_OBJECT_V3
-
 
4574
#define VOLTAGE_OBJ_VR_I2C_INIT_SEQ          3        //VOLTAGE REGULATOR INIT sequece through I2C -> ATOM_I2C_VOLTAGE_OBJECT_V3
-
 
4575
#define VOLTAGE_OBJ_PHASE_LUT                4        //Set Vregulator Phase lookup table ->ATOM_GPIO_VOLTAGE_OBJECT_V3
-
 
4576
#define VOLTAGE_OBJ_SVID2                    7        //Indicate voltage control by SVID2 ->ATOM_SVID2_VOLTAGE_OBJECT_V3
-
 
4577
#define VOLTAGE_OBJ_EVV                      8 
-
 
4578
#define	VOLTAGE_OBJ_PWRBOOST_LEAKAGE_LUT     0x10     //Powerboost Voltage and LeakageId lookup table->ATOM_LEAKAGE_VOLTAGE_OBJECT_V3
-
 
4579
#define	VOLTAGE_OBJ_HIGH_STATE_LEAKAGE_LUT   0x11     //High voltage state Voltage and LeakageId lookup table->ATOM_LEAKAGE_VOLTAGE_OBJECT_V3
-
 
4580
#define VOLTAGE_OBJ_HIGH1_STATE_LEAKAGE_LUT  0x12     //High1 voltage state Voltage and LeakageId lookup table->ATOM_LEAKAGE_VOLTAGE_OBJECT_V3
4460
 
4581
 
4461
typedef struct  _VOLTAGE_LUT_ENTRY_V2
4582
typedef struct  _VOLTAGE_LUT_ENTRY_V2
4462
{
4583
{
4463
	 ULONG		ulVoltageId;									  // The Voltage ID which is used to program GPIO register
4584
	 ULONG		ulVoltageId;									  // The Voltage ID which is used to program GPIO register
4464
	 USHORT		usVoltageValue;									// The corresponding Voltage Value, in mV
4585
	 USHORT		usVoltageValue;									// The corresponding Voltage Value, in mV
Line 4471... Line 4592...
4471
	USHORT	usLeakageId;									  // The corresponding Voltage Value, in mV
4592
	USHORT	usLeakageId;									  // The corresponding Voltage Value, in mV
4472
}LEAKAGE_VOLTAGE_LUT_ENTRY_V2;
4593
}LEAKAGE_VOLTAGE_LUT_ENTRY_V2;
Line 4473... Line 4594...
4473
 
4594
 
4474
typedef struct  _ATOM_I2C_VOLTAGE_OBJECT_V3
4595
typedef struct  _ATOM_I2C_VOLTAGE_OBJECT_V3
4475
{
4596
{
4476
   ATOM_VOLTAGE_OBJECT_HEADER_V3 sHeader;
4597
   ATOM_VOLTAGE_OBJECT_HEADER_V3 sHeader;    // voltage mode = VOLTAGE_OBJ_VR_I2C_INIT_SEQ
4477
   UCHAR	ucVoltageRegulatorId;					  //Indicate Voltage Regulator Id
4598
   UCHAR	ucVoltageRegulatorId;					  //Indicate Voltage Regulator Id
4478
   UCHAR    ucVoltageControlI2cLine;
4599
   UCHAR    ucVoltageControlI2cLine;
4479
   UCHAR    ucVoltageControlAddress;
4600
   UCHAR    ucVoltageControlAddress;
4480
   UCHAR    ucVoltageControlOffset;	 	
4601
   UCHAR    ucVoltageControlOffset;	 	
4481
   ULONG    ulReserved;
4602
   ULONG    ulReserved;
4482
   VOLTAGE_LUT_ENTRY asVolI2cLut[1];        // end with 0xff
4603
   VOLTAGE_LUT_ENTRY asVolI2cLut[1];        // end with 0xff
Line -... Line 4604...
-
 
4604
}ATOM_I2C_VOLTAGE_OBJECT_V3;
-
 
4605
 
-
 
4606
// ATOM_I2C_VOLTAGE_OBJECT_V3.ucVoltageControlFlag
-
 
4607
#define VOLTAGE_DATA_ONE_BYTE                0
4483
}ATOM_I2C_VOLTAGE_OBJECT_V3;
4608
#define VOLTAGE_DATA_TWO_BYTE                1
4484
 
4609
 
4485
typedef struct  _ATOM_GPIO_VOLTAGE_OBJECT_V3
4610
typedef struct  _ATOM_GPIO_VOLTAGE_OBJECT_V3
4486
{
4611
{
4487
   ATOM_VOLTAGE_OBJECT_HEADER_V3 sHeader;   
4612
   ATOM_VOLTAGE_OBJECT_HEADER_V3 sHeader;   // voltage mode = VOLTAGE_OBJ_GPIO_LUT or VOLTAGE_OBJ_PHASE_LUT
4488
   UCHAR    ucVoltageGpioCntlId;         // default is 0 which indicate control through CG VID mode 
4613
   UCHAR    ucVoltageGpioCntlId;         // default is 0 which indicate control through CG VID mode 
4489
   UCHAR    ucGpioEntryNum;              // indiate the entry numbers of Votlage/Gpio value Look up table
4614
   UCHAR    ucGpioEntryNum;              // indiate the entry numbers of Votlage/Gpio value Look up table
4490
   UCHAR    ucPhaseDelay;                // phase delay in unit of micro second
4615
   UCHAR    ucPhaseDelay;                // phase delay in unit of micro second
4491
   UCHAR    ucReserved;   
4616
   UCHAR    ucReserved;   
4492
   ULONG    ulGpioMaskVal;               // GPIO Mask value
4617
   ULONG    ulGpioMaskVal;               // GPIO Mask value
Line 4493... Line 4618...
4493
   VOLTAGE_LUT_ENTRY_V2 asVolGpioLut[1];   
4618
   VOLTAGE_LUT_ENTRY_V2 asVolGpioLut[1];   
4494
}ATOM_GPIO_VOLTAGE_OBJECT_V3;
4619
}ATOM_GPIO_VOLTAGE_OBJECT_V3;
4495
 
4620
 
4496
typedef struct  _ATOM_LEAKAGE_VOLTAGE_OBJECT_V3
4621
typedef struct  _ATOM_LEAKAGE_VOLTAGE_OBJECT_V3
4497
{
4622
{
4498
   ATOM_VOLTAGE_OBJECT_HEADER_V3 sHeader;
4623
   ATOM_VOLTAGE_OBJECT_HEADER_V3 sHeader;    // voltage mode = 0x10/0x11/0x12
4499
   UCHAR    ucLeakageCntlId;             // default is 0
4624
   UCHAR    ucLeakageCntlId;             // default is 0
4500
   UCHAR    ucLeakageEntryNum;           // indicate the entry number of LeakageId/Voltage Lut table
4625
   UCHAR    ucLeakageEntryNum;           // indicate the entry number of LeakageId/Voltage Lut table
4501
   UCHAR    ucReserved[2];               
4626
   UCHAR    ucReserved[2];               
Line -... Line 4627...
-
 
4627
   ULONG    ulMaxVoltageLevel;
-
 
4628
   LEAKAGE_VOLTAGE_LUT_ENTRY_V2 asLeakageIdLut[1];   
-
 
4629
}ATOM_LEAKAGE_VOLTAGE_OBJECT_V3;
-
 
4630
 
-
 
4631
 
-
 
4632
typedef struct  _ATOM_SVID2_VOLTAGE_OBJECT_V3
-
 
4633
{
-
 
4634
   ATOM_VOLTAGE_OBJECT_HEADER_V3 sHeader;    // voltage mode = VOLTAGE_OBJ_SVID2
-
 
4635
// 14:7 – PSI0_VID
-
 
4636
// 6 – PSI0_EN
-
 
4637
// 5 – PSI1
-
 
4638
// 4:2 – load line slope trim. 
-
 
4639
// 1:0 – offset trim, 
-
 
4640
   USHORT   usLoadLine_PSI;    
-
 
4641
// GPU GPIO pin Id to SVID2 regulator VRHot pin. possible value 0~31. 0 means GPIO0, 31 means GPIO31
-
 
4642
   UCHAR    ucSVDGpioId;     //0~31 indicate GPIO0~31
4502
   ULONG    ulMaxVoltageLevel;
4643
   UCHAR    ucSVCGpioId;     //0~31 indicate GPIO0~31
4503
   LEAKAGE_VOLTAGE_LUT_ENTRY_V2 asLeakageIdLut[1];   
4644
   ULONG    ulReserved;
4504
}ATOM_LEAKAGE_VOLTAGE_OBJECT_V3;
4645
}ATOM_SVID2_VOLTAGE_OBJECT_V3;
4505
 
4646
 
-
 
4647
typedef union _ATOM_VOLTAGE_OBJECT_V3{
4506
typedef union _ATOM_VOLTAGE_OBJECT_V3{
4648
  ATOM_GPIO_VOLTAGE_OBJECT_V3 asGpioVoltageObj;
Line 4507... Line 4649...
4507
  ATOM_GPIO_VOLTAGE_OBJECT_V3 asGpioVoltageObj;
4649
  ATOM_I2C_VOLTAGE_OBJECT_V3 asI2cVoltageObj;
4508
  ATOM_I2C_VOLTAGE_OBJECT_V3 asI2cVoltageObj;
4650
  ATOM_LEAKAGE_VOLTAGE_OBJECT_V3 asLeakageObj;
4509
  ATOM_LEAKAGE_VOLTAGE_OBJECT_V3 asLeakageObj;
4651
  ATOM_SVID2_VOLTAGE_OBJECT_V3 asSVID2Obj;
Line 4534... Line 4676...
4534
{
4676
{
4535
	ATOM_COMMON_TABLE_HEADER asHeader;
4677
	ATOM_COMMON_TABLE_HEADER asHeader;
4536
	ATOM_ASIC_PROFILE_VOLTAGE asVoltage;
4678
	ATOM_ASIC_PROFILE_VOLTAGE asVoltage;
4537
}ATOM_ASIC_PROFILING_INFO;
4679
}ATOM_ASIC_PROFILING_INFO;
Line -... Line 4680...
-
 
4680
 
-
 
4681
typedef struct  _ATOM_ASIC_PROFILING_INFO_V2_1
-
 
4682
{
-
 
4683
  ATOM_COMMON_TABLE_HEADER			asHeader; 
-
 
4684
  UCHAR  ucLeakageBinNum;                // indicate the entry number of LeakageId/Voltage Lut table
-
 
4685
  USHORT usLeakageBinArrayOffset;        // offset of USHORT Leakage Bin list array ( from lower LeakageId to higher) 
-
 
4686
 
-
 
4687
  UCHAR  ucElbVDDC_Num;               
-
 
4688
  USHORT usElbVDDC_IdArrayOffset;        // offset of USHORT virtual VDDC voltage id ( 0xff01~0xff08 )
-
 
4689
  USHORT usElbVDDC_LevelArrayOffset;     // offset of 2 dimension voltage level USHORT array
-
 
4690
 
-
 
4691
  UCHAR  ucElbVDDCI_Num;
-
 
4692
  USHORT usElbVDDCI_IdArrayOffset;       // offset of USHORT virtual VDDCI voltage id ( 0xff01~0xff08 )
-
 
4693
  USHORT usElbVDDCI_LevelArrayOffset;    // offset of 2 dimension voltage level USHORT array
-
 
4694
}ATOM_ASIC_PROFILING_INFO_V2_1;
-
 
4695
 
-
 
4696
typedef struct  _ATOM_ASIC_PROFILING_INFO_V3_1
-
 
4697
{
-
 
4698
  ATOM_COMMON_TABLE_HEADER         asHeader; 
-
 
4699
  ULONG  ulEvvDerateTdp;
-
 
4700
  ULONG  ulEvvDerateTdc;
-
 
4701
  ULONG  ulBoardCoreTemp;
-
 
4702
  ULONG  ulMaxVddc;
-
 
4703
  ULONG  ulMinVddc;
-
 
4704
  ULONG  ulLoadLineSlop;
-
 
4705
  ULONG  ulLeakageTemp;
-
 
4706
  ULONG  ulLeakageVoltage;
-
 
4707
  ULONG  ulCACmEncodeRange;
-
 
4708
  ULONG  ulCACmEncodeAverage;
-
 
4709
  ULONG  ulCACbEncodeRange;
-
 
4710
  ULONG  ulCACbEncodeAverage;
-
 
4711
  ULONG  ulKt_bEncodeRange;
-
 
4712
  ULONG  ulKt_bEncodeAverage;
-
 
4713
  ULONG  ulKv_mEncodeRange;
-
 
4714
  ULONG  ulKv_mEncodeAverage;
-
 
4715
  ULONG  ulKv_bEncodeRange;
-
 
4716
  ULONG  ulKv_bEncodeAverage;
-
 
4717
  ULONG  ulLkgEncodeLn_MaxDivMin;
-
 
4718
  ULONG  ulLkgEncodeMin;
-
 
4719
  ULONG  ulEfuseLogisticAlpha;
-
 
4720
  USHORT usPowerDpm0;
-
 
4721
  USHORT usCurrentDpm0;
-
 
4722
  USHORT usPowerDpm1;
-
 
4723
  USHORT usCurrentDpm1;
-
 
4724
  USHORT usPowerDpm2;
-
 
4725
  USHORT usCurrentDpm2;
-
 
4726
  USHORT usPowerDpm3;
-
 
4727
  USHORT usCurrentDpm3;
-
 
4728
  USHORT usPowerDpm4;
-
 
4729
  USHORT usCurrentDpm4;
-
 
4730
  USHORT usPowerDpm5;
-
 
4731
  USHORT usCurrentDpm5;
-
 
4732
  USHORT usPowerDpm6;
-
 
4733
  USHORT usCurrentDpm6;
-
 
4734
  USHORT usPowerDpm7;
-
 
4735
  USHORT usCurrentDpm7;
-
 
4736
}ATOM_ASIC_PROFILING_INFO_V3_1;
-
 
4737
 
4538
 
4738
 
4539
typedef struct _ATOM_POWER_SOURCE_OBJECT
4739
typedef struct _ATOM_POWER_SOURCE_OBJECT
4540
{
4740
{
4541
	UCHAR	ucPwrSrcId;													// Power source
4741
	UCHAR	ucPwrSrcId;													// Power source
4542
	UCHAR	ucPwrSensorType;										// GPIO, I2C or none
4742
	UCHAR	ucPwrSensorType;										// GPIO, I2C or none
Line 4650... Line 4850...
4650
#define SYS_INFO_LVDSMISC__888_FPDI_MODE                                             0x01
4850
#define SYS_INFO_LVDSMISC__888_FPDI_MODE                                             0x01
4651
#define SYS_INFO_LVDSMISC__DL_CH_SWAP                                                0x02
4851
#define SYS_INFO_LVDSMISC__DL_CH_SWAP                                                0x02
4652
#define SYS_INFO_LVDSMISC__888_BPC                                                   0x04
4852
#define SYS_INFO_LVDSMISC__888_BPC                                                   0x04
4653
#define SYS_INFO_LVDSMISC__OVERRIDE_EN                                               0x08
4853
#define SYS_INFO_LVDSMISC__OVERRIDE_EN                                               0x08
4654
#define SYS_INFO_LVDSMISC__BLON_ACTIVE_LOW                                           0x10
4854
#define SYS_INFO_LVDSMISC__BLON_ACTIVE_LOW                                           0x10
-
 
4855
// new since Trinity
-
 
4856
#define SYS_INFO_LVDSMISC__TRAVIS_LVDS_VOL_OVERRIDE_EN                               0x20
Line 4655... Line 4857...
4655
 
4857
 
4656
// not used any more
4858
// not used any more
4657
#define SYS_INFO_LVDSMISC__VSYNC_ACTIVE_LOW                                          0x04
4859
#define SYS_INFO_LVDSMISC__VSYNC_ACTIVE_LOW                                          0x04
Line 4750... Line 4952...
4750
typedef struct _ATOM_FUSION_SYSTEM_INFO_V1
4952
typedef struct _ATOM_FUSION_SYSTEM_INFO_V1
4751
{
4953
{
4752
  ATOM_INTEGRATED_SYSTEM_INFO_V6    sIntegratedSysInfo;   
4954
  ATOM_INTEGRATED_SYSTEM_INFO_V6    sIntegratedSysInfo;   
4753
  ULONG  ulPowerplayTable[128];  
4955
  ULONG  ulPowerplayTable[128];  
4754
}ATOM_FUSION_SYSTEM_INFO_V1; 
4956
}ATOM_FUSION_SYSTEM_INFO_V1; 
-
 
4957
 
-
 
4958
 
-
 
4959
typedef struct _ATOM_TDP_CONFIG_BITS
-
 
4960
{
-
 
4961
#if ATOM_BIG_ENDIAN
-
 
4962
  ULONG   uReserved:2;
-
 
4963
  ULONG   uTDP_Value:14;  // Original TDP value in tens of milli watts
-
 
4964
  ULONG   uCTDP_Value:14; // Override value in tens of milli watts
-
 
4965
  ULONG   uCTDP_Enable:2; // = (uCTDP_Value > uTDP_Value? 2: (uCTDP_Value < uTDP_Value))
-
 
4966
#else
-
 
4967
  ULONG   uCTDP_Enable:2; // = (uCTDP_Value > uTDP_Value? 2: (uCTDP_Value < uTDP_Value))
-
 
4968
  ULONG   uCTDP_Value:14; // Override value in tens of milli watts
-
 
4969
  ULONG   uTDP_Value:14;  // Original TDP value in tens of milli watts
-
 
4970
  ULONG   uReserved:2;
-
 
4971
#endif
-
 
4972
}ATOM_TDP_CONFIG_BITS;
-
 
4973
 
-
 
4974
typedef union _ATOM_TDP_CONFIG
-
 
4975
{
-
 
4976
  ATOM_TDP_CONFIG_BITS TDP_config;
-
 
4977
  ULONG            TDP_config_all;
-
 
4978
}ATOM_TDP_CONFIG;
-
 
4979
 
4755
/**********************************************************************************************************************
4980
/**********************************************************************************************************************
4756
  ATOM_FUSION_SYSTEM_INFO_V1 Description
4981
  ATOM_FUSION_SYSTEM_INFO_V1 Description
4757
sIntegratedSysInfo:               refer to ATOM_INTEGRATED_SYSTEM_INFO_V6 definition.
4982
sIntegratedSysInfo:               refer to ATOM_INTEGRATED_SYSTEM_INFO_V6 definition.
4758
ulPowerplayTable[128]:            This 512 bytes memory is used to save ATOM_PPLIB_POWERPLAYTABLE3, starting form ulPowerplayTable[0]    
4983
ulPowerplayTable[128]:            This 512 bytes memory is used to save ATOM_PPLIB_POWERPLAYTABLE3, starting form ulPowerplayTable[0]    
4759
**********************************************************************************************************************/ 
4984
**********************************************************************************************************************/ 
Line 4782... Line 5007...
4782
  USHORT usExtDispConnInfoOffset;
5007
  USHORT usExtDispConnInfoOffset;
4783
  USHORT usPanelRefreshRateRange;     
5008
  USHORT usPanelRefreshRateRange;     
4784
  UCHAR  ucMemoryType;  
5009
  UCHAR  ucMemoryType;  
4785
  UCHAR  ucUMAChannelNumber;
5010
  UCHAR  ucUMAChannelNumber;
4786
  UCHAR  strVBIOSMsg[40];
5011
  UCHAR  strVBIOSMsg[40];
-
 
5012
  ATOM_TDP_CONFIG  asTdpConfig;
4787
  ULONG  ulReserved[20];
5013
  ULONG  ulReserved[19];
4788
  ATOM_AVAILABLE_SCLK_LIST   sAvail_SCLK[5];
5014
  ATOM_AVAILABLE_SCLK_LIST   sAvail_SCLK[5];
4789
  ULONG  ulGMCRestoreResetTime;
5015
  ULONG  ulGMCRestoreResetTime;
4790
  ULONG  ulMinimumNClk;
5016
  ULONG  ulMinimumNClk;
4791
  ULONG  ulIdleNClk;
5017
  ULONG  ulIdleNClk;
4792
  ULONG  ulDDR_DLL_PowerUpTime;
5018
  ULONG  ulDDR_DLL_PowerUpTime;
Line 4807... Line 5033...
4807
  UCHAR  ulBoostVid_2bit;  
5033
  UCHAR  ulBoostVid_2bit;  
4808
  UCHAR  EnableBoost;
5034
  UCHAR  EnableBoost;
4809
  USHORT GnbTdpLimit;
5035
  USHORT GnbTdpLimit;
4810
  USHORT usMaxLVDSPclkFreqInSingleLink;
5036
  USHORT usMaxLVDSPclkFreqInSingleLink;
4811
  UCHAR  ucLvdsMisc;
5037
  UCHAR  ucLvdsMisc;
4812
  UCHAR  ucLVDSReserved;
5038
  UCHAR  ucTravisLVDSVolAdjust;
4813
  UCHAR  ucLVDSPwrOnSeqDIGONtoDE_in4Ms;
5039
  UCHAR  ucLVDSPwrOnSeqDIGONtoDE_in4Ms;
4814
  UCHAR  ucLVDSPwrOnSeqDEtoVARY_BL_in4Ms;
5040
  UCHAR  ucLVDSPwrOnSeqDEtoVARY_BL_in4Ms;
4815
  UCHAR  ucLVDSPwrOffSeqVARY_BLtoDE_in4Ms;
5041
  UCHAR  ucLVDSPwrOffSeqVARY_BLtoDE_in4Ms;
4816
  UCHAR  ucLVDSPwrOffSeqDEtoDIGON_in4Ms;
5042
  UCHAR  ucLVDSPwrOffSeqDEtoDIGON_in4Ms;
4817
  UCHAR  ucLVDSOffToOnDelay_in4Ms;
5043
  UCHAR  ucLVDSOffToOnDelay_in4Ms;
4818
  UCHAR  ucLVDSPwrOnSeqVARY_BLtoBLON_in4Ms;
5044
  UCHAR  ucLVDSPwrOnSeqVARY_BLtoBLON_in4Ms;
4819
  UCHAR  ucLVDSPwrOffSeqBLONtoVARY_BL_in4Ms;
5045
  UCHAR  ucLVDSPwrOffSeqBLONtoVARY_BL_in4Ms;
4820
  UCHAR  ucLVDSReserved1;
5046
  UCHAR  ucMinAllowedBL_Level;
4821
  ULONG  ulLCDBitDepthControlVal;
5047
  ULONG  ulLCDBitDepthControlVal;
4822
  ULONG  ulNbpStateMemclkFreq[4];
5048
  ULONG  ulNbpStateMemclkFreq[4];
4823
  USHORT usNBP2Voltage;               
5049
  USHORT usNBP2Voltage;               
4824
  USHORT usNBP3Voltage;
5050
  USHORT usNBP3Voltage;
4825
  ULONG  ulNbpStateNClkFreq[4];
5051
  ULONG  ulNbpStateNClkFreq[4];
Line 4844... Line 5070...
4844
 
5070
 
4845
// ulGPUCapInfo
5071
// ulGPUCapInfo
4846
#define SYS_INFO_GPUCAPS__TMDSHDMI_COHERENT_SINGLEPLL_MODE                0x01
5072
#define SYS_INFO_GPUCAPS__TMDSHDMI_COHERENT_SINGLEPLL_MODE                0x01
4847
#define SYS_INFO_GPUCAPS__DP_SINGLEPLL_MODE                               0x02
5073
#define SYS_INFO_GPUCAPS__DP_SINGLEPLL_MODE                               0x02
-
 
5074
#define SYS_INFO_GPUCAPS__DISABLE_AUX_MODE_DETECT                         0x08
Line 4848... Line 5075...
4848
#define SYS_INFO_GPUCAPS__DISABLE_AUX_MODE_DETECT                         0x08
5075
#define SYS_INFO_GPUCAPS__ENABEL_DFS_BYPASS                               0x10
4849
 
5076
 
4850
/**********************************************************************************************************************
5077
/**********************************************************************************************************************
4851
  ATOM_INTEGRATED_SYSTEM_INFO_V1_7 Description
5078
  ATOM_INTEGRATED_SYSTEM_INFO_V1_7 Description
Line 4943... Line 5170...
4943
ucLVDSMisc:                       [bit0] LVDS 888bit panel mode =0: LVDS 888 panel in LDI mode, =1: LVDS 888 panel in FPDI mode
5170
ucLVDSMisc:                       [bit0] LVDS 888bit panel mode =0: LVDS 888 panel in LDI mode, =1: LVDS 888 panel in FPDI mode
4944
                                  [bit1] LVDS panel lower and upper link mapping =0: lower link and upper link not swap, =1: lower link and upper link are swapped
5171
                                  [bit1] LVDS panel lower and upper link mapping =0: lower link and upper link not swap, =1: lower link and upper link are swapped
4945
                                  [bit2] LVDS 888bit per color mode  =0: 666 bit per color =1:888 bit per color
5172
                                  [bit2] LVDS 888bit per color mode  =0: 666 bit per color =1:888 bit per color
4946
                                  [bit3] LVDS parameter override enable  =0: ucLvdsMisc parameter are not used =1: ucLvdsMisc parameter should be used
5173
                                  [bit3] LVDS parameter override enable  =0: ucLvdsMisc parameter are not used =1: ucLvdsMisc parameter should be used
4947
                                  [bit4] Polarity of signal sent to digital BLON output pin. =0: not inverted(active high) =1: inverted ( active low )
5174
                                  [bit4] Polarity of signal sent to digital BLON output pin. =0: not inverted(active high) =1: inverted ( active low )
-
 
5175
                                  [bit5] Travid LVDS output voltage override enable, when =1, use ucTravisLVDSVolAdjust value to overwrite Traivs register LVDS_CTRL_4
-
 
5176
ucTravisLVDSVolAdjust             When ucLVDSMisc[5]=1,it means platform SBIOS want to overwrite TravisLVDSVoltage. Then VBIOS will use ucTravisLVDSVolAdjust 
-
 
5177
                                  value to program Travis register LVDS_CTRL_4
4948
ucLVDSPwrOnSeqDIGONtoDE_in4Ms:    LVDS power up sequence time in unit of 4ms, time delay from DIGON signal active to data enable signal active( DE ).
5178
ucLVDSPwrOnSeqDIGONtoDE_in4Ms:    LVDS power up sequence time in unit of 4ms, time delay from DIGON signal active to data enable signal active( DE ).
4949
                                  =0 mean use VBIOS default which is 8 ( 32ms ). The LVDS power up sequence is as following: DIGON->DE->VARY_BL->BLON. 
5179
                                  =0 mean use VBIOS default which is 8 ( 32ms ). The LVDS power up sequence is as following: DIGON->DE->VARY_BL->BLON. 
4950
                                  This parameter is used by VBIOS only. VBIOS will patch LVDS_InfoTable.
5180
                                  This parameter is used by VBIOS only. VBIOS will patch LVDS_InfoTable.
4951
ucLVDSPwrOnDEtoVARY_BL_in4Ms:     LVDS power up sequence time in unit of 4ms., time delay from DE( data enable ) active to Vary Brightness enable signal active( VARY_BL ).  
5181
ucLVDSPwrOnDEtoVARY_BL_in4Ms:     LVDS power up sequence time in unit of 4ms., time delay from DE( data enable ) active to Vary Brightness enable signal active( VARY_BL ).  
4952
                                  =0 mean use VBIOS default which is 90 ( 360ms ). The LVDS power up sequence is as following: DIGON->DE->VARY_BL->BLON. 
5182
                                  =0 mean use VBIOS default which is 90 ( 360ms ). The LVDS power up sequence is as following: DIGON->DE->VARY_BL->BLON. 
Line 4962... Line 5192...
4962
 
5192
 
4963
ucLVDSOffToOnDelay_in4Ms:         LVDS power down sequence time in unit of 4ms. Time delay from DIGON signal off to DIGON signal active. 
5193
ucLVDSOffToOnDelay_in4Ms:         LVDS power down sequence time in unit of 4ms. Time delay from DIGON signal off to DIGON signal active. 
4964
                                  =0 means to use VBIOS default delay which is 125 ( 500ms ).
5194
                                  =0 means to use VBIOS default delay which is 125 ( 500ms ).
Line -... Line 5195...
-
 
5195
                                  This parameter is used by VBIOS only. VBIOS will patch LVDS_InfoTable.
4965
                                  This parameter is used by VBIOS only. VBIOS will patch LVDS_InfoTable.
5196
 
4966
 
5197
ucLVDSPwrOnSeqVARY_BLtoBLON_in4Ms:
4967
ucLVDSPwrOnVARY_BLtoBLON_in4Ms:   LVDS power up sequence time in unit of 4ms. Time delay from VARY_BL signal on to DLON signal active. 
5198
                                  LVDS power up sequence time in unit of 4ms. Time delay from VARY_BL signal on to DLON signal active. 
Line -... Line 5199...
-
 
5199
                                  =0 means to use VBIOS default delay which is 0 ( 0ms ).
4968
                                  =0 means to use VBIOS default delay which is 0 ( 0ms ).
5200
                                  This parameter is used by VBIOS only. VBIOS will patch LVDS_InfoTable.
4969
                                  This parameter is used by VBIOS only. VBIOS will patch LVDS_InfoTable.
5201
 
4970
 
5202
ucLVDSPwrOffSeqBLONtoVARY_BL_in4Ms:  
Line -... Line 5203...
-
 
5203
                                  LVDS power down sequence time in unit of 4ms. Time delay from BLON signal off to VARY_BL signal off. 
-
 
5204
                                  =0 means to use VBIOS default delay which is 0 ( 0ms ).
4971
ucLVDSPwrOffBLONtoVARY_BL_in4Ms:  LVDS power down sequence time in unit of 4ms. Time delay from BLON signal off to VARY_BL signal off. 
5205
                                  This parameter is used by VBIOS only. VBIOS will patch LVDS_InfoTable.
Line 4972... Line 5206...
4972
                                  =0 means to use VBIOS default delay which is 0 ( 0ms ).
5206
 
Line -... Line 5207...
-
 
5207
ucMinAllowedBL_Level:             Lowest LCD backlight PWM level. This is customer platform specific parameters. By default it is 0. 
-
 
5208
 
-
 
5209
ulNbpStateMemclkFreq[4]:          system memory clock frequncey in unit of 10Khz in different NB pstate. 
-
 
5210
 
-
 
5211
**********************************************************************************************************************/
-
 
5212
 
-
 
5213
// this IntegrateSystemInfoTable is used for Kaveri & Kabini APU
-
 
5214
typedef struct _ATOM_INTEGRATED_SYSTEM_INFO_V1_8
-
 
5215
{
-
 
5216
  ATOM_COMMON_TABLE_HEADER   sHeader;
-
 
5217
  ULONG  ulBootUpEngineClock;
-
 
5218
  ULONG  ulDentistVCOFreq;
-
 
5219
  ULONG  ulBootUpUMAClock;
-
 
5220
  ATOM_CLK_VOLT_CAPABILITY   sDISPCLK_Voltage[4];
-
 
5221
  ULONG  ulBootUpReqDisplayVector;
-
 
5222
  ULONG  ulVBIOSMisc;
-
 
5223
  ULONG  ulGPUCapInfo;
-
 
5224
  ULONG  ulDISP_CLK2Freq;
-
 
5225
  USHORT usRequestedPWMFreqInHz;
-
 
5226
  UCHAR  ucHtcTmpLmt;
-
 
5227
  UCHAR  ucHtcHystLmt;
-
 
5228
  ULONG  ulReserved2;
-
 
5229
  ULONG  ulSystemConfig;            
-
 
5230
  ULONG  ulCPUCapInfo;
-
 
5231
  ULONG  ulReserved3;
-
 
5232
  USHORT usGPUReservedSysMemSize;
-
 
5233
  USHORT usExtDispConnInfoOffset;
-
 
5234
  USHORT usPanelRefreshRateRange;     
-
 
5235
  UCHAR  ucMemoryType;  
-
 
5236
  UCHAR  ucUMAChannelNumber;
-
 
5237
  UCHAR  strVBIOSMsg[40];
-
 
5238
  ATOM_TDP_CONFIG  asTdpConfig;
-
 
5239
  ULONG  ulReserved[19];
-
 
5240
  ATOM_AVAILABLE_SCLK_LIST   sAvail_SCLK[5];
-
 
5241
  ULONG  ulGMCRestoreResetTime;
-
 
5242
  ULONG  ulReserved4;
-
 
5243
  ULONG  ulIdleNClk;
-
 
5244
  ULONG  ulDDR_DLL_PowerUpTime;
-
 
5245
  ULONG  ulDDR_PLL_PowerUpTime;
-
 
5246
  USHORT usPCIEClkSSPercentage;
-
 
5247
  USHORT usPCIEClkSSType;
-
 
5248
  USHORT usLvdsSSPercentage;
-
 
5249
  USHORT usLvdsSSpreadRateIn10Hz;
-
 
5250
  USHORT usHDMISSPercentage;
-
 
5251
  USHORT usHDMISSpreadRateIn10Hz;
-
 
5252
  USHORT usDVISSPercentage;
-
 
5253
  USHORT usDVISSpreadRateIn10Hz;
-
 
5254
  ULONG  ulGPUReservedSysMemBaseAddrLo;
-
 
5255
  ULONG  ulGPUReservedSysMemBaseAddrHi;
-
 
5256
  ULONG  ulReserved5[3];
-
 
5257
  USHORT usMaxLVDSPclkFreqInSingleLink;
-
 
5258
  UCHAR  ucLvdsMisc;
-
 
5259
  UCHAR  ucTravisLVDSVolAdjust;
-
 
5260
  UCHAR  ucLVDSPwrOnSeqDIGONtoDE_in4Ms;
-
 
5261
  UCHAR  ucLVDSPwrOnSeqDEtoVARY_BL_in4Ms;
-
 
5262
  UCHAR  ucLVDSPwrOffSeqVARY_BLtoDE_in4Ms;
-
 
5263
  UCHAR  ucLVDSPwrOffSeqDEtoDIGON_in4Ms;
-
 
5264
  UCHAR  ucLVDSOffToOnDelay_in4Ms;
-
 
5265
  UCHAR  ucLVDSPwrOnSeqVARY_BLtoBLON_in4Ms;
-
 
5266
  UCHAR  ucLVDSPwrOffSeqBLONtoVARY_BL_in4Ms;
-
 
5267
  UCHAR  ucMinAllowedBL_Level;
-
 
5268
  ULONG  ulLCDBitDepthControlVal;
-
 
5269
  ULONG  ulNbpStateMemclkFreq[4];
-
 
5270
  ULONG  ulReserved6;               
-
 
5271
  ULONG  ulNbpStateNClkFreq[4];
-
 
5272
  USHORT usNBPStateVoltage[4];            
-
 
5273
  USHORT usBootUpNBVoltage;   
-
 
5274
  USHORT usReserved2; 
-
 
5275
  ATOM_EXTERNAL_DISPLAY_CONNECTION_INFO sExtDispConnInfo;
-
 
5276
}ATOM_INTEGRATED_SYSTEM_INFO_V1_8;
-
 
5277
 
-
 
5278
/**********************************************************************************************************************
-
 
5279
  ATOM_INTEGRATED_SYSTEM_INFO_V1_8 Description
-
 
5280
ulBootUpEngineClock:              VBIOS bootup Engine clock frequency, in 10kHz unit. if it is equal 0, then VBIOS use pre-defined bootup engine clock
-
 
5281
ulDentistVCOFreq:                 Dentist VCO clock in 10kHz unit. 
-
 
5282
ulBootUpUMAClock:                 System memory boot up clock frequency in 10Khz unit. 
-
 
5283
sDISPCLK_Voltage:                 Report Display clock frequency requirement on GNB voltage(up to 4 voltage levels).
-
 
5284
 
-
 
5285
ulBootUpReqDisplayVector:         VBIOS boot up display IDs, following are supported devices in Trinity projects:
-
 
5286
                                  ATOM_DEVICE_CRT1_SUPPORT                  0x0001
-
 
5287
                                  ATOM_DEVICE_DFP1_SUPPORT                  0x0008
-
 
5288
                                  ATOM_DEVICE_DFP6_SUPPORT                  0x0040
-
 
5289
                                  ATOM_DEVICE_DFP2_SUPPORT                  0x0080
-
 
5290
                                  ATOM_DEVICE_DFP3_SUPPORT                  0x0200
-
 
5291
                                  ATOM_DEVICE_DFP4_SUPPORT                  0x0400
-
 
5292
                                  ATOM_DEVICE_DFP5_SUPPORT                  0x0800
-
 
5293
                                  ATOM_DEVICE_LCD1_SUPPORT                  0x0002
-
 
5294
 
-
 
5295
ulVBIOSMisc:      	              Miscellenous flags for VBIOS requirement and interface 
-
 
5296
                                  bit[0]=0: INT15 callback function Get LCD EDID ( ax=4e08, bl=1b ) is not supported by SBIOS. 
-
 
5297
                                        =1: INT15 callback function Get LCD EDID ( ax=4e08, bl=1b ) is supported by SBIOS.
-
 
5298
                                  bit[1]=0: INT15 callback function Get boot display( ax=4e08, bl=01h) is not supported by SBIOS
-
 
5299
                                        =1: INT15 callback function Get boot display( ax=4e08, bl=01h) is supported by SBIOS
-
 
5300
                                  bit[2]=0: INT15 callback function Get panel Expansion ( ax=4e08, bl=02h) is not supported by SBIOS
-
 
5301
                                        =1: INT15 callback function Get panel Expansion ( ax=4e08, bl=02h) is supported by SBIOS
-
 
5302
                                  bit[3]=0: VBIOS fast boot is disable
-
 
5303
                                        =1: VBIOS fast boot is enable. ( VBIOS skip display device detection in every set mode if LCD panel is connect and LID is open)
-
 
5304
 
-
 
5305
ulGPUCapInfo:                     bit[0~2]= Reserved
-
 
5306
                                  bit[3]=0: Enable AUX HW mode detection logic
-
 
5307
                                        =1: Disable AUX HW mode detection logic
-
 
5308
                                  bit[4]=0: Disable DFS bypass feature
-
 
5309
                                        =1: Enable DFS bypass feature
-
 
5310
 
-
 
5311
usRequestedPWMFreqInHz:           When it's set to 0x0 by SBIOS: the LCD BackLight is not controlled by GPU(SW). 
-
 
5312
                                  Any attempt to change BL using VBIOS function or enable VariBri from PP table is not effective since ATOM_BIOS_INFO_BL_CONTROLLED_BY_GPU==0;
-
 
5313
                                  
-
 
5314
                                  When it's set to a non-zero frequency, the BackLight is controlled by GPU (SW) in one of two ways below:
-
 
5315
                                  1. SW uses the GPU BL PWM output to control the BL, in chis case, this non-zero frequency determines what freq GPU should use;
-
 
5316
                                  VBIOS will set up proper PWM frequency and ATOM_BIOS_INFO_BL_CONTROLLED_BY_GPU==1,as the result,
-
 
5317
                                  Changing BL using VBIOS function is functional in both driver and non-driver present environment; 
-
 
5318
                                  and enabling VariBri under the driver environment from PP table is optional.
-
 
5319
 
-
 
5320
                                  2. SW uses other means to control BL (like DPCD),this non-zero frequency serves as a flag only indicating
-
 
5321
                                  that BL control from GPU is expected.
-
 
5322
                                  VBIOS will NOT set up PWM frequency but make ATOM_BIOS_INFO_BL_CONTROLLED_BY_GPU==1
-
 
5323
                                  Changing BL using VBIOS function could be functional in both driver and non-driver present environment,but
-
 
5324
                                  it's per platform 
-
 
5325
                                  and enabling VariBri under the driver environment from PP table is optional.
-
 
5326
 
-
 
5327
ucHtcTmpLmt:                      Refer to D18F3x64 bit[22:16], HtcTmpLmt. Threshold on value to enter HTC_active state.
-
 
5328
ucHtcHystLmt:                     Refer to D18F3x64 bit[27:24], HtcHystLmt. 
-
 
5329
                                  To calculate threshold off value to exit HTC_active state, which is Threshold on vlaue minus ucHtcHystLmt.
-
 
5330
 
-
 
5331
ulSystemConfig:                   Bit[0]=0: PCIE Power Gating Disabled 
-
 
5332
                                        =1: PCIE Power Gating Enabled
-
 
5333
                                  Bit[1]=0: DDR-DLL shut-down feature disabled.
-
 
5334
                                         1: DDR-DLL shut-down feature enabled.
-
 
5335
                                  Bit[2]=0: DDR-PLL Power down feature disabled.
-
 
5336
                                         1: DDR-PLL Power down feature enabled. 
-
 
5337
                                  Bit[3]=0: GNB DPM is disabled
-
 
5338
                                        =1: GNB DPM is enabled                                
-
 
5339
ulCPUCapInfo:                     TBD
-
 
5340
 
-
 
5341
usExtDispConnInfoOffset:          Offset to sExtDispConnInfo inside the structure
-
 
5342
usPanelRefreshRateRange:          Bit vector for LCD supported refresh rate range. If DRR is requestd by the platform, at least two bits need to be set
-
 
5343
                                  to indicate a range.
-
 
5344
                                  SUPPORTED_LCD_REFRESHRATE_30Hz          0x0004
-
 
5345
                                  SUPPORTED_LCD_REFRESHRATE_40Hz          0x0008
-
 
5346
                                  SUPPORTED_LCD_REFRESHRATE_50Hz          0x0010
-
 
5347
                                  SUPPORTED_LCD_REFRESHRATE_60Hz          0x0020
-
 
5348
 
-
 
5349
ucMemoryType:                     [3:0]=1:DDR1;=2:DDR2;=3:DDR3;=5:GDDR5; [7:4] is reserved.
-
 
5350
ucUMAChannelNumber:      	        System memory channel numbers. 
-
 
5351
 
-
 
5352
strVBIOSMsg[40]:                  VBIOS boot up customized message string 
-
 
5353
 
-
 
5354
sAvail_SCLK[5]:                   Arrays to provide availabe list of SLCK and corresponding voltage, order from low to high  
-
 
5355
 
-
 
5356
ulGMCRestoreResetTime:            GMC power restore and GMC reset time to calculate data reconnection latency. Unit in ns. 
-
 
5357
ulIdleNClk:                       NCLK speed while memory runs in self-refresh state, used to calculate self-refresh latency. Unit in 10kHz.
-
 
5358
ulDDR_DLL_PowerUpTime:            DDR PHY DLL power up time. Unit in ns.
-
 
5359
ulDDR_PLL_PowerUpTime:            DDR PHY PLL power up time. Unit in ns.
-
 
5360
 
-
 
5361
usPCIEClkSSPercentage:            PCIE Clock Spread Spectrum Percentage in unit 0.01%; 100 mean 1%.
-
 
5362
usPCIEClkSSType:                  PCIE Clock Spread Spectrum Type. 0 for Down spread(default); 1 for Center spread.
-
 
5363
usLvdsSSPercentage:               LVDS panel ( not include eDP ) Spread Spectrum Percentage in unit of 0.01%, =0, use VBIOS default setting. 
-
 
5364
usLvdsSSpreadRateIn10Hz:          LVDS panel ( not include eDP ) Spread Spectrum frequency in unit of 10Hz, =0, use VBIOS default setting. 
-
 
5365
usHDMISSPercentage:               HDMI Spread Spectrum Percentage in unit 0.01%; 100 mean 1%,  =0, use VBIOS default setting. 
-
 
5366
usHDMISSpreadRateIn10Hz:          HDMI Spread Spectrum frequency in unit of 10Hz,  =0, use VBIOS default setting. 
-
 
5367
usDVISSPercentage:                DVI Spread Spectrum Percentage in unit 0.01%; 100 mean 1%,  =0, use VBIOS default setting. 
-
 
5368
usDVISSpreadRateIn10Hz:           DVI Spread Spectrum frequency in unit of 10Hz,  =0, use VBIOS default setting. 
-
 
5369
 
-
 
5370
usGPUReservedSysMemSize:          Reserved system memory size for ACP engine in APU GNB, units in MB. 0/2/4MB based on CMOS options, current default could be 0MB. KV only, not on KB.
-
 
5371
ulGPUReservedSysMemBaseAddrLo:    Low 32 bits base address to the reserved system memory. 
-
 
5372
ulGPUReservedSysMemBaseAddrHi:    High 32 bits base address to the reserved system memory. 
-
 
5373
 
-
 
5374
usMaxLVDSPclkFreqInSingleLink:    Max pixel clock LVDS panel single link, if=0 means VBIOS use default threhold, right now it is 85Mhz
-
 
5375
ucLVDSMisc:                       [bit0] LVDS 888bit panel mode =0: LVDS 888 panel in LDI mode, =1: LVDS 888 panel in FPDI mode
-
 
5376
                                  [bit1] LVDS panel lower and upper link mapping =0: lower link and upper link not swap, =1: lower link and upper link are swapped
-
 
5377
                                  [bit2] LVDS 888bit per color mode  =0: 666 bit per color =1:888 bit per color
-
 
5378
                                  [bit3] LVDS parameter override enable  =0: ucLvdsMisc parameter are not used =1: ucLvdsMisc parameter should be used
-
 
5379
                                  [bit4] Polarity of signal sent to digital BLON output pin. =0: not inverted(active high) =1: inverted ( active low )
-
 
5380
                                  [bit5] Travid LVDS output voltage override enable, when =1, use ucTravisLVDSVolAdjust value to overwrite Traivs register LVDS_CTRL_4
-
 
5381
ucTravisLVDSVolAdjust             When ucLVDSMisc[5]=1,it means platform SBIOS want to overwrite TravisLVDSVoltage. Then VBIOS will use ucTravisLVDSVolAdjust 
-
 
5382
                                  value to program Travis register LVDS_CTRL_4
-
 
5383
ucLVDSPwrOnSeqDIGONtoDE_in4Ms:    
-
 
5384
                                  LVDS power up sequence time in unit of 4ms, time delay from DIGON signal active to data enable signal active( DE ).
-
 
5385
                                  =0 mean use VBIOS default which is 8 ( 32ms ). The LVDS power up sequence is as following: DIGON->DE->VARY_BL->BLON. 
-
 
5386
                                  This parameter is used by VBIOS only. VBIOS will patch LVDS_InfoTable.
-
 
5387
ucLVDSPwrOnDEtoVARY_BL_in4Ms:     
-
 
5388
                                  LVDS power up sequence time in unit of 4ms., time delay from DE( data enable ) active to Vary Brightness enable signal active( VARY_BL ).  
-
 
5389
                                  =0 mean use VBIOS default which is 90 ( 360ms ). The LVDS power up sequence is as following: DIGON->DE->VARY_BL->BLON. 
-
 
5390
                                  This parameter is used by VBIOS only. VBIOS will patch LVDS_InfoTable.
-
 
5391
ucLVDSPwrOffVARY_BLtoDE_in4Ms:    
-
 
5392
                                  LVDS power down sequence time in unit of 4ms, time delay from data enable ( DE ) signal off to LCDVCC (DIGON) off. 
-
 
5393
                                  =0 mean use VBIOS default delay which is 8 ( 32ms ). The LVDS power down sequence is as following: BLON->VARY_BL->DE->DIGON
-
 
5394
                                  This parameter is used by VBIOS only. VBIOS will patch LVDS_InfoTable.
-
 
5395
ucLVDSPwrOffDEtoDIGON_in4Ms:      
-
 
5396
                                   LVDS power down sequence time in unit of 4ms, time delay from vary brightness enable signal( VARY_BL) off to data enable ( DE ) signal off. 
-
 
5397
                                  =0 mean use VBIOS default which is 90 ( 360ms ). The LVDS power down sequence is as following: BLON->VARY_BL->DE->DIGON
-
 
5398
                                  This parameter is used by VBIOS only. VBIOS will patch LVDS_InfoTable.
-
 
5399
ucLVDSOffToOnDelay_in4Ms:         
-
 
5400
                                  LVDS power down sequence time in unit of 4ms. Time delay from DIGON signal off to DIGON signal active. 
-
 
5401
                                  =0 means to use VBIOS default delay which is 125 ( 500ms ).
-
 
5402
                                  This parameter is used by VBIOS only. VBIOS will patch LVDS_InfoTable.
-
 
5403
ucLVDSPwrOnSeqVARY_BLtoBLON_in4Ms:
-
 
5404
                                  LVDS power up sequence time in unit of 4ms. Time delay from VARY_BL signal on to DLON signal active. 
-
 
5405
                                  =0 means to use VBIOS default delay which is 0 ( 0ms ).
-
 
5406
                                  This parameter is used by VBIOS only. VBIOS will patch LVDS_InfoTable.
-
 
5407
 
-
 
5408
ucLVDSPwrOffSeqBLONtoVARY_BL_in4Ms:  
-
 
5409
                                  LVDS power down sequence time in unit of 4ms. Time delay from BLON signal off to VARY_BL signal off. 
-
 
5410
                                  =0 means to use VBIOS default delay which is 0 ( 0ms ).
-
 
5411
                                  This parameter is used by VBIOS only. VBIOS will patch LVDS_InfoTable.
-
 
5412
ucMinAllowedBL_Level:             Lowest LCD backlight PWM level. This is customer platform specific parameters. By default it is 0. 
-
 
5413
 
-
 
5414
ulLCDBitDepthControlVal:          GPU display control encoder bit dither control setting, used to program register mmFMT_BIT_DEPTH_CONTROL
-
 
5415
 
-
 
5416
ulNbpStateMemclkFreq[4]:          system memory clock frequncey in unit of 10Khz in different NB P-State(P0, P1, P2 & P3).
-
 
5417
ulNbpStateNClkFreq[4]:            NB P-State NClk frequency in different NB P-State
-
 
5418
usNBPStateVoltage[4]:             NB P-State (P0/P1 & P2/P3) voltage; NBP3 refers to lowes voltage
-
 
5419
usBootUpNBVoltage:                NB P-State voltage during boot up before driver loaded 
-
 
5420
sExtDispConnInfo:                 Display connector information table provided to VBIOS
-
 
5421
 
-
 
5422
**********************************************************************************************************************/
-
 
5423
 
-
 
5424
// this Table is used for Kaveri/Kabini APU
-
 
5425
typedef struct _ATOM_FUSION_SYSTEM_INFO_V2
4973
                                  This parameter is used by VBIOS only. VBIOS will patch LVDS_InfoTable.
5426
{
4974
 
5427
  ATOM_INTEGRATED_SYSTEM_INFO_V1_8    sIntegratedSysInfo;       // refer to ATOM_INTEGRATED_SYSTEM_INFO_V1_8 definition
4975
ulNbpStateMemclkFreq[4]:          system memory clock frequncey in unit of 10Khz in different NB pstate. 
5428
  ULONG                               ulPowerplayTable[128];    // Update comments here to link new powerplay table definition structure
4976
 
5429
}ATOM_FUSION_SYSTEM_INFO_V2; 
4977
**********************************************************************************************************************/
5430
 
Line 5034... Line 5487...
5034
#define ASIC_INTERNAL_SS_ON_LVDS    6
5487
#define ASIC_INTERNAL_SS_ON_LVDS    6
5035
#define ASIC_INTERNAL_SS_ON_DP      7
5488
#define ASIC_INTERNAL_SS_ON_DP      7
5036
#define ASIC_INTERNAL_SS_ON_DCPLL   8
5489
#define ASIC_INTERNAL_SS_ON_DCPLL   8
5037
#define ASIC_EXTERNAL_SS_ON_DP_CLOCK 9
5490
#define ASIC_EXTERNAL_SS_ON_DP_CLOCK 9
5038
#define ASIC_INTERNAL_VCE_SS        10
5491
#define ASIC_INTERNAL_VCE_SS        10
-
 
5492
#define ASIC_INTERNAL_GPUPLL_SS          11
-
 
5493
 
Line 5039... Line 5494...
5039
 
5494
 
5040
typedef struct _ATOM_ASIC_SS_ASSIGNMENT_V2
5495
typedef struct _ATOM_ASIC_SS_ASSIGNMENT_V2
5041
{
5496
{
5042
	ULONG								ulTargetClockRange;						//For mem/engine/uvd, Clock Out frequence (VCO ), in unit of 10Khz
5497
	ULONG								ulTargetClockRange;						//For mem/engine/uvd, Clock Out frequence (VCO ), in unit of 10Khz
5043
                                                    //For TMDS/HDMI/LVDS, it is pixel clock , for DP, it is link clock ( 27000 or 16200 )
5498
                                                    //For TMDS/HDMI/LVDS, it is pixel clock , for DP, it is link clock ( 27000 or 16200 )
5044
  USHORT              usSpreadSpectrumPercentage;		//in unit of 0.01%
5499
  USHORT              usSpreadSpectrumPercentage;		//in unit of 0.01% or 0.001%, decided by ucSpreadSpectrumMode bit4
5045
	USHORT							usSpreadRateIn10Hz;						//in unit of 10Hz, modulation freq
5500
	USHORT							usSpreadRateIn10Hz;						//in unit of 10Hz, modulation freq
5046
  UCHAR               ucClockIndication;					  //Indicate which clock source needs SS
5501
  UCHAR               ucClockIndication;					  //Indicate which clock source needs SS
5047
	UCHAR								ucSpreadSpectrumMode;					//Bit0=0 Down Spread,=1 Center Spread, bit1=0: internal SS bit1=1: external SS
5502
	UCHAR								ucSpreadSpectrumMode;					//Bit0=0 Down Spread,=1 Center Spread, bit1=0: internal SS bit1=1: external SS
5048
	UCHAR								ucReserved[2];
5503
	UCHAR								ucReserved[2];
Line 5077... Line 5532...
5077
  UCHAR               ucClockIndication;					  //Indicate which clock source needs SS
5532
  UCHAR               ucClockIndication;					  //Indicate which clock source needs SS
5078
	UCHAR								ucSpreadSpectrumMode;					//Bit0=0 Down Spread,=1 Center Spread, bit1=0: internal SS bit1=1: external SS
5533
	UCHAR								ucSpreadSpectrumMode;					//Bit0=0 Down Spread,=1 Center Spread, bit1=0: internal SS bit1=1: external SS
5079
	UCHAR								ucReserved[2];
5534
	UCHAR								ucReserved[2];
5080
}ATOM_ASIC_SS_ASSIGNMENT_V3;
5535
}ATOM_ASIC_SS_ASSIGNMENT_V3;
Line -... Line 5536...
-
 
5536
 
-
 
5537
//ATOM_ASIC_SS_ASSIGNMENT_V3.ucSpreadSpectrumMode
-
 
5538
#define SS_MODE_V3_CENTRE_SPREAD_MASK             0x01
-
 
5539
#define SS_MODE_V3_EXTERNAL_SS_MASK               0x02
-
 
5540
#define SS_MODE_V3_PERCENTAGE_DIV_BY_1000_MASK    0x10
5081
 
5541
 
5082
typedef struct _ATOM_ASIC_INTERNAL_SS_INFO_V3
5542
typedef struct _ATOM_ASIC_INTERNAL_SS_INFO_V3
5083
{
5543
{
5084
  ATOM_COMMON_TABLE_HEADER	      sHeader; 
5544
  ATOM_COMMON_TABLE_HEADER	      sHeader; 
5085
  ATOM_ASIC_SS_ASSIGNMENT_V3		  asSpreadSpectrum[1];      //this is pointer only. 
5545
  ATOM_ASIC_SS_ASSIGNMENT_V3		  asSpreadSpectrum[1];      //this is pointer only. 
Line 5445... Line 5905...
5445
#define ATOM_S7_DOS_MODE_VESAb0             0x01
5905
#define ATOM_S7_DOS_MODE_VESAb0             0x01
5446
#define ATOM_S7_DOS_MODE_EXTb0              0x02
5906
#define ATOM_S7_DOS_MODE_EXTb0              0x02
5447
#define ATOM_S7_DOS_MODE_PIXEL_DEPTHb0      0x0C
5907
#define ATOM_S7_DOS_MODE_PIXEL_DEPTHb0      0x0C
5448
#define ATOM_S7_DOS_MODE_PIXEL_FORMATb0     0xF0
5908
#define ATOM_S7_DOS_MODE_PIXEL_FORMATb0     0xF0
5449
#define ATOM_S7_DOS_8BIT_DAC_ENb1           0x01
5909
#define ATOM_S7_DOS_8BIT_DAC_ENb1           0x01
-
 
5910
#define ATOM_S7_ASIC_INIT_COMPLETEb1        0x02
-
 
5911
#define ATOM_S7_ASIC_INIT_COMPLETE_MASK     0x00000200
5450
#define ATOM_S7_DOS_MODE_NUMBERw1           0x0FFFF
5912
#define ATOM_S7_DOS_MODE_NUMBERw1           0x0FFFF
Line 5451... Line 5913...
5451
 
5913
 
Line 5452... Line 5914...
5452
#define ATOM_S7_DOS_8BIT_DAC_EN_SHIFT       8
5914
#define ATOM_S7_DOS_8BIT_DAC_EN_SHIFT       8
Line 5717... Line 6179...
5717
#define INDIRECT_IO_PLL            1
6179
#define INDIRECT_IO_PLL            1
5718
#define INDIRECT_IO_MC             2
6180
#define INDIRECT_IO_MC             2
5719
#define INDIRECT_IO_PCIE           3
6181
#define INDIRECT_IO_PCIE           3
5720
#define INDIRECT_IO_PCIEP          4
6182
#define INDIRECT_IO_PCIEP          4
5721
#define INDIRECT_IO_NBMISC         5
6183
#define INDIRECT_IO_NBMISC         5
-
 
6184
#define INDIRECT_IO_SMU            5
Line 5722... Line 6185...
5722
 
6185
 
5723
#define INDIRECT_IO_PLL_READ       INDIRECT_IO_PLL   | INDIRECT_READ
6186
#define INDIRECT_IO_PLL_READ       INDIRECT_IO_PLL   | INDIRECT_READ
5724
#define INDIRECT_IO_PLL_WRITE      INDIRECT_IO_PLL   | INDIRECT_WRITE
6187
#define INDIRECT_IO_PLL_WRITE      INDIRECT_IO_PLL   | INDIRECT_WRITE
5725
#define INDIRECT_IO_MC_READ        INDIRECT_IO_MC    | INDIRECT_READ
6188
#define INDIRECT_IO_MC_READ        INDIRECT_IO_MC    | INDIRECT_READ
Line 5728... Line 6191...
5728
#define INDIRECT_IO_PCIE_WRITE     INDIRECT_IO_PCIE  | INDIRECT_WRITE
6191
#define INDIRECT_IO_PCIE_WRITE     INDIRECT_IO_PCIE  | INDIRECT_WRITE
5729
#define INDIRECT_IO_PCIEP_READ     INDIRECT_IO_PCIEP | INDIRECT_READ
6192
#define INDIRECT_IO_PCIEP_READ     INDIRECT_IO_PCIEP | INDIRECT_READ
5730
#define INDIRECT_IO_PCIEP_WRITE    INDIRECT_IO_PCIEP | INDIRECT_WRITE
6193
#define INDIRECT_IO_PCIEP_WRITE    INDIRECT_IO_PCIEP | INDIRECT_WRITE
5731
#define INDIRECT_IO_NBMISC_READ    INDIRECT_IO_NBMISC | INDIRECT_READ
6194
#define INDIRECT_IO_NBMISC_READ    INDIRECT_IO_NBMISC | INDIRECT_READ
5732
#define INDIRECT_IO_NBMISC_WRITE   INDIRECT_IO_NBMISC | INDIRECT_WRITE
6195
#define INDIRECT_IO_NBMISC_WRITE   INDIRECT_IO_NBMISC | INDIRECT_WRITE
-
 
6196
#define INDIRECT_IO_SMU_READ       INDIRECT_IO_SMU | INDIRECT_READ
-
 
6197
#define INDIRECT_IO_SMU_WRITE      INDIRECT_IO_SMU | INDIRECT_WRITE
Line 5733... Line 6198...
5733
 
6198
 
5734
typedef struct _ATOM_OEM_INFO
6199
typedef struct _ATOM_OEM_INFO
5735
{ 
6200
{ 
5736
	ATOM_COMMON_TABLE_HEADER sHeader;
6201
	ATOM_COMMON_TABLE_HEADER sHeader;
Line 5873... Line 6338...
5873
#define _64Mx8              0x41
6338
#define _64Mx8              0x41
5874
#define _64Mx16             0x42
6339
#define _64Mx16             0x42
5875
#define _64Mx32             0x43
6340
#define _64Mx32             0x43
5876
#define _128Mx8             0x51
6341
#define _128Mx8             0x51
5877
#define _128Mx16            0x52
6342
#define _128Mx16            0x52
-
 
6343
#define _128Mx32            0x53
5878
#define _256Mx8             0x61
6344
#define _256Mx8             0x61
5879
#define _256Mx16            0x62
6345
#define _256Mx16            0x62
-
 
6346
#define _512Mx8             0x71
Line 5880... Line 6347...
5880
 
6347
 
5881
#define SAMSUNG             0x1
6348
#define SAMSUNG             0x1
5882
#define INFINEON            0x2
6349
#define INFINEON            0x2
5883
#define ELPIDA              0x3
6350
#define ELPIDA              0x3
Line 5891... Line 6358...
5891
 
6358
 
5892
#define QIMONDA             INFINEON
6359
#define QIMONDA             INFINEON
5893
#define PROMOS              MOSEL
6360
#define PROMOS              MOSEL
5894
#define KRETON              INFINEON
6361
#define KRETON              INFINEON
-
 
6362
#define ELIXIR              NANYA
-
 
6363
#define MEZZA               ELPIDA
Line 5895... Line 6364...
5895
#define ELIXIR              NANYA
6364
 
Line 5896... Line 6365...
5896
 
6365
 
5897
/////////////Support for GDDR5 MC uCode to reside in upper 64K of ROM/////////////
6366
/////////////Support for GDDR5 MC uCode to reside in upper 64K of ROM/////////////
Line 6619... Line 7088...
6619
  UCHAR  ucDCERevision;   
7088
  UCHAR  ucDCERevision;   
6620
  UCHAR  ucMaxDispEngineNum;
7089
  UCHAR  ucMaxDispEngineNum;
6621
  UCHAR  ucMaxActiveDispEngineNum;
7090
  UCHAR  ucMaxActiveDispEngineNum;
6622
  UCHAR  ucMaxPPLLNum;
7091
  UCHAR  ucMaxPPLLNum;
6623
  UCHAR  ucCoreRefClkSource;                          // value of CORE_REF_CLK_SOURCE
7092
  UCHAR  ucCoreRefClkSource;                          // value of CORE_REF_CLK_SOURCE
-
 
7093
  UCHAR  ucDispCaps;
6624
  UCHAR  ucReserved[3];
7094
  UCHAR  ucReserved[2];
6625
	ASIC_TRANSMITTER_INFO_V2  asTransmitterInfo[1];     // for alligment only
7095
	ASIC_TRANSMITTER_INFO_V2  asTransmitterInfo[1];     // for alligment only
6626
}ATOM_DISP_OUT_INFO_V3;
7096
}ATOM_DISP_OUT_INFO_V3;
Line -... Line 7097...
-
 
7097
 
-
 
7098
//ucDispCaps
-
 
7099
#define DISPLAY_CAPS__DP_PCLK_FROM_PPLL        0x01
-
 
7100
#define DISPLAY_CAPS__FORCE_DISPDEV_CONNECTED  0x02
6627
 
7101
 
6628
typedef enum CORE_REF_CLK_SOURCE{
7102
typedef enum CORE_REF_CLK_SOURCE{
6629
  CLOCK_SRC_XTALIN=0,
7103
  CLOCK_SRC_XTALIN=0,
6630
  CLOCK_SRC_XO_IN=1,
7104
  CLOCK_SRC_XO_IN=1,
6631
  CLOCK_SRC_XO_IN2=2,
7105
  CLOCK_SRC_XO_IN2=2,
Line 6827... Line 7301...
6827
  USHORT usPhyAnalogSettingOffset;       // offset of CLOCK_CONDITION_SETTING_ENTRY* with None-DP mode Analog Setting for each link clock range
7301
  USHORT usPhyAnalogSettingOffset;       // offset of CLOCK_CONDITION_SETTING_ENTRY* with None-DP mode Analog Setting for each link clock range
6828
  USHORT usPhyPllRegListOffset;          // offset of CLOCK_CONDITION_REGESTER_INFO* with Phy Pll register Info 
7302
  USHORT usPhyPllRegListOffset;          // offset of CLOCK_CONDITION_REGESTER_INFO* with Phy Pll register Info 
6829
  USHORT usPhyPllSettingOffset;          // offset of CLOCK_CONDITION_SETTING_ENTRY* with Phy Pll Settings
7303
  USHORT usPhyPllSettingOffset;          // offset of CLOCK_CONDITION_SETTING_ENTRY* with Phy Pll Settings
6830
}DIG_TRANSMITTER_INFO_HEADER_V3_1;
7304
}DIG_TRANSMITTER_INFO_HEADER_V3_1;
Line -... Line 7305...
-
 
7305
 
-
 
7306
typedef struct _DIG_TRANSMITTER_INFO_HEADER_V3_2{  
-
 
7307
  ATOM_COMMON_TABLE_HEADER sHeader;  
-
 
7308
  USHORT usDPVsPreEmphSettingOffset;     // offset of PHY_ANALOG_SETTING_INFO * with DP Voltage Swing and Pre-Emphasis for each Link clock 
-
 
7309
  USHORT usPhyAnalogRegListOffset;       // offset of CLOCK_CONDITION_REGESTER_INFO* with None-DP mode Analog Setting's register Info 
-
 
7310
  USHORT usPhyAnalogSettingOffset;       // offset of CLOCK_CONDITION_SETTING_ENTRY* with None-DP mode Analog Setting for each link clock range
-
 
7311
  USHORT usPhyPllRegListOffset;          // offset of CLOCK_CONDITION_REGESTER_INFO* with Phy Pll register Info 
-
 
7312
  USHORT usPhyPllSettingOffset;          // offset of CLOCK_CONDITION_SETTING_ENTRY* with Phy Pll Settings
-
 
7313
  USHORT usDPSSRegListOffset;            // offset of CLOCK_CONDITION_REGESTER_INFO* with Phy SS Pll register Info 
-
 
7314
  USHORT usDPSSSettingOffset;            // offset of CLOCK_CONDITION_SETTING_ENTRY* with Phy SS Pll Settings
-
 
7315
}DIG_TRANSMITTER_INFO_HEADER_V3_2;
6831
 
7316
 
6832
typedef struct _CLOCK_CONDITION_REGESTER_INFO{
7317
typedef struct _CLOCK_CONDITION_REGESTER_INFO{
6833
  USHORT usRegisterIndex;
7318
  USHORT usRegisterIndex;
6834
  UCHAR  ucStartBit;
7319
  UCHAR  ucStartBit;
6835
  UCHAR  ucEndBit;
7320
  UCHAR  ucEndBit;
Line 6850... Line 7335...
6850
typedef struct _PHY_CONDITION_REG_VAL{
7335
typedef struct _PHY_CONDITION_REG_VAL{
6851
  ULONG  ulCondition;
7336
  ULONG  ulCondition;
6852
  ULONG  ulRegVal;
7337
  ULONG  ulRegVal;
6853
}PHY_CONDITION_REG_VAL;
7338
}PHY_CONDITION_REG_VAL;
Line -... Line 7339...
-
 
7339
 
-
 
7340
typedef struct _PHY_CONDITION_REG_VAL_V2{
-
 
7341
  ULONG  ulCondition;
-
 
7342
  UCHAR  ucCondition2;
-
 
7343
  ULONG  ulRegVal;
-
 
7344
}PHY_CONDITION_REG_VAL_V2;
6854
 
7345
 
6855
typedef struct _PHY_CONDITION_REG_INFO{
7346
typedef struct _PHY_CONDITION_REG_INFO{
6856
  USHORT usRegIndex;
7347
  USHORT usRegIndex;
6857
  USHORT usSize;
7348
  USHORT usSize;
6858
  PHY_CONDITION_REG_VAL asRegVal[1];
7349
  PHY_CONDITION_REG_VAL asRegVal[1];
Line -... Line 7350...
-
 
7350
}PHY_CONDITION_REG_INFO;
-
 
7351
 
-
 
7352
typedef struct _PHY_CONDITION_REG_INFO_V2{
-
 
7353
  USHORT usRegIndex;
-
 
7354
  USHORT usSize;
-
 
7355
  PHY_CONDITION_REG_VAL_V2 asRegVal[1];
6859
}PHY_CONDITION_REG_INFO;
7356
}PHY_CONDITION_REG_INFO_V2;
6860
 
7357
 
6861
typedef struct _PHY_ANALOG_SETTING_INFO{
7358
typedef struct _PHY_ANALOG_SETTING_INFO{
6862
  UCHAR  ucEncodeMode;
7359
  UCHAR  ucEncodeMode;
6863
  UCHAR  ucPhySel;
7360
  UCHAR  ucPhySel;
6864
  USHORT usSize;
7361
  USHORT usSize;
Line -... Line 7362...
-
 
7362
  PHY_CONDITION_REG_INFO  asAnalogSetting[1];
-
 
7363
}PHY_ANALOG_SETTING_INFO;
-
 
7364
 
-
 
7365
typedef struct _PHY_ANALOG_SETTING_INFO_V2{
-
 
7366
  UCHAR  ucEncodeMode;
-
 
7367
  UCHAR  ucPhySel;
-
 
7368
  USHORT usSize;
-
 
7369
  PHY_CONDITION_REG_INFO_V2  asAnalogSetting[1];
-
 
7370
}PHY_ANALOG_SETTING_INFO_V2;
-
 
7371
 
-
 
7372
typedef struct _GFX_HAVESTING_PARAMETERS {
-
 
7373
  UCHAR ucGfxBlkId;                        //GFX blk id to be harvested, like CU, RB or PRIM
-
 
7374
  UCHAR ucReserved;                        //reserved 
-
 
7375
  UCHAR ucActiveUnitNumPerSH;              //requested active CU/RB/PRIM number per shader array
-
 
7376
  UCHAR ucMaxUnitNumPerSH;                 //max CU/RB/PRIM number per shader array   
-
 
7377
} GFX_HAVESTING_PARAMETERS;
-
 
7378
 
-
 
7379
//ucGfxBlkId
-
 
7380
#define GFX_HARVESTING_CU_ID               0
6865
  PHY_CONDITION_REG_INFO  asAnalogSetting[1];
7381
#define GFX_HARVESTING_RB_ID               1
6866
}PHY_ANALOG_SETTING_INFO;
7382
#define GFX_HARVESTING_PRIM_ID             2
6867
 
7383
 
Line 6868... Line 7384...
6868
/****************************************************************************/	
7384
/****************************************************************************/	
6869
//Portion VI: Definitinos for vbios MC scratch registers that driver used
7385
//Portion VI: Definitinos for vbios MC scratch registers that driver used
6870
/****************************************************************************/
7386
/****************************************************************************/
6871
 
7387
 
6872
#define MC_MISC0__MEMORY_TYPE_MASK    0xF0000000
7388
#define MC_MISC0__MEMORY_TYPE_MASK    0xF0000000
6873
#define MC_MISC0__MEMORY_TYPE__GDDR1  0x10000000
7389
#define MC_MISC0__MEMORY_TYPE__GDDR1  0x10000000
-
 
7390
#define MC_MISC0__MEMORY_TYPE__DDR2   0x20000000
6874
#define MC_MISC0__MEMORY_TYPE__DDR2   0x20000000
7391
#define MC_MISC0__MEMORY_TYPE__GDDR3  0x30000000
Line -... Line 7392...
-
 
7392
#define MC_MISC0__MEMORY_TYPE__GDDR4  0x40000000
-
 
7393
#define MC_MISC0__MEMORY_TYPE__GDDR5  0x50000000
-
 
7394
#define MC_MISC0__MEMORY_TYPE__HBM    0x60000000
-
 
7395
#define MC_MISC0__MEMORY_TYPE__DDR3   0xB0000000
-
 
7396
 
-
 
7397
#define ATOM_MEM_TYPE_DDR_STRING      "DDR"
-
 
7398
#define ATOM_MEM_TYPE_DDR2_STRING     "DDR2"
-
 
7399
#define ATOM_MEM_TYPE_GDDR3_STRING    "GDDR3"
6875
#define MC_MISC0__MEMORY_TYPE__GDDR3  0x30000000
7400
#define ATOM_MEM_TYPE_GDDR4_STRING    "GDDR4"
6876
#define MC_MISC0__MEMORY_TYPE__GDDR4  0x40000000
7401
#define ATOM_MEM_TYPE_GDDR5_STRING    "GDDR5"
6877
#define MC_MISC0__MEMORY_TYPE__GDDR5  0x50000000
7402
#define ATOM_MEM_TYPE_HBM_STRING      "HBM"
Line 6878... Line 7403...
6878
#define MC_MISC0__MEMORY_TYPE__DDR3   0xB0000000
7403
#define ATOM_MEM_TYPE_DDR3_STRING     "DDR3"
Line 7237... Line 7762...
7237
	UCHAR ucSizeOfPowerModeEntry;
7762
	UCHAR ucSizeOfPowerModeEntry;
7238
	UCHAR ucNumOfPowerModeEntries;
7763
	UCHAR ucNumOfPowerModeEntries;
7239
	ATOM_POWERMODE_INFO_V3 asPowerPlayInfo[ATOM_MAX_NUMBEROF_POWER_BLOCK];
7764
	ATOM_POWERMODE_INFO_V3 asPowerPlayInfo[ATOM_MAX_NUMBEROF_POWER_BLOCK];
7240
}ATOM_POWERPLAY_INFO_V3;
7765
}ATOM_POWERPLAY_INFO_V3;
Line 7241... Line -...
7241
 
-
 
7242
/* New PPlib */
-
 
7243
/**************************************************************************/
-
 
7244
typedef struct _ATOM_PPLIB_THERMALCONTROLLER
-
 
7245
 
-
 
7246
{
-
 
7247
    UCHAR ucType;           // one of ATOM_PP_THERMALCONTROLLER_*
-
 
7248
    UCHAR ucI2cLine;        // as interpreted by DAL I2C
-
 
7249
    UCHAR ucI2cAddress;
-
 
7250
    UCHAR ucFanParameters;  // Fan Control Parameters.
-
 
7251
    UCHAR ucFanMinRPM;      // Fan Minimum RPM (hundreds) -- for display purposes only.
-
 
7252
    UCHAR ucFanMaxRPM;      // Fan Maximum RPM (hundreds) -- for display purposes only.
-
 
7253
    UCHAR ucReserved;       // ----
-
 
7254
    UCHAR ucFlags;          // to be defined
-
 
7255
} ATOM_PPLIB_THERMALCONTROLLER;
-
 
7256
 
-
 
7257
#define ATOM_PP_FANPARAMETERS_TACHOMETER_PULSES_PER_REVOLUTION_MASK 0x0f
-
 
7258
#define ATOM_PP_FANPARAMETERS_NOFAN                                 0x80    // No fan is connected to this controller.
-
 
7259
 
-
 
7260
#define ATOM_PP_THERMALCONTROLLER_NONE      0
-
 
7261
#define ATOM_PP_THERMALCONTROLLER_LM63      1  // Not used by PPLib
-
 
7262
#define ATOM_PP_THERMALCONTROLLER_ADM1032   2  // Not used by PPLib
-
 
7263
#define ATOM_PP_THERMALCONTROLLER_ADM1030   3  // Not used by PPLib
-
 
7264
#define ATOM_PP_THERMALCONTROLLER_MUA6649   4  // Not used by PPLib
-
 
7265
#define ATOM_PP_THERMALCONTROLLER_LM64      5
-
 
7266
#define ATOM_PP_THERMALCONTROLLER_F75375    6  // Not used by PPLib
-
 
7267
#define ATOM_PP_THERMALCONTROLLER_RV6xx     7
-
 
7268
#define ATOM_PP_THERMALCONTROLLER_RV770     8
-
 
7269
#define ATOM_PP_THERMALCONTROLLER_ADT7473   9
-
 
7270
#define ATOM_PP_THERMALCONTROLLER_EXTERNAL_GPIO     11
-
 
7271
#define ATOM_PP_THERMALCONTROLLER_EVERGREEN 12
-
 
7272
#define ATOM_PP_THERMALCONTROLLER_EMC2103   13  /* 0x0D */ // Only fan control will be implemented, do NOT show this in PPGen.
-
 
7273
#define ATOM_PP_THERMALCONTROLLER_SUMO      14  /* 0x0E */ // Sumo type, used internally
-
 
7274
#define ATOM_PP_THERMALCONTROLLER_NISLANDS  15
-
 
7275
#define ATOM_PP_THERMALCONTROLLER_SISLANDS  16
-
 
7276
#define ATOM_PP_THERMALCONTROLLER_LM96163   17
-
 
7277
 
-
 
7278
// Thermal controller 'combo type' to use an external controller for Fan control and an internal controller for thermal.
-
 
7279
// We probably should reserve the bit 0x80 for this use.
-
 
7280
// To keep the number of these types low we should also use the same code for all ASICs (i.e. do not distinguish RV6xx and RV7xx Internal here).
-
 
7281
// The driver can pick the correct internal controller based on the ASIC.
-
 
7282
 
-
 
7283
#define ATOM_PP_THERMALCONTROLLER_ADT7473_WITH_INTERNAL   0x89    // ADT7473 Fan Control + Internal Thermal Controller
-
 
7284
#define ATOM_PP_THERMALCONTROLLER_EMC2103_WITH_INTERNAL   0x8D    // EMC2103 Fan Control + Internal Thermal Controller
-
 
7285
 
-
 
7286
typedef struct _ATOM_PPLIB_STATE
-
 
7287
{
-
 
7288
    UCHAR ucNonClockStateIndex;
-
 
7289
    UCHAR ucClockStateIndices[1]; // variable-sized
-
 
7290
} ATOM_PPLIB_STATE;
-
 
7291
 
-
 
7292
 
-
 
7293
typedef struct _ATOM_PPLIB_FANTABLE
-
 
7294
{
-
 
7295
    UCHAR   ucFanTableFormat;                // Change this if the table format changes or version changes so that the other fields are not the same.
-
 
7296
    UCHAR   ucTHyst;                         // Temperature hysteresis. Integer.
-
 
7297
    USHORT  usTMin;                          // The temperature, in 0.01 centigrades, below which we just run at a minimal PWM.
-
 
7298
    USHORT  usTMed;                          // The middle temperature where we change slopes.
-
 
7299
    USHORT  usTHigh;                         // The high point above TMed for adjusting the second slope.
-
 
7300
    USHORT  usPWMMin;                        // The minimum PWM value in percent (0.01% increments).
-
 
7301
    USHORT  usPWMMed;                        // The PWM value (in percent) at TMed.
-
 
7302
    USHORT  usPWMHigh;                       // The PWM value at THigh.
-
 
7303
} ATOM_PPLIB_FANTABLE;
-
 
7304
 
-
 
7305
typedef struct _ATOM_PPLIB_FANTABLE2
-
 
7306
{
-
 
7307
    ATOM_PPLIB_FANTABLE basicTable;
-
 
7308
    USHORT  usTMax;                          // The max temperature
-
 
7309
} ATOM_PPLIB_FANTABLE2;
-
 
7310
 
-
 
7311
typedef struct _ATOM_PPLIB_EXTENDEDHEADER
-
 
7312
{
-
 
7313
    USHORT  usSize;
-
 
7314
    ULONG   ulMaxEngineClock;   // For Overdrive.
-
 
7315
    ULONG   ulMaxMemoryClock;   // For Overdrive.
-
 
7316
    // Add extra system parameters here, always adjust size to include all fields.
-
 
7317
    USHORT  usVCETableOffset; //points to ATOM_PPLIB_VCE_Table
-
 
7318
    USHORT  usUVDTableOffset;   //points to ATOM_PPLIB_UVD_Table
-
 
7319
} ATOM_PPLIB_EXTENDEDHEADER;
-
 
7320
 
-
 
7321
//// ATOM_PPLIB_POWERPLAYTABLE::ulPlatformCaps
-
 
7322
#define ATOM_PP_PLATFORM_CAP_BACKBIAS 1
-
 
7323
#define ATOM_PP_PLATFORM_CAP_POWERPLAY 2
-
 
7324
#define ATOM_PP_PLATFORM_CAP_SBIOSPOWERSOURCE 4
-
 
7325
#define ATOM_PP_PLATFORM_CAP_ASPM_L0s 8
-
 
7326
#define ATOM_PP_PLATFORM_CAP_ASPM_L1 16
-
 
7327
#define ATOM_PP_PLATFORM_CAP_HARDWAREDC 32
-
 
7328
#define ATOM_PP_PLATFORM_CAP_GEMINIPRIMARY 64
-
 
7329
#define ATOM_PP_PLATFORM_CAP_STEPVDDC 128
-
 
7330
#define ATOM_PP_PLATFORM_CAP_VOLTAGECONTROL 256
-
 
7331
#define ATOM_PP_PLATFORM_CAP_SIDEPORTCONTROL 512
-
 
7332
#define ATOM_PP_PLATFORM_CAP_TURNOFFPLL_ASPML1 1024
-
 
7333
#define ATOM_PP_PLATFORM_CAP_HTLINKCONTROL 2048
-
 
7334
#define ATOM_PP_PLATFORM_CAP_MVDDCONTROL 4096
-
 
7335
#define ATOM_PP_PLATFORM_CAP_GOTO_BOOT_ON_ALERT 0x2000              // Go to boot state on alerts, e.g. on an AC->DC transition.
-
 
7336
#define ATOM_PP_PLATFORM_CAP_DONT_WAIT_FOR_VBLANK_ON_ALERT 0x4000   // Do NOT wait for VBLANK during an alert (e.g. AC->DC transition).
-
 
7337
#define ATOM_PP_PLATFORM_CAP_VDDCI_CONTROL 0x8000                   // Does the driver control VDDCI independently from VDDC.
-
 
7338
#define ATOM_PP_PLATFORM_CAP_REGULATOR_HOT 0x00010000               // Enable the 'regulator hot' feature.
-
 
7339
#define ATOM_PP_PLATFORM_CAP_BACO          0x00020000               // Does the driver supports BACO state.
-
 
7340
 
-
 
7341
 
-
 
7342
typedef struct _ATOM_PPLIB_POWERPLAYTABLE
-
 
7343
{
-
 
7344
      ATOM_COMMON_TABLE_HEADER sHeader;
-
 
7345
 
-
 
7346
      UCHAR ucDataRevision;
-
 
7347
 
-
 
7348
      UCHAR ucNumStates;
-
 
7349
      UCHAR ucStateEntrySize;
-
 
7350
      UCHAR ucClockInfoSize;
-
 
7351
      UCHAR ucNonClockSize;
-
 
7352
 
-
 
7353
      // offset from start of this table to array of ucNumStates ATOM_PPLIB_STATE structures
-
 
7354
      USHORT usStateArrayOffset;
-
 
7355
 
-
 
7356
      // offset from start of this table to array of ASIC-specific structures,
-
 
7357
      // currently ATOM_PPLIB_CLOCK_INFO.
-
 
7358
      USHORT usClockInfoArrayOffset;
-
 
7359
 
-
 
7360
      // offset from start of this table to array of ATOM_PPLIB_NONCLOCK_INFO
-
 
7361
      USHORT usNonClockInfoArrayOffset;
-
 
7362
 
-
 
7363
      USHORT usBackbiasTime;    // in microseconds
-
 
7364
      USHORT usVoltageTime;     // in microseconds
-
 
7365
      USHORT usTableSize;       //the size of this structure, or the extended structure
-
 
7366
 
-
 
7367
      ULONG ulPlatformCaps;            // See ATOM_PPLIB_CAPS_*
-
 
7368
 
-
 
7369
      ATOM_PPLIB_THERMALCONTROLLER    sThermalController;
-
 
7370
 
-
 
7371
      USHORT usBootClockInfoOffset;
-
 
7372
      USHORT usBootNonClockInfoOffset;
-
 
7373
 
-
 
7374
} ATOM_PPLIB_POWERPLAYTABLE;
-
 
7375
 
-
 
7376
typedef struct _ATOM_PPLIB_POWERPLAYTABLE2
-
 
7377
{
-
 
7378
    ATOM_PPLIB_POWERPLAYTABLE basicTable;
-
 
7379
    UCHAR   ucNumCustomThermalPolicy;
-
 
7380
    USHORT  usCustomThermalPolicyArrayOffset;
-
 
7381
}ATOM_PPLIB_POWERPLAYTABLE2, *LPATOM_PPLIB_POWERPLAYTABLE2;
-
 
7382
 
-
 
7383
typedef struct _ATOM_PPLIB_POWERPLAYTABLE3
-
 
7384
{
-
 
7385
    ATOM_PPLIB_POWERPLAYTABLE2 basicTable2;
-
 
7386
    USHORT                     usFormatID;                      // To be used ONLY by PPGen.
-
 
7387
    USHORT                     usFanTableOffset;
-
 
7388
    USHORT                     usExtendendedHeaderOffset;
-
 
7389
} ATOM_PPLIB_POWERPLAYTABLE3, *LPATOM_PPLIB_POWERPLAYTABLE3;
-
 
7390
 
-
 
7391
typedef struct _ATOM_PPLIB_POWERPLAYTABLE4
-
 
7392
{
-
 
7393
    ATOM_PPLIB_POWERPLAYTABLE3 basicTable3;
-
 
7394
    ULONG                      ulGoldenPPID;                    // PPGen use only     
-
 
7395
    ULONG                      ulGoldenRevision;                // PPGen use only
-
 
7396
    USHORT                     usVddcDependencyOnSCLKOffset;
-
 
7397
    USHORT                     usVddciDependencyOnMCLKOffset;
-
 
7398
    USHORT                     usVddcDependencyOnMCLKOffset;
-
 
7399
    USHORT                     usMaxClockVoltageOnDCOffset;
-
 
7400
    USHORT                     usVddcPhaseShedLimitsTableOffset;    // Points to ATOM_PPLIB_PhaseSheddingLimits_Table
-
 
7401
    USHORT                     usReserved;  
-
 
7402
} ATOM_PPLIB_POWERPLAYTABLE4, *LPATOM_PPLIB_POWERPLAYTABLE4;
-
 
7403
 
-
 
7404
typedef struct _ATOM_PPLIB_POWERPLAYTABLE5
-
 
7405
{
-
 
7406
    ATOM_PPLIB_POWERPLAYTABLE4 basicTable4;
-
 
7407
    ULONG                      ulTDPLimit;
-
 
7408
    ULONG                      ulNearTDPLimit;
-
 
7409
    ULONG                      ulSQRampingThreshold;
-
 
7410
    USHORT                     usCACLeakageTableOffset;         // Points to ATOM_PPLIB_CAC_Leakage_Table
-
 
7411
    ULONG                      ulCACLeakage;                    // The iLeakage for driver calculated CAC leakage table
-
 
7412
    USHORT                     usTDPODLimit;
-
 
7413
    USHORT                     usLoadLineSlope;                 // in milliOhms * 100
-
 
7414
} ATOM_PPLIB_POWERPLAYTABLE5, *LPATOM_PPLIB_POWERPLAYTABLE5;
-
 
7415
 
-
 
7416
//// ATOM_PPLIB_NONCLOCK_INFO::usClassification
-
 
7417
#define ATOM_PPLIB_CLASSIFICATION_UI_MASK          0x0007
-
 
7418
#define ATOM_PPLIB_CLASSIFICATION_UI_SHIFT         0
-
 
7419
#define ATOM_PPLIB_CLASSIFICATION_UI_NONE          0
-
 
7420
#define ATOM_PPLIB_CLASSIFICATION_UI_BATTERY       1
-
 
7421
#define ATOM_PPLIB_CLASSIFICATION_UI_BALANCED      3
-
 
7422
#define ATOM_PPLIB_CLASSIFICATION_UI_PERFORMANCE   5
-
 
7423
// 2, 4, 6, 7 are reserved
-
 
7424
 
-
 
7425
#define ATOM_PPLIB_CLASSIFICATION_BOOT                   0x0008
-
 
7426
#define ATOM_PPLIB_CLASSIFICATION_THERMAL                0x0010
-
 
7427
#define ATOM_PPLIB_CLASSIFICATION_LIMITEDPOWERSOURCE     0x0020
-
 
7428
#define ATOM_PPLIB_CLASSIFICATION_REST                   0x0040
-
 
7429
#define ATOM_PPLIB_CLASSIFICATION_FORCED                 0x0080
-
 
7430
#define ATOM_PPLIB_CLASSIFICATION_3DPERFORMANCE          0x0100
-
 
7431
#define ATOM_PPLIB_CLASSIFICATION_OVERDRIVETEMPLATE      0x0200
-
 
7432
#define ATOM_PPLIB_CLASSIFICATION_UVDSTATE               0x0400
-
 
7433
#define ATOM_PPLIB_CLASSIFICATION_3DLOW                  0x0800
-
 
7434
#define ATOM_PPLIB_CLASSIFICATION_ACPI                   0x1000
-
 
7435
#define ATOM_PPLIB_CLASSIFICATION_HD2STATE               0x2000
-
 
7436
#define ATOM_PPLIB_CLASSIFICATION_HDSTATE                0x4000
-
 
7437
#define ATOM_PPLIB_CLASSIFICATION_SDSTATE                0x8000
-
 
7438
 
-
 
7439
//// ATOM_PPLIB_NONCLOCK_INFO::usClassification2
-
 
7440
#define ATOM_PPLIB_CLASSIFICATION2_LIMITEDPOWERSOURCE_2     0x0001
-
 
7441
#define ATOM_PPLIB_CLASSIFICATION2_ULV                      0x0002
-
 
7442
#define ATOM_PPLIB_CLASSIFICATION2_MVC                      0x0004   //Multi-View Codec (BD-3D)
-
 
7443
 
-
 
7444
//// ATOM_PPLIB_NONCLOCK_INFO::ulCapsAndSettings
-
 
7445
#define ATOM_PPLIB_SINGLE_DISPLAY_ONLY           0x00000001
-
 
7446
#define ATOM_PPLIB_SUPPORTS_VIDEO_PLAYBACK         0x00000002
-
 
7447
 
-
 
7448
// 0 is 2.5Gb/s, 1 is 5Gb/s
-
 
7449
#define ATOM_PPLIB_PCIE_LINK_SPEED_MASK            0x00000004
-
 
7450
#define ATOM_PPLIB_PCIE_LINK_SPEED_SHIFT           2
-
 
7451
 
-
 
7452
// lanes - 1: 1, 2, 4, 8, 12, 16 permitted by PCIE spec
-
 
7453
#define ATOM_PPLIB_PCIE_LINK_WIDTH_MASK            0x000000F8
-
 
7454
#define ATOM_PPLIB_PCIE_LINK_WIDTH_SHIFT           3
-
 
7455
 
-
 
7456
// lookup into reduced refresh-rate table
-
 
7457
#define ATOM_PPLIB_LIMITED_REFRESHRATE_VALUE_MASK  0x00000F00
-
 
7458
#define ATOM_PPLIB_LIMITED_REFRESHRATE_VALUE_SHIFT 8
-
 
7459
 
-
 
7460
#define ATOM_PPLIB_LIMITED_REFRESHRATE_UNLIMITED    0
-
 
7461
#define ATOM_PPLIB_LIMITED_REFRESHRATE_50HZ         1
-
 
7462
// 2-15 TBD as needed.
-
 
7463
 
-
 
7464
#define ATOM_PPLIB_SOFTWARE_DISABLE_LOADBALANCING        0x00001000
-
 
7465
#define ATOM_PPLIB_SOFTWARE_ENABLE_SLEEP_FOR_TIMESTAMPS  0x00002000
-
 
7466
 
-
 
7467
#define ATOM_PPLIB_DISALLOW_ON_DC                        0x00004000
-
 
7468
 
-
 
7469
#define ATOM_PPLIB_ENABLE_VARIBRIGHT                     0x00008000
-
 
7470
 
-
 
7471
//memory related flags
-
 
7472
#define ATOM_PPLIB_SWSTATE_MEMORY_DLL_OFF               0x000010000
-
 
7473
 
-
 
7474
//M3 Arb    //2bits, current 3 sets of parameters in total
-
 
7475
#define ATOM_PPLIB_M3ARB_MASK                       0x00060000
-
 
7476
#define ATOM_PPLIB_M3ARB_SHIFT                      17
-
 
7477
 
-
 
7478
#define ATOM_PPLIB_ENABLE_DRR                       0x00080000
-
 
7479
 
-
 
7480
// remaining 16 bits are reserved
-
 
7481
typedef struct _ATOM_PPLIB_THERMAL_STATE
-
 
7482
{
-
 
7483
    UCHAR   ucMinTemperature;
-
 
7484
    UCHAR   ucMaxTemperature;
-
 
7485
    UCHAR   ucThermalAction;
-
 
7486
}ATOM_PPLIB_THERMAL_STATE, *LPATOM_PPLIB_THERMAL_STATE;
-
 
7487
 
-
 
7488
// Contained in an array starting at the offset
-
 
7489
// in ATOM_PPLIB_POWERPLAYTABLE::usNonClockInfoArrayOffset.
-
 
7490
// referenced from ATOM_PPLIB_STATE_INFO::ucNonClockStateIndex
-
 
7491
#define ATOM_PPLIB_NONCLOCKINFO_VER1      12
-
 
7492
#define ATOM_PPLIB_NONCLOCKINFO_VER2      24
-
 
7493
typedef struct _ATOM_PPLIB_NONCLOCK_INFO
-
 
7494
{
-
 
7495
      USHORT usClassification;
-
 
7496
      UCHAR  ucMinTemperature;
-
 
7497
      UCHAR  ucMaxTemperature;
-
 
7498
      ULONG  ulCapsAndSettings;
-
 
7499
      UCHAR  ucRequiredPower;
-
 
7500
      USHORT usClassification2;
-
 
7501
      ULONG  ulVCLK;
-
 
7502
      ULONG  ulDCLK;
-
 
7503
      UCHAR  ucUnused[5];
-
 
7504
} ATOM_PPLIB_NONCLOCK_INFO;
-
 
7505
 
-
 
7506
// Contained in an array starting at the offset
-
 
7507
// in ATOM_PPLIB_POWERPLAYTABLE::usClockInfoArrayOffset.
-
 
7508
// referenced from ATOM_PPLIB_STATE::ucClockStateIndices
-
 
7509
typedef struct _ATOM_PPLIB_R600_CLOCK_INFO
-
 
7510
{
-
 
7511
      USHORT usEngineClockLow;
-
 
7512
      UCHAR ucEngineClockHigh;
-
 
7513
 
-
 
7514
      USHORT usMemoryClockLow;
-
 
7515
      UCHAR ucMemoryClockHigh;
-
 
7516
 
-
 
7517
      USHORT usVDDC;
-
 
7518
      USHORT usUnused1;
-
 
7519
      USHORT usUnused2;
-
 
7520
 
-
 
7521
      ULONG ulFlags; // ATOM_PPLIB_R600_FLAGS_*
-
 
7522
 
-
 
7523
} ATOM_PPLIB_R600_CLOCK_INFO;
-
 
7524
 
-
 
7525
// ulFlags in ATOM_PPLIB_R600_CLOCK_INFO
-
 
7526
#define ATOM_PPLIB_R600_FLAGS_PCIEGEN2          1
-
 
7527
#define ATOM_PPLIB_R600_FLAGS_UVDSAFE           2
-
 
7528
#define ATOM_PPLIB_R600_FLAGS_BACKBIASENABLE    4
-
 
7529
#define ATOM_PPLIB_R600_FLAGS_MEMORY_ODT_OFF    8
-
 
7530
#define ATOM_PPLIB_R600_FLAGS_MEMORY_DLL_OFF    16
-
 
7531
#define ATOM_PPLIB_R600_FLAGS_LOWPOWER         32   // On the RV770 use 'low power' setting (sequencer S0).
-
 
7532
 
-
 
7533
typedef struct _ATOM_PPLIB_EVERGREEN_CLOCK_INFO
-
 
7534
{
-
 
7535
      USHORT usEngineClockLow;
-
 
7536
      UCHAR  ucEngineClockHigh;
-
 
7537
 
-
 
7538
      USHORT usMemoryClockLow;
-
 
7539
      UCHAR  ucMemoryClockHigh;
-
 
7540
 
-
 
7541
      USHORT usVDDC;
-
 
7542
      USHORT usVDDCI;
-
 
7543
      USHORT usUnused;
-
 
7544
 
-
 
7545
      ULONG ulFlags; // ATOM_PPLIB_R600_FLAGS_*
-
 
7546
 
-
 
7547
} ATOM_PPLIB_EVERGREEN_CLOCK_INFO;
-
 
7548
 
-
 
7549
typedef struct _ATOM_PPLIB_SI_CLOCK_INFO
-
 
7550
{
-
 
7551
      USHORT usEngineClockLow;
-
 
7552
      UCHAR  ucEngineClockHigh;
-
 
7553
 
-
 
7554
      USHORT usMemoryClockLow;
-
 
7555
      UCHAR  ucMemoryClockHigh;
-
 
7556
 
-
 
7557
      USHORT usVDDC;
-
 
7558
      USHORT usVDDCI;
-
 
7559
      UCHAR  ucPCIEGen;
-
 
7560
      UCHAR  ucUnused1;
-
 
7561
 
-
 
7562
      ULONG ulFlags; // ATOM_PPLIB_SI_FLAGS_*, no flag is necessary for now
-
 
7563
 
-
 
7564
} ATOM_PPLIB_SI_CLOCK_INFO;
-
 
7565
 
-
 
7566
 
-
 
7567
typedef struct _ATOM_PPLIB_RS780_CLOCK_INFO
-
 
7568
 
-
 
7569
{
-
 
7570
      USHORT usLowEngineClockLow;         // Low Engine clock in MHz (the same way as on the R600).
-
 
7571
      UCHAR  ucLowEngineClockHigh;
-
 
7572
      USHORT usHighEngineClockLow;        // High Engine clock in MHz.
-
 
7573
      UCHAR  ucHighEngineClockHigh;
-
 
7574
      USHORT usMemoryClockLow;            // For now one of the ATOM_PPLIB_RS780_SPMCLK_XXXX constants.
-
 
7575
      UCHAR  ucMemoryClockHigh;           // Currentyl unused.
-
 
7576
      UCHAR  ucPadding;                   // For proper alignment and size.
-
 
7577
      USHORT usVDDC;                      // For the 780, use: None, Low, High, Variable
-
 
7578
      UCHAR  ucMaxHTLinkWidth;            // From SBIOS - {2, 4, 8, 16}
-
 
7579
      UCHAR  ucMinHTLinkWidth;            // From SBIOS - {2, 4, 8, 16}. Effective only if CDLW enabled. Minimum down stream width could be bigger as display BW requriement.
-
 
7580
      USHORT usHTLinkFreq;                // See definition ATOM_PPLIB_RS780_HTLINKFREQ_xxx or in MHz(>=200).
-
 
7581
      ULONG  ulFlags;
-
 
7582
} ATOM_PPLIB_RS780_CLOCK_INFO;
-
 
7583
 
-
 
7584
#define ATOM_PPLIB_RS780_VOLTAGE_NONE       0
-
 
7585
#define ATOM_PPLIB_RS780_VOLTAGE_LOW        1
-
 
7586
#define ATOM_PPLIB_RS780_VOLTAGE_HIGH       2
-
 
7587
#define ATOM_PPLIB_RS780_VOLTAGE_VARIABLE   3
-
 
7588
 
-
 
7589
#define ATOM_PPLIB_RS780_SPMCLK_NONE        0   // We cannot change the side port memory clock, leave it as it is.
-
 
7590
#define ATOM_PPLIB_RS780_SPMCLK_LOW         1
-
 
7591
#define ATOM_PPLIB_RS780_SPMCLK_HIGH        2
-
 
7592
 
-
 
7593
#define ATOM_PPLIB_RS780_HTLINKFREQ_NONE       0
-
 
7594
#define ATOM_PPLIB_RS780_HTLINKFREQ_LOW        1
-
 
7595
#define ATOM_PPLIB_RS780_HTLINKFREQ_HIGH       2
-
 
7596
 
-
 
7597
typedef struct _ATOM_PPLIB_SUMO_CLOCK_INFO{
-
 
7598
      USHORT usEngineClockLow;  //clockfrequency & 0xFFFF. The unit is in 10khz
-
 
7599
      UCHAR  ucEngineClockHigh; //clockfrequency >> 16. 
-
 
7600
      UCHAR  vddcIndex;         //2-bit vddc index;
-
 
7601
      USHORT tdpLimit;
-
 
7602
      //please initalize to 0
-
 
7603
      USHORT rsv1;
-
 
7604
      //please initialize to 0s
-
 
7605
      ULONG rsv2[2];
-
 
7606
}ATOM_PPLIB_SUMO_CLOCK_INFO;
-
 
7607
 
-
 
7608
 
-
 
7609
 
-
 
7610
typedef struct _ATOM_PPLIB_STATE_V2
-
 
7611
{
-
 
7612
      //number of valid dpm levels in this state; Driver uses it to calculate the whole 
-
 
7613
      //size of the state: sizeof(ATOM_PPLIB_STATE_V2) + (ucNumDPMLevels - 1) * sizeof(UCHAR)
-
 
7614
      UCHAR ucNumDPMLevels;
-
 
7615
      
-
 
7616
      //a index to the array of nonClockInfos
-
 
7617
      UCHAR nonClockInfoIndex;
-
 
7618
      /**
-
 
7619
      * Driver will read the first ucNumDPMLevels in this array
-
 
7620
      */
-
 
7621
      UCHAR clockInfoIndex[1];
-
 
7622
} ATOM_PPLIB_STATE_V2;
-
 
7623
 
-
 
7624
typedef struct _StateArray{
-
 
7625
    //how many states we have 
-
 
7626
    UCHAR ucNumEntries;
-
 
7627
    
-
 
7628
    ATOM_PPLIB_STATE_V2 states[1];
-
 
7629
}StateArray;
-
 
7630
 
-
 
7631
 
-
 
7632
typedef struct _ClockInfoArray{
-
 
7633
    //how many clock levels we have
-
 
7634
    UCHAR ucNumEntries;
-
 
7635
    
-
 
7636
    //sizeof(ATOM_PPLIB_CLOCK_INFO)
-
 
7637
    UCHAR ucEntrySize;
-
 
7638
    
-
 
7639
    UCHAR clockInfo[1];
-
 
7640
}ClockInfoArray;
-
 
7641
 
-
 
7642
typedef struct _NonClockInfoArray{
-
 
7643
 
-
 
7644
    //how many non-clock levels we have. normally should be same as number of states
-
 
7645
    UCHAR ucNumEntries;
-
 
7646
    //sizeof(ATOM_PPLIB_NONCLOCK_INFO)
-
 
7647
    UCHAR ucEntrySize;
-
 
7648
    
-
 
7649
    ATOM_PPLIB_NONCLOCK_INFO nonClockInfo[1];
-
 
7650
}NonClockInfoArray;
-
 
7651
 
-
 
7652
typedef struct _ATOM_PPLIB_Clock_Voltage_Dependency_Record
-
 
7653
{
-
 
7654
    USHORT usClockLow;
-
 
7655
    UCHAR  ucClockHigh;
-
 
7656
    USHORT usVoltage;
-
 
7657
}ATOM_PPLIB_Clock_Voltage_Dependency_Record;
-
 
7658
 
-
 
7659
typedef struct _ATOM_PPLIB_Clock_Voltage_Dependency_Table
-
 
7660
{
-
 
7661
    UCHAR ucNumEntries;                                                // Number of entries.
-
 
7662
    ATOM_PPLIB_Clock_Voltage_Dependency_Record entries[1];             // Dynamically allocate entries.
-
 
7663
}ATOM_PPLIB_Clock_Voltage_Dependency_Table;
-
 
7664
 
-
 
7665
typedef struct _ATOM_PPLIB_Clock_Voltage_Limit_Record
-
 
7666
{
-
 
7667
    USHORT usSclkLow;
-
 
7668
    UCHAR  ucSclkHigh;
-
 
7669
    USHORT usMclkLow;
-
 
7670
    UCHAR  ucMclkHigh;
-
 
7671
    USHORT usVddc;
-
 
7672
    USHORT usVddci;
-
 
7673
}ATOM_PPLIB_Clock_Voltage_Limit_Record;
-
 
7674
 
-
 
7675
typedef struct _ATOM_PPLIB_Clock_Voltage_Limit_Table
-
 
7676
{
-
 
7677
    UCHAR ucNumEntries;                                                // Number of entries.
-
 
7678
    ATOM_PPLIB_Clock_Voltage_Limit_Record entries[1];                  // Dynamically allocate entries.
-
 
7679
}ATOM_PPLIB_Clock_Voltage_Limit_Table;
-
 
7680
 
-
 
7681
typedef struct _ATOM_PPLIB_CAC_Leakage_Record
-
 
7682
{
-
 
7683
    USHORT usVddc;  // We use this field for the "fake" standardized VDDC for power calculations                                                  
-
 
7684
    ULONG  ulLeakageValue;
-
 
7685
}ATOM_PPLIB_CAC_Leakage_Record;
-
 
7686
 
-
 
7687
typedef struct _ATOM_PPLIB_CAC_Leakage_Table
-
 
7688
{
-
 
7689
    UCHAR ucNumEntries;                                                 // Number of entries.
-
 
7690
    ATOM_PPLIB_CAC_Leakage_Record entries[1];                           // Dynamically allocate entries.
-
 
7691
}ATOM_PPLIB_CAC_Leakage_Table;
-
 
7692
 
-
 
7693
typedef struct _ATOM_PPLIB_PhaseSheddingLimits_Record
-
 
7694
{
-
 
7695
    USHORT usVoltage;
-
 
7696
    USHORT usSclkLow;
-
 
7697
    UCHAR  ucSclkHigh;
-
 
7698
    USHORT usMclkLow;
-
 
7699
    UCHAR  ucMclkHigh;
-
 
7700
}ATOM_PPLIB_PhaseSheddingLimits_Record;
-
 
7701
 
-
 
7702
typedef struct _ATOM_PPLIB_PhaseSheddingLimits_Table
-
 
7703
{
-
 
7704
    UCHAR ucNumEntries;                                                 // Number of entries.
-
 
7705
    ATOM_PPLIB_PhaseSheddingLimits_Record entries[1];                   // Dynamically allocate entries.
-
 
7706
}ATOM_PPLIB_PhaseSheddingLimits_Table;
-
 
7707
 
-
 
7708
typedef struct _VCEClockInfo{
-
 
7709
    USHORT usEVClkLow;
-
 
7710
    UCHAR  ucEVClkHigh;
-
 
7711
    USHORT usECClkLow;
-
 
7712
    UCHAR  ucECClkHigh;
-
 
7713
}VCEClockInfo;
-
 
7714
 
-
 
7715
typedef struct _VCEClockInfoArray{
-
 
7716
    UCHAR ucNumEntries;
-
 
7717
    VCEClockInfo entries[1];
-
 
7718
}VCEClockInfoArray;
-
 
7719
 
-
 
7720
typedef struct _ATOM_PPLIB_VCE_Clock_Voltage_Limit_Record
-
 
7721
{
-
 
7722
    USHORT usVoltage;
-
 
7723
    UCHAR  ucVCEClockInfoIndex;
-
 
7724
}ATOM_PPLIB_VCE_Clock_Voltage_Limit_Record;
-
 
7725
 
-
 
7726
typedef struct _ATOM_PPLIB_VCE_Clock_Voltage_Limit_Table
-
 
7727
{
-
 
7728
    UCHAR numEntries;
-
 
7729
    ATOM_PPLIB_VCE_Clock_Voltage_Limit_Record entries[1];
-
 
7730
}ATOM_PPLIB_VCE_Clock_Voltage_Limit_Table;
-
 
7731
 
-
 
7732
typedef struct _ATOM_PPLIB_VCE_State_Record
-
 
7733
{
-
 
7734
    UCHAR  ucVCEClockInfoIndex;
-
 
7735
    UCHAR  ucClockInfoIndex; //highest 2 bits indicates memory p-states, lower 6bits indicates index to ClockInfoArrary
-
 
7736
}ATOM_PPLIB_VCE_State_Record;
-
 
7737
 
-
 
7738
typedef struct _ATOM_PPLIB_VCE_State_Table
-
 
7739
{
-
 
7740
    UCHAR numEntries;
-
 
7741
    ATOM_PPLIB_VCE_State_Record entries[1];
-
 
7742
}ATOM_PPLIB_VCE_State_Table;
-
 
7743
 
-
 
7744
 
-
 
7745
typedef struct _ATOM_PPLIB_VCE_Table
-
 
7746
{
-
 
7747
      UCHAR revid;
-
 
7748
//    VCEClockInfoArray array;
-
 
7749
//    ATOM_PPLIB_VCE_Clock_Voltage_Limit_Table limits;
-
 
7750
//    ATOM_PPLIB_VCE_State_Table states;
-
 
7751
}ATOM_PPLIB_VCE_Table;
-
 
7752
 
-
 
7753
 
-
 
7754
typedef struct _UVDClockInfo{
-
 
7755
    USHORT usVClkLow;
-
 
7756
    UCHAR  ucVClkHigh;
-
 
7757
    USHORT usDClkLow;
-
 
7758
    UCHAR  ucDClkHigh;
-
 
7759
}UVDClockInfo;
-
 
7760
 
-
 
7761
typedef struct _UVDClockInfoArray{
-
 
7762
    UCHAR ucNumEntries;
-
 
7763
    UVDClockInfo entries[1];
-
 
7764
}UVDClockInfoArray;
-
 
7765
 
-
 
7766
typedef struct _ATOM_PPLIB_UVD_Clock_Voltage_Limit_Record
-
 
7767
{
-
 
7768
    USHORT usVoltage;
-
 
7769
    UCHAR  ucUVDClockInfoIndex;
-
 
7770
}ATOM_PPLIB_UVD_Clock_Voltage_Limit_Record;
-
 
7771
 
-
 
7772
typedef struct _ATOM_PPLIB_UVD_Clock_Voltage_Limit_Table
-
 
7773
{
-
 
7774
    UCHAR numEntries;
-
 
7775
    ATOM_PPLIB_UVD_Clock_Voltage_Limit_Record entries[1];
-
 
7776
}ATOM_PPLIB_UVD_Clock_Voltage_Limit_Table;
-
 
7777
 
-
 
7778
typedef struct _ATOM_PPLIB_UVD_State_Record
-
 
7779
{
-
 
7780
    UCHAR  ucUVDClockInfoIndex;
-
 
7781
    UCHAR  ucClockInfoIndex; //highest 2 bits indicates memory p-states, lower 6bits indicates index to ClockInfoArrary
-
 
7782
}ATOM_PPLIB_UVD_State_Record;
-
 
7783
 
-
 
7784
typedef struct _ATOM_PPLIB_UVD_State_Table
-
 
7785
{
-
 
7786
    UCHAR numEntries;
-
 
7787
    ATOM_PPLIB_UVD_State_Record entries[1];
-
 
7788
}ATOM_PPLIB_UVD_State_Table;
-
 
7789
 
-
 
7790
 
-
 
7791
typedef struct _ATOM_PPLIB_UVD_Table
-
 
7792
{
-
 
7793
      UCHAR revid;
-
 
7794
//    UVDClockInfoArray array;
-
 
7795
//    ATOM_PPLIB_UVD_Clock_Voltage_Limit_Table limits;
-
 
7796
//    ATOM_PPLIB_UVD_State_Table states;
-
 
7797
}ATOM_PPLIB_UVD_Table;
-
 
7798
 
-
 
7799
/**************************************************************************/
-
 
Line 7800... Line 7766...
7800
 
7766
 
7801
 
7767
 
7802
// Following definitions are for compatibility issue in different SW components. 
7768
// Following definitions are for compatibility issue in different SW components. 
7803
#define ATOM_MASTER_DATA_TABLE_REVISION   0x01
7769
#define ATOM_MASTER_DATA_TABLE_REVISION   0x01
Line 8008... Line 7974...
8008
 
7974
 
Line 8009... Line 7975...
8009
#pragma pack()
7975
#pragma pack()
-
 
7976
 
-
 
7977
 
-
 
7978
#endif /* _ATOMBIOS_H */