--- /dev/null
+/** @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