pseq: Move bus/addr higher in class hierarchy
Update the PowerSequencerDevice class hierarchy within the
phosphor-power-sequencer application.
The I2C bus and address for the power sequencer device(s) in the system
are now defined in the JSON configuration file.
Move the I2C bus and address properties to the top of the
PowerSequencerDevice class hierarchy.
For sub-classes that already had these properties, order the constructor
parameters to match the order in the JSON.
Tested:
* Ran automated test cases
Change-Id: Ida6886cbc62a9c8abd3bed294f6ddcd1851ccd62
Signed-off-by: Shawn McCarney <shawnmm@us.ibm.com>
diff --git a/phosphor-power-sequencer/src/pmbus_driver_device.hpp b/phosphor-power-sequencer/src/pmbus_driver_device.hpp
index 6823907..9e77626 100644
--- a/phosphor-power-sequencer/src/pmbus_driver_device.hpp
+++ b/phosphor-power-sequencer/src/pmbus_driver_device.hpp
@@ -54,18 +54,18 @@
* Constructor.
*
* @param name Device name
- * @param rails Voltage rails that are enabled and monitored by this device
- * @param services System services like hardware presence and the journal
* @param bus I2C bus for the device
* @param address I2C address for the device
+ * @param rails Voltage rails that are enabled and monitored by this device
+ * @param services System services like hardware presence and the journal
* @param driverName Device driver name
* @param instance Chip instance number
*/
explicit PMBusDriverDevice(
- const std::string& name, std::vector<std::unique_ptr<Rail>> rails,
- Services& services, uint8_t bus, uint16_t address,
+ const std::string& name, uint8_t bus, uint16_t address,
+ std::vector<std::unique_ptr<Rail>> rails, Services& services,
const std::string& driverName = "", size_t instance = 0) :
- StandardDevice(name, std::move(rails)), bus{bus}, address{address},
+ StandardDevice(name, bus, address, std::move(rails)),
driverName{driverName}, instance{instance}
{
pmbusInterface =
@@ -73,26 +73,6 @@
}
/**
- * Returns the I2C bus for the device.
- *
- * @return I2C bus
- */
- uint8_t getBus() const
- {
- return bus;
- }
-
- /**
- * Returns the I2C address for the device.
- *
- * @return I2C address
- */
- uint16_t getAddress() const
- {
- return address;
- }
-
- /**
* Returns the device driver name.
*
* @return driver name
@@ -222,16 +202,6 @@
const std::string& fileName);
/**
- * I2C bus for the device.
- */
- uint8_t bus;
-
- /**
- * I2C address for the device.
- */
- uint16_t address;
-
- /**
* Device driver name.
*/
std::string driverName;
diff --git a/phosphor-power-sequencer/src/power_control.cpp b/phosphor-power-sequencer/src/power_control.cpp
index c1d0079..fbf2d5f 100644
--- a/phosphor-power-sequencer/src/power_control.cpp
+++ b/phosphor-power-sequencer/src/power_control.cpp
@@ -398,14 +398,14 @@
if (deviceProperties->type == UCD90160Device::deviceName)
{
device = std::make_unique<UCD90160Device>(
- std::move(rails), services, deviceProperties->bus,
- deviceProperties->address);
+ deviceProperties->bus, deviceProperties->address,
+ std::move(rails), services);
}
else if (deviceProperties->type == UCD90320Device::deviceName)
{
device = std::make_unique<UCD90320Device>(
- std::move(rails), services, deviceProperties->bus,
- deviceProperties->address);
+ deviceProperties->bus, deviceProperties->address,
+ std::move(rails), services);
}
else
{
diff --git a/phosphor-power-sequencer/src/power_sequencer_device.hpp b/phosphor-power-sequencer/src/power_sequencer_device.hpp
index a133f41..b7907c0 100644
--- a/phosphor-power-sequencer/src/power_sequencer_device.hpp
+++ b/phosphor-power-sequencer/src/power_sequencer_device.hpp
@@ -52,6 +52,20 @@
virtual const std::string& getName() const = 0;
/**
+ * Returns the I2C bus for the device.
+ *
+ * @return I2C bus
+ */
+ virtual uint8_t getBus() const = 0;
+
+ /**
+ * Returns the I2C address for the device.
+ *
+ * @return I2C address
+ */
+ virtual uint16_t getAddress() const = 0;
+
+ /**
* Returns the voltage rails that are enabled and monitored by this device.
*
* @return voltage rails
diff --git a/phosphor-power-sequencer/src/standard_device.hpp b/phosphor-power-sequencer/src/standard_device.hpp
index 227e3bc..03a6bf0 100644
--- a/phosphor-power-sequencer/src/standard_device.hpp
+++ b/phosphor-power-sequencer/src/standard_device.hpp
@@ -19,6 +19,7 @@
#include "rail.hpp"
#include "services.hpp"
+#include <cstdint>
#include <map>
#include <memory>
#include <string>
@@ -53,11 +54,14 @@
* Constructor.
*
* @param name device name
+ * @param bus I2C bus for the device
+ * @param address I2C address for the device
* @param rails voltage rails that are enabled and monitored by this device
*/
- explicit StandardDevice(const std::string& name,
+ explicit StandardDevice(const std::string& name, uint8_t bus,
+ uint16_t address,
std::vector<std::unique_ptr<Rail>> rails) :
- name{name}, rails{std::move(rails)}
+ name{name}, bus{bus}, address{address}, rails{std::move(rails)}
{}
/** @copydoc PowerSequencerDevice::getName() */
@@ -66,6 +70,18 @@
return name;
}
+ /** @copydoc PowerSequencerDevice::getBus() */
+ virtual uint8_t getBus() const override
+ {
+ return bus;
+ }
+
+ /** @copydoc PowerSequencerDevice::getAddress() */
+ virtual uint16_t getAddress() const override
+ {
+ return address;
+ }
+
/** @copydoc PowerSequencerDevice::getRails() */
virtual const std::vector<std::unique_ptr<Rail>>& getRails() const override
{
@@ -173,6 +189,16 @@
std::string name{};
/**
+ * I2C bus for the device.
+ */
+ uint8_t bus;
+
+ /**
+ * I2C address for the device.
+ */
+ uint16_t address;
+
+ /**
* Voltage rails that are enabled and monitored by this device.
*/
std::vector<std::unique_ptr<Rail>> rails{};
diff --git a/phosphor-power-sequencer/src/ucd90160_device.hpp b/phosphor-power-sequencer/src/ucd90160_device.hpp
index 4b62766..fa7c5e9 100644
--- a/phosphor-power-sequencer/src/ucd90160_device.hpp
+++ b/phosphor-power-sequencer/src/ucd90160_device.hpp
@@ -48,14 +48,15 @@
/**
* Constructor.
*
- * @param rails Voltage rails that are enabled and monitored by this device
- * @param services System services like hardware presence and the journal
* @param bus I2C bus for the device
* @param address I2C address for the device
+ * @param rails Voltage rails that are enabled and monitored by this device
+ * @param services System services like hardware presence and the journal
*/
- explicit UCD90160Device(std::vector<std::unique_ptr<Rail>> rails,
- Services& services, uint8_t bus, uint16_t address) :
- UCD90xDevice(deviceName, std::move(rails), services, bus, address)
+ explicit UCD90160Device(uint8_t bus, uint16_t address,
+ std::vector<std::unique_ptr<Rail>> rails,
+ Services& services) :
+ UCD90xDevice(deviceName, bus, address, std::move(rails), services)
{}
constexpr static std::string deviceName{"UCD90160"};
diff --git a/phosphor-power-sequencer/src/ucd90320_device.hpp b/phosphor-power-sequencer/src/ucd90320_device.hpp
index c52c6ce..cadcbf6 100644
--- a/phosphor-power-sequencer/src/ucd90320_device.hpp
+++ b/phosphor-power-sequencer/src/ucd90320_device.hpp
@@ -48,14 +48,15 @@
/**
* Constructor.
*
- * @param rails Voltage rails that are enabled and monitored by this device
- * @param services System services like hardware presence and the journal
* @param bus I2C bus for the device
* @param address I2C address for the device
+ * @param rails Voltage rails that are enabled and monitored by this device
+ * @param services System services like hardware presence and the journal
*/
- explicit UCD90320Device(std::vector<std::unique_ptr<Rail>> rails,
- Services& services, uint8_t bus, uint16_t address) :
- UCD90xDevice(deviceName, std::move(rails), services, bus, address)
+ explicit UCD90320Device(uint8_t bus, uint16_t address,
+ std::vector<std::unique_ptr<Rail>> rails,
+ Services& services) :
+ UCD90xDevice(deviceName, bus, address, std::move(rails), services)
{}
constexpr static std::string deviceName{"UCD90320"};
diff --git a/phosphor-power-sequencer/src/ucd90x_device.hpp b/phosphor-power-sequencer/src/ucd90x_device.hpp
index f5044c8..45dd774 100644
--- a/phosphor-power-sequencer/src/ucd90x_device.hpp
+++ b/phosphor-power-sequencer/src/ucd90x_device.hpp
@@ -51,15 +51,16 @@
* Constructor.
*
* @param name Device name
- * @param rails Voltage rails that are enabled and monitored by this device
- * @param services System services like hardware presence and the journal
* @param bus I2C bus for the device
* @param address I2C address for the device
+ * @param rails Voltage rails that are enabled and monitored by this device
+ * @param services System services like hardware presence and the journal
*/
- explicit UCD90xDevice(const std::string& name,
+ explicit UCD90xDevice(const std::string& name, uint8_t bus,
+ uint16_t address,
std::vector<std::unique_ptr<Rail>> rails,
- Services& services, uint8_t bus, uint16_t address) :
- PMBusDriverDevice(name, std::move(rails), services, bus, address,
+ Services& services) :
+ PMBusDriverDevice(name, bus, address, std::move(rails), services,
driverName)
{}
diff --git a/phosphor-power-sequencer/test/mock_device.hpp b/phosphor-power-sequencer/test/mock_device.hpp
index 7140f65..7edd3ae 100644
--- a/phosphor-power-sequencer/test/mock_device.hpp
+++ b/phosphor-power-sequencer/test/mock_device.hpp
@@ -17,6 +17,8 @@
#include "power_sequencer_device.hpp"
+#include <cstdint>
+
#include <gmock/gmock.h>
namespace phosphor::power::sequencer
@@ -39,6 +41,8 @@
virtual ~MockDevice() = default;
MOCK_METHOD(const std::string&, getName, (), (const, override));
+ MOCK_METHOD(uint8_t, getBus, (), (const, override));
+ MOCK_METHOD(uint16_t, getAddress, (), (const, override));
MOCK_METHOD(const std::vector<std::unique_ptr<Rail>>&, getRails, (),
(const, override));
MOCK_METHOD(std::vector<int>, getGPIOValues, (Services & services),
diff --git a/phosphor-power-sequencer/test/pmbus_driver_device_tests.cpp b/phosphor-power-sequencer/test/pmbus_driver_device_tests.cpp
index 7cbb15d..b8598ca 100644
--- a/phosphor-power-sequencer/test/pmbus_driver_device_tests.cpp
+++ b/phosphor-power-sequencer/test/pmbus_driver_device_tests.cpp
@@ -112,20 +112,20 @@
MockServices services;
std::string name{"XYZ_PSEQ"};
+ uint8_t bus{3};
+ uint16_t address{0x72};
std::vector<std::unique_ptr<Rail>> rails;
rails.emplace_back(createRail("VDD", 5));
rails.emplace_back(createRail("VIO", 7));
- uint8_t bus{3};
- uint16_t address{0x72};
- PMBusDriverDevice device{name, std::move(rails), services, bus,
- address};
+ PMBusDriverDevice device{name, bus, address, std::move(rails),
+ services};
EXPECT_EQ(device.getName(), name);
+ EXPECT_EQ(device.getBus(), bus);
+ EXPECT_EQ(device.getAddress(), address);
EXPECT_EQ(device.getRails().size(), 2);
EXPECT_EQ(device.getRails()[0]->getName(), "VDD");
EXPECT_EQ(device.getRails()[1]->getName(), "VIO");
- EXPECT_EQ(device.getBus(), bus);
- EXPECT_EQ(device.getAddress(), address);
EXPECT_EQ(device.getDriverName(), "");
EXPECT_EQ(device.getInstance(), 0);
EXPECT_NE(&(device.getPMBusInterface()), nullptr);
@@ -136,65 +136,40 @@
MockServices services;
std::string name{"XYZ_PSEQ"};
+ uint8_t bus{3};
+ uint16_t address{0x72};
std::vector<std::unique_ptr<Rail>> rails;
rails.emplace_back(createRail("VDD", 5));
rails.emplace_back(createRail("VIO", 7));
- uint8_t bus{3};
- uint16_t address{0x72};
std::string driverName{"xyzdev"};
size_t instance{3};
- PMBusDriverDevice device{name, std::move(rails), services, bus,
- address, driverName, instance};
+ PMBusDriverDevice device{
+ name, bus, address, std::move(rails),
+ services, driverName, instance};
EXPECT_EQ(device.getName(), name);
+ EXPECT_EQ(device.getBus(), bus);
+ EXPECT_EQ(device.getAddress(), address);
EXPECT_EQ(device.getRails().size(), 2);
EXPECT_EQ(device.getRails()[0]->getName(), "VDD");
EXPECT_EQ(device.getRails()[1]->getName(), "VIO");
- EXPECT_EQ(device.getBus(), bus);
- EXPECT_EQ(device.getAddress(), address);
EXPECT_EQ(device.getDriverName(), driverName);
EXPECT_EQ(device.getInstance(), instance);
EXPECT_NE(&(device.getPMBusInterface()), nullptr);
}
}
-TEST_F(PMBusDriverDeviceTests, GetBus)
-{
- MockServices services;
-
- std::string name{"XYZ_PSEQ"};
- std::vector<std::unique_ptr<Rail>> rails;
- uint8_t bus{4};
- uint16_t address{0x72};
- PMBusDriverDevice device{name, std::move(rails), services, bus, address};
-
- EXPECT_EQ(device.getBus(), bus);
-}
-
-TEST_F(PMBusDriverDeviceTests, GetAddress)
-{
- MockServices services;
-
- std::string name{"XYZ_PSEQ"};
- std::vector<std::unique_ptr<Rail>> rails;
- uint8_t bus{3};
- uint16_t address{0xab};
- PMBusDriverDevice device{name, std::move(rails), services, bus, address};
-
- EXPECT_EQ(device.getAddress(), address);
-}
-
TEST_F(PMBusDriverDeviceTests, GetDriverName)
{
MockServices services;
std::string name{"XYZ_PSEQ"};
- std::vector<std::unique_ptr<Rail>> rails;
uint8_t bus{3};
uint16_t address{0x72};
+ std::vector<std::unique_ptr<Rail>> rails;
std::string driverName{"xyzdev"};
- PMBusDriverDevice device{name, std::move(rails), services,
- bus, address, driverName};
+ PMBusDriverDevice device{name, bus, address, std::move(rails),
+ services, driverName};
EXPECT_EQ(device.getDriverName(), driverName);
}
@@ -204,13 +179,13 @@
MockServices services;
std::string name{"XYZ_PSEQ"};
- std::vector<std::unique_ptr<Rail>> rails;
uint8_t bus{3};
uint16_t address{0x72};
+ std::vector<std::unique_ptr<Rail>> rails;
std::string driverName{"xyzdev"};
size_t instance{3};
- PMBusDriverDevice device{name, std::move(rails), services, bus,
- address, driverName, instance};
+ PMBusDriverDevice device{name, bus, address, std::move(rails),
+ services, driverName, instance};
EXPECT_EQ(device.getInstance(), instance);
}
@@ -220,10 +195,10 @@
MockServices services;
std::string name{"XYZ_PSEQ"};
- std::vector<std::unique_ptr<Rail>> rails;
uint8_t bus{3};
uint16_t address{0x72};
- PMBusDriverDevice device{name, std::move(rails), services, bus, address};
+ std::vector<std::unique_ptr<Rail>> rails;
+ PMBusDriverDevice device{name, bus, address, std::move(rails), services};
EXPECT_NE(&(device.getPMBusInterface()), nullptr);
}
@@ -239,11 +214,11 @@
.WillOnce(Return(gpioValues));
std::string name{"ABC_382%#, ZY"};
- std::vector<std::unique_ptr<Rail>> rails;
uint8_t bus{3};
uint16_t address{0x72};
- PMBusDriverDevice device{name, std::move(rails), services, bus,
- address};
+ std::vector<std::unique_ptr<Rail>> rails;
+ PMBusDriverDevice device{name, bus, address, std::move(rails),
+ services};
EXPECT_TRUE(device.getGPIOValues(services) == gpioValues);
}
@@ -257,11 +232,11 @@
Throw(std::runtime_error{"libgpiod: Unable to open chip"}));
std::string name{"XYZ_PSEQ"};
- std::vector<std::unique_ptr<Rail>> rails;
uint8_t bus{3};
uint16_t address{0x72};
- PMBusDriverDevice device{name, std::move(rails), services, bus,
- address};
+ std::vector<std::unique_ptr<Rail>> rails;
+ PMBusDriverDevice device{name, bus, address, std::move(rails),
+ services};
try
{
@@ -285,11 +260,11 @@
MockServices services;
std::string name{"xyz_pseq"};
- std::vector<std::unique_ptr<Rail>> rails;
uint8_t bus{3};
uint16_t address{0x72};
- PMBusDriverDevice device{name, std::move(rails), services, bus,
- address};
+ std::vector<std::unique_ptr<Rail>> rails;
+ PMBusDriverDevice device{name, bus, address, std::move(rails),
+ services};
MockPMBus& pmbus = static_cast<MockPMBus&>(device.getPMBusInterface());
EXPECT_CALL(pmbus, read("status13", Type::Debug, true))
@@ -305,11 +280,11 @@
MockServices services;
std::string name{"xyz_pseq"};
- std::vector<std::unique_ptr<Rail>> rails;
uint8_t bus{3};
uint16_t address{0x72};
- PMBusDriverDevice device{name, std::move(rails), services, bus,
- address};
+ std::vector<std::unique_ptr<Rail>> rails;
+ PMBusDriverDevice device{name, bus, address, std::move(rails),
+ services};
MockPMBus& pmbus = static_cast<MockPMBus&>(device.getPMBusInterface());
EXPECT_CALL(pmbus, read("status0", Type::Debug, true))
@@ -339,11 +314,11 @@
MockServices services;
std::string name{"xyz_pseq"};
- std::vector<std::unique_ptr<Rail>> rails;
uint8_t bus{3};
uint16_t address{0x72};
- PMBusDriverDevice device{name, std::move(rails), services, bus,
- address};
+ std::vector<std::unique_ptr<Rail>> rails;
+ PMBusDriverDevice device{name, bus, address, std::move(rails),
+ services};
MockPMBus& pmbus = static_cast<MockPMBus&>(device.getPMBusInterface());
EXPECT_CALL(pmbus, read("status13_vout", Type::Debug, true))
@@ -359,11 +334,11 @@
MockServices services;
std::string name{"xyz_pseq"};
- std::vector<std::unique_ptr<Rail>> rails;
uint8_t bus{3};
uint16_t address{0x72};
- PMBusDriverDevice device{name, std::move(rails), services, bus,
- address};
+ std::vector<std::unique_ptr<Rail>> rails;
+ PMBusDriverDevice device{name, bus, address, std::move(rails),
+ services};
MockPMBus& pmbus = static_cast<MockPMBus&>(device.getPMBusInterface());
EXPECT_CALL(pmbus, read("status0_vout", Type::Debug, true))
@@ -396,11 +371,11 @@
MockServices services;
std::string name{"xyz_pseq"};
- std::vector<std::unique_ptr<Rail>> rails;
uint8_t bus{3};
uint16_t address{0x72};
- PMBusDriverDevice device{name, std::move(rails), services, bus,
- address};
+ std::vector<std::unique_ptr<Rail>> rails;
+ PMBusDriverDevice device{name, bus, address, std::move(rails),
+ services};
MockPMBus& pmbus = static_cast<MockPMBus&>(device.getPMBusInterface());
EXPECT_CALL(pmbus, getPath(Type::Hwmon))
@@ -425,11 +400,11 @@
MockServices services;
std::string name{"xyz_pseq"};
- std::vector<std::unique_ptr<Rail>> rails;
uint8_t bus{3};
uint16_t address{0x72};
- PMBusDriverDevice device{name, std::move(rails), services, bus,
- address};
+ std::vector<std::unique_ptr<Rail>> rails;
+ PMBusDriverDevice device{name, bus, address, std::move(rails),
+ services};
MockPMBus& pmbus = static_cast<MockPMBus&>(device.getPMBusInterface());
EXPECT_CALL(pmbus, getPath(Type::Hwmon))
@@ -465,11 +440,11 @@
MockServices services;
std::string name{"xyz_pseq"};
- std::vector<std::unique_ptr<Rail>> rails;
uint8_t bus{3};
uint16_t address{0x72};
- PMBusDriverDevice device{name, std::move(rails), services, bus,
- address};
+ std::vector<std::unique_ptr<Rail>> rails;
+ PMBusDriverDevice device{name, bus, address, std::move(rails),
+ services};
MockPMBus& pmbus = static_cast<MockPMBus&>(device.getPMBusInterface());
EXPECT_CALL(pmbus, getPath(Type::Hwmon))
@@ -494,11 +469,11 @@
MockServices services;
std::string name{"xyz_pseq"};
- std::vector<std::unique_ptr<Rail>> rails;
uint8_t bus{3};
uint16_t address{0x72};
- PMBusDriverDevice device{name, std::move(rails), services, bus,
- address};
+ std::vector<std::unique_ptr<Rail>> rails;
+ PMBusDriverDevice device{name, bus, address, std::move(rails),
+ services};
MockPMBus& pmbus = static_cast<MockPMBus&>(device.getPMBusInterface());
EXPECT_CALL(pmbus, getPath(Type::Hwmon))
@@ -539,11 +514,11 @@
MockServices services;
std::string name{"xyz_pseq"};
- std::vector<std::unique_ptr<Rail>> rails;
uint8_t bus{3};
uint16_t address{0x72};
- PMBusDriverDevice device{name, std::move(rails), services, bus,
- address};
+ std::vector<std::unique_ptr<Rail>> rails;
+ PMBusDriverDevice device{name, bus, address, std::move(rails),
+ services};
MockPMBus& pmbus = static_cast<MockPMBus&>(device.getPMBusInterface());
EXPECT_CALL(pmbus, getPath(Type::Hwmon))
@@ -572,11 +547,11 @@
MockServices services;
std::string name{"xyz_pseq"};
- std::vector<std::unique_ptr<Rail>> rails;
uint8_t bus{3};
uint16_t address{0x72};
- PMBusDriverDevice device{name, std::move(rails), services, bus,
- address};
+ std::vector<std::unique_ptr<Rail>> rails;
+ PMBusDriverDevice device{name, bus, address, std::move(rails),
+ services};
MockPMBus& pmbus = static_cast<MockPMBus&>(device.getPMBusInterface());
EXPECT_CALL(pmbus, getPath(Type::Hwmon))
@@ -614,11 +589,11 @@
MockServices services;
std::string name{"xyz_pseq"};
- std::vector<std::unique_ptr<Rail>> rails;
uint8_t bus{3};
uint16_t address{0x72};
- PMBusDriverDevice device{name, std::move(rails), services, bus,
- address};
+ std::vector<std::unique_ptr<Rail>> rails;
+ PMBusDriverDevice device{name, bus, address, std::move(rails),
+ services};
MockPMBus& pmbus = static_cast<MockPMBus&>(device.getPMBusInterface());
EXPECT_CALL(pmbus, getPath(Type::Hwmon))
@@ -636,11 +611,11 @@
MockServices services;
std::string name{"xyz_pseq"};
- std::vector<std::unique_ptr<Rail>> rails;
uint8_t bus{3};
uint16_t address{0x72};
- PMBusDriverDevice device{name, std::move(rails), services, bus,
- address};
+ std::vector<std::unique_ptr<Rail>> rails;
+ PMBusDriverDevice device{name, bus, address, std::move(rails),
+ services};
MockPMBus& pmbus = static_cast<MockPMBus&>(device.getPMBusInterface());
EXPECT_CALL(pmbus, getPath(Type::Hwmon))
@@ -666,11 +641,11 @@
MockServices services;
std::string name{"xyz_pseq"};
- std::vector<std::unique_ptr<Rail>> rails;
uint8_t bus{3};
uint16_t address{0x72};
- PMBusDriverDevice device{name, std::move(rails), services, bus,
- address};
+ std::vector<std::unique_ptr<Rail>> rails;
+ PMBusDriverDevice device{name, bus, address, std::move(rails),
+ services};
MockPMBus& pmbus = static_cast<MockPMBus&>(device.getPMBusInterface());
EXPECT_CALL(pmbus, getPath(Type::Hwmon))
@@ -704,11 +679,11 @@
MockServices services;
std::string name{"xyz_pseq"};
- std::vector<std::unique_ptr<Rail>> rails;
uint8_t bus{3};
uint16_t address{0x72};
- PMBusDriverDevice device{name, std::move(rails), services, bus,
- address};
+ std::vector<std::unique_ptr<Rail>> rails;
+ PMBusDriverDevice device{name, bus, address, std::move(rails),
+ services};
MockPMBus& pmbus = static_cast<MockPMBus&>(device.getPMBusInterface());
EXPECT_CALL(pmbus, getPath(Type::Hwmon))
@@ -739,11 +714,11 @@
MockServices services;
std::string name{"xyz_pseq"};
- std::vector<std::unique_ptr<Rail>> rails;
uint8_t bus{3};
uint16_t address{0x72};
- PMBusDriverDevice device{name, std::move(rails), services, bus,
- address};
+ std::vector<std::unique_ptr<Rail>> rails;
+ PMBusDriverDevice device{name, bus, address, std::move(rails),
+ services};
MockPMBus& pmbus = static_cast<MockPMBus&>(device.getPMBusInterface());
EXPECT_CALL(pmbus, getPath(Type::Hwmon))
@@ -786,10 +761,10 @@
.WillOnce(Return(gpioValues));
std::string name{"xyz_pseq"};
- std::vector<std::unique_ptr<Rail>> rails;
uint8_t bus{3};
uint16_t address{0x72};
- PMBusDriverDevice device{name, std::move(rails), services, bus, address};
+ std::vector<std::unique_ptr<Rail>> rails;
+ PMBusDriverDevice device{name, bus, address, std::move(rails), services};
// Methods that get hwmon file info should be called twice
MockPMBus& pmbus = static_cast<MockPMBus&>(device.getPMBusInterface());
diff --git a/phosphor-power-sequencer/test/standard_device_tests.cpp b/phosphor-power-sequencer/test/standard_device_tests.cpp
index 266b7b3..cf4c90c 100644
--- a/phosphor-power-sequencer/test/standard_device_tests.cpp
+++ b/phosphor-power-sequencer/test/standard_device_tests.cpp
@@ -60,9 +60,10 @@
virtual ~StandardDeviceImpl() = default;
// Constructor just calls StandardDevice constructor
- explicit StandardDeviceImpl(const std::string& name,
+ explicit StandardDeviceImpl(const std::string& name, uint8_t bus,
+ uint16_t address,
std::vector<std::unique_ptr<Rail>> rails) :
- StandardDevice(name, std::move(rails))
+ StandardDevice(name, bus, address, std::move(rails))
{}
// Mock pure virtual methods
@@ -146,22 +147,32 @@
{
// Empty vector of rails
{
+ std::string name{"xyz_pseq"};
+ uint8_t bus{3};
+ uint16_t address{0x72};
std::vector<std::unique_ptr<Rail>> rails{};
- StandardDeviceImpl device{"xyz_pseq", std::move(rails)};
+ StandardDeviceImpl device{name, bus, address, std::move(rails)};
- EXPECT_EQ(device.getName(), "xyz_pseq");
+ EXPECT_EQ(device.getName(), name);
+ EXPECT_EQ(device.getBus(), bus);
+ EXPECT_EQ(device.getAddress(), address);
EXPECT_TRUE(device.getRails().empty());
}
// Non-empty vector of rails
{
+ std::string name{"abc_pseq"};
+ uint8_t bus{0};
+ uint16_t address{0x23};
std::vector<std::unique_ptr<Rail>> rails{};
rails.emplace_back(createRailGPIO("PSU", true, 3));
rails.emplace_back(createRailOutputVoltage("VDD", false, 5));
rails.emplace_back(createRailStatusVout("VIO", false, 7));
- StandardDeviceImpl device{"abc_pseq", std::move(rails)};
+ StandardDeviceImpl device{name, bus, address, std::move(rails)};
- EXPECT_EQ(device.getName(), "abc_pseq");
+ EXPECT_EQ(device.getName(), name);
+ EXPECT_EQ(device.getBus(), bus);
+ EXPECT_EQ(device.getAddress(), address);
EXPECT_EQ(device.getRails().size(), 3);
EXPECT_EQ(device.getRails()[0]->getName(), "PSU");
EXPECT_EQ(device.getRails()[1]->getName(), "VDD");
@@ -171,29 +182,60 @@
TEST(StandardDeviceTests, GetName)
{
+ std::string name{"xyz_pseq"};
+ uint8_t bus{0};
+ uint16_t address{0x23};
std::vector<std::unique_ptr<Rail>> rails{};
- StandardDeviceImpl device{"xyz_pseq", std::move(rails)};
+ StandardDeviceImpl device{name, bus, address, std::move(rails)};
- EXPECT_EQ(device.getName(), "xyz_pseq");
+ EXPECT_EQ(device.getName(), name);
+}
+
+TEST(StandardDeviceTests, GetBus)
+{
+ std::string name{"abc_pseq"};
+ uint8_t bus{1};
+ uint16_t address{0x23};
+ std::vector<std::unique_ptr<Rail>> rails{};
+ StandardDeviceImpl device{name, bus, address, std::move(rails)};
+
+ EXPECT_EQ(device.getBus(), bus);
+}
+
+TEST(StandardDeviceTests, GetAddress)
+{
+ std::string name{"abc_pseq"};
+ uint8_t bus{1};
+ uint16_t address{0x24};
+ std::vector<std::unique_ptr<Rail>> rails{};
+ StandardDeviceImpl device{name, bus, address, std::move(rails)};
+
+ EXPECT_EQ(device.getAddress(), address);
}
TEST(StandardDeviceTests, GetRails)
{
// Empty vector of rails
{
+ std::string name{"xyz_pseq"};
+ uint8_t bus{0};
+ uint16_t address{0x23};
std::vector<std::unique_ptr<Rail>> rails{};
- StandardDeviceImpl device{"xyz_pseq", std::move(rails)};
+ StandardDeviceImpl device{name, bus, address, std::move(rails)};
EXPECT_TRUE(device.getRails().empty());
}
// Non-empty vector of rails
{
+ std::string name{"abc_pseq"};
+ uint8_t bus{0};
+ uint16_t address{0x23};
std::vector<std::unique_ptr<Rail>> rails{};
rails.emplace_back(createRailGPIO("PSU", true, 3));
rails.emplace_back(createRailOutputVoltage("VDD", false, 5));
rails.emplace_back(createRailStatusVout("VIO", false, 7));
- StandardDeviceImpl device{"abc_pseq", std::move(rails)};
+ StandardDeviceImpl device{name, bus, address, std::move(rails)};
EXPECT_EQ(device.getRails().size(), 3);
EXPECT_EQ(device.getRails()[0]->getName(), "PSU");
@@ -206,11 +248,14 @@
{
// No rail has a pgood fault
{
+ std::string name{"abc_pseq"};
+ uint8_t bus{0};
+ uint16_t address{0x23};
std::vector<std::unique_ptr<Rail>> rails{};
rails.emplace_back(createRailGPIO("PSU", true, 2));
rails.emplace_back(createRailOutputVoltage("VDD", false, 5));
rails.emplace_back(createRailStatusVout("VIO", false, 7));
- StandardDeviceImpl device{"abc_pseq", std::move(rails)};
+ StandardDeviceImpl device{name, bus, address, std::move(rails)};
EXPECT_CALL(device, prepareForPgoodFaultDetection).Times(1);
std::vector<int> gpioValues{1, 1, 1};
@@ -236,11 +281,14 @@
// First rail has a pgood fault detected via GPIO
// Is a PSU rail: No PSU error specified
{
+ std::string name{"abc_pseq"};
+ uint8_t bus{0};
+ uint16_t address{0x23};
std::vector<std::unique_ptr<Rail>> rails{};
rails.emplace_back(createRailGPIO("PSU", true, 2));
rails.emplace_back(createRailOutputVoltage("VDD", false, 5));
rails.emplace_back(createRailStatusVout("VIO", false, 7));
- StandardDeviceImpl device{"abc_pseq", std::move(rails)};
+ StandardDeviceImpl device{name, bus, address, std::move(rails)};
EXPECT_CALL(device, prepareForPgoodFaultDetection).Times(1);
std::vector<int> gpioValues{1, 1, 0};
@@ -285,11 +333,14 @@
// First rail has a pgood fault detected via GPIO
// Is a PSU rail: PSU error specified
{
+ std::string name{"abc_pseq"};
+ uint8_t bus{0};
+ uint16_t address{0x23};
std::vector<std::unique_ptr<Rail>> rails{};
rails.emplace_back(createRailGPIO("PSU", true, 2));
rails.emplace_back(createRailOutputVoltage("VDD", false, 5));
rails.emplace_back(createRailStatusVout("VIO", false, 7));
- StandardDeviceImpl device{"abc_pseq", std::move(rails)};
+ StandardDeviceImpl device{name, bus, address, std::move(rails)};
EXPECT_CALL(device, prepareForPgoodFaultDetection).Times(1);
std::vector<int> gpioValues{1, 1, 0};
@@ -333,11 +384,14 @@
// Second rail has a pgood fault detected via output voltage
// Not a PSU rail: PSU error specified
{
+ std::string name{"abc_pseq"};
+ uint8_t bus{0};
+ uint16_t address{0x23};
std::vector<std::unique_ptr<Rail>> rails{};
rails.emplace_back(createRailGPIO("PSU", true, 2));
rails.emplace_back(createRailOutputVoltage("VDD", false, 5));
rails.emplace_back(createRailStatusVout("VIO", false, 7));
- StandardDeviceImpl device{"abc_pseq", std::move(rails)};
+ StandardDeviceImpl device{name, bus, address, std::move(rails)};
EXPECT_CALL(device, prepareForPgoodFaultDetection).Times(1);
std::vector<int> gpioValues{1, 1, 1};
@@ -389,11 +443,14 @@
// Device returns 0 GPIO values
// Does not halt pgood fault detection because GPIO values not used by rails
{
+ std::string name{"abc_pseq"};
+ uint8_t bus{0};
+ uint16_t address{0x23};
std::vector<std::unique_ptr<Rail>> rails{};
rails.emplace_back(createRailStatusVout("PSU", true, 3));
rails.emplace_back(createRailOutputVoltage("VDD", false, 5));
rails.emplace_back(createRailStatusVout("VIO", false, 7));
- StandardDeviceImpl device{"abc_pseq", std::move(rails)};
+ StandardDeviceImpl device{name, bus, address, std::move(rails)};
EXPECT_CALL(device, prepareForPgoodFaultDetection).Times(1);
std::vector<int> gpioValues{};
@@ -438,11 +495,14 @@
// Exception occurs trying to obtain GPIO values from device
// Does not halt pgood fault detection because GPIO values not used by rails
{
+ std::string name{"abc_pseq"};
+ uint8_t bus{0};
+ uint16_t address{0x23};
std::vector<std::unique_ptr<Rail>> rails{};
rails.emplace_back(createRailStatusVout("PSU", true, 3));
rails.emplace_back(createRailOutputVoltage("VDD", false, 5));
rails.emplace_back(createRailStatusVout("VIO", false, 7));
- StandardDeviceImpl device{"abc_pseq", std::move(rails)};
+ StandardDeviceImpl device{name, bus, address, std::move(rails)};
EXPECT_CALL(device, prepareForPgoodFaultDetection).Times(1);
EXPECT_CALL(device, getGPIOValues)
@@ -486,11 +546,14 @@
// selected, even though it is last in the power on sequence, because it is
// checked using STATUS_VOUT. That check happens before the other checks.
{
+ std::string name{"abc_pseq"};
+ uint8_t bus{0};
+ uint16_t address{0x23};
std::vector<std::unique_ptr<Rail>> rails{};
rails.emplace_back(createRailGPIO("PSU", true, 2));
rails.emplace_back(createRailGPIO("VDD", false, 1));
rails.emplace_back(createRailStatusVout("VIO", false, 7));
- StandardDeviceImpl device{"abc_pseq", std::move(rails)};
+ StandardDeviceImpl device{name, bus, address, std::move(rails)};
EXPECT_CALL(device, prepareForPgoodFaultDetection).Times(1);
std::vector<int> gpioValues{0, 0, 0};
@@ -536,11 +599,14 @@
// and one is found via a GPIO. Verify the first rail in the sequence with
// a fault is selected.
{
+ std::string name{"abc_pseq"};
+ uint8_t bus{0};
+ uint16_t address{0x23};
std::vector<std::unique_ptr<Rail>> rails{};
rails.emplace_back(createRailStatusVout("VIO", false, 7));
rails.emplace_back(createRailOutputVoltage("VDD", false, 5));
rails.emplace_back(createRailGPIO("PSU", true, 2));
- StandardDeviceImpl device{"abc_pseq", std::move(rails)};
+ StandardDeviceImpl device{name, bus, address, std::move(rails)};
EXPECT_CALL(device, prepareForPgoodFaultDetection).Times(1);
std::vector<int> gpioValues{1, 1, 0};
@@ -590,11 +656,14 @@
// Exception is thrown during pgood fault detection
{
+ std::string name{"abc_pseq"};
+ uint8_t bus{0};
+ uint16_t address{0x23};
std::vector<std::unique_ptr<Rail>> rails{};
rails.emplace_back(createRailGPIO("PSU", true, 2));
rails.emplace_back(createRailOutputVoltage("VDD", false, 5));
rails.emplace_back(createRailStatusVout("VIO", false, 7));
- StandardDeviceImpl device{"abc_pseq", std::move(rails)};
+ StandardDeviceImpl device{name, bus, address, std::move(rails)};
EXPECT_CALL(device, prepareForPgoodFaultDetection).Times(1);
std::vector<int> gpioValues{1, 1, 1};
diff --git a/phosphor-power-sequencer/test/ucd90160_device_tests.cpp b/phosphor-power-sequencer/test/ucd90160_device_tests.cpp
index d7c1885..1975e25 100644
--- a/phosphor-power-sequencer/test/ucd90160_device_tests.cpp
+++ b/phosphor-power-sequencer/test/ucd90160_device_tests.cpp
@@ -62,19 +62,19 @@
{
MockServices services;
+ uint8_t bus{3};
+ uint16_t address{0x72};
std::vector<std::unique_ptr<Rail>> rails;
rails.emplace_back(createRail("VDD", 5));
rails.emplace_back(createRail("VIO", 7));
- uint8_t bus{3};
- uint16_t address{0x72};
- UCD90160Device device{std::move(rails), services, bus, address};
+ UCD90160Device device{bus, address, std::move(rails), services};
EXPECT_EQ(device.getName(), "UCD90160");
+ EXPECT_EQ(device.getBus(), bus);
+ EXPECT_EQ(device.getAddress(), address);
EXPECT_EQ(device.getRails().size(), 2);
EXPECT_EQ(device.getRails()[0]->getName(), "VDD");
EXPECT_EQ(device.getRails()[1]->getName(), "VIO");
- EXPECT_EQ(device.getBus(), bus);
- EXPECT_EQ(device.getAddress(), address);
EXPECT_EQ(device.getDriverName(), "ucd9000");
EXPECT_EQ(device.getInstance(), 0);
EXPECT_NE(&(device.getPMBusInterface()), nullptr);
@@ -148,11 +148,11 @@
"Rail VDD pgood GPIO line offset 2 has inactive value 0"))
.Times(1);
- std::vector<std::unique_ptr<Rail>> rails;
- rails.emplace_back(createRail("VDD", 2));
uint8_t bus{3};
uint16_t address{0x72};
- UCD90160Device device{std::move(rails), services, bus, address};
+ std::vector<std::unique_ptr<Rail>> rails;
+ rails.emplace_back(createRail("VDD", 2));
+ UCD90160Device device{bus, address, std::move(rails), services};
MockPMBus& pmbus = static_cast<MockPMBus&>(device.getPMBusInterface());
EXPECT_CALL(pmbus, getPath(Type::Hwmon))
@@ -245,11 +245,11 @@
"Rail VDD pgood GPIO line offset 2 has inactive value 0"))
.Times(1);
- std::vector<std::unique_ptr<Rail>> rails;
- rails.emplace_back(createRail("VDD", 2));
uint8_t bus{3};
uint16_t address{0x72};
- UCD90160Device device{std::move(rails), services, bus, address};
+ std::vector<std::unique_ptr<Rail>> rails;
+ rails.emplace_back(createRail("VDD", 2));
+ UCD90160Device device{bus, address, std::move(rails), services};
MockPMBus& pmbus = static_cast<MockPMBus&>(device.getPMBusInterface());
EXPECT_CALL(pmbus, getPath(Type::Hwmon))
diff --git a/phosphor-power-sequencer/test/ucd90320_device_tests.cpp b/phosphor-power-sequencer/test/ucd90320_device_tests.cpp
index 951bd82..182a410 100644
--- a/phosphor-power-sequencer/test/ucd90320_device_tests.cpp
+++ b/phosphor-power-sequencer/test/ucd90320_device_tests.cpp
@@ -62,19 +62,19 @@
{
MockServices services;
+ uint8_t bus{3};
+ uint16_t address{0x72};
std::vector<std::unique_ptr<Rail>> rails;
rails.emplace_back(createRail("VDD", 5));
rails.emplace_back(createRail("VIO", 7));
- uint8_t bus{3};
- uint16_t address{0x72};
- UCD90320Device device{std::move(rails), services, bus, address};
+ UCD90320Device device{bus, address, std::move(rails), services};
EXPECT_EQ(device.getName(), "UCD90320");
+ EXPECT_EQ(device.getBus(), bus);
+ EXPECT_EQ(device.getAddress(), address);
EXPECT_EQ(device.getRails().size(), 2);
EXPECT_EQ(device.getRails()[0]->getName(), "VDD");
EXPECT_EQ(device.getRails()[1]->getName(), "VIO");
- EXPECT_EQ(device.getBus(), bus);
- EXPECT_EQ(device.getAddress(), address);
EXPECT_EQ(device.getDriverName(), "ucd9000");
EXPECT_EQ(device.getInstance(), 0);
EXPECT_NE(&(device.getPMBusInterface()), nullptr);
@@ -140,11 +140,11 @@
"Rail VDD pgood GPIO line offset 2 has inactive value 0"))
.Times(1);
- std::vector<std::unique_ptr<Rail>> rails;
- rails.emplace_back(createRail("VDD", 2));
uint8_t bus{3};
uint16_t address{0x72};
- UCD90320Device device{std::move(rails), services, bus, address};
+ std::vector<std::unique_ptr<Rail>> rails;
+ rails.emplace_back(createRail("VDD", 2));
+ UCD90320Device device{bus, address, std::move(rails), services};
MockPMBus& pmbus = static_cast<MockPMBus&>(device.getPMBusInterface());
EXPECT_CALL(pmbus, getPath(Type::Hwmon))
@@ -228,11 +228,11 @@
"Rail VDD pgood GPIO line offset 2 has inactive value 0"))
.Times(1);
- std::vector<std::unique_ptr<Rail>> rails;
- rails.emplace_back(createRail("VDD", 2));
uint8_t bus{3};
uint16_t address{0x72};
- UCD90320Device device{std::move(rails), services, bus, address};
+ std::vector<std::unique_ptr<Rail>> rails;
+ rails.emplace_back(createRail("VDD", 2));
+ UCD90320Device device{bus, address, std::move(rails), services};
MockPMBus& pmbus = static_cast<MockPMBus&>(device.getPMBusInterface());
EXPECT_CALL(pmbus, getPath(Type::Hwmon))
diff --git a/phosphor-power-sequencer/test/ucd90x_device_tests.cpp b/phosphor-power-sequencer/test/ucd90x_device_tests.cpp
index 2571e9b..5212d65 100644
--- a/phosphor-power-sequencer/test/ucd90x_device_tests.cpp
+++ b/phosphor-power-sequencer/test/ucd90x_device_tests.cpp
@@ -65,19 +65,19 @@
MockServices services;
std::string name{"ucd90320"};
+ uint8_t bus{3};
+ uint16_t address{0x72};
std::vector<std::unique_ptr<Rail>> rails;
rails.emplace_back(createRail("VDD", 5));
rails.emplace_back(createRail("VIO", 7));
- uint8_t bus{3};
- uint16_t address{0x72};
- UCD90xDevice device{name, std::move(rails), services, bus, address};
+ UCD90xDevice device{name, bus, address, std::move(rails), services};
EXPECT_EQ(device.getName(), name);
+ EXPECT_EQ(device.getBus(), bus);
+ EXPECT_EQ(device.getAddress(), address);
EXPECT_EQ(device.getRails().size(), 2);
EXPECT_EQ(device.getRails()[0]->getName(), "VDD");
EXPECT_EQ(device.getRails()[1]->getName(), "VIO");
- EXPECT_EQ(device.getBus(), bus);
- EXPECT_EQ(device.getAddress(), address);
EXPECT_EQ(device.getDriverName(), "ucd9000");
EXPECT_EQ(device.getInstance(), 0);
EXPECT_NE(&(device.getPMBusInterface()), nullptr);
@@ -90,10 +90,10 @@
MockServices services;
std::string name{"ucd90320"};
- std::vector<std::unique_ptr<Rail>> rails;
uint8_t bus{3};
uint16_t address{0x72};
- UCD90xDevice device{name, std::move(rails), services, bus, address};
+ std::vector<std::unique_ptr<Rail>> rails;
+ UCD90xDevice device{name, bus, address, std::move(rails), services};
MockPMBus& pmbus = static_cast<MockPMBus&>(device.getPMBusInterface());
uint64_t mfrStatus{0x123456789abcull};
@@ -109,10 +109,10 @@
MockServices services;
std::string name{"ucd90320"};
- std::vector<std::unique_ptr<Rail>> rails;
uint8_t bus{3};
uint16_t address{0x72};
- UCD90xDevice device{name, std::move(rails), services, bus, address};
+ std::vector<std::unique_ptr<Rail>> rails;
+ UCD90xDevice device{name, bus, address, std::move(rails), services};
MockPMBus& pmbus = static_cast<MockPMBus&>(device.getPMBusInterface());
EXPECT_CALL(pmbus, read("mfr_status", Type::HwmonDeviceDebug, true))
@@ -165,11 +165,11 @@
.Times(1);
std::string name{"ucd90320"};
- std::vector<std::unique_ptr<Rail>> rails;
- rails.emplace_back(createRail("VDD", 2));
uint8_t bus{3};
uint16_t address{0x72};
- UCD90xDevice device{name, std::move(rails), services, bus, address};
+ std::vector<std::unique_ptr<Rail>> rails;
+ rails.emplace_back(createRail("VDD", 2));
+ UCD90xDevice device{name, bus, address, std::move(rails), services};
MockPMBus& pmbus = static_cast<MockPMBus&>(device.getPMBusInterface());
EXPECT_CALL(pmbus, getPath(Type::Hwmon))
@@ -219,11 +219,11 @@
.Times(1);
std::string name{"ucd90320"};
- std::vector<std::unique_ptr<Rail>> rails;
- rails.emplace_back(createRail("VDD", 2));
uint8_t bus{3};
uint16_t address{0x72};
- UCD90xDevice device{name, std::move(rails), services, bus, address};
+ std::vector<std::unique_ptr<Rail>> rails;
+ rails.emplace_back(createRail("VDD", 2));
+ UCD90xDevice device{name, bus, address, std::move(rails), services};
MockPMBus& pmbus = static_cast<MockPMBus&>(device.getPMBusInterface());
EXPECT_CALL(pmbus, getPath(Type::Hwmon))