diff options
author | Christian Geddes <crgeddes@us.ibm.com> | 2018-10-24 16:35:26 -0500 |
---|---|---|
committer | Daniel M. Crowell <dcrowell@us.ibm.com> | 2018-11-15 12:18:39 -0600 |
commit | 6cf801f1c1b75b6bb67fa67d310b3b1518f66817 (patch) | |
tree | 5ffc3ef409b4189df324b4c8d6ba0ca26655509d /src/include/usr | |
parent | 73cad1f1ae2a9f7b4876f61c5db85c35bbd08db3 (diff) | |
download | talos-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/include/usr')
-rw-r--r-- | src/include/usr/devicefw/driverif.H | 11 | ||||
-rw-r--r-- | src/include/usr/expscom/expscom_reasoncodes.H | 48 | ||||
-rw-r--r-- | src/include/usr/hbotcompid.H | 10 |
3 files changed, 66 insertions, 3 deletions
diff --git a/src/include/usr/devicefw/driverif.H b/src/include/usr/devicefw/driverif.H index df90800b3..9bed7bb94 100644 --- a/src/include/usr/devicefw/driverif.H +++ b/src/include/usr/devicefw/driverif.H @@ -5,7 +5,7 @@ /* */ /* OpenPOWER HostBoot Project */ /* */ -/* Contributors Listed Below - COPYRIGHT 2011,2017 */ +/* Contributors Listed Below - COPYRIGHT 2011,2018 */ /* [+] International Business Machines Corp. */ /* */ /* */ @@ -56,7 +56,7 @@ namespace DeviceFW HOSTI2C, FSI_I2C, SBEFIFOSCOM, - + I2CSCOM, LAST_DRIVER_ACCESS_TYPE }; @@ -109,6 +109,13 @@ namespace DeviceFW #define DEVICE_IBSCOM_ADDRESS(i_address) \ DeviceFW::IBSCOM, static_cast<uint64_t>((i_address)) + /** Construct the device addressing parameters for I2CSCOM (i2c scom) + * device ops. + * @param[in] i_address - I2CSCOM address to operate on. + */ + #define DEVICE_I2CSCOM_ADDRESS(i_address) \ + DeviceFW::I2CSCOM, static_cast<uint64_t>((i_address)) + /** * @brief Macro that handles the I2C parameters */ diff --git a/src/include/usr/expscom/expscom_reasoncodes.H b/src/include/usr/expscom/expscom_reasoncodes.H new file mode 100644 index 000000000..62713531c --- /dev/null +++ b/src/include/usr/expscom/expscom_reasoncodes.H @@ -0,0 +1,48 @@ +/* IBM_PROLOG_BEGIN_TAG */ +/* This is an automatically generated prolog. */ +/* */ +/* $Source: src/include/usr/expscom/expscom_reasoncodes.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 __EXPSCOM_REASONCODES_H +#define __EXPSCOM_REASONCODES_H + +#include <hbotcompid.H> + +namespace EXPSCOM +{ + enum EXPSCOMModuleId + { + MOD_OCMBSCOM_INVALID = 0x00, // Zero is an invalid module id + MOD_I2CSCOM_PERFORM_OP = 0x01, // i2cscom.C : i2cScomPerformOp + }; + + enum EXPSCOMReasonCode + { + RC_INVALID = EXPSCOM_COMP_ID | 0x00, + RC_INVALID_LENGTH = EXPSCOM_COMP_ID | 0x01, + RC_INVALID_MODEL_TYPE = EXPSCOM_COMP_ID | 0x02, + RC_INVALID_OPTYPE = EXPSCOM_COMP_ID | 0x03, + RC_INVALID_ADDRESS = EXPSCOM_COMP_ID | 0x04, + }; +}; + +#endif diff --git a/src/include/usr/hbotcompid.H b/src/include/usr/hbotcompid.H index 6405d0a89..4db19e164 100644 --- a/src/include/usr/hbotcompid.H +++ b/src/include/usr/hbotcompid.H @@ -445,6 +445,14 @@ const compId_t NVDIMM_COMP_ID = 0x3500; const char NVDIMM_COMP_NAME[] = "nvdimm"; //@} +/** @name EXPSCOM + * Explorer OCMB Scom DDs (MMIO and I2C explorer scom drivers) + */ +//@{ +const compId_t EXPSCOM_COMP_ID = 0x3600; +const char EXPSCOM_COMP_NAME[] = "expscom"; +//@} + /** @name NVRAM * NVRAM Support component */ @@ -461,7 +469,7 @@ const char NVRAM_COMP_NAME[] = "nvram"; //@{ const compId_t HDAT_COMP_ID = 0x9000; const char HDAT_COMP_NAME[] = "hdat"; - +//@} /** @name PRDF * PRDF component |