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
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
|
//*************************************************************************
//*************************************************************************
//** **
//** (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/PIDEController.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/PIDEController.h $
//
// 1 2/08/12 8:26a Yurenlai
// Intel Lynx Point/SB eChipset initially releases.
//
//*************************************************************************
//<AMI_FHDR_START>
//
// Name: PIDEController.h
//
// Description: The header file for the south bridge ATA controller(s).
//
//<AMI_FHDR_END>
//*************************************************************************
#ifndef _PIDEController_
#define _PIDEController_
#ifdef __cplusplus
extern "C" {
#endif
#define IDE_CONTROLLER_PROTOCOL_GUID \
{0x20E28787, 0xDF32, 0x4BDA, 0xB7, 0xE7, 0xCB, 0xBD, 0xA3, 0x37, 0x1E, 0xF8}
#define SATA_CONTROLLER_PROTOCOL_GUID \
{0x2acb6627, 0xdf02, 0x4e23, 0xb4, 0xf9, 0x6a, 0x93, 0xfa, 0x6e, 0x9d, 0xa6}
// Forward reference for pure ANSI compatability
typedef struct _IDE_CONTROLLER_PROTOCOL IDE_CONTROLLER_PROTOCOL;
typedef struct _IDENTIFY_DATA IDENTIFY_DATA;
typedef struct _IDE_DEVICE_INTERFACE IDE_DEVICE_INTERFACE;
typedef struct _IDE_BUS_PROTOCOL IDE_BUS_PROTOCOL;
#pragma pack(1)
typedef struct {
UINT8 Register;
UINT8 And_Mask;
UINT8 Or_Mask;
} IDE_CONTROLLER_INIT_DATA;
// Equates used for Flag
#define Acoustic_Support_Enable 0x01
#define S3_RESUME_UNLOCK_HDD_PASSWORD 0x02 // Set bit 1 in Flags only
// if HDD loses power in S3
// state.
typedef struct {
UINT8 PrimaryChannel;
UINT8 PrimaryMasterDevice;
UINT8 PrimarySlaveDevice;
UINT8 SecondaryChannel;
UINT8 SecondaryMasterDevice;
UINT8 SecondarySlaveDevice;
UINT8 BusMasterEnable;
UINT8 HPMask;
UINT8 Flags;
UINT8 Acoustic_Management_Level;
} CONTROLLER_INFO;
typedef EFI_STATUS (*EFI_IDE_CONTROLLER_SET_PIO_TIMING) (
IDE_DEVICE_INTERFACE *IdeDevice
);
typedef EFI_STATUS (*EFI_IDE_CONTROLLER_SET_DMA_TIMING) (
IDE_DEVICE_INTERFACE *IdeDevice
);
typedef EFI_STATUS (*EFI_IDE_CONTROLLER_GET_MODE) (
IDE_DEVICE_INTERFACE *IdeDevice
);
typedef EFI_STATUS (*EFI_IDE_CONTROLLER_GET_CONTROLLER_INFO) (
IN EFI_HANDLE Controller,
IN OUT CONTROLLER_INFO *ControllerInfo
);
typedef EFI_STATUS (*EFI_IDE_HP_DEVICE_CHANGE) (
EFI_PCI_IO_PROTOCOL *PciIO,
UINT8 HPMask,
UINT8 *CurrentStatus
);
typedef EFI_STATUS (*EFI_IDE_DISABLE_ENABLE_CHANNEL) (
EFI_PCI_IO_PROTOCOL *PciIO,
UINT8 Channel,
UINT8 Device,
BOOLEAN DisableEnable
);
typedef struct _IDE_CONTROLLER_PROTOCOL {
UINT8 Max_Channel;
EFI_PCI_IO_PROTOCOL *PciIO;
EFI_HANDLE ControllerHandle;
EFI_IDE_CONTROLLER_GET_CONTROLLER_INFO IdeGetControllerInfo;
EFI_IDE_CONTROLLER_SET_PIO_TIMING IdeSetPioMode;
EFI_IDE_CONTROLLER_SET_DMA_TIMING IdeSetDmaMode;
EFI_IDE_CONTROLLER_GET_MODE GetbestPioDmaMode;
EFI_IDE_HP_DEVICE_CHANGE HPCheckForDeviceChange;
EFI_IDE_DISABLE_ENABLE_CHANNEL HPDisableEnableChannel;
CHAR16 * Controllername;
}IDE_CONTROLLER_PROTOCOL;
#pragma pack()
/****** 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 **
//** **
//*************************************************************************
//*************************************************************************
|