diff options
Diffstat (limited to 'src/usr/pnor/pnordd.H')
-rw-r--r-- | src/usr/pnor/pnordd.H | 98 |
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 |