]> git.proxmox.com Git - mirror_edk2.git/blobdiff - MdeModulePkg/Bus/Usb/UsbMouseDxe/MouseHid.c
UefiCpuPkg: Move AsmRelocateApLoopStart from Mpfuncs.nasm to AmdSev.nasm
[mirror_edk2.git] / MdeModulePkg / Bus / Usb / UsbMouseDxe / MouseHid.c
index 2594b7b2f0cb395b15f8557a97317d821d0cab68..acc19acd98e05788d08a4fea49468cfb984697f5 100644 (file)
@@ -2,19 +2,12 @@
   Helper functions to parse HID report descriptor and items.\r
 \r
 Copyright (c) 2004 - 2018, 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
 #include "UsbMouse.h"\r
 \r
-\r
 /**\r
   Get next HID item from report descriptor.\r
 \r
@@ -28,7 +21,7 @@ WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.
   Only short item is supported here.\r
 \r
   @param  StartPos          Start position of the HID item to get.\r
-  @param  EndPos            End position of the range to get the the next HID item.\r
+  @param  EndPos            End position of the range to get the next HID item.\r
   @param  HidItem           Buffer for the HID Item to return.\r
 \r
   @return Pointer to end of the HID item returned.\r
@@ -37,12 +30,12 @@ WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.
 **/\r
 UINT8 *\r
 GetNextHidItem (\r
-  IN  UINT8    *StartPos,\r
-  IN  UINT8    *EndPos,\r
-  OUT HID_ITEM *HidItem\r
+  IN  UINT8     *StartPos,\r
+  IN  UINT8     *EndPos,\r
+  OUT HID_ITEM  *HidItem\r
   )\r
 {\r
-  UINT8 Temp;\r
+  UINT8  Temp;\r
 \r
   if (EndPos <= StartPos) {\r
     return NULL;\r
@@ -72,7 +65,7 @@ GetNextHidItem (
 \r
       if ((EndPos - StartPos) >= HidItem->Size) {\r
         HidItem->Data.LongData = StartPos;\r
-        StartPos += HidItem->Size;\r
+        StartPos              += HidItem->Size;\r
         return StartPos;\r
       }\r
     }\r
@@ -81,48 +74,47 @@ GetNextHidItem (
     HidItem->Size   = BitFieldRead8 (Temp, 0, 1);\r
 \r
     switch (HidItem->Size) {\r
-    case 0:\r
-      //\r
-      // No data\r
-      //\r
-      return StartPos;\r
-\r
-    case 1:\r
-      //\r
-      // 1-byte data\r
-      //\r
-      if ((EndPos - StartPos) >= 1) {\r
-        HidItem->Data.Uint8 = *StartPos++;\r
+      case 0:\r
+        //\r
+        // No data\r
+        //\r
         return StartPos;\r
-      }\r
 \r
-    case 2:\r
-      //\r
-      // 2-byte data\r
-      //\r
-      if ((EndPos - StartPos) >= 2) {\r
-        CopyMem (&HidItem->Data.Uint16, StartPos, sizeof (UINT16));\r
-        StartPos += 2;\r
-        return StartPos;\r
-      }\r
+      case 1:\r
+        //\r
+        // 1-byte data\r
+        //\r
+        if ((EndPos - StartPos) >= 1) {\r
+          HidItem->Data.Uint8 = *StartPos++;\r
+          return StartPos;\r
+        }\r
 \r
-    case 3:\r
-      //\r
-      // 4-byte data, adjust size\r
-      //\r
-      HidItem->Size = 4;\r
-      if ((EndPos - StartPos) >= 4) {\r
-        CopyMem (&HidItem->Data.Uint32, StartPos, sizeof (UINT32));\r
-        StartPos += 4;\r
-        return StartPos;\r
-      }\r
+      case 2:\r
+        //\r
+        // 2-byte data\r
+        //\r
+        if ((EndPos - StartPos) >= 2) {\r
+          CopyMem (&HidItem->Data.Uint16, StartPos, sizeof (UINT16));\r
+          StartPos += 2;\r
+          return StartPos;\r
+        }\r
+\r
+      case 3:\r
+        //\r
+        // 4-byte data, adjust size\r
+        //\r
+        HidItem->Size = 4;\r
+        if ((EndPos - StartPos) >= 4) {\r
+          CopyMem (&HidItem->Data.Uint32, StartPos, sizeof (UINT32));\r
+          StartPos += 4;\r
+          return StartPos;\r
+        }\r
     }\r
   }\r
 \r
   return NULL;\r
 }\r
 \r
-\r
 /**\r
   Get data from HID item.\r
 \r
@@ -137,20 +129,21 @@ GetNextHidItem (
 **/\r
 UINT32\r
 GetItemData (\r
-  IN  HID_ITEM *HidItem\r
+  IN  HID_ITEM  *HidItem\r
   )\r
 {\r
   //\r
   // Get data from HID item.\r
   //\r
   switch (HidItem->Size) {\r
-  case 1:\r
-    return HidItem->Data.Uint8;\r
-  case 2:\r
-    return HidItem->Data.Uint16;\r
-  case 4:\r
-    return HidItem->Data.Uint32;\r
+    case 1:\r
+      return HidItem->Data.Uint8;\r
+    case 2:\r
+      return HidItem->Data.Uint16;\r
+    case 4:\r
+      return HidItem->Data.Uint32;\r
   }\r
+\r
   return 0;\r
 }\r
 \r
@@ -167,67 +160,68 @@ GetItemData (
 **/\r
 VOID\r
 ParseHidItem (\r
-  IN  USB_MOUSE_DEV   *UsbMouse,\r
-  IN  HID_ITEM        *HidItem\r
+  IN  USB_MOUSE_DEV  *UsbMouse,\r
+  IN  HID_ITEM       *HidItem\r
   )\r
 {\r
   UINT8  Data;\r
 \r
   switch (HidItem->Type) {\r
+    case HID_ITEM_TYPE_MAIN:\r
+      //\r
+      // we don't care any main items, just skip\r
+      //\r
+      return;\r
 \r
-  case HID_ITEM_TYPE_MAIN:\r
-    //\r
-    // we don't care any main items, just skip\r
-    //\r
-    return;\r
+    case HID_ITEM_TYPE_GLOBAL:\r
+      //\r
+      // For global items, we only care Usage Page tag for Button Page here\r
+      //\r
+      if (HidItem->Tag == HID_GLOBAL_ITEM_TAG_USAGE_PAGE) {\r
+        Data = (UINT8)GetItemData (HidItem);\r
+        if (Data == 0x09) {\r
+          //\r
+          // Button Page\r
+          //\r
+          UsbMouse->PrivateData.ButtonDetected = TRUE;\r
+        }\r
+      }\r
 \r
-  case HID_ITEM_TYPE_GLOBAL:\r
-    //\r
-    // For global items, we only care Usage Page tag for Button Page here\r
-    //\r
-    if (HidItem->Tag == HID_GLOBAL_ITEM_TAG_USAGE_PAGE) {\r
-      Data = (UINT8) GetItemData (HidItem);\r
-      if (Data == 0x09) {\r
+      return;\r
+\r
+    case HID_ITEM_TYPE_LOCAL:\r
+      if (HidItem->Size == 0) {\r
         //\r
-        // Button Page\r
+        // No expected data for local item\r
         //\r
-        UsbMouse->PrivateData.ButtonDetected = TRUE;\r
+        return;\r
       }\r
-    }\r
-    return;\r
 \r
-  case HID_ITEM_TYPE_LOCAL:\r
-    if (HidItem->Size == 0) {\r
-      //\r
-      // No expected data for local item\r
-      //\r
-      return ;\r
-    }\r
+      Data = (UINT8)GetItemData (HidItem);\r
 \r
-    Data = (UINT8) GetItemData (HidItem);\r
+      switch (HidItem->Tag) {\r
+        case HID_LOCAL_ITEM_TAG_USAGE_MINIMUM:\r
+          if (UsbMouse->PrivateData.ButtonDetected) {\r
+            UsbMouse->PrivateData.ButtonMinIndex = Data;\r
+          }\r
 \r
-    switch (HidItem->Tag) {\r
-    case HID_LOCAL_ITEM_TAG_USAGE_MINIMUM:\r
-      if (UsbMouse->PrivateData.ButtonDetected) {\r
-        UsbMouse->PrivateData.ButtonMinIndex = Data;\r
-      }\r
-      return ;\r
+          return;\r
 \r
-    case HID_LOCAL_ITEM_TAG_USAGE_MAXIMUM:\r
-    {\r
-      if (UsbMouse->PrivateData.ButtonDetected) {\r
-        UsbMouse->PrivateData.ButtonMaxIndex = Data;\r
-      }\r
-      return ;\r
-    }\r
+        case HID_LOCAL_ITEM_TAG_USAGE_MAXIMUM:\r
+        {\r
+          if (UsbMouse->PrivateData.ButtonDetected) {\r
+            UsbMouse->PrivateData.ButtonMaxIndex = Data;\r
+          }\r
 \r
-    default:\r
-      return;\r
-    }\r
+          return;\r
+        }\r
+\r
+        default:\r
+          return;\r
+      }\r
   }\r
 }\r
 \r
-\r
 /**\r
   Parse Mouse Report Descriptor.\r
 \r
@@ -246,9 +240,9 @@ ParseHidItem (
 **/\r
 EFI_STATUS\r
 ParseMouseReportDescriptor (\r
-  OUT USB_MOUSE_DEV   *UsbMouse,\r
-  IN  UINT8           *ReportDescriptor,\r
-  IN  UINTN           ReportSize\r
+  OUT USB_MOUSE_DEV  *UsbMouse,\r
+  IN  UINT8          *ReportDescriptor,\r
+  IN  UINTN          ReportSize\r
   )\r
 {\r
   UINT8     *DescriptorEnd;\r
@@ -271,11 +265,11 @@ ParseMouseReportDescriptor (
     Ptr = GetNextHidItem (Ptr, DescriptorEnd, &HidItem);\r
   }\r
 \r
-  UsbMouse->NumberOfButtons = (UINT8) (UsbMouse->PrivateData.ButtonMaxIndex - UsbMouse->PrivateData.ButtonMinIndex + 1);\r
-  UsbMouse->XLogicMax = 127;\r
-  UsbMouse->YLogicMax = 127;\r
-  UsbMouse->XLogicMin = -127;\r
-  UsbMouse->YLogicMin = -127;\r
+  UsbMouse->NumberOfButtons = (UINT8)(UsbMouse->PrivateData.ButtonMaxIndex - UsbMouse->PrivateData.ButtonMinIndex + 1);\r
+  UsbMouse->XLogicMax       = 127;\r
+  UsbMouse->YLogicMax       = 127;\r
+  UsbMouse->XLogicMin       = -127;\r
+  UsbMouse->YLogicMin       = -127;\r
 \r
   return EFI_SUCCESS;\r
 }\r