Subversion Repositories Kolibri OS

Rev

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

Rev 1986 Rev 2997
Line 99... Line 99...
99
#define ATOM_LCD_BLON                           (ATOM_ENABLE+2)
99
#define ATOM_LCD_BLON                           (ATOM_ENABLE+2)
100
#define ATOM_LCD_BL_BRIGHTNESS_CONTROL          (ATOM_ENABLE+3)
100
#define ATOM_LCD_BL_BRIGHTNESS_CONTROL          (ATOM_ENABLE+3)
101
#define ATOM_LCD_SELFTEST_START									(ATOM_DISABLE+5)
101
#define ATOM_LCD_SELFTEST_START									(ATOM_DISABLE+5)
102
#define ATOM_LCD_SELFTEST_STOP									(ATOM_ENABLE+5)
102
#define ATOM_LCD_SELFTEST_STOP									(ATOM_ENABLE+5)
103
#define ATOM_ENCODER_INIT			                  (ATOM_DISABLE+7)
103
#define ATOM_ENCODER_INIT			                  (ATOM_DISABLE+7)
-
 
104
#define ATOM_INIT			                          (ATOM_DISABLE+7)
104
#define ATOM_GET_STATUS                         (ATOM_DISABLE+8)
105
#define ATOM_GET_STATUS                         (ATOM_DISABLE+8)
Line 105... Line 106...
105
 
106
 
106
#define ATOM_BLANKING         1
107
#define ATOM_BLANKING         1
Line 249... Line 250...
249
  USHORT DVOEncoderControl;                      //Function Table,directly used by various SW components,latest version 1.2
250
  USHORT DVOEncoderControl;                      //Function Table,directly used by various SW components,latest version 1.2
250
  USHORT GPIOPinControl;												 //Atomic Table,  only used by Bios
251
  USHORT GPIOPinControl;												 //Atomic Table,  only used by Bios
251
  USHORT SetEngineClock;                         //Function Table,directly used by various SW components,latest version 1.1
252
  USHORT SetEngineClock;                         //Function Table,directly used by various SW components,latest version 1.1
252
  USHORT SetMemoryClock;                         //Function Table,directly used by various SW components,latest version 1.1
253
  USHORT SetMemoryClock;                         //Function Table,directly used by various SW components,latest version 1.1
253
  USHORT SetPixelClock;                          //Function Table,directly used by various SW components,latest version 1.2  
254
  USHORT SetPixelClock;                          //Function Table,directly used by various SW components,latest version 1.2  
254
  USHORT DynamicClockGating;                     //Atomic Table,  indirectly used by various SW components,called from ASIC_Init
255
  USHORT EnableDispPowerGating;                  //Atomic Table,  indirectly used by various SW components,called from ASIC_Init
255
  USHORT ResetMemoryDLL;                         //Atomic Table,  indirectly used by various SW components,called from SetMemoryClock
256
  USHORT ResetMemoryDLL;                         //Atomic Table,  indirectly used by various SW components,called from SetMemoryClock
256
  USHORT ResetMemoryDevice;                      //Atomic Table,  indirectly used by various SW components,called from SetMemoryClock
257
  USHORT ResetMemoryDevice;                      //Atomic Table,  indirectly used by various SW components,called from SetMemoryClock
257
	USHORT MemoryPLLInit;
258
  USHORT MemoryPLLInit;                          //Atomic Table,  used only by Bios
258
  USHORT AdjustDisplayPll;												//only used by Bios
259
  USHORT AdjustDisplayPll;											 //Atomic Table,  used by various SW componentes. 
259
  USHORT AdjustMemoryController;                 //Atomic Table,  indirectly used by various SW components,called from SetMemoryClock                
260
  USHORT AdjustMemoryController;                 //Atomic Table,  indirectly used by various SW components,called from SetMemoryClock                
260
  USHORT EnableASIC_StaticPwrMgt;                //Atomic Table,  only used by Bios
261
  USHORT EnableASIC_StaticPwrMgt;                //Atomic Table,  only used by Bios
261
  USHORT ASIC_StaticPwrMgtStatusChange;          //Obsolete ,     only used by Bios   
262
  USHORT ASIC_StaticPwrMgtStatusChange;          //Obsolete ,     only used by Bios   
262
  USHORT DAC_LoadDetection;                      //Atomic Table,  directly used by various SW components,latest version 1.2  
263
  USHORT DAC_LoadDetection;                      //Atomic Table,  directly used by various SW components,latest version 1.2  
263
  USHORT LVTMAEncoderControl;                    //Atomic Table,directly used by various SW components,latest version 1.3
264
  USHORT LVTMAEncoderControl;                    //Atomic Table,directly used by various SW components,latest version 1.3
264
  USHORT LCD1OutputControl;                      //Atomic Table,  directly used by various SW components,latest version 1.1 
265
  USHORT HW_Misc_Operation;                      //Atomic Table,  directly used by various SW components,latest version 1.1 
265
  USHORT DAC1EncoderControl;                     //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  
266
  USHORT DAC2EncoderControl;                     //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 
267
  USHORT DVOOutputControl;                       //Atomic Table,  directly used by various SW components,latest version 1.1 
268
  USHORT DVOOutputControl;                       //Atomic Table,  directly used by various SW components,latest version 1.1 
268
  USHORT CV1OutputControl;                       //Atomic Table,  Atomic Table,  Obsolete from Ry6xx, use DAC2 Output instead 
269
  USHORT CV1OutputControl;                       //Atomic Table,  Atomic Table,  Obsolete from Ry6xx, use DAC2 Output instead 
269
  USHORT GetConditionalGoldenSetting;            //only used by Bios
270
  USHORT GetConditionalGoldenSetting;            //Only used by Bios
270
  USHORT TVEncoderControl;                       //Function Table,directly used by various SW components,latest version 1.1
271
  USHORT TVEncoderControl;                       //Function Table,directly used by various SW components,latest version 1.1
271
  USHORT TMDSAEncoderControl;                    //Atomic Table,  directly used by various SW components,latest version 1.3
272
  USHORT PatchMCSetting;                         //only used by BIOS
272
  USHORT LVDSEncoderControl;                     //Atomic Table,  directly used by various SW components,latest version 1.3
273
  USHORT MC_SEQ_Control;                         //only used by BIOS
273
  USHORT TV1OutputControl;                       //Atomic Table,  Obsolete from Ry6xx, use DAC2 Output instead
274
  USHORT TV1OutputControl;                       //Atomic Table,  Obsolete from Ry6xx, use DAC2 Output instead
274
  USHORT EnableScaler;                           //Atomic Table,  used only by Bios
275
  USHORT EnableScaler;                           //Atomic Table,  used only by Bios
275
  USHORT BlankCRTC;                              //Atomic Table,  directly used by various SW components,latest version 1.1 
276
  USHORT BlankCRTC;                              //Atomic Table,  directly used by various SW components,latest version 1.1 
276
  USHORT EnableCRTC;                             //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 
277
  USHORT GetPixelClock;                          //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 
Line 280... Line 281...
280
  USHORT SetCRTC_Timing;                         //Atomic Table,  directly used by various SW components,latest version 1.1
281
  USHORT SetCRTC_Timing;                         //Atomic Table,  directly used by various SW components,latest version 1.1
281
  USHORT SetCRTC_OverScan;                       //Atomic Table,  used by various SW components,latest version 1.1 
282
  USHORT SetCRTC_OverScan;                       //Atomic Table,  used by various SW components,latest version 1.1 
282
  USHORT SetCRTC_Replication;                    //Atomic Table,  used only by Bios
283
  USHORT SetCRTC_Replication;                    //Atomic Table,  used only by Bios
283
  USHORT SelectCRTC_Source;                      //Atomic Table,  directly used by various SW components,latest version 1.1 
284
  USHORT SelectCRTC_Source;                      //Atomic Table,  directly used by various SW components,latest version 1.1 
284
  USHORT EnableGraphSurfaces;                    //Atomic Table,  used only by Bios
285
  USHORT EnableGraphSurfaces;                    //Atomic Table,  used only by Bios
285
	USHORT UpdateCRTC_DoubleBufferRegisters;
286
  USHORT UpdateCRTC_DoubleBufferRegisters;			 //Atomic Table,  used only by Bios
286
  USHORT LUT_AutoFill;                           //Atomic Table,  only used by Bios
287
  USHORT LUT_AutoFill;                           //Atomic Table,  only used by Bios
287
  USHORT EnableHW_IconCursor;                    //Atomic Table,  only used by Bios
288
  USHORT EnableHW_IconCursor;                    //Atomic Table,  only used by Bios
288
  USHORT GetMemoryClock;                         //Atomic Table,  directly used by various SW components,latest version 1.1 
289
  USHORT GetMemoryClock;                         //Atomic Table,  directly used by various SW components,latest version 1.1 
289
  USHORT GetEngineClock;                         //Atomic Table,  directly used by various SW components,latest version 1.1 
290
  USHORT GetEngineClock;                         //Atomic Table,  directly used by various SW components,latest version 1.1 
290
  USHORT SetCRTC_UsingDTDTiming;                 //Atomic Table,  directly used by various SW components,latest version 1.1
291
  USHORT SetCRTC_UsingDTDTiming;                 //Atomic Table,  directly used by various SW components,latest version 1.1
Line 306... Line 307...
306
  USHORT EnableSpreadSpectrumOnPPLL;             //Atomic Table,  directly used by various SW components,latest version 1.2
307
  USHORT EnableSpreadSpectrumOnPPLL;             //Atomic Table,  directly used by various SW components,latest version 1.2
307
  USHORT TMDSAOutputControl;                     //Atomic Table,  directly used by various SW components,latest version 1.1
308
  USHORT TMDSAOutputControl;                     //Atomic Table,  directly used by various SW components,latest version 1.1
308
  USHORT SetVoltage;                             //Function Table,directly and/or indirectly used by various SW components,latest version 1.1
309
  USHORT SetVoltage;                             //Function Table,directly and/or indirectly used by various SW components,latest version 1.1
309
  USHORT DAC1OutputControl;                      //Atomic Table,  directly used by various SW components,latest version 1.1
310
  USHORT DAC1OutputControl;                      //Atomic Table,  directly used by various SW components,latest version 1.1
310
  USHORT DAC2OutputControl;                      //Atomic Table,  directly used by various SW components,latest version 1.1
311
  USHORT DAC2OutputControl;                      //Atomic Table,  directly used by various SW components,latest version 1.1
311
  USHORT SetupHWAssistedI2CStatus;               //Function Table,only used by Bios, obsolete soon.Switch to use "ReadEDIDFromHWAssistedI2C"
312
  USHORT ComputeMemoryClockParam;                //Function Table,only used by Bios, obsolete soon.Switch to use "ReadEDIDFromHWAssistedI2C"
312
  USHORT ClockSource;                            //Atomic Table,  indirectly used by various SW components,called from ASIC_Init
313
  USHORT ClockSource;                            //Atomic Table,  indirectly used by various SW components,called from ASIC_Init
313
  USHORT MemoryDeviceInit;                       //Atomic Table,  indirectly used by various SW components,called from SetMemoryClock
314
  USHORT MemoryDeviceInit;                       //Atomic Table,  indirectly used by various SW components,called from SetMemoryClock
314
  USHORT EnableYUV;                              //Atomic Table,  indirectly used by various SW components,called from EnableVGARender
315
  USHORT GetDispObjectInfo;                      //Atomic Table,  indirectly used by various SW components,called from EnableVGARender
315
  USHORT DIG1EncoderControl;                     //Atomic Table,directly used by various SW components,latest version 1.1
316
  USHORT DIG1EncoderControl;                     //Atomic Table,directly used by various SW components,latest version 1.1
316
  USHORT DIG2EncoderControl;                     //Atomic Table,directly used by various SW components,latest version 1.1
317
  USHORT DIG2EncoderControl;                     //Atomic Table,directly used by various SW components,latest version 1.1
317
  USHORT DIG1TransmitterControl;                 //Atomic Table,directly used by various SW components,latest version 1.1
318
  USHORT DIG1TransmitterControl;                 //Atomic Table,directly used by various SW components,latest version 1.1
318
  USHORT DIG2TransmitterControl;	               //Atomic Table,directly used by various SW components,latest version 1.1 
319
  USHORT DIG2TransmitterControl;	               //Atomic Table,directly used by various SW components,latest version 1.1 
319
  USHORT ProcessAuxChannelTransaction;					 //Function Table,only used by Bios
320
  USHORT ProcessAuxChannelTransaction;					 //Function Table,only used by Bios
320
  USHORT DPEncoderService;											 //Function Table,only used by Bios
321
  USHORT DPEncoderService;											 //Function Table,only used by Bios
-
 
322
  USHORT GetVoltageInfo;                         //Function Table,only used by Bios since SI
321
}ATOM_MASTER_LIST_OF_COMMAND_TABLES;   
323
}ATOM_MASTER_LIST_OF_COMMAND_TABLES;   
Line 322... Line 324...
322
 
324
 
323
// For backward compatible 
325
// For backward compatible 
-
 
326
#define ReadEDIDFromHWAssistedI2C                ProcessI2cChannelTransaction
324
#define ReadEDIDFromHWAssistedI2C                ProcessI2cChannelTransaction
327
#define DPTranslatorControl                      DIG2EncoderControl
325
#define UNIPHYTransmitterControl						     DIG1TransmitterControl
328
#define UNIPHYTransmitterControl						     DIG1TransmitterControl
326
#define LVTMATransmitterControl							     DIG2TransmitterControl
329
#define LVTMATransmitterControl							     DIG2TransmitterControl
327
#define SetCRTC_DPM_State                        GetConditionalGoldenSetting
330
#define SetCRTC_DPM_State                        GetConditionalGoldenSetting
328
#define SetUniphyInstance                        ASIC_StaticPwrMgtStatusChange
331
#define SetUniphyInstance                        ASIC_StaticPwrMgtStatusChange
329
#define HPDInterruptService                      ReadHWAssistedI2CStatus
332
#define HPDInterruptService                      ReadHWAssistedI2CStatus
-
 
333
#define EnableVGA_Access                         GetSCLKOverMCLKRatio
-
 
334
#define EnableYUV                                GetDispObjectInfo                         
-
 
335
#define DynamicClockGating                       EnableDispPowerGating
-
 
336
#define SetupHWAssistedI2CStatus                 ComputeMemoryClockParam
-
 
337
 
330
#define EnableVGA_Access                         GetSCLKOverMCLKRatio
338
#define TMDSAEncoderControl                      PatchMCSetting
-
 
339
#define LVDSEncoderControl                       MC_SEQ_Control
-
 
340
#define LCD1OutputControl                        HW_Misc_Operation
Line 331... Line 341...
331
#define GetDispObjectInfo                        EnableYUV 
341
 
332
 
342
 
333
typedef struct _ATOM_MASTER_COMMAND_TABLE
343
typedef struct _ATOM_MASTER_COMMAND_TABLE
334
{
344
{
Line 493... Line 503...
493
}COMPUTE_MEMORY_ENGINE_PLL_PARAMETERS_V5;
503
}COMPUTE_MEMORY_ENGINE_PLL_PARAMETERS_V5;
Line 494... Line 504...
494
 
504
 
495
// ucInputFlag
505
// ucInputFlag
Line -... Line 506...
-
 
506
#define ATOM_PLL_INPUT_FLAG_PLL_STROBE_MODE_EN  1   // 1-StrobeMode, 0-PerformanceMode
-
 
507
 
-
 
508
// use for ComputeMemoryClockParamTable
-
 
509
typedef struct _COMPUTE_MEMORY_CLOCK_PARAM_PARAMETERS_V2_1
-
 
510
{
-
 
511
  union
-
 
512
  {
-
 
513
    ULONG  ulClock;         
-
 
514
    ATOM_S_MPLL_FB_DIVIDER   ulFbDiv;         //Output:UPPER_WORD=FB_DIV_INTEGER,  LOWER_WORD=FB_DIV_FRAC shl (16-FB_FRACTION_BITS)
-
 
515
  };
-
 
516
  UCHAR   ucDllSpeed;                         //Output 
-
 
517
  UCHAR   ucPostDiv;                          //Output
-
 
518
  union{
-
 
519
    UCHAR   ucInputFlag;                      //Input : ATOM_PLL_INPUT_FLAG_PLL_STROBE_MODE_EN: 1-StrobeMode, 0-PerformanceMode
-
 
520
    UCHAR   ucPllCntlFlag;                    //Output: 
-
 
521
  };
-
 
522
  UCHAR   ucBWCntl;                       
-
 
523
}COMPUTE_MEMORY_CLOCK_PARAM_PARAMETERS_V2_1;
-
 
524
 
-
 
525
// definition of ucInputFlag
-
 
526
#define MPLL_INPUT_FLAG_STROBE_MODE_EN          0x01
-
 
527
// definition of ucPllCntlFlag
-
 
528
#define MPLL_CNTL_FLAG_VCO_MODE_MASK            0x03 
-
 
529
#define MPLL_CNTL_FLAG_BYPASS_DQ_PLL            0x04
-
 
530
#define MPLL_CNTL_FLAG_QDR_ENABLE               0x08
-
 
531
#define MPLL_CNTL_FLAG_AD_HALF_RATE             0x10
-
 
532
 
-
 
533
//MPLL_CNTL_FLAG_BYPASS_AD_PLL has a wrong name, should be BYPASS_DQ_PLL
496
#define ATOM_PLL_INPUT_FLAG_PLL_STROBE_MODE_EN  1   // 1-StrobeMode, 0-PerformanceMode
534
#define MPLL_CNTL_FLAG_BYPASS_AD_PLL            0x04
497
 
535
 
498
typedef struct _DYNAMICE_MEMORY_SETTINGS_PARAMETER
536
typedef struct _DYNAMICE_MEMORY_SETTINGS_PARAMETER
499
{
537
{
500
	ATOM_COMPUTE_CLOCK_FREQ ulClock;
538
	ATOM_COMPUTE_CLOCK_FREQ ulClock;
Line 560... Line 598...
560
	UCHAR ucPadding[3];
598
	UCHAR ucPadding[3];
561
}DYNAMIC_CLOCK_GATING_PARAMETERS;
599
}DYNAMIC_CLOCK_GATING_PARAMETERS;
562
#define  DYNAMIC_CLOCK_GATING_PS_ALLOCATION  DYNAMIC_CLOCK_GATING_PARAMETERS
600
#define  DYNAMIC_CLOCK_GATING_PS_ALLOCATION  DYNAMIC_CLOCK_GATING_PARAMETERS
Line 563... Line 601...
563
 
601
 
-
 
602
/****************************************************************************/
-
 
603
// Structure used by EnableDispPowerGatingTable.ctb
-
 
604
/****************************************************************************/	
-
 
605
typedef struct _ENABLE_DISP_POWER_GATING_PARAMETERS_V2_1 
-
 
606
{
-
 
607
  UCHAR ucDispPipeId;                 // ATOM_CRTC1, ATOM_CRTC2, ...
-
 
608
  UCHAR ucEnable;                     // ATOM_ENABLE or ATOM_DISABLE
-
 
609
  UCHAR ucPadding[2];
-
 
610
}ENABLE_DISP_POWER_GATING_PARAMETERS_V2_1;
-
 
611
 
