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