summaryrefslogtreecommitdiffstats
path: root/src/import/chips
diff options
context:
space:
mode:
authorAdam Hale <adam.samuel.hale@ibm.com>2018-11-28 14:44:11 -0500
committerChristian R. Geddes <crgeddes@us.ibm.com>2019-02-13 19:58:02 -0600
commite787bf7818863c17a9a9944dba23a3d2371e0c3f (patch)
tree683d59a19813d851f8738db3666fadbaa2cc747d /src/import/chips
parentb8427c4aa0721c64137494aad82b5cb7ca012bd4 (diff)
downloadtalos-hostboot-e787bf7818863c17a9a9944dba23a3d2371e0c3f.tar.gz
talos-hostboot-e787bf7818863c17a9a9944dba23a3d2371e0c3f.zip
Memory Controller Axone initfiles - initial
Change-Id: I6255f1e3aac26bc20b9331e58c445939b19cc17c Reviewed-on: http://rchgit01.rchland.ibm.com/gerrit1/69199 Tested-by: FSP CI Jenkins <fsp-CI-jenkins+hostboot@us.ibm.com> Tested-by: Jenkins Server <pfd-jenkins+hostboot@us.ibm.com> Tested-by: Hostboot CI <hostboot-ci+hostboot@us.ibm.com> Reviewed-by: Christian R. Geddes <crgeddes@us.ibm.com> Reviewed-by: SHELTON LEUNG <sleung@us.ibm.com> Reviewed-by: Jennifer A. Stofer <stofer@us.ibm.com> Reviewed-on: http://rchgit01.rchland.ibm.com/gerrit1/69202 Tested-by: Jenkins OP Build CI <op-jenkins+hostboot@us.ibm.com>
Diffstat (limited to 'src/import/chips')
-rw-r--r--src/import/chips/p9/procedures/hwp/initfiles/p9a_mc_scom.C109
-rw-r--r--src/import/chips/p9/procedures/hwp/initfiles/p9a_mc_scom.H45
-rw-r--r--src/import/chips/p9/procedures/hwp/initfiles/p9a_mc_scom.mk27
-rw-r--r--src/import/chips/p9/procedures/hwp/initfiles/p9a_mcc_omi_scan.C77
-rw-r--r--src/import/chips/p9/procedures/hwp/initfiles/p9a_mcc_omi_scan.H47
-rw-r--r--src/import/chips/p9/procedures/hwp/initfiles/p9a_mcc_omi_scan.mk36
-rw-r--r--src/import/chips/p9/procedures/hwp/initfiles/p9a_mcc_omi_scom.C264
-rw-r--r--src/import/chips/p9/procedures/hwp/initfiles/p9a_mcc_omi_scom.H4
-rw-r--r--src/import/chips/p9/procedures/hwp/initfiles/p9a_mi_omi_scom.C77
-rw-r--r--src/import/chips/p9/procedures/hwp/initfiles/p9a_mi_omi_scom.H45
-rw-r--r--src/import/chips/p9/procedures/hwp/initfiles/p9a_mi_omi_scom.mk27
-rw-r--r--src/import/chips/p9/procedures/hwp/initfiles/p9a_mi_scom.C167
-rw-r--r--src/import/chips/p9/procedures/hwp/initfiles/p9a_mi_scom.H45
-rw-r--r--src/import/chips/p9/procedures/hwp/initfiles/p9a_mi_scom.mk27
-rw-r--r--src/import/chips/p9/procedures/hwp/initfiles/p9a_omi_scom.C141
-rw-r--r--src/import/chips/p9/procedures/hwp/initfiles/p9a_omi_scom.H12
-rw-r--r--src/import/chips/p9/procedures/hwp/nest/p9_chiplet_scominit.C43
17 files changed, 1169 insertions, 24 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;
}
OpenPOWER on IntegriCloud