/** @file
Copyright (c) 2004 - 2016, Intel Corporation. All rights reserved.<BR>
This program and the accompanying materials are licensed and made available under
the terms and conditions of the BSD License that accompanies this distribution.
The full text of the license may be found at
http://opensource.org/licenses/bsd-license.php.
THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,
WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.
Module Name:
GlobalNvsArea.h
Abstract:
Definition of the global NVS area protocol. This protocol
publishes the address and format of a global ACPI NVS buffer used as a communications
buffer between SMM code and ASL code.
The format is derived from the ACPI reference code, version 0.95.
Note: Data structures defined in this protocol are not naturally aligned.
**/
#ifndef _GLOBAL_NVS_AREA_H_
#define _GLOBAL_NVS_AREA_H_
//
// Includes
//
#define GLOBAL_NVS_DEVICE_ENABLE 1
#define GLOBAL_NVS_DEVICE_DISABLE 0
//
// Forward reference for pure ANSI compatibility
//
//EFI_FORWARD_DECLARATION (EFI_GLOBAL_NVS_AREA_PROTOCOL);
//
// Global NVS Area Protocol GUID
//
#define EFI_GLOBAL_NVS_AREA_PROTOCOL_GUID \
{ 0x74e1e48, 0x8132, 0x47a1, 0x8c, 0x2c, 0x3f, 0x14, 0xad, 0x9a, 0x66, 0xdc }
//
// Revision id - Added TPM related fields
//
#define GLOBAL_NVS_AREA_RIVISION_1 1
//
// Extern the GUID for protocol users.
//
extern EFI_GUID gEfiGlobalNvsAreaProtocolGuid;
//
// Global NVS Area definition
//
#pragma pack (1)
typedef struct {
//
// Miscellaneous Dynamic Values, the definitions below need to be matched
// GNVS definitions in Platform.ASL
//
UINT16 OperatingSystem; // 00
UINT8 SmiFunction; // 02 SMI function call via IO Trap
UINT8 SmiParameter0; // 03
UINT8 SmiParameter1; // 04
UINT8 SciFunction; // 05 SCI function call via _L00
UINT8 SciParameter0; // 06
UINT8 SciParameter1; // 07
UINT8 GlobalLock; // 08 Global lock function call
UINT8 LockParameter0; // 09
UINT8 LockParameter1; // 10
UINT32 Port80DebugValue; // 11
UINT8 LidState; // 15 Open = 1
UINT8 PowerState; // 16 AC = 1
UINT8 DebugState; // 17
//
// Thermal Policy Values
//
UINT8 EnableThermalOffset; // 18 ThermalOffset for KSC
UINT8 Reserved1; // 19
UINT8 Reserved2; // 20
UINT8 PassiveThermalTripPoint; // 21
UINT8 PassiveTc1Value; // 22
UINT8 PassiveTc2Value; // 23
UINT8 PassiveTspValue; // 24
UINT8 CriticalThermalTripPoint; // 25
UINT8 EnableDigitalThermalSensor; // 26
UINT8 BspDigitalThermalSensorTemperature; // 27 Temperature of BSP
UINT8 ApDigitalThermalSensorTemperature; // 28 Temperature of AP
UINT8 DigitalThermalSensorSmiFunction; // 29 SMI function call via DTS IO Trap
//
// Battery Support Values
//
UINT8 NumberOfBatteries; // 30
UINT8 BatteryCapacity0; // 31 Battery 0 Stored Capacity
UINT8 BatteryCapacity1; // 32 Battery 1 Stored Capacity
UINT8 BatteryCapacity2; // 33 Battery 2 Stored Capacity
UINT8 BatteryStatus0; // 34 Battery 0 Stored Status
UINT8 BatteryStatus1; // 35 Battery 1 Stored Status
UINT8 BatteryStatus2; // 36 Battery 2 Stored Status
// NOTE: Do NOT Change the Offset of Revision Field
UINT8 Revision; // 37 Revision of the structure EFI_GLOBAL_NVS_AREA
UINT8 Reserved3[2]; // 38:39
//
// Processor Configuration Values
//
UINT8 ApicEnable; // 40 APIC Enabled by SBIOS (APIC Enabled = 1)
UINT8 LogicalProcessorCount; // 41 Processor Count Enabled (MP Enabled != 0)
UINT8 CurentPdcState0; // 42 PDC settings, Processor 0
UINT8 CurentPdcState1; // 43 PDC settings, Processor 1
UINT8 MaximumPpcState; // 44 Maximum PPC state
UINT32 PpmFlags; // 45:48 PPM configuration flags, same as CFGD
UINT8 Reserved4[1]; // 49
//
// SIO Configuration Values
//
UINT8 DockedSioPresent; // 50 Dock SIO Present
UINT8 DockComA; // 51 COM A Port
UINT8 DockComB; // 52 COM B Port
UINT8 LptP; // 53 LPT Port
UINT8 DockFdc; // 54 FDC Port
UINT8 OnboardCom; // 55 Onboard COM Port
UINT8 OnboardComCir; // 56 Onboard COM CIR Port
UINT8 WPCN381U; // 57
UINT8 NPCE791x; // 58
UINT8 Reserved5[1]; // 59
//
// Internal Graphics Device Values
//
UINT8 IgdState; // 60 IGD State (Primary Display = 1)
UINT8 DisplayToggleList; // 61 Display Toggle List Selection
UINT8 CurrentDeviceList; // 62 Current Attached Device List
UINT8 PreviousDeviceList; // 63 Previous Attached Device List
UINT16 CurrentDisplayState; // 64 Current Display State
UINT16 NextDisplayState; // 66 Next Display State
UINT16 SetDisplayState; // 68 Set Display State
UINT8 NumberOfValidDeviceId; // 70 Number of Valid Device IDs
UINT32 DeviceId1; // 71 Device ID 1
UINT32 DeviceId2; // 75 Device ID 2
UINT32 DeviceId3; // 79 Device ID 3
UINT32 DeviceId4; // 83 Device ID 4
UINT32 DeviceId5; // 87 Device ID 5
UINT32 AKsv0; // 91:94 First four bytes of AKSV (manufacturing mode)
UINT8 AKsv1; // 95 Fifth byte of AKSV (manufacturing mode
UINT8 Reserved6[7]; // 96:102
//
// Backlight Control Values
//
UINT8 BacklightControlSupport; // 103 Backlight Control Support
UINT8 BrightnessPercentage; // 104 Brightness Level Percentage
//
// Ambient Light Sensor Values
//
UINT8 AlsEnable; // 105 Ambient Light Sensor Enable
UINT8 AlsAdjustmentFactor; // 106 Ambient Light Adjusment Factor
UINT8 LuxLowValue; // 107 LUX Low Value
UINT8 LuxHighValue; // 108 LUX High Value
UINT8 Reserved7[1]; // 109
//
// Extended Mobile Access Values
//
UINT8 EmaEnable; // 110 EMA Enable
UINT16 EmaPointer; // 111 EMA Pointer
UINT16 EmaLength; // 113 EMA Length
UINT8 Reserved8[1]; // 115
//
// Mobile East Fork Values
//
UINT8 MefEnable; // 116 Mobile East Fork Enable
//
// PCIe Dock Status
//
UINT8 PcieDockStatus; // 117 PCIe Dock Status
UINT8 Reserved9[2]; // 118:119
//
// TPM Registers
//
UINT8 TpmPresent; // 120 TPM Present
UINT8 TpmEnable; // 121 TPM Enable
UINT8 MorData; // 122 Memory Overwrite Request Data
UINT8 TcgParamter; // 123 Used for save the Mor and/or physical presence parameter
UINT32 PPResponse; // 124 Physical Presence request operation response
UINT8 PPRequest; // 128 Physical Presence request operation
UINT8 LastPPRequest; // 129 Last Physical Presence request operation
//
// SATA Values
//
UINT8 GtfTaskFileBufferPort0[7]; // 130 GTF Task File Buffer for Port 0
UINT8 GtfTaskFileBufferPort2[7]; // 137 GTF Task File Buffer for Port 2
UINT8 IdeMode; // 144 IDE Mode (Compatible\Enhanced)
UINT8 GtfTaskFileBufferPort1[7]; // 145:151 GTF Task File Buffer for Port 1
UINT8 Reserved111[10]; // 152:161
UINT64 BootTimeLogAddress; // 162:169 Boot Time Log Table Address
UINT32 IgdOpRegionAddress; // 170 IGD OpRegion Starting Address
UINT8 IgdBootType; // 174 IGD Boot Type CMOS option
UINT8 IgdPanelType; // 175 IGD Panel Type CMOs option
UINT8 IgdTvFormat; // 176 IGD TV Format CMOS option
UINT8 IgdTvMinor; // 177 IGD TV Minor Format CMOS option
UINT8 IgdPanelScaling; // 178 IGD Panel Scaling
UINT8 IgdBlcConfig; // 179 IGD BLC Configuration
UINT8 IgdBiaConfig; // 180 IGD BIA Configuration
UINT8 IgdSscConfig; // 181 IGD SSC Configuration
UINT8 Igd409; // 182 IGD 0409 Modified Settings Flag
UINT8 Igd509; // 183 IGD 0509 Modified Settings Flag
UINT8 Igd609; // 184 IGD 0609 Modified Settings Flag
UINT8 Igd709; // 185 IGD 0709 Modified Settings Flag
UINT8 IgdPowerConservation; // 186 IGD Power Conservation Feature Flag
UINT8 IgdDvmtMemSize; // 187 IGD DVMT Memory Size
UINT8 IgdFunc1Enable; // 188 IGD Function 1 Enable
UINT8 IgdHpllVco; // 189 HPLL VCO
UINT32 NextStateDid1; // 190 Next state DID1 for _DGS
UINT32 NextStateDid2; // 194 Next state DID2 for _DGS
UINT32 NextStateDid3; // 198 Next state DID3 for _DGS
UINT32 NextStateDid4; // 202 Next state DID4 for _DGS
UINT32 NextStateDid5; // 206 Next state DID5 for _DGS
UINT32 NextStateDid6; // 210 Next state DID6 for _DGS
UINT32 NextStateDid7; // 214 Next state DID7 for _DGS
UINT32 NextStateDid8; // 218 Next state DID8 for _DGS
UINT8 IgdSciSmiMode; // 222 GMCH SMI/SCI mode (0=SCI)
UINT8 IgdPAVP; // 223 IGD PAVP data
UINT8 IgdSelfRefresh; // 224 IGD Self Refresh
UINT8 PcieOSCControl; // 225 PCIE OSC Control
UINT8 NativePCIESupport; // 226 Native PCI Express Support
//
// USB Sideband Deferring Support
//
UINT8 HostAlertVector; // 227 GPE vector used for HOST_ALERT
UINT8 HostAlertPio; // 228 PIO of USB device used for HOST_ALERT
UINT8 Reserved112[27]; // 229
UINT32 NvIgOpRegionAddress; // 256 NVIG support
UINT32 NvHmOpRegionAddress; // 260 NVHM support
UINT32 ApXmOpRegionAddress; // 264 AMDA support
UINT32 DeviceId6; // 268 Device ID 6
UINT32 DeviceId7; // 272 Device ID 7
UINT32 DeviceId8; // 276 Device ID 8
UINT32 EndpointBaseAddress; // 280 PEG Endpoint PCIe Base Address
UINT32 CapStrPresence; // 284 PEG Endpoint Capability Structure Presence
UINT32 EndpointPcieCapBaseAddress; // 288 PEG Endpoint PCIe Capability Structure Base Address
UINT32 EndpointVcCapBaseAddress; // 292 PEG Endpoint Virtual Channel Capability Structure Base Address
UINT32 XPcieCfgBaseAddress; // 296 Any Device's PCIe Config Space Base Address
UINT32 OccupiedBuses1; // 300 Occupied Buses from 0 to 31
UINT32 OccupiedBuses2; // 304 Occupied Buses from 32 to 63
UINT32 OccupiedBuses3; // 308 Occupied Buses from 64 to 95
UINT32 OccupiedBuses4; // 312 Occupied Buses from 96 to 127
UINT32 OccupiedBuses5; // 316 Occupied Buses from 128 to 159
UINT32 OccupiedBuses6; // 320 Occupied Buses from 160 to 191
UINT32 OccupiedBuses7; // 324 Occupied Buses from 192 to 223
UINT32 OccupiedBuses8; // 328 Occupied Buses from 224 to 255
UINT8 UartSelection; // 332 UART Interface Selection 0: Internal; 1: SIO
UINT8 PcuUart1Enable; // 333 PCU UART 1 Enabled
UINT8 PcuUart2Enable; // 334 PCU UART 2 Enabled
UINT32 LPEBar0; // 335~338 LPE Bar0
UINT32 LPEBar1; // 339~342 LPE Bar1
UINT32 LPEBar2; // 343~346 LPE Bar2
UINT8 AcSetup; // 347 For Ac Powered Config option - IST applet
UINT8 BatterySetup; // 348 For Battery Powered Config option - IST applet
UINT8 PlatformFlavor; // 349 0:unknown 1: Mobile; 2: desktop
UINT8 Reserved113[1]; // 350
UINT8 IsctReserve; // 351 ISCT / AOAC Configuration
UINT8 XhciMode; // 352 xHCI mode
UINT8 PmicEnable; // 353 PMIC enable
UINT8 LpeEnable; // 354 LPE enable
UINT32 ISPAddr; // 355 ISP Base address
UINT8 ISPDevSel; // 359 ISP device enabled selection 0: Disabled; 1: PCI Device 2; 2: PCI Device 3
//
// Lpss controllers
//
UINT32 PCIBottomAddress; //360 ((4+8+6)*4+2)*4=296
UINT32 PCITopAddress; //364
UINT32 LDMA1Addr; // 368
UINT32 LDMA1Len; // 372
UINT32 LDMA11Addr; // 376
UINT32 LDMA11Len; // 380
UINT32 PWM1Addr; // 384 PWM1
UINT32 PWM1Len; // 388
UINT32 PWM11Addr; // 392
UINT32 PWM11Len; // 396
UINT32 PWM2Addr; // 400 PWM2
UINT32 PWM2Len; // 404
UINT32 PWM21Addr; // 408
UINT32 PWM21Len; // 412
UINT32 UART1Addr; // 416 UART1
UINT32 UART1Len; // 420
UINT32 UART11Addr; // 424 UART1
UINT32 UART11Len; // 428
UINT32 UART2Addr; // 432 UART2
UINT32 UART2Len; // 436
UINT32 UART21Addr; // 440 UART2
UINT32 UART21Len; // 444
UINT32 SPIAddr; // 448 SPI
UINT32 SPILen; // 452
UINT32 SPI1Addr; // 456
UINT32 SPI1Len; // 460
UINT32 LDMA2Addr; // 464
UINT32 LDMA2Len; // 468
UINT32 LDMA21Addr; // 472
UINT32 LDMA21Len; // 476
UINT32 I2C1Addr; // 480 I2C1
UINT32 I2C1Len; // 484
UINT32 I2C11Addr; // 488 I2C1
UINT32 I2C11Len; // 492
UINT32 I2C2Addr; // 496 I2C2
UINT32 I2C2Len; // 500
UINT32 I2C21Addr; // 504 I2C2
UINT32 I2C21Len; // 508
UINT32 I2C3Addr; // 512 I2C3
UINT32 I2C3Len; // 516
UINT32 I2C31Addr; // 520 I2C3
UINT32 I2C31Len; // 524
UINT32 I2C4Addr; // 528 I2C4
UINT32 I2C4Len; // 532
UINT32 I2C41Addr; // 536 I2C4
UINT32 I2C41Len; // 540
UINT32 I2C5Addr; // 544 I2C5
UINT32 I2C5Len; // 548
UINT32 I2C51Addr; // 552 I2C5
UINT32 I2C51Len; // 556
UINT32 I2C6Addr; // 560 I2C6
UINT32 I2C6Len; // 564
UINT32 I2C61Addr; // 566 I2C6
UINT32 I2C61Len; // 570
UINT32 I2C7Addr; // 574 I2C7
UINT32 I2C7Len; // 578
UINT32 I2C71Addr; // 582 I2C7
UINT32 I2C71Len; // 586
//
// Scc controllers
//
UINT32 eMMCAddr; // 590 EMMC
UINT32 eMMCLen; // 594
UINT32 eMMC1Addr; // 598
UINT32 eMMC1Len; // 602
UINT32 SDIOAddr; // 606 SDIO
UINT32 SDIOLen; // 610
UINT32 SDIO1Addr; // 614
UINT32 SDIO1Len; // 618
UINT32 SDCardAddr; // 622 SDCard
UINT32 SDCardLen; // 626
UINT32 SDCard1Addr; // 630
UINT32 SDCard1Len; // 636
UINT32 MipiHsiAddr; // 640 MIPI-HSI
UINT32 MipiHsiLen; // 644
UINT32 MipiHsi1Addr; // 648
UINT32 MipiHsi1Len; // 652
UINT8 SdCardRemovable; // 656 reserve offset upto 658
UINT8 HideLPSSDevices; // 657 Hide unsupported LPSS devices when in ACPI mode
UINT8 ReservedO; // 658 OS Selection
UINT8 Reserved00; // 659
UINT8 Reserved01; // 660
UINT8 Reserved02; // 661
UINT8 Reserved03; // 662
UINT8 Reserved04; // 663
UINT8 Reserved05; // 664
UINT8 Reserved06; // 665
UINT8 Reserved07; // 666
UINT8 Reserved08; // 667
UINT8 Reserved09; // 668
UINT8 Reserved0A; // 669
UINT32 Reserved0B; // 670
UINT32 Reserved0C; // 674
UINT32 Reserved0D; // 678
UINT32 Reserved0E; // 682
UINT32 Reserved0F; // 686
UINT32 Reserved10; // 690
UINT32 Reserved11; // 694
UINT32 Reserved12; // 698
UINT32 Reserved13; // 702
UINT32 Reserved14; // 706
UINT32 Reserved15; // 710
UINT32 Reserved16; // 714
UINT8 Reserved17;
UINT32 Reserved18;
UINT32 Reserved19;
UINT32 Reserved1A;
UINT32 Reserved1B;
UINT32 Reserved1C;
UINT8 Reserved1D;
UINT32 Reserved1E;
UINT32 Reserved1F;
UINT32 Reserved20;
UINT32 Reserved21;
UINT32 Reserved22;
UINT8 Reserved23;
UINT8 BatteryChargingSolution; // 761 0-non ULPMC 1-ULPMC
//
//101 bytes
//
UINT8 NFCnSelect; // 762 NFCx Select 1: NFC1 2:NFC2
UINT8 LpssSccMode; // 763 EMMC device 0-ACPI mode, 1-PCI mode
UINT32 TPMAddress; // 764
UINT32 TPMLength; // 768
UINT8 I2CTouchAddress; // 772 I2C touch address, 0x4B:RVP 0x4A:FFRD
UINT8 IdleReserve; // 773 0 - disabled 1 - enabled
UINT8 SDIOMode; // 774 3 - Default 2 - DDR50
UINT8 emmcVersion; // 775 0 - 4.41 1 - 4.5
UINT32 BmBound; // 776 BM Bound
UINT8 FsaStatus; // 780 0 - Fsa is off, 1- Fsa is on
//
// Board Id
// This field is for the ASL code to know whether this board is Baylake or Bayley Bay etc
//
UINT8 BoardID; // 781
UINT8 FabID; // 782
UINT8 OtgMode; // 783 0- OTG disable 1- OTG PCI mode
UINT8 Stepping; // 784 Stepping
UINT8 WittEnable; // 785 WITT eanble 0 - disable 1 - enable
UINT8 SocStepping; // 786 Soc Stepping infomation
UINT8 AmbientTripPointChange; // 787 DPTF: Controls whether _ATI changes other participant's trip point(enabled/disabled)
UINT8 UtsEnable; // 788 Uart Test eanble 0 - disable 1 - enable
UINT8 DptfReserve; // 789
UINT8 SarEnable; // 790
UINT8 PssDeveice; // 791 PSS Deveice: 0 - None, 1 - Monzax 2K, 2 - Monzax 8K
UINT8 EDPV; // 792 Check for eDP display device
UINT32 DIDX; // 793 Device ID for eDP device
UINT8 MicrosoftIoT; // (794)JP1 pins are for Microsoft IoT project.
UINT8 RtcBattery; // (795) The Flag of RTC Battery Present.
UINT8 LpeAudioReportedByDSDT; // (796)
} EFI_GLOBAL_NVS_AREA;
#pragma pack ()
//
// Global NVS Area Protocol
//
typedef struct _EFI_GLOBAL_NVS_AREA_PROTOCOL {
EFI_GLOBAL_NVS_AREA *Area;
} EFI_GLOBAL_NVS_AREA_PROTOCOL;
#endif