summaryrefslogtreecommitdiffstats
path: root/importtemp/fapi2/include/plat/hw_access.H
diff options
context:
space:
mode:
Diffstat (limited to 'importtemp/fapi2/include/plat/hw_access.H')
-rw-r--r--importtemp/fapi2/include/plat/hw_access.H605
1 files changed, 0 insertions, 605 deletions
diff --git a/importtemp/fapi2/include/plat/hw_access.H b/importtemp/fapi2/include/plat/hw_access.H
deleted file mode 100644
index d86dce17..00000000
--- a/importtemp/fapi2/include/plat/hw_access.H
+++ /dev/null
@@ -1,605 +0,0 @@
-/* IBM_PROLOG_BEGIN_TAG */
-/* This is an automatically generated prolog. */
-/* */
-/* $Source: hwpf/fapi2/include/plat/hw_access.H $ */
-/* */
-/* IBM CONFIDENTIAL */
-/* */
-/* EKB Project */
-/* */
-/* COPYRIGHT 2012,2015 */
-/* [+] International Business Machines Corp. */
-/* */
-/* */
-/* The source code for this program is not published or otherwise */
-/* divested of its trade secrets, irrespective of what has been */
-/* deposited with the U.S. Copyright Office. */
-/* */
-/* IBM_PROLOG_END_TAG */
-
-/// @file hw_access.H
-///
-/// @brief Hardware access functions that needs to be specialized for
-/// platform implementation.
-///
-
-#ifndef _FAPI2_HWACCESS_H_
-#define _FAPI2_HWACCESS_H_
-
-// variable_buffer isn't supported on PPE
-#ifndef __PPE__
- #include <variable_buffer.H>
-#endif
-
-#include <plat_hw_access.H>
-#include <fapi2_hw_access.H>
-
-//@TODO remove with RTC: 133089
-#ifdef TEMPORARY_FOR_INITFILE
- #include <SpyInterface.H>
-#endif
-namespace fapi2
-{
-//--------------------------------------------------------------------------
-// PIB Error Functions
-//--------------------------------------------------------------------------
-
-/// @brief Sets the PIB error mask - platform dependant
-/// @param[in] i_mask The new error mask
-// note: this can be moved to a C file if desired
-inline void setPIBErrorMask(uint8_t i_mask)
-{
- // Keeps the compiler from complaining about the unused i_mask
- static_cast<void>(i_mask);
-
- return;
-}
-
-/// @brief Gets the PIB error mask - platform dependant
-/// @return uint8_t The current PIB error mask
-// note: this can be moved to a C file if desired
-inline uint8_t getPIBErrorMask(void)
-{
- return 0;
-}
-
-//--------------------------------------------------------------------------
-// Operational Mode Error Functions
-//--------------------------------------------------------------------------
-
-/// @brief Sets the operational mode
-/// @param[in] i_mode The new mode
-// note: this can be moved to a C file if desired
-inline void setOpMode(const OpModes i_mode)
-{
- // Keeps the compiler from complaining about the unused i_mode
- static_cast<void>(i_mode);
-
- // No-op for now. Should set thread-local operational mode
- return;
-}
-
-/// @brief Gets the operational mode
-/// @return the operational mode
-// note: this can be moved to a C file if desired
-inline OpModes getOpMode(void)
-{
- // No-op for now. Should read thread-local operational mode
- return NORMAL;
-}
-
-//------------------------------------------------------------------------------
-// HW Communication Functions to be implemented at the platform layer.
-//------------------------------------------------------------------------------
-
-///
-/// @brief Platform-level implementation of getScom()
-/// @Tparam K template parameter, passed in target.
-/// @param[in] i_target HW target to operate on.
-/// @param[in] i_address SCOM register address to read from.
-/// @param[out] o_date Buffer that holds data read from HW target.
-/// @return fapi::ReturnCode. FAPI2_RC_SUCCESS if success, else error code.
-///
-template< TargetType K >
-inline ReturnCode getScom(const Target<K>& i_target,
- const uint64_t i_address,
- buffer<uint64_t>& o_data)
-{
- o_data = 0x0000FEEDFACE0000;
- std::cout << std::hex << " getScom "
- << "target: {" << i_target.getType() << ","
- << uint64_t(i_target) << "}; "
- << "address: " << i_address << "; "
- << "output data: " << uint64_t(o_data)
- << std::dec << std::endl;
-
- return FAPI2_RC_SUCCESS;
-}
-
-/// @brief Platform-level implementation of putScom()
-/// @Tparam K template parameter, passed in target.
-/// @param[in] i_target HW target to operate on.
-/// @param[in] i_address SCOM register address to write to.
-/// @param[in] i_data Buffer that holds data to write into address.
-/// @return fapi::ReturnCode. FAPI2_RC_SUCCESS if success, else error code.
-template< TargetType K >
-inline ReturnCode putScom(const Target<K>& i_target,
- const uint64_t i_address,
- const buffer<uint64_t> i_data)
-{
- std::cout << std::hex << " putScom "
- << "target: {" << i_target.getType() << ","
- << uint64_t(i_target) << "}; "
- << "address: " << i_address << "; "
- << "input data: " << uint64_t(i_data)
- << std::dec << std::endl;
- return FAPI2_RC_SUCCESS;
-}
-
-/// @brief Platform-level implementation of putScomUnderMask()
-/// @tparam K template parameter, passed in target.
-/// @param[in] i_target HW target to operate on.
-/// @param[in] i_address SCOM register address to write to.
-/// @param[in] i_data Buffer that holds data to write into address.
-/// @param[in] i_mask Buffer that holds the mask value.
-/// @return fapi::ReturnCode. FAPI2_RC_SUCCESS if success, else error code.
-template< TargetType K >
-inline ReturnCode putScomUnderMask(const Target<K>& i_target,
- const uint64_t i_address,
- const buffer<uint64_t> i_data,
- const buffer<uint64_t> i_mask)
-{
- std::cout << std::hex << " putScomUnderMask "
- << "target: {" << i_target.getType() << ","
- << uint64_t(i_target) << "}; "
- << "address: " << i_address << "; "
- << "input data: " << uint64_t(i_data) << "; "
- << "input mask: " << uint64_t(i_mask)
- << std::dec << std::endl;
- return FAPI2_RC_SUCCESS;
-}
-
-///
-/// @brief Platform-level implementation called by getCfamRegister()
-/// Hardware procedures writers will not call this function.
-/// @Tparam K template parameter, passed in target.
-/// @param[in] i_target HW target to operate on.
-/// @param[in] i_address CFAM address to read from.
-/// @param[out] o_data 32-bit buffer that holds data read from HW target.
-/// @return fapi::ReturnCode. FAPI2_RC_SUCCESS if success, else error code.
-///
-template< TargetType K >
-inline ReturnCode getCfamRegister(const Target<K>& i_target,
- const uint32_t i_address,
- buffer<uint32_t>& o_data)
-{
- o_data = 0xFEED0CFA;
- std::cout << std::hex << " getCfamRegister "
- << "target: {" << i_target.getType() << ","
- << uint64_t(i_target) << "}; "
- << "address: " << i_address << "; "
- << "output data: " << uint32_t(o_data)
- << std::dec << std::endl;
- return FAPI2_RC_SUCCESS;
-}
-
-///
-/// @brief Platform-level implementation of putCfamRegister()
-/// Hardware procedures writers will not call this function.
-/// @Tparam K template parameter, passed in target.
-/// @param[in] i_target HW target to operate on.
-/// @param[in] i_address CFAM address to write to.
-/// @param[out] i_data 32-bit buffer that holds data to write into address.
-/// @return fapi::ReturnCode. FAPI2_RC_SUCCESS if success, else error code.
-///
-template< TargetType K >
-inline ReturnCode putCfamRegister(const Target<K>& i_target,
- const uint32_t i_address,
- const buffer<uint32_t> i_data)
-{
- std::cout << std::hex << " putCfamRegister "
- << "target: {" << i_target.getType() << ","
- << uint64_t(i_target) << "}; "
- << "address: " << i_address << "; "
- << "input data: " << uint32_t(i_data)
- << std::dec << std::endl;
- return FAPI2_RC_SUCCESS;
-}
-
-
-///
-/// @brief Platform-level implementation of modifyCfamRegister()
-/// Hardware procedures writers will not call this function.
-/// @Tparam K template parameter, passed in target.
-/// @param[in] i_target HW target to operate on.
-/// @param[in] i_address CFAM register address to modify.
-/// @param[out] i_data 32-bit buffer that holds data to modify.
-/// @param[in] i_modifyMode The modify mode (or/and/xor).
-/// @return fapi::ReturnCode. FAPI2_RC_SUCCESS if success, else error code.
-///
-template< TargetType K >
-inline ReturnCode modifyCfamRegister(const Target<K>& i_target,
- const uint32_t i_address,
- const buffer<uint32_t> i_data,
- const fapi2::ChipOpModifyMode i_modifyMode)
-{
- std::cout << std::hex << " modifyCfamRegister "
- << "target: {" << i_target.getType() << ","
- << uint64_t(i_target) << "}; "
- << "address: " << i_address << "; "
- << "input modifying data: " << uint32_t(i_data) << "; "
- << "input ChipOpModifyMode: " << i_modifyMode
- << std::dec << std::endl;
- return FAPI2_RC_SUCCESS;
-}
-
-// variable_buffer isn't supported on PPE
-#ifndef __PPE__
-///
-/// @brief Platform-level implementation of getRing()
-/// Hardware procedures writers will not call this function.
-/// @Tparam K template parameter, passed in target.
-/// @param[in] i_target HW target to operate on.
-/// @param[in] i_address Ring address to read from.
-/// @param[out] o_data Buffer that holds ring data read from HW target.
-/// @param[in] i_ringMode Ring operation mode.
-/// @return fapi::ReturnCode. FAPI2_RC_SUCCESS if success, else error code.
-///
-template< TargetType K >
-inline ReturnCode getRing(const Target<K>& i_target,
- const scanRingId_t i_address,
- variable_buffer& o_data,
- const RingMode i_ringMode)
-{
- o_data.setBit(0);
- o_data.setBit(3);
- std::cout << std::hex << " getRing "
- << "target: {" << i_target.getType() << ","
- << uint64_t(i_target) << "}; "
- << "ring address: " << i_address << "; "
- << "ring mode: " << i_ringMode << "; "
- << "first element of output data: " << o_data()[0]
- << std::endl;
-
- return FAPI2_RC_SUCCESS;
-}
-
-/// @brief Platform-level implementation of putRing()
-/// Hardware procedures writers will not call this function.
-/// @tparam K template parameter, passed in target.
-/// @param[in] i_target Target to operate on.
-/// @param[in] i_address Ring address to write to.
-/// @param[in] i_data Buffer that contains RS4 compressed ring data
-/// to write into address
-/// @param[in] i_ringMode Ring operation mode.
-/// @return fapi::ReturnCode. FAPI2_RC_SUCCESS if success, else error code.
-template< TargetType K >
-inline ReturnCode putRing(const Target<K>& i_target,
- const scanRingId_t i_address,
- const variable_buffer& i_data,
- const RingMode i_ringMode)
-{
- std::cout << std::hex << " putRing "
- << "target: {" << i_target.getType() << ","
- << uint64_t(i_target) << "}; "
- << "address: " << i_address << "; "
- << "ring mode: " << i_ringMode << "; "
- << "first element of the input data: " << i_data()[0]
- << std::endl;
-
- return FAPI2_RC_SUCCESS;
-}
-
-/// @brief Platform-level implementation of modifyRing()
-/// @tparam K template parameter, passed in target.
-/// @param[in] i_target Target to operate on.
-/// @param[in] i_address Ring address to modify.
-/// @param[in] i_data Buffer that contains RS4 compressed ring data
-/// to be modified.
-/// @param[in] i_modifyMode The modify mode (or/and/xor)
-/// @param[in] i_ringMode Ring operation mode.
-/// @return fapi::ReturnCode. FAPI2_RC_SUCCESS if success, else error code.
-template< TargetType K >
-inline ReturnCode modifyRing(const Target<K>& i_target,
- const scanRingId_t i_address,
- const variable_buffer& i_data,
- const ChipOpModifyMode i_modifyMode,
- const RingMode i_ringMode)
-{
- std::cout << std::hex << " modifyRing "
- << "target: {" << i_target.getType() << ","
- << uint64_t(i_target) << "}; "
- << "address: " << i_address << "; "
- << "input ChipOpModifyMode: " << i_modifyMode << "; "
- << "ring mode: " << i_ringMode << "; "
- << "first element of the input data: " << i_data()[0]
- << std::endl;
-
- return FAPI2_RC_SUCCESS;
-}
-#endif
-
-#ifdef FAPI_SUPPORT_MULTI_SCOM
-/// @brief Performs a multiple SCOM operation
-/// This interface performs multiple SCOM operations on a chip in the
-/// order specified by the input MultiScom object.
-/// See fapiMultiScom.H for details of how to populate the MultiScom
-/// object with SCOM operations.
-///
-/// @tparam K template parameter, passed in target.
-/// @param[in] i_target Target to operate on.
-/// @param[in,out] io_multiScomObj Reference to a MultiScom object,
-/// pre-populated with SingleScomInfo entries
-/// to perform multiple SCOMs on input target
-/// @return fapi2::ReturnCode. FAPI2_RC_SUCCESS if success, else error code.
-///
-/// @note This is a synchronous interface and would return after all the
-/// SCOM operations are completed or on the first failed operation
-///
-/// @note SCOMs will be performed in the order they were added to the
-/// input MultiScom object
-///
-/// @note In case of errors, the platform code is responsible to collect
-/// and add all the required error info and FFDC into the error data
-/// for debugging
-///
-/// @note If the SCOM operations added are specific to a processor chip,
-/// then the FSI Shift Engine configured in scatter-gather DMA mode
-/// extension would be used to execute the SCOM operations in a
-/// performance optimize mode. In this mode, the special
-/// SCOM_BULK_READ_MODE and SCOM_BULK_WRITE_MODE operations are
-/// supported that allow a large bulk of SCOM access (in multiple of
-/// 64 bits) for targets that support auto-increment. The
-/// SCOM_WRITE_UNDER_MASK operation is not supported in this mode
-///
-/// @note If the SCOM operations added are specific to a memory buffer
-/// chip, then the regular SCOM engine is used to execute the SCOM
-/// operations. SCOM_WRITE_UNDER_MASK operation is supported in
-/// this mode, but the special SCOM_BULK_READ_MODE and
-/// SCOM_BULK_WRITE_MODE operations are not supported due to
-/// hardware limitations.
-///
-template< TargetType K >
-fapi2::ReturnCode multiScom (const Target<K>& i_target,
- MultiScom& io_multiScomObj)
-{
-}
-#endif
-
-// --------------------------------------------------------------------------
-// NOTE:
-// Implement platform Spy access functions if platform supports them.
-// --------------------------------------------------------------------------
-
-// variable_buffer isn't supported on PPE
-#ifndef __PPE__
-/// @brief Reads a spy from a chip.
-/// @tparam K template parameter, passed in target.
-/// @param[in] i_target Target to operate on.
-/// @param[in] i_spyId Id of the spy whose data to be read.
-/// @param[out] o_data Buffer that holds data read from HW target.
-/// @return fapi2::ReturnCode. FAPI2_RC_SUCCESS if success, else error code.
-///
-/// @note: The string version is only supported for cronus.
-///
-/// The fapi design to support both FSP and cronus use of get and
-/// put spy functions is dependant on the SPY names being expanded
-/// to resemble a valid C identifier. This design places some
-/// restrictions on the SPY names which can be used.
-///
-/// 1. if the spy name contains a # procedure writers should replace
-/// it with an __P__ for example -
-///
-/// ABUS.RX0.RXPACKS#0.RXPACK.RD.LC.LC.ACT_DIS
-/// becomes
-/// ABUS.RX0.RXPACKS__P__0.RXPACK.RD.LC.LC.ACT_DIS
-///
-/// 2. if the spy name has a number following a "." it must have an
-/// underscore prepended to the number.
-///
-/// EH.TPCHIP.2KX100_ARY_CLK_EDGES_DLY
-/// becomes
-/// EH.TPCHIP._2KX100_ARY_CLK_EDGES_DLY
-///
-/// Example SPY name:
-/// The hardware procedure should call the function like:
-///
-/// ABUS.RX0.RXPACKS#0.RXPACK.RD.LC.LC.ACT_DIS
-///
-/// fapi2::ReturnCode rc = fapiGetSpy( targ,
-/// ABUS.RX0.RXPACKS__P__0.RXPACK.RD.LC.LC.ACT_DIS, data );
-///
-/// @note The ID is not in quotes the fapi code will handle adding
-/// the quotes for the cronus environment
-///
-#ifdef FAPI_SUPPORT_SPY_AS_ENUM
-template< TargetType K >
-inline ReturnCode getSpy(const Target<K>& i_target,
- const spyId_t i_spyId,
- variable_buffer& o_data)
-{
- static_assert(K == 0, "implement getSpy (enum)");
- return ~FAPI2_RC_SUCCESS;
-}
-#endif
-#ifdef FAPI_SUPPORT_SPY_AS_STRING
-template< TargetType K >
-inline ReturnCode getSpy(const Target<K>& i_target,
- const char* const i_spyId,
- variable_buffer& o_data)
-{
- static_assert(K == 0, "implement getSpy (string)");
- return ~FAPI2_RC_SUCCESS;
-}
-#endif
-/// @brief Writes a spy on a chip.
-/// @tparam K template parameter, passed in target.
-/// @param[in] i_target Target to operate on.
-/// @param[in] i_spyId Id of the spy to write data to.
-/// @param[out] i_data Buffer that holds data to write into spy.
-/// @return fapi2::ReturnCode. FAPI2_RC_SUCCESS if success, else error code.
-///
-/// @note: The string version is only supported for cronus.
-///
-/// The fapi design to support both FSP and cronus use of get and
-/// put spy functions is dependent on the SPY names being expanded
-/// to resemble a valid C identifier. This design places some
-/// restrictions on the SPY names which can be used.
-///
-/// 1. if the spy name contains a # procedure writers should replace
-/// is with an __P__ for example -
-///
-/// ABUS.RX0.RXPACKS#0.RXPACK.RD.LC.LC.ACT_DIS
-/// becomes
-/// ABUS.RX0.RXPACKS__P__0.RXPACK.RD.LC.LC.ACT_DIS
-///
-/// 2. if the spy name has a number following a "." it must have an
-/// underscore prepended to the number.
-///
-/// EH.TPCHIP.2KX100_ARY_CLK_EDGES_DLY
-/// becomes
-/// EH.TPCHIP._2KX100_ARY_CLK_EDGES_DLY
-///
-/// Example SPY name:
-/// The hardware procedure should call the function like:
-///
-/// ABUS.RX0.RXPACKS#0.RXPACK.RD.LC.LC.ACT_DIS
-///
-/// fapi2::ReturnCode rc = fapiPutSpy( targ,
-/// ABUS.RX0.RXPACKS__P__0.RXPACK.RD.LC.LC.ACT_DIS, data );
-///
-/// @note The ID is not in quotes the fapi code will handle adding
-/// the quotes for the cronus environment
-///
-#ifdef FAPI_SUPPORT_SPY_AS_ENUM
-template< TargetType K >
-inline ReturnCode putSpy(const Target<K>& i_target,
- const spyId_t i_spyId,
- const variable_buffer& i_data)
-{
- static_assert(K == 0, "implement putSpy (enum)");
- return ~FAPI2_RC_SUCCESS;
-}
-#endif
-#ifdef FAPI_SUPPORT_SPY_AS_STRING
-template< TargetType K >
-inline ReturnCode putSpy(const Target<K>& i_target,
- const char* const i_spyId,
- const variable_buffer& i_data)
-{
-//@TODO remove with RTC: 133089
-#ifdef TEMPORARY_FOR_INITFILE
- uint32_t l_chipId = strtol(getenv("CHIPID"), NULL, 16);
- uint32_t l_chipEc = strtol(getenv("CHIPEC"), NULL, 16);
-
- return (SPY::PutSpy(l_chipId, l_chipEc, i_spyId, i_data ));
-#else
- static_assert(K == 0, "implement putSpy (string)");
- return ~FAPI2_RC_SUCCESS;
-#endif
-}
-
-template< TargetType K >
-inline ReturnCode putSpy(const Target<K>& i_target,
- const char* const i_spyId,
- const char* i_enum)
-{
-//@TODO remove with RTC: 133089
-#ifdef TEMPORARY_FOR_INITFILE
- uint32_t l_chipId = strtol(getenv("CHIPID"), NULL, 16);
- uint32_t l_chipEc = strtol(getenv("CHIPEC"), NULL, 16);
-
- return (SPY::PutSpy(l_chipId, l_chipEc, i_spyId, i_enum ));
-#else
- static_assert(K == 0, "implement putSpy (string)");
- return ~FAPI2_RC_SUCCESS;
-#endif
-}
-#endif
-/// @brief Writes spy data into a buffer holding ring data image
-/// This API is used by L2/L3 repair to put column repair data
-/// into a ring buffer image.
-/// @tparam K template parameter, passed in target.
-/// @param[in] i_target Target to operate on.
-/// @param[in] i_spyId Id of the spy.
-/// @param[in] i_data Buffer that holds spy data to write into ring
-/// image.
-/// @param[out] o_data Buffer that holds updated ring image.
-/// @return fapi2::ReturnCode. FAPI2_RC_SUCCESS if success, else error code.
-///
-/// @note: The string version is only supported for cronus.
-///
-/// The fapi design to support both FSP and cronus use of get and
-/// put spy functions is dependent on the SPY names being expanded
-/// to resemble a valid C identifier. This design places some
-/// restrictions on the SPY names which can be used.
-///
-/// See fapiPutSpy for details on spy id specifics.
-///
-#ifdef FAPI_SUPPORT_SPY_AS_ENUM
-template< TargetType K >
-inline ReturnCode putSpyImage(const Target<K>& i_target,
- const spyId_t i_spyId,
- const variable_buffer& i_data,
- variable_buffer& o_imageData)
-{
- static_assert(K == 0, "implement putSpyImage (enum)");
- return ~FAPI2_RC_SUCCESS;
-}
-#endif
-#ifdef FAPI_SUPPORT_SPY_AS_STRING
-template< TargetType K >
-inline ReturnCode putSpyImage(const Target<K>& i_target,
- const char* const i_spyId,
- const variable_buffer& i_data,
- variable_buffer& o_imageData)
-{
- static_assert(K == 0, "implement putSpyImage (string)");
- return ~FAPI2_RC_SUCCESS;
-}
-#endif
-/// @brief Reads spy data from a ring image buffer
-/// @param[in] i_target Target to operate on
-/// @param[in] i_spyId The spy's id
-/// @param[out] o_data Buffer that holds data read from ring image.
-/// @param[in] i_imageData Buffer that holds ring image to read data
-/// from.
-/// @return fapi2::ReturnCode. FAPI2_RC_SUCCESS if success, else error code.
-///
-/// @note: The string version is only supported for cronus.
-///
-/// The fapi design to support both FSP and cronus use of get and
-/// put spy functions is dependent on the SPY names being expanded
-/// to resemble a valid C identifier. This design places some
-/// restrictions on the SPY names which can be used.
-///
-/// See fapiPutSpy for details on spy id specifics.
-///
-#ifdef FAPI_SUPPORT_SPY_AS_ENUM
-template< TargetType K >
-inline ReturnCode getSpyImage(const Target<K>& i_target,
- const spyId_t i_spyId,
- variable_buffer& o_data,
- const variable_buffer& i_imageData)
-{
- static_assert(K == 0, "implement getSpyImage (enum)");
- return ~FAPI2_RC_SUCCESS;
-}
-#endif
-#ifdef FAPI_SUPPORT_SPY_AS_STRING
-template< TargetType K >
-inline ReturnCode getSpyImage(const Target<K>& i_target,
- const char* const i_spyId,
- variable_buffer& o_data,
- const variable_buffer& i_imageData)
-{
- static_assert(K == 0, "implement getSpyImage (string)");
- return ~FAPI2_RC_SUCCESS;
-}
-#endif
-
-#endif // PPE
-
-};
-
-#endif // _FAPI2_HWACCESS_H_
OpenPOWER on IntegriCloud