Copied PRD register access code from Hostboot project
This is just a straight copy from the Hostboot project. No modifications
have been made. Those will come in later commits.
Change-Id: Id9985f5542944ba88498b348b24b711fe2c30704
Signed-off-by: Zane Shelley <zshelle@us.ibm.com>
diff --git a/src/register/iipMopRegisterAccess.h b/src/register/iipMopRegisterAccess.h
new file mode 100755
index 0000000..1e7ad59
--- /dev/null
+++ b/src/register/iipMopRegisterAccess.h
@@ -0,0 +1,184 @@
+/* IBM_PROLOG_BEGIN_TAG */
+/* This is an automatically generated prolog. */
+/* */
+/* $Source: src/usr/diag/prdf/common/framework/register/iipMopRegisterAccess.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 iipMopRegisterAccess_h
+#define iipMopRegisterAccess_h
+
+// Class Specification *************************************************
+//
+// Class name: MopRegisterAccess
+// Parent class: None.
+//
+// Summary: This class provides access to hardware register via
+// a MOP routine. A single pure virtual function Access()
+// is declared for this purpose.
+//
+// Cardinality: 0
+//
+// Performance/Implementation:
+// Space Complexity: Constant
+// Time Complexity: All member functions constant unless otherwise
+// stated.
+//
+// Usage Examples:
+//
+//
+// void foo(MopRegisterAccess & mra)
+// {
+// BitStringBuffer bitString(80); // 80 bits
+//
+// mra.Access(bitString, READ);
+// ...
+//
+// }
+//
+//
+// End Class Specification *********************************************
+
+// Includes
+#if !defined(IIPCONST_H)
+#include <iipconst.h>
+#endif
+#include <prdfPlatServices.H>
+
+namespace PRDF
+{
+// Forward References
+class BitString;
+
+class MopRegisterAccess
+{
+public:
+
+ enum Operation
+ {
+ READ = 0,
+ WRITE = 1
+ };
+
+ // MopRegisterAccess(void);
+ // Function Specification ********************************************
+ //
+ // Purpose: Initialization
+ // Parameters: None.
+ // Returns: No value returned.
+ // Requirements: None.
+ // Promises: All data members are initialized.
+ // Exceptions: None.
+ // Concurrency: N/A
+ // Notes: This constructor is not declared. This compiler generated
+ // default definition is sufficient.
+ //
+ // End Function Specification //////////////////////////////////////
+
+ // MopRegisterAccess(const MopRegisterAccess & scr);
+ // Function Specification ********************************************
+ //
+ // Purpose: Copy
+ // Parameters: scr: Reference to instance to copy
+ // Returns: No value returned.
+ // Requirements: None.
+ // Promises: All data members will be copied (Deep copy).
+ // Exceptions: None.
+ // Concurrency: N/A.
+ // Notes: This constructor is not declared. This compiler generated
+ // default definition is sufficient.
+ //
+ // End Function Specification ****************************************
+
+ virtual ~MopRegisterAccess() {}
+
+ // Function Specification ********************************************
+ //
+ // Purpose: Destruction
+ // Parameters: None.
+ // Returns: No value returned
+ // Requirements: None.
+ // Promises: None.
+ // Exceptions: None.
+ // Concurrency: N/A
+ //
+ // End Function Specification ****************************************
+
+ // MopRegisterAccess & operator=(const MopRegisterAccess & scr);
+ // Function Specification ********************************************
+ //
+ // Purpose: Assigment
+ // Parameters: d: Reference to instance to assign from
+ // Returns: Reference to this instance
+ // Requirements: None.
+ // Promises: All data members are assigned to
+ // Exceptions: None.
+ // Concurrency: N/A.
+ // Notes: This assingment operator is not declared. The compiler
+ // generated default definition is sufficient.
+ //
+ // End Function Specification ****************************************
+
+ virtual uint32_t Access(BitString & bs,
+ uint64_t registerId,
+ Operation operation) const = 0;
+ // Function Specification ********************************************
+ //
+ // Purpose: This function reads or writes the hardware according
+ // to the specified operation.
+ // Parameters: bs: Bit string to retrieve(for write) or store data
+ // (from read)
+ // registerId: SCR Address or scan offset
+ // operation: Indicates either read or write operation
+ // Returns: Hardware OPs return code
+ // Requirements: bs.Length() == long enough
+ // Promises: For read operation, bs is modified to reflect hardware
+ // register state
+ // Exceptions: None.
+ // Concurrency: Nonreentrant.
+ // Note: The first bs.Length() bits from the Hardware OPs read
+ // are set/reset in bs (from left to right)
+ // For a write, the first bs.Length() bits are written
+ // to the hardware register with right padded 0's if
+ // needed
+ //
+ // End Function Specification ****************************************
+ //Get Ids and count
+ virtual const TARGETING::TargetHandle_t * GetChipIds(int & count) const = 0;
+ // Function Specification ********************************************
+ //
+ // Purpose: Access Chip Ids and # of chips to access
+ // Parameters: count: Var to return chip count of valid IDs
+ // Returns: ptr to Chip ids
+ // Requirements: None
+ // Promises: None
+ // Exceptions: None.
+ // Concurrency: Reentrant.
+ //
+ // End Function Specification ****************************************
+
+ private:
+
+ };
+
+} // end namespace PRDF
+
+#endif