]> git.proxmox.com Git - mirror_edk2.git/blobdiff - MdeModulePkg/Bus/Isa/Ps2MouseDxe/Ps2Mouse.c
UefiCpuPkg: Move AsmRelocateApLoopStart from Mpfuncs.nasm to AmdSev.nasm
[mirror_edk2.git] / MdeModulePkg / Bus / Isa / Ps2MouseDxe / Ps2Mouse.c
index 91fac556cfa5bb0eddd7c56f04ca0d06fca17f2a..fb61f75e08433ae39eda8051692fae725aff91fb 100644 (file)
@@ -3,13 +3,7 @@
   conforming to EFI driver model.\r
 \r
 Copyright (c) 2006 - 2016, Intel Corporation. All rights reserved.<BR>\r
-This program and the accompanying materials\r
-are licensed and made available under the terms and conditions of the BSD License\r
-which accompanies this distribution.  The full text of the license may be found at\r
-http://opensource.org/licenses/bsd-license.php\r
-\r
-THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,\r
-WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.\r
+SPDX-License-Identifier: BSD-2-Clause-Patent\r
 \r
 **/\r
 \r
@@ -19,7 +13,7 @@ WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.
 ///\r
 /// DriverBinding Protocol Instance\r
 ///\r
-EFI_DRIVER_BINDING_PROTOCOL gPS2MouseDriver = {\r
+EFI_DRIVER_BINDING_PROTOCOL  gPS2MouseDriver = {\r
   PS2MouseDriverSupported,\r
   PS2MouseDriverStart,\r
   PS2MouseDriverStop,\r
@@ -45,15 +39,15 @@ EFI_DRIVER_BINDING_PROTOCOL gPS2MouseDriver = {
 EFI_STATUS\r
 EFIAPI\r
 PS2MouseDriverSupported (\r
-  IN EFI_DRIVER_BINDING_PROTOCOL    *This,\r
-  IN EFI_HANDLE                     Controller,\r
-  IN EFI_DEVICE_PATH_PROTOCOL       *RemainingDevicePath\r
+  IN EFI_DRIVER_BINDING_PROTOCOL  *This,\r
+  IN EFI_HANDLE                   Controller,\r
+  IN EFI_DEVICE_PATH_PROTOCOL     *RemainingDevicePath\r
   )\r
 {\r
-  EFI_STATUS                        Status;\r
-  EFI_SIO_PROTOCOL                  *Sio;\r
-  EFI_DEVICE_PATH_PROTOCOL          *DevicePath;\r
-  ACPI_HID_DEVICE_PATH              *Acpi;\r
+  EFI_STATUS                Status;\r
+  EFI_SIO_PROTOCOL          *Sio;\r
+  EFI_DEVICE_PATH_PROTOCOL  *DevicePath;\r
+  ACPI_HID_DEVICE_PATH      *Acpi;\r
 \r
   //\r
   // Check whether the controller is keyboard.\r
@@ -61,7 +55,7 @@ PS2MouseDriverSupported (
   Status = gBS->OpenProtocol (\r
                   Controller,\r
                   &gEfiDevicePathProtocolGuid,\r
-                  (VOID **) &DevicePath,\r
+                  (VOID **)&DevicePath,\r
                   This->DriverBindingHandle,\r
                   Controller,\r
                   EFI_OPEN_PROTOCOL_GET_PROTOCOL\r
@@ -71,37 +65,38 @@ PS2MouseDriverSupported (
   }\r
 \r
   do {\r
-    Acpi = (ACPI_HID_DEVICE_PATH *) DevicePath;\r
+    Acpi       = (ACPI_HID_DEVICE_PATH *)DevicePath;\r
     DevicePath = NextDevicePathNode (DevicePath);\r
   } while (!IsDevicePathEnd (DevicePath));\r
 \r
-  if (DevicePathType (Acpi) != ACPI_DEVICE_PATH ||\r
-      (DevicePathSubType (Acpi) != ACPI_DP && DevicePathSubType (Acpi) != ACPI_EXTENDED_DP)) {\r
+  if ((DevicePathType (Acpi) != ACPI_DEVICE_PATH) ||\r
+      ((DevicePathSubType (Acpi) != ACPI_DP) && (DevicePathSubType (Acpi) != ACPI_EXTENDED_DP)))\r
+  {\r
     return EFI_UNSUPPORTED;\r
   }\r
 \r
   switch (Acpi->HID) {\r
-  case EISA_PNP_ID (0xF03):\r
+    case EISA_PNP_ID (0xF03):\r
     //\r
     // Microsoft PS/2 style mouse\r
     //\r
-  case EISA_PNP_ID (0xF13):\r
-    //\r
-    // PS/2 Port for PS/2-style Mice\r
-    //\r
-    break;\r
-\r
-  case EISA_PNP_ID (0x303):\r
-    //\r
-    // IBM Enhanced (101/102-key, PS/2 mouse support)\r
-    //\r
-    if (Acpi->UID == 1) {\r
+    case EISA_PNP_ID (0xF13):\r
+      //\r
+      // PS/2 Port for PS/2-style Mice\r
+      //\r
       break;\r
-    }\r
 \r
-  default:\r
-    return EFI_UNSUPPORTED;\r
-    break;\r
+    case EISA_PNP_ID (0x303):\r
+      //\r
+      // IBM Enhanced (101/102-key, PS/2 mouse support)\r
+      //\r
+      if (Acpi->UID == 1) {\r
+        break;\r
+      }\r
+\r
+    default:\r
+      return EFI_UNSUPPORTED;\r
+      break;\r
   }\r
 \r
   //\r
@@ -110,7 +105,7 @@ PS2MouseDriverSupported (
   Status = gBS->OpenProtocol (\r
                   Controller,\r
                   &gEfiSioProtocolGuid,\r
-                  (VOID **) &Sio,\r
+                  (VOID **)&Sio,\r
                   This->DriverBindingHandle,\r
                   Controller,\r
                   EFI_OPEN_PROTOCOL_BY_DRIVER\r
@@ -149,21 +144,21 @@ PS2MouseDriverSupported (
 EFI_STATUS\r
 EFIAPI\r
 PS2MouseDriverStart (\r
-  IN EFI_DRIVER_BINDING_PROTOCOL    *This,\r
-  IN EFI_HANDLE                     Controller,\r
-  IN EFI_DEVICE_PATH_PROTOCOL       *RemainingDevicePath\r
+  IN EFI_DRIVER_BINDING_PROTOCOL  *This,\r
+  IN EFI_HANDLE                   Controller,\r
+  IN EFI_DEVICE_PATH_PROTOCOL     *RemainingDevicePath\r
   )\r
 {\r
-  EFI_STATUS                          Status;\r
-  EFI_STATUS                          EmptyStatus;\r
-  EFI_SIO_PROTOCOL                    *Sio;\r
-  PS2_MOUSE_DEV                       *MouseDev;\r
-  UINT8                               Data;\r
-  EFI_TPL                             OldTpl;\r
-  EFI_STATUS_CODE_VALUE               StatusCode;\r
-  EFI_DEVICE_PATH_PROTOCOL            *DevicePath;\r
+  EFI_STATUS                Status;\r
+  EFI_STATUS                EmptyStatus;\r
+  EFI_SIO_PROTOCOL          *Sio;\r
+  PS2_MOUSE_DEV             *MouseDev;\r
+  UINT8                     Data;\r
+  EFI_TPL                   OldTpl;\r
+  EFI_STATUS_CODE_VALUE     StatusCode;\r
+  EFI_DEVICE_PATH_PROTOCOL  *DevicePath;\r
 \r
-  StatusCode  = 0;\r
+  StatusCode = 0;\r
 \r
   //\r
   // Open the device path protocol\r
@@ -171,7 +166,7 @@ PS2MouseDriverStart (
   Status = gBS->OpenProtocol (\r
                   Controller,\r
                   &gEfiDevicePathProtocolGuid,\r
-                  (VOID **) &DevicePath,\r
+                  (VOID **)&DevicePath,\r
                   This->DriverBindingHandle,\r
                   Controller,\r
                   EFI_OPEN_PROTOCOL_GET_PROTOCOL\r
@@ -179,6 +174,7 @@ PS2MouseDriverStart (
   if (EFI_ERROR (Status)) {\r
     return Status;\r
   }\r
+\r
   //\r
   // Report that the keyboard is being enabled\r
   //\r
@@ -194,7 +190,7 @@ PS2MouseDriverStart (
   Status = gBS->OpenProtocol (\r
                   Controller,\r
                   &gEfiSioProtocolGuid,\r
-                  (VOID **) &Sio,\r
+                  (VOID **)&Sio,\r
                   This->DriverBindingHandle,\r
                   Controller,\r
                   EFI_OPEN_PROTOCOL_BY_DRIVER\r
@@ -202,6 +198,7 @@ PS2MouseDriverStart (
   if (EFI_ERROR (Status)) {\r
     return Status;\r
   }\r
+\r
   //\r
   // Raise TPL to avoid keyboard operation impact\r
   //\r
@@ -215,6 +212,7 @@ PS2MouseDriverStart (
     Status = EFI_OUT_OF_RESOURCES;\r
     goto ErrorExit;\r
   }\r
+\r
   //\r
   // Setup the device instance\r
   //\r
@@ -229,14 +227,14 @@ PS2MouseDriverStart (
   //\r
   // Resolution = 4 counts/mm\r
   //\r
-  MouseDev->Mode.ResolutionX                = 4;\r
-  MouseDev->Mode.ResolutionY                = 4;\r
-  MouseDev->Mode.LeftButton                 = TRUE;\r
-  MouseDev->Mode.RightButton                = TRUE;\r
+  MouseDev->Mode.ResolutionX = 4;\r
+  MouseDev->Mode.ResolutionY = 4;\r
+  MouseDev->Mode.LeftButton  = TRUE;\r
+  MouseDev->Mode.RightButton = TRUE;\r
 \r
-  MouseDev->SimplePointerProtocol.Reset     = MouseReset;\r
-  MouseDev->SimplePointerProtocol.GetState  = MouseGetState;\r
-  MouseDev->SimplePointerProtocol.Mode      = &(MouseDev->Mode);\r
+  MouseDev->SimplePointerProtocol.Reset    = MouseReset;\r
+  MouseDev->SimplePointerProtocol.GetState = MouseGetState;\r
+  MouseDev->SimplePointerProtocol.Mode     = &(MouseDev->Mode);\r
 \r
   //\r
   // Initialize keyboard controller if necessary\r
@@ -281,15 +279,15 @@ PS2MouseDriverStart (
   // Reset the mouse\r
   //\r
   Status = MouseDev->SimplePointerProtocol.Reset (\r
-                     &MouseDev->SimplePointerProtocol,\r
-                     FeaturePcdGet (PcdPs2MouseExtendedVerification)\r
-                     );\r
+                                             &MouseDev->SimplePointerProtocol,\r
+                                             FeaturePcdGet (PcdPs2MouseExtendedVerification)\r
+                                             );\r
   if (EFI_ERROR (Status)) {\r
     //\r
     // mouse not connected\r
     //\r
-    Status      = EFI_SUCCESS;\r
-    StatusCode  = EFI_PERIPHERAL_MOUSE | EFI_P_EC_NOT_DETECTED;\r
+    Status     = EFI_SUCCESS;\r
+    StatusCode = EFI_PERIPHERAL_MOUSE | EFI_P_EC_NOT_DETECTED;\r
     goto ErrorExit;\r
   }\r
 \r
@@ -313,6 +311,7 @@ PS2MouseDriverStart (
     Status = EFI_OUT_OF_RESOURCES;\r
     goto ErrorExit;\r
   }\r
+\r
   //\r
   // Setup a periodic timer, used to poll mouse state\r
   //\r
@@ -327,6 +326,7 @@ PS2MouseDriverStart (
     Status = EFI_OUT_OF_RESOURCES;\r
     goto ErrorExit;\r
   }\r
+\r
   //\r
   // Start timer to poll mouse (100 samples per second)\r
   //\r
@@ -352,7 +352,6 @@ PS2MouseDriverStart (
     FALSE\r
     );\r
 \r
-\r
   //\r
   // Install protocol interfaces for the mouse device.\r
   //\r
@@ -431,7 +430,7 @@ ErrorExit:
 }\r
 \r
 /**\r
-  Stop this driver on ControllerHandle. Support stoping any child handles\r
+  Stop this driver on ControllerHandle. Support stopping any child handles\r
   created by this driver.\r
 \r
   @param  This              Protocol instance pointer.\r
@@ -447,21 +446,21 @@ ErrorExit:
 EFI_STATUS\r
 EFIAPI\r
 PS2MouseDriverStop (\r
-  IN EFI_DRIVER_BINDING_PROTOCOL    *This,\r
-  IN EFI_HANDLE                     Controller,\r
-  IN UINTN                          NumberOfChildren,\r
-  IN EFI_HANDLE                     *ChildHandleBuffer\r
+  IN EFI_DRIVER_BINDING_PROTOCOL  *This,\r
+  IN EFI_HANDLE                   Controller,\r
+  IN UINTN                        NumberOfChildren,\r
+  IN EFI_HANDLE                   *ChildHandleBuffer\r
   )\r
 {\r
-  EFI_STATUS                  Status;\r
-  EFI_SIMPLE_POINTER_PROTOCOL *SimplePointerProtocol;\r
-  PS2_MOUSE_DEV               *MouseDev;\r
-  UINT8                       Data;\r
+  EFI_STATUS                   Status;\r
+  EFI_SIMPLE_POINTER_PROTOCOL  *SimplePointerProtocol;\r
+  PS2_MOUSE_DEV                *MouseDev;\r
+  UINT8                        Data;\r
 \r
   Status = gBS->OpenProtocol (\r
                   Controller,\r
                   &gEfiSimplePointerProtocolGuid,\r
-                  (VOID **) &SimplePointerProtocol,\r
+                  (VOID **)&SimplePointerProtocol,\r
                   This->DriverBindingHandle,\r
                   Controller,\r
                   EFI_OPEN_PROTOCOL_GET_PROTOCOL\r
@@ -528,28 +527,28 @@ PS2MouseDriverStop (
 \r
 /**\r
   Reset the Mouse and do BAT test for it, if ExtendedVerification is TRUE and\r
-  there is a mouse device connectted to system.\r
+  there is a mouse device connected to system.\r
 \r
   @param This                 - Pointer of simple pointer Protocol.\r
   @param ExtendedVerification - Whether configure mouse parameters. True: do; FALSE: skip.\r
 \r
 \r
   @retval EFI_SUCCESS         - The command byte is written successfully.\r
-  @retval EFI_DEVICE_ERROR    - Errors occurred during reseting keyboard.\r
+  @retval EFI_DEVICE_ERROR    - Errors occurred during resetting keyboard.\r
 \r
 **/\r
 EFI_STATUS\r
 EFIAPI\r
 MouseReset (\r
-  IN EFI_SIMPLE_POINTER_PROTOCOL    *This,\r
-  IN BOOLEAN                        ExtendedVerification\r
+  IN EFI_SIMPLE_POINTER_PROTOCOL  *This,\r
+  IN BOOLEAN                      ExtendedVerification\r
   )\r
 {\r
-  EFI_STATUS    Status;\r
-  PS2_MOUSE_DEV *MouseDev;\r
-  EFI_TPL       OldTpl;\r
-  BOOLEAN       KeyboardEnable;\r
-  UINT8         Data;\r
+  EFI_STATUS     Status;\r
+  PS2_MOUSE_DEV  *MouseDev;\r
+  EFI_TPL        OldTpl;\r
+  BOOLEAN        KeyboardEnable;\r
+  UINT8          Data;\r
 \r
   MouseDev = PS2_MOUSE_DEV_FROM_THIS (This);\r
 \r
@@ -593,8 +592,8 @@ MouseReset (
 \r
   Status = EFI_SUCCESS;\r
   //\r
-  // The PS2 mouse driver reset behavior is always successfully return no matter wheater or not there is mouse connected to system.\r
-  // This behavior is needed by performance speed. The following mouse command only succeessfully finish when mouse device is\r
+  // The PS2 mouse driver reset behavior is always successfully return no matter whether or not there is mouse connected to system.\r
+  // This behavior is needed by performance speed. The following mouse command only successfully finish when mouse device is\r
   // connected to system, so if PS2 mouse device not connect to system or user not ask for, we skip the mouse configuration and enabling\r
   //\r
   if (ExtendedVerification && CheckMouseConnect (MouseDev)) {\r
@@ -631,6 +630,7 @@ MouseReset (
       goto Exit;\r
     }\r
   }\r
+\r
 Exit:\r
   gBS->RestoreTPL (OldTpl);\r
 \r
@@ -652,11 +652,11 @@ Exit:
 **/\r
 BOOLEAN\r
 CheckMouseConnect (\r
-  IN  PS2_MOUSE_DEV     *MouseDev\r
+  IN  PS2_MOUSE_DEV  *MouseDev\r
   )\r
 \r
 {\r
-  EFI_STATUS     Status;\r
+  EFI_STATUS  Status;\r
 \r
   Status = PS2MouseEnable ();\r
   if (!EFI_ERROR (Status)) {\r
@@ -679,12 +679,12 @@ CheckMouseConnect (
 EFI_STATUS\r
 EFIAPI\r
 MouseGetState (\r
-  IN EFI_SIMPLE_POINTER_PROTOCOL    *This,\r
-  IN OUT EFI_SIMPLE_POINTER_STATE   *State\r
+  IN EFI_SIMPLE_POINTER_PROTOCOL   *This,\r
+  IN OUT EFI_SIMPLE_POINTER_STATE  *State\r
   )\r
 {\r
-  PS2_MOUSE_DEV *MouseDev;\r
-  EFI_TPL       OldTpl;\r
+  PS2_MOUSE_DEV  *MouseDev;\r
+  EFI_TPL        OldTpl;\r
 \r
   MouseDev = PS2_MOUSE_DEV_FROM_THIS (This);\r
 \r
@@ -723,13 +723,13 @@ MouseGetState (
 VOID\r
 EFIAPI\r
 MouseWaitForInput (\r
-  IN  EFI_EVENT               Event,\r
-  IN  VOID                    *Context\r
+  IN  EFI_EVENT  Event,\r
+  IN  VOID       *Context\r
   )\r
 {\r
-  PS2_MOUSE_DEV *MouseDev;\r
+  PS2_MOUSE_DEV  *MouseDev;\r
 \r
-  MouseDev = (PS2_MOUSE_DEV *) Context;\r
+  MouseDev = (PS2_MOUSE_DEV *)Context;\r
 \r
   //\r
   // Someone is waiting on the mouse event, if there's\r
@@ -738,7 +738,6 @@ MouseWaitForInput (
   if (MouseDev->StateChanged) {\r
     gBS->SignalEvent (Event);\r
   }\r
-\r
 }\r
 \r
 /**\r
@@ -757,9 +756,9 @@ PollMouse (
   )\r
 \r
 {\r
-  PS2_MOUSE_DEV *MouseDev;\r
+  PS2_MOUSE_DEV  *MouseDev;\r
 \r
-  MouseDev = (PS2_MOUSE_DEV *) Context;\r
+  MouseDev = (PS2_MOUSE_DEV *)Context;\r
 \r
   //\r
   // Polling mouse packet data\r
@@ -779,12 +778,12 @@ PollMouse (
 **/\r
 EFI_STATUS\r
 EFIAPI\r
-InitializePs2Mouse(\r
-  IN EFI_HANDLE           ImageHandle,\r
-  IN EFI_SYSTEM_TABLE     *SystemTable\r
+InitializePs2Mouse (\r
+  IN EFI_HANDLE        ImageHandle,\r
+  IN EFI_SYSTEM_TABLE  *SystemTable\r
   )\r
 {\r
-  EFI_STATUS              Status;\r
+  EFI_STATUS  Status;\r
 \r
   //\r
   // Install driver model protocol(s).\r
@@ -799,7 +798,5 @@ InitializePs2Mouse(
              );\r
   ASSERT_EFI_ERROR (Status);\r
 \r
-\r
   return Status;\r
 }\r
-\r