diff --git a/Doxyfile b/Doxyfile
index d2a7695..6906cc8 100644
--- a/Doxyfile
+++ b/Doxyfile
@@ -782,7 +782,8 @@
 
 INPUT                  = libflashrom.c \
                          libflashrom.h \
-                         flashrom.c
+                         flashrom.c \
+                         layout.c \
 
 # This tag can be used to specify the character encoding of the source files
 # that doxygen parses. Internally doxygen uses the UTF-8 encoding. Doxygen uses
diff --git a/layout.c b/layout.c
index 6e34814..6963e61 100644
--- a/layout.c
+++ b/layout.c
@@ -244,3 +244,44 @@
 
 	return lowest;
 }
+
+/**
+ * @addtogroup flashrom-layout
+ * @{
+ */
+
+/**
+ * @brief Mark given region as included.
+ *
+ * @param layout The layout to alter.
+ * @param name   The name of the region to include.
+ *
+ * @return 0 on success,
+ *         1 if the given name can't be found.
+ */
+int flashrom_layout_include_region(struct flashrom_layout *const layout, const char *name)
+{
+	size_t i;
+	for (i = 0; i < layout->num_entries; ++i) {
+		if (!strcmp(layout->entries[i].name, name)) {
+			layout->entries[i].included = true;
+			return 0;
+		}
+	}
+	return 1;
+}
+
+/**
+ * @brief Free a layout.
+ *
+ * @param layout Layout to free.
+ */
+void flashrom_layout_release(struct flashrom_layout *const layout)
+{
+	if (layout == get_global_layout())
+		return;
+
+	free(layout);
+}
+
+/** @} */ /* end flashrom-layout */
diff --git a/libflashrom.c b/libflashrom.c
index fee60ff..721a11c 100644
--- a/libflashrom.c
+++ b/libflashrom.c
@@ -283,27 +283,6 @@
  */
 
 /**
- * @brief Mark given region as included.
- *
- * @param layout The layout to alter.
- * @param name   The name of the region to include.
- *
- * @return 0 on success,
- *         1 if the given name can't be found.
- */
-int flashrom_layout_include_region(struct flashrom_layout *const layout, const char *name)
-{
-	size_t i;
-	for (i = 0; i < layout->num_entries; ++i) {
-		if (!strcmp(layout->entries[i].name, name)) {
-			layout->entries[i].included = true;
-			return 0;
-		}
-	}
-	return 1;
-}
-
-/**
  * @brief Read a layout from the Intel ICH descriptor in the flash.
  *
  * Optionally verify that the layout matches the one in the given
@@ -507,19 +486,6 @@
 }
 
 /**
- * @brief Free a layout.
- *
- * @param layout Layout to free.
- */
-void flashrom_layout_release(struct flashrom_layout *const layout)
-{
-	if (layout == get_global_layout())
-		return;
-
-	free(layout);
-}
-
-/**
  * @brief Set the active layout for a flash context.
  *
  * Note: This just sets a pointer. The caller must not release the layout
