diff --git a/lpc_aspeed.cpp b/lpc_aspeed.cpp
index 50ce2a9..7531382 100644
--- a/lpc_aspeed.cpp
+++ b/lpc_aspeed.cpp
@@ -102,8 +102,44 @@
     return std::make_pair(offset, length);
 }
 
+bool LpcMapperAspeed::mapRegion()
+{
+    /* Open the file to map. */
+    mappedFd = sys->open(lpcControlPath.c_str(), O_RDONLY | O_SYNC);
+
+    mappedRegion = reinterpret_cast<uint8_t*>(
+        sys->mmap(0, regionSize, PROT_READ, MAP_SHARED, mappedFd, 0));
+
+    if (mappedRegion == MAP_FAILED)
+    {
+        sys->close(mappedFd);
+        mappedFd = -1;
+        std::fprintf(stderr, "Mmap failure: '%s'\n", std::strerror(errno));
+        return false;
+    }
+
+    /* TOOD: There is no close() method here, to close mappedFd, or mappedRegion
+     * -- therefore, a good next step will be to evaluate whether or not the
+     * other pieces should go here...
+     */
+    return true;
+}
+
 std::vector<std::uint8_t> LpcMapperAspeed::copyFrom(std::uint32_t length)
 {
+    if (mappedFd < 0)
+    {
+        /* NOTE: may make more sense to do this in the open() */
+        if (!mapRegion())
+        {
+            /* Was unable to map region -- this call only required if using mmap
+             * and not ioctl.
+             */
+            /* TODO: have a better failure. */
+            return {};
+        }
+    }
+
     /* TODO: Implement this. */
     return {};
 }
diff --git a/lpc_aspeed.hpp b/lpc_aspeed.hpp
index e89662c..56d1479 100644
--- a/lpc_aspeed.hpp
+++ b/lpc_aspeed.hpp
@@ -30,9 +30,17 @@
 
     std::vector<std::uint8_t> copyFrom(std::uint32_t length) override;
 
+    /**
+     * Attempt to mmap the region.
+     *
+     * @return true on success, false otherwise.
+     */
+    bool mapRegion();
+
   private:
     static const std::string lpcControlPath;
     int mappedFd = -1;
+    std::uint8_t* mappedRegion = nullptr;
     std::uint32_t regionAddress;
     std::size_t regionSize;
     const internal::Sys* sys;
