psu-ng: Put input voltage rating on D-Bus
IBM systems must tell the BIOS (called hostboot) the power supply input
voltage rating during a boot, where the rating is 110 or 220. This is
done via PLDM BIOS attributes where the attribute is backed by a D-Bus
property.
This commit adds support for that by putting the input voltage rating
of each PS on D-Bus using the Value property of the
xyz.openbmc_project.Sensor.Value interface. The path is like
/xyz/openbmc_project/sensors/voltage/ps0_input_voltage_rating.
$ busctl get-property xyz.openbmc_project.Power.PSUMonitor \
/xyz/openbmc_project/sensors/voltage/ps0_input_voltage_rating \
xyz.openbmc_project.Sensor.Value Value
d 220
$ busctl get-property xyz.openbmc_project.Power.PSUMonitor \
/xyz/openbmc_project/sensors/voltage/ps0_input_voltage_rating \
xyz.openbmc_project.Sensor.Value Unit
s "xyz.openbmc_project.Sensor.Value.Unit.Volts"
These D-Bus objects won't have any associations, unlike normal sensors,
so they will not show up in any Redfish output as a sensor.
The interface is only created for present power supplies, and is only
updated when the application starts up and when the boot starts.
If a power supply is hot added or removed after that, the D-Bus property
doesn't need to be updated as hostboot has already consumed it.
Change-Id: I277516e8d86f1ba1a75b75fe76c67f192d911f88
Signed-off-by: Matt Spinler <spinler@us.ibm.com>
diff --git a/phosphor-power-supply/psu_manager.hpp b/phosphor-power-supply/psu_manager.hpp
index 0749185..8acb416 100644
--- a/phosphor-power-supply/psu_manager.hpp
+++ b/phosphor-power-supply/psu_manager.hpp
@@ -370,6 +370,15 @@
sdbusplus::server::manager_t historyManager;
/**
+ * @brief Implement the ObjectManager for the input voltage rating.
+ *
+ * Implements the org.freedesktop.DBus.ObjectManager interface used to
+ * communicate updates to the input voltage ratings on the
+ * /xyz/openbmc_project/sensors root D-Bus path.
+ */
+ sdbusplus::server::manager_t sensorsObjManager;
+
+ /**
* @brief GPIO to toggle to 'sync' power supply input history.
*/
std::unique_ptr<GPIOInterfaceBase> syncHistoryGPIO = nullptr;
@@ -387,6 +396,18 @@
* start fresh.
*/
void syncHistory();
+
+ /**
+ * @brief Tells each PSU to set its power supply input
+ * voltage rating D-Bus property.
+ */
+ inline void setInputVoltageRating()
+ {
+ for (auto& psu : psus)
+ {
+ psu->setInputVoltageRating();
+ }
+ }
};
} // namespace phosphor::power::manager