]> git.proxmox.com Git - mirror_edk2.git/blame - 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
CommitLineData
9b6bbcdb
MK
1/** @file\r
2This file provides the information dump support for OHCI when in debug mode.\r
3\r
4Copyright (c) 2013-2015 Intel Corporation.\r
5\r
6This program and the accompanying materials\r
7are licensed and made available under the terms and conditions of the BSD License\r
8which accompanies this distribution. The full text of the license may be found at\r
9http://opensource.org/licenses/bsd-license.php\r
10\r
11THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,\r
12WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.\r
13\r
14**/\r
15\r
16\r
17#include "Ohci.h"\r
18\r
19\r
20/*++\r
21\r
22 Print the data of ED and the TDs attached to the ED\r
23\r
24 @param Uhc Pointer to OHCI private data\r
25 @param Ed Pointer to a ED to free\r
26 @param Td Pointer to the Td head\r
27\r
28 @retval EFI_SUCCESS ED\r
29\r
30**/\r
31EFI_STATUS\r
32OhciDumpEdTdInfo (\r
33 IN USB_OHCI_HC_DEV *Uhc,\r
34 IN ED_DESCRIPTOR *Ed,\r
35 IN TD_DESCRIPTOR *Td,\r
36 BOOLEAN Stage\r
37 )\r
38{\r
39 UINT32 Index;\r
40\r
41 if (Stage) {\r
42 DEBUG ((EFI_D_INFO, "\n Before executing command\n"));\r
43 }else{\r
44 DEBUG ((EFI_D_INFO, "\n after executing command\n"));\r
45 }\r
46 if (Ed != NULL) {\r
47 DEBUG ((EFI_D_INFO, "\nED Address:%p, ED buffer:\n", Ed));\r
48 DEBUG ((EFI_D_INFO, "DWord0 :TD Tail :TD Head :Next ED\n"));\r
49 for (Index = 0; Index < sizeof (ED_DESCRIPTOR)/4; Index ++) {\r
50 DEBUG ((EFI_D_INFO, "%8x ", *((UINT32*)(Ed) + Index) ));\r
51 }\r
52 DEBUG ((EFI_D_INFO, "\nNext TD buffer:%p\n", Td));\r
53 }\r
54 while (Td != NULL) {\r
55 if (Td->Word0.DirPID == TD_SETUP_PID) {\r
56 DEBUG ((EFI_D_INFO, "\nSetup PID "));\r
57 }else if (Td->Word0.DirPID == TD_OUT_PID) {\r
58 DEBUG ((EFI_D_INFO, "\nOut PID "));\r
59 }else if (Td->Word0.DirPID == TD_IN_PID) {\r
60 DEBUG ((EFI_D_INFO, "\nIn PID "));\r
61 }else if (Td->Word0.DirPID == TD_NODATA_PID) {\r
62 DEBUG ((EFI_D_INFO, "\nNo data PID "));\r
63 }\r
64 DEBUG ((EFI_D_INFO, "TD Address:%p, TD buffer:\n", Td));\r
65 DEBUG ((EFI_D_INFO, "DWord0 :CuBuffer:Next TD :Buff End:Next TD :DataBuff:ActLength\n"));\r
66 for (Index = 0; Index < sizeof (TD_DESCRIPTOR)/4; Index ++) {\r
67 DEBUG ((EFI_D_INFO, "%8x ", *((UINT32*)(Td) + Index) ));\r
68 }\r
69 DEBUG ((EFI_D_INFO, "\nCurrent TD Data buffer(size%d)\n", (UINT32)Td->ActualSendLength));\r
70 for (Index = 0; Index < Td->ActualSendLength; Index ++) {\r
71 DEBUG ((EFI_D_INFO, "%2x ", *(UINT8 *)(UINTN)(Td->DataBuffer + Index) ));\r
72 }\r
73 Td = (TD_DESCRIPTOR *)(UINTN)(Td->NextTDPointer);\r
74 }\r
75 DEBUG ((EFI_D_INFO, "\n TD buffer End\n"));\r
76\r
77 return EFI_SUCCESS;\r
78}\r
79\r
80\r
81\r
82\r
83\r
84\r