564
/****************************************************************************/
612
/****************************************************************************/	
565
// Structure used by EnableASIC_StaticPwrMgtTable.ctb
613
// Structure used by EnableASIC_StaticPwrMgtTable.ctb
566
/****************************************************************************/
614
/****************************************************************************/
567
typedef struct _ENABLE_ASIC_STATIC_PWR_MGT_PARAMETERS
615
typedef struct _ENABLE_ASIC_STATIC_PWR_MGT_PARAMETERS
568
{
616
{
Line 805... Line 853...
805
 
853
 
806
#define ATOM_ENCODER_CONFIG_V4_DPLINKRATE_MASK				0x03
854
#define ATOM_ENCODER_CONFIG_V4_DPLINKRATE_MASK				0x03
807
#define ATOM_ENCODER_CONFIG_V4_DPLINKRATE_1_62GHZ		  0x00
855
#define ATOM_ENCODER_CONFIG_V4_DPLINKRATE_1_62GHZ		  0x00
808
#define ATOM_ENCODER_CONFIG_V4_DPLINKRATE_2_70GHZ		  0x01
856
#define ATOM_ENCODER_CONFIG_V4_DPLINKRATE_2_70GHZ		  0x01
-
 
857
#define ATOM_ENCODER_CONFIG_V4_DPLINKRATE_5_40GHZ		  0x02
809
#define ATOM_ENCODER_CONFIG_V4_DPLINKRATE_5_40GHZ		  0x02
858
#define ATOM_ENCODER_CONFIG_V4_DPLINKRATE_3_24GHZ		  0x03
810
#define ATOM_ENCODER_CONFIG_V4_ENCODER_SEL					  0x70
859
#define ATOM_ENCODER_CONFIG_V4_ENCODER_SEL					  0x70
811
#define ATOM_ENCODER_CONFIG_V4_DIG0_ENCODER					  0x00
860
#define ATOM_ENCODER_CONFIG_V4_DIG0_ENCODER					  0x00
812
#define ATOM_ENCODER_CONFIG_V4_DIG1_ENCODER					  0x10
861
#define ATOM_ENCODER_CONFIG_V4_DIG1_ENCODER					  0x10
813
#define ATOM_ENCODER_CONFIG_V4_DIG2_ENCODER					  0x20
862
#define ATOM_ENCODER_CONFIG_V4_DIG2_ENCODER					  0x20
814
#define ATOM_ENCODER_CONFIG_V4_DIG3_ENCODER					  0x30
863
#define ATOM_ENCODER_CONFIG_V4_DIG3_ENCODER					  0x30
815
#define ATOM_ENCODER_CONFIG_V4_DIG4_ENCODER					  0x40
864
#define ATOM_ENCODER_CONFIG_V4_DIG4_ENCODER					  0x40
-
 
865
#define ATOM_ENCODER_CONFIG_V4_DIG5_ENCODER					  0x50
Line 816... Line 866...
816
#define ATOM_ENCODER_CONFIG_V4_DIG5_ENCODER					  0x50
866
#define ATOM_ENCODER_CONFIG_V4_DIG6_ENCODER					  0x60
817
 
867
 
818
typedef struct _DIG_ENCODER_CONTROL_PARAMETERS_V4
868
typedef struct _DIG_ENCODER_CONTROL_PARAMETERS_V4
819
{
869
{
Line 1169... Line 1219...
1169
#define ATOM_TRANSMITTER_CONFIG_V4_TRANSMITTER1           	0x00	//AB
1219
#define ATOM_TRANSMITTER_CONFIG_V4_TRANSMITTER1           	0x00	//AB
1170
#define ATOM_TRANSMITTER_CONFIG_V4_TRANSMITTER2           	0x40	//CD
1220
#define ATOM_TRANSMITTER_CONFIG_V4_TRANSMITTER2           	0x40	//CD
1171
#define ATOM_TRANSMITTER_CONFIG_V4_TRANSMITTER3           	0x80	//EF
1221
#define ATOM_TRANSMITTER_CONFIG_V4_TRANSMITTER3           	0x80	//EF
Line -... Line 1222...
-
 
1222
 
-
 
1223
 
-
 
1224
typedef struct _ATOM_DIG_TRANSMITTER_CONFIG_V5
-
 
1225
{
-
 
1226
#if ATOM_BIG_ENDIAN
-
 
1227
  UCHAR ucReservd1:1;
-
 
1228
  UCHAR ucHPDSel:3;
-
 
1229
  UCHAR ucPhyClkSrcId:2;            
-
 
1230
  UCHAR ucCoherentMode:1;            
-
 
1231
  UCHAR ucReserved:1;
-
 
1232
#else
-
 
1233
  UCHAR ucReserved:1;
-
 
1234
  UCHAR ucCoherentMode:1;            
-
 
1235
  UCHAR ucPhyClkSrcId:2;            
-
 
1236
  UCHAR ucHPDSel:3;
-
 
1237
  UCHAR ucReservd1:1;
-
 
1238
#endif
-
 
1239
}ATOM_DIG_TRANSMITTER_CONFIG_V5;
-
 
1240
 
-
 
1241
typedef struct _DIG_TRANSMITTER_CONTROL_PARAMETERS_V1_5
-
 
1242
{
-
 
1243
  USHORT usSymClock;		        // Encoder Clock in 10kHz,(DP mode)= linkclock/10, (TMDS/LVDS/HDMI)= pixel clock,  (HDMI deep color), =pixel clock * deep_color_ratio
-
 
1244
  UCHAR  ucPhyId;                   // 0=UNIPHYA, 1=UNIPHYB, 2=UNIPHYC, 3=UNIPHYD, 4= UNIPHYE 5=UNIPHYF
-
 
1245
  UCHAR  ucAction;				    // define as ATOM_TRANSMITER_ACTION_xxx
-
 
1246
  UCHAR  ucLaneNum;                 // indicate lane number 1-8
-
 
1247
  UCHAR  ucConnObjId;               // Connector Object Id defined in ObjectId.h
-
 
1248
  UCHAR  ucDigMode;                 // indicate DIG mode
-
 
1249
  union{
-
 
1250
  ATOM_DIG_TRANSMITTER_CONFIG_V5 asConfig;
-
 
1251
  UCHAR ucConfig;
-
 
1252
  };
-
 
1253
  UCHAR  ucDigEncoderSel;           // indicate DIG front end encoder 
-
 
1254
  UCHAR  ucDPLaneSet;
-
 
1255
  UCHAR  ucReserved;
-
 
1256
  UCHAR  ucReserved1;
-
 
1257
}DIG_TRANSMITTER_CONTROL_PARAMETERS_V1_5;
-
 
1258
 
-
 
1259
//ucPhyId
-
 
1260
#define ATOM_PHY_ID_UNIPHYA                                 0  
-
 
1261
#define ATOM_PHY_ID_UNIPHYB                                 1
-
 
1262
#define ATOM_PHY_ID_UNIPHYC                                 2
-
 
1263
#define ATOM_PHY_ID_UNIPHYD                                 3
-
 
1264
#define ATOM_PHY_ID_UNIPHYE                                 4
-
 
1265
#define ATOM_PHY_ID_UNIPHYF                                 5
-
 
1266
#define ATOM_PHY_ID_UNIPHYG                                 6
-
 
1267
 
-
 
1268
// ucDigEncoderSel
-
 
1269
#define ATOM_TRANMSITTER_V5__DIGA_SEL                       0x01
-
 
1270
#define ATOM_TRANMSITTER_V5__DIGB_SEL                       0x02
-
 
1271
#define ATOM_TRANMSITTER_V5__DIGC_SEL                       0x04
-
 
1272
#define ATOM_TRANMSITTER_V5__DIGD_SEL                       0x08
-
 
1273
#define ATOM_TRANMSITTER_V5__DIGE_SEL                       0x10
-
 
1274
#define ATOM_TRANMSITTER_V5__DIGF_SEL                       0x20
-
 
1275
#define ATOM_TRANMSITTER_V5__DIGG_SEL                       0x40
-
 
1276
 
-
 
1277
// ucDigMode
-
 
1278
#define ATOM_TRANSMITTER_DIGMODE_V5_DP                      0
-
 
1279
#define ATOM_TRANSMITTER_DIGMODE_V5_LVDS                    1
-
 
1280
#define ATOM_TRANSMITTER_DIGMODE_V5_DVI                     2
-
 
1281
#define ATOM_TRANSMITTER_DIGMODE_V5_HDMI                    3
-
 
1282
#define ATOM_TRANSMITTER_DIGMODE_V5_SDVO                    4
-
 
1283
#define ATOM_TRANSMITTER_DIGMODE_V5_DP_MST                  5
-
 
1284
 
-
 
1285
// ucDPLaneSet
-
 
1286
#define DP_LANE_SET__0DB_0_4V                               0x00
-
 
1287
#define DP_LANE_SET__0DB_0_6V                               0x01
-
 
1288
#define DP_LANE_SET__0DB_0_8V                               0x02
-
 
1289
#define DP_LANE_SET__0DB_1_2V                               0x03
-
 
1290
#define DP_LANE_SET__3_5DB_0_4V                             0x08  
-
 
1291
#define DP_LANE_SET__3_5DB_0_6V                             0x09
-
 
1292
#define DP_LANE_SET__3_5DB_0_8V                             0x0a
-
 
1293
#define DP_LANE_SET__6DB_0_4V                               0x10
-
 
1294
#define DP_LANE_SET__6DB_0_6V                               0x11
-
 
1295
#define DP_LANE_SET__9_5DB_0_4V                             0x18  
-
 
1296
 
-
 
1297
// ATOM_DIG_TRANSMITTER_CONFIG_V5 asConfig;
-
 
1298
// Bit1
-
 
1299
#define ATOM_TRANSMITTER_CONFIG_V5_COHERENT				          0x02
-
 
1300
 
-
 
1301
// Bit3:2
-
 
1302
#define ATOM_TRANSMITTER_CONFIG_V5_REFCLK_SEL_MASK 	        0x0c
-
 
1303
#define ATOM_TRANSMITTER_CONFIG_V5_REFCLK_SEL_SHIFT		    0x02
-
 
1304
 
-
 
1305
#define ATOM_TRANSMITTER_CONFIG_V5_P1PLL         		        0x00
-
 
1306
#define ATOM_TRANSMITTER_CONFIG_V5_P2PLL		                0x04
-
 
1307
#define ATOM_TRANSMITTER_CONFIG_V5_P0PLL		                0x08   
-
 
1308
#define ATOM_TRANSMITTER_CONFIG_V5_REFCLK_SRC_EXT           0x0c
-
 
1309
// Bit6:4
-
 
1310
#define ATOM_TRANSMITTER_CONFIG_V5_HPD_SEL_MASK		          0x70
-
 
1311
#define ATOM_TRANSMITTER_CONFIG_V5_HPD_SEL_SHIFT		      0x04
-
 
1312
 
-
 
1313
#define ATOM_TRANSMITTER_CONFIG_V5_NO_HPD_SEL				        0x00
-
 
1314
#define ATOM_TRANSMITTER_CONFIG_V5_HPD1_SEL				          0x10
-
 
1315
#define ATOM_TRANSMITTER_CONFIG_V5_HPD2_SEL				          0x20
-
 
1316
#define ATOM_TRANSMITTER_CONFIG_V5_HPD3_SEL				          0x30
-
 
1317
#define ATOM_TRANSMITTER_CONFIG_V5_HPD4_SEL				          0x40
-
 
1318
#define ATOM_TRANSMITTER_CONFIG_V5_HPD5_SEL				          0x50
-
 
1319
#define ATOM_TRANSMITTER_CONFIG_V5_HPD6_SEL				          0x60
-
 
1320
 
-
 
1321
#define DIG_TRANSMITTER_CONTROL_PS_ALLOCATION_V1_5            DIG_TRANSMITTER_CONTROL_PARAMETERS_V1_5
1172
 
1322
 
1173
 
1323
 
1174
/****************************************************************************/	
1324
/****************************************************************************/	
1175
// Structures used by ExternalEncoderControlTable V1.3
1325
// Structures used by ExternalEncoderControlTable V1.3
1176
// ASIC Families: Evergreen, Llano, NI
1326
// ASIC Families: Evergreen, Llano, NI
Line 1791... Line 1941...
1791
#define ATOM_PPLL_SS_TYPE_V3_EXT_SPREAD       0x02
1941
#define ATOM_PPLL_SS_TYPE_V3_EXT_SPREAD       0x02
1792
#define ATOM_PPLL_SS_TYPE_V3_PPLL_SEL_MASK    0x0c
1942
#define ATOM_PPLL_SS_TYPE_V3_PPLL_SEL_MASK    0x0c
1793
#define ATOM_PPLL_SS_TYPE_V3_P1PLL            0x00
1943
#define ATOM_PPLL_SS_TYPE_V3_P1PLL            0x00
1794
#define ATOM_PPLL_SS_TYPE_V3_P2PLL            0x04
1944
#define ATOM_PPLL_SS_TYPE_V3_P2PLL            0x04
1795
#define ATOM_PPLL_SS_TYPE_V3_DCPLL            0x08
1945
#define ATOM_PPLL_SS_TYPE_V3_DCPLL            0x08
-
 
1946
#define ATOM_PPLL_SS_TYPE_V3_P0PLL            ATOM_PPLL_SS_TYPE_V3_DCPLL
1796
#define ATOM_PPLL_SS_AMOUNT_V3_FBDIV_MASK     0x00FF
1947
#define ATOM_PPLL_SS_AMOUNT_V3_FBDIV_MASK     0x00FF
1797
#define ATOM_PPLL_SS_AMOUNT_V3_FBDIV_SHIFT    0
1948
#define ATOM_PPLL_SS_AMOUNT_V3_FBDIV_SHIFT    0
1798
#define ATOM_PPLL_SS_AMOUNT_V3_NFRAC_MASK     0x0F00
1949
#define ATOM_PPLL_SS_AMOUNT_V3_NFRAC_MASK     0x0F00
1799
#define ATOM_PPLL_SS_AMOUNT_V3_NFRAC_SHIFT    8
1950
#define ATOM_PPLL_SS_AMOUNT_V3_NFRAC_SHIFT    8
Line 2028... Line 2179...
2028
  UCHAR    ucVoltageType;               // To tell which voltage to set up, VDDC/MVDDC/MVDDQ
2179
  UCHAR    ucVoltageType;               // To tell which voltage to set up, VDDC/MVDDC/MVDDQ
2029
  UCHAR    ucVoltageMode;               // Not used, maybe use for state machine for differen power mode
2180
  UCHAR    ucVoltageMode;               // Not used, maybe use for state machine for differen power mode
2030
  USHORT   usVoltageLevel;              // real voltage level
2181
  USHORT   usVoltageLevel;              // real voltage level
2031
}SET_VOLTAGE_PARAMETERS_V2;
2182
}SET_VOLTAGE_PARAMETERS_V2;
Line -... Line 2183...
-
 
2183
 
-
 
2184
 
-
 
2185
typedef struct	_SET_VOLTAGE_PARAMETERS_V1_3
-
 
2186
{
-
 
2187
  UCHAR    ucVoltageType;               // To tell which voltage to set up, VDDC/MVDDC/MVDDQ/VDDCI
-
 
2188
  UCHAR    ucVoltageMode;               // Indicate action: Set voltage level
-
 
2189
  USHORT   usVoltageLevel;              // real voltage level in unit of mv or Voltage Phase (0, 1, 2, .. )
-
 
2190
}SET_VOLTAGE_PARAMETERS_V1_3;
-
 
2191
 
-
 
2192
//ucVoltageType
-
 
2193
#define VOLTAGE_TYPE_VDDC                    1
-
 
2194
#define VOLTAGE_TYPE_MVDDC                   2
-
 
2195
#define VOLTAGE_TYPE_MVDDQ                   3
-
 
2196
#define VOLTAGE_TYPE_VDDCI                   4
-
 
2197
 
-
 
2198
//SET_VOLTAGE_PARAMETERS_V3.ucVoltageMode
-
 
2199
#define ATOM_SET_VOLTAGE                     0        //Set voltage Level
-
 
2200
#define ATOM_INIT_VOLTAGE_REGULATOR          3        //Init Regulator
-
 
2201
#define ATOM_SET_VOLTAGE_PHASE               4        //Set Vregulator Phase
-
 
2202
#define ATOM_GET_MAX_VOLTAGE                 6        //Get Max Voltage, not used in SetVoltageTable v1.3
-
 
2203
#define ATOM_GET_VOLTAGE_LEVEL               6        //Get Voltage level from vitual voltage ID
-
 
2204
 
-
 
2205
// define vitual voltage id in usVoltageLevel
-
 
2206
#define ATOM_VIRTUAL_VOLTAGE_ID0             0xff01
-
 
2207
#define ATOM_VIRTUAL_VOLTAGE_ID1             0xff02
-
 
2208
#define ATOM_VIRTUAL_VOLTAGE_ID2             0xff03
-
 
2209
#define ATOM_VIRTUAL_VOLTAGE_ID3             0xff04
2032
 
2210
 
2033
typedef struct _SET_VOLTAGE_PS_ALLOCATION
2211
typedef struct _SET_VOLTAGE_PS_ALLOCATION
2034
{
2212
{
2035
	SET_VOLTAGE_PARAMETERS sASICSetVoltage;
2213
	SET_VOLTAGE_PARAMETERS sASICSetVoltage;
2036
	WRITE_ONE_BYTE_HW_I2C_DATA_PS_ALLOCATION sReserved;
2214
	WRITE_ONE_BYTE_HW_I2C_DATA_PS_ALLOCATION sReserved;
Line -... Line 2215...
-
 
2215
}SET_VOLTAGE_PS_ALLOCATION;
-
 
2216
 
-
 
2217
// New Added from SI for GetVoltageInfoTable, input parameter structure
-
 
2218
typedef struct  _GET_VOLTAGE_INFO_INPUT_PARAMETER_V1_1
-
 
2219
{
-
 
2220
  UCHAR    ucVoltageType;               // Input: To tell which voltage to set up, VDDC/MVDDC/MVDDQ/VDDCI
-
 
2221
  UCHAR    ucVoltageMode;               // Input: Indicate action: Get voltage info
-
 
2222
  USHORT   usVoltageLevel;              // Input: real voltage level in unit of mv or Voltage Phase (0, 1, 2, .. ) or Leakage Id 
-
 
2223
  ULONG    ulReserved;
-
 
2224
}GET_VOLTAGE_INFO_INPUT_PARAMETER_V1_1;
-
 
2225
 
-
 
2226
// New Added from SI for GetVoltageInfoTable, output parameter structure when ucVotlageMode == ATOM_GET_VOLTAGE_VID
-
 
2227
typedef struct  _GET_VOLTAGE_INFO_OUTPUT_PARAMETER_V1_1
-
 
2228
{
-
 
2229
  ULONG    ulVotlageGpioState;
-
 
2230
  ULONG    ulVoltageGPioMask;
-
 
2231
}GET_VOLTAGE_INFO_OUTPUT_PARAMETER_V1_1;
-
 
2232
 
-
 
2233
// New Added from SI for GetVoltageInfoTable, output parameter structure when ucVotlageMode == ATOM_GET_VOLTAGE_STATEx_LEAKAGE_VID
-
 
2234
typedef struct  _GET_LEAKAGE_VOLTAGE_INFO_OUTPUT_PARAMETER_V1_1
-
 
2235
{
-
 
2236
  USHORT   usVoltageLevel;
-
 
2237
  USHORT   usVoltageId;                                  // Voltage Id programmed in Voltage Regulator
-
 
2238
  ULONG    ulReseved;
-
 
2239
}GET_LEAKAGE_VOLTAGE_INFO_OUTPUT_PARAMETER_V1_1;
-
 
2240
 
-
 
2241
 
-
 
2242
// GetVoltageInfo v1.1 ucVoltageMode
-
 
2243
#define	ATOM_GET_VOLTAGE_VID                0x00
-
 
2244
#define ATOM_GET_VOTLAGE_INIT_SEQ           0x03
-
 
2245
#define ATOM_GET_VOLTTAGE_PHASE_PHASE_VID   0x04
-
 
2246
// for SI, this state map to 0xff02 voltage state in Power Play table, which is power boost state
-
 
2247
#define	ATOM_GET_VOLTAGE_STATE0_LEAKAGE_VID 0x10
-
 
2248
 
-
 
2249
// for SI, this state map to 0xff01 voltage state in Power Play table, which is performance state
-
 
2250
#define	ATOM_GET_VOLTAGE_STATE1_LEAKAGE_VID 0x11
-
 
2251
// undefined power state
-
 
2252
#define	ATOM_GET_VOLTAGE_STATE2_LEAKAGE_VID 0x12
2037
}SET_VOLTAGE_PS_ALLOCATION;
2253
#define	ATOM_GET_VOLTAGE_STATE3_LEAKAGE_VID 0x13
2038
 
2254
 
2039
/****************************************************************************/
2255
/****************************************************************************/
2040
// Structures used by TVEncoderControlTable
2256
// Structures used by TVEncoderControlTable
2041
/****************************************************************************/
2257
/****************************************************************************/
Line 2063... Line 2279...
2063
  USHORT        UtilityPipeLine;	        // Offest for the utility to get parser info,Don't change this position!
2279
  USHORT        UtilityPipeLine;	        // Offest for the utility to get parser info,Don't change this position!
2064
  USHORT        MultimediaCapabilityInfo; // Only used by MM Lib,latest version 1.1, not configuable from Bios, need to include the table to build Bios 
2280
  USHORT        MultimediaCapabilityInfo; // Only used by MM Lib,latest version 1.1, not configuable from Bios, need to include the table to build Bios 
2065
  USHORT        MultimediaConfigInfo;     // Only used by MM Lib,latest version 2.1, not configuable from Bios, need to include the table to build Bios
2281
  USHORT        MultimediaConfigInfo;     // Only used by MM Lib,latest version 2.1, not configuable from Bios, need to include the table to build Bios
2066
  USHORT        StandardVESA_Timing;      // Only used by Bios
2282
  USHORT        StandardVESA_Timing;      // Only used by Bios
2067
  USHORT        FirmwareInfo;             // Shared by various SW components,latest version 1.4
2283
  USHORT        FirmwareInfo;             // Shared by various SW components,latest version 1.4
2068
  USHORT        DAC_Info;                 // Will be obsolete from R600
2284
  USHORT        PaletteData;              // Only used by BIOS
2069
  USHORT        LCD_Info;                 // Shared by various SW components,latest version 1.3, was called LVDS_Info 
2285
  USHORT        LCD_Info;                 // Shared by various SW components,latest version 1.3, was called LVDS_Info 
2070
  USHORT        TMDS_Info;                // Will be obsolete from R600
2286
  USHORT        DIGTransmitterInfo;       // Internal used by VBIOS only version 3.1
2071
  USHORT        AnalogTV_Info;            // Shared by various SW components,latest version 1.1 
2287
  USHORT        AnalogTV_Info;            // Shared by various SW components,latest version 1.1 
2072
  USHORT        SupportedDevicesInfo;     // Will be obsolete from R600
2288
  USHORT        SupportedDevicesInfo;     // Will be obsolete from R600
2073
  USHORT        GPIO_I2C_Info;            // Shared by various SW components,latest version 1.2 will be used from R600           
2289
  USHORT        GPIO_I2C_Info;            // Shared by various SW components,latest version 1.2 will be used from R600           
2074
  USHORT        VRAM_UsageByFirmware;     // Shared by various SW components,latest version 1.3 will be used from R600
2290
  USHORT        VRAM_UsageByFirmware;     // Shared by various SW components,latest version 1.3 will be used from R600
2075
  USHORT        GPIO_Pin_LUT;             // Shared by various SW components,latest version 1.1
2291
  USHORT        GPIO_Pin_LUT;             // Shared by various SW components,latest version 1.1
Line 2094... Line 2310...
2094
  USHORT        ASIC_ProfilingInfo;				// New table name from R600, used to be called "ASIC_VDDCI_Info" for pre-R600
2310
  USHORT        ASIC_ProfilingInfo;				// New table name from R600, used to be called "ASIC_VDDCI_Info" for pre-R600
2095
  USHORT        VoltageObjectInfo;				// Shared by various SW components, latest version 1.1
2311
  USHORT        VoltageObjectInfo;				// Shared by various SW components, latest version 1.1
2096
	USHORT				PowerSourceInfo;					// Shared by various SW components, latest versoin 1.1
2312
	USHORT				PowerSourceInfo;					// Shared by various SW components, latest versoin 1.1
2097
}ATOM_MASTER_LIST_OF_DATA_TABLES;
2313
}ATOM_MASTER_LIST_OF_DATA_TABLES;
Line 2098... Line -...
2098
 
