summaryrefslogtreecommitdiffstats
path: root/src/usr/pnor/pnordd.H
diff options
context:
space:
mode:
Diffstat (limited to 'src/usr/pnor/pnordd.H')
-rw-r--r--src/usr/pnor/pnordd.H98
1 files changed, 98 insertions, 0 deletions
diff --git a/src/usr/pnor/pnordd.H b/src/usr/pnor/pnordd.H
new file mode 100644
index 000000000..df953e203
--- /dev/null
+++ b/src/usr/pnor/pnordd.H
@@ -0,0 +1,98 @@
+#ifndef __PNOR_PNORDD_H
+#define __PNOR_PNORDD_H
+
+/** @file pnordd.H
+ * @brief Provides the interfaces to the PNOR Device Driver
+ */
+
+namespace PNOR
+{
+
+//Not sure if this is the right place for these enums, open to suggestions.
+/**
+ * PNOR Modes
+ */
+enum lscMode
+{
+ MMRD = 0, /**< Indicates PNOR is in MMRD Mode */
+ PMWR, /**< Indicates PNOR is in PMWR Mode */
+
+ LAST_MODE = PMWR,
+};
+
+
+/**
+ * @brief Type definition for PNOR address
+ */
+typedef uint64_t PNORAddress_t;
+
+
+//@TODO: comment args
+/**
+ * @brief External interface for setting LSC mode
+ */
+errlHndl_t setLSCAccessMode(lscMode i_mode);
+
+
+
+class PnorDD
+{
+
+ public:
+ //@TODO: comment args
+ /**
+ * @brief Performs an PNOR Read Operation
+ */
+ errlHndl_t read(void* o_buffer,
+ size_t& io_buflen,
+ uint64_t i_address);
+
+ //@TODO: comment args
+ /**
+ * @brief Performs an PNOR Write Operation
+ */
+ errlHndl_t write(void* i_buffer,
+ size_t& io_buflen,
+ uint64_t i_address);
+
+ //@TODO: comment args
+ /**
+ * @brief Set LSC to desired access mode
+ */
+ errlHndl_t setAccessMode(lscMode i_mode);
+
+
+
+ protected:
+ /**
+ * @brief Constructor
+ */
+ PnorDD();
+
+
+ /**
+ * @brief Destructor
+ */
+ ~PnorDD();
+
+ //@TODO: comment args
+ /**
+ * Verify Request is in appropriate address range
+ *
+ */
+ errlHndl_t verifyAddressRange(uint64_t i_address,
+ size_t& i_length);
+
+
+ private:
+
+ /**
+ * PNOR Mode Flag
+ */
+ lscMode iv_lscMode;
+
+};
+
+}; //end PNOR namespace
+
+#endif
OpenPOWER on IntegriCloud