alder_lake_bios/Insyde/InsydeModulePkg/Include/Protocol/DxeSmmIoLibProtocol.h

87 lines
2.3 KiB
C

/** @file
A COMBINE_SMM driver for an abstract interface of IO library.
;******************************************************************************
;* Copyright (c) 2020, 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 _H2O_DXE_SMM_IO_LIB_PROTOCOL_H_
#define _H2O_DXE_SMM_IO_LIB_PROTOCOL_H_
#define H2O_DXE_SMM_IO_LIB_PROTOCOL_GUID \
{ \
0xa01376f8, 0x1929, 0x4f7d, 0x87, 0x27, 0x8c, 0xa7, 0x6f, 0xca, 0x1c, 0xb9 \
}
typedef struct _H2O_DXE_SMM_IO_LIB_PROTOCOL H2O_DXE_SMM_IO_LIB_PROTOCOL;
typedef
UINT64
(EFIAPI *H2O_DXE_SMM_IO_READ) (
IN UINTN Port,
IN UINTN Size
);
typedef
UINT64
(EFIAPI *H2O_DXE_SMM_IO_WRITE) (
IN UINTN Port,
IN UINTN Size,
IN UINTN InputData
);
typedef
UINT64
(EFIAPI *H2O_DXE_SMM_MMIO_READ) (
IN UINTN Address,
IN UINTN Size
);
typedef
UINT64
(EFIAPI *H2O_DXE_SMM_MMIO_WRITE) (
IN UINTN Address,
IN UINTN Size,
IN UINT64 Value
);
typedef
VOID
(EFIAPI *H2O_DXE_SMM_IO_READ_FIFO) (
IN UINTN Port,
IN UINTN Size,
IN UINTN Count,
OUT VOID *Buffer
);
typedef
VOID
(EFIAPI *H2O_DXE_SMM_IO_WRITE_FIFO) (
IN UINTN Port,
IN UINTN Size,
IN UINTN Count,
IN VOID *Buffer
);
struct _H2O_DXE_SMM_IO_LIB_PROTOCOL {
H2O_DXE_SMM_IO_READ IoRead;
H2O_DXE_SMM_IO_WRITE IoWrite;
H2O_DXE_SMM_MMIO_READ MmioRead;
H2O_DXE_SMM_MMIO_WRITE MmioWrite;
H2O_DXE_SMM_IO_READ_FIFO IoReadFifo;
H2O_DXE_SMM_IO_WRITE_FIFO IoWriteFifo;
};
extern EFI_GUID gH2ODxeSmmIoLibProtocolGuid;
#endif