alder_lake_bios/Intel/AlderLake/AlderLakeChipsetPkg/IhisiSmm/BiosGCI.h

228 lines
6.5 KiB
C

/** @file
This driver provides some definitions for Smart Tool
;******************************************************************************
;* Copyright (c) 2014, Insyde Software Corp. All Rights Reserved.
;*
;* You may not reproduce, distribute, publish, display, perform, modify, adapt,
;* transmit, broadcast, present, recite, release, license or otherwise exploit
;* any part of this publication in any form, by any means, without the prior
;* written permission of Insyde Software Corporation.
;*
;******************************************************************************
*/
#ifndef _IHISI_BIOSGCI_H_
#define _IHISI_BIOSGCI_H_
//
// The following codes are the sample. Please customize here.
// The default codes are some dummy function prototypes.
//
#if 0
#include "IhisiSmm.h"
#include <ChipsetSetupConfig.h>
#include <Protocol/SmmFwBlockService.h>
#include <Protocol/SmmVariable.h>
#define BIOSGCI_FUNCTIONS \
{ 0x60, DataAccessCommunication }, \
{ 0x61, DataRead }, \
{ 0x62, DataWrite }
#define DATA_ACCESS_COMM_GUID_FOR_IDENTIFICATION {0x582E8DF2, 0x07B1, 0x40E0, 0xAA, 0x37, 0x43, 0x2C, 0xB3, 0xAC, 0xDD, 0xCB}
//
// 0x00000000-0xDFFFFFFF, 0xF0000000-0xFFFFFFFF: reserved for user defined
//
#define DATA_ACCSEE_COMM_NUM_CREATE_UEFI_VARIABLE 0x00000000
#define DATA_ACCSEE_COMM_NUM_ERASE_UEFI_VARIABLE 0x00000001
#define DATA_ACCSEE_COMM_NUM_QUERY_DATA_FROM_UEFI_VARIABLE 0x00000002
#define DATA_ACCSEE_COMM_NUM_READ_UEFI_VARIABLE_DATA 0x00000003
#define DATA_ACCSEE_COMM_NUM_WRITE_UEFI_VARIABLE_DATA 0x00000004
//
// 0xE0000000-0xEFFFFFFF: reserved for AP used
//
#define DATA_ACCSEE_COMM_NUM_START_EVENT 0xE0000000
#define DATA_ACCSEE_COMM_NUM_FINISH_EVENT 0xE0000001
#define DATA_ACCSEE_COMM_NUM_START_EVENT_WINDOWS 0x00
#define DATA_ACCSEE_COMM_NUM_START_EVENT_DOS 0x01
#define DATA_ACCSEE_COMM_NUM_START_EVENT_EFI 0x02
#define DATA_ACCSEE_COMM_NUM_ERROR_RETURN_STATUS_PASS 0
#define DATA_ACCSEE_COMM_NUM_ERROR_RETURN_STATUS_FAIL 1
#define UEFI_VARIABLE_GUID {0xFBCCF333, 0x78C8, 0x4C8D, 0x85, 0x26, 0x3C, 0xE3, 0xF0, 0x49, 0xFE, 0xB7}
#define TEST_GUID1 {0x174fd905, 0x7298, 0x4eb6, 0x80, 0x96, 0xb7, 0xa9, 0xd6, 0x97, 0xd2, 0x49}
#define TEST_GUID2 {0x8eed5985, 0x9bf3, 0x42a5, 0x8d, 0x30, 0xb4, 0xe6, 0x45, 0x4c, 0xeb, 0xd9}
#define TEST_GUID3 {0xc3d83e9c, 0x7f67, 0x41d3, 0x8e, 0xce, 0x9c, 0x94, 0xb0, 0x7f, 0x39, 0x6f}
#define TEST_GUID4 {0x3cb09da9, 0x7b8b, 0x4f83, 0xb8, 0x94, 0x7b, 0x7a, 0x4a, 0x85, 0x76, 0xae}
#define UEFI_VARIABLE_SIZE 0x100 //256bytes
#define UEFI_VARIABLE_OFFSET 0x20 //32bytes
#pragma pack(1)
//
// Related definitions for AH=60h, Data Access Communication
//
typedef struct {
UINT32 Size;
EFI_GUID GuidForIdentification;
UINT32 CommandNumber;
UINT32 DataSize;
} DATA_ACCESS_COMMUNICATION_INPUT;
typedef struct {
UINT64 ReservedForUserDef : 32; // Reserved for user definition via tool generator.
UINT64 ReservedForTool : 29; // Reserved for tool generator use only.
UINT64 DataSizeNotAccept : 1; // 1 - The data size is not accepted .
UINT64 CommandNotSupport : 1; // 1 - The command number is not supported.
UINT64 GuidNotMatch : 1; // 1 - GUID is not matched.
} DATA_ACCESS_COMM_STATUS_RETURN_GENERAL;
typedef struct {
UINT64 CreateVariableResult : 1; // 0 - Create UEFI variable successfully.
// 1 - Create UEFI variable unsuccessfully.
UINT64 Reserved : 63;
} DATA_ACCESS_COMM_STATUS_RETURN_CREATE_UEFI_VARIABLE;
typedef struct {
UINT64 EraseVariableResult : 1; // 0 - Erase UEFI variable successfully.
// 1 - Erase UEFI variable unsuccessfully.
UINT64 Reserved : 63;
} DATA_ACCESS_COMM_STATUS_RETURN_ERASE_UEFI_VARIABLE;
typedef struct {
UINT64 QueryVariableResult : 1; // 0 - Query UEFI variable exist.
// 1 - Query UEFI variable doesn't exist.
UINT64 Reserved : 63;
} DATA_ACCESS_COMM_STATUS_RETURN_QUERY_UEFI_VARIABLE_STATUS;
typedef union {
DATA_ACCESS_COMM_STATUS_RETURN_GENERAL General;
DATA_ACCESS_COMM_STATUS_RETURN_CREATE_UEFI_VARIABLE CreateUefiVariable;
DATA_ACCESS_COMM_STATUS_RETURN_ERASE_UEFI_VARIABLE EraseUefiVariable;
DATA_ACCESS_COMM_STATUS_RETURN_QUERY_UEFI_VARIABLE_STATUS QueryUefiVariableStatus;
UINT64 ErrorStatus;
} DATA_ACCESS_COMM_STATUS_RETURN;
typedef struct {
UINT32 Size;
EFI_GUID GuidForIdentification;
UINT32 CommandNumber;
UINT32 DataSize;
DATA_ACCESS_COMM_STATUS_RETURN StatusReturn;
} DATA_ACCESS_COMMUNICATION_OUTPUT;
//
// Related definitions for AH=61h/62h, Data Read/Data Write
//
typedef struct {
UINT32 Size;
UINT32 DataSize;
UINT32 DataOffset;
} DATA_INPUT;
typedef struct {
UINT32 Size;
UINT32 DataSize;
UINT32 DataOffset;
} DATA_OUTPUT;
#pragma pack()
//
// AH=60h, Get OEM1 information
//
EFI_STATUS
DataAccessCommunication (
VOID
);
//
// AH=61h, OEM Extra Data Communication
//
EFI_STATUS
DataRead (
VOID
);
//
// AH=62h, OEM Extra Data Write
//
EFI_STATUS
DataWrite (
VOID
);
EFI_STATUS
BiosGCIInit (
VOID
);
EFI_STATUS
Ihisi60hForCreateUefiVariable (
IN OUT UINT32 *IhisiStatus
);
EFI_STATUS
Ihisi60hForEraseUefiVariable (
IN OUT UINT32 *IhisiStatus
);
EFI_STATUS
Ihisi60hForQueryUefiVariableStatus (
IN OUT UINT32 *IhisiStatus
);
EFI_STATUS
Ihisi60hForStartEvent (
IN OUT UINT32 *IhisiStatus,
IN UINT8 StartType
);
EFI_STATUS
Ihisi60hForFinishEvent (
IN OUT UINT32 *IhisiStatus
);
#else
#define BIOSGCI_FUNCTIONS
//
// AH=60h, Get OEM1 information
//
EFI_STATUS
DataAccessCommunication (
VOID
);
//
// AH=61h, OEM Extra Data Communication
//
EFI_STATUS
DataRead (
VOID
);
//
// AH=62h, OEM Extra Data Write
//
EFI_STATUS
DataWrite (
VOID
);
EFI_STATUS
BiosGCIInit (
VOID
);
#endif
#endif