]> git.proxmox.com Git - mirror_edk2.git/blobdiff - QuarkSocPkg/QuarkSouthCluster/Usb/Ohci/Dxe/OhciDebug.c
QuarkSocPkg: Add new package for Quark SoC X1000
[mirror_edk2.git] / QuarkSocPkg / QuarkSouthCluster / Usb / Ohci / Dxe / OhciDebug.c
diff --git a/QuarkSocPkg/QuarkSouthCluster/Usb/Ohci/Dxe/OhciDebug.c b/QuarkSocPkg/QuarkSouthCluster/Usb/Ohci/Dxe/OhciDebug.c
new file mode 100644 (file)
index 0000000..69d268a
--- /dev/null
@@ -0,0 +1,84 @@
+/** @file\r
+This file provides the information dump support for OHCI when in debug mode.\r
+\r
+Copyright (c) 2013-2015 Intel Corporation.\r
+\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
+\r
+**/\r
+\r
+\r
+#include "Ohci.h"\r
+\r
+\r
+/*++\r
+\r
+  Print the data of ED and the TDs attached to the ED\r
+\r
+  @param  Uhc                   Pointer to OHCI private data\r
+  @param  Ed                    Pointer to a ED to free\r
+  @param  Td                    Pointer to the Td head\r
+\r
+  @retval EFI_SUCCESS           ED\r
+\r
+**/\r
+EFI_STATUS\r
+OhciDumpEdTdInfo (\r
+  IN USB_OHCI_HC_DEV      *Uhc,\r
+  IN ED_DESCRIPTOR        *Ed,\r
+  IN TD_DESCRIPTOR        *Td,\r
+  BOOLEAN                 Stage\r
+  )\r
+{\r
+  UINT32                  Index;\r
+\r
+  if (Stage) {\r
+    DEBUG ((EFI_D_INFO, "\n Before executing command\n"));\r
+  }else{\r
+    DEBUG ((EFI_D_INFO, "\n after executing command\n"));\r
+  }\r
+  if (Ed != NULL) {\r
+    DEBUG ((EFI_D_INFO, "\nED Address:%p, ED buffer:\n", Ed));\r
+    DEBUG ((EFI_D_INFO, "DWord0  :TD Tail :TD Head :Next ED\n"));\r
+    for (Index = 0; Index < sizeof (ED_DESCRIPTOR)/4; Index ++) {\r
+      DEBUG ((EFI_D_INFO, "%8x ", *((UINT32*)(Ed) + Index)  ));\r
+    }\r
+    DEBUG ((EFI_D_INFO, "\nNext TD buffer:%p\n", Td));\r
+  }\r
+  while (Td != NULL) {\r
+    if (Td->Word0.DirPID == TD_SETUP_PID) {\r
+      DEBUG ((EFI_D_INFO, "\nSetup PID "));\r
+    }else if (Td->Word0.DirPID == TD_OUT_PID) {\r
+      DEBUG ((EFI_D_INFO, "\nOut PID "));\r
+    }else if (Td->Word0.DirPID == TD_IN_PID) {\r
+      DEBUG ((EFI_D_INFO, "\nIn PID "));\r
+    }else if (Td->Word0.DirPID == TD_NODATA_PID) {\r
+      DEBUG ((EFI_D_INFO, "\nNo data PID "));\r
+    }\r
+    DEBUG ((EFI_D_INFO, "TD Address:%p, TD buffer:\n", Td));\r
+    DEBUG ((EFI_D_INFO, "DWord0  :CuBuffer:Next TD :Buff End:Next TD :DataBuff:ActLength\n"));\r
+    for (Index = 0; Index < sizeof (TD_DESCRIPTOR)/4; Index ++) {\r
+      DEBUG ((EFI_D_INFO, "%8x ", *((UINT32*)(Td) + Index)  ));\r
+    }\r
+    DEBUG ((EFI_D_INFO, "\nCurrent TD Data buffer(size%d)\n", (UINT32)Td->ActualSendLength));\r
+    for (Index = 0; Index < Td->ActualSendLength; Index ++) {\r
+      DEBUG ((EFI_D_INFO, "%2x ", *(UINT8 *)(UINTN)(Td->DataBuffer + Index) ));\r
+    }\r
+  Td = (TD_DESCRIPTOR *)(UINTN)(Td->NextTDPointer);\r
+  }\r
+  DEBUG ((EFI_D_INFO, "\n TD buffer End\n"));\r
+\r
+  return EFI_SUCCESS;\r
+}\r
+\r
+\r
+\r
+\r
+\r
+\r