/openbmc/docs/designs/ |
H A D | psu-firmware-update.md | 1 # PSU firmware update 32 For PSU firmware update, it is preferred to re-use the same function for the 37 The PSU firmware shall be updated in the below cases: 40 2. After BMC code update and if there is a newer PSU image in the BMC's 41 filesystem, BMC shall update the PSU firmware; 42 3. When a PSU is replaced and the version is older than the one in BMC's 43 filesystem, BMC shall update the PSU firmware. 45 above cases regardless of which PSU image is newer. 47 different PSU firmware images need to be supported. 49 For some PSUs, it is risky to do PSU code update while the host is running to [all …]
|
/openbmc/phosphor-psu-code-mgmt/ |
H A D | README.md | 1 # phosphor-psu-code-mgmt 3 phosphor-psu-code-mgmt is a service to provide management for PSU code, 6 - PSU code version 7 - PSU code update 29 This repo contains generic code to handle the PSU versions and updates. It 30 depends on vendor-specific tools to provide the below functions on the real PSU 33 - Get PSU firmware version 34 - Get PSU model 36 - Update the PSU firmware 41 the PSU inventory path as input, and outputs the PSU version string to stdout. [all …]
|
H A D | meson.options | 18 description: 'The base path for PSU inventory') 23 … description: 'The directory where downloaded or uploaded PSU images are placed and extracted') 25 # The PSU_VERSION_UTIL specifies an executable that accepts the PSU 29 # get_version <some-psu-path> 33 description: 'The command and arguments to get PSU version') 35 # The PSU_MODEL_UTIL specifies an executable that accepts the PSU 36 # inventory path as input and outputs the PSU model string. 42 description: 'The command and arguments to get the PSU model') 44 # The PSU_VERSION_COMPARE_UTIL specifies an executable that accepts the PSU 52 description: 'The command and arguments to compare PSU versions') [all …]
|
/openbmc/phosphor-power/phosphor-power-supply/test/ |
H A D | power_supply_tests.cpp | 10 using namespace phosphor::power::psu; 142 auto psu = std::make_unique<PowerSupply>(bus, "", 3, 0x68, "ibm-cffps", in TEST_F() local 160 auto psu = std::make_unique<PowerSupply>(bus, PSUInventoryPath, 3, 0x68, in TEST_F() local 178 auto psu = std::make_unique<PowerSupply>( in TEST_F() local 182 EXPECT_EQ(psu->isPresent(), false); in TEST_F() 183 EXPECT_EQ(psu->isFaulted(), false); in TEST_F() 184 EXPECT_EQ(psu->hasCommFault(), false); in TEST_F() 185 EXPECT_EQ(psu->hasInputFault(), false); in TEST_F() 186 EXPECT_EQ(psu->hasMFRFault(), false); in TEST_F() 187 EXPECT_EQ(psu->hasVINUVFault(), false); in TEST_F() [all …]
|
/openbmc/linux/drivers/hwmon/pmbus/ |
H A D | ibm-cffps.c | 83 struct ibm_cffps *psu = file->private_data; in ibm_cffps_debugfs_read_input_history() local 86 .addr = psu->client->addr, in ibm_cffps_debugfs_read_input_history() 87 .flags = psu->client->flags, in ibm_cffps_debugfs_read_input_history() 91 .addr = psu->client->addr, in ibm_cffps_debugfs_read_input_history() 92 .flags = psu->client->flags | I2C_M_RD, in ibm_cffps_debugfs_read_input_history() 94 .buf = psu->input_history, in ibm_cffps_debugfs_read_input_history() 99 rc = pmbus_lock_interruptible(psu->client); in ibm_cffps_debugfs_read_input_history() 103 rc = pmbus_set_page(psu->client, 0, 0xff); in ibm_cffps_debugfs_read_input_history() 105 pmbus_unlock(psu->client); in ibm_cffps_debugfs_read_input_history() 113 rc = i2c_transfer(psu->client->adapter, msg, 2); in ibm_cffps_debugfs_read_input_history() [all …]
|
H A D | q54sj108a2.c | 79 struct q54sj108a2_data *psu = to_psu(idxp, idx); in q54sj108a2_debugfs_read() local 86 rc = i2c_smbus_read_byte_data(psu->client, PMBUS_OPERATION); in q54sj108a2_debugfs_read() 93 rc = i2c_smbus_read_byte_data(psu->client, PMBUS_WRITE_PROTECT); in q54sj108a2_debugfs_read() 100 rc = i2c_smbus_read_byte_data(psu->client, PMBUS_VOUT_OV_FAULT_RESPONSE); in q54sj108a2_debugfs_read() 107 rc = i2c_smbus_read_byte_data(psu->client, PMBUS_IOUT_OC_FAULT_RESPONSE); in q54sj108a2_debugfs_read() 114 rc = i2c_smbus_read_byte_data(psu->client, PMBUS_REVISION); in q54sj108a2_debugfs_read() 121 rc = i2c_smbus_read_block_data(psu->client, PMBUS_MFR_ID, data); in q54sj108a2_debugfs_read() 126 rc = i2c_smbus_read_block_data(psu->client, PMBUS_MFR_MODEL, data); in q54sj108a2_debugfs_read() 131 rc = i2c_smbus_read_block_data(psu->client, PMBUS_MFR_REVISION, data); in q54sj108a2_debugfs_read() 136 rc = i2c_smbus_read_block_data(psu->client, PMBUS_MFR_LOCATION, data); in q54sj108a2_debugfs_read() [all …]
|
/openbmc/linux/Documentation/hwmon/ |
H A D | corsair-psu.rst | 3 Kernel driver corsair-psu 51 curr2_input Current on the 12v psu rail 52 curr2_crit Current max critical value on the 12v psu rail 53 curr3_input Current on the 5v psu rail 54 curr3_crit Current max critical value on the 5v psu rail 55 curr4_input Current on the 3.3v psu rail 56 curr4_crit Current max critical value on the 3.3v psu rail 57 fan1_input RPM of psu fan 58 in0_input Voltage of the psu ac input 59 in1_input Voltage of the 12v psu rail [all …]
|
/openbmc/phosphor-power/phosphor-power-supply/ |
H A D | psu_manager.cpp | 236 std::find_if(psus.begin(), psus.end(), [&invpath](auto& psu) { in getPSUProperties() argument 237 return psu->getInventoryPath() == invpath; in getPSUProperties() 255 auto psu = std::make_unique<PowerSupply>( in getPSUProperties() local 260 psus.emplace_back(std::move(psu)); in getPSUProperties() 403 // Call to validate the psu configuration if the power is on and both in entityManagerIfaceAdded() 482 // A PSU became present, force the PSU validation to run. in presenceChanged() 496 // Call D-Bus method to inform pseq of PSU error in setPowerSupplyError() 578 for (auto& psu : psus) in syncHistory() local 580 psu->clearSyncHistoryRequired(); in syncHistory() 587 std::any_of(psus.begin(), psus.end(), [](const auto& psu) { in analyze() argument [all …]
|
/openbmc/phosphor-psu-code-mgmt/src/ |
H A D | item_updater.hpp | 41 * @brief Manages the activation of the PSU version items. 88 * new "running" PSU images 95 * "running" PSU software image 107 /** @brief Notify a PSU is updated 110 * @param[in] psuInventoryPath - The PSU inventory path that is updated 138 /** @brief Callback function for PSU inventory match. 144 /** @brief Called when a PSU inventory object has changed 145 * @details Update an Activation D-Bus object for PSU inventory. 148 * @param[in] psuPath - The PSU inventory path 167 /** @brief Create Activation and Version object for PSU inventory [all …]
|
H A D | activation.cpp | 57 // PSU image could be activated even when it's in active, in requestedActivation() 58 // e.g. in case a PSU is replaced and has a older image, it will be in requestedActivation() 59 // updated with the running PSU image that is stored in BMC. in requestedActivation() 123 lg2::error("Error starting update service for PSU {PSU}: {ERROR}", in doUpdate() 124 "PSU", psuInventoryPath, "ERROR", e); in doUpdate() 139 // Do the update on a PSU in doUpdate() 140 const auto& psu = psuQueue.front(); in doUpdate() local 141 return doUpdate(psu); in doUpdate() 159 doUpdate(); // Update the next psu in onUpdateDone() 165 lg2::error("Failed to update PSU {PSU}", "PSU", psuQueue.front()); in onUpdateFailed() [all …]
|
/openbmc/entity-manager/configurations/ |
H A D | solum_pssf162202_psu.json | 7 "Name": "SOLUM CO IS162F22 PSU FRU", 18 "PSU$ADDRESS % 4 + 1 Fan Speed 1" 20 "Name": "PSU$ADDRESS % 4 + 1 Fan 1", 25 "Pwm PSU$ADDRESS % 4 + 1 Fan 1" 33 "PSU" 44 "PSU$ADDRESS % 4 + 1 Fan Speed 2" 46 "Name": "PSU$ADDRESS % 4 + 1 Fan 2", 51 "Pwm PSU$ADDRESS % 4 + 1 Fan 2" 59 "PSU" 70 "PSU$ADDRESS % 4 + 1 Temperature" [all …]
|
H A D | 3ypower_vast2112_psu.json | 6 "Name": "psu$ADDRESS % 4 fru", 21 "Name": "psu$ADDRESS % 4", 24 "fan1_Name": "psu$ADDRESS % 4 fan", 25 "iout1_Name": "psu$ADDRESS % 4 iout", 26 "pin_Name": "psu$ADDRESS % 4 pin", 27 "pout1_Name": "psu$ADDRESS % 4 pout", 28 "temp1_Name": "psu$ADDRESS % 4 temp", 29 "vin_Name": "psu$ADDRESS % 4 vin", 30 "vout1_Name": "psu$ADDRESS % 4 vout" 33 "Name": "3YPOWER VAST2112 PSU$ADDRESS % 4",
|
H A D | flextronics_s-1100adu00-201_psu.json | 7 "Name": "PSU $ADDRESS % 4 + 1 FRU", 18 "PSU$ADDRESS % 4 + 1 Fan Speed 1" 20 "Name": "PSU$ADDRESS % 4 + 1 Fan 1", 25 "Pwm PSU$ADDRESS % 4 + 1 Fan 1" 33 "PSU" 44 "PSU$ADDRESS % 4 + 1 Temperature" 46 "Name": "PSU$ADDRESS % 4 + 1 Temperature", 58 "PSU" 64 "PSU$ADDRESS % 4 + 1 Temperature" 66 "Name": "PSU $ADDRESS % 4 + 1 LCC", [all …]
|
H A D | delta_dps-750xb_psu.json | 7 "Name": "PSU$ADDRESS % 4 + 1 FRU", 18 "PSU$ADDRESS % 4 + 1 Fan Speed 1" 20 "Name": "PSU$ADDRESS % 4 + 1 Fan 1", 25 "Pwm PSU$ADDRESS % 4 + 1 Fan 1" 33 "PSU" 44 "PSU$ADDRESS % 4 + 1 Temperature" 46 "Name": "PSU$ADDRESS % 4 + 1 Temperature", 58 "PSU" 64 "PSU$ADDRESS % 4 + 1 Temperature" 66 "Name": "PSU$ADDRESS % 4 + 1 LCC", [all …]
|
H A D | aspower_u1d-d10800_psu.json | 7 "Name": "PSU $ADDRESS % 4 + 1 FRU", 18 "PSU$ADDRESS % 4 + 1 Fan Speed 1" 20 "Name": "PSU$ADDRESS % 4 + 1 Fan 1", 25 "Pwm PSU$ADDRESS % 4 + 1 Fan 1" 33 "PSU" 44 "PSU$ADDRESS % 4 + 1 Temperature" 46 "Name": "PSU$ADDRESS % 4 + 1 Temperature", 58 "PSU" 64 "PSU$ADDRESS % 4 + 1 Temperature" 66 "Name": "PSU $ADDRESS % 4 + 1 LCC", [all …]
|
H A D | delta_dps-1600ab_psu.json | 7 "Name": "PSU$ADDRESS % 4 + 1 FRU", 18 "PSU$ADDRESS % 4 + 1 Fan Speed 1" 20 "Name": "PSU$ADDRESS % 4 + 1 Fan 1", 25 "Pwm PSU$ADDRESS % 4 + 1 Fan 1" 33 "PSU" 44 "PSU$ADDRESS % 4 + 1 Temperature" 46 "Name": "PSU$ADDRESS % 4 + 1 Temperature", 58 "PSU" 64 "PSU$ADDRESS % 4 + 1 Temperature" 66 "Name": "PSU$ADDRESS % 4 + 1 LCC", [all …]
|
H A D | aspower_u1a-d10800_psu.json | 7 "Name": "PSU $ADDRESS % 4 + 1 FRU", 18 "PSU$ADDRESS % 4 + 1 Fan Speed 1" 20 "Name": "PSU$ADDRESS % 4 + 1 Fan 1", 25 "Pwm PSU$ADDRESS % 4 + 1 Fan 1" 33 "PSU" 44 "PSU$ADDRESS % 4 + 1 Temperature" 46 "Name": "PSU$ADDRESS % 4 + 1 Temperature", 58 "PSU" 64 "PSU$ADDRESS % 4 + 1 Temperature" 66 "Name": "PSU $ADDRESS % 4 + 1 LCC", [all …]
|
H A D | delta_dps-2000ab_psu.json | 7 "Name": "PSU$ADDRESS % 4 + 1 FRU", 18 "PSU$ADDRESS % 4 + 1 Fan Speed 1" 20 "Name": "PSU$ADDRESS % 4 + 1 Fan 1", 25 "Pwm PSU$ADDRESS % 4 + 1 Fan 1" 33 "PSU" 44 "PSU$ADDRESS % 4 + 1 Temperature" 46 "Name": "PSU$ADDRESS % 4 + 1 Temperature", 58 "PSU" 64 "PSU$ADDRESS % 4 + 1 Temperature" 66 "Name": "PSU$ADDRESS % 4 + 1 LCC", [all …]
|
H A D | aspower_u1a-d11600_psu.json | 7 "Name": "PSU $ADDRESS % 4 + 1 FRU", 18 "PSU$ADDRESS % 4 + 1 Fan Speed 1" 20 "Name": "PSU$ADDRESS % 4 + 1 Fan 1", 25 "Pwm PSU$ADDRESS % 4 + 1 Fan 1" 33 "PSU" 44 "PSU$ADDRESS % 4 + 1 Temperature" 46 "Name": "PSU$ADDRESS % 4 + 1 Temperature", 58 "PSU" 64 "PSU$ADDRESS % 4 + 1 Temperature" 66 "Name": "PSU $ADDRESS % 4 + 1 LCC", [all …]
|
H A D | aspower_u1a-d10550_psu.json | 7 "Name": "PSU $ADDRESS % 4 + 1 FRU", 18 "PSU$ADDRESS % 4 + 1 Fan Speed 1" 20 "Name": "PSU$ADDRESS % 4 + 1 Fan 1", 25 "Pwm PSU$ADDRESS % 4 + 1 Fan 1" 33 "PSU" 44 "PSU$ADDRESS % 4 + 1 Temperature" 46 "Name": "PSU$ADDRESS % 4 + 1 Temperature", 58 "PSU" 64 "PSU$ADDRESS % 4 + 1 Temperature" 66 "Name": "PSU $ADDRESS % 4 + 1 LCC", [all …]
|
H A D | aspower_u1a-d11200_psu.json | 7 "Name": "PSU $ADDRESS % 4 + 1 FRU", 18 "PSU$ADDRESS % 4 + 1 Fan Speed 1" 20 "Name": "PSU$ADDRESS % 4 + 1 Fan 1", 25 "Pwm PSU$ADDRESS % 4 + 1 Fan 1" 33 "PSU" 44 "PSU$ADDRESS % 4 + 1 Temperature" 46 "Name": "PSU$ADDRESS % 4 + 1 Temperature", 58 "PSU" 64 "PSU$ADDRESS % 4 + 1 Temperature" 66 "Name": "PSU $ADDRESS % 4 + 1 LCC", [all …]
|
/openbmc/openbmc/meta-phosphor/recipes-phosphor/power/ |
H A D | phosphor-psu-software-manager_git.bb | 2 SUMMARY = "Phosphor PSU software manager" 3 DESCRIPTION = "Providing PSU firmware version and upgrade" 4 HOMEPAGE = "https://github.com/openbmc/phosphor-psu-code-mgmt" 17 SRC_URI = "git://github.com/openbmc/phosphor-psu-code-mgmt;branch=master;protocol=https" 20 SYSTEMD_SERVICE:${PN} = "xyz.openbmc_project.Software.Psu.Updater.service" 21 SYSTEMD_SERVICE:${PN} += "psu-update@.service" 41 ## * PSU_VERSION_UTIL accepts a PSU inventory path and returns the PSU 43 ## * PSU_MODEL_UTIL accepts a PSU inventory path and returns the PSU 45 ## * PSU_VERSION_COMPARE_UTIL accepts several PSU inventory paths and return 50 ## The psu-update@.service from repo is an example service that only prints a log and fails [all …]
|
/openbmc/openbmc/meta-ampere/meta-jade/recipes-phosphor/gpio/phosphor-gpio-monitor/ |
H A D | ampere_psu_reset_hotswap.sh | 3 # When system only use single PSU ( ex : PSU1 ) to power ON normal 12V, 7 # Due to HSC2 protected, the PSU redundancy mechanism can't be created. 12 # - When BMC detect event PSU is plugged in system, BMC will reset HSC 18 # BMC can't detect PSU plug/unplug, then the work-around won't be executed 29 # $1 will be the name of the psu 30 PSU=$1 32 if [ "$PSU" = 0 ]; then 35 elif [ "$PSU" = 1 ]; then 60 echo "PSU $PSU: FET health problems have been detected" 61 echo "Reset Hot swap output on PSU $PSU" [all …]
|
/openbmc/phosphor-power/tools/power-utils/ |
H A D | version.cpp | 47 * @brief Get PSU version information 49 * @param[in] psuInventoryPath - The PSU inventory path. 71 log<level::WARNING>("Unable to find path for PSU", in getVersionInfo() 97 * @brief Get the PSU version from sysfs. 99 * Obtain PSU information from the PSU JSON file. 103 * @param[in] psuInventoryPath - PSU D-Bus inventory path 105 * @return PSU version, or "" if none found 109 // Get PSU device path, PMBus access type, and sysfs file name from JSON in getVersionJson() 123 * @brief Get the PSU version from sysfs. 125 * Obtain PSU information from D-Bus. [all …]
|
H A D | model.cpp | 45 * @brief Get the PSU model from sysfs. 47 * Obtain PSU information from the PSU JSON file. 51 * @param[in] psuInventoryPath - PSU D-Bus inventory path 53 * @return PSU model 57 // Parse PSU JSON file in getModelJson() 61 // Get PSU device path from JSON in getModelJson() 71 "Unable to find device path for PSU {}", psuInventoryPath)}; in getModelJson() 77 std::format("Empty device path for PSU {}", psuInventoryPath)}; in getModelJson() 111 * @brief Get the PSU model from sysfs. 113 * Obtain PSU information from D-Bus. [all …]
|