mirror of https://github.com/acidanthera/audk.git
85 lines
2.6 KiB
C
85 lines
2.6 KiB
C
/** @file
|
|
This file provides the information dump support for OHCI when in debug mode.
|
|
|
|
Copyright (c) 2013-2015 Intel Corporation.
|
|
|
|
This program and the accompanying materials
|
|
are licensed and made available under the terms and conditions of the BSD License
|
|
which accompanies this distribution. The full text of the license may be found at
|
|
http://opensource.org/licenses/bsd-license.php
|
|
|
|
THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,
|
|
WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.
|
|
|
|
**/
|
|
|
|
|
|
#include "Ohci.h"
|
|
|
|
|
|
/*++
|
|
|
|
Print the data of ED and the TDs attached to the ED
|
|
|
|
@param Uhc Pointer to OHCI private data
|
|
@param Ed Pointer to a ED to free
|
|
@param Td Pointer to the Td head
|
|
|
|
@retval EFI_SUCCESS ED
|
|
|
|
**/
|
|
EFI_STATUS
|
|
OhciDumpEdTdInfo (
|
|
IN USB_OHCI_HC_DEV *Uhc,
|
|
IN ED_DESCRIPTOR *Ed,
|
|
IN TD_DESCRIPTOR *Td,
|
|
BOOLEAN Stage
|
|
)
|
|
{
|
|
UINT32 Index;
|
|
|
|
if (Stage) {
|
|
DEBUG ((EFI_D_INFO, "\n Before executing command\n"));
|
|
}else{
|
|
DEBUG ((EFI_D_INFO, "\n after executing command\n"));
|
|
}
|
|
if (Ed != NULL) {
|
|
DEBUG ((EFI_D_INFO, "\nED Address:%p, ED buffer:\n", Ed));
|
|
DEBUG ((EFI_D_INFO, "DWord0 :TD Tail :TD Head :Next ED\n"));
|
|
for (Index = 0; Index < sizeof (ED_DESCRIPTOR)/4; Index ++) {
|
|
DEBUG ((EFI_D_INFO, "%8x ", *((UINT32*)(Ed) + Index) ));
|
|
}
|
|
DEBUG ((EFI_D_INFO, "\nNext TD buffer:%p\n", Td));
|
|
}
|
|
while (Td != NULL) {
|
|
if (Td->Word0.DirPID == TD_SETUP_PID) {
|
|
DEBUG ((EFI_D_INFO, "\nSetup PID "));
|
|
}else if (Td->Word0.DirPID == TD_OUT_PID) {
|
|
DEBUG ((EFI_D_INFO, "\nOut PID "));
|
|
}else if (Td->Word0.DirPID == TD_IN_PID) {
|
|
DEBUG ((EFI_D_INFO, "\nIn PID "));
|
|
}else if (Td->Word0.DirPID == TD_NODATA_PID) {
|
|
DEBUG ((EFI_D_INFO, "\nNo data PID "));
|
|
}
|
|
DEBUG ((EFI_D_INFO, "TD Address:%p, TD buffer:\n", Td));
|
|
DEBUG ((EFI_D_INFO, "DWord0 :CuBuffer:Next TD :Buff End:Next TD :DataBuff:ActLength\n"));
|
|
for (Index = 0; Index < sizeof (TD_DESCRIPTOR)/4; Index ++) {
|
|
DEBUG ((EFI_D_INFO, "%8x ", *((UINT32*)(Td) + Index) ));
|
|
}
|
|
DEBUG ((EFI_D_INFO, "\nCurrent TD Data buffer(size%d)\n", (UINT32)Td->ActualSendLength));
|
|
for (Index = 0; Index < Td->ActualSendLength; Index ++) {
|
|
DEBUG ((EFI_D_INFO, "%2x ", *(UINT8 *)(UINTN)(Td->DataBuffer + Index) ));
|
|
}
|
|
Td = (TD_DESCRIPTOR *)(UINTN)(Td->NextTDPointer);
|
|
}
|
|
DEBUG ((EFI_D_INFO, "\n TD buffer End\n"));
|
|
|
|
return EFI_SUCCESS;
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|