pseq: Add support for UCD90160 device
Refactor power sequencer class hierarchy to add support for the UCD90160
device.
Tested:
* Verify UCD information is obtained successfully from EntityManager
* Verify JSON configuration file is found and parsed successfully
* Test where no pgood error occurs
* During power on
* Verify power on continues
* Verify no error is logged
* After chassis is powered on
* Verify chassis remains powered on
* Verify no error is logged
* Test where pgood error occurs
* During power on
* Verify power on stops and chassis is powered off
* Verify correct error is logged
* Verify callouts and additional data in error log are correct
* Detected via rail
* Detected via pin
* After chassis is powered on
* Verify chassis is powered off
* Verify correct error is logged
* Verify callouts and additional data in error log are correct
* Detected via rail
* Detected via pin
Signed-off-by: Jim Wright <jlwright@us.ibm.com>
Change-Id: Ib00bc1ea34b504c245a4f0cb3979a86e51507f3c
Signed-off-by: Shawn McCarney <shawnmm@us.ibm.com>
diff --git a/phosphor-power-sequencer/src/ucd90320_monitor.hpp b/phosphor-power-sequencer/src/ucd90320_monitor.hpp
index 9bcbf77..a40456d 100644
--- a/phosphor-power-sequencer/src/ucd90320_monitor.hpp
+++ b/phosphor-power-sequencer/src/ucd90320_monitor.hpp
@@ -1,37 +1,23 @@
#pragma once
-#include "pmbus.hpp"
-#include "power_sequencer_monitor.hpp"
+#include "ucd90x_monitor.hpp"
-#include <gpiod.hpp>
#include <sdbusplus/bus.hpp>
-#include <sdbusplus/bus/match.hpp>
-#include <filesystem>
+#include <cstdint>
+#include <map>
+#include <string>
#include <vector>
namespace phosphor::power::sequencer
{
-struct Pin
-{
- std::string name;
- unsigned int line;
- std::string presence;
-};
-
-struct Rail
-{
- std::string name;
- std::string presence;
-};
-
/**
* @class UCD90320Monitor
* This class implements fault analysis for the UCD90320
* power sequencer device.
*/
-class UCD90320Monitor : public PowerSequencerMonitor
+class UCD90320Monitor : public UCD90xMonitor
{
public:
UCD90320Monitor() = delete;
@@ -50,103 +36,11 @@
UCD90320Monitor(sdbusplus::bus_t& bus, std::uint8_t i2cBus,
std::uint16_t i2cAddress);
- /**
- * Callback function to handle interfacesAdded D-Bus signals
- * @param msg Expanded sdbusplus message data
- */
- void interfacesAddedHandler(sdbusplus::message_t& msg);
-
- /** @copydoc PowerSequencerMonitor::onFailure() */
- void onFailure(bool timeout, const std::string& powerSupplyError) override;
-
- private:
- /**
- * The match to Entity Manager interfaces added.
- */
- sdbusplus::bus::match_t match;
-
- /**
- * List of pins
- */
- std::vector<Pin> pins;
-
- /**
- * The read/write interface to this hardware
- */
- pmbus::PMBus pmbusInterface;
-
- /**
- * List of rails
- */
- std::vector<Rail> rails;
-
- /**
- * Finds the list of compatible system types using D-Bus methods.
- * This list is used to find the correct JSON configuration file for the
- * current system.
- */
- void findCompatibleSystemTypes();
-
- /**
- * Finds the JSON configuration file.
- * Looks for a configuration file based on the list of compatible system
- * types.
- * Throws an exception if an operating system error occurs while checking
- * for the existance of a file.
- * @param compatibleSystemTypes List of compatible system types
- */
- void findConfigFile(const std::vector<std::string>& compatibleSystemTypes);
-
- /**
- * Returns whether the hardware with the specified inventory path is
- * present.
- * If an error occurs while obtaining the presence value, presence is
- * assumed to be false. An empty string path indicates no presence check is
- * needed.
- * @param inventoryPath D-Bus inventory path of the hardware
- * @return true if hardware is present, false otherwise
- */
- bool isPresent(const std::string& inventoryPath);
-
- /**
- * Analyzes the device pins for errors when the device is known to be in an
- * error state.
- * @param message Message property of the error log entry
- * @param additionalData AdditionalData property of the error log entry
- */
- void onFailureCheckPins(std::string& message,
- std::map<std::string, std::string>& additionalData);
-
- /**
- * Analyzes the device rails for errors when the device is known to be in an
- * error state.
- * @param message Message property of the error log entry
- * @param additionalData AdditionalData property of the error log entry
- * @param powerSupplyError The power supply error to log. A default
- * std:string, i.e. empty string (""), is passed when there is no power
- * supply error to log.
- */
- void onFailureCheckRails(std::string& message,
- std::map<std::string, std::string>& additionalData,
- const std::string& powerSupplyError);
-
- /**
- * Parse the JSON configuration file.
- * @param pathName the path name
- */
- void parseConfigFile(const std::filesystem::path& pathName);
-
- /**
- * Reads the mfr_status register
- * @return the register contents
- */
- uint64_t readMFRStatus();
-
- /**
- * Reads the status_word register
- * @return the register contents
- */
- uint16_t readStatusWord();
+ protected:
+ /** @copydoc UCD90xMonitor::formatGpioValues() */
+ void formatGpioValues(
+ const std::vector<int>& values, unsigned int numberLines,
+ std::map<std::string, std::string>& additionalData) const override;
};
} // namespace phosphor::power::sequencer