From a7739158a42e3d4caf325f8f23c79641ec6707d2 Mon Sep 17 00:00:00 2001 From: Dan Crowell Date: Tue, 22 Oct 2019 09:21:25 -0500 Subject: Support scoms to MEM_PORT targets Some of the memory HWPs require MEM_PORT scom support for Explorer. There is no address translation required but we need to allow the scoms to occur. Added testcase paths to scom MEM_PORT targets. Change-Id: I00b29e8dda6a105e994a5dcd009fd4b8aebdbdef Reviewed-on: http://rchgit01.rchland.ibm.com/gerrit1/85690 Tested-by: Jenkins Server Tested-by: FSP CI Jenkins Reviewed-by: Christian R Geddes Reviewed-by: Corey V Swenson Tested-by: Jenkins OP Build CI Tested-by: Jenkins OP HW Reviewed-by: William G Hoffa --- src/usr/scom/scomtrans.C | 27 ++++++++++++++++++++------- 1 file changed, 20 insertions(+), 7 deletions(-) (limited to 'src/usr/scom') diff --git a/src/usr/scom/scomtrans.C b/src/usr/scom/scomtrans.C index 5fb2ae9f8..6f0275e33 100644 --- a/src/usr/scom/scomtrans.C +++ b/src/usr/scom/scomtrans.C @@ -192,6 +192,11 @@ DEVICE_REGISTER_ROUTE(DeviceFW::WILDCARD, TARGETING::TYPE_NPU, startScomProcess); +DEVICE_REGISTER_ROUTE(DeviceFW::WILDCARD, + DeviceFW::SCOM, + TARGETING::TYPE_MEM_PORT, + startScomProcess); + ////////////////////////////////////////////////////////////////////////////// ////////////////////////////////////////////////////////////////////////////// errlHndl_t startScomProcess(DeviceFW::OperationType i_opType, @@ -301,9 +306,10 @@ errlHndl_t scomTranslate(TARGETING::Target * &i_target, // Get the type attribute. TARGETING::TYPE l_type = i_target->getAttr(); - centaurChipUnits_t l_chipUnit = CENTAUR_CHIP; + centaurChipUnits_t l_cenChipUnit = CENTAUR_CHIP; + p9ChipUnits_t l_p9ChipUnit = NONE; - if(false == getChipUnitCentaur(l_type,l_chipUnit)) + if(false == getChipUnitCentaur(l_type,l_cenChipUnit)) { l_err = centaur_translation(i_target, l_type, @@ -311,14 +317,21 @@ errlHndl_t scomTranslate(TARGETING::Target * &i_target, i_opMode); o_needsWakeup = false; } - else + else if(false == getChipUnitP9(l_type,l_p9ChipUnit)) { l_err = p9_translation(i_target, - l_type, - io_addr, - o_needsWakeup, - i_opMode); + l_type, + io_addr, + o_needsWakeup, + i_opMode); } + else + { + // The only type leftover should be mem_port, and there is + // no translation required for that + assert( TARGETING::TYPE_MEM_PORT == l_type ); + } + return l_err; } -- cgit v1.2.1