diff --git a/src/hostSelector_switch.cpp b/src/hostSelector_switch.cpp
index c398e35..567f338 100644
--- a/src/hostSelector_switch.cpp
+++ b/src/hostSelector_switch.cpp
@@ -1,6 +1,8 @@
 
 #include "hostSelector_switch.hpp"
 
+#include "gpio.hpp"
+
 #include <error.h>
 
 #include <phosphor-logging/lg2.hpp>
@@ -87,6 +89,19 @@
                    getFormFactorType(), "ERROR", e.what());
     }
 
+    if (config.extraJsonInfo.value("polling_mode", false))
+    {
+        // If polling mode is enabled, set up a timer to poll the GPIO state
+        int intervalMs =
+            config.extraJsonInfo.value("polling_interval_ms", 1000);
+        auto event = Event::get_default();
+        pollTimer.emplace(
+            event, [this](Timer&) { pollGpioState(); },
+            std::chrono::milliseconds(intervalMs));
+        pollTimer->setEnabled(true);
+        lg2::info("Started polling mode: {MS}ms", "MS", intervalMs);
+    }
+
     if (hsPosMapped != INVALID_INDEX)
     {
         position(hsPosMapped, true);
@@ -152,3 +167,23 @@
         position(hsPosMapped);
     }
 }
+
+void HostSelector::pollGpioState()
+{
+    for (const auto& gpioInfo : config.gpios)
+    {
+        GpioState state = getGpioState(gpioInfo.fd, gpioInfo.polarity);
+        setHostSelectorValue(gpioInfo.fd, state);
+        lg2::debug("GPIO {NUM} state is {STATE}", "NUM", gpioInfo.number,
+                   "STATE", state);
+    }
+
+    size_t currentPos = getMappedHSConfig(hostSelectorPosition);
+
+    if (currentPos != INVALID_INDEX && currentPos != previousPos)
+    {
+        position(currentPos);
+        previousPos = currentPos;
+        lg2::info("Host selector position updated to {POS}", "POS", currentPos);
+    }
+}
