diff --git a/lpc_aspeed.cpp b/lpc_aspeed.cpp
index 120ac76..62760c5 100644
--- a/lpc_aspeed.cpp
+++ b/lpc_aspeed.cpp
@@ -16,7 +16,7 @@
 
 #include "lpc_aspeed.hpp"
 
-#include "lpc_interface.hpp"
+#include "window_hw_interface.hpp"
 
 #include <fcntl.h>
 #include <linux/aspeed-lpc-ctrl.h>
@@ -30,7 +30,7 @@
 namespace blobs
 {
 
-std::unique_ptr<LpcMapperInterface>
+std::unique_ptr<HardwareMapperInterface>
     LpcMapperAspeed::createAspeedMapper(std::size_t regionSize)
 {
     /* NOTE: considered using a joint factory to create one or the other, for
diff --git a/lpc_aspeed.hpp b/lpc_aspeed.hpp
index 98e7a72..be872ce 100644
--- a/lpc_aspeed.hpp
+++ b/lpc_aspeed.hpp
@@ -1,17 +1,17 @@
 #pragma once
 
 #include "internal/sys.hpp"
-#include "lpc_interface.hpp"
+#include "window_hw_interface.hpp"
 
 #include <memory>
 
 namespace blobs
 {
 
-class LpcMapperAspeed : public LpcMapperInterface
+class LpcMapperAspeed : public HardwareMapperInterface
 {
   public:
-    static std::unique_ptr<LpcMapperInterface>
+    static std::unique_ptr<HardwareMapperInterface>
         createAspeedMapper(std::size_t regionSize);
 
     LpcMapperAspeed(std::size_t regionSize,
diff --git a/lpc_handler.hpp b/lpc_handler.hpp
index 139cfac..3090c68 100644
--- a/lpc_handler.hpp
+++ b/lpc_handler.hpp
@@ -1,7 +1,7 @@
 #pragma once
 
 #include "data_handler.hpp"
-#include "lpc_interface.hpp"
+#include "window_hw_interface.hpp"
 
 #include <cstdint>
 #include <memory>
@@ -34,7 +34,7 @@
      * @param[in] mapper - pointer to a mapper implementation to use.
      */
     LpcDataHandler(std::uint32_t regionAddress,
-                   std::unique_ptr<LpcMapperInterface> mapper) :
+                   std::unique_ptr<HardwareMapperInterface> mapper) :
         regionAddress(regionAddress),
         mapper(std::move(mapper)), initialized(false)
     {
@@ -54,7 +54,7 @@
     }
 
     std::uint32_t regionAddress;
-    std::unique_ptr<LpcMapperInterface> mapper;
+    std::unique_ptr<HardwareMapperInterface> mapper;
     bool initialized;
 };
 
diff --git a/lpc_nuvoton.cpp b/lpc_nuvoton.cpp
index 416980e..ce0cf30 100644
--- a/lpc_nuvoton.cpp
+++ b/lpc_nuvoton.cpp
@@ -16,7 +16,7 @@
 
 #include "lpc_nuvoton.hpp"
 
-#include "lpc_interface.hpp"
+#include "window_hw_interface.hpp"
 
 #include <fcntl.h>
 #include <sys/mman.h>
@@ -33,7 +33,7 @@
 using std::uint32_t;
 using std::uint8_t;
 
-std::unique_ptr<LpcMapperInterface> LpcMapperNuvoton::createNuvotonMapper()
+std::unique_ptr<HardwareMapperInterface> LpcMapperNuvoton::createNuvotonMapper()
 {
     /* NOTE: Considered making one factory for both types. */
     return std::make_unique<LpcMapperNuvoton>();
diff --git a/lpc_nuvoton.hpp b/lpc_nuvoton.hpp
index 61cc806..a5fca08 100644
--- a/lpc_nuvoton.hpp
+++ b/lpc_nuvoton.hpp
@@ -1,17 +1,17 @@
 #pragma once
 
 #include "internal/sys.hpp"
-#include "lpc_interface.hpp"
+#include "window_hw_interface.hpp"
 
 #include <memory>
 
 namespace blobs
 {
 
-class LpcMapperNuvoton : public LpcMapperInterface
+class LpcMapperNuvoton : public HardwareMapperInterface
 {
   public:
-    static std::unique_ptr<LpcMapperInterface> createNuvotonMapper();
+    static std::unique_ptr<HardwareMapperInterface> createNuvotonMapper();
 
     /**
      * Create an LpcMapper for Nuvoton.
diff --git a/test/lpc_mapper_mock.hpp b/test/lpc_mapper_mock.hpp
index 7d84a8a..79f4e50 100644
--- a/test/lpc_mapper_mock.hpp
+++ b/test/lpc_mapper_mock.hpp
@@ -1,16 +1,16 @@
 #pragma once
 
-#include "lpc_interface.hpp"
+#include "window_hw_interface.hpp"
 
 #include <gmock/gmock.h>
 
 namespace blobs
 {
 
-class LpcInterfaceMock : public LpcMapperInterface
+class HardwareInterfaceMock : public HardwareMapperInterface
 {
   public:
-    virtual ~LpcInterfaceMock() = default;
+    virtual ~HardwareInterfaceMock() = default;
 
     MOCK_METHOD2(mapWindow,
                  std::pair<std::uint32_t, std::uint32_t>(std::uint32_t,
diff --git a/lpc_interface.hpp b/window_hw_interface.hpp
similarity index 75%
rename from lpc_interface.hpp
rename to window_hw_interface.hpp
index c5573b6..a9de4dd 100644
--- a/lpc_interface.hpp
+++ b/window_hw_interface.hpp
@@ -7,13 +7,14 @@
 {
 
 /**
- * Different LPC memory map implementations may require different mechanisms for
- * specific tasks such as mapping the memory window.
+ * Different LPC (or P2a) memory map implementations may require different
+ * mechanisms for specific tasks such as mapping the memory window or copying
+ * out data.
  */
-class LpcMapperInterface
+class HardwareMapperInterface
 {
   public:
-    virtual ~LpcMapperInterface() = default;
+    virtual ~HardwareMapperInterface() = default;
 
     /**
      * Returns a windowOffset and windowSize if the requested window was mapped.
