/** @file\r
Basic command line parser for EBL (Embedded Boot Loader)\r
\r
- Copyright (c) 2007, Intel Corporation<BR>\r
- Portions copyright (c) 2008-2009, Apple Inc. All rights reserved.\r
+ Copyright (c) 2007, Intel Corporation. All rights reserved.<BR>\r
+ Portions copyright (c) 2008 - 2009, Apple Inc. All rights reserved.<BR>\r
+ (C) Copyright 2015 Hewlett Packard Enterprise Development LP<BR>\r
\r
- All rights reserved. This program and the accompanying materials\r
+ This program and the accompanying materials\r
are licensed and made available under the terms and conditions of the BSD License\r
which accompanies this distribution. The full text of the license may be found at\r
http://opensource.org/licenses/bsd-license.php\r
\r
Module Name: HwDebug.c\r
\r
- Commands useful for debugging hardware. \r
+ Commands useful for debugging hardware.\r
\r
**/\r
\r
/**\r
Dump memory\r
\r
- Argv[0] - "md"[.#] # is optiona width 1, 2, 4, or 8. Default 1\r
+ Argv[0] - "md"[.#] # is optional width 1, 2, 4, or 8. Default 1\r
Argv[1] - Hex Address to dump\r
Argv[2] - Number of hex bytes to dump (0x20 is default)\r
\r
md 0x123445678 ; Dump 0x20 1 byte quantities starting at 0x123445678\r
\r
@param Argc Number of command arguments in Argv\r
- @param Argv Array of strings that represent the parsed command line. \r
- Argv[0] is the comamnd name\r
+ @param Argv Array of strings that represent the parsed command line.\r
+ Argv[0] is the command name\r
\r
@return EFI_SUCCESS\r
\r
**/\r
EFI_STATUS\r
+EFIAPI\r
EblMdCmd (\r
IN UINTN Argc,\r
IN CHAR8 **Argv\r
OutputData (Address, Length, Width, (UINTN)Address);\r
\r
Address += Length;\r
- \r
+\r
return EFI_SUCCESS;\r
}\r
\r
/**\r
Fill Memory with data\r
\r
- Argv[0] - "mfill"[.#] # is optiona width 1, 2, 4, or 8. Default 4\r
+ Argv[0] - "mfill"[.#] # is optional width 1, 2, 4, or 8. Default 4\r
Argv[1] - Hex Address to fill\r
Argv[2] - Data to write (0x00 is default)\r
Argv[3] - Number of units to dump.\r
mf 0x123445678 ; Start at 0x123445678 and write 00 (4 byte) to the next 1 byte\r
\r
@param Argc Number of command arguments in Argv\r
- @param Argv Array of strings that represent the parsed command line. \r
- Argv[0] is the comamnd name\r
+ @param Argv Array of strings that represent the parsed command line.\r
+ Argv[0] is the command name\r
\r
@return EFI_SUCCESS\r
\r
**/\r
EFI_STATUS\r
+EFIAPI\r
EblMfillCmd (\r
IN UINTN Argc,\r
IN CHAR8 **Argv\r
MmioWrite8 (Address, (UINT8)Data);\r
}\r
}\r
- \r
+\r
return EFI_SUCCESS;\r
}\r
\r
Argv[3] - func\r
\r
@param Argc Number of command arguments in Argv\r
- @param Argv Array of strings that represent the parsed command line. \r
- Argv[0] is the comamnd name\r
+ @param Argv Array of strings that represent the parsed command line.\r
+ Argv[0] is the command name\r
\r
@return EFI_SUCCESS\r
\r
**/\r
EFI_STATUS\r
+EFIAPI\r
EblPciCmd (\r
IN UINTN Argc,\r
IN CHAR8 **Argv\r
CHAR8 *Str;\r
UINTN ThisBus;\r
\r
- \r
+\r
BusArg = (Argc > 1) ? AsciiStrDecimalToUintn (Argv[1]) : 0;\r
DevArg = (Argc > 2) ? AsciiStrDecimalToUintn (Argv[2]) : 0;\r
FuncArg = (Argc > 3) ? AsciiStrDecimalToUintn (Argv[3]) : 0;\r
\r
Header = &PciHeader;\r
- \r
+\r
Status = gBS->LocateHandleBuffer (ByProtocol, &gEfiPciIoProtocolGuid, NULL, &HandleCount, &HandleBuffer);\r
if (EFI_ERROR (Status)) {\r
AsciiPrint ("No PCI devices found in the system\n");\r
Status = Pci->Pci.Read (Pci, EfiPciIoWidthUint32, 0, sizeof (PciHeader)/sizeof (UINT32), &PciHeader);\r
if (!EFI_ERROR (Status)) {\r
Hdr = &PciHeader.Bridge.Hdr;\r
- \r
+\r
if (Hdr->ClassCode[2] < sizeof (gPciDevClass)/sizeof (VOID *)) {\r
Str = gPciDevClass[Hdr->ClassCode[2]];\r
if (Hdr->ClassCode[2] == PCI_CLASS_SERIAL) {\r
AsciiPrint (" 0x%04x 0x%04x %a 0x%02x", Hdr->VendorId, Hdr->DeviceId, Str, Hdr->ClassCode[1]);\r
}\r
if (Seg != 0) {\r
- // Only print Segment if it is non zero. If you only have one PCI segment it is \r
+ // Only print Segment if it is non zero. If you only have one PCI segment it is\r
// redundent to print it out\r
AsciiPrint (" Seg:%d", Seg);\r
}\r
if (!EFI_ERROR (Status)) {\r
Pci->GetLocation (Pci, &Seg, &Bus, &Dev, &Func);\r
if ((Bus == BusArg) && (Dev == DevArg) && (Func == FuncArg)) {\r
- // Only print Segment if it is non zero. If you only have one PCI segment it is \r
- // redundent to print it out\r
+ // Only print Segment if it is non zero. If you only have one PCI segment it is\r
+ // redundant to print it out\r
if (Seg != 0) {\r
AsciiPrint ("Seg:%d ", Seg);\r
}\r
AsciiPrint ("Bus:%d Dev:%d Func:%d ", Bus, Dev, Func);\r
- \r
+\r
Status = Pci->Pci.Read (Pci, EfiPciIoWidthUint32, 0, sizeof (PciHeader)/sizeof (UINT32), Header);\r
if (!EFI_ERROR (Status)) {\r
Hdr = &PciHeader.Bridge.Hdr;\r
if (IS_PCI_BRIDGE (&PciHeader.Bridge)) {\r
Bridge = &PciHeader.Bridge.Bridge;\r
AsciiPrint (\r
- "PCI Bridge. Bus Primary %d Secondary %d Subordinate %d\n", \r
+ "PCI Bridge. Bus Primary %d Secondary %d Subordinate %d\n",\r
Bridge->PrimaryBus, Bridge->SecondaryBus, Bridge->SubordinateBus\r
);\r
AsciiPrint (" Bar 0: 0x%08x Bar 1: 0x%08x\n", Bridge->Bar[0], Bridge->Bar[1]);\r
}\r
}\r
}\r
- \r
+\r
AsciiPrint ("\n");\r
break;\r
}\r
}\r
}\r
}\r
- \r
+\r
FreePool (HandleBuffer);\r
return EFI_SUCCESS;\r
}\r
\r
\r
GLOBAL_REMOVE_IF_UNREFERENCED const EBL_COMMAND_TABLE mCmdPciDebugTemplate[] = {\r
- "pci",\r
- " [bus] [dev] [func]; Dump PCI",\r
- NULL,\r
- EblPciCmd\r
+ {\r
+ "pci",\r
+ " [bus] [dev] [func]; Dump PCI",\r
+ NULL,\r
+ EblPciCmd\r
+ }\r
};\r
\r
\r