-
 
2099
// For backward compatible 
-
 
2100
#define LVDS_Info                LCD_Info
-
 
2101
 
2314
 
2102
typedef struct _ATOM_MASTER_DATA_TABLE
2315
typedef struct _ATOM_MASTER_DATA_TABLE
2103
{ 
2316
{ 
2104
	ATOM_COMMON_TABLE_HEADER sHeader;
2317
	ATOM_COMMON_TABLE_HEADER sHeader;
2105
	ATOM_MASTER_LIST_OF_DATA_TABLES ListOfDataTables;
2318
	ATOM_MASTER_LIST_OF_DATA_TABLES ListOfDataTables;
Line -... Line 2319...
-
 
2319
}ATOM_MASTER_DATA_TABLE;
-
 
2320
 
-
 
2321
// For backward compatible 
-
 
2322
#define LVDS_Info                LCD_Info
Line 2106... Line 2323...
2106
}ATOM_MASTER_DATA_TABLE;
2323
#define DAC_Info                 PaletteData
2107
 
2324
#define TMDS_Info                DIGTransmitterInfo
2108
 
2325
 
2109
/****************************************************************************/
2326
/****************************************************************************/
Line 2169... Line 2386...
2169
 
2386
 
2170
//Please don't add or expand this bitfield structure below, this one will retire soon.!
2387
//Please don't add or expand this bitfield structure below, this one will retire soon.!
2171
typedef struct _ATOM_FIRMWARE_CAPABILITY
2388
typedef struct _ATOM_FIRMWARE_CAPABILITY
2172
{
2389
{
2173
#if ATOM_BIG_ENDIAN
2390
#if ATOM_BIG_ENDIAN
-
 
2391
  USHORT Reserved:1;
-
 
2392
  USHORT SCL2Redefined:1;
2174
	USHORT Reserved:3;
2393
  USHORT PostWithoutModeSet:1;
2175
	USHORT HyperMemory_Size:4;
2394
	USHORT HyperMemory_Size:4;
2176
	USHORT HyperMemory_Support:1;
2395
	USHORT HyperMemory_Support:1;
2177
	USHORT PPMode_Assigned:1;
2396
	USHORT PPMode_Assigned:1;
2178
	USHORT WMI_SUPPORT:1;
2397
	USHORT WMI_SUPPORT:1;
Line 2191... Line 2410...
2191
	USHORT GPUControlsBL:1;
2410
	USHORT GPUControlsBL:1;
2192
	USHORT WMI_SUPPORT:1;
2411
	USHORT WMI_SUPPORT:1;
2193
	USHORT PPMode_Assigned:1;
2412
	USHORT PPMode_Assigned:1;
2194
	USHORT HyperMemory_Support:1;
2413
	USHORT HyperMemory_Support:1;
2195
	USHORT HyperMemory_Size:4;
2414
	USHORT HyperMemory_Size:4;
-
 
2415
  USHORT PostWithoutModeSet:1;
-
 
2416
  USHORT SCL2Redefined:1;
2196
	USHORT Reserved:3;
2417
  USHORT Reserved:1;
2197
#endif
2418
#endif
2198
}ATOM_FIRMWARE_CAPABILITY;
2419
}ATOM_FIRMWARE_CAPABILITY;
Line 2199... Line 2420...
2199
 
2420
 
2200
typedef union _ATOM_FIRMWARE_CAPABILITY_ACCESS
2421
typedef union _ATOM_FIRMWARE_CAPABILITY_ACCESS
Line 2416... Line 2637...
2416
  USHORT                          usBootUpVDDCVoltage;        //In MV unit
2637
  USHORT                          usBootUpVDDCVoltage;        //In MV unit
2417
  USHORT                          usLcdMinPixelClockPLL_Output; // In MHz unit
2638
  USHORT                          usLcdMinPixelClockPLL_Output; // In MHz unit
2418
  USHORT                          usLcdMaxPixelClockPLL_Output; // In MHz unit
2639
  USHORT                          usLcdMaxPixelClockPLL_Output; // In MHz unit
2419
  ULONG                           ulReserved4;                //Was ulAsicMaximumVoltage
2640
  ULONG                           ulReserved4;                //Was ulAsicMaximumVoltage
2420
  ULONG                           ulMinPixelClockPLL_Output;  //In 10Khz unit
2641
  ULONG                           ulMinPixelClockPLL_Output;  //In 10Khz unit
-
 
2642
  UCHAR                           ucRemoteDisplayConfig;
2421
  ULONG                           ulReserved5;                //Was usMinEngineClockPLL_Input and usMaxEngineClockPLL_Input
2643
  UCHAR                           ucReserved5[3];             //Was usMinEngineClockPLL_Input and usMaxEngineClockPLL_Input
2422
  ULONG                           ulReserved6;                //Was usMinEngineClockPLL_Output and usMinMemoryClockPLL_Input
2644
  ULONG                           ulReserved6;                //Was usMinEngineClockPLL_Output and usMinMemoryClockPLL_Input
2423
  ULONG                           ulReserved7;                //Was usMaxMemoryClockPLL_Input and usMinMemoryClockPLL_Output
2645
  ULONG                           ulReserved7;                //Was usMaxMemoryClockPLL_Input and usMinMemoryClockPLL_Output
2424
  USHORT                          usReserved11;               //Was usMaxPixelClock;  //In 10Khz unit, Max.  Pclk used only for DAC
2646
  USHORT                          usReserved11;               //Was usMaxPixelClock;  //In 10Khz unit, Max.  Pclk used only for DAC
2425
  USHORT                          usMinPixelClockPLL_Input;   //In 10Khz unit
2647
  USHORT                          usMinPixelClockPLL_Input;   //In 10Khz unit
2426
  USHORT                          usMaxPixelClockPLL_Input;   //In 10Khz unit
2648
  USHORT                          usMaxPixelClockPLL_Input;   //In 10Khz unit
Line 2436... Line 2658...
2436
  ULONG                           ulReserved10[3];            // New added comparing to previous version
2658
  ULONG                           ulReserved10[3];            // New added comparing to previous version
2437
}ATOM_FIRMWARE_INFO_V2_2;
2659
}ATOM_FIRMWARE_INFO_V2_2;
Line 2438... Line 2660...
2438
 
2660
 
Line -... Line 2661...
-
 
2661
#define ATOM_FIRMWARE_INFO_LAST  ATOM_FIRMWARE_INFO_V2_2
-
 
2662
 
-
 
2663
 
-
 
2664
// definition of ucRemoteDisplayConfig
-
 
2665
#define REMOTE_DISPLAY_DISABLE                   0x00
2439
#define ATOM_FIRMWARE_INFO_LAST  ATOM_FIRMWARE_INFO_V2_2
2666
#define REMOTE_DISPLAY_ENABLE                    0x01
2440
 
2667
 
2441
/****************************************************************************/
2668
/****************************************************************************/
2442
// Structures used in IntegratedSystemInfoTable
2669
// Structures used in IntegratedSystemInfoTable
2443
/****************************************************************************/
2670
/****************************************************************************/
Line 2658... Line 2885...
2658
#define    INTEGRATED_SYSTEM_INFO__UNKNOWN_CPU             0
2885
#define    INTEGRATED_SYSTEM_INFO__UNKNOWN_CPU             0
2659
#define    INTEGRATED_SYSTEM_INFO__AMD_CPU__GRIFFIN        1
2886
#define    INTEGRATED_SYSTEM_INFO__AMD_CPU__GRIFFIN        1
2660
#define    INTEGRATED_SYSTEM_INFO__AMD_CPU__GREYHOUND      2
2887
#define    INTEGRATED_SYSTEM_INFO__AMD_CPU__GREYHOUND      2
2661
#define    INTEGRATED_SYSTEM_INFO__AMD_CPU__K8             3
2888
#define    INTEGRATED_SYSTEM_INFO__AMD_CPU__K8             3
2662
#define    INTEGRATED_SYSTEM_INFO__AMD_CPU__PHARAOH        4
2889
#define    INTEGRATED_SYSTEM_INFO__AMD_CPU__PHARAOH        4
-
 
2890
#define    INTEGRATED_SYSTEM_INFO__AMD_CPU__OROCHI         5
Line 2663... Line 2891...
2663
 
2891
 
Line 2664... Line 2892...
2664
#define    INTEGRATED_SYSTEM_INFO__AMD_CPU__MAX_CODE       INTEGRATED_SYSTEM_INFO__AMD_CPU__PHARAOH    // this deff reflects max defined CPU code
2892
#define    INTEGRATED_SYSTEM_INFO__AMD_CPU__MAX_CODE       INTEGRATED_SYSTEM_INFO__AMD_CPU__OROCHI    // this deff reflects max defined CPU code
2665
 
2893
 
2666
#define SYSTEM_CONFIG_POWEREXPRESS_ENABLE                 0x00000001
2894
#define SYSTEM_CONFIG_POWEREXPRESS_ENABLE                 0x00000001
2667
#define SYSTEM_CONFIG_RUN_AT_OVERDRIVE_ENGINE             0x00000002
2895
#define SYSTEM_CONFIG_RUN_AT_OVERDRIVE_ENGINE             0x00000002
Line 2751... Line 2979...
2751
#define ASIC_EXT_DIG2_ENCODER_ID													0x08
2979
#define ASIC_EXT_DIG2_ENCODER_ID													0x08
2752
#define ASIC_INT_DIG3_ENCODER_ID													0x0a
2980
#define ASIC_INT_DIG3_ENCODER_ID													0x0a
2753
#define ASIC_INT_DIG4_ENCODER_ID													0x0b
2981
#define ASIC_INT_DIG4_ENCODER_ID													0x0b
2754
#define ASIC_INT_DIG5_ENCODER_ID													0x0c
2982
#define ASIC_INT_DIG5_ENCODER_ID													0x0c
2755
#define ASIC_INT_DIG6_ENCODER_ID													0x0d
2983
#define ASIC_INT_DIG6_ENCODER_ID													0x0d
-
 
2984
#define ASIC_INT_DIG7_ENCODER_ID													0x0e
Line 2756... Line 2985...
2756
 
2985
 
2757
//define Encoder attribute
2986
//define Encoder attribute
2758
#define ATOM_ANALOG_ENCODER																0
2987
#define ATOM_ANALOG_ENCODER																0
2759
#define ATOM_DIGITAL_ENCODER															1
2988
#define ATOM_DIGITAL_ENCODER															1
Line 3224... Line 3453...
3224
  UCHAR               ucPanelInfoSize;					 //  start from ATOM_DTD_FORMAT to end of panel info, include ExtInfoTable
3453
  UCHAR               ucPanelInfoSize;					 //  start from ATOM_DTD_FORMAT to end of panel info, include ExtInfoTable
3225
  USHORT              usBacklightPWM;            //  Backlight PWM in Hz. New in _V13
3454
  USHORT              usBacklightPWM;            //  Backlight PWM in Hz. New in _V13
Line 3226... Line 3455...
3226
 
3455
 
3227
  UCHAR               ucPowerSequenceDIGONtoDE_in4Ms;
3456
  UCHAR               ucPowerSequenceDIGONtoDE_in4Ms;
3228
  UCHAR               ucPowerSequenceDEtoVARY_BL_in4Ms;
-
 
3229
  UCHAR               ucPowerSequenceDEtoDIGON_in4Ms;
3457
  UCHAR               ucPowerSequenceDEtoVARY_BL_in4Ms;
-
 
3458
  UCHAR               ucPowerSequenceVARY_BLtoDE_in4Ms;
Line 3230... Line 3459...
3230
  UCHAR               ucPowerSequenceVARY_BLtoDE_in4Ms;
3459
  UCHAR               ucPowerSequenceDEtoDIGON_in4Ms;
3231
 
3460
 
3232
  UCHAR               ucOffDelay_in4Ms;
3461
  UCHAR               ucOffDelay_in4Ms;
3233
  UCHAR               ucPowerSequenceVARY_BLtoBLON_in4Ms;
3462
  UCHAR               ucPowerSequenceVARY_BLtoBLON_in4Ms;
Line -... Line 3463...
-
 
3463
  UCHAR               ucPowerSequenceBLONtoVARY_BL_in4Ms;
-
 
3464
  UCHAR               ucReserved1;
-
 
3465
 
-
 
3466
  UCHAR               ucDPCD_eDP_CONFIGURATION_CAP;     // dpcd 0dh
-
 
3467
  UCHAR               ucDPCD_MAX_LINK_RATE;             // dpcd 01h
-
 
3468
  UCHAR               ucDPCD_MAX_LANE_COUNT;            // dpcd 02h
-
 
3469
  UCHAR               ucDPCD_MAX_DOWNSPREAD;            // dpcd 03h
-
 
3470
 
3234
  UCHAR               ucPowerSequenceBLONtoVARY_BL_in4Ms;
3471
  USHORT              usMaxPclkFreqInSingleLink;        // Max PixelClock frequency in single link mode. 
3235
  UCHAR               ucReserved1;
3472
  UCHAR               uceDPToLVDSRxId;
Line 3236... Line 3473...
3236
 
3473
  UCHAR               ucLcdReservd;
Line 3237... Line 3474...
3237
  ULONG               ulReserved[4];
3474
  ULONG               ulReserved[2];
Line 3271... Line 3508...
3271
#define	LCDPANEL_CAP_V13_DRR_SUPPORTED          0x2        // = LCDPANEL_CAP_DRR_SUPPORTED no change comparing to previous version
3508
#define	LCDPANEL_CAP_V13_DRR_SUPPORTED          0x2        // = LCDPANEL_CAP_DRR_SUPPORTED no change comparing to previous version
Line 3272... Line 3509...
3272
 
3509
 
3273
//Use this cap bit for a quick reference whether an embadded panel (LCD1 ) is LVDS or eDP.
3510
//Use this cap bit for a quick reference whether an embadded panel (LCD1 ) is LVDS or eDP.
Line -... Line 3511...
-
 
3511
#define	LCDPANEL_CAP_V13_eDP                    0x4        // = LCDPANEL_CAP_eDP no change comparing to previous version
-
 
3512
 
-
 
3513
//uceDPToLVDSRxId
-
 
3514
#define eDP_TO_LVDS_RX_DISABLE                  0x00       // no eDP->LVDS translator chip 
-
 
3515
#define eDP_TO_LVDS_COMMON_ID                   0x01       // common eDP->LVDS translator chip without AMD SW init
3274
#define	LCDPANEL_CAP_V13_eDP                    0x4        // = LCDPANEL_CAP_eDP no change comparing to previous version
3516
#define eDP_TO_LVDS_RT_ID                       0x02       // RT tanslator which require AMD SW init
3275
 
3517
 
3276
typedef struct  _ATOM_PATCH_RECORD_MODE
3518
typedef struct  _ATOM_PATCH_RECORD_MODE
3277
{
3519
{
3278
	UCHAR ucRecordType;
3520
	UCHAR ucRecordType;
Line 3315... Line 3557...
3315
#define LCD_MODE_PATCH_RECORD_MODE_TYPE       1
3557
#define LCD_MODE_PATCH_RECORD_MODE_TYPE       1
3316
#define LCD_RTS_RECORD_TYPE                   2
3558
#define LCD_RTS_RECORD_TYPE                   2
3317
#define LCD_CAP_RECORD_TYPE                   3
3559
#define LCD_CAP_RECORD_TYPE                   3
3318
#define LCD_FAKE_EDID_PATCH_RECORD_TYPE       4
3560
#define LCD_FAKE_EDID_PATCH_RECORD_TYPE       4
3319
#define LCD_PANEL_RESOLUTION_RECORD_TYPE      5
3561
#define LCD_PANEL_RESOLUTION_RECORD_TYPE      5
-
 
3562
#define LCD_EDID_OFFSET_PATCH_RECORD_TYPE     6
3320
#define ATOM_RECORD_END_TYPE                  0xFF
3563
#define ATOM_RECORD_END_TYPE                  0xFF
Line 3321... Line 3564...
3321
 
3564
 
Line 3322... Line 3565...
3322
/****************************Spread Spectrum Info Table Definitions **********************/
3565
/****************************Spread Spectrum Info Table Definitions **********************/
Line 3526... Line 3769...
3526
 else
3769
 else
3527
	  FBAccessAreaOffset= Aper_Size - usFBUsedbyDrvInKB
3770
	  FBAccessAreaOffset= Aper_Size - usFBUsedbyDrvInKB
Line 3528... Line 3771...
3528
 
3771
 
Line -... Line 3772...
-
 
3772
CAIL needs to claim an reserved area defined by FBAccessAreaOffset and usFBUsedbyDrvInKB in non VGA case.*/
3529
CAIL needs to claim an reserved area defined by FBAccessAreaOffset and usFBUsedbyDrvInKB in non VGA case.*/
3773
 
Line 3530... Line 3774...
3530
 
3774
/***********************************************************************************/	
3531
#define ATOM_MAX_FIRMWARE_VRAM_USAGE_INFO			1
3775
#define ATOM_MAX_FIRMWARE_VRAM_USAGE_INFO			1
3532
 
3776
 
Line 3816... Line 4060...
3816
  union{
4060
  union{
3817
    UCHAR   ucChannelMapping;                  // if ucChannelMapping=0, using default one to one mapping
4061
    UCHAR   ucChannelMapping;                  // if ucChannelMapping=0, using default one to one mapping
3818
    ATOM_DP_CONN_CHANNEL_MAPPING asDPMapping;
4062
    ATOM_DP_CONN_CHANNEL_MAPPING asDPMapping;
3819
    ATOM_DVI_CONN_CHANNEL_MAPPING asDVIMapping;
4063
    ATOM_DVI_CONN_CHANNEL_MAPPING asDVIMapping;
3820
  };
4064
  };
-
 
4065
  UCHAR   ucChPNInvert;                   // bit vector for up to 8 lanes, =0: P and N is not invert, =1 P and N is inverted
3821
  UCHAR   ucReserved;
4066
  USHORT  usCaps;
3822
  USHORT  usReserved[2]; 
4067
  USHORT  usReserved; 
3823
}EXT_DISPLAY_PATH;
4068
}EXT_DISPLAY_PATH;
Line 3824... Line 4069...
3824
   
4069
   
3825
#define NUMBER_OF_UCHAR_FOR_GUID          16
4070
#define NUMBER_OF_UCHAR_FOR_GUID          16
Line -... Line 4071...
-
 
4071
#define MAX_NUMBER_OF_EXT_DISPLAY_PATH    7
-
 
4072
 
-
 
4073
//usCaps
3826
#define MAX_NUMBER_OF_EXT_DISPLAY_PATH    7
4074
#define  EXT_DISPLAY_PATH_CAPS__HBR2_DISABLE          0x01
3827
 
4075
 
