summaryrefslogtreecommitdiffstats
path: root/src/usr/expscom/i2cscomdd.H
diff options
context:
space:
mode:
authorChristian Geddes <crgeddes@us.ibm.com>2018-10-24 16:35:26 -0500
committerDaniel M. Crowell <dcrowell@us.ibm.com>2018-11-15 12:18:39 -0600
commit6cf801f1c1b75b6bb67fa67d310b3b1518f66817 (patch)
tree5ffc3ef409b4189df324b4c8d6ba0ca26655509d /src/usr/expscom/i2cscomdd.H
parent73cad1f1ae2a9f7b4876f61c5db85c35bbd08db3 (diff)
downloadtalos-hostboot-6cf801f1c1b75b6bb67fa67d310b3b1518f66817.tar.gz
talos-hostboot-6cf801f1c1b75b6bb67fa67d310b3b1518f66817.zip
Route scom operations on OCMB chips to exp_i2c_scom interface
Before we get OMI targets trained we must use i2c to access scom registers on the OCMB chip. This commit does all of the plumbing so when HWP calls getScom() on a OCMB target, the hostboot platform recognizes this as a special scom and routes it to a new i2scom DD. This device driver will truncate the scom address to 32 bits and run the exp_i2c_putscom/exp_i2c_getscom interfaces to perform the operation. Eventually we need to also support MMIO scoms to the OCMB chip, the MMIO scoms will be used after the OMI training is complete. Change-Id: I0018cc8d25f74d1253b72c3112d3e344a4248416 RTC: 196806 Reviewed-on: http://rchgit01.rchland.ibm.com/gerrit1/67976 Reviewed-by: Matt Derksen <mderkse1@us.ibm.com> Tested-by: Jenkins Server <pfd-jenkins+hostboot@us.ibm.com> Reviewed-by: Ilya Smirnov <ismirno@us.ibm.com> Tested-by: Jenkins OP Build CI <op-jenkins+hostboot@us.ibm.com> Tested-by: FSP CI Jenkins <fsp-CI-jenkins+hostboot@us.ibm.com> Reviewed-by: Daniel M. Crowell <dcrowell@us.ibm.com>
Diffstat (limited to 'src/usr/expscom/i2cscomdd.H')
-rw-r--r--src/usr/expscom/i2cscomdd.H67
1 files changed, 67 insertions, 0 deletions
diff --git a/src/usr/expscom/i2cscomdd.H b/src/usr/expscom/i2cscomdd.H
new file mode 100644
index 000000000..07c025037
--- /dev/null
+++ b/src/usr/expscom/i2cscomdd.H
@@ -0,0 +1,67 @@
+/* IBM_PROLOG_BEGIN_TAG */
+/* This is an automatically generated prolog. */
+/* */
+/* $Source: src/usr/expscom/i2cscomdd.H $ */
+/* */
+/* OpenPOWER HostBoot Project */
+/* */
+/* Contributors Listed Below - COPYRIGHT 2011,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 */
+#ifndef __I2CSCOMDD_H
+#define __I2CSCOMDD_H
+
+/** @file i2cscomdd.H
+ * @brief Provides the interfaces to perform I2cscom
+ */
+#include <stdint.h>
+
+
+namespace I2CSCOMDD
+{
+
+/**
+ * @brief Performs an I2CSCOM access operation
+ * This function performs an I2CSCOM access operation. It follows a pre-defined
+ * prototype functions in order to be registered with the device-driver
+ * framework.
+ *
+ * @param[in] i_opType Operation type, see DeviceFW::OperationType
+ * in driverif.H
+ * @param[in] i_target I2CSCOM Explorer Chip target
+ * @param[in/out] io_buffer Read: Pointer to output data storage
+ * Write: Pointer to input data storage
+ * @param[in/out] io_buflen Input: size of io_buffer (in bytes)
+ * Output:
+ * Read: Size of output data
+ * Write: Size of data written
+ * @param[in] i_accessType DeviceFW::AccessType enum (usrif.H)
+ * @param[in] i_args This is an argument list for DD framework.
+ * In this function, there's only one argument,
+ * which is the IBM scom address
+ * @return errlHndl_t nullptr on success, non-null ptr on error
+ */
+errlHndl_t i2cscomPerformOp(DeviceFW::OperationType i_opType,
+ TARGETING::Target* i_target,
+ void* io_buffer,
+ size_t& io_buflen,
+ int64_t i_accessType,
+ va_list i_args);
+
+}
+
+#endif // __I2CSCOMDD_H \ No newline at end of file
OpenPOWER on IntegriCloud