Trailing spaces create issue/warning when generating/applying patches. Contributed-under: TianoCore Contribution Agreement 1.0 Signed-off-by: Ronald Cron <ronald.cron@arm.com> Reviewed-By: Olivier Martin <olivier.martin@arm.com> git-svn-id: https://svn.code.sf.net/p/edk2/code/trunk/edk2@15833 6f19259b-4bc3-4df7-8a09-765794883524
		
			
				
	
	
		
			152 lines
		
	
	
		
			3.4 KiB
		
	
	
	
		
			C
		
	
	
	
	
	
			
		
		
	
	
			152 lines
		
	
	
		
			3.4 KiB
		
	
	
	
		
			C
		
	
	
	
	
	
/** @file
 | 
						|
  Hardware IO based debug commands
 | 
						|
 | 
						|
  Copyright (c) 2007, Intel Corporation. All rights reserved.<BR>
 | 
						|
  Portions copyright (c) 2008 - 2009, Apple Inc. All rights reserved.<BR>
 | 
						|
 | 
						|
  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.
 | 
						|
 | 
						|
  Commands useful for debugging hardware. IO commands separated out as not all
 | 
						|
  processor architectures support the IO command.
 | 
						|
 | 
						|
**/
 | 
						|
 | 
						|
#include "Ebl.h"
 | 
						|
 | 
						|
 | 
						|
 | 
						|
/**
 | 
						|
  Read from IO space
 | 
						|
 | 
						|
  Argv[0] - "ioread"[.#] # is optional width 1, 2, or 4. Default 1
 | 
						|
  Argv[1] - Hex IO address
 | 
						|
 | 
						|
  ior.4 0x3f8  ;Do a 32-bit IO Read from 0x3f8
 | 
						|
  ior   0x3f8  ;Do a  8-bit IO Read from 0x3f8
 | 
						|
 | 
						|
  @param  Argc   Number of command arguments in Argv
 | 
						|
  @param  Argv   Array of strings that represent the parsed command line.
 | 
						|
                 Argv[0] is the command name
 | 
						|
 | 
						|
  @return EFI_SUCCESS
 | 
						|
 | 
						|
**/
 | 
						|
EFI_STATUS
 | 
						|
EblIoReadCmd (
 | 
						|
  IN UINTN  Argc,
 | 
						|
  IN CHAR8  **Argv
 | 
						|
  )
 | 
						|
{
 | 
						|
  UINTN   Width;
 | 
						|
  UINTN   Port;
 | 
						|
  UINTN   Data;
 | 
						|
 | 
						|
  if (Argc < 2) {
 | 
						|
    return EFI_INVALID_PARAMETER;
 | 
						|
  }
 | 
						|
 | 
						|
  Port = AsciiStrHexToUintn (Argv[1]);
 | 
						|
  Width = WidthFromCommandName (Argv[0], 1);
 | 
						|
 | 
						|
  if (Width == 1) {
 | 
						|
    Data = IoRead8 (Port);
 | 
						|
  } else if (Width == 2) {
 | 
						|
    Data = IoRead16 (Port);
 | 
						|
  } else if (Width == 4) {
 | 
						|
    Data = IoRead32 (Port);
 | 
						|
  } else {
 | 
						|
    return EFI_INVALID_PARAMETER;
 | 
						|
  }
 | 
						|
 | 
						|
  AsciiPrint ("0x%04x = 0x%x", Port, Data);
 | 
						|
 | 
						|
  return EFI_SUCCESS;
 | 
						|
}
 | 
						|
 | 
						|
 | 
						|
/**
 | 
						|
  Write to IO space
 | 
						|
 | 
						|
  Argv[0] - "iowrite"[.#] # is optional width 1, 2, or 4. Default 1
 | 
						|
  Argv[1] - Hex IO address
 | 
						|
  Argv[2] - Hex data to write
 | 
						|
 | 
						|
  iow.4 0x3f8 af  ;Do a 32-bit IO write of af to 0x3f8
 | 
						|
  iow   0x3f8 af  ;Do an 8-bit IO write of af to 0x3f8
 | 
						|
 | 
						|
  @param  Argc   Number of command arguments in Argv
 | 
						|
  @param  Argv   Array of strings that represent the parsed command line.
 | 
						|
                 Argv[0] is the command name
 | 
						|
 | 
						|
  @return EFI_SUCCESS
 | 
						|
 | 
						|
**/
 | 
						|
EFI_STATUS
 | 
						|
EblIoWriteCmd (
 | 
						|
  IN UINTN  Argc,
 | 
						|
  IN CHAR8  **Argv
 | 
						|
  )
 | 
						|
{
 | 
						|
  UINTN   Width;
 | 
						|
  UINTN   Port;
 | 
						|
  UINTN   Data;
 | 
						|
 | 
						|
  if (Argc < 3) {
 | 
						|
    return EFI_INVALID_PARAMETER;
 | 
						|
  }
 | 
						|
 | 
						|
  Port = AsciiStrHexToUintn (Argv[1]);
 | 
						|
  Data = AsciiStrHexToUintn (Argv[2]);
 | 
						|
  Width = WidthFromCommandName (Argv[0], 1);
 | 
						|
 | 
						|
  if (Width == 1) {
 | 
						|
    IoWrite8 (Port, (UINT8)Data);
 | 
						|
  } else if (Width == 2) {
 | 
						|
    IoWrite16 (Port, (UINT16)Data);
 | 
						|
  } else if (Width == 4) {
 | 
						|
    IoWrite32 (Port, (UINT32)Data);
 | 
						|
  } else {
 | 
						|
    return EFI_INVALID_PARAMETER;
 | 
						|
  }
 | 
						|
  return EFI_SUCCESS;
 | 
						|
}
 | 
						|
 | 
						|
 | 
						|
GLOBAL_REMOVE_IF_UNREFERENCED const EBL_COMMAND_TABLE mCmdHwIoDebugTemplate[] =
 | 
						|
{
 | 
						|
  {
 | 
						|
    "ioread",
 | 
						|
    "[.{1|2|4}] Port ; IO read of width byte(s) from Port",
 | 
						|
    NULL,
 | 
						|
    EblIoReadCmd
 | 
						|
  },
 | 
						|
  {
 | 
						|
    "iowrite",
 | 
						|
    "[.{1|2|4}] Port Data ; IO write Data of width byte(s) to Port",
 | 
						|
    NULL,
 | 
						|
    EblIoWriteCmd
 | 
						|
  }
 | 
						|
};
 | 
						|
 | 
						|
 | 
						|
 | 
						|
/**
 | 
						|
  Initialize the commands in this in this file
 | 
						|
**/
 | 
						|
VOID
 | 
						|
EblInitializemdHwIoDebugCmds (
 | 
						|
  VOID
 | 
						|
  )
 | 
						|
{
 | 
						|
  if (FeaturePcdGet (PcdEmbeddedIoEnable)) {
 | 
						|
    EblAddCommands (mCmdHwIoDebugTemplate, sizeof (mCmdHwIoDebugTemplate)/sizeof (EBL_COMMAND_TABLE));
 | 
						|
  }
 | 
						|
}
 | 
						|
 |