From 333d66b55815428a6fff9be13f5cfc5a7d420b15 Mon Sep 17 00:00:00 2001 From: Michael Pardeik Date: Thu, 10 Oct 2019 15:37:04 -0500 Subject: pmic status tool updates added checks for when items are applicable added in power reporting added in voltage reporting added in ADC data reporting added in temperature reporting Change-Id: I764d28c93bf097369d1e060a09178bb672b8002e Reviewed-on: http://rchgit01.rchland.ibm.com/gerrit1/85181 Tested-by: FSP CI Jenkins Tested-by: Jenkins Server Tested-by: Hostboot CI Reviewed-by: Louis Stermole Reviewed-by: STEPHEN GLANCY Reviewed-by: Mark Pizzutillo Reviewed-by: Jennifer A Stofer Reviewed-on: http://rchgit01.rchland.ibm.com/gerrit1/85186 Tested-by: Jenkins OP Build CI Tested-by: Jenkins OP HW Reviewed-by: Christian R Geddes --- .../chips/ocmb/common/include/pmic_regs_fld.H | 37 +++++++++++++++++++++- .../hwp/pmic/lib/utils/pmic_common_utils.C | 22 +++++++++++++ .../hwp/pmic/lib/utils/pmic_common_utils.H | 35 ++++++++++++-------- 3 files changed, 80 insertions(+), 14 deletions(-) (limited to 'src/import') diff --git a/src/import/chips/ocmb/common/include/pmic_regs_fld.H b/src/import/chips/ocmb/common/include/pmic_regs_fld.H index 16946f491..cd4ee9532 100644 --- a/src/import/chips/ocmb/common/include/pmic_regs_fld.H +++ b/src/import/chips/ocmb/common/include/pmic_regs_fld.H @@ -133,12 +133,47 @@ struct pmicFields static constexpr uint8_t R0B_SWC_OUTPUT_UNDER_VOLTAGE_LOCKOUT_STATUS = 0x01; static constexpr uint8_t R0B_SWD_OUTPUT_UNDER_VOLTAGE_LOCKOUT_STATUS = 0x00; - // 0x14 + // R14 static constexpr uint8_t R14_GLOBAL_CLEAR_STATUS = 0x00; + // R1A + static constexpr uint8_t R1A_OUTPUT_POWER_SELECT = 0x01; + + // R1B + static constexpr uint8_t R1B_CURRENT_OR_POWER_METER_SELECT = 0x06; + + // R2B - bit positions flipped (0 is for bit7, 1 is for bit6, etc) + static constexpr uint8_t R2B_LDO_1P8_VOLT_SETTING_START = 0x00; + static constexpr uint8_t R2B_LDO_1P8_VOLT_SETTING_LENGTH = 0x02; + static constexpr uint8_t R2B_LDO_1P0_VOLT_SETTING_START = 0x05; + static constexpr uint8_t R2B_LDO_1P0_VOLT_SETTING_LENGTH = 0x02; + + // R2F + static constexpr uint8_t R2F_SWA_REGULATOR_CONTROL = 0x06; + static constexpr uint8_t R2F_SWB_REGULATOR_CONTROL = 0x05; + static constexpr uint8_t R2F_SWC_REGULATOR_CONTROL = 0x04; + static constexpr uint8_t R2F_SWD_REGULATOR_CONTROL = 0x03; + + // R4F + static constexpr uint8_t R4F_SWA_SWB_PHASE_MODE_SELECT = 0x00; + + // R30 - bit positions flipped (0 is for bit7, 1 is for bit6, etc) + static constexpr uint8_t R30_ADC_ENABLE = 0x00; + static constexpr uint8_t R30_ADC_SELECT_START = 0x01; + static constexpr uint8_t R30_ADC_SELECT_LENGTH = 0x04; + + // R31 - bit positions flipped (0 is for bit7, 1 is for bit6, etc) + static constexpr uint8_t R31_ADC_READ_SETTING_START = 0x00; + static constexpr uint8_t R31_ADC_READ_SETTING_LENGTH = 0x08; + + // R33 - bit positions flipped (0 is for bit7, 1 is for bit6, etc) + static constexpr uint8_t R33_TEMPERATURE_SETTING_START = 0x00; + static constexpr uint8_t R33_TEMPERATURE_SETTING_LENGTH = 0x03; + static constexpr uint8_t DELAY_FLD_LENGTH = 3; static constexpr uint8_t VOLTAGE_SETTING_START = 0; static constexpr uint8_t VOLTAGE_SETTING_LENGTH = 7; + }; #endif diff --git a/src/import/chips/ocmb/common/procedures/hwp/pmic/lib/utils/pmic_common_utils.C b/src/import/chips/ocmb/common/procedures/hwp/pmic/lib/utils/pmic_common_utils.C index fe5e54c0d..f89559dde 100644 --- a/src/import/chips/ocmb/common/procedures/hwp/pmic/lib/utils/pmic_common_utils.C +++ b/src/import/chips/ocmb/common/procedures/hwp/pmic/lib/utils/pmic_common_utils.C @@ -167,6 +167,28 @@ fapi_try_exit: return fapi2::current_err; } +/// +/// @brief Check if PMIC is TI vendor +/// +/// @param[in] i_pmic_target PMIC target +/// @param[out] o_is_ti true/false +/// @return fapi2::ReturnCode FAPI2_RC_SUCCESS iff success, else error code +/// @note Can't unit test this properly as R3D is hardcoded in simics +/// +fapi2::ReturnCode pmic_is_ti(const fapi2::Target& i_pmic_target, bool& o_is_ti) +{ + o_is_ti = false; + using REGS = pmicRegs; + fapi2::buffer l_reg_contents; + + FAPI_TRY(mss::pmic::i2c::reg_read(i_pmic_target, REGS::R3D_VENDOR_ID_BYTE_1, l_reg_contents)); + + o_is_ti = (l_reg_contents == mss::pmic::vendor::TI_SHORT); + +fapi_try_exit: + return fapi2::current_err; +} + namespace status { diff --git a/src/import/chips/ocmb/common/procedures/hwp/pmic/lib/utils/pmic_common_utils.H b/src/import/chips/ocmb/common/procedures/hwp/pmic/lib/utils/pmic_common_utils.H index b2a7c60d7..1bc3aea1a 100644 --- a/src/import/chips/ocmb/common/procedures/hwp/pmic/lib/utils/pmic_common_utils.H +++ b/src/import/chips/ocmb/common/procedures/hwp/pmic/lib/utils/pmic_common_utils.H @@ -56,7 +56,7 @@ typedef fapi2::ReturnCode (*mfg_id_attr_ptr)(const fapi2::Target; @@ -69,7 +69,7 @@ static constexpr uint8_t const VOLT_SETTING_ACTIVE_REGS[] = REGS::R21_SWA_VOLTAGE_SETTING, REGS::R23_SWB_VOLTAGE_SETTING, REGS::R25_SWC_VOLTAGE_SETTING, - REGS::R27_SWD_VOLTAGE_SETTING + REGS::R27_SWD_VOLTAGE_SETTING, }; static constexpr uint8_t const VOLT_SETTING_VENDOR_REGS[] = @@ -77,7 +77,7 @@ static constexpr uint8_t const VOLT_SETTING_VENDOR_REGS[] = REGS::R45_SWA_VOLTAGE_SETTING, REGS::R47_SWB_VOLTAGE_SETTING, REGS::R49_SWC_VOLTAGE_SETTING, - REGS::R4B_SWD_VOLTAGE_SETTING + REGS::R4B_SWD_VOLTAGE_SETTING, }; static constexpr uint8_t const VOLT_RANGE_FLDS[] = @@ -85,7 +85,7 @@ static constexpr uint8_t const VOLT_RANGE_FLDS[] = FIELDS::SWA_VOLTAGE_RANGE, FIELDS::SWB_VOLTAGE_RANGE, FIELDS::SWC_VOLTAGE_RANGE, - FIELDS::SWD_VOLTAGE_RANGE + FIELDS::SWD_VOLTAGE_RANGE, }; static constexpr uint32_t const VOLT_RANGE_MINS[][CONSTS::NUM_RANGES] = @@ -93,7 +93,7 @@ static constexpr uint32_t const VOLT_RANGE_MINS[][CONSTS::NUM_RANGES] = {CONSTS::SWABC_VOLT_RANGE0_MIN, CONSTS::SWABC_VOLT_RANGE1_MIN}, {CONSTS::SWABC_VOLT_RANGE0_MIN, CONSTS::SWABC_VOLT_RANGE1_MIN}, {CONSTS::SWABC_VOLT_RANGE0_MIN, CONSTS::SWABC_VOLT_RANGE1_MIN}, - {CONSTS::SWD_VOLT_RANGE0_MIN, CONSTS::SWD_VOLT_RANGE1_MIN} + {CONSTS::SWD_VOLT_RANGE0_MIN, CONSTS::SWD_VOLT_RANGE1_MIN}, }; static constexpr uint32_t const VOLT_RANGE_MAXES[][CONSTS::NUM_RANGES] = @@ -101,7 +101,7 @@ static constexpr uint32_t const VOLT_RANGE_MAXES[][CONSTS::NUM_RANGES] = {CONSTS::SWABC_VOLT_RANGE0_MAX, CONSTS::SWABC_VOLT_RANGE1_MAX}, {CONSTS::SWABC_VOLT_RANGE0_MAX, CONSTS::SWABC_VOLT_RANGE1_MAX}, {CONSTS::SWABC_VOLT_RANGE0_MAX, CONSTS::SWABC_VOLT_RANGE1_MAX}, - {CONSTS::SWD_VOLT_RANGE0_MAX, CONSTS::SWD_VOLT_RANGE1_MAX} + {CONSTS::SWD_VOLT_RANGE0_MAX, CONSTS::SWD_VOLT_RANGE1_MAX}, }; /// @@ -168,6 +168,15 @@ fapi2::ReturnCode lock_vendor_region(const fapi2::Target& i_pmic_target, bool& o_is_idt); +/// +/// @brief Check if PMIC is TI vendor +/// +/// @param[in] i_pmic_target PMIC target +/// @param[out] o_is_ti true/false +/// @return fapi2::ReturnCode FAPI2_RC_SUCCESS iff success, else error code +/// +fapi2::ReturnCode pmic_is_ti(const fapi2::Target& i_pmic_target, bool& o_is_ti); + namespace status { @@ -187,7 +196,7 @@ static const std::vector>> IDT_SPEC { {FIELDS::R04_GLOBAL_ERROR_COUNT, "GLOBAL_ERROR_COUNT: >1 error count since last erase operation"}, {FIELDS::R04_GLOBAL_ERROR_LOG_BUCK_OV_OR_UV, "GLOBAL_ERROR_LOG: BUCK OV/UV: Error occurred"}, {FIELDS::R04_GLOBAL_ERROR_LOG_VIN_BULK_OVER_VOLTAGE, "GLOBAL_ERROR_LOG: VIN_BULK_OVER_VOLTAGE"}, - {FIELDS::R04_GLOBAL_ERROR_LOG_CRITICAL_TEMPERATURE, "GLOBAL_ERROR_LOG: CRITICAL_TEMPERATURE"} + {FIELDS::R04_GLOBAL_ERROR_LOG_CRITICAL_TEMPERATURE, "GLOBAL_ERROR_LOG: CRITICAL_TEMPERATURE"}, } }, @@ -196,7 +205,7 @@ static const std::vector>> IDT_SPEC { {FIELDS::R05_SWA_POWER_GOOD, "PMIC POWER ON: SWA_PWR_NOT_GOOD"}, {FIELDS::R05_SWB_POWER_GOOD, "PMIC POWER ON: SWB_PWR_NOT_GOOD"}, {FIELDS::R05_SWC_POWER_GOOD, "PMIC POWER ON: SWC_PWR_NOT_GOOD"}, - {FIELDS::R05_SWD_POWER_GOOD, "PMIC POWER ON: SWD_PWR_NOT_GOOD"} + {FIELDS::R05_SWD_POWER_GOOD, "PMIC POWER ON: SWD_PWR_NOT_GOOD"}, } }, @@ -209,7 +218,7 @@ static const std::vector>> IDT_SPEC {FIELDS::R06_SWA_OVER_VOLTAGE, "SWA_OVER_VOLTAGE"}, {FIELDS::R06_SWB_OVER_VOLTAGE, "SWB_OVER_VOLTAGE"}, {FIELDS::R06_SWC_OVER_VOLTAGE, "SWC_OVER_VOLTAGE"}, - {FIELDS::R06_SWD_OVER_VOLTAGE, "SWD_OVER_VOLTAGE"} + {FIELDS::R06_SWD_OVER_VOLTAGE, "SWD_OVER_VOLTAGE"}, } } }; @@ -228,7 +237,7 @@ static const std::vector>> STATUS_F {FIELDS::R08_SWC_PWR_GOOD_STATUS, "SWC_PWR_NOT_GOOD"}, {FIELDS::R08_SWD_PWR_GOOD_STATUS, "SWD_PWR_NOT_GOOD"}, {FIELDS::R08_VIN_MGMT_INPUT_OVER_VOLTAGE, "VIN_MGMT_INPUT_OVER_VOLTAGE"}, - {FIELDS::R08_VIN_BULK_INPUT_OVER_VOLTAGE, "VIN_BULK_INPUT_OVER_VOLTAGE"} + {FIELDS::R08_VIN_BULK_INPUT_OVER_VOLTAGE, "VIN_BULK_INPUT_OVER_VOLTAGE"}, } }, @@ -241,7 +250,7 @@ static const std::vector>> STATUS_F {FIELDS::R09_SWA_HIGH_OUTPUT_CURRENT_CONSUMPTION_WARNING_STATUS, "SWA_HIGH_OUTPUT_CURRENT_CONSUMPTION_WARNING"}, {FIELDS::R09_SWB_HIGH_OUTPUT_CURRENT_CONSUMPTION_WARNING_STATUS, "SWB_HIGH_OUTPUT_CURRENT_CONSUMPTION_WARNING"}, {FIELDS::R09_SWC_HIGH_OUTPUT_CURRENT_CONSUMPTION_WARNING_STATUS, "SWC_HIGH_OUTPUT_CURRENT_CONSUMPTION_WARNING"}, - {FIELDS::R09_SWD_HIGH_OUTPUT_CURRENT_CONSUMPTION_WARNING_STATUS, "SWD_HIGH_OUTPUT_CURRENT_CONSUMPTION_WARNING"} + {FIELDS::R09_SWD_HIGH_OUTPUT_CURRENT_CONSUMPTION_WARNING_STATUS, "SWD_HIGH_OUTPUT_CURRENT_CONSUMPTION_WARNING"}, } }, @@ -253,7 +262,7 @@ static const std::vector>> STATUS_F {FIELDS::R0A_SWD_OUTPUT_OVER_VOLTAGE_STATUS, "SWD_OUTPUT_OVER_VOLTAGE"}, {FIELDS::R0A_PEC_ERROR_STATUS, "PEC_ERROR"}, {FIELDS::R0A_PARITY_ERROR_STATUS, "PARITY_ERROR"}, - {FIELDS::R0A_IBI_STATUS, "PENDING_IBI"} + {FIELDS::R0A_IBI_STATUS, "PENDING_IBI"}, } }, @@ -266,7 +275,7 @@ static const std::vector>> STATUS_F {FIELDS::R0B_SWA_OUTPUT_UNDER_VOLTAGE_LOCKOUT_STATUS , "SWA_OUTPUT_UNDER_VOLTAGE_LOCKOUT"}, {FIELDS::R0B_SWB_OUTPUT_UNDER_VOLTAGE_LOCKOUT_STATUS , "SWB_OUTPUT_UNDER_VOLTAGE_LOCKOUT"}, {FIELDS::R0B_SWC_OUTPUT_UNDER_VOLTAGE_LOCKOUT_STATUS , "SWC_OUTPUT_UNDER_VOLTAGE_LOCKOUT"}, - {FIELDS::R0B_SWD_OUTPUT_UNDER_VOLTAGE_LOCKOUT_STATUS , "SWD_OUTPUT_UNDER_VOLTAGE_LOCKOUT"} + {FIELDS::R0B_SWD_OUTPUT_UNDER_VOLTAGE_LOCKOUT_STATUS , "SWD_OUTPUT_UNDER_VOLTAGE_LOCKOUT"}, } } }; -- cgit v1.2.1