diff options
Diffstat (limited to 'src/usr/sbeio')
-rw-r--r-- | src/usr/sbeio/makefile | 1 | ||||
-rw-r--r-- | src/usr/sbeio/sbe_stashKeyAddr.C | 85 | ||||
-rw-r--r-- | src/usr/sbeio/sbe_systemConfig.C | 2 |
3 files changed, 87 insertions, 1 deletions
diff --git a/src/usr/sbeio/makefile b/src/usr/sbeio/makefile index bd42fe8fe..91aac40bd 100644 --- a/src/usr/sbeio/makefile +++ b/src/usr/sbeio/makefile @@ -35,6 +35,7 @@ EXTRAINCDIR += ${ROOTPATH}/src/import/chips/p9/procedures/hwp/ffdc OBJS += sbe_psudd.o OBJS += sbe_coreStateControl.o OBJS += sbe_psuQuiesce.o +OBJS += sbe_stashKeyAddr.o OBJS += sbe_continueMpipl.o OBJS += sbe_systemConfig.o OBJS += sbe_fifodd.o diff --git a/src/usr/sbeio/sbe_stashKeyAddr.C b/src/usr/sbeio/sbe_stashKeyAddr.C new file mode 100644 index 000000000..a6af2ba6a --- /dev/null +++ b/src/usr/sbeio/sbe_stashKeyAddr.C @@ -0,0 +1,85 @@ +/* IBM_PROLOG_BEGIN_TAG */ +/* This is an automatically generated prolog. */ +/* */ +/* $Source: src/usr/sbeio/sbe_stashKeyAddr.C $ */ +/* */ +/* OpenPOWER HostBoot Project */ +/* */ +/* Contributors Listed Below - COPYRIGHT 2012,2017 */ +/* [+] 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 sbe_stashKeyAddr.C +* @brief Send command to stash key-value pair in the SBE +*/ + +#include <config.h> +#include <trace/interface.H> +#include <errl/errlmanager.H> +#include <sbeio/sbeioif.H> +#include <sbeio/sbe_psudd.H> + +extern trace_desc_t* g_trac_sbeio; + +#define SBE_TRACD(printf_string,args...) \ +TRACDCOMP(g_trac_sbeio,"psuStashKeyAddr: " printf_string,##args) + +#define SBE_TRACF(printf_string,args...) \ +TRACFCOMP(g_trac_sbeio,"psuStashKeyAddr: " printf_string,##args) + +namespace SBEIO +{ + + /** + * @brief Sends a PSU chipOp to stash a key-address pair in the SBE + * + * @return errlHndl_t Error log handle on failure. + * + */ + errlHndl_t sendPsuStashKeyAddrRequest(const uint8_t i_key, + const uint64_t i_value, + TARGETING::Target * i_procChip) + { + errlHndl_t errl = NULL; + + SBE_TRACD(ENTER_MRK "sending psu stashKeyAddr request from HB to SBE on proc %d", + i_procChip->getAttr<TARGETING::ATTR_POSITION>()); + + // set up PSU command message + SbePsu::psuCommand l_psuCommand( + SbePsu::SBE_REQUIRE_RESPONSE | + SbePsu::SBE_REQUIRE_ACK, //control flags + SbePsu::SBE_PSU_GENERIC_MESSAGE, //command class + SbePsu::SBE_PSU_MSG_STASH_KEY_ADDR); //command + SbePsu::psuResponse l_psuResponse; + + l_psuCommand.cd7_stashKeyAddr_Key = i_key; + l_psuCommand.cd7_stashKeyAddr_Value = i_value; + + errl = SBEIO::SbePsu::getTheInstance().performPsuChipOp(i_procChip, + &l_psuCommand, + &l_psuResponse, + SbePsu::MAX_PSU_SHORT_TIMEOUT_NS, + SbePsu::SBE_STASH_KEY_ADDR_REQ_USED_REGS, + SbePsu::SBE_STASH_KEY_ADDR_RSP_USED_REGS); + + SBE_TRACD(EXIT_MRK "stashKeyAddr"); + + return errl; + }; + +} //end namespace SBEIO diff --git a/src/usr/sbeio/sbe_systemConfig.C b/src/usr/sbeio/sbe_systemConfig.C index 4f84460b9..1b0409b2b 100644 --- a/src/usr/sbeio/sbe_systemConfig.C +++ b/src/usr/sbeio/sbe_systemConfig.C @@ -75,7 +75,7 @@ namespace SBEIO SbePsu::psuResponse l_psuResponse; // set up PSU command message - l_psuCommand.cd2_SetSystemConfig_SystemFabricIdMap = i_systemConfig; + l_psuCommand.cd7_SetSystemConfig_SystemFabricIdMap = i_systemConfig; errl = SBEIO::SbePsu::getTheInstance().performPsuChipOp(i_procChip, &l_psuCommand, |