summaryrefslogtreecommitdiffstats
path: root/src/import/chips/p9
diff options
context:
space:
mode:
authorChris Steffen <cwsteffen@us.ibm.com>2017-05-17 09:41:54 -0500
committerDaniel M. Crowell <dcrowell@us.ibm.com>2018-06-07 14:40:41 -0400
commit94bdad69c456d4eae0b68acf5b327b5774713786 (patch)
treefb521103768cae0d3e793ffe9e5877b8e67408b5 /src/import/chips/p9
parente364f91be1727019dd594c57d496e5ce43e8f5f0 (diff)
downloadtalos-hostboot-94bdad69c456d4eae0b68acf5b327b5774713786.tar.gz
talos-hostboot-94bdad69c456d4eae0b68acf5b327b5774713786.zip
DMI I/O Checkin
Change-Id: Ib73ba11ecf5811a313ecfe7d6e0e385b12cc2bee Original-Change-Id: I9b9326ea8bc9d9734e74c170dfebbd9aaf73fb6f Reviewed-on: http://ralgit01.raleigh.ibm.com/gerrit1/40666 Tested-by: Jenkins Server <pfd-jenkins+hostboot@us.ibm.com> Tested-by: Hostboot CI <hostboot-ci+hostboot@us.ibm.com> Reviewed-by: Gary A. Peterson <garyp@us.ibm.com> Reviewed-by: Richard J. Knight <rjknight@us.ibm.com> Reviewed-by: Matt K. Light <mklight@us.ibm.com> Reviewed-by: Jennifer A. Stofer <stofer@us.ibm.com> Reviewed-on: http://ralgit01.raleigh.ibm.com/gerrit1/59947 Tested-by: Jenkins OP Build CI <op-jenkins+hostboot@us.ibm.com> Reviewed-by: Daniel M. Crowell <dcrowell@us.ibm.com>
Diffstat (limited to 'src/import/chips/p9')
-rw-r--r--src/import/chips/p9/procedures/hwp/io/p9_io_dmi_read_erepair.C117
-rw-r--r--src/import/chips/p9/procedures/hwp/io/p9_io_dmi_read_erepair.H65
-rw-r--r--src/import/chips/p9/procedures/hwp/io/p9_io_dmi_read_erepair.mk26
3 files changed, 208 insertions, 0 deletions
diff --git a/src/import/chips/p9/procedures/hwp/io/p9_io_dmi_read_erepair.C b/src/import/chips/p9/procedures/hwp/io/p9_io_dmi_read_erepair.C
new file mode 100644
index 000000000..9dced0f35
--- /dev/null
+++ b/src/import/chips/p9/procedures/hwp/io/p9_io_dmi_read_erepair.C
@@ -0,0 +1,117 @@
+/* IBM_PROLOG_BEGIN_TAG */
+/* This is an automatically generated prolog. */
+/* */
+/* $Source: src/import/chips/p9/procedures/hwp/io/p9_io_dmi_read_erepair.C $ */
+/* */
+/* OpenPOWER HostBoot Project */
+/* */
+/* Contributors Listed Below - COPYRIGHT 2015,2018 */
+/* [+] International Business Machines Corp. */
+/* */
+/* */
+/* Licensed under the Apache License, Version 2.0 (the "License"); */
+/* you may not use this file except in compliance with the License. */
+/* You may obtain a copy of the License at */
+/* */
+/* http://www.apache.org/licenses/LICENSE-2.0 */
+/* */
+/* Unless required by applicable law or agreed to in writing, software */
+/* distributed under the License is distributed on an "AS IS" BASIS, */
+/* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or */
+/* implied. See the License for the specific language governing */
+/* permissions and limitations under the License. */
+/* */
+/* IBM_PROLOG_END_TAG */
+///
+/// @file p9_io_dmi_read_erepair.C
+/// @brief Read eRepair.
+///----------------------------------------------------------------------------
+/// *HWP HWP Owner : Chris Steffen <cwsteffen@us.ibm.com>
+/// *HWP HWP Backup Owner : Gary Peterson <garyp@us.ibm.com>
+/// *HWP FW Owner : Jamie Knight <rjknight@us.ibm.com>
+/// *HWP Team : IO
+/// *HWP Level : 2
+/// *HWP Consumed by : FSP:HB
+///----------------------------------------------------------------------------
+///
+/// @verbatim
+/// High-level procedure flow:
+///
+/// A HWP that runs Read eRepair. This procedure reads the current bad
+/// lanes and passes by reference the lane numbers in a vector.
+///
+/// Procedure Prereq:
+/// - System clocks are running.
+///
+/// @endverbatim
+///----------------------------------------------------------------------------
+
+// ----------------------------------------------------------------------------
+// Includes
+// ----------------------------------------------------------------------------
+#include "p9_io_dmi_read_erepair.H"
+#include "p9_io_scom.H"
+#include "p9_io_regs.H"
+
+// ----------------------------------------------------------------------------
+// Procedure Function
+// ----------------------------------------------------------------------------
+
+
+/**
+ * @brief A HWP that runs Read eRepair. This procedure reads the current bad
+ * lanes and passes by reference the lane numbers in a vector. The rx vectors
+ * will return to the caller (PRD or e-repair) the bad lane numbers on this
+ * endpoint. The caller will duplicate the found rx bad lanes to the
+ * corresponding tx bad lanes on the connected target.
+ * @param[in] i_target Reference to Target
+ * @param[out] o_bad_lanes Vector of bad lanes
+ * @retval ReturnCode
+ */
+fapi2::ReturnCode p9_io_dmi_read_erepair(
+ const fapi2::Target < fapi2::TARGET_TYPE_DMI >& i_target,
+ std::vector< uint8_t >& o_bad_lanes)
+{
+ FAPI_IMP("p9_io_dmi_read_erepair: Entering.");
+ const uint8_t GRP3 = 3;
+ const uint8_t LN0 = 0;
+ const uint16_t BAD_LANES_3PLUS = 3;
+ const uint16_t BAD_LANES_2 = 2;
+ const uint16_t BAD_LANES_1 = 1;
+ const uint16_t BAD_LANES_0 = 0;
+ uint64_t l_data = 0;
+
+ o_bad_lanes.clear();
+
+ FAPI_TRY(io::read(EDIP_RX_GLBSM_STAT9_E_PG, i_target, GRP3, LN0, l_data),
+ "Reading Bad Lane Code Failed.");
+
+ FAPI_DBG("Bad Lane Code: %d", io::get(EDIP_RX_BAD_LANE_CODE, l_data));
+
+ switch(io::get(EDIP_RX_BAD_LANE_CODE, l_data))
+ {
+ case BAD_LANES_3PLUS:
+ FAPI_DBG("Bad Lane: Three or more bad lanes found.");
+
+ // We will intentionally fall through to collect bad lane 1 & 2.
+ case BAD_LANES_2:
+ FAPI_DBG("Bad Lane 2: %d", io::get(EDIP_RX_BAD_LANE2, l_data));
+ o_bad_lanes.push_back((uint8_t)io::get(EDIP_RX_BAD_LANE2, l_data));
+
+ // We will intentionally fall through to collect bad lane 1.
+ case BAD_LANES_1:
+ FAPI_DBG("Bad Lane 1: %d", io::get(EDIP_RX_BAD_LANE1, l_data));
+ o_bad_lanes.push_back((uint8_t)io::get(EDIP_RX_BAD_LANE1, l_data));
+ break;
+
+ case BAD_LANES_0:
+ FAPI_DBG("No Bad Lanes");
+
+ default:
+ break;
+ }
+
+fapi_try_exit:
+ FAPI_IMP("p9_io_dmi_read_erepair: Exiting.");
+ return fapi2::current_err;
+}
diff --git a/src/import/chips/p9/procedures/hwp/io/p9_io_dmi_read_erepair.H b/src/import/chips/p9/procedures/hwp/io/p9_io_dmi_read_erepair.H
new file mode 100644
index 000000000..bcdfb0b8a
--- /dev/null
+++ b/src/import/chips/p9/procedures/hwp/io/p9_io_dmi_read_erepair.H
@@ -0,0 +1,65 @@
+/* IBM_PROLOG_BEGIN_TAG */
+/* This is an automatically generated prolog. */
+/* */
+/* $Source: src/import/chips/p9/procedures/hwp/io/p9_io_dmi_read_erepair.H $ */
+/* */
+/* OpenPOWER HostBoot Project */
+/* */
+/* Contributors Listed Below - COPYRIGHT 2015,2018 */
+/* [+] 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 */
+///----------------------------------------------------------------------------
+/// *HWP HWP Owner : Chris Steffen <cwsteffen@us.ibm.com>
+/// *HWP HWP Backup Owner : Gary Peterson <garyp@us.ibm.com>
+/// *HWP FW Owner : Jamie Knight <rjknight@us.ibm.com>
+/// *HWP Team : IO
+/// *HWP Level : 2
+/// *HWP Consumed by : FSP:HB
+///----------------------------------------------------------------------------
+
+#ifndef _P9_IO_DMI_READ_EREPAIR_H_
+#define _P9_IO_DMI_READ_EREPAIR_H_
+
+// ----------------------------------------------------------------------------
+// Includes
+// ----------------------------------------------------------------------------
+#include <fapi2.H>
+
+// function pointer typedef definition for HWP call support
+typedef fapi2::ReturnCode (*p9_io_dmi_read_erepair_FP_t)
+(const fapi2::Target < fapi2::TARGET_TYPE_DMI >&, std::vector< uint8_t >&);
+
+
+extern "C"
+{
+ /**
+ * @brief A HWP that runs Read eRepair. This procedure reads the current bad
+ * lanes and passes by reference the lane numbers in a vector. The rx vectors
+ * will return to the caller ( PRD or e-repair ) the bad lane numbers on this
+ * endpoint. The caller will duplicate the found rx bad lanes to the
+ * corresponding tx bad lanes on the connected target.
+ * @param[in] i_target Reference to Target
+ * @param[out] o_bad_lanes Vector of bad lanes
+ * @retval ReturnCode
+ */
+ fapi2::ReturnCode
+ p9_io_dmi_read_erepair(const fapi2::Target< fapi2::TARGET_TYPE_XBUS >& i_target,
+ std::vector< uint8_t >& o_bad_lanes);
+
+} // extern "C"
+
+#endif // _P9_IO_DMI_READ_EREPAIR_H_
diff --git a/src/import/chips/p9/procedures/hwp/io/p9_io_dmi_read_erepair.mk b/src/import/chips/p9/procedures/hwp/io/p9_io_dmi_read_erepair.mk
new file mode 100644
index 000000000..cca19c233
--- /dev/null
+++ b/src/import/chips/p9/procedures/hwp/io/p9_io_dmi_read_erepair.mk
@@ -0,0 +1,26 @@
+# IBM_PROLOG_BEGIN_TAG
+# This is an automatically generated prolog.
+#
+# $Source: src/import/chips/p9/procedures/hwp/io/p9_io_dmi_read_erepair.mk $
+#
+# OpenPOWER HostBoot Project
+#
+# Contributors Listed Below - COPYRIGHT 2015,2018
+# [+] 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=p9_io_dmi_read_erepair
+$(call BUILD_PROCEDURE)
OpenPOWER on IntegriCloud