3828
typedef  struct _ATOM_EXTERNAL_DISPLAY_CONNECTION_INFO
4076
typedef  struct _ATOM_EXTERNAL_DISPLAY_CONNECTION_INFO
3829
{
4077
{
3830
  ATOM_COMMON_TABLE_HEADER sHeader;
4078
  ATOM_COMMON_TABLE_HEADER sHeader;
3831
  UCHAR                    ucGuid [NUMBER_OF_UCHAR_FOR_GUID];     // a GUID is a 16 byte long string
4079
  UCHAR                    ucGuid [NUMBER_OF_UCHAR_FOR_GUID];     // a GUID is a 16 byte long string
3832
  EXT_DISPLAY_PATH         sPath[MAX_NUMBER_OF_EXT_DISPLAY_PATH]; // total of fixed 7 entries.
4080
  EXT_DISPLAY_PATH         sPath[MAX_NUMBER_OF_EXT_DISPLAY_PATH]; // total of fixed 7 entries.
-
 
4081
  UCHAR                    ucChecksum;                            // a  simple Checksum of the sum of whole structure equal to 0x0. 
-
 
4082
  UCHAR                    uc3DStereoPinId;                       // use for eDP panel
3833
  UCHAR                    ucChecksum;                            // a  simple Checksum of the sum of whole structure equal to 0x0. 
4083
  UCHAR                    ucRemoteDisplayConfig;
3834
  UCHAR                    uc3DStereoPinId;                       // use for eDP panel
4084
  UCHAR                    uceDPToLVDSRxId;
Line 3835... Line 4085...
3835
  UCHAR                    Reserved [6];                          // for potential expansion
4085
  UCHAR                    Reserved[4];                           // for potential expansion
3836
}ATOM_EXTERNAL_DISPLAY_CONNECTION_INFO;
4086
}ATOM_EXTERNAL_DISPLAY_CONNECTION_INFO;
3837
 
4087
 
Line 3975... Line 4225...
3975
#define GPIO_PIN_OUTPUT_STATE_SHIFT     0
4225
#define GPIO_PIN_OUTPUT_STATE_SHIFT     0
3976
#define GPIO_PIN_STATE_ACTIVE_LOW       0x0
4226
#define GPIO_PIN_STATE_ACTIVE_LOW       0x0
3977
#define GPIO_PIN_STATE_ACTIVE_HIGH      0x1
4227
#define GPIO_PIN_STATE_ACTIVE_HIGH      0x1
Line 3978... Line 4228...
3978
 
4228
 
-
 
4229
// Indexes to GPIO array in GLSync record 
3979
// Indexes to GPIO array in GLSync record 
4230
// GLSync record is for Frame Lock/Gen Lock feature.
3980
#define ATOM_GPIO_INDEX_GLSYNC_REFCLK    0
4231
#define ATOM_GPIO_INDEX_GLSYNC_REFCLK    0
3981
#define ATOM_GPIO_INDEX_GLSYNC_HSYNC     1
4232
#define ATOM_GPIO_INDEX_GLSYNC_HSYNC     1
3982
#define ATOM_GPIO_INDEX_GLSYNC_VSYNC     2
4233
#define ATOM_GPIO_INDEX_GLSYNC_VSYNC     2
3983
#define ATOM_GPIO_INDEX_GLSYNC_SWAP_REQ  3
4234
#define ATOM_GPIO_INDEX_GLSYNC_SWAP_REQ  3
3984
#define ATOM_GPIO_INDEX_GLSYNC_SWAP_GNT  4
4235
#define ATOM_GPIO_INDEX_GLSYNC_SWAP_GNT  4
3985
#define ATOM_GPIO_INDEX_GLSYNC_INTERRUPT 5
4236
#define ATOM_GPIO_INDEX_GLSYNC_INTERRUPT 5
-
 
4237
#define ATOM_GPIO_INDEX_GLSYNC_V_RESET   6
-
 
4238
#define ATOM_GPIO_INDEX_GLSYNC_SWAP_CNTL 7
3986
#define ATOM_GPIO_INDEX_GLSYNC_V_RESET   6
4239
#define ATOM_GPIO_INDEX_GLSYNC_SWAP_SEL  8
Line 3987... Line 4240...
3987
#define ATOM_GPIO_INDEX_GLSYNC_MAX       7
4240
#define ATOM_GPIO_INDEX_GLSYNC_MAX       9
3988
 
4241
 
3989
typedef struct  _ATOM_ENCODER_DVO_CF_RECORD
4242
typedef struct  _ATOM_ENCODER_DVO_CF_RECORD
3990
{
4243
{
3991
	ATOM_COMMON_RECORD_HEADER sheader;
4244
	ATOM_COMMON_RECORD_HEADER sheader;
3992
  ULONG                       ulStrengthControl;      // DVOA strength control for CF
4245
  ULONG                       ulStrengthControl;      // DVOA strength control for CF
Line 3993... Line 4246...
3993
	UCHAR ucPadding[2];
4246
	UCHAR ucPadding[2];
3994
}ATOM_ENCODER_DVO_CF_RECORD;
4247
}ATOM_ENCODER_DVO_CF_RECORD;
-
 
4248
 
Line 3995... Line 4249...
3995
 
4249
// Bit maps for ATOM_ENCODER_CAP_RECORD.ucEncoderCap
3996
// Bit maps for ATOM_ENCODER_CAP_RECORD.ucEncoderCap
4250
#define ATOM_ENCODER_CAP_RECORD_HBR2                  0x01         // DP1.2 HBR2 is supported by HW encoder
3997
#define ATOM_ENCODER_CAP_RECORD_HBR2     0x01         // DP1.2 HBR2 is supported by this path
4251
#define ATOM_ENCODER_CAP_RECORD_HBR2_EN               0x02         // DP1.2 HBR2 setting is qualified and HBR2 can be enabled 
3998
 
4252
 
