]>
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, Intel Corporation
6 All rights reserved. This program and the accompanying materials
7 are licensed and made available under the terms and conditions of the BSD License
8 which accompanies this distribution. The full text of the license may be found at
9 http://opensource.org/licenses/bsd-license.php
11 THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,
12 WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.
20 Dump the status byte in QTD/QH to a more friendly format.
22 @param State The state in the QTD/QH.
32 if (EHC_BIT_IS_SET (State
, QTD_STAT_DO_PING
)) {
33 DEBUG ((EFI_D_INFO
, " Do_Ping"));
35 DEBUG ((EFI_D_INFO
, " Do_Out"));
38 if (EHC_BIT_IS_SET (State
, QTD_STAT_DO_CS
)) {
39 DEBUG ((EFI_D_INFO
, " Do_CS"));
41 DEBUG ((EFI_D_INFO
, " Do_SS"));
44 if (EHC_BIT_IS_SET (State
, QTD_STAT_TRANS_ERR
)) {
45 DEBUG ((EFI_D_INFO
, " Transfer_Error"));
48 if (EHC_BIT_IS_SET (State
, QTD_STAT_BABBLE_ERR
)) {
49 DEBUG ((EFI_D_INFO
, " Babble_Error"));
52 if (EHC_BIT_IS_SET (State
, QTD_STAT_BUFF_ERR
)) {
53 DEBUG ((EFI_D_INFO
, " Buffer_Error"));
56 if (EHC_BIT_IS_SET (State
, QTD_STAT_HALTED
)) {
57 DEBUG ((EFI_D_INFO
, " Halted"));
60 if (EHC_BIT_IS_SET (State
, QTD_STAT_ACTIVE
)) {
61 DEBUG ((EFI_D_INFO
, " Active"));
64 DEBUG ((EFI_D_INFO
, "\n"));
69 Dump the fields of a QTD.
71 @param Qtd The QTD to dump.
72 @param Msg The message to print before the dump.
87 DEBUG ((EFI_D_INFO
, Msg
));
90 DEBUG ((EFI_D_INFO
, "Queue TD @ 0x%p, data length %d\n", Qtd
, (UINT32
)Qtd
->DataLen
));
94 DEBUG ((EFI_D_INFO
, "Next QTD : %x\n", QtdHw
->NextQtd
));
95 DEBUG ((EFI_D_INFO
, "AltNext QTD : %x\n", QtdHw
->AltNext
));
96 DEBUG ((EFI_D_INFO
, "Status : %x\n", QtdHw
->Status
));
97 EhcDumpStatus (QtdHw
->Status
);
99 if (QtdHw
->Pid
== QTD_PID_SETUP
) {
100 DEBUG ((EFI_D_INFO
, "PID : Setup\n"));
102 } else if (QtdHw
->Pid
== QTD_PID_INPUT
) {
103 DEBUG ((EFI_D_INFO
, "PID : IN\n"));
105 } else if (QtdHw
->Pid
== QTD_PID_OUTPUT
) {
106 DEBUG ((EFI_D_INFO
, "PID : OUT\n"));
110 DEBUG ((EFI_D_INFO
, "Error Count : %d\n", QtdHw
->ErrCnt
));
111 DEBUG ((EFI_D_INFO
, "Current Page : %d\n", QtdHw
->CurPage
));
112 DEBUG ((EFI_D_INFO
, "IOC : %d\n", QtdHw
->IOC
));
113 DEBUG ((EFI_D_INFO
, "Total Bytes : %d\n", QtdHw
->TotalBytes
));
114 DEBUG ((EFI_D_INFO
, "Data Toggle : %d\n", QtdHw
->DataToggle
));
116 for (Index
= 0; Index
< 5; Index
++) {
117 DEBUG ((EFI_D_INFO
, "Page[%d] : 0x%x\n", (UINT32
)Index
, QtdHw
->Page
[Index
]));
125 @param Qh The queue head to dump.
126 @param Msg The message to print before the dump.
127 @param DumpBuf Whether to dump the memory buffer of the associated QTD.
145 DEBUG ((EFI_D_INFO
, Msg
));
148 DEBUG ((EFI_D_INFO
, "Queue head @ 0x%p, interval %ld, next qh %p\n",
149 Qh
, (UINT64
)Qh
->Interval
, Qh
->NextQh
));
153 DEBUG ((EFI_D_INFO
, "Hoziontal link: %x\n", QhHw
->HorizonLink
));
154 DEBUG ((EFI_D_INFO
, "Device address: %d\n", QhHw
->DeviceAddr
));
155 DEBUG ((EFI_D_INFO
, "Inactive : %d\n", QhHw
->Inactive
));
156 DEBUG ((EFI_D_INFO
, "EP number : %d\n", QhHw
->EpNum
));
157 DEBUG ((EFI_D_INFO
, "EP speed : %d\n", QhHw
->EpSpeed
));
158 DEBUG ((EFI_D_INFO
, "DT control : %d\n", QhHw
->DtCtrl
));
159 DEBUG ((EFI_D_INFO
, "Reclaim head : %d\n", QhHw
->ReclaimHead
));
160 DEBUG ((EFI_D_INFO
, "Max packet len: %d\n", QhHw
->MaxPacketLen
));
161 DEBUG ((EFI_D_INFO
, "Ctrl EP : %d\n", QhHw
->CtrlEp
));
162 DEBUG ((EFI_D_INFO
, "Nak reload : %d\n", QhHw
->NakReload
));
164 DEBUG ((EFI_D_INFO
, "SMask : %x\n", QhHw
->SMask
));
165 DEBUG ((EFI_D_INFO
, "CMask : %x\n", QhHw
->CMask
));
166 DEBUG ((EFI_D_INFO
, "Hub address : %d\n", QhHw
->HubAddr
));
167 DEBUG ((EFI_D_INFO
, "Hub port : %d\n", QhHw
->PortNum
));
168 DEBUG ((EFI_D_INFO
, "Multiplier : %d\n", QhHw
->Multiplier
));
170 DEBUG ((EFI_D_INFO
, "Cur QTD : %x\n", QhHw
->CurQtd
));
172 DEBUG ((EFI_D_INFO
, "Next QTD : %x\n", QhHw
->NextQtd
));
173 DEBUG ((EFI_D_INFO
, "AltNext QTD : %x\n", QhHw
->AltQtd
));
174 DEBUG ((EFI_D_INFO
, "Status : %x\n", QhHw
->Status
));
176 EhcDumpStatus (QhHw
->Status
);
178 if (QhHw
->Pid
== QTD_PID_SETUP
) {
179 DEBUG ((EFI_D_INFO
, "PID : Setup\n"));
181 } else if (QhHw
->Pid
== QTD_PID_INPUT
) {
182 DEBUG ((EFI_D_INFO
, "PID : IN\n"));
184 } else if (QhHw
->Pid
== QTD_PID_OUTPUT
) {
185 DEBUG ((EFI_D_INFO
, "PID : OUT\n"));
188 DEBUG ((EFI_D_INFO
, "Error Count : %d\n", QhHw
->ErrCnt
));
189 DEBUG ((EFI_D_INFO
, "Current Page : %d\n", QhHw
->CurPage
));
190 DEBUG ((EFI_D_INFO
, "IOC : %d\n", QhHw
->IOC
));
191 DEBUG ((EFI_D_INFO
, "Total Bytes : %d\n", QhHw
->TotalBytes
));
192 DEBUG ((EFI_D_INFO
, "Data Toggle : %d\n", QhHw
->DataToggle
));
194 for (Index
= 0; Index
< 5; Index
++) {
195 DEBUG ((EFI_D_INFO
, "Page[%d] : 0x%x\n", Index
, QhHw
->Page
[Index
]));
198 DEBUG ((EFI_D_INFO
, "\n"));
200 EFI_LIST_FOR_EACH (Entry
, &Qh
->Qtds
) {
201 Qtd
= EFI_LIST_CONTAINER (Entry
, EHC_QTD
, QtdList
);
202 EhcDumpQtd (Qtd
, NULL
);
204 if (DumpBuf
&& (Qtd
->DataLen
!= 0)) {
205 EhcDumpBuf (Qtd
->Data
, Qtd
->DataLen
);
212 Dump the buffer in the form of hex.
214 @param Buf The buffer to dump.
215 @param Len The length of buffer.
228 for (Index
= 0; Index
< Len
; Index
++) {
229 if (Index
% 16 == 0) {
230 DEBUG ((EFI_D_INFO
,"\n"));
233 DEBUG ((EFI_D_INFO
, "%02x ", Buf
[Index
]));
236 DEBUG ((EFI_D_INFO
, "\n"));