diff --git a/phosphor-power-sequencer/src/ucd90320_monitor.cpp b/phosphor-power-sequencer/src/ucd90320_monitor.cpp
index e001c43..af04ff0 100644
--- a/phosphor-power-sequencer/src/ucd90320_monitor.cpp
+++ b/phosphor-power-sequencer/src/ucd90320_monitor.cpp
@@ -199,6 +199,9 @@
         }
         log<level::DEBUG>(fmt::format("Found rails: {}", rails).c_str());
 
+        // List of line offsets for libgpiod
+        std::vector<unsigned int> offsets;
+
         // Parse pin information from config file
         auto pinsIterator = rootElement.find("pins");
         if (pinsIterator != rootElement.end())
@@ -212,12 +215,13 @@
                     lineIterator != pinElement.end())
                 {
                     std::string name = (*nameIterator).get<std::string>();
-                    int line = (*lineIterator).get<int>();
+                    unsigned int line = (*lineIterator).get<unsigned int>();
 
                     Pin pin;
                     pin.name = name;
                     pin.line = line;
                     pins.emplace_back(std::move(pin));
+                    offsets.emplace_back(line);
                 }
                 else
                 {
@@ -238,6 +242,7 @@
         }
         log<level::DEBUG>(
             fmt::format("Found number of pins: {}", rails.size()).c_str());
+        setUpGpio(offsets);
     }
     catch (const std::exception& e)
     {
@@ -248,4 +253,12 @@
     }
 }
 
+void UCD90320Monitor::setUpGpio(const std::vector<unsigned int>& offsets)
+{
+    gpiod::chip chip{"ucd90320", gpiod::chip::OPEN_BY_LABEL};
+    lines = chip.get_lines(offsets);
+    lines.request(
+        {"phosphor-power-control", gpiod::line_request::DIRECTION_INPUT, 0});
+}
+
 } // namespace phosphor::power::sequencer
diff --git a/phosphor-power-sequencer/src/ucd90320_monitor.hpp b/phosphor-power-sequencer/src/ucd90320_monitor.hpp
index d7b66ad..2453251 100644
--- a/phosphor-power-sequencer/src/ucd90320_monitor.hpp
+++ b/phosphor-power-sequencer/src/ucd90320_monitor.hpp
@@ -3,6 +3,7 @@
 #include "pmbus.hpp"
 #include "power_sequencer_monitor.hpp"
 
+#include <gpiod.hpp>
 #include <sdbusplus/bus.hpp>
 #include <sdbusplus/bus/match.hpp>
 
@@ -15,7 +16,7 @@
 struct Pin
 {
     std::string name;
-    int line;
+    unsigned int line;
 };
 
 /**
@@ -40,7 +41,7 @@
      * @param[in] i2cAddress The I2C address of the power sequencer device
      */
     UCD90320Monitor(sdbusplus::bus::bus& bus, std::uint8_t i2cBus,
-                    const std::uint16_t i2cAddress);
+                    std::uint16_t i2cAddress);
 
     /**
      * Callback function to handle interfacesAdded D-Bus signals
@@ -50,6 +51,11 @@
 
   private:
     /**
+     * Set of GPIO lines to monitor in this UCD chip.
+     */
+    gpiod::line_bulk lines;
+
+    /**
      * The D-Bus bus object
      */
     sdbusplus::bus::bus& bus;
@@ -96,6 +102,12 @@
      * @param[in] pathName the path name
      */
     void parseConfigFile(const std::filesystem::path& pathName);
+
+    /**
+     * Set up GPIOs
+     * @param[in] offsets the list of pin offsets
+     */
+    void setUpGpio(const std::vector<unsigned int>& offsets);
 };
 
 } // namespace phosphor::power::sequencer
