summaryrefslogtreecommitdiff
path: root/Include/Protocol/SmmPchIoTrapDispatch2.h
blob: b2c4b7c084787abdc44d1be9c8fd051849ab38a9 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
//*************************************************************************
//*************************************************************************
//**                                                                     **
//**        (C)Copyright 1985-2011, American Megatrends, Inc.            **
//**                                                                     **
//**                       All Rights Reserved.                          **
//**                                                                     **
//**      5555 Oakbrook Parkway, Suite 200, Norcross, GA 30093           **
//**                                                                     **
//**                       Phone: (770)-246-8600                         **
//**                                                                     **
//*************************************************************************
//*************************************************************************

//*************************************************************************
// $Header: /Alaska/BIN/Chipset/Intel/SouthBridge/LynxPoint/Intel Pch SB Chipset/SB Protocols/SmmPchIoTrapDispatch2.h 1     2/08/12 8:26a Yurenlai $
//
// $Revision: 1 $
//
// $Date: 2/08/12 8:26a $
//*************************************************************************
// Revision History
// ----------------
// $Log: /Alaska/BIN/Chipset/Intel/SouthBridge/LynxPoint/Intel Pch SB Chipset/SB Protocols/SmmPchIoTrapDispatch2.h $
// 
// 1     2/08/12 8:26a Yurenlai
// Intel Lynx Point/SB eChipset initially releases.
// 
//*************************************************************************
//<AMI_FHDR_START>
//
// Name:        SmmIoTrap2Dispatch.h
//
// Description: The header file for I/O Trap # 2 SMM Dispatch Protocol.
//
// Note: This GUID & Contexts are followed Platform Initialization 
//       specification 1.2
//
//<AMI_FHDR_END>
//*************************************************************************

#ifndef __SMM_IO_TRAP_DISPATCH2_PROTOCOL_H__
#define __SMM_IO_TRAP_DISPATCH2_PROTOCOL_H__
#ifdef __cplusplus
extern "C" {
#endif
#include <EFI.h>

//#### {58DC368D-7BFA-4E77-ABBC-0E29418DF930}
//#####define EFI_SMM_IO_TRAP_DISPATCH2_PROTOCOL_GUID \
//####  {0x58dc368d, 0x7bfa, 0x4e77, 0xab, 0xbc, 0x0e, 0x29, 0x41, 0x8d, 0xf9, 0x30}
// For avoid conflicting with Intel RC's "EFI_SMM_IO_TRAP_DISPATCH_PROTOCOL_GUID",
// therefore AMI modifies the IO trap #2 GUID.
#define EFI_SMM_IO_TRAP_DISPATCH2_PROTOCOL_GUID \
  {0xf1507845, 0x6494, 0x4377, 0xa1, 0x15, 0x45, 0xdf, 0xe6, 0x5f, 0x5d, 0x71}

GUID_VARIABLE_DECLARATION( gEfiSmmIoTrapDispatch2ProtocolGuid, \
                                    EFI_SMM_IO_TRAP_DISPATCH2_PROTOCOL_GUID );

// I/O Trap valid types

typedef enum {
    WriteTrap = 0,
    ReadTrap,
    ReadWriteTrap,
    IoTrapTypeMaximum
} EFI_SMM_IO_TRAP_DISPATCH_TYPE;

// I/O Trap #2 context structure containing information about the I/O Trap
// event that should invoke the handler

typedef struct {
    UINT16                        Address;
    UINT16                        Length;
    EFI_SMM_IO_TRAP_DISPATCH_TYPE  Type;
} EFI_SMM_IO_TRAP_REGISTER_CONTEXT;

// I/O Trap #2 context structure containing information about the I/O Trap
// that occurred.

typedef struct {
    UINT32                        WriteData;
} EFI_SMM_IO_TRAP_CONTEXT;

typedef struct _EFI_SMM_IO_TRAP_DISPATCH2_PROTOCOL \
                                           EFI_SMM_IO_TRAP_DISPATCH2_PROTOCOL;

//******************************************************
// EFI_SMM_IO_TRAP_DISPATCH2
//******************************************************
typedef VOID (EFIAPI *EFI_SMM_IO_TRAP_DISPATCH2) (
    IN EFI_HANDLE                           DispatchHandle,
    IN EFI_SMM_IO_TRAP_CONTEXT              *Context
);


typedef EFI_STATUS (EFIAPI *EFI_SMM_IO_TRAP_DISPATCH2_REGISTER) (
    IN EFI_SMM_IO_TRAP_DISPATCH2_PROTOCOL   *This,
    IN EFI_SMM_IO_TRAP_DISPATCH2            DispatchFunction,
    IN OUT EFI_SMM_IO_TRAP_REGISTER_CONTEXT *DispatchContext,
    OUT EFI_HANDLE                          *DispatchHandle
);

typedef EFI_STATUS (EFIAPI *EFI_SMM_IO_TRAP_DISPATCH2_UNREGISTER) (
    IN EFI_SMM_IO_TRAP_DISPATCH2_PROTOCOL   *This,
    IN EFI_HANDLE                           DispatchHandle
);


struct _EFI_SMM_IO_TRAP_DISPATCH2_PROTOCOL {
    EFI_SMM_IO_TRAP_DISPATCH2_REGISTER      Register;
    EFI_SMM_IO_TRAP_DISPATCH2_UNREGISTER    UnRegister;
};


/****** DO NOT WRITE BELOW THIS LINE *******/
#ifdef __cplusplus
}
#endif
#endif

//*************************************************************************
//*************************************************************************
//**                                                                     **
//**        (C)Copyright 1985-2011, American Megatrends, Inc.            **
//**                                                                     **
//**                       All Rights Reserved.                          **
//**                                                                     **
//**      5555 Oakbrook Parkway, Suite 200, Norcross, GA 30093           **
//**                                                                     **
//**                       Phone: (770)-246-8600                         **
//**                                                                     **
//*************************************************************************
//*************************************************************************