| /* IBM_PROLOG_BEGIN_TAG */ |
| /* This is an automatically generated prolog. */ |
| /* */ |
| /* $Source: src/usr/diag/prdf/common/framework/register/prdfHomRegisterAccess.H $ */ |
| /* */ |
| /* OpenPOWER HostBoot Project */ |
| /* */ |
| /* Contributors Listed Below - COPYRIGHT 2012,2017 */ |
| /* [+] International Business Machines Corp. */ |
| /* */ |
| /* */ |
| /* Licensed under the Apache License, Version 2.0 (the "License"); */ |
| /* you may not use this file except in compliance with the License. */ |
| /* You may obtain a copy of the License at */ |
| /* */ |
| /* http://www.apache.org/licenses/LICENSE-2.0 */ |
| /* */ |
| /* Unless required by applicable law or agreed to in writing, software */ |
| /* distributed under the License is distributed on an "AS IS" BASIS, */ |
| /* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or */ |
| /* implied. See the License for the specific language governing */ |
| /* permissions and limitations under the License. */ |
| /* */ |
| /* IBM_PROLOG_END_TAG */ |
| |
| #ifndef PRDFHOMREGISTERACCESS_H |
| #define PRDFHOMREGISTERACCESS_H |
| /** |
| @file prdfHomRegisterAccess.H |
| @brief Provide access to scan & scan com registers via the HOM |
| */ |
| |
| |
| //-------------------------------------------------------------------- |
| // Includes |
| //-------------------------------------------------------------------- |
| |
| #include <vector> |
| #include <prdfPlatServices.H> |
| #include <prdfErrlUtil.H> |
| #include <prdfGlobal.H> |
| //-------------------------------------------------------------------- |
| // Forward References |
| //-------------------------------------------------------------------- |
| |
| namespace libhei |
| { |
| |
| namespace RegisterAccess |
| { |
| enum Operation |
| { |
| READ = 0, |
| WRITE = 1, |
| }; |
| } |
| |
| class ScomAccessor |
| { |
| public: |
| |
| /** |
| * @brief ctor |
| */ |
| inline ScomAccessor() {} |
| |
| /** |
| * @brief dtor |
| */ |
| inline virtual ~ScomAccessor() {} |
| |
| /** |
| * @brief Access the scan com register |
| * @param i_target Target to access the register |
| * @param bs holds data read or to write |
| * @param registerId register address |
| * @param operation [READ|WRITE] |
| * @returns SUCCESS or PRD_SCANCOM_FAILURE |
| * @pre bs.Length() must be size of register data to read/write |
| * @post For read operation, bs is modified to reflect hardware |
| * register state |
| */ |
| virtual uint32_t Access( TARGETING::TargetHandle_t i_target, |
| BitString & bs, |
| uint64_t registerId, |
| RegisterAccess::Operation operation) const; |
| |
| private: |
| |
| /** |
| * @brief disable copy |
| */ |
| ScomAccessor(const ScomAccessor &); |
| |
| /** |
| * @brief disable assignment |
| */ |
| ScomAccessor & operator=(const ScomAccessor &); |
| |
| }; |
| |
| /** |
| * @brief Singleton to access the only ScomService |
| */ |
| class ScomService; |
| PRDF_DECLARE_SINGLETON(ScomService, theScomService); |
| |
| /** |
| * @brief Returns a reference to the ScomService singleton |
| * |
| * @return Reference to the ScomService |
| */ |
| ScomService& getScomService(); |
| |
| /** |
| * @brief ScomService class |
| */ |
| class ScomService |
| { |
| public: |
| |
| /** |
| * @brief Construct ScomService |
| */ |
| ScomService(); |
| |
| /** |
| * @brief Destroys ScomService |
| */ |
| ~ScomService(); |
| |
| /** |
| * @brief set the scom accessor to be used |
| * |
| * @param[in] i_ScomAccessor new scom accessor |
| */ |
| void setScomAccessor(ScomAccessor & i_ScomAccessor); |
| |
| /** |
| Access the scan com register |
| @param i_target Target to access the register |
| @param BitString - holds data read or to write |
| @param register address |
| @param [READ|WRITE] |
| @returns [SUCCESS|FAIL] |
| @pre bs.Length() must be size of register data to read/write |
| @post For read operation, bs is modified to reflect hardware register state |
| @note |
| */ |
| virtual uint32_t Access(TARGETING::TargetHandle_t i_target, |
| BitString & bs, |
| uint64_t registerId, |
| RegisterAccess::Operation operation) const; |
| |
| private: |
| |
| // Disable copy constructor / assignment operator |
| ScomService(const ScomService& i_right); |
| ScomService& operator=(const ScomService& i_right); |
| |
| // Scom access to actual HW or Sim |
| ScomAccessor * iv_ScomAccessor; |
| }; |
| |
| } // end namespace libhei |
| |
| #endif /* PRDFHOMREGISTERACCESS_H */ |