summaryrefslogtreecommitdiffstats
path: root/src/import/chips/p9/procedures/hwp/memory/lib/ecc/ecc_traits.H
diff options
context:
space:
mode:
Diffstat (limited to 'src/import/chips/p9/procedures/hwp/memory/lib/ecc/ecc_traits.H')
-rw-r--r--src/import/chips/p9/procedures/hwp/memory/lib/ecc/ecc_traits.H354
1 files changed, 0 insertions, 354 deletions
diff --git a/src/import/chips/p9/procedures/hwp/memory/lib/ecc/ecc_traits.H b/src/import/chips/p9/procedures/hwp/memory/lib/ecc/ecc_traits.H
deleted file mode 100644
index 206132659..000000000
--- a/src/import/chips/p9/procedures/hwp/memory/lib/ecc/ecc_traits.H
+++ /dev/null
@@ -1,354 +0,0 @@
-/* IBM_PROLOG_BEGIN_TAG */
-/* This is an automatically generated prolog. */
-/* */
-/* $Source: src/import/chips/p9/procedures/hwp/memory/lib/ecc/ecc_traits.H $ */
-/* */
-/* OpenPOWER HostBoot Project */
-/* */
-/* Contributors Listed Below - COPYRIGHT 2016,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 */
-
-///
-/// @file ecc_traits.H
-/// @brief Traits class for the MC ECC syndrome registers
-///
-// *HWP HWP Owner: Louis Stermole <stermole@us.ibm.com>
-// *HWP HWP Backup: Stephen Glancy <sglancy@us.ibm.com>
-// *HWP Team: Memory
-// *HWP Level: 3
-// *HWP Consumed by: FSP:HB
-
-#ifndef _MSS_ECC_TRAITS_H_
-#define _MSS_ECC_TRAITS_H_
-
-#include <p9_mc_scom_addresses.H>
-#include <p9_mc_scom_addresses_fld.H>
-#include <lib/shared/mss_const.H>
-
-namespace mss
-{
-
-///
-/// @class eccTraits
-/// @brief a collection of traits associated with the MC ECC interface
-/// @tparam T fapi2::TargetType representing the memory controller
-///
-template< fapi2::TargetType T >
-class eccTraits;
-
-///
-/// @class eccTraits
-/// @brief a collection of traits associated with the Centaur MC ECC interface
-///
-template<>
-class eccTraits<fapi2::TARGET_TYPE_MBA>
-{
-};
-
-///
-/// @class eccTraits
-/// @brief a collection of traits associated with the Nimbus MC ECC interface
-///
-template<>
-class eccTraits<fapi2::TARGET_TYPE_MCA>
-{
- public:
- // MCA ECC registers - must be 64 bits.
- static constexpr uint64_t HARDWARE_MS0_REG = MCA_HWMS0;
- static constexpr uint64_t HARDWARE_MS1_REG = MCA_WDF_HWMS1;
- static constexpr uint64_t HARDWARE_MS2_REG = MCA_HWMS2;
- static constexpr uint64_t HARDWARE_MS3_REG = MCA_HWMS3;
- static constexpr uint64_t HARDWARE_MS4_REG = MCA_HWMS4;
- static constexpr uint64_t HARDWARE_MS5_REG = MCA_HWMS5;
- static constexpr uint64_t HARDWARE_MS6_REG = MCA_HWMS6;
- static constexpr uint64_t HARDWARE_MS7_REG = MCA_HWMS7;
- static constexpr uint64_t FIRMWARE_MS0_REG = MCA_FWMS0;
- static constexpr uint64_t FIRMWARE_MS1_REG = MCA_WREITE_FWMS1;
- static constexpr uint64_t FIRMWARE_MS2_REG = MCA_FWMS2;
- static constexpr uint64_t FIRMWARE_MS3_REG = MCA_FWMS3;
- static constexpr uint64_t FIRMWARE_MS4_REG = MCA_FWMS4;
- static constexpr uint64_t FIRMWARE_MS5_REG = MCA_FWMS5;
- static constexpr uint64_t FIRMWARE_MS6_REG = MCA_FWMS6;
- static constexpr uint64_t FIRMWARE_MS7_REG = MCA_FWMS7;
- static constexpr uint64_t MARK_SHADOW_REG = MCA_MSR;
-
- // MCBIST ECC registers - Register API uses an MCA target instead
- // of MCBIST since MCA's relative position is needed to find
- // correct reg+field
- constexpr static const uint64_t MAINLINE_NCE_REGS[] =
- {
- MCBIST_MBNCER0Q,
- MCBIST_MBNCER1Q,
- MCBIST_MBNCER2Q,
- MCBIST_MBNCER3Q,
- };
-
- constexpr static const uint64_t MAINLINE_RCE_REGS[] =
- {
- MCBIST_MBRCER0Q,
- MCBIST_MBRCER1Q,
- MCBIST_MBRCER2Q,
- MCBIST_MBRCER3Q
- };
-
- constexpr static const uint64_t MAINLINE_MPE_REGS[] =
- {
- MCBIST_MBMPER0Q,
- MCBIST_MBMPER1Q,
- MCBIST_MBMPER2Q,
- MCBIST_MBMPER3Q
- };
-
- constexpr static const uint64_t MAINLINE_UE_REGS[] =
- {
- MCBIST_MBUER0Q,
- MCBIST_MBUER1Q,
- MCBIST_MBUER2Q,
- MCBIST_MBUER3Q
- };
-
- constexpr static const uint64_t MAINLINE_AUE_REGS[] =
- {
- MCBIST_MBAUER0Q,
- MCBIST_MBAUER1Q,
- MCBIST_MBAUER2Q,
- MCBIST_MBAUER3Q
- };
-
- // Note that these registers store info for a pair of ports
- // (thus the duplication)
- constexpr static const uint64_t ERROR_VECTOR_REGS[] =
- {
- MCBIST_MBSEVR0Q,
- MCBIST_MBSEVR0Q,
- MCBIST_MBSEVR1Q,
- MCBIST_MBSEVR1Q
- };
-
- // Fields, can be any size.
- enum
- {
- HARDWARE_MS_CHIPMARK = MCA_HWMS0_CHIPMARK,
- HARDWARE_MS_CHIPMARK_LEN = MCA_HWMS0_CHIPMARK_LEN,
- HARDWARE_MS_CONFIRMED = MCA_HWMS0_CONFIRMED,
- HARDWARE_MS_EXIT1 = MCA_HWMS0_EXIT_1,
- FIRMWARE_MS_MARK = MCA_FWMS0_MARK,
- FIRMWARE_MS_MARK_LEN = MCA_FWMS0_MARK_LEN,
- FIRMWARE_MS_TYPE = MCA_FWMS0_TYPE,
- FIRMWARE_MS_REGION = MCA_FWMS0_REGION,
- FIRMWARE_MS_REGION_LEN = MCA_FWMS0_REGION_LEN,
- FIRMWARE_MS_ADDRESS = MCA_FWMS0_ADDRESS,
- FIRMWARE_MS_ADDRESS_LEN = MCA_FWMS0_ADDRESS_LEN,
- FIRMWARE_MS_EXIT1 = MCA_FWMS0_EXIT_1,
- NCE_ADDR_TRAP = MCBIST_MBNCER0Q_PORT_0_MAINLINE_NCE_ADDR_TRAP,
- NCE_ADDR_TRAP_LEN = MCBIST_MBNCER0Q_PORT_0_MAINLINE_NCE_ADDR_TRAP_LEN,
- NCE_ON_RCE = MCBIST_MBNCER0Q_PORT_0_MAINLINE_NCE_ON_RCE,
- NCE_IS_TCE = MCBIST_MBNCER0Q_PORT_0_MAINLINE_NCE_IS_TCE,
- RCE_ADDR_TRAP = MCBIST_MBRCER0Q_PORT_0_MAINLINE_RCE_ADDR_TRAP,
- RCE_ADDR_TRAP_LEN = MCBIST_MBRCER0Q_PORT_0_MAINLINE_RCE_ADDR_TRAP_LEN,
- MPE_ADDR_TRAP = MCBIST_MBMPER0Q_PORT_0_MAINLINE_MPE_ADDR_TRAP,
- MPE_ADDR_TRAP_LEN = MCBIST_MBMPER0Q_PORT_0_MAINLINE_MPE_ADDR_TRAP_LEN,
- MPE_ON_RCE = MCBIST_MBMPER0Q_PORT_0_MAINLINE_MPE_ON_RCE,
- UE_ADDR_TRAP = MCBIST_MBUER0Q_PORT_0_MAINLINE_UE_ADDR_TRAP,
- UE_ADDR_TRAP_LEN = MCBIST_MBUER0Q_PORT_0_MAINLINE_UE_ADDR_TRAP_LEN,
- AUE_ADDR_TRAP = MCBIST_MBAUER0Q_PORT_0_MAINLINE_AUE_ADDR_TRAP,
- AUE_ADDR_TRAP_LEN = MCBIST_MBAUER0Q_PORT_0_MAINLINE_AUE_ADDR_TRAP_LEN,
- P0_NCE_GALOIS = MCBIST_MBSEVR0Q_PORT_0_MAINLINE_NCE_GALOIS_FIELD,
- P0_NCE_GALOIS_LEN = MCBIST_MBSEVR0Q_PORT_0_MAINLINE_NCE_GALOIS_FIELD_LEN,
- P0_NCE_MAGNITUDE = MCBIST_MBSEVR0Q_PORT_0_MAINLINE_NCE_MAGNITUDE_FIELD,
- P0_NCE_MAGNITUDE_LEN = MCBIST_MBSEVR0Q_PORT_0_MAINLINE_NCE_MAGNITUDE_FIELD_LEN,
- P0_TCE_GALOIS = MCBIST_MBSEVR0Q_PORT_0_MAINLINE_TCE_GALOIS_FIELD,
- P0_TCE_GALOIS_LEN = MCBIST_MBSEVR0Q_PORT_0_MAINLINE_TCE_GALOIS_FIELD_LEN,
- P0_TCE_MAGNITUDE = MCBIST_MBSEVR0Q_PORT_0_MAINLINE_TCE_MAGNITUDE_FIELD,
- P0_TCE_MAGNITUDE_LEN = MCBIST_MBSEVR0Q_PORT_0_MAINLINE_TCE_MAGNITUDE_FIELD_LEN,
- P1_NCE_GALOIS = MCBIST_MBSEVR0Q_PORT_1_MAINLINE_NCE_GALOIS_FIELD,
- P1_NCE_GALOIS_LEN = MCBIST_MBSEVR0Q_PORT_1_MAINLINE_NCE_GALOIS_FIELD_LEN,
- P1_NCE_MAGNITUDE = MCBIST_MBSEVR0Q_PORT_1_MAINLINE_NCE_MAGNITUDE_FIELD,
- P1_NCE_MAGNITUDE_LEN = MCBIST_MBSEVR0Q_PORT_1_MAINLINE_NCE_MAGNITUDE_FIELD_LEN,
- P1_TCE_GALOIS = MCBIST_MBSEVR0Q_PORT_1_MAINLINE_TCE_GALOIS_FIELD,
- P1_TCE_GALOIS_LEN = MCBIST_MBSEVR0Q_PORT_1_MAINLINE_TCE_GALOIS_FIELD_LEN,
- P1_TCE_MAGNITUDE = MCBIST_MBSEVR0Q_PORT_1_MAINLINE_TCE_MAGNITUDE_FIELD,
- P1_TCE_MAGNITUDE_LEN = MCBIST_MBSEVR0Q_PORT_1_MAINLINE_TCE_MAGNITUDE_FIELD_LEN,
- CURRENT_ADDR_TRAP = MCBIST_MCBMCATQ_CFG_CURRENT_ADDR_TRAP,
- CURRENT_ADDR_TRAP_LEN = MCBIST_MCBMCATQ_CFG_CURRENT_ADDR_TRAP_LEN,
- CURRENT_PORT = MCBIST_MCBMCATQ_CFG_CURRENT_PORT_TRAP,
- CURRENT_PORT_LEN = MCBIST_MCBMCATQ_CFG_CURRENT_PORT_TRAP_LEN,
- CURRENT_DIMM = MCBIST_MCBMCATQ_CFG_CURRENT_DIMM_TRAP,
- SHADOW_CHIPMARK = MCA_MSR_CHIPMARK,
- SHADOW_CHIPMARK_LEN = MCA_MSR_CHIPMARK_LEN,
- SHADOW_RANK = MCA_MSR_RANK,
- SHADOW_RANK_LEN = MCA_MSR_RANK_LEN,
-
- // Address trap format
- TRAP_ADDRESS_PORT = 0,
- TRAP_ADDRESS_PORT_LEN = 2,
- TRAP_ADDRESS_DIMM = 2,
- TRAP_ADDRESS_DIMM_LEN = 1,
- TRAP_ADDRESS_MRANK = 3,
- TRAP_ADDRESS_MRANK_LEN = 2,
- TRAP_ADDRESS_SRANK = 5,
- TRAP_ADDRESS_SRANK_LEN = 3,
- TRAP_ADDRESS_ROW = 8,
- TRAP_ADDRESS_ROW_LEN = 18,
- TRAP_ADDRESS_COL = 26,
- TRAP_ADDRESS_COL_LEN = 7,
- TRAP_ADDRESS_BANK = 33,
- TRAP_ADDRESS_BANK_LEN = 3,
- TRAP_ADDRESS_BANK_GROUP = 36,
- TRAP_ADDRESS_BANK_GROUP_LEN = 2,
-
- TRAP_ADDRESS = 0,
- TRAP_ADDRESS_LEN = 38
- };
-
- // Symbol to Galois code mapping table
- // Reference: Nimbus workbook, Section 13.1.6.2: Firmware Mark Store
- constexpr static const uint8_t symbol2galois[] =
- {
- 0x80, 0xa0, 0x90, 0xf0,
- 0x08, 0x0a, 0x09, 0x0f,
- 0x98, 0xda, 0xb9, 0x7f,
- 0x91, 0xd7, 0xb2, 0x78,
- 0x28, 0xea, 0x49, 0x9f,
- 0x9a, 0xd4, 0xbd, 0x76,
- 0x60, 0xb0, 0xc0, 0x20,
- 0x06, 0x0b, 0x0c, 0x02,
- 0xc6, 0xfb, 0x1c, 0x42,
- 0xca, 0xf4, 0x1d, 0x46,
- 0xd6, 0x8b, 0x3c, 0xc2,
- 0xcb, 0xf3, 0x1f, 0x4e,
- 0xe0, 0x10, 0x50, 0xd0,
- 0x0e, 0x01, 0x05, 0x0d,
- 0x5e, 0x21, 0xa5, 0x3d,
- 0x5b, 0x23, 0xaf, 0x3e,
- 0xfe, 0x61, 0x75, 0x5d,
- 0x51, 0x27, 0xa2, 0x38
- };
-
- // Symbol to DQ index mapping table
- // Reference: Nimbus workbook, Section 13.1.6.2: Firmware Mark Store
- constexpr static const uint8_t symbol2dq[] =
- {
- 71, 70, 69, 68,
- 67, 66, 65, 64,
- 63, 62, 61, 60,
- 55, 54, 53, 52,
- 47, 46, 45, 44,
- 39, 38, 37, 36,
- 31, 30, 29, 28,
- 23, 22, 21, 20,
- 15, 14, 13, 12,
- 7, 6, 5, 4,
- 59, 58, 57, 56,
- 51, 50, 49, 48,
- 43, 42, 41, 40,
- 35, 34, 33, 32,
- 27, 26, 25, 24,
- 19, 18, 17, 16,
- 11, 10, 9, 8,
- 3, 2, 1, 0
- };
-
-
-
-};
-
-///
-/// @class eccTraits
-/// @brief a collection of traits associated with the Nimbus MC ECC interface
-///
-template<>
-class eccTraits<fapi2::TARGET_TYPE_MCBIST>
-{
- public:
- // MCBIST ECC registers - must be 64 bits.
- static constexpr uint64_t READ_ERROR_COUNT_REG0 = MCBIST_MBSEC0Q;
- static constexpr uint64_t READ_ERROR_COUNT_REG1 = MCBIST_MBSEC1Q;
- static constexpr uint64_t MARK_SYMBOL_COUNT_REG = MCBIST_MBSMSECQ;
- static constexpr uint64_t MODAL_SYM_COUNT0_REG = MCBIST_MBSSYMEC0Q;
- static constexpr uint64_t MODAL_SYM_COUNT1_REG = MCBIST_MBSSYMEC1Q;
- static constexpr uint64_t MODAL_SYM_COUNT2_REG = MCBIST_MBSSYMEC2Q;
- static constexpr uint64_t MODAL_SYM_COUNT3_REG = MCBIST_MBSSYMEC3Q;
- static constexpr uint64_t MODAL_SYM_COUNT4_REG = MCBIST_MBSSYMEC4Q;
- static constexpr uint64_t MODAL_SYM_COUNT5_REG = MCBIST_MBSSYMEC5Q;
- static constexpr uint64_t MODAL_SYM_COUNT6_REG = MCBIST_MBSSYMEC6Q;
- static constexpr uint64_t MODAL_SYM_COUNT7_REG = MCBIST_MBSSYMEC7Q;
- static constexpr uint64_t MODAL_SYM_COUNT8_REG = MCBIST_MBSSYMEC8Q;
-
- // Stores the symbol counter registers in a vector for easier access for MCBIST
- static constexpr uint64_t REQUIRED_NUMBER_OF_SYMBOL_REGS = 9;
- static const std::vector<uint64_t> SYMBOL_COUNT_REG;
-
- // Fields, can be any size.
- enum
- {
- INTERMITTENT_CE_COUNT = MCBIST_MBSEC0Q_INTERMITTENT_CE_COUNT,
- INTERMITTENT_CE_COUNT_LEN = MCBIST_MBSEC0Q_INTERMITTENT_CE_COUNT_LEN,
- SOFT_CE_COUNT = MCBIST_MBSEC0Q_SOFT_CE_COUNT,
- SOFT_CE_COUNT_LEN = MCBIST_MBSEC0Q_SOFT_CE_COUNT_LEN,
- HARD_CE_COUNT = MCBIST_MBSEC0Q_HARD_CE_COUNT,
- HARD_CE_COUNT_LEN = MCBIST_MBSEC0Q_HARD_CE_COUNT_LEN,
- INTERMITTENT_MCE_COUNT = MCBIST_MBSEC0Q_INTERMITTENT_MCE_COUNT,
- INTERMITTENT_MCE_COUNT_LEN = MCBIST_MBSEC0Q_INTERMITTENT_MCE_COUNT_LEN,
- SOFT_MCE_COUNT = MCBIST_MBSEC0Q_SOFT_MCE_COUNT,
- SOFT_MCE_COUNT_LEN = MCBIST_MBSEC0Q_SOFT_MCE_COUNT_LEN,
- HARD_MCE_COUNT = MCBIST_MBSEC1Q_HARD_MCE_COUNT,
- HARD_MCE_COUNT_LEN = MCBIST_MBSEC1Q_HARD_MCE_COUNT_LEN,
- ICE_COUNT = MCBIST_MBSEC1Q_ICE_COUNT,
- ICE_COUNT_LEN = MCBIST_MBSEC1Q_ICE_COUNT_LEN,
- UE_COUNT = MCBIST_MBSEC1Q_UE_COUNT,
- UE_COUNT_LEN = MCBIST_MBSEC1Q_UE_COUNT_LEN,
- AUE_COUNT = MCBIST_MBSEC1Q_AUE,
- AUE_COUNT_LEN = MCBIST_MBSEC1Q_AUE_LEN,
- RCE_COUNT = MCBIST_MBSEC1Q_RCE_COUNT,
- RCE_COUNT_LEN = MCBIST_MBSEC1Q_RCE_COUNT_LEN,
- SYMBOL0_COUNT = MCBIST_MBSMSECQ_MCE_SYMBOL0_COUNT,
- SYMBOL0_COUNT_LEN = MCBIST_MBSMSECQ_MCE_SYMBOL0_COUNT_LEN,
- SYMBOL1_COUNT = MCBIST_MBSMSECQ_MCE_SYMBOL1_COUNT,
- SYMBOL1_COUNT_LEN = MCBIST_MBSMSECQ_MCE_SYMBOL1_COUNT_LEN,
- SYMBOL2_COUNT = MCBIST_MBSMSECQ_MCE_SYMBOL2_COUNT,
- SYMBOL2_COUNT_LEN = MCBIST_MBSMSECQ_MCE_SYMBOL2_COUNT_LEN,
- SYMBOL3_COUNT = MCBIST_MBSMSECQ_MCE_SYMBOL3_COUNT,
- SYMBOL3_COUNT_LEN = MCBIST_MBSMSECQ_MCE_SYMBOL3_COUNT_LEN,
- MODAL_SYMBOL_COUNTER_00 = MCBIST_MBSSYMEC0Q_MODAL_SYMBOL_COUNTER_00,
- MODAL_SYMBOL_COUNTER_00_LEN = MCBIST_MBSSYMEC0Q_MODAL_SYMBOL_COUNTER_00_LEN,
- MODAL_SYMBOL_COUNTER_01 = MCBIST_MBSSYMEC0Q_MODAL_SYMBOL_COUNTER_01,
- MODAL_SYMBOL_COUNTER_01_LEN = MCBIST_MBSSYMEC0Q_MODAL_SYMBOL_COUNTER_01_LEN,
- MODAL_SYMBOL_COUNTER_02 = MCBIST_MBSSYMEC0Q_MODAL_SYMBOL_COUNTER_02,
- MODAL_SYMBOL_COUNTER_02_LEN = MCBIST_MBSSYMEC0Q_MODAL_SYMBOL_COUNTER_02_LEN,
- MODAL_SYMBOL_COUNTER_03 = MCBIST_MBSSYMEC0Q_MODAL_SYMBOL_COUNTER_03,
- MODAL_SYMBOL_COUNTER_03_LEN = MCBIST_MBSSYMEC0Q_MODAL_SYMBOL_COUNTER_03_LEN,
- MODAL_SYMBOL_COUNTER_04 = MCBIST_MBSSYMEC0Q_MODAL_SYMBOL_COUNTER_04,
- MODAL_SYMBOL_COUNTER_04_LEN = MCBIST_MBSSYMEC0Q_MODAL_SYMBOL_COUNTER_04_LEN,
- MODAL_SYMBOL_COUNTER_05 = MCBIST_MBSSYMEC0Q_MODAL_SYMBOL_COUNTER_05,
- MODAL_SYMBOL_COUNTER_05_LEN = MCBIST_MBSSYMEC0Q_MODAL_SYMBOL_COUNTER_05_LEN,
- MODAL_SYMBOL_COUNTER_06 = MCBIST_MBSSYMEC0Q_MODAL_SYMBOL_COUNTER_06,
- MODAL_SYMBOL_COUNTER_06_LEN = MCBIST_MBSSYMEC0Q_MODAL_SYMBOL_COUNTER_06_LEN,
- MODAL_SYMBOL_COUNTER_07 = MCBIST_MBSSYMEC0Q_MODAL_SYMBOL_COUNTER_07,
- MODAL_SYMBOL_COUNTER_07_LEN = MCBIST_MBSSYMEC0Q_MODAL_SYMBOL_COUNTER_07_LEN,
-
- // and a couple constants
- NUM_MBSSYM_REGS = 9,
- MODAL_SYMBOL_COUNTERS_PER_REG = 8,
- };
-
-};
-
-} // close namespace mss
-
-#endif
OpenPOWER on IntegriCloud