From 074a2dd38f9a0ed7b944be505ffa2eb327abc341 Mon Sep 17 00:00:00 2001 From: Adam Hale Date: Mon, 3 Jun 2019 13:05:21 -0400 Subject: Axone int updates Change-Id: I6468addadd23f6f252ade88eacfd6a1fd2f47025 Reviewed-on: http://rchgit01.rchland.ibm.com/gerrit1/82625 Tested-by: FSP CI Jenkins Tested-by: Jenkins Server Tested-by: PPE CI Tested-by: Hostboot CI Tested-by: HWSV CI Reviewed-by: Mark Pizzutillo Reviewed-by: Devon A Baughen Reviewed-by: Jennifer A Stofer Reviewed-on: http://rchgit01.rchland.ibm.com/gerrit1/82636 Tested-by: Jenkins OP Build CI Tested-by: Jenkins OP HW Reviewed-by: Christian R Geddes --- .../chips/p9/initfiles/p9a.int.scan.initfile | 47 +++++ .../chips/p9/initfiles/p9a.int.scom.initfile | 178 ++++++++++++++++ .../p9/procedures/hwp/initfiles/p9a_int_scan.C | 72 +++++++ .../p9/procedures/hwp/initfiles/p9a_int_scan.H | 47 +++++ .../p9/procedures/hwp/initfiles/p9a_int_scan.mk | 36 ++++ .../p9/procedures/hwp/initfiles/p9a_int_scom.C | 228 +++++++++++++++++++++ .../p9/procedures/hwp/initfiles/p9a_int_scom.H | 45 ++++ .../p9/procedures/hwp/initfiles/p9a_int_scom.mk | 27 +++ .../xml/attribute_info/chip_ec_attributes.xml | 17 ++ 9 files changed, 697 insertions(+) create mode 100644 src/import/chips/p9/initfiles/p9a.int.scan.initfile create mode 100644 src/import/chips/p9/initfiles/p9a.int.scom.initfile create mode 100644 src/import/chips/p9/procedures/hwp/initfiles/p9a_int_scan.C create mode 100644 src/import/chips/p9/procedures/hwp/initfiles/p9a_int_scan.H create mode 100644 src/import/chips/p9/procedures/hwp/initfiles/p9a_int_scan.mk create mode 100644 src/import/chips/p9/procedures/hwp/initfiles/p9a_int_scom.C create mode 100644 src/import/chips/p9/procedures/hwp/initfiles/p9a_int_scom.H create mode 100644 src/import/chips/p9/procedures/hwp/initfiles/p9a_int_scom.mk (limited to 'src/import') diff --git a/src/import/chips/p9/initfiles/p9a.int.scan.initfile b/src/import/chips/p9/initfiles/p9a.int.scan.initfile new file mode 100644 index 000000000..745c936d3 --- /dev/null +++ b/src/import/chips/p9/initfiles/p9a.int.scan.initfile @@ -0,0 +1,47 @@ +#-- *!*************************************************************************** +#-- *! +#-- *! OWNER NAME : David Kauer (dmkauer@us.ibm.com) +#-- *! +#-- *!*************************************************************************** + + +SyntaxVersion = 3 + +target_type 0 TARGET_TYPE_PROC_CHIP; + +# Enabled for DD1 only +ispy INT.INT_PC_LBS1_CMD_MMIO_LDST_CS [when=L && ATTR_CHIP_EC_FEATURE_P9N_INT_DD10] { + bits, spyv; + 5, 0b1; + 6, 0b1; +} + +# Defect HW378025 / Nimbus DD1 only +ispy INT.INT_PC_LBS1_REGS_CLOCKGATE_DIS_CS [when=L && ATTR_CHIP_EC_FEATURE_HW378025] { + spyv; + 0b1; +} + +# Defect HW930007 / Nimbus DD1 only +ispy INT.INT_PC.LBS2.VPC.P1.LCBCNTL_BLK.CLOCKGATE_DISABLE [when=L && ATTR_CHIP_EC_FEATURE_HW930007] { + spyv; + 0b1; +} + +# Defect HW408972 / Nimbus DD1 & DD2 +ispy INT.INT_PC_LBS1_CRESP_MAC_CS [when=L && ATTR_CHIP_EC_FEATURE_HW408972] { + bits, spyv, expr; + 3, 0b1, ((ATTR_CHIP_EC_FEATURE_P9N_INT_DD10 == 1) || (ATTR_CHIP_EC_FEATURE_P9N_INT_DD20 == 1)); + 4, 0b1, (ATTR_CHIP_EC_FEATURE_P9N_INT_DD21 == 1); +} + +# Defect HW388874 +espy BRIDGE.PSIHB.ESB_OR_LSI_INTERRUPTS [when=L] { + spyv, expr; + ON, (ATTR_CHIP_EC_FEATURE_HW388874 == 0); +} +# HW441771 - Axone init to return to P9 behavior +ispy INT.INT_VC_LBS6_ARX_CS_AXONE_DISABLE_CILOAD_ORDERINGS [when=L && ATTR_CHIP_EC_FEATURE_AXONE_HW441771] { + spyv; + 0b1; +} diff --git a/src/import/chips/p9/initfiles/p9a.int.scom.initfile b/src/import/chips/p9/initfiles/p9a.int.scom.initfile new file mode 100644 index 000000000..5b0ff1886 --- /dev/null +++ b/src/import/chips/p9/initfiles/p9a.int.scom.initfile @@ -0,0 +1,178 @@ +#- *!*************************************************************************** +#-- *! +#-- *! OWNER NAME : David Kauer (dmkauer@us.ibm.com) +#-- *! +#-- *!*************************************************************************** + +SyntaxVersion = 3 + +target_type 0 TARGET_TYPE_PROC_CHIP; +target_type 1 TARGET_TYPE_SYSTEM; + +ispy INT.INT_PC.INT_PC_AIB_TX_CRD_RSD_CRD_VPC_LD_RMT [when=S && ATTR_CHIP_EC_FEATURE_P9N_INT_DD10] { + spyv; + 0b00; +} + +ispy INT.INT_VC.INT_VC_EQC_CONFIG_PAGE_OFFSET_CFG [when=S] { + spyv; + 0x5BBF; +} + +ispy INT.INT_VC.INT_VC_IRQ_TO_EQC_CREDITS [when=S] { + spyv; + 0x6262220242160000; +} + +# SW437676 / SW445631 +ispy INT.INT_VC.INT_VC_AIB_TIMEOUT [when=S] { + spyv; + 0x18; +} + +ispy INT.INT_PC.INT_PC_DBG_TMOT_ARX_TIMEOUT [when=S] { + spyv; + 0x18; +} + +ispy INT.INT_PC.INT_PC_DBG_TMOT_MMIO_LDST_TIMEOUT [when=S] { + spyv; + 0x18; +} + +# Defect HW372116 / Nimbus DD1 only +ispy INT.INT_CQ.INT_CQ_AIB_CTL [when=S && ATTR_CHIP_EC_FEATURE_HW372116] { + spyv; + 0x0070000072040140; +} + +# Defect HW395947 / Nimbus DD1 only +espy INT.INT_VC.INT_VC_AIB_TX_ORDERING_TAG_2_RELAXED_WR_ORDERING_DMA [when=S && ATTR_CHIP_EC_FEATURE_HW395947] { + spyv; + OFF; +} + +espy INT.INT_PC.INT_PC_AIB_TX_ORDER_RELAXED_WR_ORDERING [when=S && ATTR_CHIP_EC_FEATURE_HW395947] { + spyv; + OFF; +} + +# Error Configuration +ispy INT.INT_PC.INT_PC_ERR0_CFG0_ERROR_CONFIG0 [when=S] { + spyv, expr; + 0x010003FF00100020, (ATTR_CHIP_EC_FEATURE_HW426891 == 0); + 0x050043EF00100020, (ATTR_CHIP_EC_FEATURE_HW426891 == 1); +} + +ispy INT.INT_PC.INT_PC_ERR0_CFG1_ERROR_CONFIG0 [when=S] { + spyv, expr; + 0xD8DFB200DFAFFFD7, (ATTR_CHIP_EC_FEATURE_HW426891 == 0); + 0xFADFBB8CFFAFFFD7, (ATTR_CHIP_EC_FEATURE_HW426891 == 1); +} + +ispy INT.INT_PC.INT_PC_ERR1_CFG0_ERROR_CONFIG0 [when=S && ATTR_CHIP_EC_FEATURE_P9N_INT_DD10] { + spyv; + 0x0008002000002002; +} + +ispy INT.INT_PC.INT_PC_ERR1_CFG1_ERROR_CONFIG0 [when=S && ATTR_CHIP_EC_FEATURE_P9N_INT_DD10] { + spyv; + 0xEF6417D2DE7DD3FD; +} + +ispy INT.INT_PC.LBS2.INT_PC_VPC_ERR_CFG0_ERROR_CONFIG [when=S] { + spyv, expr; + 0x0002000410000000, (ATTR_CHIP_EC_FEATURE_HW426891 == 0); + 0x0002000610000000, (ATTR_CHIP_EC_FEATURE_HW426891 == 1); +} + +ispy INT.INT_PC.LBS2.INT_PC_VPC_ERR_CFG1_ERROR_CONFIG [when=S && ATTR_CHIP_EC_FEATURE_P9N_INT_DD10] { + spyv; + 0x7710CCC3E0000701; +} + +ispy INT.INT_VC.INT_VC_ERR_CFG_G0R0_ERROR_CONFIG [when=S && ATTR_CHIP_EC_FEATURE_P9N_INT_DD10] { + spyv; + 0x00001003000002; +} + +ispy INT.INT_VC.INT_VC_ERR_CFG_G0R1_ERROR_CONFIG [when=S && ATTR_CHIP_EC_FEATURE_P9N_INT_DD10] { + spyv; + 0xFFFFEFFCFFFFFC; +} + +ispy INT.INT_VC.INT_VC_ERR_CFG_G1R0_ERROR_CONFIG [when=S && ATTR_CHIP_EC_FEATURE_HW411637] { + spyv; + 0x0002C018006; +} + +ispy INT.INT_VC.INT_VC_ERR_CFG_G1R1_ERROR_CONFIG [when=S && ATTR_CHIP_EC_FEATURE_HW411637] { + spyv; + 0xFFFCFFEFFFA; +} + + +# FIR Registers +ispy INT.INT_CQ.INT_CQ_FIRMASK_FIR_MASK [when=S] { + spyv, expr; + 0x2000005C04028000, (ATTR_CHIP_EC_FEATURE_HW411637 == 1 && ATTR_CHIP_EC_FEATURE_HW426891 == 0); + 0x2000005C040281C3, (ATTR_CHIP_EC_FEATURE_HW411637 == 1 && ATTR_CHIP_EC_FEATURE_HW426891 == 1); + 0x0000005C040081C3, (ATTR_CHIP_EC_FEATURE_HW411637 == 0 && ATTR_CHIP_EC_FEATURE_HW426891 == 1); +} + +ispy INT.INT_CQ.INT_CQ_ACTION0_ACTION0 [when=S] { + spyv; + 0x0000000000000000; +} + +ispy INT.INT_CQ.INT_CQ_ACTION1_ACTION1 [when=S] { + spyv, expr; + 0x9554021F80110FCF, (ATTR_CHIP_EC_FEATURE_P9N_INT_DD10 == 1); + 0x9554021F80110E0C, (ATTR_CHIP_EC_FEATURE_P9N_INT_DD10 == 0); +} + + +# Dependent Dials +ispy INT.INT_CQ.INT_CQ_CFG_PB_GEN_ADDR_BAR_MODE [when=S] { + spyv; + 0; +} + +ispy INT.INT_CQ.INT_CQ_PBO_CTL_SKIP_G [when=S] { + spyv, expr; + 1 , (TGT1.ATTR_PROC_FABRIC_PUMP_MODE == ATTR_PROC_FABRIC_PUMP_MODE::CHIP_IS_GROUP); + 0 , (TGT1.ATTR_PROC_FABRIC_PUMP_MODE == ATTR_PROC_FABRIC_PUMP_MODE::CHIP_IS_NODE); +} + +ispy INT.INT_CQ.INT_CQ_CFG_PB_GEN_PUMP_MODE [when=S] { + spyv, expr; + 1 , (TGT1.ATTR_PROC_FABRIC_PUMP_MODE == ATTR_PROC_FABRIC_PUMP_MODE::CHIP_IS_GROUP); + 0 , (TGT1.ATTR_PROC_FABRIC_PUMP_MODE == ATTR_PROC_FABRIC_PUMP_MODE::CHIP_IS_NODE); +} + +ispy INT.INT_CQ.INT_CQ_CFG_PB_GEN_ADDR_EXT_MASK_EN_15_21 [when=S && ATTR_CHIP_EC_FEATURE_EXTENDED_ADDRESSING_MODE] { + bits, spyv; + 0:3, (TGT1.ATTR_FABRIC_ADDR_EXTENSION_GROUP_ID); + 4:6, (TGT1.ATTR_FABRIC_ADDR_EXTENSION_CHIP_ID); +} + +ispy INT.INT_CQ.INT_CQ_CFG_PB_GEN_SMF_CONFIG_0_1 [when=S && ATTR_CHIP_EC_FEATURE_SMF_SUPPORTED] { + spyv, expr; + 0b10, (TGT1.ATTR_SMF_CONFIG == TGT1.ATTR_SMF_CONFIG::ENABLED); +} + +# disable MCD for HW423589 +espy INT.INT_CQ.INT_CQ_PBO_CTL_DISABLE_G [when=S && ATTR_CHIP_EC_FEATURE_HW423589_OPTION1] { + spyv; + ON; +} + +espy INT.INT_CQ.INT_CQ_PBO_CTL_DISABLE_VG_NOT_SYS [when=S && ATTR_CHIP_EC_FEATURE_HW423589_OPTION1] { + spyv; + ON; +} +# HW441771 - Axone init to return to P9 behavior +ispy INT.INT_CQ.INT_CQ_PBI_CTL_RESERVED_25_31 [when=S && ATTR_CHIP_EC_FEATURE_AXONE_HW441771] { + spyv; + 0b1000000; +} diff --git a/src/import/chips/p9/procedures/hwp/initfiles/p9a_int_scan.C b/src/import/chips/p9/procedures/hwp/initfiles/p9a_int_scan.C new file mode 100644 index 000000000..f35a145d7 --- /dev/null +++ b/src/import/chips/p9/procedures/hwp/initfiles/p9a_int_scan.C @@ -0,0 +1,72 @@ +/* IBM_PROLOG_BEGIN_TAG */ +/* This is an automatically generated prolog. */ +/* */ +/* $Source: src/import/chips/p9/procedures/hwp/initfiles/p9a_int_scan.C $ */ +/* */ +/* OpenPOWER HostBoot Project */ +/* */ +/* Contributors Listed Below - COPYRIGHT 2019 */ +/* [+] 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 */ +#include "p9a_int_scan.H" +#include +#include +#include + +using namespace fapi2; + +constexpr uint64_t literal_0 = 0; +constexpr uint64_t literal_0b1 = 0b1; + +fapi2::ReturnCode p9a_int_scan(const fapi2::Target& TGT0) +{ + { + fapi2::ATTR_EC_Type l_chip_ec; + fapi2::ATTR_NAME_Type l_chip_id; + FAPI_TRY(FAPI_ATTR_GET_PRIVILEGED(fapi2::ATTR_NAME, TGT0, l_chip_id)); + FAPI_TRY(FAPI_ATTR_GET_PRIVILEGED(fapi2::ATTR_EC, TGT0, l_chip_ec)); + fapi2::ATTR_CHIP_EC_FEATURE_HW388874_Type l_TGT0_ATTR_CHIP_EC_FEATURE_HW388874; + FAPI_TRY(FAPI_ATTR_GET(fapi2::ATTR_CHIP_EC_FEATURE_HW388874, TGT0, l_TGT0_ATTR_CHIP_EC_FEATURE_HW388874)); + bool l_BRIDGE_PSIHB_ESB_OR_LSI_INTERRUPTS_update = false; + fapi2::variable_buffer l_BRIDGE_PSIHB_ESB_OR_LSI_INTERRUPTS(1); + fapi2::variable_buffer l_BRIDGE_PSIHB_ESB_OR_LSI_INTERRUPTS_CARE(1); + + if ((l_TGT0_ATTR_CHIP_EC_FEATURE_HW388874 == literal_0)) + { + constexpr auto l_BRIDGE_PSIHB_ESB_OR_LSI_INTERRUPTS_ON = 0x1; + l_BRIDGE_PSIHB_ESB_OR_LSI_INTERRUPTS.insertFromRight(l_BRIDGE_PSIHB_ESB_OR_LSI_INTERRUPTS_ON, 0, 1); + l_BRIDGE_PSIHB_ESB_OR_LSI_INTERRUPTS_CARE.insertFromRight(0x1, 0, 1); + l_BRIDGE_PSIHB_ESB_OR_LSI_INTERRUPTS_update = true; + } + + if ( l_BRIDGE_PSIHB_ESB_OR_LSI_INTERRUPTS_update) + { + FAPI_TRY(fapi2::putSpyWithCare(TGT0, "BRIDGE.PSIHB.ESB_OR_LSI_INTERRUPTS", l_BRIDGE_PSIHB_ESB_OR_LSI_INTERRUPTS, + l_BRIDGE_PSIHB_ESB_OR_LSI_INTERRUPTS_CARE)); + } + + fapi2::variable_buffer l_INT_INT_VC_LBS6_ARX_CS_AXONE_DISABLE_CILOAD_ORDERINGS(1); + fapi2::variable_buffer l_INT_INT_VC_LBS6_ARX_CS_AXONE_DISABLE_CILOAD_ORDERINGS_CARE(1); + l_INT_INT_VC_LBS6_ARX_CS_AXONE_DISABLE_CILOAD_ORDERINGS.insertFromRight(literal_0b1, 0, 1); + l_INT_INT_VC_LBS6_ARX_CS_AXONE_DISABLE_CILOAD_ORDERINGS_CARE.insertFromRight(0x1, 0, 1); + FAPI_TRY(fapi2::putSpyWithCare(TGT0, "INT.INT_VC_LBS6_ARX_CS_AXONE_DISABLE_CILOAD_ORDERINGS", + l_INT_INT_VC_LBS6_ARX_CS_AXONE_DISABLE_CILOAD_ORDERINGS, l_INT_INT_VC_LBS6_ARX_CS_AXONE_DISABLE_CILOAD_ORDERINGS_CARE)); + + }; +fapi_try_exit: + return fapi2::current_err; +} diff --git a/src/import/chips/p9/procedures/hwp/initfiles/p9a_int_scan.H b/src/import/chips/p9/procedures/hwp/initfiles/p9a_int_scan.H new file mode 100644 index 000000000..470e17d7d --- /dev/null +++ b/src/import/chips/p9/procedures/hwp/initfiles/p9a_int_scan.H @@ -0,0 +1,47 @@ +/* IBM_PROLOG_BEGIN_TAG */ +/* This is an automatically generated prolog. */ +/* */ +/* $Source: src/import/chips/p9/procedures/hwp/initfiles/p9a_int_scan.H $ */ +/* */ +/* OpenPOWER HostBoot Project */ +/* */ +/* Contributors Listed Below - COPYRIGHT 2019 */ +/* [+] 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 _INIT_P9A_INT_SCAN_PROCEDURE_H_ +#define _INIT_P9A_INT_SCAN_PROCEDURE_H_ + + +#include +#include +#include + +#ifdef IFCOMPILER_PLAT +#define INITFILE_PROCEDURE \ + p9a_int_scan(TGT0); +#endif + +typedef fapi2::ReturnCode (*p9a_int_scan_FP_t)(const fapi2::Target&); + +extern "C" +{ + + fapi2::ReturnCode p9a_int_scan(const fapi2::Target& TGT0); + +} + +#endif diff --git a/src/import/chips/p9/procedures/hwp/initfiles/p9a_int_scan.mk b/src/import/chips/p9/procedures/hwp/initfiles/p9a_int_scan.mk new file mode 100644 index 000000000..6fcb57af4 --- /dev/null +++ b/src/import/chips/p9/procedures/hwp/initfiles/p9a_int_scan.mk @@ -0,0 +1,36 @@ +# IBM_PROLOG_BEGIN_TAG +# This is an automatically generated prolog. +# +# $Source: src/import/chips/p9/procedures/hwp/initfiles/p9a_int_scan.mk $ +# +# OpenPOWER HostBoot Project +# +# Contributors Listed Below - COPYRIGHT 2019 +# [+] 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 +PROCEDURE=p9a_int_scan +lib$(PROCEDURE)_COMMONFLAGS+=-DFAPI_SUPPORT_SPY_AS_STRING=1 +$(call BUILD_PROCEDURE) + +PROCEDURE=p9a_int_scan_ifCompiler +lib$(PROCEDURE)_COMMONFLAGS+=-DFAPI_SUPPORT_SPY_AS_STRING=1 +lib$(PROCEDURE)_COMMONFLAGS+=-DIFCOMPILER_PLAT=1 +FAPI=2_IFCOMPILER +OBJS+=p9a_int_scan.o +lib$(PROCEDURE)_LIBPATH=$(LIBPATH)/ifCompiler +lib$(PROCEDURE)_COMMONFLAGS+=-fno-var-tracking-assignments +$(call BUILD_PROCEDURE) diff --git a/src/import/chips/p9/procedures/hwp/initfiles/p9a_int_scom.C b/src/import/chips/p9/procedures/hwp/initfiles/p9a_int_scom.C new file mode 100644 index 000000000..aa6143eb6 --- /dev/null +++ b/src/import/chips/p9/procedures/hwp/initfiles/p9a_int_scom.C @@ -0,0 +1,228 @@ +/* IBM_PROLOG_BEGIN_TAG */ +/* This is an automatically generated prolog. */ +/* */ +/* $Source: src/import/chips/p9/procedures/hwp/initfiles/p9a_int_scom.C $ */ +/* */ +/* OpenPOWER HostBoot Project */ +/* */ +/* Contributors Listed Below - COPYRIGHT 2019 */ +/* [+] 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 */ +#include "p9a_int_scom.H" +#include +#include +#include + +using namespace fapi2; + +constexpr uint64_t literal_0 = 0; +constexpr uint64_t literal_1 = 1; +constexpr uint64_t literal_0b10 = 0b10; +constexpr uint64_t literal_0b1000000 = 0b1000000; +constexpr uint64_t literal_0x2000005C04028000 = 0x2000005C04028000; +constexpr uint64_t literal_0x2000005C040281C3 = 0x2000005C040281C3; +constexpr uint64_t literal_0x0000005C040081C3 = 0x0000005C040081C3; +constexpr uint64_t literal_0x0000000000000000 = 0x0000000000000000; +constexpr uint64_t literal_0x9554021F80110FCF = 0x9554021F80110FCF; +constexpr uint64_t literal_0x9554021F80110E0C = 0x9554021F80110E0C; +constexpr uint64_t literal_0x18 = 0x18; +constexpr uint64_t literal_0x010003FF00100020 = 0x010003FF00100020; +constexpr uint64_t literal_0x050043EF00100020 = 0x050043EF00100020; +constexpr uint64_t literal_0xD8DFB200DFAFFFD7 = 0xD8DFB200DFAFFFD7; +constexpr uint64_t literal_0xFADFBB8CFFAFFFD7 = 0xFADFBB8CFFAFFFD7; +constexpr uint64_t literal_0x0002000410000000 = 0x0002000410000000; +constexpr uint64_t literal_0x0002000610000000 = 0x0002000610000000; +constexpr uint64_t literal_0x6262220242160000 = 0x6262220242160000; +constexpr uint64_t literal_0x5BBF = 0x5BBF; + +fapi2::ReturnCode p9a_int_scom(const fapi2::Target& TGT0, + const fapi2::Target& TGT1) +{ + { + fapi2::ATTR_EC_Type l_chip_ec; + fapi2::ATTR_NAME_Type l_chip_id; + FAPI_TRY(FAPI_ATTR_GET_PRIVILEGED(fapi2::ATTR_NAME, TGT0, l_chip_id)); + FAPI_TRY(FAPI_ATTR_GET_PRIVILEGED(fapi2::ATTR_EC, TGT0, l_chip_ec)); + fapi2::ATTR_PROC_FABRIC_PUMP_MODE_Type l_TGT1_ATTR_PROC_FABRIC_PUMP_MODE; + FAPI_TRY(FAPI_ATTR_GET(fapi2::ATTR_PROC_FABRIC_PUMP_MODE, TGT1, l_TGT1_ATTR_PROC_FABRIC_PUMP_MODE)); + fapi2::ATTR_FABRIC_ADDR_EXTENSION_GROUP_ID_Type l_TGT1_ATTR_FABRIC_ADDR_EXTENSION_GROUP_ID; + FAPI_TRY(FAPI_ATTR_GET(fapi2::ATTR_FABRIC_ADDR_EXTENSION_GROUP_ID, TGT1, l_TGT1_ATTR_FABRIC_ADDR_EXTENSION_GROUP_ID)); + fapi2::ATTR_FABRIC_ADDR_EXTENSION_CHIP_ID_Type l_TGT1_ATTR_FABRIC_ADDR_EXTENSION_CHIP_ID; + FAPI_TRY(FAPI_ATTR_GET(fapi2::ATTR_FABRIC_ADDR_EXTENSION_CHIP_ID, TGT1, l_TGT1_ATTR_FABRIC_ADDR_EXTENSION_CHIP_ID)); + fapi2::ATTR_SMF_CONFIG_Type l_TGT1_ATTR_SMF_CONFIG; + FAPI_TRY(FAPI_ATTR_GET(fapi2::ATTR_SMF_CONFIG, TGT1, l_TGT1_ATTR_SMF_CONFIG)); + fapi2::ATTR_CHIP_EC_FEATURE_HW426891_Type l_TGT0_ATTR_CHIP_EC_FEATURE_HW426891; + FAPI_TRY(FAPI_ATTR_GET(fapi2::ATTR_CHIP_EC_FEATURE_HW426891, TGT0, l_TGT0_ATTR_CHIP_EC_FEATURE_HW426891)); + fapi2::ATTR_CHIP_EC_FEATURE_HW411637_Type l_TGT0_ATTR_CHIP_EC_FEATURE_HW411637; + FAPI_TRY(FAPI_ATTR_GET(fapi2::ATTR_CHIP_EC_FEATURE_HW411637, TGT0, l_TGT0_ATTR_CHIP_EC_FEATURE_HW411637)); + fapi2::ATTR_CHIP_EC_FEATURE_P9N_INT_DD10_Type l_TGT0_ATTR_CHIP_EC_FEATURE_P9N_INT_DD10; + FAPI_TRY(FAPI_ATTR_GET(fapi2::ATTR_CHIP_EC_FEATURE_P9N_INT_DD10, TGT0, l_TGT0_ATTR_CHIP_EC_FEATURE_P9N_INT_DD10)); + fapi2::buffer l_scom_buffer; + { + FAPI_TRY(fapi2::getScom( TGT0, 0x501300aull, l_scom_buffer )); + + l_scom_buffer.insert<0, 1, 63, uint64_t>(literal_0 ); + + if ((l_TGT1_ATTR_PROC_FABRIC_PUMP_MODE == fapi2::ENUM_ATTR_PROC_FABRIC_PUMP_MODE_CHIP_IS_GROUP)) + { + l_scom_buffer.insert<1, 1, 63, uint64_t>(literal_1 ); + } + else if ((l_TGT1_ATTR_PROC_FABRIC_PUMP_MODE == fapi2::ENUM_ATTR_PROC_FABRIC_PUMP_MODE_CHIP_IS_NODE)) + { + l_scom_buffer.insert<1, 1, 63, uint64_t>(literal_0 ); + } + + l_scom_buffer.insert<5, 4, 60, uint64_t>(l_TGT1_ATTR_FABRIC_ADDR_EXTENSION_GROUP_ID ); + l_scom_buffer.insert<9, 3, 61, uint64_t>(l_TGT1_ATTR_FABRIC_ADDR_EXTENSION_CHIP_ID ); + + if ((l_TGT1_ATTR_SMF_CONFIG == fapi2::ENUM_ATTR_SMF_CONFIG_ENABLED)) + { + l_scom_buffer.insert<12, 2, 62, uint64_t>(literal_0b10 ); + } + + FAPI_TRY(fapi2::putScom(TGT0, 0x501300aull, l_scom_buffer)); + } + { + FAPI_TRY(fapi2::getScom( TGT0, 0x5013020ull, l_scom_buffer )); + + l_scom_buffer.insert<25, 7, 57, uint64_t>(literal_0b1000000 ); + FAPI_TRY(fapi2::putScom(TGT0, 0x5013020ull, l_scom_buffer)); + } + { + FAPI_TRY(fapi2::getScom( TGT0, 0x5013021ull, l_scom_buffer )); + + if ((l_TGT1_ATTR_PROC_FABRIC_PUMP_MODE == fapi2::ENUM_ATTR_PROC_FABRIC_PUMP_MODE_CHIP_IS_GROUP)) + { + l_scom_buffer.insert<49, 1, 63, uint64_t>(literal_1 ); + } + else if ((l_TGT1_ATTR_PROC_FABRIC_PUMP_MODE == fapi2::ENUM_ATTR_PROC_FABRIC_PUMP_MODE_CHIP_IS_NODE)) + { + l_scom_buffer.insert<49, 1, 63, uint64_t>(literal_0 ); + } + + FAPI_TRY(fapi2::putScom(TGT0, 0x5013021ull, l_scom_buffer)); + } + { + FAPI_TRY(fapi2::getScom( TGT0, 0x5013033ull, l_scom_buffer )); + + if (((l_TGT0_ATTR_CHIP_EC_FEATURE_HW411637 == literal_1) && (l_TGT0_ATTR_CHIP_EC_FEATURE_HW426891 == literal_0))) + { + l_scom_buffer.insert<0, 64, 0, uint64_t>(literal_0x2000005C04028000 ); + } + else if (((l_TGT0_ATTR_CHIP_EC_FEATURE_HW411637 == literal_1) && (l_TGT0_ATTR_CHIP_EC_FEATURE_HW426891 == literal_1))) + { + l_scom_buffer.insert<0, 64, 0, uint64_t>(literal_0x2000005C040281C3 ); + } + else if (((l_TGT0_ATTR_CHIP_EC_FEATURE_HW411637 == literal_0) && (l_TGT0_ATTR_CHIP_EC_FEATURE_HW426891 == literal_1))) + { + l_scom_buffer.insert<0, 64, 0, uint64_t>(literal_0x0000005C040081C3 ); + } + + FAPI_TRY(fapi2::putScom(TGT0, 0x5013033ull, l_scom_buffer)); + } + { + FAPI_TRY(fapi2::getScom( TGT0, 0x5013036ull, l_scom_buffer )); + + l_scom_buffer.insert<0, 64, 0, uint64_t>(literal_0x0000000000000000 ); + FAPI_TRY(fapi2::putScom(TGT0, 0x5013036ull, l_scom_buffer)); + } + { + FAPI_TRY(fapi2::getScom( TGT0, 0x5013037ull, l_scom_buffer )); + + if ((l_TGT0_ATTR_CHIP_EC_FEATURE_P9N_INT_DD10 == literal_1)) + { + l_scom_buffer.insert<0, 64, 0, uint64_t>(literal_0x9554021F80110FCF ); + } + else if ((l_TGT0_ATTR_CHIP_EC_FEATURE_P9N_INT_DD10 == literal_0)) + { + l_scom_buffer.insert<0, 64, 0, uint64_t>(literal_0x9554021F80110E0C ); + } + + FAPI_TRY(fapi2::putScom(TGT0, 0x5013037ull, l_scom_buffer)); + } + { + FAPI_TRY(fapi2::getScom( TGT0, 0x5013130ull, l_scom_buffer )); + + l_scom_buffer.insert<2, 6, 58, uint64_t>(literal_0x18 ); + l_scom_buffer.insert<10, 6, 58, uint64_t>(literal_0x18 ); + FAPI_TRY(fapi2::putScom(TGT0, 0x5013130ull, l_scom_buffer)); + } + { + FAPI_TRY(fapi2::getScom( TGT0, 0x5013140ull, l_scom_buffer )); + + if ((l_TGT0_ATTR_CHIP_EC_FEATURE_HW426891 == literal_0)) + { + l_scom_buffer.insert<0, 64, 0, uint64_t>(literal_0x010003FF00100020 ); + } + else if ((l_TGT0_ATTR_CHIP_EC_FEATURE_HW426891 == literal_1)) + { + l_scom_buffer.insert<0, 64, 0, uint64_t>(literal_0x050043EF00100020 ); + } + + FAPI_TRY(fapi2::putScom(TGT0, 0x5013140ull, l_scom_buffer)); + } + { + FAPI_TRY(fapi2::getScom( TGT0, 0x5013141ull, l_scom_buffer )); + + if ((l_TGT0_ATTR_CHIP_EC_FEATURE_HW426891 == literal_0)) + { + l_scom_buffer.insert<0, 64, 0, uint64_t>(literal_0xD8DFB200DFAFFFD7 ); + } + else if ((l_TGT0_ATTR_CHIP_EC_FEATURE_HW426891 == literal_1)) + { + l_scom_buffer.insert<0, 64, 0, uint64_t>(literal_0xFADFBB8CFFAFFFD7 ); + } + + FAPI_TRY(fapi2::putScom(TGT0, 0x5013141ull, l_scom_buffer)); + } + { + FAPI_TRY(fapi2::getScom( TGT0, 0x5013178ull, l_scom_buffer )); + + if ((l_TGT0_ATTR_CHIP_EC_FEATURE_HW426891 == literal_0)) + { + l_scom_buffer.insert<0, 64, 0, uint64_t>(literal_0x0002000410000000 ); + } + else if ((l_TGT0_ATTR_CHIP_EC_FEATURE_HW426891 == literal_1)) + { + l_scom_buffer.insert<0, 64, 0, uint64_t>(literal_0x0002000610000000 ); + } + + FAPI_TRY(fapi2::putScom(TGT0, 0x5013178ull, l_scom_buffer)); + } + { + FAPI_TRY(fapi2::getScom( TGT0, 0x501320eull, l_scom_buffer )); + + l_scom_buffer.insert<0, 48, 0, uint64_t>(literal_0x6262220242160000 ); + FAPI_TRY(fapi2::putScom(TGT0, 0x501320eull, l_scom_buffer)); + } + { + FAPI_TRY(fapi2::getScom( TGT0, 0x5013214ull, l_scom_buffer )); + + l_scom_buffer.insert<16, 16, 48, uint64_t>(literal_0x5BBF ); + FAPI_TRY(fapi2::putScom(TGT0, 0x5013214ull, l_scom_buffer)); + } + { + FAPI_TRY(fapi2::getScom( TGT0, 0x501322bull, l_scom_buffer )); + + l_scom_buffer.insert<58, 6, 58, uint64_t>(literal_0x18 ); + FAPI_TRY(fapi2::putScom(TGT0, 0x501322bull, l_scom_buffer)); + } + + }; +fapi_try_exit: + return fapi2::current_err; +} diff --git a/src/import/chips/p9/procedures/hwp/initfiles/p9a_int_scom.H b/src/import/chips/p9/procedures/hwp/initfiles/p9a_int_scom.H new file mode 100644 index 000000000..50fb3b02e --- /dev/null +++ b/src/import/chips/p9/procedures/hwp/initfiles/p9a_int_scom.H @@ -0,0 +1,45 @@ +/* IBM_PROLOG_BEGIN_TAG */ +/* This is an automatically generated prolog. */ +/* */ +/* $Source: src/import/chips/p9/procedures/hwp/initfiles/p9a_int_scom.H $ */ +/* */ +/* OpenPOWER HostBoot Project */ +/* */ +/* Contributors Listed Below - COPYRIGHT 2019 */ +/* [+] 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 _INIT_P9A_INT_SCOM_PROCEDURE_H_ +#define _INIT_P9A_INT_SCOM_PROCEDURE_H_ + + +#include +#include +#include + + +typedef fapi2::ReturnCode (*p9a_int_scom_FP_t)(const fapi2::Target&, + const fapi2::Target&); + +extern "C" +{ + + fapi2::ReturnCode p9a_int_scom(const fapi2::Target& TGT0, + const fapi2::Target& TGT1); + +} + +#endif diff --git a/src/import/chips/p9/procedures/hwp/initfiles/p9a_int_scom.mk b/src/import/chips/p9/procedures/hwp/initfiles/p9a_int_scom.mk new file mode 100644 index 000000000..8242855ad --- /dev/null +++ b/src/import/chips/p9/procedures/hwp/initfiles/p9a_int_scom.mk @@ -0,0 +1,27 @@ +# IBM_PROLOG_BEGIN_TAG +# This is an automatically generated prolog. +# +# $Source: src/import/chips/p9/procedures/hwp/initfiles/p9a_int_scom.mk $ +# +# OpenPOWER HostBoot Project +# +# Contributors Listed Below - COPYRIGHT 2019 +# [+] 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 +PROCEDURE=p9a_int_scom +lib$(PROCEDURE)_COMMONFLAGS+=-fno-var-tracking-assignments +$(call BUILD_PROCEDURE) diff --git a/src/import/chips/p9/procedures/xml/attribute_info/chip_ec_attributes.xml b/src/import/chips/p9/procedures/xml/attribute_info/chip_ec_attributes.xml index 140c9ac9a..4bbfaaeac 100644 --- a/src/import/chips/p9/procedures/xml/attribute_info/chip_ec_attributes.xml +++ b/src/import/chips/p9/procedures/xml/attribute_info/chip_ec_attributes.xml @@ -9025,6 +9025,23 @@ + + ATTR_CHIP_EC_FEATURE_AXONE_HW441771 + TARGET_TYPE_PROC_CHIP + + Bumpy Toothpaste fix not enabled in Axone + + + + ENUM_ATTR_NAME_AXONE + + 0x10 + GREATER_THAN_OR_EQUAL + + + + + ATTR_CHIP_EC_FEATURE_OMI_DL_X4_BACKOFF_ENABLE TARGET_TYPE_OCMB_CHIP -- cgit v1.2.1