diff options
| author | Brian Silver <bsilver@us.ibm.com> | 2014-09-30 08:22:11 -0500 |
|---|---|---|
| committer | A. Patrick Williams III <iawillia@us.ibm.com> | 2014-10-23 04:51:02 -0500 |
| commit | a9010ccc1130b81e45d1151bb5de9453d31c08a5 (patch) | |
| tree | ecc60da4bd3623cc97851dfa75e98293f9c77bdd /src/usr/ipmi/ipmidd.H | |
| parent | a6b67089037c83373f548749a463dfd769938b77 (diff) | |
| download | talos-hostboot-a9010ccc1130b81e45d1151bb5de9453d31c08a5.tar.gz talos-hostboot-a9010ccc1130b81e45d1151bb5de9453d31c08a5.zip | |
IPMI Block Transfer implementation
Change-Id: I8f6a590b29d9171389d10abc5b6e68f91ac94d16
RTC: 114907
Reviewed-on: http://gfw160.aus.stglabs.ibm.com:8080/gerrit/13721
Tested-by: Jenkins Server
Reviewed-by: A. Patrick Williams III <iawillia@us.ibm.com>
Diffstat (limited to 'src/usr/ipmi/ipmidd.H')
| -rw-r--r-- | src/usr/ipmi/ipmidd.H | 124 |
1 files changed, 124 insertions, 0 deletions
diff --git a/src/usr/ipmi/ipmidd.H b/src/usr/ipmi/ipmidd.H new file mode 100644 index 000000000..d20dd6132 --- /dev/null +++ b/src/usr/ipmi/ipmidd.H @@ -0,0 +1,124 @@ +/* IBM_PROLOG_BEGIN_TAG */ +/* This is an automatically generated prolog. */ +/* */ +/* $Source: src/usr/ipmi/ipmidd.H $ */ +/* */ +/* OpenPOWER HostBoot Project */ +/* */ +/* Contributors Listed Below - COPYRIGHT 2011,2014 */ +/* [+] 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 __IPMI_IPMIDD_H +#define __IPMI_IMPIDD_H + +#include <sys/msg.h> +#include <ipmi/ipmiif.H> +#include "ipmibt.H" + +/** @file ipmidd.H + * @brief Provides the interfaces to the IPMI Device Driver + */ + +/** + * @brief IPMI Device Driver Class + * Provides read/write message capabilities. + */ +class IpmiDD +{ + public: + /** + * @brief Poll the control register + * + * @parm void + */ + void pollCtrl(void); + + /** + * @brief Performs an IPMI message read operation + * + * @param[out] o_msg - Destination buffer for data + * + * @return errlHndl_t NULL on success + */ + + errlHndl_t receive(IPMI::BTMessage* o_msg); + + /** + * @brief Performs an IPMI message write operation + * + * @param[in] i_msg - Location of data to be written + * + * @return errlHndl_t NULL on success + */ + errlHndl_t send(IPMI::BTMessage* i_msg); + + /** + * @brief Performs a reset of the BT hardware + * + * @param void + * + * @return errlHndl_t NULL on success + */ + errlHndl_t reset(void); + + /** + * @brief Constructor + * + * @parm void + */ + IpmiDD(void); + + private: + /** + * @brief Read an address from LPC space + * + * @parm i_addr Absolute LPC Address + * @parm o_data Buffer to read data into + * + * @return Error from operation + */ + errlHndl_t readLPC(const uint32_t i_addr, uint8_t& o_data); + + /** + * @brief Write an address from LPC space + * + * @parm i_addr Absolute LPC Address + * @parm i_data Data to write + * + * @return Error from operation + */ + errlHndl_t writeLPC(const uint32_t i_addr, uint8_t i_data); + + private: // Variables + + /** + * @brief Mutex used to protect internal state + */ + mutex_t iv_mutex; + + /** + * @brief True if we told the RP to try a write again + */ + bool iv_eagains; + + // Disallow copying this class. + IpmiDD& operator=(const IpmiDD&); + IpmiDD(const IpmiDD&); +}; + + +#endif |

