]>
git.proxmox.com Git - mirror_edk2.git/blob - MdeModulePkg/Bus/Pci/EhciDxe/EhciDebug.c
3 This file provides the information dump support for EHCI when in debug mode.
5 Copyright (c) 2007 - 2013, Intel Corporation. All rights reserved.<BR>
6 Copyright (c) Microsoft Corporation.<BR>
7 SPDX-License-Identifier: BSD-2-Clause-Patent
14 Dump the status byte in QTD/QH to a more friendly format.
16 @param State The state in the QTD/QH.
24 if (EHC_BIT_IS_SET (State
, QTD_STAT_DO_PING
)) {
25 DEBUG ((DEBUG_VERBOSE
, " Do_Ping"));
27 DEBUG ((DEBUG_VERBOSE
, " Do_Out"));
30 if (EHC_BIT_IS_SET (State
, QTD_STAT_DO_CS
)) {
31 DEBUG ((DEBUG_VERBOSE
, " Do_CS"));
33 DEBUG ((DEBUG_VERBOSE
, " Do_SS"));
36 if (EHC_BIT_IS_SET (State
, QTD_STAT_TRANS_ERR
)) {
37 DEBUG ((DEBUG_VERBOSE
, " Transfer_Error"));
40 if (EHC_BIT_IS_SET (State
, QTD_STAT_BABBLE_ERR
)) {
41 DEBUG ((DEBUG_VERBOSE
, " Babble_Error"));
44 if (EHC_BIT_IS_SET (State
, QTD_STAT_BUFF_ERR
)) {
45 DEBUG ((DEBUG_VERBOSE
, " Buffer_Error"));
48 if (EHC_BIT_IS_SET (State
, QTD_STAT_HALTED
)) {
49 DEBUG ((DEBUG_VERBOSE
, " Halted"));
52 if (EHC_BIT_IS_SET (State
, QTD_STAT_ACTIVE
)) {
53 DEBUG ((DEBUG_VERBOSE
, " Active"));
56 DEBUG ((DEBUG_VERBOSE
, "\n"));
60 Dump the fields of a QTD.
62 @param Qtd The QTD to dump.
63 @param Msg The message to print before the dump.
76 DEBUG ((DEBUG_VERBOSE
, Msg
));
79 DEBUG ((DEBUG_VERBOSE
, "Queue TD @ 0x%p, data length %d\n", Qtd
, (UINT32
)Qtd
->DataLen
));
83 DEBUG ((DEBUG_VERBOSE
, "Next QTD : %x\n", QtdHw
->NextQtd
));
84 DEBUG ((DEBUG_VERBOSE
, "AltNext QTD : %x\n", QtdHw
->AltNext
));
85 DEBUG ((DEBUG_VERBOSE
, "Status : %x\n", QtdHw
->Status
));
86 EhcDumpStatus (QtdHw
->Status
);
88 if (QtdHw
->Pid
== QTD_PID_SETUP
) {
89 DEBUG ((DEBUG_VERBOSE
, "PID : Setup\n"));
90 } else if (QtdHw
->Pid
== QTD_PID_INPUT
) {
91 DEBUG ((DEBUG_VERBOSE
, "PID : IN\n"));
92 } else if (QtdHw
->Pid
== QTD_PID_OUTPUT
) {
93 DEBUG ((DEBUG_VERBOSE
, "PID : OUT\n"));
96 DEBUG ((DEBUG_VERBOSE
, "Error Count : %d\n", QtdHw
->ErrCnt
));
97 DEBUG ((DEBUG_VERBOSE
, "Current Page : %d\n", QtdHw
->CurPage
));
98 DEBUG ((DEBUG_VERBOSE
, "IOC : %d\n", QtdHw
->Ioc
));
99 DEBUG ((DEBUG_VERBOSE
, "Total Bytes : %d\n", QtdHw
->TotalBytes
));
100 DEBUG ((DEBUG_VERBOSE
, "Data Toggle : %d\n", QtdHw
->DataToggle
));
102 for (Index
= 0; Index
< 5; Index
++) {
103 DEBUG ((DEBUG_VERBOSE
, "Page[%d] : 0x%x\n", (UINT32
)Index
, QtdHw
->Page
[Index
]));
110 @param Qh The queue head to dump.
111 @param Msg The message to print before the dump.
112 @param DumpBuf Whether to dump the memory buffer of the associated QTD.
128 DEBUG ((DEBUG_VERBOSE
, Msg
));
133 "Queue head @ 0x%p, interval %ld, next qh %p\n",
135 (UINT64
)Qh
->Interval
,
141 DEBUG ((DEBUG_VERBOSE
, "Hoziontal link: %x\n", QhHw
->HorizonLink
));
142 DEBUG ((DEBUG_VERBOSE
, "Device address: %d\n", QhHw
->DeviceAddr
));
143 DEBUG ((DEBUG_VERBOSE
, "Inactive : %d\n", QhHw
->Inactive
));
144 DEBUG ((DEBUG_VERBOSE
, "EP number : %d\n", QhHw
->EpNum
));
145 DEBUG ((DEBUG_VERBOSE
, "EP speed : %d\n", QhHw
->EpSpeed
));
146 DEBUG ((DEBUG_VERBOSE
, "DT control : %d\n", QhHw
->DtCtrl
));
147 DEBUG ((DEBUG_VERBOSE
, "Reclaim head : %d\n", QhHw
->ReclaimHead
));
148 DEBUG ((DEBUG_VERBOSE
, "Max packet len: %d\n", QhHw
->MaxPacketLen
));
149 DEBUG ((DEBUG_VERBOSE
, "Ctrl EP : %d\n", QhHw
->CtrlEp
));
150 DEBUG ((DEBUG_VERBOSE
, "Nak reload : %d\n", QhHw
->NakReload
));
152 DEBUG ((DEBUG_VERBOSE
, "SMask : %x\n", QhHw
->SMask
));
153 DEBUG ((DEBUG_VERBOSE
, "CMask : %x\n", QhHw
->CMask
));
154 DEBUG ((DEBUG_VERBOSE
, "Hub address : %d\n", QhHw
->HubAddr
));
155 DEBUG ((DEBUG_VERBOSE
, "Hub port : %d\n", QhHw
->PortNum
));
156 DEBUG ((DEBUG_VERBOSE
, "Multiplier : %d\n", QhHw
->Multiplier
));
158 DEBUG ((DEBUG_VERBOSE
, "Cur QTD : %x\n", QhHw
->CurQtd
));
160 DEBUG ((DEBUG_VERBOSE
, "Next QTD : %x\n", QhHw
->NextQtd
));
161 DEBUG ((DEBUG_VERBOSE
, "AltNext QTD : %x\n", QhHw
->AltQtd
));
162 DEBUG ((DEBUG_VERBOSE
, "Status : %x\n", QhHw
->Status
));
164 EhcDumpStatus (QhHw
->Status
);
166 if (QhHw
->Pid
== QTD_PID_SETUP
) {
167 DEBUG ((DEBUG_VERBOSE
, "PID : Setup\n"));
168 } else if (QhHw
->Pid
== QTD_PID_INPUT
) {
169 DEBUG ((DEBUG_VERBOSE
, "PID : IN\n"));
170 } else if (QhHw
->Pid
== QTD_PID_OUTPUT
) {
171 DEBUG ((DEBUG_VERBOSE
, "PID : OUT\n"));
174 DEBUG ((DEBUG_VERBOSE
, "Error Count : %d\n", QhHw
->ErrCnt
));
175 DEBUG ((DEBUG_VERBOSE
, "Current Page : %d\n", QhHw
->CurPage
));
176 DEBUG ((DEBUG_VERBOSE
, "IOC : %d\n", QhHw
->Ioc
));
177 DEBUG ((DEBUG_VERBOSE
, "Total Bytes : %d\n", QhHw
->TotalBytes
));
178 DEBUG ((DEBUG_VERBOSE
, "Data Toggle : %d\n", QhHw
->DataToggle
));
180 for (Index
= 0; Index
< 5; Index
++) {
181 DEBUG ((DEBUG_VERBOSE
, "Page[%d] : 0x%x\n", Index
, QhHw
->Page
[Index
]));
184 DEBUG ((DEBUG_VERBOSE
, "\n"));
186 BASE_LIST_FOR_EACH (Entry
, &Qh
->Qtds
) {
187 Qtd
= EFI_LIST_CONTAINER (Entry
, EHC_QTD
, QtdList
);
188 EhcDumpQtd (Qtd
, NULL
);
190 if (DumpBuf
&& (Qtd
->DataLen
!= 0)) {
191 EhcDumpBuf (Qtd
->Data
, Qtd
->DataLen
);
197 Dump the buffer in the form of hex.
199 @param Buf The buffer to dump.
200 @param Len The length of buffer.
211 for (Index
= 0; Index
< Len
; Index
++) {
212 if (Index
% 16 == 0) {
213 DEBUG ((DEBUG_VERBOSE
, "\n"));
216 DEBUG ((DEBUG_VERBOSE
, "%02x ", Buf
[Index
]));
219 DEBUG ((DEBUG_VERBOSE
, "\n"));