3999
typedef struct  _ATOM_ENCODER_CAP_RECORD
4253
typedef struct  _ATOM_ENCODER_CAP_RECORD
4000
{
4254
{
4001
  ATOM_COMMON_RECORD_HEADER   sheader;
4255
  ATOM_COMMON_RECORD_HEADER   sheader;
4002
  union {
4256
  union {
-
 
4257
    USHORT                    usEncoderCap;         
4003
    USHORT                    usEncoderCap;         
4258
    struct {
4004
    struct {
4259
#if ATOM_BIG_ENDIAN
4005
#if ATOM_BIG_ENDIAN
4260
      USHORT                  usReserved:14;        // Bit1-15 may be defined for other capability in future
-
 
4261
      USHORT                  usHBR2En:1;           // Bit1 is for DP1.2 HBR2 enable
4006
      USHORT                  usReserved:15;        // Bit1-15 may be defined for other capability in future
4262
      USHORT                  usHBR2Cap:1;          // Bit0 is for DP1.2 HBR2 capability. 
4007
      USHORT                  usHBR2Cap:1;          // Bit0 is for DP1.2 HBR2 capability. 
4263
#else
4008
#else
4264
      USHORT                  usHBR2Cap:1;          // Bit0 is for DP1.2 HBR2 capability. 
4009
      USHORT                  usHBR2Cap:1;          // Bit0 is for DP1.2 HBR2 capability. 
4265
      USHORT                  usHBR2En:1;           // Bit1 is for DP1.2 HBR2 enable
4010
      USHORT                  usReserved:15;        // Bit1-15 may be defined for other capability in future
4266
      USHORT                  usReserved:14;        // Bit1-15 may be defined for other capability in future
Line 4155... Line 4411...
4155
#define VOLTAGE_CONTROL_ID_UP6266 						0x05									
4411
#define VOLTAGE_CONTROL_ID_UP6266 						0x05									
4156
#define VOLTAGE_CONTROL_ID_SCORPIO						0x06
4412
#define VOLTAGE_CONTROL_ID_SCORPIO						0x06
4157
#define	VOLTAGE_CONTROL_ID_VT1556M						0x07									
4413
#define	VOLTAGE_CONTROL_ID_VT1556M						0x07									
4158
#define	VOLTAGE_CONTROL_ID_CHL822x						0x08									
4414
#define	VOLTAGE_CONTROL_ID_CHL822x						0x08									
4159
#define	VOLTAGE_CONTROL_ID_VT1586M						0x09
4415
#define	VOLTAGE_CONTROL_ID_VT1586M						0x09
-
 
4416
#define VOLTAGE_CONTROL_ID_UP1637 						0x0A
Line 4160... Line 4417...
4160
 
4417
 
4161
typedef struct  _ATOM_VOLTAGE_OBJECT
4418
typedef struct  _ATOM_VOLTAGE_OBJECT
4162
{
4419
{
4163
 	 UCHAR		ucVoltageType;									//Indicate Voltage Source: VDDC, MVDDC, MVDDQ or MVDDCI	 
4420
 	 UCHAR		ucVoltageType;									//Indicate Voltage Source: VDDC, MVDDC, MVDDQ or MVDDCI	 
Line 4191... Line 4448...
4191
	UCHAR ucLeakageId;
4448
	UCHAR ucLeakageId;
4192
	UCHAR ucReserved;
4449
	UCHAR ucReserved;
4193
	USHORT usVoltage;
4450
	USHORT usVoltage;
4194
}ATOM_LEAKID_VOLTAGE;
4451
}ATOM_LEAKID_VOLTAGE;
Line -... Line 4452...
-
 
4452
 
-
 
4453
typedef struct _ATOM_VOLTAGE_OBJECT_HEADER_V3{
-
 
4454
 	 UCHAR		ucVoltageType;									//Indicate Voltage Source: VDDC, MVDDC, MVDDQ or MVDDCI	 
-
 
4455
   UCHAR		ucVoltageMode;							    //Indicate voltage control mode: Init/Set/Leakage/Set phase 
-
 
4456
	 USHORT		usSize;													//Size of Object	
-
 
4457
}ATOM_VOLTAGE_OBJECT_HEADER_V3;
-
 
4458
 
-
 
4459
typedef struct  _VOLTAGE_LUT_ENTRY_V2
-
 
4460
{
-
 
4461
	 ULONG		ulVoltageId;									  // The Voltage ID which is used to program GPIO register
-
 
4462
	 USHORT		usVoltageValue;									// The corresponding Voltage Value, in mV
-
 
4463
}VOLTAGE_LUT_ENTRY_V2;
-
 
4464
 
-
 
4465
typedef struct  _LEAKAGE_VOLTAGE_LUT_ENTRY_V2
-
 
4466
{
-
 
4467
  USHORT	usVoltageLevel; 							  // The Voltage ID which is used to program GPIO register
-
 
4468
  USHORT  usVoltageId;                    
-
 
4469
	USHORT	usLeakageId;									  // The corresponding Voltage Value, in mV
-
 
4470
}LEAKAGE_VOLTAGE_LUT_ENTRY_V2;
-
 
4471
 
-
 
4472
typedef struct  _ATOM_I2C_VOLTAGE_OBJECT_V3
-
 
4473
{
-
 
4474
   ATOM_VOLTAGE_OBJECT_HEADER_V3 sHeader;
-
 
4475
   UCHAR	ucVoltageRegulatorId;					  //Indicate Voltage Regulator Id
-
 
4476
   UCHAR    ucVoltageControlI2cLine;
-
 
4477
   UCHAR    ucVoltageControlAddress;
-
 
4478
   UCHAR    ucVoltageControlOffset;	 	
-
 
4479
   ULONG    ulReserved;
-
 
4480
   VOLTAGE_LUT_ENTRY asVolI2cLut[1];        // end with 0xff
-
 
4481
}ATOM_I2C_VOLTAGE_OBJECT_V3;
-
 
4482
 
-
 
4483
typedef struct  _ATOM_GPIO_VOLTAGE_OBJECT_V3
-
 
4484
{
-
 
4485
   ATOM_VOLTAGE_OBJECT_HEADER_V3 sHeader;   
-
 
4486
   UCHAR    ucVoltageGpioCntlId;         // default is 0 which indicate control through CG VID mode 
-
 
4487
   UCHAR    ucGpioEntryNum;              // indiate the entry numbers of Votlage/Gpio value Look up table
-
 
4488
   UCHAR    ucPhaseDelay;                // phase delay in unit of micro second
-
 
4489
   UCHAR    ucReserved;   
-
 
4490
   ULONG    ulGpioMaskVal;               // GPIO Mask value
-
 
4491
   VOLTAGE_LUT_ENTRY_V2 asVolGpioLut[1];   
-
 
4492
}ATOM_GPIO_VOLTAGE_OBJECT_V3;
-
 
4493
 
-
 
4494
typedef struct  _ATOM_LEAKAGE_VOLTAGE_OBJECT_V3
-
 
4495
{
-
 
4496
   ATOM_VOLTAGE_OBJECT_HEADER_V3 sHeader;
-
 
4497
   UCHAR    ucLeakageCntlId;             // default is 0
-
 
4498
   UCHAR    ucLeakageEntryNum;           // indicate the entry number of LeakageId/Voltage Lut table
-
 
4499
   UCHAR    ucReserved[2];               
-
 
4500
   ULONG    ulMaxVoltageLevel;
-
 
4501
   LEAKAGE_VOLTAGE_LUT_ENTRY_V2 asLeakageIdLut[1];   
-
 
4502
}ATOM_LEAKAGE_VOLTAGE_OBJECT_V3;
-
 
4503
 
-
 
4504
typedef union _ATOM_VOLTAGE_OBJECT_V3{
-
 
4505
  ATOM_GPIO_VOLTAGE_OBJECT_V3 asGpioVoltageObj;
-
 
4506
  ATOM_I2C_VOLTAGE_OBJECT_V3 asI2cVoltageObj;
-
 
4507
  ATOM_LEAKAGE_VOLTAGE_OBJECT_V3 asLeakageObj;
-
 
4508
}ATOM_VOLTAGE_OBJECT_V3;
-
 
4509
 
-
 
4510
typedef struct  _ATOM_VOLTAGE_OBJECT_INFO_V3_1
-
 
4511
{
-
 
4512
   ATOM_COMMON_TABLE_HEADER	sHeader; 
-
 
4513
	 ATOM_VOLTAGE_OBJECT_V3			asVoltageObj[3];	//Info for Voltage control	  	 
-
 
4514
}ATOM_VOLTAGE_OBJECT_INFO_V3_1;
4195
 
4515
 
4196
typedef struct  _ATOM_ASIC_PROFILE_VOLTAGE
4516
typedef struct  _ATOM_ASIC_PROFILE_VOLTAGE
4197
{
4517
{
4198
	UCHAR ucProfileId;
4518
	UCHAR ucProfileId;
4199
	UCHAR ucReserved;
4519
	UCHAR ucReserved;
Line 4303... Line 4623...
4303
  USHORT usLvdsSSpreadRateIn10Hz;
4623
  USHORT usLvdsSSpreadRateIn10Hz;
4304
  USHORT usHDMISSPercentage;
4624
  USHORT usHDMISSPercentage;
4305
  USHORT usHDMISSpreadRateIn10Hz;
4625
  USHORT usHDMISSpreadRateIn10Hz;
4306
  USHORT usDVISSPercentage;
4626
  USHORT usDVISSPercentage;
4307
  USHORT usDVISSpreadRateIn10Hz;
4627
  USHORT usDVISSpreadRateIn10Hz;
-
 
4628
  ULONG  SclkDpmBoostMargin;
-
 
4629
  ULONG  SclkDpmThrottleMargin;
-
 
4630
  USHORT SclkDpmTdpLimitPG; 
-
 
4631
  USHORT SclkDpmTdpLimitBoost;
-
 
4632
  ULONG  ulBoostEngineCLock;
-
 
4633
  UCHAR  ulBoostVid_2bit;  
-
 
4634
  UCHAR  EnableBoost;
-
 
4635
  USHORT GnbTdpLimit;
-
 
4636
  USHORT usMaxLVDSPclkFreqInSingleLink;
-
 
4637
  UCHAR  ucLvdsMisc;
-
 
4638
  UCHAR  ucLVDSReserved;
4308
  ULONG  ulReserved3[21]; 
4639
  ULONG  ulReserved3[15]; 
4309
  ATOM_EXTERNAL_DISPLAY_CONNECTION_INFO sExtDispConnInfo;   
4640
  ATOM_EXTERNAL_DISPLAY_CONNECTION_INFO sExtDispConnInfo;   
4310
}ATOM_INTEGRATED_SYSTEM_INFO_V6;   
4641
}ATOM_INTEGRATED_SYSTEM_INFO_V6;   
Line 4311... Line 4642...
4311
 
4642
 
4312
// ulGPUCapInfo
4643
// ulGPUCapInfo
4313
#define INTEGRATED_SYSTEM_INFO_V6_GPUCAPINFO__TMDSHDMI_COHERENT_SINGLEPLL_MODE       0x01
4644
#define INTEGRATED_SYSTEM_INFO_V6_GPUCAPINFO__TMDSHDMI_COHERENT_SINGLEPLL_MODE       0x01
Line 4314... Line 4645...
4314
#define INTEGRATED_SYSTEM_INFO_V6_GPUCAPINFO__DISABLE_AUX_HW_MODE_DETECTION          0x08
4645
#define INTEGRATED_SYSTEM_INFO_V6_GPUCAPINFO__DISABLE_AUX_HW_MODE_DETECTION          0x08
4315
 
4646
 
-
 
4647
//ucLVDSMisc:                   
-
 
4648
#define SYS_INFO_LVDSMISC__888_FPDI_MODE                                             0x01
-
 
4649
#define SYS_INFO_LVDSMISC__DL_CH_SWAP                                                0x02
-
 
4650
#define SYS_INFO_LVDSMISC__888_BPC                                                   0x04
4316
// ulOtherDisplayMisc
4651
#define SYS_INFO_LVDSMISC__OVERRIDE_EN                                               0x08
-
 
4652
#define SYS_INFO_LVDSMISC__BLON_ACTIVE_LOW                                           0x10
-
 
4653
 
-
 
4654
// not used any more
Line 4317... Line 4655...
4317
#define INTEGRATED_SYSTEM_INFO__GET_EDID_CALLBACK_FUNC_SUPPORT                       0x01
4655
#define SYS_INFO_LVDSMISC__VSYNC_ACTIVE_LOW                                          0x04
4318
 
4656
#define SYS_INFO_LVDSMISC__HSYNC_ACTIVE_LOW                                          0x08
4319
 
4657
 
4320
/**********************************************************************************************************************
4658
/**********************************************************************************************************************
Line 4382... Line 4720...
4382
ucMemoryType:                     [3:0]=1:DDR1;=2:DDR2;=3:DDR3.[7:4] is reserved.
4720
ucMemoryType:                     [3:0]=1:DDR1;=2:DDR2;=3:DDR3.[7:4] is reserved.
4383
ucUMAChannelNumber:      	        System memory channel numbers. 
4721
ucUMAChannelNumber:      	        System memory channel numbers. 
4384
ulCSR_M3_ARB_CNTL_DEFAULT[10]:    Arrays with values for CSR M3 arbiter for default
4722
ulCSR_M3_ARB_CNTL_DEFAULT[10]:    Arrays with values for CSR M3 arbiter for default
4385
ulCSR_M3_ARB_CNTL_UVD[10]:        Arrays with values for CSR M3 arbiter for UVD playback.
4723
ulCSR_M3_ARB_CNTL_UVD[10]:        Arrays with values for CSR M3 arbiter for UVD playback.
4386
ulCSR_M3_ARB_CNTL_FS3D[10]:       Arrays with values for CSR M3 arbiter for Full Screen 3D applications.
4724
ulCSR_M3_ARB_CNTL_FS3D[10]:       Arrays with values for CSR M3 arbiter for Full Screen 3D applications.
4387
sAvail_SCLK[5]:                   Arrays to provide available list of SLCK and corresponding voltage, order from low to high  
4725
sAvail_SCLK[5]:                   Arrays to provide availabe list of SLCK and corresponding voltage, order from low to high  
-
 
4726
ulGMCRestoreResetTime:            GMC power restore and GMC reset time to calculate data reconnection latency. Unit in ns. 
-
 
4727
ulMinimumNClk:                    Minimum NCLK speed among all NB-Pstates to calcualte data reconnection latency. Unit in 10kHz. 
-
 
4728
ulIdleNClk:                       NCLK speed while memory runs in self-refresh state. Unit in 10kHz.
-
 
4729
ulDDR_DLL_PowerUpTime:            DDR PHY DLL power up time. Unit in ns.
-
 
4730
ulDDR_PLL_PowerUpTime:            DDR PHY PLL power up time. Unit in ns.
-
 
4731
usPCIEClkSSPercentage:            PCIE Clock Spred Spectrum Percentage in unit 0.01%; 100 mean 1%.
-
 
4732
usPCIEClkSSType:                  PCIE Clock Spred Spectrum Type. 0 for Down spread(default); 1 for Center spread.
-
 
4733
usLvdsSSPercentage:               LVDS panel ( not include eDP ) Spread Spectrum Percentage in unit of 0.01%, =0, use VBIOS default setting. 
-
 
4734
usLvdsSSpreadRateIn10Hz:          LVDS panel ( not include eDP ) Spread Spectrum frequency in unit of 10Hz, =0, use VBIOS default setting. 
-
 
4735
usHDMISSPercentage:               HDMI Spread Spectrum Percentage in unit 0.01%; 100 mean 1%,  =0, use VBIOS default setting. 
-
 
4736
usHDMISSpreadRateIn10Hz:          HDMI Spread Spectrum frequency in unit of 10Hz,  =0, use VBIOS default setting. 
-
 
4737
usDVISSPercentage:                DVI Spread Spectrum Percentage in unit 0.01%; 100 mean 1%,  =0, use VBIOS default setting. 
-
 
4738
usDVISSpreadRateIn10Hz:           DVI Spread Spectrum frequency in unit of 10Hz,  =0, use VBIOS default setting. 
-
 
4739
usMaxLVDSPclkFreqInSingleLink:    Max pixel clock LVDS panel single link, if=0 means VBIOS use default threhold, right now it is 85Mhz
-
 
4740
ucLVDSMisc:                       [bit0] LVDS 888bit panel mode =0: LVDS 888 panel in LDI mode, =1: LVDS 888 panel in FPDI mode
-
 
4741
                                  [bit1] LVDS panel lower and upper link mapping =0: lower link and upper link not swap, =1: lower link and upper link are swapped
-
 
4742
                                  [bit2] LVDS 888bit per color mode  =0: 666 bit per color =1:888 bit per color
-
 
4743
                                  [bit3] LVDS parameter override enable  =0: ucLvdsMisc parameter are not used =1: ucLvdsMisc parameter should be used
-
 
4744
                                  [bit4] Polarity of signal sent to digital BLON output pin. =0: not inverted(active high) =1: inverted ( active low )
-
 
4745
**********************************************************************************************************************/
-
 
4746
 
-
 
4747
// this Table is used for Liano/Ontario APU
-
 
4748
typedef struct _ATOM_FUSION_SYSTEM_INFO_V1
-
 
4749
{
-
 
4750
  ATOM_INTEGRATED_SYSTEM_INFO_V6    sIntegratedSysInfo;   
-
 
4751
  ULONG  ulPowerplayTable[128];  
-
 
4752
}ATOM_FUSION_SYSTEM_INFO_V1; 
-
 
4753
/**********************************************************************************************************************
-
 
4754
  ATOM_FUSION_SYSTEM_INFO_V1 Description
-
 
4755
sIntegratedSysInfo:               refer to ATOM_INTEGRATED_SYSTEM_INFO_V6 definition.
-
 
4756
ulPowerplayTable[128]:            This 512 bytes memory is used to save ATOM_PPLIB_POWERPLAYTABLE3, starting form ulPowerplayTable[0]    
-
 
4757
**********************************************************************************************************************/ 
-
 
4758
 
-
 
4759
// this IntegrateSystemInfoTable is used for Trinity APU
-
 
4760
typedef struct _ATOM_INTEGRATED_SYSTEM_INFO_V1_7
-
 
4761
{
-
 
4762
  ATOM_COMMON_TABLE_HEADER   sHeader;
-
 
4763
  ULONG  ulBootUpEngineClock;
-
 
4764
  ULONG  ulDentistVCOFreq;
-
 
4765
  ULONG  ulBootUpUMAClock;
-
 
4766
  ATOM_CLK_VOLT_CAPABILITY   sDISPCLK_Voltage[4];
-
 
4767
  ULONG  ulBootUpReqDisplayVector;
-
 
4768
  ULONG  ulOtherDisplayMisc;
-
 
4769
  ULONG  ulGPUCapInfo;
-
 
4770
  ULONG  ulSB_MMIO_Base_Addr;
-
 
4771
  USHORT usRequestedPWMFreqInHz;
-
 
4772
  UCHAR  ucHtcTmpLmt;
-
 
4773
  UCHAR  ucHtcHystLmt;
-
 
4774
  ULONG  ulMinEngineClock;
-
 
4775
  ULONG  ulSystemConfig;            
-
 
4776
  ULONG  ulCPUCapInfo;
-
 
4777
  USHORT usNBP0Voltage;               
-
 
4778
  USHORT usNBP1Voltage;
-
 
4779
  USHORT usBootUpNBVoltage;                       
-
 
4780
  USHORT usExtDispConnInfoOffset;
-
 
4781
  USHORT usPanelRefreshRateRange;     
-
 
4782
  UCHAR  ucMemoryType;  
-
 
4783
  UCHAR  ucUMAChannelNumber;
-
 
4784
  UCHAR  strVBIOSMsg[40];
-
 
4785
  ULONG  ulReserved[20];
-
 
4786
  ATOM_AVAILABLE_SCLK_LIST   sAvail_SCLK[5];
-
 
4787
  ULONG  ulGMCRestoreResetTime;
-
 
4788
  ULONG  ulMinimumNClk;
-
 
4789
  ULONG  ulIdleNClk;
-
 
4790
  ULONG  ulDDR_DLL_PowerUpTime;
-
 
4791
  ULONG  ulDDR_PLL_PowerUpTime;
-
 
4792
  USHORT usPCIEClkSSPercentage;
-
 
4793
  USHORT usPCIEClkSSType;
-
 
4794
  USHORT usLvdsSSPercentage;
-
 
4795
  USHORT usLvdsSSpreadRateIn10Hz;
-
 
4796
  USHORT usHDMISSPercentage;
-
 
4797
  USHORT usHDMISSpreadRateIn10Hz;
-
 
4798
  USHORT usDVISSPercentage;
-
 
4799
  USHORT usDVISSpreadRateIn10Hz;
-
 
4800
  ULONG  SclkDpmBoostMargin;
-
 
4801
  ULONG  SclkDpmThrottleMargin;
-
 
4802
  USHORT SclkDpmTdpLimitPG; 
-
 
4803
  USHORT SclkDpmTdpLimitBoost;
-
 
4804
  ULONG  ulBoostEngineCLock;
-
 
4805
  UCHAR  ulBoostVid_2bit;  
-
 
4806
  UCHAR  EnableBoost;
-
 
4807
  USHORT GnbTdpLimit;
-
 
4808
  USHORT usMaxLVDSPclkFreqInSingleLink;
-
 
4809
  UCHAR  ucLvdsMisc;
-
 
4810
  UCHAR  ucLVDSReserved;
-
 
4811
  UCHAR  ucLVDSPwrOnSeqDIGONtoDE_in4Ms;
-
 
4812
  UCHAR  ucLVDSPwrOnSeqDEtoVARY_BL_in4Ms;
-
 
4813
  UCHAR  ucLVDSPwrOffSeqVARY_BLtoDE_in4Ms;
-
 
4814
  UCHAR  ucLVDSPwrOffSeqDEtoDIGON_in4Ms;
-
 
4815
  UCHAR  ucLVDSOffToOnDelay_in4Ms;
-
 
4816
  UCHAR  ucLVDSPwrOnSeqVARY_BLtoBLON_in4Ms;
-
 
4817
  UCHAR  ucLVDSPwrOffSeqBLONtoVARY_BL_in4Ms;
-
 
4818
  UCHAR  ucLVDSReserved1;
-
 
4819
  ULONG  ulLCDBitDepthControlVal;
-
 
4820
  ULONG  ulNbpStateMemclkFreq[4];
-
 
4821
  USHORT usNBP2Voltage;               
-
 
4822
  USHORT usNBP3Voltage;
-
 
4823
  ULONG  ulNbpStateNClkFreq[4];
-
 
4824
  UCHAR  ucNBDPMEnable;
-
 
4825
  UCHAR  ucReserved[3];
-
 
4826
  UCHAR  ucDPMState0VclkFid;
-
 
4827
  UCHAR  ucDPMState0DclkFid;
-
 
4828
  UCHAR  ucDPMState1VclkFid;
-
 
4829
  UCHAR  ucDPMState1DclkFid;
-
 
4830
  UCHAR  ucDPMState2VclkFid;
-
 
4831
  UCHAR  ucDPMState2DclkFid;
-
 
4832
  UCHAR  ucDPMState3VclkFid;
-
 
4833
  UCHAR  ucDPMState3DclkFid;
-
 
4834
  ATOM_EXTERNAL_DISPLAY_CONNECTION_INFO sExtDispConnInfo;
-
 
4835
}ATOM_INTEGRATED_SYSTEM_INFO_V1_7;
-
 
4836
 
-
 
4837
// ulOtherDisplayMisc
-
 
4838
#define INTEGRATED_SYSTEM_INFO__GET_EDID_CALLBACK_FUNC_SUPPORT            0x01
-
 
4839
#define INTEGRATED_SYSTEM_INFO__GET_BOOTUP_DISPLAY_CALLBACK_FUNC_SUPPORT  0x02
-
 
4840
#define INTEGRATED_SYSTEM_INFO__GET_EXPANSION_CALLBACK_FUNC_SUPPORT       0x04
-
 
4841
#define INTEGRATED_SYSTEM_INFO__FAST_BOOT_SUPPORT                         0x08
-
 
4842
 
-
 
4843
// ulGPUCapInfo
-
 
4844
#define SYS_INFO_GPUCAPS__TMDSHDMI_COHERENT_SINGLEPLL_MODE                0x01
-
 
4845
#define SYS_INFO_GPUCAPS__DP_SINGLEPLL_MODE                               0x02
-
 
4846
#define SYS_INFO_GPUCAPS__DISABLE_AUX_MODE_DETECT                         0x08
-
 
4847
 
-
 
4848
/**********************************************************************************************************************
-
 
4849
  ATOM_INTEGRATED_SYSTEM_INFO_V1_7 Description
-
 
4850
ulBootUpEngineClock:              VBIOS bootup Engine clock frequency, in 10kHz unit. if it is equal 0, then VBIOS use pre-defined bootup engine clock
-
 
4851
ulDentistVCOFreq:                 Dentist VCO clock in 10kHz unit. 
-
 
4852
ulBootUpUMAClock:                 System memory boot up clock frequency in 10Khz unit. 
-
 
4853
sDISPCLK_Voltage:                 Report Display clock voltage requirement.
-
 
4854
 
-
 
4855
ulBootUpReqDisplayVector:         VBIOS boot up display IDs, following are supported devices in Trinity projects:
-
 
4856
                                  ATOM_DEVICE_CRT1_SUPPORT                  0x0001
-
 
4857
                                  ATOM_DEVICE_DFP1_SUPPORT                  0x0008 
-
 
4858
                                  ATOM_DEVICE_DFP6_SUPPORT                  0x0040 
-
 
4859
                                  ATOM_DEVICE_DFP2_SUPPORT                  0x0080       
-
 
4860
                                  ATOM_DEVICE_DFP3_SUPPORT                  0x0200       
-
 
4861
                                  ATOM_DEVICE_DFP4_SUPPORT                  0x0400        
-
 
4862
                                  ATOM_DEVICE_DFP5_SUPPORT                  0x0800
-
 
4863
                                  ATOM_DEVICE_LCD1_SUPPORT                  0x0002
-
 
4864
ulOtherDisplayMisc:      	        bit[0]=0: INT15 callback function Get LCD EDID ( ax=4e08, bl=1b ) is not supported by SBIOS. 
-
 
4865
                                        =1: INT15 callback function Get LCD EDID ( ax=4e08, bl=1b ) is supported by SBIOS. 
-
 
4866
                                  bit[1]=0: INT15 callback function Get boot display( ax=4e08, bl=01h) is not supported by SBIOS
-
 
4867
                                        =1: INT15 callback function Get boot display( ax=4e08, bl=01h) is supported by SBIOS
-
 
4868
                                  bit[2]=0: INT15 callback function Get panel Expansion ( ax=4e08, bl=02h) is not supported by SBIOS
-
 
4869
                                        =1: INT15 callback function Get panel Expansion ( ax=4e08, bl=02h) is supported by SBIOS
-
 
4870
                                  bit[3]=0: VBIOS fast boot is disable
-
 
4871
                                        =1: VBIOS fast boot is enable. ( VBIOS skip display device detection in every set mode if LCD panel is connect and LID is open)
-
 
4872
ulGPUCapInfo:                     bit[0]=0: TMDS/HDMI Coherent Mode use cascade PLL mode.
-
 
4873
                                        =1: TMDS/HDMI Coherent Mode use signel PLL mode.
-
 
4874
                                  bit[1]=0: DP mode use cascade PLL mode ( New for Trinity )
-
 
4875
                                        =1: DP mode use single PLL mode
-
 
4876
                                  bit[3]=0: Enable AUX HW mode detection logic
-
 
4877
                                        =1: Disable AUX HW mode detection logic
-
 
4878
                                      
-
 
4879
ulSB_MMIO_Base_Addr:              Physical Base address to SB MMIO space. Driver needs to initialize it for SMU usage.
-
 
4880
 
-
 
4881
usRequestedPWMFreqInHz:           When it's set to 0x0 by SBIOS: the LCD BackLight is not controlled by GPU(SW). 
-
 
4882
                                  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;
-
 
4883
                                  
-
 
4884
                                  When it's set to a non-zero frequency, the BackLight is controlled by GPU (SW) in one of two ways below:
-
 
4885
                                  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;
-
 
4886
                                  VBIOS will set up proper PWM frequency and ATOM_BIOS_INFO_BL_CONTROLLED_BY_GPU==1,as the result,
-
 
4887
                                  Changing BL using VBIOS function is functional in both driver and non-driver present environment; 
-
 
4888
                                  and enabling VariBri under the driver environment from PP table is optional.
-
 
4889
 
-
 
4890
                                  2. SW uses other means to control BL (like DPCD),this non-zero frequency serves as a flag only indicating
-
 
4891
                                  that BL control from GPU is expected.
-
 
4892
                                  VBIOS will NOT set up PWM frequency but make ATOM_BIOS_INFO_BL_CONTROLLED_BY_GPU==1
-
 
4893
                                  Changing BL using VBIOS function could be functional in both driver and non-driver present environment,but
-
 
4894
                                  it's per platform 
-
 
4895
                                  and enabling VariBri under the driver environment from PP table is optional.
-
 
4896
 
-
 
4897
ucHtcTmpLmt:                      Refer to D18F3x64 bit[22:16], HtcTmpLmt. 
-
 
4898
                                  Threshold on value to enter HTC_active state.
-
 
4899
ucHtcHystLmt:                     Refer to D18F3x64 bit[27:24], HtcHystLmt. 
-
 
4900
                                  To calculate threshold off value to exit HTC_active state, which is Threshold on vlaue minus ucHtcHystLmt.
-
 
4901
ulMinEngineClock:                 Minimum SCLK allowed in 10kHz unit. This is calculated based on WRCK Fuse settings.
-
 
4902
ulSystemConfig:                   Bit[0]=0: PCIE Power Gating Disabled 
-
 
4903
                                        =1: PCIE Power Gating Enabled
-
 
4904
                                  Bit[1]=0: DDR-DLL shut-down feature disabled.
-
 
4905
                                         1: DDR-DLL shut-down feature enabled.
-
 
4906
                                  Bit[2]=0: DDR-PLL Power down feature disabled.
-
 
4907
                                         1: DDR-PLL Power down feature enabled.                                 
-
 
4908
ulCPUCapInfo:                     TBD
-
 
4909
usNBP0Voltage:                    VID for voltage on NB P0 State
-
 
4910
usNBP1Voltage:                    VID for voltage on NB P1 State  
-
 
4911
usNBP2Voltage:                    VID for voltage on NB P2 State
-
 
4912
usNBP3Voltage:                    VID for voltage on NB P3 State  
-
 
4913
usBootUpNBVoltage:                Voltage Index of GNB voltage configured by SBIOS, which is suffcient to support VBIOS DISPCLK requirement.
-
 
4914
usExtDispConnInfoOffset:          Offset to sExtDispConnInfo inside the structure
-
 
4915
usPanelRefreshRateRange:          Bit vector for LCD supported refresh rate range. If DRR is requestd by the platform, at least two bits need to be set
-
 
4916
                                  to indicate a range.
-
 
4917
                                  SUPPORTED_LCD_REFRESHRATE_30Hz          0x0004
-
 
4918
                                  SUPPORTED_LCD_REFRESHRATE_40Hz          0x0008
-
 
4919
                                  SUPPORTED_LCD_REFRESHRATE_50Hz          0x0010
-
 
4920
                                  SUPPORTED_LCD_REFRESHRATE_60Hz          0x0020
-
 
4921
ucMemoryType:                     [3:0]=1:DDR1;=2:DDR2;=3:DDR3.[7:4] is reserved.
-
 
4922
ucUMAChannelNumber:      	        System memory channel numbers. 
-
 
4923
ulCSR_M3_ARB_CNTL_DEFAULT[10]:    Arrays with values for CSR M3 arbiter for default
-
 
4924
ulCSR_M3_ARB_CNTL_UVD[10]:        Arrays with values for CSR M3 arbiter for UVD playback.
-
 
4925
ulCSR_M3_ARB_CNTL_FS3D[10]:       Arrays with values for CSR M3 arbiter for Full Screen 3D applications.
-
 
4926
sAvail_SCLK[5]:                   Arrays to provide availabe list of SLCK and corresponding voltage, order from low to high  
4388
ulGMCRestoreResetTime:            GMC power restore and GMC reset time to calculate data reconnection latency. Unit in ns. 
4927
ulGMCRestoreResetTime:            GMC power restore and GMC reset time to calculate data reconnection latency. Unit in ns. 
4389
ulMinimumNClk:                    Minimum NCLK speed among all NB-Pstates to calcualte data reconnection latency. Unit in 10kHz. 
4928
ulMinimumNClk:                    Minimum NCLK speed among all NB-Pstates to calcualte data reconnection latency. Unit in 10kHz. 
4390
ulIdleNClk:                       NCLK speed while memory runs in self-refresh state. Unit in 10kHz.
4929
ulIdleNClk:                       NCLK speed while memory runs in self-refresh state. Unit in 10kHz.
4391
ulDDR_DLL_PowerUpTime:            DDR PHY DLL power up time. Unit in ns.
4930
ulDDR_DLL_PowerUpTime:            DDR PHY DLL power up time. Unit in ns.
4392
ulDDR_PLL_PowerUpTime:            DDR PHY PLL power up time. Unit in ns.
4931
ulDDR_PLL_PowerUpTime:            DDR PHY PLL power up time. Unit in ns.
Line 4396... Line 4935...
4396
usLvdsSSpreadRateIn10Hz:          LVDS panel ( not include eDP ) Spread Spectrum frequency in unit of 10Hz, =0, use VBIOS default setting. 
4935
usLvdsSSpreadRateIn10Hz:          LVDS panel ( not include eDP ) Spread Spectrum frequency in unit of 10Hz, =0, use VBIOS default setting. 
4397
usHDMISSPercentage:               HDMI Spread Spectrum Percentage in unit 0.01%; 100 mean 1%,  =0, use VBIOS default setting. 
4936
usHDMISSPercentage:               HDMI Spread Spectrum Percentage in unit 0.01%; 100 mean 1%,  =0, use VBIOS default setting. 
4398
usHDMISSpreadRateIn10Hz:          HDMI Spread Spectrum frequency in unit of 10Hz,  =0, use VBIOS default setting. 
4937
usHDMISSpreadRateIn10Hz:          HDMI Spread Spectrum frequency in unit of 10Hz,  =0, use VBIOS default setting. 
4399
usDVISSPercentage:                DVI Spread Spectrum Percentage in unit 0.01%; 100 mean 1%,  =0, use VBIOS default setting. 
4938
usDVISSPercentage:                DVI Spread Spectrum Percentage in unit 0.01%; 100 mean 1%,  =0, use VBIOS default setting. 
4400
usDVISSpreadRateIn10Hz:           DVI Spread Spectrum frequency in unit of 10Hz,  =0, use VBIOS default setting. 
4939
usDVISSpreadRateIn10Hz:           DVI Spread Spectrum frequency in unit of 10Hz,  =0, use VBIOS default setting. 
-
 
4940
usMaxLVDSPclkFreqInSingleLink:    Max pixel clock LVDS panel single link, if=0 means VBIOS use default threhold, right now it is 85Mhz
-
 
4941
ucLVDSMisc:                       [bit0] LVDS 888bit panel mode =0: LVDS 888 panel in LDI mode, =1: LVDS 888 panel in FPDI mode
-
 
4942
                                  [bit1] LVDS panel lower and upper link mapping =0: lower link and upper link not swap, =1: lower link and upper link are swapped
-
 
4943
                                  [bit2] LVDS 888bit per color mode  =0: 666 bit per color =1:888 bit per color
-
 
4944
                                  [bit3] LVDS parameter override enable  =0: ucLvdsMisc parameter are not used =1: ucLvdsMisc parameter should be used
-
 
4945
                                  [bit4] Polarity of signal sent to digital BLON output pin. =0: not inverted(active high) =1: inverted ( active low )
-
 
4946
ucLVDSPwrOnSeqDIGONtoDE_in4Ms:    LVDS power up sequence time in unit of 4ms, time delay from DIGON signal active to data enable signal active( DE ).
-
 
4947
                                  =0 mean use VBIOS default which is 8 ( 32ms ). The LVDS power up sequence is as following: DIGON->DE->VARY_BL->BLON. 
-
 
4948
                                  This parameter is used by VBIOS only. VBIOS will patch LVDS_InfoTable.
-
 
4949
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 ).  
-
 
4950
                                  =0 mean use VBIOS default which is 90 ( 360ms ). The LVDS power up sequence is as following: DIGON->DE->VARY_BL->BLON. 
-
 
4951
                                  This parameter is used by VBIOS only. VBIOS will patch LVDS_InfoTable.
-
 
4952
 
-
 
4953
ucLVDSPwrOffVARY_BLtoDE_in4Ms:    LVDS power down sequence time in unit of 4ms, time delay from data enable ( DE ) signal off to LCDVCC (DIGON) off. 
-
 
4954
                                  =0 mean use VBIOS default delay which is 8 ( 32ms ). The LVDS power down sequence is as following: BLON->VARY_BL->DE->DIGON
-
 
4955
                                  This parameter is used by VBIOS only. VBIOS will patch LVDS_InfoTable.
-
 
4956
 
-
 
4957
ucLVDSPwrOffDEtoDIGON_in4Ms:      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. 
-
 
4958
                                  =0 mean use VBIOS default which is 90 ( 360ms ). The LVDS power down sequence is as following: BLON->VARY_BL->DE->DIGON
-
 
4959
                                  This parameter is used by VBIOS only. VBIOS will patch LVDS_InfoTable.
-
 
4960
 
-
 
4961
ucLVDSOffToOnDelay_in4Ms:         LVDS power down sequence time in unit of 4ms. Time delay from DIGON signal off to DIGON signal active. 
-
 
4962
                                  =0 means to use VBIOS default delay which is 125 ( 500ms ).
-
 
4963
                                  This parameter is used by VBIOS only. VBIOS will patch LVDS_InfoTable.
-
 
4964
 
-
 
4965
ucLVDSPwrOnVARY_BLtoBLON_in4Ms:   LVDS power up sequence time in unit of 4ms. Time delay from VARY_BL signal on to DLON signal active. 
-
 
4966
                                  =0 means to use VBIOS default delay which is 0 ( 0ms ).
-
 
4967
                                  This parameter is used by VBIOS only. VBIOS will patch LVDS_InfoTable.
-
 
4968
 
-
 
4969
ucLVDSPwrOffBLONtoVARY_BL_in4Ms:  LVDS power down sequence time in unit of 4ms. Time delay from BLON signal off to VARY_BL signal off. 
-
 
4970
                                  =0 means to use VBIOS default delay which is 0 ( 0ms ).
-
 
4971
                                  This parameter is used by VBIOS only. VBIOS will patch LVDS_InfoTable.
-
 
4972
 
-
 
4973
ulNbpStateMemclkFreq[4]:          system memory clock frequncey in unit of 10Khz in different NB pstate. 
-
 
4974
 
4401
**********************************************************************************************************************/
4975
**********************************************************************************************************************/
Line 4402... Line 4976...
4402
 
4976
 
4403
/**************************************************************************/
4977
/**************************************************************************/
4404
// This portion is only used when ext thermal chip or engine/memory clock SS chip is populated on a design
4978
// This portion is only used when ext thermal chip or engine/memory clock SS chip is populated on a design
Line 4457... Line 5031...
4457
#define ASIC_INTERNAL_SS_ON_HDMI    5
5031
#define ASIC_INTERNAL_SS_ON_HDMI    5
4458
#define ASIC_INTERNAL_SS_ON_LVDS    6
5032
#define ASIC_INTERNAL_SS_ON_LVDS    6
4459
#define ASIC_INTERNAL_SS_ON_DP      7
5033
#define ASIC_INTERNAL_SS_ON_DP      7
4460
#define ASIC_INTERNAL_SS_ON_DCPLL   8
5034
#define ASIC_INTERNAL_SS_ON_DCPLL   8
4461
#define ASIC_EXTERNAL_SS_ON_DP_CLOCK 9
5035
#define ASIC_EXTERNAL_SS_ON_DP_CLOCK 9
-
 
5036
#define ASIC_INTERNAL_VCE_SS        10
Line 4462... Line 5037...
4462
 
5037
 
4463
typedef struct _ATOM_ASIC_SS_ASSIGNMENT_V2
5038
typedef struct _ATOM_ASIC_SS_ASSIGNMENT_V2
4464
{
5039
{
4465
	ULONG								ulTargetClockRange;						//For mem/engine/uvd, Clock Out frequence (VCO ), in unit of 10Khz
5040
	ULONG								ulTargetClockRange;						//For mem/engine/uvd, Clock Out frequence (VCO ), in unit of 10Khz
Line 4518... Line 5093...
4518
#define ATOM_DOS_REQ_INFO_DEF         5
5093
#define ATOM_DOS_REQ_INFO_DEF         5
4519
#define ATOM_ACC_CHANGE_INFO_DEF      6
5094
#define ATOM_ACC_CHANGE_INFO_DEF      6
4520
#define ATOM_DOS_MODE_INFO_DEF        7
5095
#define ATOM_DOS_MODE_INFO_DEF        7
4521
#define ATOM_I2C_CHANNEL_STATUS_DEF   8
5096
#define ATOM_I2C_CHANNEL_STATUS_DEF   8
4522
#define ATOM_I2C_CHANNEL_STATUS1_DEF  9
5097
#define ATOM_I2C_CHANNEL_STATUS1_DEF  9
4523
 
-
 
-
 
5098
#define ATOM_INTERNAL_TIMER_DEF       10
Line 4524... Line 5099...
4524
 
5099
 
4525
// BIOS_0_SCRATCH Definition 
5100
// BIOS_0_SCRATCH Definition 
4526
#define ATOM_S0_CRT1_MONO               0x00000001L
5101
#define ATOM_S0_CRT1_MONO               0x00000001L
4527
#define ATOM_S0_CRT1_COLOR              0x00000002L
5102
#define ATOM_S0_CRT1_COLOR              0x00000002L
Line 4646... Line 5221...
4646
#define ATOM_S2_DEVICE_DPMS_STATEb2     0x01
5221
#define ATOM_S2_DEVICE_DPMS_STATEb2     0x01
Line 4647... Line 5222...
4647
 
5222
 
4648
#define ATOM_S2_DEVICE_DPMS_MASKw1      0x3FF
5223
#define ATOM_S2_DEVICE_DPMS_MASKw1      0x3FF
4649
#define ATOM_S2_FORCEDLOWPWRMODE_STATE_MASKb3     0x0C
5224
#define ATOM_S2_FORCEDLOWPWRMODE_STATE_MASKb3     0x0C
-
 
5225
#define ATOM_S2_FORCEDLOWPWRMODE_STATE_CHANGEb3   0x10
4650
#define ATOM_S2_FORCEDLOWPWRMODE_STATE_CHANGEb3   0x10
5226
#define ATOM_S2_TMDS_COHERENT_MODEb3    0x10          // used by VBIOS code only, use coherent mode for TMDS/HDMI mode
4651
#define ATOM_S2_VRI_BRIGHT_ENABLEb3     0x20
5227
#define ATOM_S2_VRI_BRIGHT_ENABLEb3     0x20
Line 4652... Line 5228...
4652
#define ATOM_S2_ROTATION_STATE_MASKb3   0xC0
5228
#define ATOM_S2_ROTATION_STATE_MASKb3   0xC0
Line 5036... Line 5612...
5036
  UCHAR  ucSurface;                   // Surface 1 or 2
5612
  UCHAR  ucSurface;                   // Surface 1 or 2
5037
  UCHAR  ucEnable;                    // ATOM_ENABLE or ATOM_DISABLE
5613
  UCHAR  ucEnable;                    // ATOM_ENABLE or ATOM_DISABLE
5038
  USHORT usDeviceId;                  // Active Device Id for this surface. If no device, set to 0. 
5614
  USHORT usDeviceId;                  // Active Device Id for this surface. If no device, set to 0. 
5039
}ENABLE_GRAPH_SURFACE_PARAMETERS_V1_3;
5615
}ENABLE_GRAPH_SURFACE_PARAMETERS_V1_3;
Line -... Line 5616...
-
 
5616
 
-
 
5617
typedef struct _ENABLE_GRAPH_SURFACE_PARAMETERS_V1_4
-
 
5618
{
-
 
5619
  USHORT usHight;                     // Image Hight
-
 
5620
  USHORT usWidth;                     // Image Width
-
 
5621
  USHORT usGraphPitch;
-
 
5622
  UCHAR  ucColorDepth;
-
 
5623
  UCHAR  ucPixelFormat;
-
 
5624
  UCHAR  ucSurface;                   // Surface 1 or 2
-
 
5625
  UCHAR  ucEnable;                    // ATOM_ENABLE or ATOM_DISABLE
-
 
5626
  UCHAR  ucModeType;
-
 
5627
  UCHAR  ucReserved;
-
 
5628
}ENABLE_GRAPH_SURFACE_PARAMETERS_V1_4;
-
 
5629
 
-
 
5630
// ucEnable
-
 
5631
#define ATOM_GRAPH_CONTROL_SET_PITCH             0x0f
-
 
5632
#define ATOM_GRAPH_CONTROL_SET_DISP_START        0x10
5040
 
5633
 
5041
typedef struct _ENABLE_GRAPH_SURFACE_PS_ALLOCATION
5634
typedef struct _ENABLE_GRAPH_SURFACE_PS_ALLOCATION
5042
{
5635
{
5043
	ENABLE_GRAPH_SURFACE_PARAMETERS sSetSurface;
5636
	ENABLE_GRAPH_SURFACE_PARAMETERS sSetSurface;
5044
  ENABLE_YUV_PS_ALLOCATION        sReserved; // Don't set this one
5637
  ENABLE_YUV_PS_ALLOCATION        sReserved; // Don't set this one
Line 5055... Line 5648...
5055
{
5648
{
5056
  USHORT  usX_Size;                     //When use as input parameter, usX_Size indicates which CRTC                 
5649
  USHORT  usX_Size;                     //When use as input parameter, usX_Size indicates which CRTC                 
5057
	USHORT usY_Size;
5650
	USHORT usY_Size;
5058
}GET_DISPLAY_SURFACE_SIZE_PARAMETERS; 
5651
}GET_DISPLAY_SURFACE_SIZE_PARAMETERS; 
Line -... Line 5652...
-
 
5652
 
-
 
5653
typedef struct  _GET_DISPLAY_SURFACE_SIZE_PARAMETERS_V2
-
 
5654
{
-
 
5655
  union{
-
 
5656
    USHORT  usX_Size;                     //When use as input parameter, usX_Size indicates which CRTC                 
-
 
5657
    USHORT  usSurface; 
-
 
5658
  };
-
 
5659
  USHORT usY_Size;
-
 
5660
  USHORT usDispXStart;               
-
 
5661
  USHORT usDispYStart;
-
 
5662
}GET_DISPLAY_SURFACE_SIZE_PARAMETERS_V2; 
-
 
5663
 
-
 
5664
 
-
 
5665
typedef struct _PALETTE_DATA_CONTROL_PARAMETERS_V3 
-
 
5666
{
-
 
5667
  UCHAR  ucLutId;
-
 
5668
  UCHAR  ucAction;
-
 
5669
  USHORT usLutStartIndex;
-
 
5670
  USHORT usLutLength;
-
 
5671
  USHORT usLutOffsetInVram;
-
 
5672
}PALETTE_DATA_CONTROL_PARAMETERS_V3;
-
 
5673
 
-
 
5674
// ucAction:
-
 
5675
#define PALETTE_DATA_AUTO_FILL            1
-
 
5676
#define PALETTE_DATA_READ                 2
-
 
5677
#define PALETTE_DATA_WRITE                3
-
 
5678
 
-
 
5679
 
-
 
5680
typedef struct _INTERRUPT_SERVICE_PARAMETERS_V2
-
 
5681
{
-
 
5682
  UCHAR  ucInterruptId;
-
 
5683
  UCHAR  ucServiceId;
-
 
5684
  UCHAR  ucStatus;
-
 
5685
  UCHAR  ucReserved;
-
 
5686
}INTERRUPT_SERVICE_PARAMETER_V2;
-
 
5687
 
-
 
5688
// ucInterruptId
-
 
5689
#define HDP1_INTERRUPT_ID                 1
-
 
5690
#define HDP2_INTERRUPT_ID                 2
-
 
5691
#define HDP3_INTERRUPT_ID                 3
-
 
5692
#define HDP4_INTERRUPT_ID                 4
-
 
5693
#define HDP5_INTERRUPT_ID                 5
-
 
5694
#define HDP6_INTERRUPT_ID                 6
-
 
5695
#define SW_INTERRUPT_ID                   11   
-
 
5696
 
-
 
5697
// ucAction
-
 
5698
#define INTERRUPT_SERVICE_GEN_SW_INT      1
-
 
5699
#define INTERRUPT_SERVICE_GET_STATUS      2
-
 
5700
 
-
 
5701
 // ucStatus
-
 
5702
#define INTERRUPT_STATUS__INT_TRIGGER     1
-
 
5703
#define INTERRUPT_STATUS__HPD_HIGH        2
5059
 
5704
 
5060
typedef struct _INDIRECT_IO_ACCESS
5705
typedef struct _INDIRECT_IO_ACCESS
5061
{
5706
{
5062
	ATOM_COMMON_TABLE_HEADER sHeader;
5707
	ATOM_COMMON_TABLE_HEADER sHeader;
5063
	UCHAR IOAccessSequence[256];
5708
	UCHAR IOAccessSequence[256];
Line 5187... Line 5832...
5187
	ATOM_MEMORY_SETTING_DATA_BLOCK asRegDataBuf[1];
5832
	ATOM_MEMORY_SETTING_DATA_BLOCK asRegDataBuf[1];
5188
}ATOM_INIT_REG_BLOCK;
5833
}ATOM_INIT_REG_BLOCK;
Line 5189... Line 5834...
5189
 
5834
 
5190
#define END_OF_REG_INDEX_BLOCK  0x0ffff
5835
#define END_OF_REG_INDEX_BLOCK  0x0ffff
5191
#define END_OF_REG_DATA_BLOCK   0x00000000
5836
#define END_OF_REG_DATA_BLOCK   0x00000000
5192
#define ATOM_INIT_REG_MASK_FLAG 0x80
5837
#define ATOM_INIT_REG_MASK_FLAG 0x80               //Not used in BIOS
Line 5193... Line 5838...
5193
#define	CLOCK_RANGE_HIGHEST			0x00ffffff
5838
#define	CLOCK_RANGE_HIGHEST			0x00ffffff
5194
 
5839
 
5195
#define VALUE_DWORD             SIZEOF ULONG
5840
#define VALUE_DWORD             SIZEOF ULONG
Line 5227... Line 5872...
5227
#define _64Mx16             0x42
5872
#define _64Mx16             0x42
5228
#define _64Mx32             0x43
5873
#define _64Mx32             0x43
5229
#define _128Mx8             0x51
5874
#define _128Mx8             0x51
5230
#define _128Mx16            0x52
5875
#define _128Mx16            0x52
5231
#define _256Mx8             0x61
5876
#define _256Mx8             0x61
-
 
5877
#define _256Mx16            0x62
Line 5232... Line 5878...
5232
 
5878
 
5233
#define SAMSUNG             0x1
5879
#define SAMSUNG             0x1
5234
#define INFINEON            0x2
5880
#define INFINEON            0x2
5235
#define ELPIDA              0x3
5881
#define ELPIDA              0x3
Line 5583... Line 6229...
5583
{
6229
{
5584
// Design Specific Values
6230
// Design Specific Values
5585
  ULONG	  ulChannelMapCfg;	                // mmMC_SHARED_CHREMAP
6231
  ULONG	  ulChannelMapCfg;	                // mmMC_SHARED_CHREMAP
5586
  USHORT  usModuleSize;                     // Size of ATOM_VRAM_MODULE_V7
6232
  USHORT  usModuleSize;                     // Size of ATOM_VRAM_MODULE_V7
5587
  USHORT  usPrivateReserved;                // MC_ARB_RAMCFG (includes NOOFBANK,NOOFRANKS,NOOFROWS,NOOFCOLS)
6233
  USHORT  usPrivateReserved;                // MC_ARB_RAMCFG (includes NOOFBANK,NOOFRANKS,NOOFROWS,NOOFCOLS)
5588
  USHORT  usReserved;
6234
  USHORT  usEnableChannels;                 // bit vector which indicate which channels are enabled
5589
  UCHAR   ucExtMemoryID;                    // Current memory module ID
6235
  UCHAR   ucExtMemoryID;                    // Current memory module ID
5590
  UCHAR   ucMemoryType;                     // MEM_TYPE_DDR2/DDR3/GDDR3/GDDR5
6236
  UCHAR   ucMemoryType;                     // MEM_TYPE_DDR2/DDR3/GDDR3/GDDR5
5591
  UCHAR   ucChannelNum;                     // Number of mem. channels supported in this module
6237
  UCHAR   ucChannelNum;                     // Number of mem. channels supported in this module
5592
  UCHAR   ucChannelWidth;                   // CHANNEL_16BIT/CHANNEL_32BIT/CHANNEL_64BIT
6238
  UCHAR   ucChannelWidth;                   // CHANNEL_16BIT/CHANNEL_32BIT/CHANNEL_64BIT
5593
  UCHAR   ucDensity;                        // _8Mx32, _16Mx32, _16Mx16, _32Mx16
6239
  UCHAR   ucDensity;                        // _8Mx32, _16Mx32, _16Mx16, _32Mx16
Line 5595... Line 6241...
5595
  UCHAR	  ucMisc;                           // RANK_OF_THISMEMORY etc.
6241
  UCHAR	  ucMisc;                           // RANK_OF_THISMEMORY etc.
5596
  UCHAR	  ucVREFI;                          // Not used.
6242
  UCHAR	  ucVREFI;                          // Not used.
5597
  UCHAR   ucNPL_RT;                         // Round trip delay (MC_SEQ_CAS_TIMING [28:24]:TCL=CL+NPL_RT-2). Always 2.
6243
  UCHAR   ucNPL_RT;                         // Round trip delay (MC_SEQ_CAS_TIMING [28:24]:TCL=CL+NPL_RT-2). Always 2.
5598
  UCHAR	  ucPreamble;                       // [7:4] Write Preamble, [3:0] Read Preamble
6244
  UCHAR	  ucPreamble;                       // [7:4] Write Preamble, [3:0] Read Preamble
5599
  UCHAR   ucMemorySize;                     // Total memory size in unit of 16MB for CONFIG_MEMSIZE - bit[23:0] zeros
6245
  UCHAR   ucMemorySize;                     // Total memory size in unit of 16MB for CONFIG_MEMSIZE - bit[23:0] zeros
-
 
6246
  USHORT  usSEQSettingOffset;
5600
  UCHAR   ucReserved[3];
6247
  UCHAR   ucReserved;
5601
// Memory Module specific values
6248
// Memory Module specific values
5602
  USHORT  usEMRS2Value;                     // EMRS2/MR2 Value. 
6249
  USHORT  usEMRS2Value;                     // EMRS2/MR2 Value. 
5603
  USHORT  usEMRS3Value;                     // EMRS3/MR3 Value.
6250
  USHORT  usEMRS3Value;                     // EMRS3/MR3 Value.
5604
  UCHAR   ucMemoryVenderID;                 // [7:4] Revision, [3:0] Vendor code
6251
  UCHAR   ucMemoryVenderID;                 // [7:4] Revision, [3:0] Vendor code
5605
  UCHAR	  ucRefreshRateFactor;              // [1:0]=RefreshFactor (00=8ms, 01=16ms, 10=32ms,11=64ms)
6252
  UCHAR	  ucRefreshRateFactor;              // [1:0]=RefreshFactor (00=8ms, 01=16ms, 10=32ms,11=64ms)
Line 5648... Line 6295...
5648
typedef struct _ATOM_VRAM_INFO_HEADER_V2_1
6295
typedef struct _ATOM_VRAM_INFO_HEADER_V2_1
5649
{
6296
{
5650
  ATOM_COMMON_TABLE_HEADER   sHeader;
6297
  ATOM_COMMON_TABLE_HEADER   sHeader;
5651
	USHORT										 usMemAdjustTblOffset;													 // offset of ATOM_INIT_REG_BLOCK structure for memory vendor specific MC adjust setting
6298
	USHORT										 usMemAdjustTblOffset;													 // offset of ATOM_INIT_REG_BLOCK structure for memory vendor specific MC adjust setting
5652
	USHORT										 usMemClkPatchTblOffset;												 //	offset of ATOM_INIT_REG_BLOCK structure for memory clock specific MC setting
6299
	USHORT										 usMemClkPatchTblOffset;												 //	offset of ATOM_INIT_REG_BLOCK structure for memory clock specific MC setting
-
 
6300
  USHORT                     usPerBytePresetOffset;                          // offset of ATOM_INIT_REG_BLOCK structure for Per Byte Offset Preset Settings
5653
	USHORT										 usReserved[4];
6301
  USHORT                     usReserved[3];
5654
  UCHAR                      ucNumOfVRAMModule;                              // indicate number of VRAM module
6302
  UCHAR                      ucNumOfVRAMModule;                              // indicate number of VRAM module
5655
  UCHAR                      ucMemoryClkPatchTblVer;                         // version of memory AC timing register list
6303
  UCHAR                      ucMemoryClkPatchTblVer;                         // version of memory AC timing register list
5656
  UCHAR                      ucVramModuleVer;                                // indicate ATOM_VRAM_MODUE version
6304
  UCHAR                      ucVramModuleVer;                                // indicate ATOM_VRAM_MODUE version
5657
  UCHAR                      ucReserved; 
6305
  UCHAR                      ucReserved; 
5658
  ATOM_VRAM_MODULE_V7		     aVramInfo[ATOM_MAX_NUMBER_OF_VRAM_MODULE];      // just for allocation, real number of blocks is in ucNumOfVRAMModule;
6306
  ATOM_VRAM_MODULE_V7		     aVramInfo[ATOM_MAX_NUMBER_OF_VRAM_MODULE];      // just for allocation, real number of blocks is in ucNumOfVRAMModule;
Line 5933... Line 6581...
5933
  USHORT ptrMainCallParserFar;                  // direct address of main parser call in VBIOS binary. 
6581
  USHORT ptrMainCallParserFar;                  // direct address of main parser call in VBIOS binary. 
5934
	ASIC_TRANSMITTER_INFO asTransmitterInfo[1];
6582
	ASIC_TRANSMITTER_INFO asTransmitterInfo[1];
5935
	ASIC_ENCODER_INFO asEncoderInfo[1];
6583
	ASIC_ENCODER_INFO asEncoderInfo[1];
5936
}ATOM_DISP_OUT_INFO_V2;
6584
}ATOM_DISP_OUT_INFO_V2;
Line -... Line 6585...
-
 
6585
 
-
 
6586
 
-
 
6587
typedef struct _ATOM_DISP_CLOCK_ID {
-
 
6588
  UCHAR ucPpllId; 
-
 
6589
  UCHAR ucPpllAttribute;
-
 
6590
}ATOM_DISP_CLOCK_ID;
-
 
6591
 
-
 
6592
// ucPpllAttribute
-
 
6593
#define CLOCK_SOURCE_SHAREABLE            0x01
-
 
6594
#define CLOCK_SOURCE_DP_MODE              0x02
-
 
6595
#define CLOCK_SOURCE_NONE_DP_MODE         0x04
-
 
6596
 
-
 
6597
//DispOutInfoTable
-
 
6598
typedef struct _ASIC_TRANSMITTER_INFO_V2
-
 
6599
{
-
 
6600
	USHORT usTransmitterObjId;
-
 
6601
	USHORT usDispClkIdOffset;    // point to clock source id list supported by Encoder Object
-
 
6602
  UCHAR  ucTransmitterCmdTblId;
-
 
6603
	UCHAR  ucConfig;
-
 
6604
	UCHAR  ucEncoderID;					 // available 1st encoder ( default )
-
 
6605
	UCHAR  ucOptionEncoderID;    // available 2nd encoder ( optional )
-
 
6606
	UCHAR  uc2ndEncoderID;
-
 
6607
	UCHAR  ucReserved;
-
 
6608
}ASIC_TRANSMITTER_INFO_V2;
-
 
6609
 
-
 
6610
typedef struct _ATOM_DISP_OUT_INFO_V3
-
 
6611
{
-
 
6612
  ATOM_COMMON_TABLE_HEADER sHeader;  
-
 
6613
	USHORT ptrTransmitterInfo;
-
 
6614
	USHORT ptrEncoderInfo;
-
 
6615
  USHORT ptrMainCallParserFar;                  // direct address of main parser call in VBIOS binary. 
-
 
6616
  USHORT usReserved;
-
 
6617
  UCHAR  ucDCERevision;   
-
 
6618
  UCHAR  ucMaxDispEngineNum;
-
 
6619
  UCHAR  ucMaxActiveDispEngineNum;
-
 
6620
  UCHAR  ucMaxPPLLNum;
-
 
6621
  UCHAR  ucCoreRefClkSource;                          // value of CORE_REF_CLK_SOURCE
-
 
6622
  UCHAR  ucReserved[3];
-
 
6623
	ASIC_TRANSMITTER_INFO_V2  asTransmitterInfo[1];     // for alligment only
-
 
6624
}ATOM_DISP_OUT_INFO_V3;
-
 
6625
 
-
 
6626
typedef enum CORE_REF_CLK_SOURCE{
-
 
6627
  CLOCK_SRC_XTALIN=0,
-
 
6628
  CLOCK_SRC_XO_IN=1,
-
 
6629
  CLOCK_SRC_XO_IN2=2,
-
 
6630
}CORE_REF_CLK_SOURCE;
5937
 
6631
 
5938
// DispDevicePriorityInfo
6632
// DispDevicePriorityInfo
5939
typedef struct _ATOM_DISPLAY_DEVICE_PRIORITY_INFO
6633
typedef struct _ATOM_DISPLAY_DEVICE_PRIORITY_INFO
5940
{
6634
{
5941
	ATOM_COMMON_TABLE_HEADER sHeader;
6635
	ATOM_COMMON_TABLE_HEADER sHeader;
Line 6068... Line 6762...
6068
//ucFlag
6762
//ucFlag
6069
#define HW_I2C_WRITE        1
6763
#define HW_I2C_WRITE        1
6070
#define HW_I2C_READ         0
6764
#define HW_I2C_READ         0
6071
#define I2C_2BYTE_ADDR      0x02
6765
#define I2C_2BYTE_ADDR      0x02
Line -... Line 6766...
-
 
6766
 
-
 
6767
/****************************************************************************/	
-
 
6768
// Structures used by HW_Misc_OperationTable
-
 
6769
/****************************************************************************/	
-
 
6770
typedef struct  _ATOM_HW_MISC_OPERATION_INPUT_PARAMETER_V1_1 
-
 
6771
{
-
 
6772
  UCHAR  ucCmd;                //  Input: To tell which action to take
-
 
6773
  UCHAR  ucReserved[3];
-
 
6774
  ULONG  ulReserved;
-
 
6775
}ATOM_HW_MISC_OPERATION_INPUT_PARAMETER_V1_1; 
-
 
6776
 
-
 
6777
typedef struct  _ATOM_HW_MISC_OPERATION_OUTPUT_PARAMETER_V1_1 
-
 
6778
{
-
 
6779
  UCHAR  ucReturnCode;        // Output: Return value base on action was taken
-
 
6780
  UCHAR  ucReserved[3];
-
 
6781
  ULONG  ulReserved;
-
 
6782
}ATOM_HW_MISC_OPERATION_OUTPUT_PARAMETER_V1_1;
-
 
6783
 
-
 
6784
// Actions code
-
 
6785
#define  ATOM_GET_SDI_SUPPORT              0xF0
-
 
6786
 
-
 
6787
// Return code 
-
 
6788
#define  ATOM_UNKNOWN_CMD                   0
-
 
6789
#define  ATOM_FEATURE_NOT_SUPPORTED         1
-
 
6790
#define  ATOM_FEATURE_SUPPORTED             2
-
 
6791
 
-
 
6792
typedef struct _ATOM_HW_MISC_OPERATION_PS_ALLOCATION
-
 
6793
{
-
 
6794
	ATOM_HW_MISC_OPERATION_INPUT_PARAMETER_V1_1        sInput_Output;
-
 
6795
	PROCESS_I2C_CHANNEL_TRANSACTION_PARAMETERS         sReserved; 
-
 
6796
}ATOM_HW_MISC_OPERATION_PS_ALLOCATION;
-
 
6797
 
-
 
6798
/****************************************************************************/	
6072
 
6799
 
6073
typedef struct _SET_HWBLOCK_INSTANCE_PARAMETER_V2
6800
typedef struct _SET_HWBLOCK_INSTANCE_PARAMETER_V2
6074
{
6801
{
6075
   UCHAR ucHWBlkInst;                // HW block instance, 0, 1, 2, ...
6802
   UCHAR ucHWBlkInst;                // HW block instance, 0, 1, 2, ...
6076
   UCHAR ucReserved[3]; 
6803
   UCHAR ucReserved[3]; 
Line 6088... Line 6815...
6088
#define SELECT_DCIO_IMPCAL            4
6815
#define SELECT_DCIO_IMPCAL            4
6089
#define SELECT_DCIO_DIG               6
6816
#define SELECT_DCIO_DIG               6
6090
#define SELECT_CRTC_PIXEL_RATE        7
6817
#define SELECT_CRTC_PIXEL_RATE        7
6091
#define SELECT_VGA_BLK                8
6818
#define SELECT_VGA_BLK                8
Line -... Line 6819...
-
 
6819
 
-
 
6820
// DIGTransmitterInfoTable structure used to program UNIPHY settings 
-
 
6821
typedef struct _DIG_TRANSMITTER_INFO_HEADER_V3_1{  
-
 
6822
  ATOM_COMMON_TABLE_HEADER sHeader;  
-
 
6823
  USHORT usDPVsPreEmphSettingOffset;     // offset of PHY_ANALOG_SETTING_INFO * with DP Voltage Swing and Pre-Emphasis for each Link clock 
-
 
6824
  USHORT usPhyAnalogRegListOffset;       // offset of CLOCK_CONDITION_REGESTER_INFO* with None-DP mode Analog Setting's register Info 
-
 
6825
  USHORT usPhyAnalogSettingOffset;       // offset of CLOCK_CONDITION_SETTING_ENTRY* with None-DP mode Analog Setting for each link clock range
-
 
6826
  USHORT usPhyPllRegListOffset;          // offset of CLOCK_CONDITION_REGESTER_INFO* with Phy Pll register Info 
-
 
6827
  USHORT usPhyPllSettingOffset;          // offset of CLOCK_CONDITION_SETTING_ENTRY* with Phy Pll Settings
-
 
6828
}DIG_TRANSMITTER_INFO_HEADER_V3_1;
-
 
6829
 
-
 
6830
typedef struct _CLOCK_CONDITION_REGESTER_INFO{
-
 
6831
  USHORT usRegisterIndex;
-
 
6832
  UCHAR  ucStartBit;
-
 
6833
  UCHAR  ucEndBit;
-
 
6834
}CLOCK_CONDITION_REGESTER_INFO;
-
 
6835
 
-
 
6836
typedef struct _CLOCK_CONDITION_SETTING_ENTRY{
-
 
6837
  USHORT usMaxClockFreq;
-
 
6838
  UCHAR  ucEncodeMode;
-
 
6839
  UCHAR  ucPhySel;
-
 
6840
  ULONG  ulAnalogSetting[1];
-
 
6841
}CLOCK_CONDITION_SETTING_ENTRY;
-
 
6842
 
-
 
6843
typedef struct _CLOCK_CONDITION_SETTING_INFO{
-
 
6844
  USHORT usEntrySize;
-
 
6845
  CLOCK_CONDITION_SETTING_ENTRY asClkCondSettingEntry[1];
-
 
6846
}CLOCK_CONDITION_SETTING_INFO;
-
 
6847
 
-
 
6848
typedef struct _PHY_CONDITION_REG_VAL{
-
 
6849
  ULONG  ulCondition;
-
 
6850
  ULONG  ulRegVal;
-
 
6851
}PHY_CONDITION_REG_VAL;
-
 
6852
 
-
 
6853
typedef struct _PHY_CONDITION_REG_INFO{
-
 
6854
  USHORT usRegIndex;
-
 
6855
  USHORT usSize;
-
 
6856
  PHY_CONDITION_REG_VAL asRegVal[1];
-
 
6857
}PHY_CONDITION_REG_INFO;
-
 
6858
 
-
 
6859
typedef struct _PHY_ANALOG_SETTING_INFO{
-
 
6860
  UCHAR  ucEncodeMode;
-
 
6861
  UCHAR  ucPhySel;
-
 
6862
  USHORT usSize;
-
 
6863
  PHY_CONDITION_REG_INFO  asAnalogSetting[1];
-
 
6864
}PHY_ANALOG_SETTING_INFO;
6092
 
6865
 
6093
/****************************************************************************/	
6866
/****************************************************************************/	
6094
//Portion VI: Definitinos for vbios MC scratch registers that driver used
6867
//Portion VI: Definitinos for vbios MC scratch registers that driver used
Line 6095... Line 6868...
6095
/****************************************************************************/
6868
/****************************************************************************/
Line 6495... Line 7268...
6495
#define ATOM_PP_THERMALCONTROLLER_EXTERNAL_GPIO     11
7268
#define ATOM_PP_THERMALCONTROLLER_EXTERNAL_GPIO     11
6496
#define ATOM_PP_THERMALCONTROLLER_EVERGREEN 12
7269
#define ATOM_PP_THERMALCONTROLLER_EVERGREEN 12
6497
#define ATOM_PP_THERMALCONTROLLER_EMC2103   13  /* 0x0D */ // Only fan control will be implemented, do NOT show this in PPGen.
7270
#define ATOM_PP_THERMALCONTROLLER_EMC2103   13  /* 0x0D */ // Only fan control will be implemented, do NOT show this in PPGen.
6498
#define ATOM_PP_THERMALCONTROLLER_SUMO      14  /* 0x0E */ // Sumo type, used internally
7271
#define ATOM_PP_THERMALCONTROLLER_SUMO      14  /* 0x0E */ // Sumo type, used internally
6499
#define ATOM_PP_THERMALCONTROLLER_NISLANDS  15
7272
#define ATOM_PP_THERMALCONTROLLER_NISLANDS  15
-
 
7273
#define ATOM_PP_THERMALCONTROLLER_SISLANDS  16
-
 
7274
#define ATOM_PP_THERMALCONTROLLER_LM96163   17
Line 6500... Line 7275...
6500
 
7275
 
6501
// Thermal controller 'combo type' to use an external controller for Fan control and an internal controller for thermal.
7276
// Thermal controller 'combo type' to use an external controller for Fan control and an internal controller for thermal.
6502
// We probably should reserve the bit 0x80 for this use.
7277
// We probably should reserve the bit 0x80 for this use.
6503
// 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).
7278
// 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).
Line 6510... Line 7285...
6510
{
7285
{
6511
    UCHAR ucNonClockStateIndex;
7286
    UCHAR ucNonClockStateIndex;
6512
    UCHAR ucClockStateIndices[1]; // variable-sized
7287
    UCHAR ucClockStateIndices[1]; // variable-sized
6513
} ATOM_PPLIB_STATE;
7288
} ATOM_PPLIB_STATE;
Line -... Line 7289...
-
 
7289
 
6514
 
7290
 
6515
typedef struct _ATOM_PPLIB_FANTABLE
7291
typedef struct _ATOM_PPLIB_FANTABLE
6516
{
7292
{
6517
    UCHAR   ucFanTableFormat;                // Change this if the table format changes or version changes so that the other fields are not the same.
7293
    UCHAR   ucFanTableFormat;                // Change this if the table format changes or version changes so that the other fields are not the same.
6518
    UCHAR   ucTHyst;                         // Temperature hysteresis. Integer.
7294
    UCHAR   ucTHyst;                         // Temperature hysteresis. Integer.
Line 6522... Line 7298...
6522
    USHORT  usPWMMin;                        // The minimum PWM value in percent (0.01% increments).
7298
    USHORT  usPWMMin;                        // The minimum PWM value in percent (0.01% increments).
6523
    USHORT  usPWMMed;                        // The PWM value (in percent) at TMed.
7299
    USHORT  usPWMMed;                        // The PWM value (in percent) at TMed.
6524
    USHORT  usPWMHigh;                       // The PWM value at THigh.
7300
    USHORT  usPWMHigh;                       // The PWM value at THigh.
6525
} ATOM_PPLIB_FANTABLE;
7301
} ATOM_PPLIB_FANTABLE;
Line -... Line 7302...
-
 
7302
 
-
 
7303
typedef struct _ATOM_PPLIB_FANTABLE2
-
 
7304
{
-
 
7305
    ATOM_PPLIB_FANTABLE basicTable;
-
 
7306
    USHORT  usTMax;                          // The max temperature
-
 
7307
} ATOM_PPLIB_FANTABLE2;
6526
 
7308
 
6527
typedef struct _ATOM_PPLIB_EXTENDEDHEADER
7309
typedef struct _ATOM_PPLIB_EXTENDEDHEADER
6528
{
7310
{
6529
    USHORT  usSize;
7311
    USHORT  usSize;
6530
    ULONG   ulMaxEngineClock;   // For Overdrive.
7312
    ULONG   ulMaxEngineClock;   // For Overdrive.
6531
    ULONG   ulMaxMemoryClock;   // For Overdrive.
7313
    ULONG   ulMaxMemoryClock;   // For Overdrive.
-
 
7314
    // Add extra system parameters here, always adjust size to include all fields.
-
 
7315
    USHORT  usVCETableOffset; //points to ATOM_PPLIB_VCE_Table
6532
    // Add extra system parameters here, always adjust size to include all fields.
7316
    USHORT  usUVDTableOffset;   //points to ATOM_PPLIB_UVD_Table
Line 6533... Line 7317...
6533
} ATOM_PPLIB_EXTENDEDHEADER;
7317
} ATOM_PPLIB_EXTENDEDHEADER;
6534
 
7318
 
6535
//// ATOM_PPLIB_POWERPLAYTABLE::ulPlatformCaps
7319
//// ATOM_PPLIB_POWERPLAYTABLE::ulPlatformCaps
Line 6550... Line 7334...
6550
#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).
7334
#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).
6551
#define ATOM_PP_PLATFORM_CAP_VDDCI_CONTROL 0x8000                   // Does the driver control VDDCI independently from VDDC.
7335
#define ATOM_PP_PLATFORM_CAP_VDDCI_CONTROL 0x8000                   // Does the driver control VDDCI independently from VDDC.
6552
#define ATOM_PP_PLATFORM_CAP_REGULATOR_HOT 0x00010000               // Enable the 'regulator hot' feature.
7336
#define ATOM_PP_PLATFORM_CAP_REGULATOR_HOT 0x00010000               // Enable the 'regulator hot' feature.
6553
#define ATOM_PP_PLATFORM_CAP_BACO          0x00020000               // Does the driver supports BACO state.
7337
#define ATOM_PP_PLATFORM_CAP_BACO          0x00020000               // Does the driver supports BACO state.
Line -... Line 7338...
-
 
7338
 
6554
 
7339
 
6555
typedef struct _ATOM_PPLIB_POWERPLAYTABLE
7340
typedef struct _ATOM_PPLIB_POWERPLAYTABLE
6556
{
7341
{
Line 6557... Line 7342...
6557
      ATOM_COMMON_TABLE_HEADER sHeader;
7342
      ATOM_COMMON_TABLE_HEADER sHeader;
Line 6608... Line 7393...
6608
    ULONG                      ulGoldenRevision;                // PPGen use only
7393
    ULONG                      ulGoldenRevision;                // PPGen use only
6609
    USHORT                     usVddcDependencyOnSCLKOffset;
7394
    USHORT                     usVddcDependencyOnSCLKOffset;
6610
    USHORT                     usVddciDependencyOnMCLKOffset;
7395
    USHORT                     usVddciDependencyOnMCLKOffset;
6611
    USHORT                     usVddcDependencyOnMCLKOffset;
7396
    USHORT                     usVddcDependencyOnMCLKOffset;
6612
    USHORT                     usMaxClockVoltageOnDCOffset;
7397
    USHORT                     usMaxClockVoltageOnDCOffset;
-
 
7398
    USHORT                     usVddcPhaseShedLimitsTableOffset;    // Points to ATOM_PPLIB_PhaseSheddingLimits_Table
6613
    USHORT                     usReserved[2];  
7399
    USHORT                     usReserved;  
6614
} ATOM_PPLIB_POWERPLAYTABLE4, *LPATOM_PPLIB_POWERPLAYTABLE4;
7400
} ATOM_PPLIB_POWERPLAYTABLE4, *LPATOM_PPLIB_POWERPLAYTABLE4;
Line 6615... Line 7401...
6615
 
7401
 
6616
typedef struct _ATOM_PPLIB_POWERPLAYTABLE5
7402
typedef struct _ATOM_PPLIB_POWERPLAYTABLE5
6617
{
7403
{
6618
    ATOM_PPLIB_POWERPLAYTABLE4 basicTable4;
7404
    ATOM_PPLIB_POWERPLAYTABLE4 basicTable4;
6619
    ULONG                      ulTDPLimit;
7405
    ULONG                      ulTDPLimit;
6620
    ULONG                      ulNearTDPLimit;
7406
    ULONG                      ulNearTDPLimit;
6621
    ULONG                      ulSQRampingThreshold;
7407
    ULONG                      ulSQRampingThreshold;
6622
    USHORT                     usCACLeakageTableOffset;         // Points to ATOM_PPLIB_CAC_Leakage_Table
7408
    USHORT                     usCACLeakageTableOffset;         // Points to ATOM_PPLIB_CAC_Leakage_Table
6623
    ULONG                      ulCACLeakage;                    // TBD, this parameter is still under discussion.  Change to ulReserved if not needed.
7409
    ULONG                      ulCACLeakage;                    // The iLeakage for driver calculated CAC leakage table
-
 
7410
    USHORT                     usTDPODLimit;
6624
    ULONG                      ulReserved;
7411
    USHORT                     usLoadLineSlope;                 // in milliOhms * 100
Line 6625... Line 7412...
6625
} ATOM_PPLIB_POWERPLAYTABLE5, *LPATOM_PPLIB_POWERPLAYTABLE5;
7412
} ATOM_PPLIB_POWERPLAYTABLE5, *LPATOM_PPLIB_POWERPLAYTABLE5;
6626
 
7413
 
6627
//// ATOM_PPLIB_NONCLOCK_INFO::usClassification
7414
//// ATOM_PPLIB_NONCLOCK_INFO::usClassification
Line 6648... Line 7435...
6648
#define ATOM_PPLIB_CLASSIFICATION_SDSTATE                0x8000
7435
#define ATOM_PPLIB_CLASSIFICATION_SDSTATE                0x8000
Line 6649... Line 7436...
6649
 
7436
 
6650
//// ATOM_PPLIB_NONCLOCK_INFO::usClassification2
7437
//// ATOM_PPLIB_NONCLOCK_INFO::usClassification2
6651
#define ATOM_PPLIB_CLASSIFICATION2_LIMITEDPOWERSOURCE_2     0x0001
7438
#define ATOM_PPLIB_CLASSIFICATION2_LIMITEDPOWERSOURCE_2     0x0001
-
 
7439
#define ATOM_PPLIB_CLASSIFICATION2_ULV                      0x0002
Line 6652... Line 7440...
6652
#define ATOM_PPLIB_CLASSIFICATION2_ULV                      0x0002
7440
#define ATOM_PPLIB_CLASSIFICATION2_MVC                      0x0004   //Multi-View Codec (BD-3D)
6653
 
7441
 
6654
//// ATOM_PPLIB_NONCLOCK_INFO::ulCapsAndSettings
7442
//// ATOM_PPLIB_NONCLOCK_INFO::ulCapsAndSettings
Line 6671... Line 7459...
6671
#define ATOM_PPLIB_LIMITED_REFRESHRATE_50HZ         1
7459
#define ATOM_PPLIB_LIMITED_REFRESHRATE_50HZ         1
6672
// 2-15 TBD as needed.
7460
// 2-15 TBD as needed.
Line 6673... Line 7461...
6673
 
7461
 
6674
#define ATOM_PPLIB_SOFTWARE_DISABLE_LOADBALANCING        0x00001000
7462
#define ATOM_PPLIB_SOFTWARE_DISABLE_LOADBALANCING        0x00001000
-
 
7463
#define ATOM_PPLIB_SOFTWARE_ENABLE_SLEEP_FOR_TIMESTAMPS  0x00002000
6675
#define ATOM_PPLIB_SOFTWARE_ENABLE_SLEEP_FOR_TIMESTAMPS  0x00002000
7464
 
-
 
7465
#define ATOM_PPLIB_DISALLOW_ON_DC                        0x00004000
6676
#define ATOM_PPLIB_DISALLOW_ON_DC                        0x00004000
7466
 
Line 6677... Line 7467...
6677
#define ATOM_PPLIB_ENABLE_VARIBRIGHT                     0x00008000
7467
#define ATOM_PPLIB_ENABLE_VARIBRIGHT                     0x00008000
6678
 
7468
 
Line 6752... Line 7542...
6752
 
7542
 
Line 6753... Line 7543...
6753
      ULONG ulFlags; // ATOM_PPLIB_R600_FLAGS_*
7543
      ULONG ulFlags; // ATOM_PPLIB_R600_FLAGS_*
Line -... Line 7544...
-
 
7544
 
-
 
7545
} ATOM_PPLIB_EVERGREEN_CLOCK_INFO;
-
 
7546
 
-
 
7547
typedef struct _ATOM_PPLIB_SI_CLOCK_INFO
-
 
7548
{
-
 
7549
      USHORT usEngineClockLow;
-
 
7550
      UCHAR  ucEngineClockHigh;
-
 
7551
 
-
 
7552
      USHORT usMemoryClockLow;
-
 
7553
      UCHAR  ucMemoryClockHigh;
-
 
7554
 
-
 
7555
      USHORT usVDDC;
-
 
7556
      USHORT usVDDCI;
-
 
7557
      UCHAR  ucPCIEGen;
-
 
7558
      UCHAR  ucUnused1;
-
 
7559
 
-
 
7560
      ULONG ulFlags; // ATOM_PPLIB_SI_FLAGS_*, no flag is necessary for now
-
 
7561
 
6754
 
7562
} ATOM_PPLIB_SI_CLOCK_INFO;
Line 6755... Line 7563...
6755
} ATOM_PPLIB_EVERGREEN_CLOCK_INFO;
7563
 
6756
 
7564
 
6757
typedef struct _ATOM_PPLIB_RS780_CLOCK_INFO
7565
typedef struct _ATOM_PPLIB_RS780_CLOCK_INFO
Line 6764... Line 7572...
6764
      USHORT usMemoryClockLow;            // For now one of the ATOM_PPLIB_RS780_SPMCLK_XXXX constants.
7572
      USHORT usMemoryClockLow;            // For now one of the ATOM_PPLIB_RS780_SPMCLK_XXXX constants.
6765
      UCHAR  ucMemoryClockHigh;           // Currentyl unused.
7573
      UCHAR  ucMemoryClockHigh;           // Currentyl unused.
6766
      UCHAR  ucPadding;                   // For proper alignment and size.
7574
      UCHAR  ucPadding;                   // For proper alignment and size.
6767
      USHORT usVDDC;                      // For the 780, use: None, Low, High, Variable
7575
      USHORT usVDDC;                      // For the 780, use: None, Low, High, Variable
6768
      UCHAR  ucMaxHTLinkWidth;            // From SBIOS - {2, 4, 8, 16}
7576
      UCHAR  ucMaxHTLinkWidth;            // From SBIOS - {2, 4, 8, 16}
6769
      UCHAR  ucMinHTLinkWidth;            // From SBIOS - {2, 4, 8, 16}. Effective only if CDLW enabled. Minimum down stream width could be bigger as display BW requirement.
7577
      UCHAR  ucMinHTLinkWidth;            // From SBIOS - {2, 4, 8, 16}. Effective only if CDLW enabled. Minimum down stream width could be bigger as display BW requriement.
6770
      USHORT usHTLinkFreq;                // See definition ATOM_PPLIB_RS780_HTLINKFREQ_xxx or in MHz(>=200).
7578
      USHORT usHTLinkFreq;                // See definition ATOM_PPLIB_RS780_HTLINKFREQ_xxx or in MHz(>=200).
6771
      ULONG  ulFlags;
7579
      ULONG  ulFlags;
6772
} ATOM_PPLIB_RS780_CLOCK_INFO;
7580
} ATOM_PPLIB_RS780_CLOCK_INFO;
Line 6773... Line 7581...
6773
 
7581
 
Line 6786... Line 7594...
6786
 
7594
 
6787
typedef struct _ATOM_PPLIB_SUMO_CLOCK_INFO{
7595
typedef struct _ATOM_PPLIB_SUMO_CLOCK_INFO{
6788
      USHORT usEngineClockLow;  //clockfrequency & 0xFFFF. The unit is in 10khz
7596
      USHORT usEngineClockLow;  //clockfrequency & 0xFFFF. The unit is in 10khz
6789
      UCHAR  ucEngineClockHigh; //clockfrequency >> 16. 
7597
      UCHAR  ucEngineClockHigh; //clockfrequency >> 16. 
6790
      UCHAR  vddcIndex;         //2-bit vddc index;
-
 
6791
      UCHAR  leakage;          //please use 8-bit absolute value, not the 6-bit % value 
-
 
6792
      //please initalize to 0
7598
      UCHAR  vddcIndex;         //2-bit vddc index;
6793
      UCHAR  rsv;
7599
      USHORT tdpLimit;
6794
      //please initalize to 0
7600
      //please initalize to 0
6795
      USHORT rsv1;
7601
      USHORT rsv1;
6796
      //please initialize to 0s
7602
      //please initialize to 0s
6797
      ULONG rsv2[2];
7603
      ULONG rsv2[2];
Line 6811... Line 7617...
6811
      * Driver will read the first ucNumDPMLevels in this array
7617
      * Driver will read the first ucNumDPMLevels in this array
6812
      */
7618
      */
6813
      UCHAR clockInfoIndex[1];
7619
      UCHAR clockInfoIndex[1];
6814
} ATOM_PPLIB_STATE_V2;
7620
} ATOM_PPLIB_STATE_V2;
Line 6815... Line 7621...
6815
 
7621
 
6816
typedef struct StateArray{
7622
typedef struct _StateArray{
6817
    //how many states we have 
7623
    //how many states we have 
Line 6818... Line 7624...
6818
    UCHAR ucNumEntries;
7624
    UCHAR ucNumEntries;
6819
    
7625
    
Line 6820... Line 7626...
6820
    ATOM_PPLIB_STATE_V2 states[1];
7626
    ATOM_PPLIB_STATE_V2 states[1];
6821
}StateArray;
7627
}StateArray;
6822
 
7628
 
Line 6823... Line 7629...
6823
 
7629
 
6824
typedef struct ClockInfoArray{
7630
typedef struct _ClockInfoArray{
Line 6825... Line -...
6825
    //how many clock levels we have
-
 
6826
    UCHAR ucNumEntries;
7631
    //how many clock levels we have
6827
    
7632
    UCHAR ucNumEntries;
Line 6828... Line 7633...
6828
    //sizeof(ATOM_PPLIB_SUMO_CLOCK_INFO)
7633
    
Line 6829... Line 7634...
6829
    UCHAR ucEntrySize;
7634
    //sizeof(ATOM_PPLIB_CLOCK_INFO)
6830
    
7635
    UCHAR ucEntrySize;
6831
    //this is for Sumo
7636
    
6832
    ATOM_PPLIB_SUMO_CLOCK_INFO clockInfo[1];
7637
    UCHAR clockInfo[1];
Line 6869... Line 7674...
6869
{
7674
{
6870
    UCHAR ucNumEntries;                                                // Number of entries.
7675
    UCHAR ucNumEntries;                                                // Number of entries.
6871
    ATOM_PPLIB_Clock_Voltage_Limit_Record entries[1];                  // Dynamically allocate entries.
7676
    ATOM_PPLIB_Clock_Voltage_Limit_Record entries[1];                  // Dynamically allocate entries.
6872
}ATOM_PPLIB_Clock_Voltage_Limit_Table;
7677
}ATOM_PPLIB_Clock_Voltage_Limit_Table;
Line -... Line 7678...
-
 
7678
 
-
 
7679
typedef struct _ATOM_PPLIB_CAC_Leakage_Record
-
 
7680
{
-
 
7681
    USHORT usVddc;  // We use this field for the "fake" standardized VDDC for power calculations                                                  
-
 
7682
    ULONG  ulLeakageValue;
-
 
7683
}ATOM_PPLIB_CAC_Leakage_Record;
-
 
7684
 
-
 
7685
typedef struct _ATOM_PPLIB_CAC_Leakage_Table
-
 
7686
{
-
 
7687
    UCHAR ucNumEntries;                                                 // Number of entries.
-
 
7688
    ATOM_PPLIB_CAC_Leakage_Record entries[1];                           // Dynamically allocate entries.
-
 
7689
}ATOM_PPLIB_CAC_Leakage_Table;
-
 
7690
 
-
 
7691
typedef struct _ATOM_PPLIB_PhaseSheddingLimits_Record
-
 
7692
{
-
 
7693
    USHORT usVoltage;
-
 
7694
    USHORT usSclkLow;
-
 
7695
    UCHAR  ucSclkHigh;
-
 
7696
    USHORT usMclkLow;
-
 
7697
    UCHAR  ucMclkHigh;
-
 
7698
}ATOM_PPLIB_PhaseSheddingLimits_Record;
-
 
7699
 
-
 
7700
typedef struct _ATOM_PPLIB_PhaseSheddingLimits_Table
-
 
7701
{
-
 
7702
    UCHAR ucNumEntries;                                                 // Number of entries.
-
 
7703
    ATOM_PPLIB_PhaseSheddingLimits_Record entries[1];                   // Dynamically allocate entries.
-
 
7704
}ATOM_PPLIB_PhaseSheddingLimits_Table;
-
 
7705
 
-
 
7706
typedef struct _VCEClockInfo{
-
 
7707
    USHORT usEVClkLow;
-
 
7708
    UCHAR  ucEVClkHigh;
-
 
7709
    USHORT usECClkLow;
-
 
7710
    UCHAR  ucECClkHigh;
-
 
7711
}VCEClockInfo;
-
 
7712
 
-
 
7713
typedef struct _VCEClockInfoArray{
-
 
7714
    UCHAR ucNumEntries;
-
 
7715
    VCEClockInfo entries[1];
-
 
7716
}VCEClockInfoArray;
-
 
7717
 
-
 
7718
typedef struct _ATOM_PPLIB_VCE_Clock_Voltage_Limit_Record
-
 
7719
{
-
 
7720
    USHORT usVoltage;
-
 
7721
    UCHAR  ucVCEClockInfoIndex;
-
 
7722
}ATOM_PPLIB_VCE_Clock_Voltage_Limit_Record;
-
 
7723
 
-
 
7724
typedef struct _ATOM_PPLIB_VCE_Clock_Voltage_Limit_Table
-
 
7725
{
-
 
7726
    UCHAR numEntries;
-
 
7727
    ATOM_PPLIB_VCE_Clock_Voltage_Limit_Record entries[1];
-
 
7728
}ATOM_PPLIB_VCE_Clock_Voltage_Limit_Table;
-
 
7729
 
-
 
7730
typedef struct _ATOM_PPLIB_VCE_State_Record
-
 
7731
{
-
 
7732
    UCHAR  ucVCEClockInfoIndex;
-
 
7733
    UCHAR  ucClockInfoIndex; //highest 2 bits indicates memory p-states, lower 6bits indicates index to ClockInfoArrary
-
 
7734
}ATOM_PPLIB_VCE_State_Record;
-
 
7735
 
-
 
7736
typedef struct _ATOM_PPLIB_VCE_State_Table
-
 
7737
{
-
 
7738
    UCHAR numEntries;
-
 
7739
    ATOM_PPLIB_VCE_State_Record entries[1];
-
 
7740
}ATOM_PPLIB_VCE_State_Table;
-
 
7741
 
-
 
7742
 
-
 
7743
typedef struct _ATOM_PPLIB_VCE_Table
-
 
7744
{
-
 
7745
      UCHAR revid;
-
 
7746
//    VCEClockInfoArray array;
-
 
7747
//    ATOM_PPLIB_VCE_Clock_Voltage_Limit_Table limits;
-
 
7748
//    ATOM_PPLIB_VCE_State_Table states;
-
 
7749
}ATOM_PPLIB_VCE_Table;
-
 
7750
 
-
 
7751
 
-
 
7752
typedef struct _UVDClockInfo{
-
 
7753
    USHORT usVClkLow;
-
 
7754
    UCHAR  ucVClkHigh;
-
 
7755
    USHORT usDClkLow;
-
 
7756
    UCHAR  ucDClkHigh;
-
 
7757
}UVDClockInfo;
-
 
7758
 
-
 
7759
typedef struct _UVDClockInfoArray{
-
 
7760
    UCHAR ucNumEntries;
-
 
7761
    UVDClockInfo entries[1];
-
 
7762
}UVDClockInfoArray;
-
 
7763
 
-
 
7764
typedef struct _ATOM_PPLIB_UVD_Clock_Voltage_Limit_Record
-
 
7765
{
-
 
7766
    USHORT usVoltage;
-
 
7767
    UCHAR  ucUVDClockInfoIndex;
-
 
7768
}ATOM_PPLIB_UVD_Clock_Voltage_Limit_Record;
-
 
7769
 
-
 
7770
typedef struct _ATOM_PPLIB_UVD_Clock_Voltage_Limit_Table
-
 
7771
{
-
 
7772
    UCHAR numEntries;
-
 
7773
    ATOM_PPLIB_UVD_Clock_Voltage_Limit_Record entries[1];
-
 
7774
}ATOM_PPLIB_UVD_Clock_Voltage_Limit_Table;
-
 
7775
 
-
 
7776
typedef struct _ATOM_PPLIB_UVD_State_Record
-
 
7777
{
-
 
7778
    UCHAR  ucUVDClockInfoIndex;
-
 
7779
    UCHAR  ucClockInfoIndex; //highest 2 bits indicates memory p-states, lower 6bits indicates index to ClockInfoArrary
-
 
7780
}ATOM_PPLIB_UVD_State_Record;
-
 
7781
 
-
 
7782
typedef struct _ATOM_PPLIB_UVD_State_Table
-
 
7783
{
-
 
7784
    UCHAR numEntries;
-
 
7785
    ATOM_PPLIB_UVD_State_Record entries[1];
-
 
7786
}ATOM_PPLIB_UVD_State_Table;
-
 
7787
 
-
 
7788
 
-
 
7789
typedef struct _ATOM_PPLIB_UVD_Table
-
 
7790
{
-
 
7791
      UCHAR revid;
-
 
7792
//    UVDClockInfoArray array;
-
 
7793
//    ATOM_PPLIB_UVD_Clock_Voltage_Limit_Table limits;
-
 
7794
//    ATOM_PPLIB_UVD_State_Table states;
-
 
7795
}ATOM_PPLIB_UVD_Table;
6873
 
7796
 
Line 6874... Line 7797...
6874
/**************************************************************************/
7797
/**************************************************************************/
6875
 
7798
 
Line 7018... Line 7941...
7018
 
7941
 
Line 7019... Line 7942...
7019
/*********************************************************************************/
7942
/*********************************************************************************/
Line -... Line 7943...
-
 
7943
 
-
 
7944
#pragma pack() // BIOS data must use byte aligment
-
 
7945
 
-
 
7946
//
-
 
7947
// AMD ACPI Table
-
 
7948
//
-
 
7949
#pragma pack(1)
-
 
7950
 
-
 
7951
typedef struct {
-
 
7952
  ULONG Signature;
-
 
7953
  ULONG TableLength;      //Length
-
 
7954
  UCHAR Revision;
-
 
7955
  UCHAR Checksum;
-
 
7956
  UCHAR OemId[6];
-
 
7957
  UCHAR OemTableId[8];    //UINT64  OemTableId;
-
 
7958
  ULONG OemRevision;
-
 
7959
  ULONG CreatorId;
-
 
7960
  ULONG CreatorRevision;
-
 
7961
} AMD_ACPI_DESCRIPTION_HEADER;
-
 
7962
/*
-
 
7963
//EFI_ACPI_DESCRIPTION_HEADER from AcpiCommon.h
-
 
7964
typedef struct {
-
 
7965
  UINT32  Signature;       //0x0
-
 
7966
  UINT32  Length;          //0x4
-
 
7967
  UINT8   Revision;        //0x8
-
 
7968
  UINT8   Checksum;        //0x9
-
 
7969
  UINT8   OemId[6];        //0xA
-
 
7970
  UINT64  OemTableId;      //0x10
-
 
7971
  UINT32  OemRevision;     //0x18
-
 
7972
  UINT32  CreatorId;       //0x1C
-
 
7973
  UINT32  CreatorRevision; //0x20
-
 
7974
}EFI_ACPI_DESCRIPTION_HEADER;
-
 
7975
*/
-
 
7976
typedef struct {
-
 
7977
  AMD_ACPI_DESCRIPTION_HEADER SHeader;
-
 
7978
  UCHAR TableUUID[16];    //0x24
-
 
7979
  ULONG VBIOSImageOffset; //0x34. Offset to the first GOP_VBIOS_CONTENT block from the beginning of the stucture.
-
 
7980
  ULONG Lib1ImageOffset;  //0x38. Offset to the first GOP_LIB1_CONTENT block from the beginning of the stucture.
-
 
7981
  ULONG Reserved[4];      //0x3C
-
 
7982
}UEFI_ACPI_VFCT;
-
 
7983
 
-
 
7984
typedef struct {
-
 
7985
  ULONG  PCIBus;          //0x4C
-
 
7986
  ULONG  PCIDevice;       //0x50
-
 
7987
  ULONG  PCIFunction;     //0x54
-
 
7988
  USHORT VendorID;        //0x58
-
 
7989
  USHORT DeviceID;        //0x5A
-
 
7990
  USHORT SSVID;           //0x5C
-
 
7991
  USHORT SSID;            //0x5E
-
 
7992
  ULONG  Revision;        //0x60
-
 
7993
  ULONG  ImageLength;     //0x64
-
 
7994
}VFCT_IMAGE_HEADER;
-
 
7995
 
-
 
7996
 
-
 
7997
typedef struct {
-
 
7998
  VFCT_IMAGE_HEADER	VbiosHeader;
-
 
7999
  UCHAR	VbiosContent[1];
-
 
8000
}GOP_VBIOS_CONTENT;
-
 
8001
 
-
 
8002
typedef struct {
-
 
8003
  VFCT_IMAGE_HEADER	Lib1Header;
-
 
8004
  UCHAR	Lib1Content[1];
-
 
8005
}GOP_LIB1_CONTENT;
-
 
8006
 
7020
 
8007
#pragma pack()