]> git.proxmox.com Git - mirror_edk2.git/blob - IntelFrameworkModulePkg/Bus/Isa/Ps2MouseDxe/Ps2Mouse.h
3d9173553fb034ff37bd45bceb0320b558d108ca
[mirror_edk2.git] / IntelFrameworkModulePkg / Bus / Isa / Ps2MouseDxe / Ps2Mouse.h
1 /*++
2
3 Copyright (c) 2006 - 2007, Intel Corporation
4 All rights reserved. This program and the accompanying materials
5 are licensed and made available under the terms and conditions of the BSD License
6 which accompanies this distribution. The full text of the license may be found at
7 http://opensource.org/licenses/bsd-license.php
8
9 THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,
10 WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.
11
12 Module Name:
13
14 Ps2Mouse.h
15
16 Abstract:
17
18 PS/2 Mouse driver header file
19
20 Revision History
21
22 --*/
23
24 #ifndef _PS2MOUSE_H
25 #define _PS2MOUSE_H
26
27 #include <PiDxe.h>
28 #include <Framework/StatusCode.h>
29
30 #include <Protocol/SimplePointer.h>
31 #include <Protocol/IsaIo.h>
32 #include <Protocol/DevicePath.h>
33
34 #include <Library/DebugLib.h>
35 #include <Library/UefiDriverEntryPoint.h>
36 #include <Library/UefiLib.h>
37 #include <Library/BaseMemoryLib.h>
38 #include <Library/MemoryAllocationLib.h>
39 #include <Library/UefiBootServicesTableLib.h>
40 #include <Library/ReportStatusCodeLib.h>
41
42 //
43 // PS/2 mouse sample rate
44 //
45 typedef enum {
46 SSR_10,
47 SSR_20,
48 SSR_40,
49 SSR_60,
50 SSR_80,
51 SSR_100,
52 SSR_200,
53 MAX_SR
54 } MOUSE_SR;
55
56 //
57 // PS/2 mouse resolution
58 //
59 typedef enum {
60 CMR1,
61 CMR2,
62 CMR4,
63 CMR8,
64 MAX_CMR
65 } MOUSE_RE;
66
67 //
68 // PS/2 mouse scaling
69 //
70 typedef enum {
71 SF1,
72 SF2
73 } MOUSE_SF;
74
75 //
76 // Driver Private Data
77 //
78 #define PS2_MOUSE_DEV_SIGNATURE EFI_SIGNATURE_32 ('p', 's', '2', 'm')
79
80 typedef struct {
81 UINTN Signature;
82
83 EFI_HANDLE Handle;
84 EFI_SIMPLE_POINTER_PROTOCOL SimplePointerProtocol;
85 EFI_SIMPLE_POINTER_STATE State;
86 EFI_SIMPLE_POINTER_MODE Mode;
87 BOOLEAN StateChanged;
88
89 //
90 // PS2 Mouse device specific information
91 //
92 MOUSE_SR SampleRate;
93 MOUSE_RE Resolution;
94 MOUSE_SF Scaling;
95 UINT8 DataPackageSize;
96
97 EFI_ISA_IO_PROTOCOL *IsaIo;
98
99 EFI_EVENT TimerEvent;
100
101 EFI_UNICODE_STRING_TABLE *ControllerNameTable;
102 EFI_DEVICE_PATH_PROTOCOL *DevicePath;
103 } PS2_MOUSE_DEV;
104
105 #define PS2_MOUSE_DEV_FROM_THIS(a) CR (a, PS2_MOUSE_DEV, SimplePointerProtocol, PS2_MOUSE_DEV_SIGNATURE)
106
107 //
108 // Global Variables
109 //
110 extern EFI_DRIVER_BINDING_PROTOCOL gPS2MouseDriver;
111 extern EFI_COMPONENT_NAME_PROTOCOL gPs2MouseComponentName;
112
113 //
114 // Function prototypes
115 //
116 EFI_STATUS
117 EFIAPI
118 PS2MouseDriverSupported (
119 IN EFI_DRIVER_BINDING_PROTOCOL *This,
120 IN EFI_HANDLE Controller,
121 IN EFI_DEVICE_PATH_PROTOCOL *RemainingDevicePath
122 );
123
124 EFI_STATUS
125 EFIAPI
126 PS2MouseDriverStart (
127 IN EFI_DRIVER_BINDING_PROTOCOL *This,
128 IN EFI_HANDLE Controller,
129 IN EFI_DEVICE_PATH_PROTOCOL *RemainingDevicePath
130 );
131
132 EFI_STATUS
133 EFIAPI
134 PS2MouseDriverStop (
135 IN EFI_DRIVER_BINDING_PROTOCOL *This,
136 IN EFI_HANDLE Controller,
137 IN UINTN NumberOfChildren,
138 IN EFI_HANDLE *ChildHandleBuffer
139 );
140
141 //
142 // EFI Component Name Functions
143 //
144 EFI_STATUS
145 EFIAPI
146 Ps2MouseComponentNameGetDriverName (
147 IN EFI_COMPONENT_NAME_PROTOCOL *This,
148 IN CHAR8 *Language,
149 OUT CHAR16 **DriverName
150 );
151
152 EFI_STATUS
153 EFIAPI
154 Ps2MouseComponentNameGetControllerName (
155 IN EFI_COMPONENT_NAME_PROTOCOL *This,
156 IN EFI_HANDLE ControllerHandle,
157 IN EFI_HANDLE ChildHandle OPTIONAL,
158 IN CHAR8 *Language,
159 OUT CHAR16 **ControllerName
160 );
161
162 EFI_STATUS
163 EFIAPI
164 MouseReset (
165 IN EFI_SIMPLE_POINTER_PROTOCOL *This,
166 IN BOOLEAN ExtendedVerification
167 );
168
169 EFI_STATUS
170 EFIAPI
171 MouseGetState (
172 IN EFI_SIMPLE_POINTER_PROTOCOL *This,
173 IN OUT EFI_SIMPLE_POINTER_STATE *State
174 );
175
176 VOID
177 EFIAPI
178 MouseWaitForInput (
179 IN EFI_EVENT Event,
180 IN VOID *Context
181 );
182
183 VOID
184 EFIAPI
185 PollMouse (
186 IN EFI_EVENT Event,
187 IN VOID *Context
188 );
189
190 EFI_STATUS
191 In8042Data (
192 IN EFI_ISA_IO_PROTOCOL *IsaIo,
193 IN OUT UINT8 *Data
194 );
195 BOOLEAN
196 CheckMouseConnect (
197 IN PS2_MOUSE_DEV *MouseDev
198 );
199
200 #endif