-
Notifications
You must be signed in to change notification settings - Fork 97
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
New interface in fapi2 to perform i2c operations directly. This is needed for OCMB access before we get OMI bus running, specifically as part of a cmd/rsp protocol. Change-Id: I8b778f12f8c0c6820ceb51146f1e21d30891c964 RTC:197029 Reviewed-on: http://rchgit01.rchland.ibm.com/gerrit1/63919 Tested-by: Jenkins Server <pfd-jenkins+hostboot@us.ibm.com> Tested-by: Jenkins OP Build CI <op-jenkins+hostboot@us.ibm.com> Tested-by: Jenkins OP HW <op-hw-jenkins+hostboot@us.ibm.com> Tested-by: FSP CI Jenkins <fsp-CI-jenkins+hostboot@us.ibm.com> Reviewed-by: Christian R. Geddes <crgeddes@us.ibm.com> Reviewed-by: Corey V. Swenson <cswenson@us.ibm.com> Reviewed-by: Daniel M. Crowell <dcrowell@us.ibm.com>
- Loading branch information
1 parent
5abc57b
commit 165bb46
Showing
11 changed files
with
1,152 additions
and
168 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,80 @@ | ||
/* IBM_PROLOG_BEGIN_TAG */ | ||
/* This is an automatically generated prolog. */ | ||
/* */ | ||
/* $Source: src/include/usr/fapi2/i2c_access.H $ */ | ||
/* */ | ||
/* OpenPOWER HostBoot Project */ | ||
/* */ | ||
/* Contributors Listed Below - COPYRIGHT 2018 */ | ||
/* [+] 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 */ | ||
/// @file i2c_access.H | ||
/// | ||
/// @brief Hardware access functions that needs to be specialized for | ||
/// platform implementation. | ||
/// | ||
|
||
#ifndef _FAPI2_I2CACCESS_H_ | ||
#define _FAPI2_I2CACCESS_H_ | ||
|
||
#include <fapi2_i2c_access.H> | ||
#include <plat_i2c_access.H> | ||
|
||
namespace fapi2 | ||
{ | ||
|
||
//------------------------------------------------------------------------------ | ||
// HW Communication Functions to be implemented at the platform layer. | ||
//------------------------------------------------------------------------------ | ||
/** | ||
* @brief Platform-level implementation of getI2c() | ||
* @tparam K the type (Kind) of target, from i_target | ||
* @param[in] i_target HW target to operate on. | ||
* @param[in] i_get_size Size that getI2c will read from the HW target. | ||
* @param[in] i_data Buffer that holds data to write to the HW target. | ||
* May be empty if no address/command is required | ||
* before the read. | ||
* @param[out] o_data Buffer that holds data read from HW target. | ||
* @return fapi2::ReturnCode. FAPI2_RC_SUCCESS if success, else error code. | ||
*/ | ||
template< TargetType K > | ||
inline ReturnCode getI2c(const Target<K>& i_target, | ||
const size_t i_get_size, | ||
const std::vector<uint8_t>& i_data, | ||
std::vector<uint8_t>& o_data) | ||
{ | ||
return platGetI2c(i_target, i_get_size, i_data, o_data); | ||
} | ||
|
||
|
||
/** | ||
* @brief Platform-level implementation of putI2c() | ||
* @tparam K the type (Kind) of target, from i_target | ||
* @param[in] i_target HW target to operate on. | ||
* @param[in] i_data Buffer that holds data to write to the HW target. | ||
* @return fapi2::ReturnCode. FAPI2_RC_SUCCESS if success, else error code. | ||
*/ | ||
template< TargetType K > | ||
inline ReturnCode putI2c(const Target<K>& i_target, | ||
const std::vector<uint8_t>& i_data) | ||
{ | ||
return platPutI2c(i_target, i_data); | ||
} | ||
|
||
}; | ||
|
||
#endif // _FAPI2_I2CACCESS_H_ |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,61 @@ | ||
/* IBM_PROLOG_BEGIN_TAG */ | ||
/* This is an automatically generated prolog. */ | ||
/* */ | ||
/* $Source: src/include/usr/fapi2/plat_i2c_access.H $ */ | ||
/* */ | ||
/* OpenPOWER HostBoot Project */ | ||
/* */ | ||
/* Contributors Listed Below - COPYRIGHT 2018 */ | ||
/* [+] 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 */ | ||
/// @file plat_i2c_access.H | ||
/// | ||
/// @brief Platform i2c-access definitions | ||
/// | ||
|
||
#ifndef _FAPI2_PLAT_I2CACCESS_H_ | ||
#define _FAPI2_PLAT_I2CACCESS_H_ | ||
|
||
namespace fapi2 | ||
{ | ||
|
||
/** | ||
* @brief Platform-level implementation of getI2c() | ||
* @param[in] i_target FAPI HW target to operate on. | ||
* @param[in] i_get_size Size that getI2c will read from the HW target. | ||
* @param[in] i_cfgData Buffer that holds data to write to the HW target. | ||
* May be empty if no address/command is required | ||
* before the read. | ||
* @param[out] o_data Buffer that holds data read from HW target. | ||
* @return fapi2::ReturnCode. FAPI2_RC_SUCCESS if success, else error code. | ||
*/ | ||
ReturnCode platGetI2c( const Target<TARGET_TYPE_ALL>& i_target, | ||
const size_t i_get_size, | ||
const std::vector<uint8_t>& i_cfgData, | ||
std::vector<uint8_t>& o_data ); | ||
|
||
/** | ||
* @brief Platform-level implementation of putI2c() | ||
* @param[in] i_target FAPI HW target to operate on. | ||
* @param[in] i_data Buffer that holds data to write to the HW target. | ||
* @return fapi2::ReturnCode. FAPI2_RC_SUCCESS if success, else error code. | ||
*/ | ||
ReturnCode platPutI2c( const Target<TARGET_TYPE_ALL>& i_target, | ||
const std::vector<uint8_t>& i_data ); | ||
|
||
}; | ||
#endif // _FAPI2_PLAT_I2CACCESS_H_ |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Oops, something went wrong.