mirror of
https://github.com/AsahiLinux/u-boot
synced 2024-12-23 19:43:33 +00:00
406 lines
14 KiB
C
406 lines
14 KiB
C
|
/**
|
||
|
* @file IxNpeDlNpeMgrUtils_p.h
|
||
|
*
|
||
|
* @author Intel Corporation
|
||
|
* @date 18 February 2002
|
||
|
* @brief This file contains the private API for the NpeMgr module.
|
||
|
*
|
||
|
*
|
||
|
* @par
|
||
|
* IXP400 SW Release version 2.0
|
||
|
*
|
||
|
* -- Copyright Notice --
|
||
|
*
|
||
|
* @par
|
||
|
* Copyright 2001-2005, Intel Corporation.
|
||
|
* All rights reserved.
|
||
|
*
|
||
|
* @par
|
||
|
* Redistribution and use in source and binary forms, with or without
|
||
|
* modification, are permitted provided that the following conditions
|
||
|
* are met:
|
||
|
* 1. Redistributions of source code must retain the above copyright
|
||
|
* notice, this list of conditions and the following disclaimer.
|
||
|
* 2. Redistributions in binary form must reproduce the above copyright
|
||
|
* notice, this list of conditions and the following disclaimer in the
|
||
|
* documentation and/or other materials provided with the distribution.
|
||
|
* 3. Neither the name of the Intel Corporation nor the names of its contributors
|
||
|
* may be used to endorse or promote products derived from this software
|
||
|
* without specific prior written permission.
|
||
|
*
|
||
|
* @par
|
||
|
* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS ``AS IS''
|
||
|
* AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
|
||
|
* IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
|
||
|
* ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE
|
||
|
* FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
|
||
|
* DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
|
||
|
* OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
|
||
|
* HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
|
||
|
* LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
|
||
|
* OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
|
||
|
* SUCH DAMAGE.
|
||
|
*
|
||
|
* @par
|
||
|
* -- End of Copyright Notice --
|
||
|
*/
|
||
|
|
||
|
|
||
|
/**
|
||
|
* @defgroup IxNpeDlNpeMgrUtils_p IxNpeDlNpeMgrUtils_p
|
||
|
*
|
||
|
* @brief The private API for the IxNpeDl NpeMgr Utils module
|
||
|
*
|
||
|
* @{
|
||
|
*/
|
||
|
|
||
|
#ifndef IXNPEDLNPEMGRUTILS_P_H
|
||
|
#define IXNPEDLNPEMGRUTILS_P_H
|
||
|
|
||
|
|
||
|
/*
|
||
|
* Put the user defined include files required.
|
||
|
*/
|
||
|
#include "IxNpeDl.h"
|
||
|
#include "IxOsalTypes.h"
|
||
|
#include "IxNpeDlNpeMgrEcRegisters_p.h"
|
||
|
|
||
|
|
||
|
/*
|
||
|
* Function Prototypes
|
||
|
*/
|
||
|
|
||
|
/**
|
||
|
* @fn IX_STATUS ixNpeDlNpeMgrInsMemWrite (UINT32 npeBaseAddress,
|
||
|
UINT32 insMemAddress,
|
||
|
UINT32 insMemData,
|
||
|
BOOL verify)
|
||
|
*
|
||
|
* @brief Writes a word to NPE Instruction memory
|
||
|
*
|
||
|
* @param UINT32 [in] npeBaseAddress - Base Address of NPE
|
||
|
* @param UINT32 [in] insMemAddress - NPE instruction memory address to write
|
||
|
* @param UINT32 [in] insMemData - data to write to instruction memory
|
||
|
* @param BOOL [in] verify - if TRUE, verify the memory location is
|
||
|
* written successfully.
|
||
|
*
|
||
|
* This function is used to write a single word of data to a location in NPE
|
||
|
* instruction memory. If the <i>verify</i> option is ON, NpeDl will read back
|
||
|
* from the memory location to verify that it was written successfully
|
||
|
*
|
||
|
* @pre
|
||
|
*
|
||
|
* @post
|
||
|
*
|
||
|
* @return
|
||
|
* - IX_FAIL if verify is TRUE and the memory location was not written
|
||
|
* successfully
|
||
|
* - IX_SUCCESS otherwise
|
||
|
*/
|
||
|
IX_STATUS
|
||
|
ixNpeDlNpeMgrInsMemWrite (UINT32 npeBaseAddress, UINT32 insMemAddress,
|
||
|
UINT32 insMemData, BOOL verify);
|
||
|
|
||
|
|
||
|
/**
|
||
|
* @fn IX_STATUS ixNpeDlNpeMgrDataMemWrite (UINT32 npeBaseAddress,
|
||
|
UINT32 dataMemAddress,
|
||
|
UINT32 dataMemData,
|
||
|
BOOL verify)
|
||
|
*
|
||
|
* @brief Writes a word to NPE Data memory
|
||
|
*
|
||
|
* @param UINT32 [in] npeBaseAddress - Base Address of NPE
|
||
|
* @param UINT32 [in] dataMemAddress - NPE data memory address to write
|
||
|
* @param UINT32 [in] dataMemData - data to write to NPE data memory
|
||
|
* @param BOOL [in] verify - if TRUE, verify the memory location is
|
||
|
* written successfully.
|
||
|
*
|
||
|
* This function is used to write a single word of data to a location in NPE
|
||
|
* data memory. If the <i>verify</i> option is ON, NpeDl will read back from
|
||
|
* the memory location to verify that it was written successfully
|
||
|
*
|
||
|
* @pre
|
||
|
*
|
||
|
* @post
|
||
|
*
|
||
|
* @return
|
||
|
* - IX_FAIL if verify is TRUE and the memory location was not written
|
||
|
* successfully
|
||
|
* - IX_SUCCESS otherwise
|
||
|
*/
|
||
|
IX_STATUS
|
||
|
ixNpeDlNpeMgrDataMemWrite (UINT32 npeBaseAddress, UINT32 dataMemAddress,
|
||
|
UINT32 dataMemData, BOOL verify);
|
||
|
|
||
|
|
||
|
/**
|
||
|
* @fn void ixNpeDlNpeMgrExecAccRegWrite (UINT32 npeBaseAddress,
|
||
|
UINT32 regAddress,
|
||
|
UINT32 regData)
|
||
|
*
|
||
|
* @brief Writes a word to an NPE Execution Access register
|
||
|
*
|
||
|
* @param UINT32 [in] npeBaseAddress - Base Address of NPE
|
||
|
* @param UINT32 [in] regAddress - NPE Execution Access register address
|
||
|
* @param UINT32 [in] regData - data to write to register
|
||
|
*
|
||
|
* This function is used to write a single word of data to an NPE Execution
|
||
|
* Access register.
|
||
|
*
|
||
|
* @pre
|
||
|
*
|
||
|
* @post
|
||
|
*
|
||
|
* @return none
|
||
|
*/
|
||
|
void
|
||
|
ixNpeDlNpeMgrExecAccRegWrite (UINT32 npeBaseAddress, UINT32 regAddress,
|
||
|
UINT32 regData);
|
||
|
|
||
|
|
||
|
/**
|
||
|
* @fn UINT32 ixNpeDlNpeMgrExecAccRegRead (UINT32 npeBaseAddress,
|
||
|
UINT32 regAddress)
|
||
|
*
|
||
|
* @brief Reads the contents of an NPE Execution Access register
|
||
|
*
|
||
|
* @param UINT32 [in] npeBaseAddress - Base Address of NPE
|
||
|
* @param UINT32 [in] regAddress - NPE Execution Access register address
|
||
|
*
|
||
|
* This function is used to read the contents of an NPE Execution
|
||
|
* Access register.
|
||
|
*
|
||
|
* @pre
|
||
|
*
|
||
|
* @post
|
||
|
*
|
||
|
* @return The value read from the Execution Access register
|
||
|
*/
|
||
|
UINT32
|
||
|
ixNpeDlNpeMgrExecAccRegRead (UINT32 npeBaseAddress, UINT32 regAddress);
|
||
|
|
||
|
|
||
|
/**
|
||
|
* @fn void ixNpeDlNpeMgrCommandIssue (UINT32 npeBaseAddress,
|
||
|
UINT32 command)
|
||
|
*
|
||
|
* @brief Issues an NPE Execution Control command
|
||
|
*
|
||
|
* @param UINT32 [in] npeBaseAddress - Base Address of NPE
|
||
|
* @param UINT32 [in] command - Command to issue
|
||
|
*
|
||
|
* This function is used to issue a stand-alone NPE Execution Control command
|
||
|
* (e.g. command to Stop NPE execution)
|
||
|
*
|
||
|
* @pre
|
||
|
*
|
||
|
* @post
|
||
|
*
|
||
|
* @return none
|
||
|
*/
|
||
|
void
|
||
|
ixNpeDlNpeMgrCommandIssue (UINT32 npeBaseAddress, UINT32 command);
|
||
|
|
||
|
|
||
|
/**
|
||
|
* @fn void ixNpeDlNpeMgrDebugInstructionPreExec (UINT32 npeBaseAddress)
|
||
|
*
|
||
|
* @brief Prepare to executes one or more NPE instructions in the Debug
|
||
|
* Execution Stack level.
|
||
|
*
|
||
|
* @param UINT32 [in] npeBaseAddress - Base Address of NPE
|
||
|
*
|
||
|
* This function should be called once before a sequence of calls to
|
||
|
* ixNpeDlNpeMgrDebugInstructionExec().
|
||
|
*
|
||
|
* @pre
|
||
|
*
|
||
|
* @post
|
||
|
* - ixNpeDlNpeMgrDebugInstructionPostExec() should be called to restore
|
||
|
* registers values altered by this function
|
||
|
*
|
||
|
* @return none
|
||
|
*/
|
||
|
void
|
||
|
ixNpeDlNpeMgrDebugInstructionPreExec (UINT32 npeBaseAddress);
|
||
|
|
||
|
|
||
|
/**
|
||
|
* @fn IX_STATUS ixNpeDlNpeMgrDebugInstructionExec (UINT32 npeBaseAddress,
|
||
|
UINT32 npeInstruction,
|
||
|
UINT32 ctxtNum,
|
||
|
UINT32 ldur)
|
||
|
*
|
||
|
* @brief Executes a single instruction on the NPE at the Debug Execution Stack
|
||
|
* level
|
||
|
*
|
||
|
* @param UINT32 [in] npeBaseAddress - Base Address of NPE
|
||
|
* @param UINT32 [in] npeInstruction - Value to write to INSTR (Instruction)
|
||
|
* register
|
||
|
* @param UINT32 [in] ctxtNum - context the instruction will be executed
|
||
|
* in and which context store it may access
|
||
|
* @param UINT32 [in] ldur - Long Immediate Duration, set to non-zero
|
||
|
* to use long-immediate mode instruction
|
||
|
*
|
||
|
* This function is used to execute a single instruction in the NPE pipeline at
|
||
|
* the debug Execution Context Stack level. It won't disturb the state of other
|
||
|
* executing contexts. Its useful for performing NPE operations, such as
|
||
|
* writing to NPE Context Store registers and physical registers, that cannot
|
||
|
* be carried out directly using the Configuration Bus registers. This function
|
||
|
* will return TIMEOUT status if NPE not responding due to NPS is hang / halt.
|
||
|
*
|
||
|
* @pre
|
||
|
* - The NPE should be stopped and in a clean state
|
||
|
* - ixNpeDlNpeMgrDebugInstructionPreExec() should be called once before
|
||
|
* a sequential of 1 or more calls to this function
|
||
|
*
|
||
|
* @post
|
||
|
* - ixNpeDlNpeMgrDebugInstructionPostExec() should be called after
|
||
|
* a sequence of calls to this function
|
||
|
*
|
||
|
* @return
|
||
|
* - IX_NPEDL_CRITICAL_NPE_ERR if execution of instruction failed / timeout
|
||
|
* - IX_SUCCESS otherwise
|
||
|
*/
|
||
|
IX_STATUS
|
||
|
ixNpeDlNpeMgrDebugInstructionExec (UINT32 npeBaseAddress,
|
||
|
UINT32 npeInstruction,
|
||
|
UINT32 ctxtNum, UINT32 ldur);
|
||
|
|
||
|
|
||
|
/**
|
||
|
* @fn void ixNpeDlNpeMgrDebugInstructionPostExec (UINT32 npeBaseAddress)
|
||
|
*
|
||
|
* @brief Clean up after executing one or more NPE instructions in the
|
||
|
* Debug Stack Level
|
||
|
*
|
||
|
* @param UINT32 [in] npeBaseAddress - Base Address of NPE
|
||
|
*
|
||
|
* This function should be called once following a sequence of calls to
|
||
|
* ixNpeDlNpeMgrDebugInstructionExec().
|
||
|
*
|
||
|
* @pre
|
||
|
* - ixNpeDlNpeMgrDebugInstructionPreExec() was called earlier
|
||
|
*
|
||
|
* @post
|
||
|
* - The Instruction Pipeline will cleared
|
||
|
*
|
||
|
* @return none
|
||
|
*/
|
||
|
void
|
||
|
ixNpeDlNpeMgrDebugInstructionPostExec (UINT32 npeBaseAddress);
|
||
|
|
||
|
|
||
|
/**
|
||
|
* @fn IX_STATUS ixNpeDlNpeMgrPhysicalRegWrite (UINT32 npeBaseAddress,
|
||
|
UINT32 regAddr,
|
||
|
UINT32 regValue,
|
||
|
BOOL verify)
|
||
|
*
|
||
|
* @brief Write one of the 32* 32-bit physical registers in the NPE data
|
||
|
* register file
|
||
|
*
|
||
|
* @param UINT32 [in] npeBaseAddress - Base Address of NPE
|
||
|
* @param UINT32 [in] regAddr - number of the physical register (0-31)*
|
||
|
* @param UINT32 [in] regValue - value to write to the physical register
|
||
|
* @param BOOL [in] verify - if TRUE, verify the register is written
|
||
|
* successfully.
|
||
|
*
|
||
|
* This function writes a physical register in the NPE data register file.
|
||
|
* If the <i>verify</i> option is ON, NpeDl will read back the register to
|
||
|
* verify that it was written successfully
|
||
|
* *Note that release 1.0 of this software supports 32 physical
|
||
|
* registers, but 64 may be supported in future versions.
|
||
|
*
|
||
|
* @pre
|
||
|
* - The NPE should be stopped and in a clean state
|
||
|
* - ixNpeDlNpeMgrDebugInstructionPreExec() should be called once before
|
||
|
* a sequential of 1 or more calls to this function
|
||
|
*
|
||
|
* @post
|
||
|
* - Contents of REGMAP Context Store register for Context 0 will be altered
|
||
|
* - ixNpeDlNpeMgrDebugInstructionPostExec() should be called after
|
||
|
* a sequence of calls to this function
|
||
|
*
|
||
|
* @return
|
||
|
* - IX_FAIL if verify is TRUE and the Context Register was not written
|
||
|
* successfully
|
||
|
* - IX_SUCCESS if Context Register was written successfully
|
||
|
* - IX_NPEDL_CRITICAL_NPE_ERR if Context Register was not written
|
||
|
* successfully due to timeout error where NPE is not responding
|
||
|
*/
|
||
|
IX_STATUS
|
||
|
ixNpeDlNpeMgrPhysicalRegWrite (UINT32 npeBaseAddress, UINT32 regAddr,
|
||
|
UINT32 regValue, BOOL verify);
|
||
|
|
||
|
|
||
|
/**
|
||
|
* @fn IX_STATUS ixNpeDlNpeMgrCtxtRegWrite (UINT32 npeBaseAddress,
|
||
|
UINT32 ctxtNum,
|
||
|
IxNpeDlCtxtRegNum ctxtReg,
|
||
|
UINT32 ctxtRegVal,
|
||
|
BOOL verify)
|
||
|
*
|
||
|
* @brief Writes a value to a Context Store register on an NPE
|
||
|
*
|
||
|
* @param UINT32 [in] npeBaseAddress - Base Address of NPE
|
||
|
* @param UINT32 [in] ctxtNum - context store to access
|
||
|
* @param IxNpeDlCtxtRegNum [in] ctxtReg - which Context Store reg to write
|
||
|
* @param UINT32 [in] ctxtRegVal - value to write to the Context Store
|
||
|
* register
|
||
|
* @param BOOL [in] verify - if TRUE, verify the register is
|
||
|
* written successfully.
|
||
|
*
|
||
|
* This function writes the contents of a Context Store register in the NPE
|
||
|
* register file. If the <i>verify</i> option is ON, NpeDl will read back the
|
||
|
* register to verify that it was written successfully
|
||
|
*
|
||
|
* @pre
|
||
|
* - The NPE should be stopped and in a clean state
|
||
|
* - ixNpeDlNpeMgrDebugInstructionPreExec() should be called once before
|
||
|
* a sequential of 1 or more calls to this function
|
||
|
*
|
||
|
* @post
|
||
|
* - ixNpeDlNpeMgrDebugInstructionPostExec() should be called after
|
||
|
* a sequence of calls to this function
|
||
|
*
|
||
|
* @return
|
||
|
* - IX_FAIL if verify is TRUE and the Context Register was not written
|
||
|
* successfully
|
||
|
* - IX_SUCCESS if Context Register was written successfully
|
||
|
* - IX_NPEDL_CRITICAL_NPE_ERR if Context Register was not written
|
||
|
* successfully due to timeout error where NPE is not responding
|
||
|
*/
|
||
|
IX_STATUS
|
||
|
ixNpeDlNpeMgrCtxtRegWrite (UINT32 npeBaseAddress, UINT32 ctxtNum,
|
||
|
IxNpeDlCtxtRegNum ctxtReg, UINT32 ctxtRegVal,
|
||
|
BOOL verify);
|
||
|
|
||
|
|
||
|
/**
|
||
|
* @fn void ixNpeDlNpeMgrUtilsStatsShow (void)
|
||
|
*
|
||
|
* @brief This function will display the statistics of the IxNpeDl NpeMgrUtils
|
||
|
* module
|
||
|
*
|
||
|
* @return none
|
||
|
*/
|
||
|
void
|
||
|
ixNpeDlNpeMgrUtilsStatsShow (void);
|
||
|
|
||
|
|
||
|
/**
|
||
|
* @fn void ixNpeDlNpeMgrUtilsStatsReset (void)
|
||
|
*
|
||
|
* @brief This function will reset the statistics of the IxNpeDl NpeMgrUtils
|
||
|
* module
|
||
|
*
|
||
|
* @return none
|
||
|
*/
|
||
|
void
|
||
|
ixNpeDlNpeMgrUtilsStatsReset (void);
|
||
|
|
||
|
|
||
|
#endif /* IXNPEDLNPEMGRUTILS_P_H */
|