]> git.proxmox.com Git - mirror_edk2.git/blame - MdeModulePkg/Bus/Pci/EhciDxe/EhciDebug.c
check the usage of %d,%x,%ld,%lx and so on in debug print statement.
[mirror_edk2.git] / MdeModulePkg / Bus / Pci / EhciDxe / EhciDebug.c
CommitLineData
913cb9dc 1/** @file\r
2\r
78c2ffb5 3 This file provides the information dump support for EHCI when in debug mode.\r
4\r
913cb9dc 5Copyright (c) 2007, Intel Corporation\r
6All rights reserved. This 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
913cb9dc 14**/\r
15\r
16\r
17#include "Ehci.h"\r
18\r
913cb9dc 19/**\r
78c2ffb5 20 Dump the status byte in QTD/QH to a more friendly format.\r
913cb9dc 21\r
78c2ffb5 22 @param State The state in the QTD/QH.\r
913cb9dc 23\r
78c2ffb5 24 @return None.\r
913cb9dc 25\r
26**/\r
913cb9dc 27VOID\r
28EhcDumpStatus (\r
1c619535 29 IN UINT32 State\r
913cb9dc 30 )\r
31{\r
32 if (EHC_BIT_IS_SET (State, QTD_STAT_DO_PING)) {\r
1c619535 33 DEBUG ((EFI_D_INFO, " Do_Ping"));\r
913cb9dc 34 } else {\r
1c619535 35 DEBUG ((EFI_D_INFO, " Do_Out"));\r
913cb9dc 36 }\r
37\r
38 if (EHC_BIT_IS_SET (State, QTD_STAT_DO_CS)) {\r
1c619535 39 DEBUG ((EFI_D_INFO, " Do_CS"));\r
913cb9dc 40 } else {\r
1c619535 41 DEBUG ((EFI_D_INFO, " Do_SS"));\r
913cb9dc 42 }\r
43\r
44 if (EHC_BIT_IS_SET (State, QTD_STAT_TRANS_ERR)) {\r
1c619535 45 DEBUG ((EFI_D_INFO, " Transfer_Error"));\r
913cb9dc 46 }\r
47\r
48 if (EHC_BIT_IS_SET (State, QTD_STAT_BABBLE_ERR)) {\r
1c619535 49 DEBUG ((EFI_D_INFO, " Babble_Error"));\r
913cb9dc 50 }\r
51\r
52 if (EHC_BIT_IS_SET (State, QTD_STAT_BUFF_ERR)) {\r
1c619535 53 DEBUG ((EFI_D_INFO, " Buffer_Error"));\r
913cb9dc 54 }\r
55\r
56 if (EHC_BIT_IS_SET (State, QTD_STAT_HALTED)) {\r
1c619535 57 DEBUG ((EFI_D_INFO, " Halted"));\r
913cb9dc 58 }\r
59\r
60 if (EHC_BIT_IS_SET (State, QTD_STAT_ACTIVE)) {\r
1c619535 61 DEBUG ((EFI_D_INFO, " Active"));\r
913cb9dc 62 }\r
63\r
1c619535 64 DEBUG ((EFI_D_INFO, "\n"));\r
913cb9dc 65}\r
66\r
67\r
68/**\r
78c2ffb5 69 Dump the fields of a QTD.\r
913cb9dc 70\r
78c2ffb5 71 @param Qtd The QTD to dump.\r
72 @param Msg The message to print before the dump.\r
913cb9dc 73\r
74 @return None\r
75\r
76**/\r
77VOID\r
78EhcDumpQtd (\r
79 IN EHC_QTD *Qtd,\r
1c619535 80 IN CHAR8 *Msg\r
913cb9dc 81 )\r
82{\r
83 QTD_HW *QtdHw;\r
84 UINTN Index;\r
913cb9dc 85\r
86 if (Msg != NULL) {\r
1c619535 87 DEBUG ((EFI_D_INFO, Msg));\r
913cb9dc 88 }\r
89\r
7df7393f 90 DEBUG ((EFI_D_INFO, "Queue TD @ 0x%p, data length %d\n", Qtd, (UINT32)Qtd->DataLen));\r
913cb9dc 91\r
92 QtdHw = &Qtd->QtdHw;\r
93\r
1c619535 94 DEBUG ((EFI_D_INFO, "Next QTD : %x\n", QtdHw->NextQtd));\r
95 DEBUG ((EFI_D_INFO, "AltNext QTD : %x\n", QtdHw->AltNext));\r
96 DEBUG ((EFI_D_INFO, "Status : %x\n", QtdHw->Status));\r
97 EhcDumpStatus (QtdHw->Status);\r
913cb9dc 98\r
99 if (QtdHw->Pid == QTD_PID_SETUP) {\r
1c619535 100 DEBUG ((EFI_D_INFO, "PID : Setup\n"));\r
913cb9dc 101\r
102 } else if (QtdHw->Pid == QTD_PID_INPUT) {\r
1c619535 103 DEBUG ((EFI_D_INFO, "PID : IN\n"));\r
913cb9dc 104\r
105 } else if (QtdHw->Pid == QTD_PID_OUTPUT) {\r
1c619535 106 DEBUG ((EFI_D_INFO, "PID : OUT\n"));\r
913cb9dc 107\r
108 }\r
109\r
1c619535 110 DEBUG ((EFI_D_INFO, "Error Count : %d\n", QtdHw->ErrCnt));\r
111 DEBUG ((EFI_D_INFO, "Current Page : %d\n", QtdHw->CurPage));\r
112 DEBUG ((EFI_D_INFO, "IOC : %d\n", QtdHw->IOC));\r
113 DEBUG ((EFI_D_INFO, "Total Bytes : %d\n", QtdHw->TotalBytes));\r
114 DEBUG ((EFI_D_INFO, "Data Toggle : %d\n", QtdHw->DataToggle));\r
913cb9dc 115\r
116 for (Index = 0; Index < 5; Index++) {\r
7df7393f 117 DEBUG ((EFI_D_INFO, "Page[%d] : 0x%x\n", (UINT32)Index, QtdHw->Page[Index]));\r
913cb9dc 118 }\r
119}\r
120\r
121\r
122/**\r
78c2ffb5 123 Dump the queue head.\r
913cb9dc 124\r
78c2ffb5 125 @param Qh The queue head to dump.\r
126 @param Msg The message to print before the dump.\r
127 @param DumpBuf Whether to dump the memory buffer of the associated QTD.\r
913cb9dc 128\r
129 @return None\r
130\r
131**/\r
132VOID\r
133EhcDumpQh (\r
134 IN EHC_QH *Qh,\r
1c619535 135 IN CHAR8 *Msg,\r
913cb9dc 136 IN BOOLEAN DumpBuf\r
137 )\r
138{\r
139 EHC_QTD *Qtd;\r
140 QH_HW *QhHw;\r
141 LIST_ENTRY *Entry;\r
142 UINTN Index;\r
913cb9dc 143\r
144 if (Msg != NULL) {\r
1c619535 145 DEBUG ((EFI_D_INFO, Msg));\r
913cb9dc 146 }\r
147\r
7df7393f 148 DEBUG ((EFI_D_INFO, "Queue head @ 0x%p, interval %ld, next qh %p\n",\r
149 Qh, (UINT64)Qh->Interval, Qh->NextQh));\r
913cb9dc 150\r
151 QhHw = &Qh->QhHw;\r
152\r
1c619535 153 DEBUG ((EFI_D_INFO, "Hoziontal link: %x\n", QhHw->HorizonLink));\r
154 DEBUG ((EFI_D_INFO, "Device address: %d\n", QhHw->DeviceAddr));\r
155 DEBUG ((EFI_D_INFO, "Inactive : %d\n", QhHw->Inactive));\r
156 DEBUG ((EFI_D_INFO, "EP number : %d\n", QhHw->EpNum));\r
157 DEBUG ((EFI_D_INFO, "EP speed : %d\n", QhHw->EpSpeed));\r
158 DEBUG ((EFI_D_INFO, "DT control : %d\n", QhHw->DtCtrl));\r
159 DEBUG ((EFI_D_INFO, "Reclaim head : %d\n", QhHw->ReclaimHead));\r
160 DEBUG ((EFI_D_INFO, "Max packet len: %d\n", QhHw->MaxPacketLen));\r
161 DEBUG ((EFI_D_INFO, "Ctrl EP : %d\n", QhHw->CtrlEp));\r
162 DEBUG ((EFI_D_INFO, "Nak reload : %d\n", QhHw->NakReload));\r
163\r
164 DEBUG ((EFI_D_INFO, "SMask : %x\n", QhHw->SMask));\r
165 DEBUG ((EFI_D_INFO, "CMask : %x\n", QhHw->CMask));\r
166 DEBUG ((EFI_D_INFO, "Hub address : %d\n", QhHw->HubAddr));\r
167 DEBUG ((EFI_D_INFO, "Hub port : %d\n", QhHw->PortNum));\r
168 DEBUG ((EFI_D_INFO, "Multiplier : %d\n", QhHw->Multiplier));\r
169\r
170 DEBUG ((EFI_D_INFO, "Cur QTD : %x\n", QhHw->CurQtd));\r
171\r
172 DEBUG ((EFI_D_INFO, "Next QTD : %x\n", QhHw->NextQtd));\r
173 DEBUG ((EFI_D_INFO, "AltNext QTD : %x\n", QhHw->AltQtd));\r
174 DEBUG ((EFI_D_INFO, "Status : %x\n", QhHw->Status));\r
175\r
176 EhcDumpStatus (QhHw->Status);\r
913cb9dc 177\r
178 if (QhHw->Pid == QTD_PID_SETUP) {\r
1c619535 179 DEBUG ((EFI_D_INFO, "PID : Setup\n"));\r
913cb9dc 180\r
181 } else if (QhHw->Pid == QTD_PID_INPUT) {\r
1c619535 182 DEBUG ((EFI_D_INFO, "PID : IN\n"));\r
913cb9dc 183\r
184 } else if (QhHw->Pid == QTD_PID_OUTPUT) {\r
1c619535 185 DEBUG ((EFI_D_INFO, "PID : OUT\n"));\r
913cb9dc 186 }\r
187\r
1c619535 188 DEBUG ((EFI_D_INFO, "Error Count : %d\n", QhHw->ErrCnt));\r
189 DEBUG ((EFI_D_INFO, "Current Page : %d\n", QhHw->CurPage));\r
190 DEBUG ((EFI_D_INFO, "IOC : %d\n", QhHw->IOC));\r
191 DEBUG ((EFI_D_INFO, "Total Bytes : %d\n", QhHw->TotalBytes));\r
192 DEBUG ((EFI_D_INFO, "Data Toggle : %d\n", QhHw->DataToggle));\r
913cb9dc 193\r
194 for (Index = 0; Index < 5; Index++) {\r
1c619535 195 DEBUG ((EFI_D_INFO, "Page[%d] : 0x%x\n", Index, QhHw->Page[Index]));\r
913cb9dc 196 }\r
197\r
1c619535 198 DEBUG ((EFI_D_INFO, "\n"));\r
913cb9dc 199\r
200 EFI_LIST_FOR_EACH (Entry, &Qh->Qtds) {\r
201 Qtd = EFI_LIST_CONTAINER (Entry, EHC_QTD, QtdList);\r
202 EhcDumpQtd (Qtd, NULL);\r
203\r
204 if (DumpBuf && (Qtd->DataLen != 0)) {\r
205 EhcDumpBuf (Qtd->Data, Qtd->DataLen);\r
206 }\r
207 }\r
208}\r
209\r
210\r
211/**\r
78c2ffb5 212 Dump the buffer in the form of hex.\r
913cb9dc 213\r
78c2ffb5 214 @param Buf The buffer to dump.\r
215 @param Len The length of buffer.\r
913cb9dc 216\r
78c2ffb5 217 @return None.\r
913cb9dc 218\r
219**/\r
220VOID\r
221EhcDumpBuf (\r
222 IN UINT8 *Buf,\r
223 IN UINTN Len\r
224 )\r
225{\r
226 UINTN Index;\r
227\r
228 for (Index = 0; Index < Len; Index++) {\r
229 if (Index % 16 == 0) {\r
1c619535 230 DEBUG ((EFI_D_INFO,"\n"));\r
913cb9dc 231 }\r
232\r
1c619535 233 DEBUG ((EFI_D_INFO, "%02x ", Buf[Index]));\r
913cb9dc 234 }\r
235\r
1c619535 236 DEBUG ((EFI_D_INFO, "\n"));\r
913cb9dc 237}\r