1 /** @file 2 This file provides the information dump support for OHCI when in debug mode. 3 4 Copyright (c) 2013-2015 Intel Corporation. 5 6 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 10 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. 13 14 **/ 15 16 17 #include "Ohci.h" 18 19 20 /*++ 21 22 Print the data of ED and the TDs attached to the ED 23 24 @param Uhc Pointer to OHCI private data 25 @param Ed Pointer to a ED to free 26 @param Td Pointer to the Td head 27 28 @retval EFI_SUCCESS ED 29 30 **/ 31 EFI_STATUS 32 OhciDumpEdTdInfo ( 33 IN USB_OHCI_HC_DEV *Uhc, 34 IN ED_DESCRIPTOR *Ed, 35 IN TD_DESCRIPTOR *Td, 36 BOOLEAN Stage 37 ) 38 { 39 UINT32 Index; 40 41 if (Stage) { 42 DEBUG ((EFI_D_INFO, "\n Before executing command\n")); 43 }else{ 44 DEBUG ((EFI_D_INFO, "\n after executing command\n")); 45 } 46 if (Ed != NULL) { 47 DEBUG ((EFI_D_INFO, "\nED Address:%p, ED buffer:\n", Ed)); 48 DEBUG ((EFI_D_INFO, "DWord0 :TD Tail :TD Head :Next ED\n")); 49 for (Index = 0; Index < sizeof (ED_DESCRIPTOR)/4; Index ++) { 50 DEBUG ((EFI_D_INFO, "%8x ", *((UINT32*)(Ed) + Index) )); 51 } 52 DEBUG ((EFI_D_INFO, "\nNext TD buffer:%p\n", Td)); 53 } 54 while (Td != NULL) { 55 if (Td->Word0.DirPID == TD_SETUP_PID) { 56 DEBUG ((EFI_D_INFO, "\nSetup PID ")); 57 }else if (Td->Word0.DirPID == TD_OUT_PID) { 58 DEBUG ((EFI_D_INFO, "\nOut PID ")); 59 }else if (Td->Word0.DirPID == TD_IN_PID) { 60 DEBUG ((EFI_D_INFO, "\nIn PID ")); 61 }else if (Td->Word0.DirPID == TD_NODATA_PID) { 62 DEBUG ((EFI_D_INFO, "\nNo data PID ")); 63 } 64 DEBUG ((EFI_D_INFO, "TD Address:%p, TD buffer:\n", Td)); 65 DEBUG ((EFI_D_INFO, "DWord0 :CuBuffer:Next TD :Buff End:Next TD :DataBuff:ActLength\n")); 66 for (Index = 0; Index < sizeof (TD_DESCRIPTOR)/4; Index ++) { 67 DEBUG ((EFI_D_INFO, "%8x ", *((UINT32*)(Td) + Index) )); 68 } 69 DEBUG ((EFI_D_INFO, "\nCurrent TD Data buffer(size%d)\n", (UINT32)Td->ActualSendLength)); 70 for (Index = 0; Index < Td->ActualSendLength; Index ++) { 71 DEBUG ((EFI_D_INFO, "%2x ", *(UINT8 *)(UINTN)(Td->DataBuffer + Index) )); 72 } 73 Td = (TD_DESCRIPTOR *)(UINTN)(Td->NextTDPointer); 74 } 75 DEBUG ((EFI_D_INFO, "\n TD buffer End\n")); 76 77 return EFI_SUCCESS; 78 } 79 80 81 82 83 84 85