diff options
18 files changed, 1173 insertions, 25 deletions
diff --git a/src/import/chips/p9/procedures/hwp/initfiles/p9a_mc_scom.C b/src/import/chips/p9/procedures/hwp/initfiles/p9a_mc_scom.C new file mode 100644 index 000000000..a0541793c --- /dev/null +++ b/src/import/chips/p9/procedures/hwp/initfiles/p9a_mc_scom.C @@ -0,0 +1,109 @@ +/* IBM_PROLOG_BEGIN_TAG */ +/* This is an automatically generated prolog. */ +/* */ +/* $Source: src/import/chips/p9/procedures/hwp/initfiles/p9a_mc_scom.C $ */ +/* */ +/* OpenPOWER HostBoot Project */ +/* */ +/* Contributors Listed Below - COPYRIGHT 2018,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_mc_scom.H" +#include <stdint.h> +#include <stddef.h> +#include <fapi2.H> + +using namespace fapi2; + +constexpr uint64_t literal_0xFFFFFFFFFFFFFFFF = 0xFFFFFFFFFFFFFFFF; +constexpr uint64_t literal_0x0000000000000000 = 0x0000000000000000; + +fapi2::ReturnCode p9a_mc_scom(const fapi2::Target<fapi2::TARGET_TYPE_MC>& TGT0, + const fapi2::Target<fapi2::TARGET_TYPE_SYSTEM>& TGT1, const fapi2::Target<fapi2::TARGET_TYPE_PROC_CHIP>& TGT3) +{ + { + fapi2::ATTR_EC_Type l_chip_ec; + fapi2::ATTR_NAME_Type l_chip_id; + FAPI_TRY(FAPI_ATTR_GET_PRIVILEGED(fapi2::ATTR_NAME, TGT3, l_chip_id)); + FAPI_TRY(FAPI_ATTR_GET_PRIVILEGED(fapi2::ATTR_EC, TGT3, l_chip_ec)); + fapi2::buffer<uint64_t> l_scom_buffer; + { + FAPI_TRY(fapi2::getScom( TGT0, 0x70123afull, l_scom_buffer )); + + constexpr auto l_MCP_MISC_MBA_SCOMFIR_MCBPARMQ_CFG_CLOCK_MONITOR_EN_ON = 0x1; + l_scom_buffer.insert<59, 1, 63, uint64_t>(l_MCP_MISC_MBA_SCOMFIR_MCBPARMQ_CFG_CLOCK_MONITOR_EN_ON ); + FAPI_TRY(fapi2::putScom(TGT0, 0x70123afull, l_scom_buffer)); + } + { + FAPI_TRY(fapi2::getScom( TGT0, 0x7013343ull, l_scom_buffer )); + + l_scom_buffer.insert<0, 64, 0, uint64_t>(literal_0xFFFFFFFFFFFFFFFF ); + FAPI_TRY(fapi2::putScom(TGT0, 0x7013343ull, l_scom_buffer)); + } + { + FAPI_TRY(fapi2::getScom( TGT0, 0x7013346ull, l_scom_buffer )); + + l_scom_buffer.insert<0, 64, 0, uint64_t>(literal_0x0000000000000000 ); + FAPI_TRY(fapi2::putScom(TGT0, 0x7013346ull, l_scom_buffer)); + } + { + FAPI_TRY(fapi2::getScom( TGT0, 0x7013347ull, l_scom_buffer )); + + l_scom_buffer.insert<0, 64, 0, uint64_t>(literal_0x0000000000000000 ); + FAPI_TRY(fapi2::putScom(TGT0, 0x7013347ull, l_scom_buffer)); + } + { + FAPI_TRY(fapi2::getScom( TGT0, 0x7013383ull, l_scom_buffer )); + + l_scom_buffer.insert<0, 64, 0, uint64_t>(literal_0xFFFFFFFFFFFFFFFF ); + FAPI_TRY(fapi2::putScom(TGT0, 0x7013383ull, l_scom_buffer)); + } + { + FAPI_TRY(fapi2::getScom( TGT0, 0x7013386ull, l_scom_buffer )); + + l_scom_buffer.insert<0, 64, 0, uint64_t>(literal_0x0000000000000000 ); + FAPI_TRY(fapi2::putScom(TGT0, 0x7013386ull, l_scom_buffer)); + } + { + FAPI_TRY(fapi2::getScom( TGT0, 0x7013387ull, l_scom_buffer )); + + l_scom_buffer.insert<0, 64, 0, uint64_t>(literal_0x0000000000000000 ); + FAPI_TRY(fapi2::putScom(TGT0, 0x7013387ull, l_scom_buffer)); + } + { + FAPI_TRY(fapi2::getScom( TGT0, 0x70133c3ull, l_scom_buffer )); + + l_scom_buffer.insert<0, 64, 0, uint64_t>(literal_0xFFFFFFFFFFFFFFFF ); + FAPI_TRY(fapi2::putScom(TGT0, 0x70133c3ull, l_scom_buffer)); + } + { + FAPI_TRY(fapi2::getScom( TGT0, 0x70133c6ull, l_scom_buffer )); + + l_scom_buffer.insert<0, 64, 0, uint64_t>(literal_0x0000000000000000 ); + FAPI_TRY(fapi2::putScom(TGT0, 0x70133c6ull, l_scom_buffer)); + } + { + FAPI_TRY(fapi2::getScom( TGT0, 0x70133c7ull, l_scom_buffer )); + + l_scom_buffer.insert<0, 64, 0, uint64_t>(literal_0x0000000000000000 ); + FAPI_TRY(fapi2::putScom(TGT0, 0x70133c7ull, l_scom_buffer)); + } + + }; +fapi_try_exit: + return fapi2::current_err; +} diff --git a/src/import/chips/p9/procedures/hwp/initfiles/p9a_mc_scom.H b/src/import/chips/p9/procedures/hwp/initfiles/p9a_mc_scom.H new file mode 100644 index 000000000..95a656ce7 --- /dev/null +++ b/src/import/chips/p9/procedures/hwp/initfiles/p9a_mc_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_mc_scom.H $ */ +/* */ +/* OpenPOWER HostBoot Project */ +/* */ +/* Contributors Listed Below - COPYRIGHT 2018,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_MC_SCOM_PROCEDURE_H_ +#define _INIT_P9A_MC_SCOM_PROCEDURE_H_ + + +#include <stddef.h> +#include <stdint.h> +#include <fapi2.H> + + +typedef fapi2::ReturnCode (*p9a_mc_scom_FP_t)(const fapi2::Target<fapi2::TARGET_TYPE_MC>&, + const fapi2::Target<fapi2::TARGET_TYPE_SYSTEM>&, const fapi2::Target<fapi2::TARGET_TYPE_PROC_CHIP>&); + +extern "C" +{ + + fapi2::ReturnCode p9a_mc_scom(const fapi2::Target<fapi2::TARGET_TYPE_MC>& TGT0, + const fapi2::Target<fapi2::TARGET_TYPE_SYSTEM>& TGT1, const fapi2::Target<fapi2::TARGET_TYPE_PROC_CHIP>& TGT3); + +} + +#endif diff --git a/src/import/chips/p9/procedures/hwp/initfiles/p9a_mc_scom.mk b/src/import/chips/p9/procedures/hwp/initfiles/p9a_mc_scom.mk new file mode 100644 index 000000000..e56a4bf4e --- /dev/null +++ b/src/import/chips/p9/procedures/hwp/initfiles/p9a_mc_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_mc_scom.mk $ +# +# OpenPOWER HostBoot Project +# +# Contributors Listed Below - COPYRIGHT 2018,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_mc_scom +lib$(PROCEDURE)_COMMONFLAGS+=-fno-var-tracking-assignments +$(call BUILD_PROCEDURE) diff --git a/src/import/chips/p9/procedures/hwp/initfiles/p9a_mcc_omi_scan.C b/src/import/chips/p9/procedures/hwp/initfiles/p9a_mcc_omi_scan.C new file mode 100644 index 000000000..974ffb124 --- /dev/null +++ b/src/import/chips/p9/procedures/hwp/initfiles/p9a_mcc_omi_scan.C @@ -0,0 +1,77 @@ +/* IBM_PROLOG_BEGIN_TAG */ +/* This is an automatically generated prolog. */ +/* */ +/* $Source: src/import/chips/p9/procedures/hwp/initfiles/p9a_mcc_omi_scan.C $ */ +/* */ +/* OpenPOWER HostBoot Project */ +/* */ +/* Contributors Listed Below - COPYRIGHT 2018,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_mcc_omi_scan.H" +#include <stdint.h> +#include <stddef.h> +#include <fapi2.H> + +using namespace fapi2; + +constexpr uint64_t literal_8 = 8; + +fapi2::ReturnCode p9a_mcc_omi_scan(const fapi2::Target<fapi2::TARGET_TYPE_PROC_CHIP>& 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::variable_buffer l_MC01_CHAN0_ATCL_CL_CLSCOM_MCPERF0_WR_RSVD_LOWER_OR_STATIC_LIMIT(6); + fapi2::variable_buffer l_MC01_CHAN0_ATCL_CL_CLSCOM_MCPERF0_WR_RSVD_LOWER_OR_STATIC_LIMIT_CARE(6); + l_MC01_CHAN0_ATCL_CL_CLSCOM_MCPERF0_WR_RSVD_LOWER_OR_STATIC_LIMIT.insertFromRight<uint64_t>(literal_8, 0, 6); + l_MC01_CHAN0_ATCL_CL_CLSCOM_MCPERF0_WR_RSVD_LOWER_OR_STATIC_LIMIT_CARE.insertFromRight<uint64_t>(0x3f, 0, 6); + FAPI_TRY(fapi2::putSpyWithCare(TGT0, "MC01.CHAN0.ATCL.CL.CLSCOM.MCPERF0_WR_RSVD_LOWER_OR_STATIC_LIMIT", + l_MC01_CHAN0_ATCL_CL_CLSCOM_MCPERF0_WR_RSVD_LOWER_OR_STATIC_LIMIT, + l_MC01_CHAN0_ATCL_CL_CLSCOM_MCPERF0_WR_RSVD_LOWER_OR_STATIC_LIMIT_CARE)); + FAPI_TRY(fapi2::putSpyWithCare(TGT0, "MC01.CHAN1.ATCL.CL.CLSCOM.MCPERF0_WR_RSVD_LOWER_OR_STATIC_LIMIT", + l_MC01_CHAN0_ATCL_CL_CLSCOM_MCPERF0_WR_RSVD_LOWER_OR_STATIC_LIMIT, + l_MC01_CHAN0_ATCL_CL_CLSCOM_MCPERF0_WR_RSVD_LOWER_OR_STATIC_LIMIT_CARE)); + FAPI_TRY(fapi2::putSpyWithCare(TGT0, "MC01.CHAN2.ATCL.CL.CLSCOM.MCPERF0_WR_RSVD_LOWER_OR_STATIC_LIMIT", + l_MC01_CHAN0_ATCL_CL_CLSCOM_MCPERF0_WR_RSVD_LOWER_OR_STATIC_LIMIT, + l_MC01_CHAN0_ATCL_CL_CLSCOM_MCPERF0_WR_RSVD_LOWER_OR_STATIC_LIMIT_CARE)); + FAPI_TRY(fapi2::putSpyWithCare(TGT0, "MC01.CHAN3.ATCL.CL.CLSCOM.MCPERF0_WR_RSVD_LOWER_OR_STATIC_LIMIT", + l_MC01_CHAN0_ATCL_CL_CLSCOM_MCPERF0_WR_RSVD_LOWER_OR_STATIC_LIMIT, + l_MC01_CHAN0_ATCL_CL_CLSCOM_MCPERF0_WR_RSVD_LOWER_OR_STATIC_LIMIT_CARE)); + fapi2::variable_buffer l_MC23_CHAN0_ATCL_CL_CLSCOM_MCPERF0_WR_RSVD_LOWER_OR_STATIC_LIMIT(6); + fapi2::variable_buffer l_MC23_CHAN0_ATCL_CL_CLSCOM_MCPERF0_WR_RSVD_LOWER_OR_STATIC_LIMIT_CARE(6); + l_MC23_CHAN0_ATCL_CL_CLSCOM_MCPERF0_WR_RSVD_LOWER_OR_STATIC_LIMIT.insertFromRight<uint64_t>(literal_8, 0, 6); + l_MC23_CHAN0_ATCL_CL_CLSCOM_MCPERF0_WR_RSVD_LOWER_OR_STATIC_LIMIT_CARE.insertFromRight<uint64_t>(0x3f, 0, 6); + FAPI_TRY(fapi2::putSpyWithCare(TGT0, "MC23.CHAN0.ATCL.CL.CLSCOM.MCPERF0_WR_RSVD_LOWER_OR_STATIC_LIMIT", + l_MC23_CHAN0_ATCL_CL_CLSCOM_MCPERF0_WR_RSVD_LOWER_OR_STATIC_LIMIT, + l_MC23_CHAN0_ATCL_CL_CLSCOM_MCPERF0_WR_RSVD_LOWER_OR_STATIC_LIMIT_CARE)); + FAPI_TRY(fapi2::putSpyWithCare(TGT0, "MC23.CHAN1.ATCL.CL.CLSCOM.MCPERF0_WR_RSVD_LOWER_OR_STATIC_LIMIT", + l_MC23_CHAN0_ATCL_CL_CLSCOM_MCPERF0_WR_RSVD_LOWER_OR_STATIC_LIMIT, + l_MC23_CHAN0_ATCL_CL_CLSCOM_MCPERF0_WR_RSVD_LOWER_OR_STATIC_LIMIT_CARE)); + FAPI_TRY(fapi2::putSpyWithCare(TGT0, "MC23.CHAN2.ATCL.CL.CLSCOM.MCPERF0_WR_RSVD_LOWER_OR_STATIC_LIMIT", + l_MC23_CHAN0_ATCL_CL_CLSCOM_MCPERF0_WR_RSVD_LOWER_OR_STATIC_LIMIT, + l_MC23_CHAN0_ATCL_CL_CLSCOM_MCPERF0_WR_RSVD_LOWER_OR_STATIC_LIMIT_CARE)); + FAPI_TRY(fapi2::putSpyWithCare(TGT0, "MC23.CHAN3.ATCL.CL.CLSCOM.MCPERF0_WR_RSVD_LOWER_OR_STATIC_LIMIT", + l_MC23_CHAN0_ATCL_CL_CLSCOM_MCPERF0_WR_RSVD_LOWER_OR_STATIC_LIMIT, + l_MC23_CHAN0_ATCL_CL_CLSCOM_MCPERF0_WR_RSVD_LOWER_OR_STATIC_LIMIT_CARE)); + + }; +fapi_try_exit: + return fapi2::current_err; +} diff --git a/src/import/chips/p9/procedures/hwp/initfiles/p9a_mcc_omi_scan.H b/src/import/chips/p9/procedures/hwp/initfiles/p9a_mcc_omi_scan.H new file mode 100644 index 000000000..7ba8bd967 --- /dev/null +++ b/src/import/chips/p9/procedures/hwp/initfiles/p9a_mcc_omi_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_mcc_omi_scan.H $ */ +/* */ +/* OpenPOWER HostBoot Project */ +/* */ +/* Contributors Listed Below - COPYRIGHT 2018,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_MCC_OMI_SCAN_PROCEDURE_H_ +#define _INIT_P9A_MCC_OMI_SCAN_PROCEDURE_H_ + + +#include <stddef.h> +#include <stdint.h> +#include <fapi2.H> + +#ifdef IFCOMPILER_PLAT +#define INITFILE_PROCEDURE \ + p9a_mcc_omi_scan(TGT0); +#endif + +typedef fapi2::ReturnCode (*p9a_mcc_omi_scan_FP_t)(const fapi2::Target<fapi2::TARGET_TYPE_PROC_CHIP>&); + +extern "C" +{ + + fapi2::ReturnCode p9a_mcc_omi_scan(const fapi2::Target<fapi2::TARGET_TYPE_PROC_CHIP>& TGT0); + +} + +#endif diff --git a/src/import/chips/p9/procedures/hwp/initfiles/p9a_mcc_omi_scan.mk b/src/import/chips/p9/procedures/hwp/initfiles/p9a_mcc_omi_scan.mk new file mode 100644 index 000000000..ffbbd78e0 --- /dev/null +++ b/src/import/chips/p9/procedures/hwp/initfiles/p9a_mcc_omi_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_mcc_omi_scan.mk $ +# +# OpenPOWER HostBoot Project +# +# Contributors Listed Below - COPYRIGHT 2018,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_mcc_omi_scan +lib$(PROCEDURE)_COMMONFLAGS+=-DFAPI_SUPPORT_SPY_AS_STRING=1 +$(call BUILD_PROCEDURE) + +PROCEDURE=p9a_mcc_omi_scan_ifCompiler +lib$(PROCEDURE)_COMMONFLAGS+=-DFAPI_SUPPORT_SPY_AS_STRING=1 +lib$(PROCEDURE)_COMMONFLAGS+=-DIFCOMPILER_PLAT=1 +FAPI=2_IFCOMPILER +OBJS+=p9a_mcc_omi_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_mcc_omi_scom.C b/src/import/chips/p9/procedures/hwp/initfiles/p9a_mcc_omi_scom.C index 4bf511be5..ba6150c7a 100644 --- a/src/import/chips/p9/procedures/hwp/initfiles/p9a_mcc_omi_scom.C +++ b/src/import/chips/p9/procedures/hwp/initfiles/p9a_mcc_omi_scom.C @@ -29,18 +29,207 @@ using namespace fapi2; +constexpr uint64_t literal_1 = 1; +constexpr uint64_t literal_24 = 24; +constexpr uint64_t literal_12 = 12; +constexpr uint64_t literal_0 = 0; +constexpr uint64_t literal_0b0100 = 0b0100; +constexpr uint64_t literal_28 = 28; +constexpr uint64_t literal_0x1 = 0x1; +constexpr uint64_t literal_0x3 = 0x3; +constexpr uint64_t literal_0x5 = 0x5; +constexpr uint64_t literal_0x7 = 0x7; +constexpr uint64_t literal_0b1100111111111111111111111 = 0b1100111111111111111111111; +constexpr uint64_t literal_4 = 4; +constexpr uint64_t literal_6 = 6; +constexpr uint64_t literal_0x26 = 0x26; +constexpr uint64_t literal_0x33 = 0x33; +constexpr uint64_t literal_0x40 = 0x40; constexpr uint64_t literal_0b100000 = 0b100000; constexpr uint64_t literal_0b0001 = 0b0001; constexpr uint64_t literal_0b1000000 = 0b1000000; constexpr uint64_t literal_0b011000 = 0b011000; +constexpr uint64_t literal_7 = 7; constexpr uint64_t literal_0b1 = 0b1; +constexpr uint64_t literal_6363 = 6363; +constexpr uint64_t literal_10000 = 10000; +constexpr uint64_t literal_4500 = 4500; +constexpr uint64_t literal_7272 = 7272; +constexpr uint64_t literal_5800 = 5800; +constexpr uint64_t literal_5 = 5; +constexpr uint64_t literal_8181 = 8181; +constexpr uint64_t literal_7000 = 7000; +constexpr uint64_t literal_9090 = 9090; +constexpr uint64_t literal_8000 = 8000; +constexpr uint64_t literal_0b0000110000 = 0b0000110000; fapi2::ReturnCode p9a_mcc_omi_scom(const fapi2::Target<fapi2::TARGET_TYPE_MCC>& TGT0, - const fapi2::Target<fapi2::TARGET_TYPE_SYSTEM>& TGT1) + const fapi2::Target<fapi2::TARGET_TYPE_SYSTEM>& TGT1, const fapi2::Target<fapi2::TARGET_TYPE_PROC_CHIP>& TGT3) { { + fapi2::ATTR_EC_Type l_chip_ec; + fapi2::ATTR_NAME_Type l_chip_id; + FAPI_TRY(FAPI_ATTR_GET_PRIVILEGED(fapi2::ATTR_NAME, TGT3, l_chip_id)); + FAPI_TRY(FAPI_ATTR_GET_PRIVILEGED(fapi2::ATTR_EC, TGT3, l_chip_ec)); + uint64_t l_def_ENABLE_AMO_CACHING = literal_1; + uint64_t l_def_ENABLE_AMO_CLEAN_LINES = literal_1; + uint64_t l_def_ENABLE_PREFETCH_DROP_PROMOTE_BASIC = literal_1; + fapi2::ATTR_PROC_EPS_READ_CYCLES_T0_Type l_TGT1_ATTR_PROC_EPS_READ_CYCLES_T0; + FAPI_TRY(FAPI_ATTR_GET(fapi2::ATTR_PROC_EPS_READ_CYCLES_T0, TGT1, l_TGT1_ATTR_PROC_EPS_READ_CYCLES_T0)); + uint64_t l_def_MC_EPSILON_CFG_T0 = ((l_TGT1_ATTR_PROC_EPS_READ_CYCLES_T0 + literal_6) / literal_4); + fapi2::ATTR_PROC_EPS_READ_CYCLES_T1_Type l_TGT1_ATTR_PROC_EPS_READ_CYCLES_T1; + FAPI_TRY(FAPI_ATTR_GET(fapi2::ATTR_PROC_EPS_READ_CYCLES_T1, TGT1, l_TGT1_ATTR_PROC_EPS_READ_CYCLES_T1)); + uint64_t l_def_MC_EPSILON_CFG_T1 = ((l_TGT1_ATTR_PROC_EPS_READ_CYCLES_T1 + literal_6) / literal_4); + fapi2::ATTR_PROC_EPS_READ_CYCLES_T2_Type l_TGT1_ATTR_PROC_EPS_READ_CYCLES_T2; + FAPI_TRY(FAPI_ATTR_GET(fapi2::ATTR_PROC_EPS_READ_CYCLES_T2, TGT1, l_TGT1_ATTR_PROC_EPS_READ_CYCLES_T2)); + uint64_t l_def_MC_EPSILON_CFG_T2 = ((l_TGT1_ATTR_PROC_EPS_READ_CYCLES_T2 + literal_6) / literal_4); + uint64_t l_def_ENABLE_MCBUSY = literal_1; + fapi2::ATTR_ENABLE_MEM_EARLY_DATA_SCOM_Type l_TGT1_ATTR_ENABLE_MEM_EARLY_DATA_SCOM; + FAPI_TRY(FAPI_ATTR_GET(fapi2::ATTR_ENABLE_MEM_EARLY_DATA_SCOM, TGT1, l_TGT1_ATTR_ENABLE_MEM_EARLY_DATA_SCOM)); + uint64_t l_def_ENABLE_MCU_TIMEOUTS = literal_1; + fapi2::ATTR_IS_SIMULATION_Type l_TGT1_ATTR_IS_SIMULATION; + FAPI_TRY(FAPI_ATTR_GET(fapi2::ATTR_IS_SIMULATION, TGT1, l_TGT1_ATTR_IS_SIMULATION)); + uint64_t l_def_IS_SIM = (l_TGT1_ATTR_IS_SIMULATION == literal_1); + fapi2::ATTR_FREQ_PB_MHZ_Type l_TGT1_ATTR_FREQ_PB_MHZ; + FAPI_TRY(FAPI_ATTR_GET(fapi2::ATTR_FREQ_PB_MHZ, TGT1, l_TGT1_ATTR_FREQ_PB_MHZ)); + fapi2::ATTR_FREQ_MCA_MHZ_Type l_TGT1_ATTR_FREQ_MCA_MHZ; + FAPI_TRY(FAPI_ATTR_GET(fapi2::ATTR_FREQ_MCA_MHZ, TGT1, l_TGT1_ATTR_FREQ_MCA_MHZ)); + uint64_t l_def_MCA_FREQ = l_TGT1_ATTR_FREQ_MCA_MHZ; + uint64_t l_def_MN_FREQ_RATIO = ((literal_10000 * l_def_MCA_FREQ) / l_TGT1_ATTR_FREQ_PB_MHZ); + uint64_t l_def_ENABLE_HWFM = literal_1; fapi2::buffer<uint64_t> l_scom_buffer; { + FAPI_TRY(fapi2::getScom( TGT0, 0x5010823ull, l_scom_buffer )); + + if (l_def_ENABLE_AMO_CACHING) + { + l_scom_buffer.insert<22, 6, 58, uint64_t>(literal_24 ); + } + + FAPI_TRY(fapi2::putScom(TGT0, 0x5010823ull, l_scom_buffer)); + } + { + FAPI_TRY(fapi2::getScom( TGT0, 0x5010824ull, l_scom_buffer )); + + if ((l_def_ENABLE_AMO_CLEAN_LINES == literal_1)) + { + l_scom_buffer.insert<44, 6, 58, uint64_t>(literal_12 ); + } + + l_scom_buffer.insert<40, 4, 60, uint64_t>(literal_0 ); + l_scom_buffer.insert<28, 4, 60, uint64_t>(literal_0b0100 ); + l_scom_buffer.insert<50, 5, 59, uint64_t>(literal_28 ); + + if (l_def_ENABLE_PREFETCH_DROP_PROMOTE_BASIC) + { + l_scom_buffer.insert<0, 3, 61, uint64_t>(literal_0x1 ); + } + + if (l_def_ENABLE_PREFETCH_DROP_PROMOTE_BASIC) + { + l_scom_buffer.insert<3, 3, 61, uint64_t>(literal_0x3 ); + } + + if (l_def_ENABLE_PREFETCH_DROP_PROMOTE_BASIC) + { + l_scom_buffer.insert<6, 3, 61, uint64_t>(literal_0x5 ); + } + + if (l_def_ENABLE_PREFETCH_DROP_PROMOTE_BASIC) + { + l_scom_buffer.insert<9, 3, 61, uint64_t>(literal_0x7 ); + } + + FAPI_TRY(fapi2::putScom(TGT0, 0x5010824ull, l_scom_buffer)); + } + { + FAPI_TRY(fapi2::getScom( TGT0, 0x5010825ull, l_scom_buffer )); + + if ((l_def_ENABLE_AMO_CLEAN_LINES == literal_1)) + { + constexpr auto l_MC01_CHAN0_ATCL_CL_CLSCOM_MCAMOC_ENABLE_CLEAN_ON = 0x1; + l_scom_buffer.insert<0, 1, 63, uint64_t>(l_MC01_CHAN0_ATCL_CL_CLSCOM_MCAMOC_ENABLE_CLEAN_ON ); + } + + if (l_def_ENABLE_AMO_CACHING) + { + l_scom_buffer.insert<4, 25, 39, uint64_t>(literal_0b1100111111111111111111111 ); + } + + if (l_def_ENABLE_AMO_CACHING) + { + constexpr auto l_MC01_CHAN0_ATCL_CL_CLSCOM_MCAMOC_AMO_SIZE_SELECT_128B_RW_64B_DATA = 0x1; + l_scom_buffer.insert<29, 3, 61, uint64_t>(l_MC01_CHAN0_ATCL_CL_CLSCOM_MCAMOC_AMO_SIZE_SELECT_128B_RW_64B_DATA ); + } + + FAPI_TRY(fapi2::putScom(TGT0, 0x5010825ull, l_scom_buffer)); + } + { + FAPI_TRY(fapi2::getScom( TGT0, 0x5010826ull, l_scom_buffer )); + + l_scom_buffer.insert<0, 8, 56, uint64_t>(literal_0x1 ); + l_scom_buffer.insert<8, 8, 56, uint64_t>(l_def_MC_EPSILON_CFG_T0 ); + l_scom_buffer.insert<16, 8, 56, uint64_t>(l_def_MC_EPSILON_CFG_T1 ); + l_scom_buffer.insert<24, 8, 56, uint64_t>(l_def_MC_EPSILON_CFG_T1 ); + l_scom_buffer.insert<32, 8, 56, uint64_t>(l_def_MC_EPSILON_CFG_T2 ); + l_scom_buffer.insert<40, 8, 56, uint64_t>(l_def_MC_EPSILON_CFG_T2 ); + FAPI_TRY(fapi2::putScom(TGT0, 0x5010826ull, l_scom_buffer)); + } + { + FAPI_TRY(fapi2::getScom( TGT0, 0x5010827ull, l_scom_buffer )); + + if (l_def_ENABLE_MCBUSY) + { + constexpr auto l_MC01_CHAN0_ATCL_CL_CLSCOM_MCBUSYQ_ENABLE_BUSY_COUNTERS_ON = 0x1; + l_scom_buffer.insert<0, 1, 63, uint64_t>(l_MC01_CHAN0_ATCL_CL_CLSCOM_MCBUSYQ_ENABLE_BUSY_COUNTERS_ON ); + } + + if (l_def_ENABLE_MCBUSY) + { + constexpr auto l_MC01_CHAN0_ATCL_CL_CLSCOM_MCBUSYQ_BUSY_COUNTER_WINDOW_SELECT_1024_CYCLES = 0x1; + l_scom_buffer.insert<1, 3, 61, uint64_t>(l_MC01_CHAN0_ATCL_CL_CLSCOM_MCBUSYQ_BUSY_COUNTER_WINDOW_SELECT_1024_CYCLES ); + } + + if (l_def_ENABLE_MCBUSY) + { + l_scom_buffer.insert<4, 10, 54, uint64_t>(literal_0x26 ); + } + + if (l_def_ENABLE_MCBUSY) + { + l_scom_buffer.insert<14, 10, 54, uint64_t>(literal_0x33 ); + } + + if (l_def_ENABLE_MCBUSY) + { + l_scom_buffer.insert<24, 10, 54, uint64_t>(literal_0x40 ); + } + + FAPI_TRY(fapi2::putScom(TGT0, 0x5010827ull, l_scom_buffer)); + } + { + FAPI_TRY(fapi2::getScom( TGT0, 0x501082bull, l_scom_buffer )); + + if (l_def_ENABLE_AMO_CACHING) + { + constexpr auto l_MC01_CHAN0_ATCL_CL_CLSCOM_MCPERF3_AMO_LIMIT_SEL_ON = 0x1; + l_scom_buffer.insert<45, 1, 63, uint64_t>(l_MC01_CHAN0_ATCL_CL_CLSCOM_MCPERF3_AMO_LIMIT_SEL_ON ); + } + + if ((l_TGT1_ATTR_ENABLE_MEM_EARLY_DATA_SCOM == fapi2::ENUM_ATTR_ENABLE_MEM_EARLY_DATA_SCOM_OFF)) + { + constexpr auto l_MC01_CHAN0_ATCL_CL_CLSCOM_MCPERF3_ENABLE_CP_M_MDI0_LOCAL_ONLY_ON = 0x1; + l_scom_buffer.insert<43, 1, 63, uint64_t>(l_MC01_CHAN0_ATCL_CL_CLSCOM_MCPERF3_ENABLE_CP_M_MDI0_LOCAL_ONLY_ON ); + } + else if ((l_TGT1_ATTR_ENABLE_MEM_EARLY_DATA_SCOM == fapi2::ENUM_ATTR_ENABLE_MEM_EARLY_DATA_SCOM_ON)) + { + constexpr auto l_MC01_CHAN0_ATCL_CL_CLSCOM_MCPERF3_ENABLE_CP_M_MDI0_LOCAL_ONLY_OFF = 0x0; + l_scom_buffer.insert<43, 1, 63, uint64_t>(l_MC01_CHAN0_ATCL_CL_CLSCOM_MCPERF3_ENABLE_CP_M_MDI0_LOCAL_ONLY_OFF ); + } + + FAPI_TRY(fapi2::putScom(TGT0, 0x501082bull, l_scom_buffer)); + } + { FAPI_TRY(fapi2::getScom( TGT0, 0x701090aull, l_scom_buffer )); l_scom_buffer.insert<2, 6, 58, uint64_t>(literal_0b100000 ); @@ -53,9 +242,82 @@ fapi2::ReturnCode p9a_mcc_omi_scom(const fapi2::Target<fapi2::TARGET_TYPE_MCC>& { FAPI_TRY(fapi2::getScom( TGT0, 0x701090bull, l_scom_buffer )); + if ((l_def_ENABLE_MCU_TIMEOUTS == literal_1)) + { + l_scom_buffer.insert<49, 3, 61, uint64_t>(literal_7 ); + } + l_scom_buffer.insert<0, 1, 63, uint64_t>(literal_0b1 ); FAPI_TRY(fapi2::putScom(TGT0, 0x701090bull, l_scom_buffer)); } + { + FAPI_TRY(fapi2::getScom( TGT0, 0x7010a0bull, l_scom_buffer )); + + if ((l_def_IS_SIM == literal_1)) + { + l_scom_buffer.insert<12, 4, 60, uint64_t>(literal_4 ); + } + else if (((l_def_MN_FREQ_RATIO >= literal_4500) && (l_def_MN_FREQ_RATIO < literal_6363))) + { + l_scom_buffer.insert<12, 4, 60, uint64_t>(literal_4 ); + } + else if (((l_def_MN_FREQ_RATIO >= literal_5800) && (l_def_MN_FREQ_RATIO < literal_7272))) + { + l_scom_buffer.insert<12, 4, 60, uint64_t>(literal_5 ); + } + else if (((l_def_MN_FREQ_RATIO >= literal_7000) && (l_def_MN_FREQ_RATIO < literal_8181))) + { + l_scom_buffer.insert<12, 4, 60, uint64_t>(literal_6 ); + } + else if (((l_def_MN_FREQ_RATIO >= literal_8000) && (l_def_MN_FREQ_RATIO < literal_9090))) + { + l_scom_buffer.insert<12, 4, 60, uint64_t>(literal_7 ); + } + + FAPI_TRY(fapi2::putScom(TGT0, 0x7010a0bull, l_scom_buffer)); + } + { + FAPI_TRY(fapi2::getScom( TGT0, 0x7010a0full, l_scom_buffer )); + + if ((l_def_ENABLE_HWFM == literal_1)) + { + l_scom_buffer.insert<1, 6, 58, uint64_t>(literal_1 ); + } + else if ((l_def_ENABLE_HWFM == literal_0)) + { + l_scom_buffer.insert<1, 6, 58, uint64_t>(literal_0 ); + } + + if ((l_def_ENABLE_HWFM == literal_1)) + { + constexpr auto l_MCP_CHAN0_USTL_USTLMCHWFM_ENABLE_ON = 0x1; + l_scom_buffer.insert<0, 1, 63, uint64_t>(l_MCP_CHAN0_USTL_USTLMCHWFM_ENABLE_ON ); + } + else if ((l_def_ENABLE_HWFM == literal_0)) + { + constexpr auto l_MCP_CHAN0_USTL_USTLMCHWFM_ENABLE_OFF = 0x0; + l_scom_buffer.insert<0, 1, 63, uint64_t>(l_MCP_CHAN0_USTL_USTLMCHWFM_ENABLE_OFF ); + } + + FAPI_TRY(fapi2::putScom(TGT0, 0x7010a0full, l_scom_buffer)); + } + { + FAPI_TRY(fapi2::getScom( TGT0, 0x7010a13ull, l_scom_buffer )); + + l_scom_buffer.insert<48, 8, 56, uint64_t>(literal_0b0000110000 ); + FAPI_TRY(fapi2::putScom(TGT0, 0x7010a13ull, l_scom_buffer)); + } + { + FAPI_TRY(fapi2::getScom( TGT0, 0x7012348ull, l_scom_buffer )); + + if (l_def_ENABLE_AMO_CACHING) + { + constexpr auto l_MCP_CHAN0_WRITE_NEW_WRITE_64B_MODE_ON = 0x1; + l_scom_buffer.insert<9, 1, 63, uint64_t>(l_MCP_CHAN0_WRITE_NEW_WRITE_64B_MODE_ON ); + } + + FAPI_TRY(fapi2::putScom(TGT0, 0x7012348ull, l_scom_buffer)); + } }; fapi_try_exit: diff --git a/src/import/chips/p9/procedures/hwp/initfiles/p9a_mcc_omi_scom.H b/src/import/chips/p9/procedures/hwp/initfiles/p9a_mcc_omi_scom.H index 716aea327..e74656e48 100644 --- a/src/import/chips/p9/procedures/hwp/initfiles/p9a_mcc_omi_scom.H +++ b/src/import/chips/p9/procedures/hwp/initfiles/p9a_mcc_omi_scom.H @@ -32,13 +32,13 @@ typedef fapi2::ReturnCode (*p9a_mcc_omi_scom_FP_t)(const fapi2::Target<fapi2::TARGET_TYPE_MCC>&, - const fapi2::Target<fapi2::TARGET_TYPE_SYSTEM>&); + const fapi2::Target<fapi2::TARGET_TYPE_SYSTEM>&, const fapi2::Target<fapi2::TARGET_TYPE_PROC_CHIP>&); extern "C" { fapi2::ReturnCode p9a_mcc_omi_scom(const fapi2::Target<fapi2::TARGET_TYPE_MCC>& TGT0, - const fapi2::Target<fapi2::TARGET_TYPE_SYSTEM>& TGT1); + const fapi2::Target<fapi2::TARGET_TYPE_SYSTEM>& TGT1, const fapi2::Target<fapi2::TARGET_TYPE_PROC_CHIP>& TGT3); } diff --git a/src/import/chips/p9/procedures/hwp/initfiles/p9a_mi_omi_scom.C b/src/import/chips/p9/procedures/hwp/initfiles/p9a_mi_omi_scom.C new file mode 100644 index 000000000..5323d0c03 --- /dev/null +++ b/src/import/chips/p9/procedures/hwp/initfiles/p9a_mi_omi_scom.C @@ -0,0 +1,77 @@ +/* IBM_PROLOG_BEGIN_TAG */ +/* This is an automatically generated prolog. */ +/* */ +/* $Source: src/import/chips/p9/procedures/hwp/initfiles/p9a_mi_omi_scom.C $ */ +/* */ +/* OpenPOWER HostBoot Project */ +/* */ +/* Contributors Listed Below - COPYRIGHT 2018,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_mi_omi_scom.H" +#include <stdint.h> +#include <stddef.h> +#include <fapi2.H> + +using namespace fapi2; + +constexpr uint64_t literal_0 = 0; +constexpr uint64_t literal_2 = 2; +constexpr uint64_t literal_0b1 = 0b1; +constexpr uint64_t literal_1 = 1; + +fapi2::ReturnCode p9a_mi_omi_scom(const fapi2::Target<fapi2::TARGET_TYPE_MI>& TGT0, + const fapi2::Target<fapi2::TARGET_TYPE_OMI>& TGT1, const fapi2::Target<fapi2::TARGET_TYPE_MCC>& TGT2) +{ + { + fapi2::ATTR_CHIP_UNIT_POS_Type l_TGT1_ATTR_CHIP_UNIT_POS; + FAPI_TRY(FAPI_ATTR_GET(fapi2::ATTR_CHIP_UNIT_POS, TGT1, l_TGT1_ATTR_CHIP_UNIT_POS)); + uint64_t l_def_OMI_POSITION = (l_TGT1_ATTR_CHIP_UNIT_POS % literal_2); + fapi2::ATTR_CHIP_UNIT_POS_Type l_TGT2_ATTR_CHIP_UNIT_POS; + FAPI_TRY(FAPI_ATTR_GET(fapi2::ATTR_CHIP_UNIT_POS, TGT2, l_TGT2_ATTR_CHIP_UNIT_POS)); + uint64_t l_def_MCC_POSITION = (l_TGT2_ATTR_CHIP_UNIT_POS % literal_2); + fapi2::buffer<uint64_t> l_scom_buffer; + { + FAPI_TRY(fapi2::getScom( TGT0, 0x5010813ull, l_scom_buffer )); + + if (((l_def_MCC_POSITION == literal_0) && (l_def_OMI_POSITION == literal_0))) + { + l_scom_buffer.insert<53, 1, 63, uint64_t>(literal_0b1 ); + } + + if (((l_def_MCC_POSITION == literal_0) && (l_def_OMI_POSITION == literal_1))) + { + l_scom_buffer.insert<54, 1, 63, uint64_t>(literal_0b1 ); + } + + if (((l_def_MCC_POSITION == literal_1) && (l_def_OMI_POSITION == literal_0))) + { + l_scom_buffer.insert<55, 1, 63, uint64_t>(literal_0b1 ); + } + + if (((l_def_MCC_POSITION == literal_1) && (l_def_OMI_POSITION == literal_1))) + { + l_scom_buffer.insert<56, 1, 63, uint64_t>(literal_0b1 ); + } + + FAPI_TRY(fapi2::putScom(TGT0, 0x5010813ull, l_scom_buffer)); + } + + }; +fapi_try_exit: + return fapi2::current_err; +} diff --git a/src/import/chips/p9/procedures/hwp/initfiles/p9a_mi_omi_scom.H b/src/import/chips/p9/procedures/hwp/initfiles/p9a_mi_omi_scom.H new file mode 100644 index 000000000..1269a7211 --- /dev/null +++ b/src/import/chips/p9/procedures/hwp/initfiles/p9a_mi_omi_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_mi_omi_scom.H $ */ +/* */ +/* OpenPOWER HostBoot Project */ +/* */ +/* Contributors Listed Below - COPYRIGHT 2018,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_MI_OMI_SCOM_PROCEDURE_H_ +#define _INIT_P9A_MI_OMI_SCOM_PROCEDURE_H_ + + +#include <stddef.h> +#include <stdint.h> +#include <fapi2.H> + + +typedef fapi2::ReturnCode (*p9a_mi_omi_scom_FP_t)(const fapi2::Target<fapi2::TARGET_TYPE_MI>&, + const fapi2::Target<fapi2::TARGET_TYPE_OMI>&, const fapi2::Target<fapi2::TARGET_TYPE_MCC>&); + +extern "C" +{ + + fapi2::ReturnCode p9a_mi_omi_scom(const fapi2::Target<fapi2::TARGET_TYPE_MI>& TGT0, + const fapi2::Target<fapi2::TARGET_TYPE_OMI>& TGT1, const fapi2::Target<fapi2::TARGET_TYPE_MCC>& TGT2); + +} + +#endif diff --git a/src/import/chips/p9/procedures/hwp/initfiles/p9a_mi_omi_scom.mk b/src/import/chips/p9/procedures/hwp/initfiles/p9a_mi_omi_scom.mk new file mode 100644 index 000000000..5deb5b3fe --- /dev/null +++ b/src/import/chips/p9/procedures/hwp/initfiles/p9a_mi_omi_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_mi_omi_scom.mk $ +# +# OpenPOWER HostBoot Project +# +# Contributors Listed Below - COPYRIGHT 2018,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_mi_omi_scom +lib$(PROCEDURE)_COMMONFLAGS+=-fno-var-tracking-assignments +$(call BUILD_PROCEDURE) diff --git a/src/import/chips/p9/procedures/hwp/initfiles/p9a_mi_scom.C b/src/import/chips/p9/procedures/hwp/initfiles/p9a_mi_scom.C new file mode 100644 index 000000000..20b65bd74 --- /dev/null +++ b/src/import/chips/p9/procedures/hwp/initfiles/p9a_mi_scom.C @@ -0,0 +1,167 @@ +/* IBM_PROLOG_BEGIN_TAG */ +/* This is an automatically generated prolog. */ +/* */ +/* $Source: src/import/chips/p9/procedures/hwp/initfiles/p9a_mi_scom.C $ */ +/* */ +/* OpenPOWER HostBoot Project */ +/* */ +/* Contributors Listed Below - COPYRIGHT 2018,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_mi_scom.H" +#include <stdint.h> +#include <stddef.h> +#include <fapi2.H> + +using namespace fapi2; + +constexpr uint64_t literal_7 = 7; +constexpr uint64_t literal_1 = 1; +constexpr uint64_t literal_0x19 = 0x19; +constexpr uint64_t literal_0b0000000000001000 = 0b0000000000001000; +constexpr uint64_t literal_0b011 = 0b011; +constexpr uint64_t literal_0b01 = 0b01; + +fapi2::ReturnCode p9a_mi_scom(const fapi2::Target<fapi2::TARGET_TYPE_MI>& TGT0, + const fapi2::Target<fapi2::TARGET_TYPE_SYSTEM>& TGT1) +{ + { + uint64_t l_def_ENABLE_PREFETCH_DROP_PROMOTE_BASIC = literal_1; + fapi2::ATTR_ENABLE_MEM_EARLY_DATA_SCOM_Type l_TGT1_ATTR_ENABLE_MEM_EARLY_DATA_SCOM; + FAPI_TRY(FAPI_ATTR_GET(fapi2::ATTR_ENABLE_MEM_EARLY_DATA_SCOM, TGT1, l_TGT1_ATTR_ENABLE_MEM_EARLY_DATA_SCOM)); + uint64_t l_def_ENABLE_AMO_CACHING = literal_1; + uint64_t l_def_ENABLE_MCU_TIMEOUTS = literal_1; + fapi2::buffer<uint64_t> l_scom_buffer; + { + FAPI_TRY(fapi2::getScom( TGT0, 0x5010810ull, l_scom_buffer )); + + l_scom_buffer.insert<17, 4, 60, uint64_t>(literal_7 ); + + if ((l_def_ENABLE_PREFETCH_DROP_PROMOTE_BASIC == literal_1)) + { + constexpr auto l_MC01_PBI01_SCOMFIR_MCPERF1_ENABLE_PF_DROP_CMDLIST_ON = 0x1; + l_scom_buffer.insert<21, 1, 63, uint64_t>(l_MC01_PBI01_SCOMFIR_MCPERF1_ENABLE_PF_DROP_CMDLIST_ON ); + } + + if ((l_def_ENABLE_PREFETCH_DROP_PROMOTE_BASIC == literal_1)) + { + l_scom_buffer.insert<10, 7, 57, uint64_t>(literal_0x19 ); + } + + FAPI_TRY(fapi2::putScom(TGT0, 0x5010810ull, l_scom_buffer)); + } + { + FAPI_TRY(fapi2::getScom( TGT0, 0x5010811ull, l_scom_buffer )); + + constexpr auto l_MC01_PBI01_SCOMFIR_MCMODE0_DISABLE_MC_SYNC_ON = 0x1; + l_scom_buffer.insert<12, 1, 63, uint64_t>(l_MC01_PBI01_SCOMFIR_MCMODE0_DISABLE_MC_SYNC_ON ); + constexpr auto l_MC01_PBI01_SCOMFIR_MCMODE0_DISABLE_MC_PAIR_SYNC_ON = 0x1; + l_scom_buffer.insert<13, 1, 63, uint64_t>(l_MC01_PBI01_SCOMFIR_MCMODE0_DISABLE_MC_PAIR_SYNC_ON ); + constexpr auto l_MC01_PBI01_SCOMFIR_MCMODE0_ENABLE_CENTAUR_PERFMON_COMMAND_ON = 0x1; + l_scom_buffer.insert<2, 1, 63, uint64_t>(l_MC01_PBI01_SCOMFIR_MCMODE0_ENABLE_CENTAUR_PERFMON_COMMAND_ON ); + constexpr auto l_MC01_PBI01_SCOMFIR_MCMODE0_ENABLE_EMERGENCY_THROTTLE_ON = 0x1; + l_scom_buffer.insert<8, 1, 63, uint64_t>(l_MC01_PBI01_SCOMFIR_MCMODE0_ENABLE_EMERGENCY_THROTTLE_ON ); + constexpr auto l_MC01_PBI01_SCOMFIR_MCMODE0_ENABLE_CENTAUR_CHECKSTOP_COMMAND_ON = 0x1; + l_scom_buffer.insert<9, 1, 63, uint64_t>(l_MC01_PBI01_SCOMFIR_MCMODE0_ENABLE_CENTAUR_CHECKSTOP_COMMAND_ON ); + constexpr auto l_MC01_PBI01_SCOMFIR_MCMODE0_ENABLE_CENTAUR_TRACESTOP_COMMAND_ON = 0x1; + l_scom_buffer.insert<10, 1, 63, uint64_t>(l_MC01_PBI01_SCOMFIR_MCMODE0_ENABLE_CENTAUR_TRACESTOP_COMMAND_ON ); + + if ((l_TGT1_ATTR_ENABLE_MEM_EARLY_DATA_SCOM == fapi2::ENUM_ATTR_ENABLE_MEM_EARLY_DATA_SCOM_OFF)) + { + constexpr auto l_MC01_PBI01_SCOMFIR_MCMODE0_ENABLE_ECRESP_OFF = 0x0; + l_scom_buffer.insert<4, 1, 63, uint64_t>(l_MC01_PBI01_SCOMFIR_MCMODE0_ENABLE_ECRESP_OFF ); + } + else if ((l_TGT1_ATTR_ENABLE_MEM_EARLY_DATA_SCOM == fapi2::ENUM_ATTR_ENABLE_MEM_EARLY_DATA_SCOM_ON)) + { + constexpr auto l_MC01_PBI01_SCOMFIR_MCMODE0_ENABLE_ECRESP_ON = 0x1; + l_scom_buffer.insert<4, 1, 63, uint64_t>(l_MC01_PBI01_SCOMFIR_MCMODE0_ENABLE_ECRESP_ON ); + } + + FAPI_TRY(fapi2::putScom(TGT0, 0x5010811ull, l_scom_buffer)); + } + { + FAPI_TRY(fapi2::getScom( TGT0, 0x5010813ull, l_scom_buffer )); + + if ((l_def_ENABLE_AMO_CACHING == literal_1)) + { + l_scom_buffer.insert<24, 16, 48, uint64_t>(literal_0b0000000000001000 ); + } + + FAPI_TRY(fapi2::putScom(TGT0, 0x5010813ull, l_scom_buffer)); + } + { + FAPI_TRY(fapi2::getScom( TGT0, 0x501081bull, l_scom_buffer )); + + if ((l_def_ENABLE_MCU_TIMEOUTS == literal_1)) + { + constexpr auto l_MC01_PBI01_SCOMFIR_MCTO_SELECT_PB_HANG_PULSE_ON = 0x1; + l_scom_buffer.insert<0, 1, 63, uint64_t>(l_MC01_PBI01_SCOMFIR_MCTO_SELECT_PB_HANG_PULSE_ON ); + } + + constexpr auto l_MC01_PBI01_SCOMFIR_MCTO_SELECT_LOCAL_HANG_PULSE_OFF = 0x0; + l_scom_buffer.insert<1, 1, 63, uint64_t>(l_MC01_PBI01_SCOMFIR_MCTO_SELECT_LOCAL_HANG_PULSE_OFF ); + + if ((l_def_ENABLE_MCU_TIMEOUTS == literal_1)) + { + constexpr auto l_MC01_PBI01_SCOMFIR_MCTO_DISABLE_HARDWARE_TRACE_MANAGER_HANG_ON = 0x1; + l_scom_buffer.insert<36, 1, 63, uint64_t>(l_MC01_PBI01_SCOMFIR_MCTO_DISABLE_HARDWARE_TRACE_MANAGER_HANG_ON ); + } + + if ((l_def_ENABLE_MCU_TIMEOUTS == literal_1)) + { + constexpr auto l_MC01_PBI01_SCOMFIR_MCTO_ENABLE_NONMIRROR_HANG_ON = 0x1; + l_scom_buffer.insert<32, 1, 63, uint64_t>(l_MC01_PBI01_SCOMFIR_MCTO_ENABLE_NONMIRROR_HANG_ON ); + } + + if ((l_def_ENABLE_MCU_TIMEOUTS == literal_1)) + { + constexpr auto l_MC01_PBI01_SCOMFIR_MCTO_ENABLE_CHANNEL_HANG_ON = 0x1; + l_scom_buffer.insert<33, 1, 63, uint64_t>(l_MC01_PBI01_SCOMFIR_MCTO_ENABLE_CHANNEL_HANG_ON ); + } + + if ((l_def_ENABLE_MCU_TIMEOUTS == literal_1)) + { + constexpr auto l_MC01_PBI01_SCOMFIR_MCTO_ENABLE_APO_HANG_ON = 0x1; + l_scom_buffer.insert<34, 1, 63, uint64_t>(l_MC01_PBI01_SCOMFIR_MCTO_ENABLE_APO_HANG_ON ); + } + + if ((l_def_ENABLE_MCU_TIMEOUTS == literal_1)) + { + constexpr auto l_MC01_PBI01_SCOMFIR_MCTO_ENABLE_CLIB_HANG_ON = 0x1; + l_scom_buffer.insert<35, 1, 63, uint64_t>(l_MC01_PBI01_SCOMFIR_MCTO_ENABLE_CLIB_HANG_ON ); + } + + l_scom_buffer.insert<37, 3, 61, uint64_t>(literal_0b011 ); + l_scom_buffer.insert<2, 2, 62, uint64_t>(literal_0b01 ); + + if ((l_def_ENABLE_MCU_TIMEOUTS == literal_1)) + { + l_scom_buffer.insert<24, 8, 56, uint64_t>(literal_1 ); + } + + if ((l_def_ENABLE_MCU_TIMEOUTS == literal_1)) + { + l_scom_buffer.insert<5, 3, 61, uint64_t>(literal_7 ); + } + + FAPI_TRY(fapi2::putScom(TGT0, 0x501081bull, l_scom_buffer)); + } + + }; +fapi_try_exit: + return fapi2::current_err; +} diff --git a/src/import/chips/p9/procedures/hwp/initfiles/p9a_mi_scom.H b/src/import/chips/p9/procedures/hwp/initfiles/p9a_mi_scom.H new file mode 100644 index 000000000..76d4eb1d8 --- /dev/null +++ b/src/import/chips/p9/procedures/hwp/initfiles/p9a_mi_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_mi_scom.H $ */ +/* */ +/* OpenPOWER HostBoot Project */ +/* */ +/* Contributors Listed Below - COPYRIGHT 2018,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_MI_SCOM_PROCEDURE_H_ +#define _INIT_P9A_MI_SCOM_PROCEDURE_H_ + + +#include <stddef.h> +#include <stdint.h> +#include <fapi2.H> + + +typedef fapi2::ReturnCode (*p9a_mi_scom_FP_t)(const fapi2::Target<fapi2::TARGET_TYPE_MI>&, + const fapi2::Target<fapi2::TARGET_TYPE_SYSTEM>&); + +extern "C" +{ + + fapi2::ReturnCode p9a_mi_scom(const fapi2::Target<fapi2::TARGET_TYPE_MI>& TGT0, + const fapi2::Target<fapi2::TARGET_TYPE_SYSTEM>& TGT1); + +} + +#endif diff --git a/src/import/chips/p9/procedures/hwp/initfiles/p9a_mi_scom.mk b/src/import/chips/p9/procedures/hwp/initfiles/p9a_mi_scom.mk new file mode 100644 index 000000000..ec5f55cf4 --- /dev/null +++ b/src/import/chips/p9/procedures/hwp/initfiles/p9a_mi_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_mi_scom.mk $ +# +# OpenPOWER HostBoot Project +# +# Contributors Listed Below - COPYRIGHT 2018,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_mi_scom +lib$(PROCEDURE)_COMMONFLAGS+=-fno-var-tracking-assignments +$(call BUILD_PROCEDURE) diff --git a/src/import/chips/p9/procedures/hwp/initfiles/p9a_omi_scom.C b/src/import/chips/p9/procedures/hwp/initfiles/p9a_omi_scom.C index afa709e98..04f8363ae 100644 --- a/src/import/chips/p9/procedures/hwp/initfiles/p9a_omi_scom.C +++ b/src/import/chips/p9/procedures/hwp/initfiles/p9a_omi_scom.C @@ -29,26 +29,91 @@ using namespace fapi2; +constexpr uint64_t literal_7 = 7; +constexpr uint64_t literal_1 = 1; +constexpr uint64_t literal_0x19 = 0x19; +constexpr uint64_t literal_0b0000000000001000 = 0b0000000000001000; constexpr uint64_t literal_0 = 0; constexpr uint64_t literal_2 = 2; constexpr uint64_t literal_0b1 = 0b1; -constexpr uint64_t literal_1 = 1; +constexpr uint64_t literal_0b01 = 0b01; -fapi2::ReturnCode p9a_omi_scom(const fapi2::Target<fapi2::TARGET_TYPE_MI>& TGT0, - const fapi2::Target<fapi2::TARGET_TYPE_OMI>& TGT1, const fapi2::Target<fapi2::TARGET_TYPE_MCC>& TGT2, - const fapi2::Target<fapi2::TARGET_TYPE_SYSTEM>& TGT3) +fapi2::ReturnCode p9a_omi_scom(const fapi2::Target<fapi2::TARGET_TYPE_OMI>& TGT0, + const fapi2::Target<fapi2::TARGET_TYPE_SYSTEM>& TGT1, const fapi2::Target<fapi2::TARGET_TYPE_PROC_CHIP>& TGT2, + const fapi2::Target<fapi2::TARGET_TYPE_MCC>& TGT3) { { - fapi2::ATTR_CHIP_UNIT_POS_Type l_TGT1_ATTR_CHIP_UNIT_POS; - FAPI_TRY(FAPI_ATTR_GET(fapi2::ATTR_CHIP_UNIT_POS, TGT1, l_TGT1_ATTR_CHIP_UNIT_POS)); - uint64_t l_def_OMI_POSITION = (l_TGT1_ATTR_CHIP_UNIT_POS % literal_2); - fapi2::ATTR_CHIP_UNIT_POS_Type l_TGT2_ATTR_CHIP_UNIT_POS; - FAPI_TRY(FAPI_ATTR_GET(fapi2::ATTR_CHIP_UNIT_POS, TGT2, l_TGT2_ATTR_CHIP_UNIT_POS)); - uint64_t l_def_MCC_POSITION = (l_TGT2_ATTR_CHIP_UNIT_POS % literal_2); + fapi2::ATTR_EC_Type l_chip_ec; + fapi2::ATTR_NAME_Type l_chip_id; + FAPI_TRY(FAPI_ATTR_GET_PRIVILEGED(fapi2::ATTR_NAME, TGT2, l_chip_id)); + FAPI_TRY(FAPI_ATTR_GET_PRIVILEGED(fapi2::ATTR_EC, TGT2, l_chip_ec)); + uint64_t l_def_ENABLE_PREFETCH_DROP_PROMOTE_BASIC = literal_1; + fapi2::ATTR_ENABLE_MEM_EARLY_DATA_SCOM_Type l_TGT1_ATTR_ENABLE_MEM_EARLY_DATA_SCOM; + FAPI_TRY(FAPI_ATTR_GET(fapi2::ATTR_ENABLE_MEM_EARLY_DATA_SCOM, TGT1, l_TGT1_ATTR_ENABLE_MEM_EARLY_DATA_SCOM)); + uint64_t l_def_ENABLE_AMO_CACHING = literal_1; + fapi2::ATTR_CHIP_UNIT_POS_Type l_TGT0_ATTR_CHIP_UNIT_POS; + FAPI_TRY(FAPI_ATTR_GET(fapi2::ATTR_CHIP_UNIT_POS, TGT0, l_TGT0_ATTR_CHIP_UNIT_POS)); + uint64_t l_def_OMI_POSITION = (l_TGT0_ATTR_CHIP_UNIT_POS % literal_2); + fapi2::ATTR_CHIP_UNIT_POS_Type l_TGT3_ATTR_CHIP_UNIT_POS; + FAPI_TRY(FAPI_ATTR_GET(fapi2::ATTR_CHIP_UNIT_POS, TGT3, l_TGT3_ATTR_CHIP_UNIT_POS)); + uint64_t l_def_MCC_POSITION = (l_TGT3_ATTR_CHIP_UNIT_POS % literal_2); + uint64_t l_def_ENABLE_MCU_TIMEOUTS = literal_1; fapi2::buffer<uint64_t> l_scom_buffer; { + FAPI_TRY(fapi2::getScom( TGT0, 0x5010810ull, l_scom_buffer )); + + l_scom_buffer.insert<17, 4, 60, uint64_t>(literal_7 ); + + if ((l_def_ENABLE_PREFETCH_DROP_PROMOTE_BASIC == literal_1)) + { + constexpr auto l_MC01_PBI01_SCOMFIR_MCPERF1_ENABLE_PF_DROP_CMDLIST_ON = 0x1; + l_scom_buffer.insert<21, 1, 63, uint64_t>(l_MC01_PBI01_SCOMFIR_MCPERF1_ENABLE_PF_DROP_CMDLIST_ON ); + } + + if ((l_def_ENABLE_PREFETCH_DROP_PROMOTE_BASIC == literal_1)) + { + l_scom_buffer.insert<10, 7, 57, uint64_t>(literal_0x19 ); + } + + FAPI_TRY(fapi2::putScom(TGT0, 0x5010810ull, l_scom_buffer)); + } + { + FAPI_TRY(fapi2::getScom( TGT0, 0x5010811ull, l_scom_buffer )); + + constexpr auto l_MC01_PBI01_SCOMFIR_MCMODE0_DISABLE_MC_SYNC_ON = 0x1; + l_scom_buffer.insert<12, 1, 63, uint64_t>(l_MC01_PBI01_SCOMFIR_MCMODE0_DISABLE_MC_SYNC_ON ); + constexpr auto l_MC01_PBI01_SCOMFIR_MCMODE0_DISABLE_MC_PAIR_SYNC_ON = 0x1; + l_scom_buffer.insert<13, 1, 63, uint64_t>(l_MC01_PBI01_SCOMFIR_MCMODE0_DISABLE_MC_PAIR_SYNC_ON ); + constexpr auto l_MC01_PBI01_SCOMFIR_MCMODE0_ENABLE_CENTAUR_PERFMON_COMMAND_ON = 0x1; + l_scom_buffer.insert<2, 1, 63, uint64_t>(l_MC01_PBI01_SCOMFIR_MCMODE0_ENABLE_CENTAUR_PERFMON_COMMAND_ON ); + constexpr auto l_MC01_PBI01_SCOMFIR_MCMODE0_ENABLE_EMERGENCY_THROTTLE_ON = 0x1; + l_scom_buffer.insert<8, 1, 63, uint64_t>(l_MC01_PBI01_SCOMFIR_MCMODE0_ENABLE_EMERGENCY_THROTTLE_ON ); + constexpr auto l_MC01_PBI01_SCOMFIR_MCMODE0_ENABLE_CENTAUR_CHECKSTOP_COMMAND_ON = 0x1; + l_scom_buffer.insert<9, 1, 63, uint64_t>(l_MC01_PBI01_SCOMFIR_MCMODE0_ENABLE_CENTAUR_CHECKSTOP_COMMAND_ON ); + constexpr auto l_MC01_PBI01_SCOMFIR_MCMODE0_ENABLE_CENTAUR_TRACESTOP_COMMAND_ON = 0x1; + l_scom_buffer.insert<10, 1, 63, uint64_t>(l_MC01_PBI01_SCOMFIR_MCMODE0_ENABLE_CENTAUR_TRACESTOP_COMMAND_ON ); + + if ((l_TGT1_ATTR_ENABLE_MEM_EARLY_DATA_SCOM == fapi2::ENUM_ATTR_ENABLE_MEM_EARLY_DATA_SCOM_OFF)) + { + constexpr auto l_MC01_PBI01_SCOMFIR_MCMODE0_ENABLE_ECRESP_OFF = 0x0; + l_scom_buffer.insert<4, 1, 63, uint64_t>(l_MC01_PBI01_SCOMFIR_MCMODE0_ENABLE_ECRESP_OFF ); + } + else if ((l_TGT1_ATTR_ENABLE_MEM_EARLY_DATA_SCOM == fapi2::ENUM_ATTR_ENABLE_MEM_EARLY_DATA_SCOM_ON)) + { + constexpr auto l_MC01_PBI01_SCOMFIR_MCMODE0_ENABLE_ECRESP_ON = 0x1; + l_scom_buffer.insert<4, 1, 63, uint64_t>(l_MC01_PBI01_SCOMFIR_MCMODE0_ENABLE_ECRESP_ON ); + } + + FAPI_TRY(fapi2::putScom(TGT0, 0x5010811ull, l_scom_buffer)); + } + { FAPI_TRY(fapi2::getScom( TGT0, 0x5010813ull, l_scom_buffer )); + if ((l_def_ENABLE_AMO_CACHING == literal_1)) + { + l_scom_buffer.insert<24, 16, 48, uint64_t>(literal_0b0000000000001000 ); + } + if (((l_def_MCC_POSITION == literal_0) && (l_def_OMI_POSITION == literal_0))) { l_scom_buffer.insert<53, 1, 63, uint64_t>(literal_0b1 ); @@ -71,6 +136,62 @@ fapi2::ReturnCode p9a_omi_scom(const fapi2::Target<fapi2::TARGET_TYPE_MI>& TGT0, FAPI_TRY(fapi2::putScom(TGT0, 0x5010813ull, l_scom_buffer)); } + { + FAPI_TRY(fapi2::getScom( TGT0, 0x501081bull, l_scom_buffer )); + + if ((l_def_ENABLE_MCU_TIMEOUTS == literal_1)) + { + constexpr auto l_MC01_PBI01_SCOMFIR_MCTO_SELECT_PB_HANG_PULSE_ON = 0x1; + l_scom_buffer.insert<0, 1, 63, uint64_t>(l_MC01_PBI01_SCOMFIR_MCTO_SELECT_PB_HANG_PULSE_ON ); + } + + constexpr auto l_MC01_PBI01_SCOMFIR_MCTO_SELECT_LOCAL_HANG_PULSE_OFF = 0x0; + l_scom_buffer.insert<1, 1, 63, uint64_t>(l_MC01_PBI01_SCOMFIR_MCTO_SELECT_LOCAL_HANG_PULSE_OFF ); + + if ((l_def_ENABLE_MCU_TIMEOUTS == literal_1)) + { + constexpr auto l_MC01_PBI01_SCOMFIR_MCTO_DISABLE_HARDWARE_TRACE_MANAGER_HANG_ON = 0x1; + l_scom_buffer.insert<36, 1, 63, uint64_t>(l_MC01_PBI01_SCOMFIR_MCTO_DISABLE_HARDWARE_TRACE_MANAGER_HANG_ON ); + } + + if ((l_def_ENABLE_MCU_TIMEOUTS == literal_1)) + { + constexpr auto l_MC01_PBI01_SCOMFIR_MCTO_ENABLE_NONMIRROR_HANG_ON = 0x1; + l_scom_buffer.insert<32, 1, 63, uint64_t>(l_MC01_PBI01_SCOMFIR_MCTO_ENABLE_NONMIRROR_HANG_ON ); + } + + if ((l_def_ENABLE_MCU_TIMEOUTS == literal_1)) + { + constexpr auto l_MC01_PBI01_SCOMFIR_MCTO_ENABLE_CHANNEL_HANG_ON = 0x1; + l_scom_buffer.insert<33, 1, 63, uint64_t>(l_MC01_PBI01_SCOMFIR_MCTO_ENABLE_CHANNEL_HANG_ON ); + } + + if ((l_def_ENABLE_MCU_TIMEOUTS == literal_1)) + { + constexpr auto l_MC01_PBI01_SCOMFIR_MCTO_ENABLE_APO_HANG_ON = 0x1; + l_scom_buffer.insert<34, 1, 63, uint64_t>(l_MC01_PBI01_SCOMFIR_MCTO_ENABLE_APO_HANG_ON ); + } + + if ((l_def_ENABLE_MCU_TIMEOUTS == literal_1)) + { + constexpr auto l_MC01_PBI01_SCOMFIR_MCTO_ENABLE_CLIB_HANG_ON = 0x1; + l_scom_buffer.insert<35, 1, 63, uint64_t>(l_MC01_PBI01_SCOMFIR_MCTO_ENABLE_CLIB_HANG_ON ); + } + + l_scom_buffer.insert<2, 2, 62, uint64_t>(literal_0b01 ); + + if ((l_def_ENABLE_MCU_TIMEOUTS == literal_1)) + { + l_scom_buffer.insert<24, 8, 56, uint64_t>(literal_1 ); + } + + if ((l_def_ENABLE_MCU_TIMEOUTS == literal_1)) + { + l_scom_buffer.insert<5, 3, 61, uint64_t>(literal_7 ); + } + + FAPI_TRY(fapi2::putScom(TGT0, 0x501081bull, l_scom_buffer)); + } }; fapi_try_exit: diff --git a/src/import/chips/p9/procedures/hwp/initfiles/p9a_omi_scom.H b/src/import/chips/p9/procedures/hwp/initfiles/p9a_omi_scom.H index 096f23f81..68f84009a 100644 --- a/src/import/chips/p9/procedures/hwp/initfiles/p9a_omi_scom.H +++ b/src/import/chips/p9/procedures/hwp/initfiles/p9a_omi_scom.H @@ -31,16 +31,16 @@ #include <fapi2.H> -typedef fapi2::ReturnCode (*p9a_omi_scom_FP_t)(const fapi2::Target<fapi2::TARGET_TYPE_MI>&, - const fapi2::Target<fapi2::TARGET_TYPE_OMI>&, const fapi2::Target<fapi2::TARGET_TYPE_MCC>&, - const fapi2::Target<fapi2::TARGET_TYPE_SYSTEM>&); +typedef fapi2::ReturnCode (*p9a_omi_scom_FP_t)(const fapi2::Target<fapi2::TARGET_TYPE_OMI>&, + const fapi2::Target<fapi2::TARGET_TYPE_SYSTEM>&, const fapi2::Target<fapi2::TARGET_TYPE_PROC_CHIP>&, + const fapi2::Target<fapi2::TARGET_TYPE_MCC>&); extern "C" { - fapi2::ReturnCode p9a_omi_scom(const fapi2::Target<fapi2::TARGET_TYPE_MI>& TGT0, - const fapi2::Target<fapi2::TARGET_TYPE_OMI>& TGT1, const fapi2::Target<fapi2::TARGET_TYPE_MCC>& TGT2, - const fapi2::Target<fapi2::TARGET_TYPE_SYSTEM>& TGT3); + fapi2::ReturnCode p9a_omi_scom(const fapi2::Target<fapi2::TARGET_TYPE_OMI>& TGT0, + const fapi2::Target<fapi2::TARGET_TYPE_SYSTEM>& TGT1, const fapi2::Target<fapi2::TARGET_TYPE_PROC_CHIP>& TGT2, + const fapi2::Target<fapi2::TARGET_TYPE_MCC>& TGT3); } diff --git a/src/import/chips/p9/procedures/hwp/nest/p9_chiplet_scominit.C b/src/import/chips/p9/procedures/hwp/nest/p9_chiplet_scominit.C index f32acd37b..94b02b570 100644 --- a/src/import/chips/p9/procedures/hwp/nest/p9_chiplet_scominit.C +++ b/src/import/chips/p9/procedures/hwp/nest/p9_chiplet_scominit.C @@ -5,7 +5,7 @@ /* */ /* OpenPOWER HostBoot Project */ /* */ -/* Contributors Listed Below - COPYRIGHT 2015,2018 */ +/* Contributors Listed Below - COPYRIGHT 2015,2019 */ /* [+] International Business Machines Corp. */ /* */ /* */ @@ -51,8 +51,10 @@ #include <p9_nx_scom.H> #include <p9_int_scom.H> #include <p9_vas_scom.H> -#include <p9a_omi_scom.H> +#include <p9a_mi_omi_scom.H> #include <p9a_mcc_omi_scom.H> +#include <p9a_mc_scom.H> +#include <p9a_mi_scom.H> #include <p9_fbc_smp_utils.H> #include <p9_mc_scom_addresses.H> #include <p9_mc_scom_addresses_fld.H> @@ -215,6 +217,26 @@ fapi2::ReturnCode p9_chiplet_scominit(const fapi2::Target<fapi2::TARGET_TYPE_PRO } } + if (l_is_axone) + { + //-------------------------------------------------- + //-- Axone + //-------------------------------------------------- + for (const auto& l_mc_target : l_mc_targets) + { + fapi2::toString(l_mc_target, l_chipletTargetStr, sizeof(l_chipletTargetStr)); + FAPI_DBG("Invoking p9a.mc.scom.initfile on target %s...", l_chipletTargetStr); + FAPI_EXEC_HWP(l_rc, p9a_mc_scom, l_mc_target, FAPI_SYSTEM, i_target); + + if (l_rc) + { + FAPI_ERR("Error from p9a.mc.scom.initfile"); + fapi2::current_err = l_rc; + goto fapi_try_exit; + } + } + } + for (const auto& l_mi_target : l_mi_targets) { //-------------------------------------------------- @@ -239,11 +261,22 @@ fapi2::ReturnCode p9_chiplet_scominit(const fapi2::Target<fapi2::TARGET_TYPE_PRO //-------------------------------------------------- if (l_is_axone) { + fapi2::toString(l_mi_target, l_chipletTargetStr, sizeof(l_chipletTargetStr)); + FAPI_DBG("Invoking p9a.mi.scom.initfile on target %s...", l_chipletTargetStr); + FAPI_EXEC_HWP(l_rc, p9a_mi_scom, l_mi_target, FAPI_SYSTEM); + + if (l_rc) + { + FAPI_ERR("Error from p9a.mi.scom.initfile"); + fapi2::current_err = l_rc; + goto fapi_try_exit; + } + l_mcc_targets = l_mi_target.getChildren<fapi2::TARGET_TYPE_MCC>(); for (const auto& l_mcc_target : l_mcc_targets) { - FAPI_EXEC_HWP(l_rc, p9a_mcc_omi_scom, l_mcc_target, FAPI_SYSTEM); + FAPI_EXEC_HWP(l_rc, p9a_mcc_omi_scom, l_mcc_target, FAPI_SYSTEM, i_target); if (l_rc) { @@ -256,11 +289,11 @@ fapi2::ReturnCode p9_chiplet_scominit(const fapi2::Target<fapi2::TARGET_TYPE_PRO for (auto l_omi_target : l_omi_targets) { - FAPI_EXEC_HWP(l_rc, p9a_omi_scom, l_mi_target, l_omi_target, l_mcc_target, FAPI_SYSTEM); + FAPI_EXEC_HWP(l_rc, p9a_mi_omi_scom, l_mi_target, l_omi_target, l_mcc_target); if (l_rc) { - FAPI_ERR("Error from p9a.omi.scom.initfile"); + FAPI_ERR("Error from p9a.mi.omi.scom.initfile"); fapi2::current_err = l_rc; goto fapi_try_exit; } diff --git a/src/usr/isteps/nest/makefile b/src/usr/isteps/nest/makefile index 84eda0e43..aa22887c3 100644 --- a/src/usr/isteps/nest/makefile +++ b/src/usr/isteps/nest/makefile @@ -5,7 +5,7 @@ # # OpenPOWER HostBoot Project # -# Contributors Listed Below - COPYRIGHT 2016,2018 +# Contributors Listed Below - COPYRIGHT 2016,2019 # [+] International Business Machines Corp. # # @@ -68,6 +68,9 @@ include ${PROCEDURES_PATH}/hwp/initfiles/p9_int_scom.mk include ${PROCEDURES_PATH}/hwp/initfiles/p9a_mcc_omi_scom.mk include ${PROCEDURES_PATH}/hwp/initfiles/p9a_omi_init_scom.mk include ${PROCEDURES_PATH}/hwp/initfiles/p9a_omi_scom.mk +include ${PROCEDURES_PATH}/hwp/initfiles/p9a_mc_scom.mk +include ${PROCEDURES_PATH}/hwp/initfiles/p9a_mi_omi_scom.mk +include ${PROCEDURES_PATH}/hwp/initfiles/p9a_mi_scom.mk # call_host_p9_fbc_eff_config_links: Determine powerbus config include ${PROCEDURES_PATH}/hwp/nest/p9_fbc_eff_config_links.mk |