/** @file This file provides the information dump support for OHCI when in debug mode. Copyright (c) 2013-2015 Intel Corporation. SPDX-License-Identifier: BSD-2-Clause-Patent **/ #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; } VOID OhciDumpReg ( IN USB_OHCI_HC_DEV *Ohc ) { UINT32 Data; for(int i=0;i < 22; i++){ Data = MmioRead32 (Ohc->UsbHcBaseAddress + 0x04*i); DEBUG ((EFI_D_INFO, "OhcDumpReg 0x%x = 0x%x\n",Ohc->UsbHcBaseAddress +0x04*i, Data)); } }