diff options
author | Ed Tanous <ed@tanous.net> | 2021-07-31 01:20:11 +0300 |
---|---|---|
committer | Ed Tanous <ed@tanous.net> | 2022-12-12 23:03:53 +0300 |
commit | 7ba6171bf57405008aeea92acabedb2588d7da29 (patch) | |
tree | e3db5087ac05af7d9defb4a3c5b79793ac25d832 /meta-amd | |
parent | 502b40043e3dde083122dff8402979db6240a1c3 (diff) | |
download | openbmc-7ba6171bf57405008aeea92acabedb2588d7da29.tar.xz |
Remove patches against OpenBMC projects
It's not clear why these patches were added in this manner, but they
can't really remain here from a maintenance perspective. Pinning one
platform on an old version of x86-power-control, as well as setting a
specific patch means that it's impossible for people to test and use
upstream code with it. It is also explicitly called out as item #1 on
the meta layer guidelines for this reason:
https://github.com/openbmc/docs/blob/master/meta-layer-guidelines.md
To the maintainters of this meta layer, please work with Jason and Kwin
(the x86-power-control maintainers) to get your features accounted for
in the normal build, adding build flags and configuration entries where
appropriate.
Tested:
This almost certainly breaks power control on ethanolx, but given the
way this patch was merged, there's really no way to avoid that.
Signed-off-by: Ed Tanous <ed@tanous.net>
Change-Id: I1f6a40e5b01c36441ff8d66e8e73265e0e009a4f
Diffstat (limited to 'meta-amd')
2 files changed, 0 insertions, 823 deletions
diff --git a/meta-amd/meta-ethanolx/recipes-x86/chassis/x86-power-control/0001-Amd-power-control-modifications-for-EthanolX.patch b/meta-amd/meta-ethanolx/recipes-x86/chassis/x86-power-control/0001-Amd-power-control-modifications-for-EthanolX.patch deleted file mode 100644 index dc1b7bc21d..0000000000 --- a/meta-amd/meta-ethanolx/recipes-x86/chassis/x86-power-control/0001-Amd-power-control-modifications-for-EthanolX.patch +++ /dev/null @@ -1,819 +0,0 @@ -From 1a4aee6e48594cecf7e9083358d3d278f3060650 Mon Sep 17 00:00:00 2001 -From: Supreeth Venkatesh <supreeth.venkatesh@amd.com> -Date: Mon, 26 Oct 2020 19:04:15 -0500 -Subject: [PATCH 1/1] Amd power control modifications for EthanolX -Content-Type: text/plain; charset="us-ascii" -Content-Transfer-Encoding: 7bit - -This patch modifies recipes-x86 chassis manager code to support AMD -EthanolX customer reference board. -The configuration Json file is updated with the GPIO signals present on -AMD EthanolX file. -The Service file is updated to indicate this is modified version of x86 -power control suitable for AMD platforms. -The source file is modified to remove Intel specific SIO signals and -functions, modify it to support AMD specific GPIO signals. - -Further, Beep() is replaced by lighting up Fault LED, as AMD CRBs does -not have a beeper. - -Signed-off-by: Supreeth Venkatesh <supreeth.venkatesh@amd.com> ---- - .../config/power-config-host0.json | 23 +- - ...nbmc_project.Chassis.Control.Power.service | 2 +- - power-control-x86/src/power_control.cpp | 430 +++--------------- - 3 files changed, 81 insertions(+), 374 deletions(-) - -diff --git a/power-control-x86/config/power-config-host0.json b/power-control-x86/config/power-config-host0.json -index 567f419..9e1a54a 100644 ---- a/power-control-x86/config/power-config-host0.json -+++ b/power-control-x86/config/power-config-host0.json -@@ -1,15 +1,14 @@ - { -- "IdButton": "ID_BUTTON", -- "NMIButton": "NMI_BUTTON", -- "NMIOut": "NMI_OUT", -- "PostComplete": "POST_COMPLETE", -- "PwrButton": "POWER_BUTTON", -- "PwrOK": "PS_PWROK", -- "PwrOut": "POWER_OUT", -- "RstButton": "RESET_BUTTON", -- "RstOut": "RESET_OUT", -- "SIOOnCtl": "SIO_ONCONTROL", -- "SIOPwrGd": "SIO_POWER_GOOD", -- "SIOS5": "SIO_S5" -+ "IdButton": "CHASSIS_ID_BTN", -+ "NMIButton": "MON_P0_NMI_BTN", -+ "NMIOut": "ASSERT_NMI_BTN", -+ "PostComplete": "MON_PWROK", -+ "PwrButton": "MON_P0_PWR_BTN", -+ "PwrOK": "MON_P0_PWR_GOOD", -+ "PwrOut": "ASSERT_PWR_BTN", -+ "RstButton": "MON_P0_RST_BTN", -+ "RstOut": "ASSERT_RST_BTN", -+ "BmcReady": "ASSERT_BMC_READY", -+ "FaultLed": "FAULT_LED" - } - -diff --git a/power-control-x86/service_files/xyz.openbmc_project.Chassis.Control.Power.service b/power-control-x86/service_files/xyz.openbmc_project.Chassis.Control.Power.service -index a80235e..43cf1a7 100644 ---- a/power-control-x86/service_files/xyz.openbmc_project.Chassis.Control.Power.service -+++ b/power-control-x86/service_files/xyz.openbmc_project.Chassis.Control.Power.service -@@ -1,5 +1,5 @@ - [Unit] --Description=Intel Power Control -+Description=Amd Power Control - - [Service] - Restart=always -diff --git a/power-control-x86/src/power_control.cpp b/power-control-x86/src/power_control.cpp -index ab704d8..da81531 100644 ---- a/power-control-x86/src/power_control.cpp -+++ b/power-control-x86/src/power_control.cpp -@@ -44,9 +44,8 @@ static std::string powerOutName; - static std::string powerOkName; - static std::string resetOutName; - static std::string nmiOutName; --static std::string sioPwrGoodName; --static std::string sioOnControlName; --static std::string sioS5Name; -+static std::string bmcReadyName; -+static std::string faultLedName; - static std::string postCompleteName; - static std::string powerButtonName; - static std::string resetButtonName; -@@ -55,9 +54,7 @@ static std::string nmiButtonName; - - static std::shared_ptr<sdbusplus::asio::dbus_interface> hostIface; - static std::shared_ptr<sdbusplus::asio::dbus_interface> chassisIface; --#ifdef CHASSIS_SYSTEM_RESET - static std::shared_ptr<sdbusplus::asio::dbus_interface> chassisSysIface; --#endif - static std::shared_ptr<sdbusplus::asio::dbus_interface> powerButtonIface; - static std::shared_ptr<sdbusplus::asio::dbus_interface> resetButtonIface; - static std::shared_ptr<sdbusplus::asio::dbus_interface> nmiButtonIface; -@@ -74,18 +71,15 @@ const static constexpr int powerPulseTimeMs = 200; - const static constexpr int forceOffPulseTimeMs = 15000; - const static constexpr int resetPulseTimeMs = 500; - const static constexpr int powerCycleTimeMs = 5000; --const static constexpr int sioPowerGoodWatchdogTimeMs = 1000; - const static constexpr int psPowerOKWatchdogTimeMs = 8000; - const static constexpr int gracefulPowerOffTimeMs = 60000; - const static constexpr int warmResetCheckTimeMs = 500; --const static constexpr int buttonMaskTimeMs = 60000; - const static constexpr int powerOffSaveTimeMs = 7000; - - const static std::filesystem::path powerControlDir = "/var/lib/power-control"; - const static constexpr std::string_view powerStateFile = "power-state"; - - static bool nmiEnabled = true; --static bool sioEnabled = true; - - // Timers - // Time holding GPIOs asserted -@@ -98,24 +92,14 @@ static boost::asio::steady_timer gracefulPowerOffTimer(io); - static boost::asio::steady_timer warmResetCheckTimer(io); - // Time power supply power OK assertion on power-on - static boost::asio::steady_timer psPowerOKWatchdogTimer(io); --// Time SIO power good assertion on power-on --static boost::asio::steady_timer sioPowerGoodWatchdogTimer(io); - // Time power-off state save for power loss tracking - static boost::asio::steady_timer powerStateSaveTimer(io); - // POH timer - static boost::asio::steady_timer pohCounterTimer(io); --// Time when to allow restart cause updates --static boost::asio::steady_timer restartCauseTimer(io); - - // GPIO Lines and Event Descriptors - static gpiod::line psPowerOKLine; - static boost::asio::posix::stream_descriptor psPowerOKEvent(io); --static gpiod::line sioPowerGoodLine; --static boost::asio::posix::stream_descriptor sioPowerGoodEvent(io); --static gpiod::line sioOnControlLine; --static boost::asio::posix::stream_descriptor sioOnControlEvent(io); --static gpiod::line sioS5Line; --static boost::asio::posix::stream_descriptor sioS5Event(io); - static gpiod::line powerButtonLine; - static boost::asio::posix::stream_descriptor powerButtonEvent(io); - static gpiod::line resetButtonLine; -@@ -128,31 +112,10 @@ static gpiod::line postCompleteLine; - static boost::asio::posix::stream_descriptor postCompleteEvent(io); - static gpiod::line nmiOutLine; - --static constexpr uint8_t beepPowerFail = 8; -- --static void beep(const uint8_t& beepPriority) --{ -- std::cerr << "Beep with priority: " << (unsigned)beepPriority << "\n"; -- -- conn->async_method_call( -- [](boost::system::error_code ec) { -- if (ec) -- { -- std::cerr << "beep returned error with " -- "async_method_call (ec = " -- << ec << ")\n"; -- return; -- } -- }, -- "xyz.openbmc_project.BeepCode", "/xyz/openbmc_project/BeepCode", -- "xyz.openbmc_project.BeepCode", "Beep", uint8_t(beepPriority)); --} -- - enum class PowerState - { - on, - waitForPSPowerOK, -- waitForSIOPowerGood, - off, - transitionToOff, - gracefulTransitionToOff, -@@ -172,9 +135,6 @@ static std::string getPowerStateName(PowerState state) - case PowerState::waitForPSPowerOK: - return "Wait for Power Supply Power OK"; - break; -- case PowerState::waitForSIOPowerGood: -- return "Wait for SIO Power Good"; -- break; - case PowerState::off: - return "Off"; - break; -@@ -215,17 +175,12 @@ enum class Event - { - psPowerOKAssert, - psPowerOKDeAssert, -- sioPowerGoodAssert, -- sioPowerGoodDeAssert, -- sioS5Assert, -- sioS5DeAssert, - postCompleteAssert, - postCompleteDeAssert, - powerButtonPressed, - resetButtonPressed, - powerCycleTimerExpired, - psPowerOKWatchdogTimerExpired, -- sioPowerGoodWatchdogTimerExpired, - gracefulPowerOffTimerExpired, - powerOnRequest, - powerOffRequest, -@@ -245,18 +200,6 @@ static std::string getEventName(Event event) - case Event::psPowerOKDeAssert: - return "power supply power OK de-assert"; - break; -- case Event::sioPowerGoodAssert: -- return "SIO power good assert"; -- break; -- case Event::sioPowerGoodDeAssert: -- return "SIO power good de-assert"; -- break; -- case Event::sioS5Assert: -- return "SIO S5 assert"; -- break; -- case Event::sioS5DeAssert: -- return "SIO S5 de-assert"; -- break; - case Event::postCompleteAssert: - return "POST Complete assert"; - break; -@@ -275,9 +218,6 @@ static std::string getEventName(Event event) - case Event::psPowerOKWatchdogTimerExpired: - return "power supply power OK watchdog timer expired"; - break; -- case Event::sioPowerGoodWatchdogTimerExpired: -- return "SIO power good watchdog timer expired"; -- break; - case Event::gracefulPowerOffTimerExpired: - return "graceful power-off timer expired"; - break; -@@ -319,7 +259,6 @@ static void logEvent(const std::string_view stateHandler, const Event event) - // Power state handlers - static void powerStateOn(const Event event); - static void powerStateWaitForPSPowerOK(const Event event); --static void powerStateWaitForSIOPowerGood(const Event event); - static void powerStateOff(const Event event); - static void powerStateTransitionToOff(const Event event); - static void powerStateGracefulTransitionToOff(const Event event); -@@ -338,9 +277,6 @@ static std::function<void(const Event)> getPowerStateHandler(PowerState state) - case PowerState::waitForPSPowerOK: - return powerStateWaitForPSPowerOK; - break; -- case PowerState::waitForSIOPowerGood: -- return powerStateWaitForSIOPowerGood; -- break; - case PowerState::off: - return powerStateOff; - break; -@@ -404,7 +340,6 @@ static constexpr std::string_view getHostState(const PowerState state) - return "xyz.openbmc_project.State.Host.HostState.Running"; - break; - case PowerState::waitForPSPowerOK: -- case PowerState::waitForSIOPowerGood: - case PowerState::off: - case PowerState::transitionToOff: - case PowerState::transitionToCycleOff: -@@ -430,7 +365,6 @@ static constexpr std::string_view getChassisState(const PowerState state) - return "xyz.openbmc_project.State.Chassis.PowerState.On"; - break; - case PowerState::waitForPSPowerOK: -- case PowerState::waitForSIOPowerGood: - case PowerState::off: - case PowerState::cycleOff: - return "xyz.openbmc_project.State.Chassis.PowerState.Off"; -@@ -598,7 +532,7 @@ static void systemPowerGoodFailedLog() - "MESSAGE=PowerControl: system power good failed to assert (VR failure)", - "PRIORITY=%i", LOG_INFO, "REDFISH_MESSAGE_ID=%s", - "OpenBMC.0.1.SystemPowerGoodFailed", "REDFISH_MESSAGE_ARGS=%d", -- sioPowerGoodWatchdogTimeMs, NULL); -+ psPowerOKWatchdogTimeMs, NULL); - } - - static void psPowerOKFailedLog() -@@ -1086,54 +1020,24 @@ static int setGPIOOutputForMs(const std::string& name, const int value, - - static void powerOn() - { -- setGPIOOutputForMs(power_control::powerOutName, 0, powerPulseTimeMs); -+ setGPIOOutputForMs(power_control::powerOutName, 1, powerPulseTimeMs); - } - - static void gracefulPowerOff() - { -- setGPIOOutputForMs(power_control::powerOutName, 0, powerPulseTimeMs); -+ setGPIOOutputForMs(power_control::powerOutName, 1, powerPulseTimeMs); - } - - static void forcePowerOff() - { -- if (setGPIOOutputForMs(power_control::powerOutName, 0, -- forceOffPulseTimeMs) < 0) -- { -- return; -- } -+ setGPIOOutputForMs(power_control::powerOutName, 1, forceOffPulseTimeMs); - -- // If the force off timer expires, then the PCH power-button override -- // failed, so attempt the Unconditional Powerdown SMBus command. -- gpioAssertTimer.async_wait([](const boost::system::error_code ec) { -- if (ec) -- { -- // operation_aborted is expected if timer is canceled before -- // completion. -- if (ec != boost::asio::error::operation_aborted) -- { -- std::cerr << "Force power off async_wait failed: " -- << ec.message() << "\n"; -- } -- return; -- } -- std::cerr << "PCH Power-button override failed. Issuing Unconditional " -- "Powerdown SMBus command.\n"; -- const static constexpr size_t pchDevBusAddress = 3; -- const static constexpr size_t pchDevSlaveAddress = 0x44; -- const static constexpr size_t pchCmdReg = 0; -- const static constexpr size_t pchPowerDownCmd = 0x02; -- if (i2cSet(pchDevBusAddress, pchDevSlaveAddress, pchCmdReg, -- pchPowerDownCmd) < 0) -- { -- std::cerr << "Unconditional Powerdown command failed! Not sure " -- "what to do now.\n"; -- } -- }); -+ return; - } - - static void reset() - { -- setGPIOOutputForMs(power_control::resetOutName, 0, resetPulseTimeMs); -+ setGPIOOutputForMs(power_control::resetOutName, 1, resetPulseTimeMs); - } - - static void gracefulPowerOffTimerStart() -@@ -1378,43 +1282,16 @@ static void currentHostStateMonitor() - }); - } - --static void sioPowerGoodWatchdogTimerStart() --{ -- std::cerr << "SIO power good watchdog timer started\n"; -- sioPowerGoodWatchdogTimer.expires_after( -- std::chrono::milliseconds(sioPowerGoodWatchdogTimeMs)); -- sioPowerGoodWatchdogTimer.async_wait( -- [](const boost::system::error_code ec) { -- if (ec) -- { -- // operation_aborted is expected if timer is canceled before -- // completion. -- if (ec != boost::asio::error::operation_aborted) -- { -- std::cerr << "SIO power good watchdog async_wait failed: " -- << ec.message() << "\n"; -- } -- std::cerr << "SIO power good watchdog timer canceled\n"; -- return; -- } -- std::cerr << "SIO power good watchdog timer completed\n"; -- sendPowerControlEvent(Event::sioPowerGoodWatchdogTimerExpired); -- }); --} -- - static void powerStateOn(const Event event) - { -+ gpiod::line line; - logEvent(__FUNCTION__, event); - switch (event) - { - case Event::psPowerOKDeAssert: - setPowerState(PowerState::off); -- // DC power is unexpectedly lost, beep -- beep(beepPowerFail); -- break; -- case Event::sioS5Assert: -- setPowerState(PowerState::transitionToOff); -- addRestartCause(RestartCause::softReset); -+ // DC power is unexpectedly lost, Light Up fault LED -+ power_control::setGPIOOutput(power_control::faultLedName, 1, line); - break; - case Event::postCompleteDeAssert: - setPowerState(PowerState::checkForWarmReset); -@@ -1463,49 +1340,15 @@ static void powerStateWaitForPSPowerOK(const Event event) - switch (event) - { - case Event::psPowerOKAssert: -- { - // Cancel any GPIO assertions held during the transition - gpioAssertTimer.cancel(); - psPowerOKWatchdogTimer.cancel(); -- if (sioEnabled == true) -- { -- sioPowerGoodWatchdogTimerStart(); -- setPowerState(PowerState::waitForSIOPowerGood); -- } -- else -- { -- setPowerState(PowerState::on); -- } -+ setPowerState(PowerState::on); - break; -- } - case Event::psPowerOKWatchdogTimerExpired: - setPowerState(PowerState::off); - psPowerOKFailedLog(); - break; -- case Event::sioPowerGoodAssert: -- psPowerOKWatchdogTimer.cancel(); -- setPowerState(PowerState::on); -- break; -- default: -- phosphor::logging::log<phosphor::logging::level::INFO>( -- "No action taken."); -- break; -- } --} -- --static void powerStateWaitForSIOPowerGood(const Event event) --{ -- logEvent(__FUNCTION__, event); -- switch (event) -- { -- case Event::sioPowerGoodAssert: -- sioPowerGoodWatchdogTimer.cancel(); -- setPowerState(PowerState::on); -- break; -- case Event::sioPowerGoodWatchdogTimerExpired: -- setPowerState(PowerState::off); -- systemPowerGoodFailedLog(); -- break; - default: - phosphor::logging::log<phosphor::logging::level::INFO>( - "No action taken."); -@@ -1519,21 +1362,6 @@ static void powerStateOff(const Event event) - switch (event) - { - case Event::psPowerOKAssert: -- { -- if (sioEnabled == true) -- { -- setPowerState(PowerState::waitForSIOPowerGood); -- } -- else -- { -- setPowerState(PowerState::on); -- } -- break; -- } -- case Event::sioS5DeAssert: -- setPowerState(PowerState::waitForPSPowerOK); -- break; -- case Event::sioPowerGoodAssert: - setPowerState(PowerState::on); - break; - case Event::powerButtonPressed: -@@ -1594,21 +1422,12 @@ static void powerStateCycleOff(const Event event) - switch (event) - { - case Event::psPowerOKAssert: -- { - powerCycleTimer.cancel(); -- if (sioEnabled == true) -- { -- setPowerState(PowerState::waitForSIOPowerGood); -- } -- else -- { -- setPowerState(PowerState::on); -- } -+ setPowerState(PowerState::on); - break; -- } -- case Event::sioS5DeAssert: -+ case Event::psPowerOKDeAssert: - powerCycleTimer.cancel(); -- setPowerState(PowerState::waitForPSPowerOK); -+ setPowerState(PowerState::off); - break; - case Event::powerButtonPressed: - powerCycleTimer.cancel(); -@@ -1667,21 +1486,18 @@ static void powerStateGracefulTransitionToCycleOff(const Event event) - - static void powerStateCheckForWarmReset(const Event event) - { -+ gpiod::line line; - logEvent(__FUNCTION__, event); - switch (event) - { -- case Event::sioS5Assert: -- warmResetCheckTimer.cancel(); -- setPowerState(PowerState::transitionToOff); -- break; - case Event::warmResetDetected: - setPowerState(PowerState::on); - break; - case Event::psPowerOKDeAssert: - warmResetCheckTimer.cancel(); - setPowerState(PowerState::off); -- // DC power is unexpectedly lost, beep -- beep(beepPowerFail); -+ // DC power is unexpectedly lost, Light up Fault LED -+ power_control::setGPIOOutput(power_control::faultLedName, 1, line); - break; - default: - phosphor::logging::log<phosphor::logging::level::INFO>( -@@ -1713,71 +1529,6 @@ static void psPowerOKHandler() - }); - } - --static void sioPowerGoodHandler() --{ -- gpiod::line_event gpioLineEvent = sioPowerGoodLine.event_read(); -- -- Event powerControlEvent = -- gpioLineEvent.event_type == gpiod::line_event::RISING_EDGE -- ? Event::sioPowerGoodAssert -- : Event::sioPowerGoodDeAssert; -- -- sendPowerControlEvent(powerControlEvent); -- sioPowerGoodEvent.async_wait( -- boost::asio::posix::stream_descriptor::wait_read, -- [](const boost::system::error_code ec) { -- if (ec) -- { -- std::cerr << "SIO power good handler error: " << ec.message() -- << "\n"; -- return; -- } -- sioPowerGoodHandler(); -- }); --} -- --static void sioOnControlHandler() --{ -- gpiod::line_event gpioLineEvent = sioOnControlLine.event_read(); -- -- bool sioOnControl = -- gpioLineEvent.event_type == gpiod::line_event::RISING_EDGE; -- std::cerr << "SIO_ONCONTROL value changed: " << sioOnControl << "\n"; -- sioOnControlEvent.async_wait( -- boost::asio::posix::stream_descriptor::wait_read, -- [](const boost::system::error_code ec) { -- if (ec) -- { -- std::cerr << "SIO ONCONTROL handler error: " << ec.message() -- << "\n"; -- return; -- } -- sioOnControlHandler(); -- }); --} -- --static void sioS5Handler() --{ -- gpiod::line_event gpioLineEvent = sioS5Line.event_read(); -- -- Event powerControlEvent = -- gpioLineEvent.event_type == gpiod::line_event::FALLING_EDGE -- ? Event::sioS5Assert -- : Event::sioS5DeAssert; -- -- sendPowerControlEvent(powerControlEvent); -- sioS5Event.async_wait(boost::asio::posix::stream_descriptor::wait_read, -- [](const boost::system::error_code ec) { -- if (ec) -- { -- std::cerr << "SIO S5 handler error: " -- << ec.message() << "\n"; -- return; -- } -- sioS5Handler(); -- }); --} -- - static void powerButtonHandler() - { - gpiod::line_event gpioLineEvent = powerButtonLine.event_read(); -@@ -1848,7 +1599,6 @@ static void resetButtonHandler() - }); - } - --#ifdef CHASSIS_SYSTEM_RESET - static constexpr auto systemdBusname = "org.freedesktop.systemd1"; - static constexpr auto systemdPath = "/org/freedesktop/systemd1"; - static constexpr auto systemdInterface = "org.freedesktop.systemd1.Manager"; -@@ -1868,7 +1618,6 @@ void systemReset() - systemdBusname, systemdPath, systemdInterface, "StartUnit", - systemTargetName, "replace"); - } --#endif - - static void nmiSetEnablePorperty(bool value) - { -@@ -2041,7 +1790,7 @@ static void postCompleteHandler() - gpiod::line_event gpioLineEvent = postCompleteLine.event_read(); - - bool postComplete = -- gpioLineEvent.event_type == gpiod::line_event::FALLING_EDGE; -+ gpioLineEvent.event_type == gpiod::line_event::RISING_EDGE; - if (postComplete) - { - sendPowerControlEvent(Event::postCompleteAssert); -@@ -2129,19 +1878,14 @@ static int loadConfigValues() - resetOutName = data["RstOut"]; - } - -- if (data.contains("SIOOnCtl")) -+ if (data.contains("BmcReady")) - { -- sioOnControlName = data["SIOOnCtl"]; -+ bmcReadyName = data["BmcReady"]; - } - -- if (data.contains("SIOPwrGd")) -+ if (data.contains("FaultLed")) - { -- sioPwrGoodName = data["SIOPwrGd"]; -- } -- -- if (data.contains("SIOS5")) -- { -- sioS5Name = data["SIOS5"]; -+ faultLedName = data["FaultLed"]; - } - - return 0; -@@ -2172,14 +1916,6 @@ int main(int argc, char* argv[]) - power_control::conn->request_name( - "xyz.openbmc_project.Control.Host.RestartCause"); - -- if (power_control::sioPwrGoodName.empty() || -- power_control::sioOnControlName.empty() || -- power_control::sioS5Name.empty()) -- { -- power_control::sioEnabled = false; -- std::cerr << "SIO control GPIOs not defined, disable SIO support.\n"; -- } -- - // Request PS_PWROK GPIO events - if (!power_control::powerOkName.empty()) - { -@@ -2197,37 +1933,6 @@ int main(int argc, char* argv[]) - return -1; - } - -- if (power_control::sioEnabled == true) -- { -- // Request SIO_POWER_GOOD GPIO events -- if (!power_control::requestGPIOEvents( -- power_control::sioPwrGoodName, -- power_control::sioPowerGoodHandler, -- power_control::sioPowerGoodLine, -- power_control::sioPowerGoodEvent)) -- { -- return -1; -- } -- -- // Request SIO_ONCONTROL GPIO events -- if (!power_control::requestGPIOEvents( -- power_control::sioOnControlName, -- power_control::sioOnControlHandler, -- power_control::sioOnControlLine, -- power_control::sioOnControlEvent)) -- { -- return -1; -- } -- -- // Request SIO_S5 GPIO events -- if (!power_control::requestGPIOEvents( -- power_control::sioS5Name, power_control::sioS5Handler, -- power_control::sioS5Line, power_control::sioS5Event)) -- { -- return -1; -- } -- } -- - // Request POWER_BUTTON GPIO events - if (!power_control::powerButtonName.empty()) - { -@@ -2259,7 +1964,9 @@ int main(int argc, char* argv[]) - } - else - { -- std::cerr << "ResetButton not defined...\n"; -+ std::cerr -+ << "resetButton name should be configured from json config file\n"; -+ return -1; - } - - // Request NMI_BUTTON GPIO events -@@ -2303,12 +2010,12 @@ int main(int argc, char* argv[]) - - // Initialize POWER_OUT and RESET_OUT GPIO. - gpiod::line line; -- if (!power_control::setGPIOOutput(power_control::powerOutName, 1, line)) -+ if (!power_control::setGPIOOutput(power_control::powerOutName, 0, line)) - { - return -1; - } - -- if (!power_control::setGPIOOutput(power_control::resetOutName, 1, line)) -+ if (!power_control::setGPIOOutput(power_control::resetOutName, 0, line)) - { - return -1; - } -@@ -2316,6 +2023,13 @@ int main(int argc, char* argv[]) - // Release line - line.reset(); - -+ // DRIVE BMC_READY HIGH -+ gpiod::line bmcReadyline; -+ if (!power_control::setGPIOOutput(power_control::bmcReadyName, 1, bmcReadyline)) -+ { -+ return -1; -+ } -+ - // Initialize the power state - power_control::powerState = power_control::PowerState::off; - // Check power good -@@ -2444,7 +2158,6 @@ int main(int argc, char* argv[]) - - power_control::chassisIface->initialize(); - --#ifdef CHASSIS_SYSTEM_RESET - // Chassis System Service - sdbusplus::asio::object_server chassisSysServer = - sdbusplus::asio::object_server(power_control::conn); -@@ -2481,7 +2194,6 @@ int main(int argc, char* argv[]) - "LastStateChangeTime", power_control::getCurrentTimeMs()); - - power_control::chassisSysIface->initialize(); --#endif - - // Buttons Service - sdbusplus::asio::object_server buttonsServer = -@@ -2531,51 +2243,47 @@ int main(int argc, char* argv[]) - power_control::powerButtonIface->initialize(); - - // Reset Button Interface -- if (!power_control::resetButtonName.empty()) -- { -- power_control::resetButtonIface = buttonsServer.add_interface( -- "/xyz/openbmc_project/chassis/buttons/reset", -- "xyz.openbmc_project.Chassis.Buttons"); -+ power_control::resetButtonIface = buttonsServer.add_interface( -+ "/xyz/openbmc_project/chassis/buttons/reset", -+ "xyz.openbmc_project.Chassis.Buttons"); - -- power_control::resetButtonIface->register_property( -- "ButtonMasked", false, [](const bool requested, bool& current) { -- if (requested) -+ power_control::resetButtonIface->register_property( -+ "ButtonMasked", false, [](const bool requested, bool& current) { -+ if (requested) -+ { -+ if (power_control::resetButtonMask) - { -- if (power_control::resetButtonMask) -- { -- return 1; -- } -- if (!power_control::setGPIOOutput( -- power_control::resetOutName, 1, -- power_control::resetButtonMask)) -- { -- throw std::runtime_error("Failed to request GPIO"); -- return 0; -- } -- std::cerr << "Reset Button Masked.\n"; -+ return 1; - } -- else -+ if (!power_control::setGPIOOutput( -+ power_control::resetOutName, 1, -+ power_control::resetButtonMask)) - { -- if (!power_control::resetButtonMask) -- { -- return 1; -- } -- std::cerr << "Reset Button Un-masked\n"; -- power_control::resetButtonMask.reset(); -+ throw std::runtime_error("Failed to request GPIO"); -+ return 0; - } -- // Update the mask setting -- current = requested; -- return 1; -- }); -+ std::cerr << "Reset Button Masked.\n"; -+ } -+ else -+ { -+ if (!power_control::resetButtonMask) -+ { -+ return 1; -+ } -+ std::cerr << "Reset Button Un-masked\n"; -+ power_control::resetButtonMask.reset(); -+ } -+ // Update the mask setting -+ current = requested; -+ return 1; -+ }); - -- // Check reset button state -- bool resetButtonPressed = -- power_control::resetButtonLine.get_value() == 0; -- power_control::resetButtonIface->register_property("ButtonPressed", -- resetButtonPressed); -+ // Check reset button state -+ bool resetButtonPressed = power_control::resetButtonLine.get_value() == 0; -+ power_control::resetButtonIface->register_property("ButtonPressed", -+ resetButtonPressed); - -- power_control::resetButtonIface->initialize(); -- } -+ power_control::resetButtonIface->initialize(); - - if (power_control::nmiButtonLine) - { --- -2.17.1 - diff --git a/meta-amd/meta-ethanolx/recipes-x86/chassis/x86-power-control_%.bbappend b/meta-amd/meta-ethanolx/recipes-x86/chassis/x86-power-control_%.bbappend deleted file mode 100644 index 662090ea09..0000000000 --- a/meta-amd/meta-ethanolx/recipes-x86/chassis/x86-power-control_%.bbappend +++ /dev/null @@ -1,4 +0,0 @@ -FILESEXTRAPATHS:prepend := "${THISDIR}/${PN}:" - -SRC_URI += "file://0001-Amd-power-control-modifications-for-EthanolX.patch" -SRCREV = "01a77864f49088bac80474587a123d1f152f2b26" |