From 932b398a055ef7ae4dce5f1d3a8803ba8d2fb8a8 Mon Sep 17 00:00:00 2001 From: Christian Geddes Date: Mon, 18 Sep 2017 11:44:46 -0500 Subject: Move targ info getter func for sbechipOp into common code Before we only needed to get the target info for the scan chipop, now more sbe chip ops require this functionality so we are moving it to common code Change-Id: Ifbb680db27c5975ee216d5d21ff78192c9ea2d34 Reviewed-on: http://ralgit01.raleigh.ibm.com/gerrit1/46345 Reviewed-by: Martin Gloff Reviewed-by: Matt Derksen Tested-by: Jenkins Server Tested-by: Jenkins OP Build CI Tested-by: FSP CI Jenkins Tested-by: Jenkins OP HW Reviewed-by: William G. Hoffa --- src/usr/sbeio/makefile | 1 + src/usr/sbeio/sbe_utils.C | 124 ++++++++++++++++++++++++++++++++++++++++++++++ 2 files changed, 125 insertions(+) create mode 100644 src/usr/sbeio/sbe_utils.C (limited to 'src/usr/sbeio') diff --git a/src/usr/sbeio/makefile b/src/usr/sbeio/makefile index d5b2326bc..54cc6f04e 100644 --- a/src/usr/sbeio/makefile +++ b/src/usr/sbeio/makefile @@ -34,6 +34,7 @@ EXTRAINCDIR += ${ROOTPATH}/src/import/chips/p9/procedures/hwp/ffdc EXTRAINCDIR += ${ROOTPATH}/src/import/chips/p9/procedures/hwp/perv OBJS += sbe_psudd.o +OBJS += sbe_utils.o OBJS += sbe_coreStateControl.o OBJS += sbe_psuQuiesce.o OBJS += sbe_stashKeyAddr.o diff --git a/src/usr/sbeio/sbe_utils.C b/src/usr/sbeio/sbe_utils.C new file mode 100644 index 000000000..1bad658a7 --- /dev/null +++ b/src/usr/sbeio/sbe_utils.C @@ -0,0 +1,124 @@ +/* IBM_PROLOG_BEGIN_TAG */ +/* This is an automatically generated prolog. */ +/* */ +/* $Source: src/usr/sbeio/sbe_utils.C $ */ +/* */ +/* OpenPOWER HostBoot Project */ +/* */ +/* Contributors Listed Below - COPYRIGHT 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_psudd.C +* @brief SBE PSU device driver +*/ + +#include +extern trace_desc_t* g_trac_sbeio; + +#define VIRTUAL_CHIPLET_ID_BASE_MCS_TARGET_TYPE (0x80) + +namespace SBEIO +{ + /// @brief translates HB target types to SBE target type groups + /// @param[in] i_hbTarget includes the HB target type + /// @return SBE_TARGET_TYPES returns SBE_TARGET_TYPE_UNKNOWN in error + SBE_TARGET_TYPES translateToSBETargetType(TARGETING::Target *i_hbTarget) + { + TRACDCOMP( g_trac_sbeio, + ENTER_MRK "entering translateToSBETargetType()"); + SBE_TARGET_TYPES sbeType; + sbeType = SBE_TARGET_TYPE_UNKNOWN; + + switch( i_hbTarget->getAttr()) + { + case(TARGETING::TYPE_PROC): + { + sbeType = SBE_TARGET_TYPE_PROC; + break; + } + case(TARGETING::TYPE_EX): + { + sbeType = SBE_TARGET_TYPE_EX; + break; + } + case(TARGETING::TYPE_PERV): + case(TARGETING::TYPE_XBUS): + case(TARGETING::TYPE_MCBIST): + case(TARGETING::TYPE_OBUS): + case(TARGETING::TYPE_PCI): + case(TARGETING::TYPE_L2): + case(TARGETING::TYPE_L3): + case(TARGETING::TYPE_L4): + case(TARGETING::TYPE_CORE): + { + sbeType = SBE_TARGET_TYPE_PERV; + break; + } + case(TARGETING::TYPE_MCS): + { + sbeType = SBE_TARGET_TYPE_MCS; + break; + } + default: + TRACFCOMP( g_trac_sbeio, + ERR_MRK "translateToSBETargetType:>" + " Not supported Target type =%.8X ", + i_hbTarget->getAttr() ); + break; + } + TRACDCOMP( g_trac_sbeio, EXIT_MRK "exiting translateToSBETargetType()"); + return sbeType; + } + + /// @brief returns a ChipletID for a give target + /// @param[in] i_hbTarget includes the HB target type + /// @return: ChipletID for i_hbTarget target + uint8_t getChipletIDForSBE(TARGETING::Target * i_hbTarget) + { + uint8_t l_chipletID = 0; + TRACDCOMP( g_trac_sbeio, ENTER_MRK "entering getChipletIDForSBE()"); + + //based on the Host to SBE Interface specification ver 0.70+ + switch( i_hbTarget->getAttr()) + { + case(TARGETING::TYPE_PROC): + { //not all targets will have CHIPLET_IDs + l_chipletID = 0; + break; + } + //MCS has a virtual Chiplet ID + case (TARGETING::TYPE_MCS): + { + l_chipletID = VIRTUAL_CHIPLET_ID_BASE_MCS_TARGET_TYPE + + static_cast(i_hbTarget-> + getAttr()); + break; + } + default: + { + l_chipletID = static_cast(i_hbTarget-> + getAttr()); + break; + } + } + + TRACDCOMP( g_trac_sbeio, EXIT_MRK "exiting getChipletIDForSBE()"); + return l_chipletID; + } + +} \ No newline at end of file -- cgit v1.2.1