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