Add initial support for eMMC layout

Initial commit to add an mmc layout option to update eMMC chips.

Tested: Compiled with each of the three supported options:
        'meson build -Dbmc-layout=<option>' and verified a build/<option>
        subdir was created.

Change-Id: Idfc9c7f0380daff2d865663dacba23c919386d4f
Signed-off-by: Adriana Kobylak <anoo@us.ibm.com>
diff --git a/meson.build b/meson.build
index cd4dd16..918e58b 100644
--- a/meson.build
+++ b/meson.build
@@ -104,9 +104,10 @@
 
 if get_option('bmc-layout').contains('static')
     subdir('static')
-endif
-if get_option('bmc-layout').contains('ubi')
+elif get_option('bmc-layout').contains('ubi')
     subdir('ubi')
+elif get_option('bmc-layout').contains('mmc')
+    subdir('mmc')
 endif
 
 if get_option('host-bios-upgrade').enabled()
diff --git a/meson_options.txt b/meson_options.txt
index 11e9429..c9b7b33 100644
--- a/meson_options.txt
+++ b/meson_options.txt
@@ -2,8 +2,9 @@
 # https://github.com/openbmc/docs/blob/master/code-update/flash-layout.md#supported-filesystem-choices
 # - static: NOR flash configured with fixed-sized MTD partitions.
 # - ubi: NOR flash device configured with UBI volumes.
+# - mmc: eMMC flash device configured with ext4 filesystems.
 option('bmc-layout', type: 'combo',
-    choices: ['static', 'ubi'],
+    choices: ['static', 'ubi', 'mmc'],
     value: 'static',
     description: 'The BMC layout type.')
 
diff --git a/mmc/flash.cpp b/mmc/flash.cpp
new file mode 100644
index 0000000..afaadfb
--- /dev/null
+++ b/mmc/flash.cpp
@@ -0,0 +1,24 @@
+#include "flash.hpp"
+
+#include "activation.hpp"
+
+namespace phosphor
+{
+namespace software
+{
+namespace updater
+{
+
+void Activation::flashWrite()
+{
+    // Empty
+}
+
+void Activation::onStateChanges(sdbusplus::message::message& /*msg*/)
+{
+    // Empty
+}
+
+} // namespace updater
+} // namespace software
+} // namespace phosphor
diff --git a/mmc/item_updater_helper.cpp b/mmc/item_updater_helper.cpp
new file mode 100644
index 0000000..8ef5749
--- /dev/null
+++ b/mmc/item_updater_helper.cpp
@@ -0,0 +1,47 @@
+#include "item_updater_helper.hpp"
+
+namespace phosphor
+{
+namespace software
+{
+namespace updater
+{
+
+void Helper::setEntry(const std::string& /* entryId */, uint8_t /* value */)
+{
+    // Empty
+}
+
+void Helper::clearEntry(const std::string& /* entryId */)
+{
+    // Empty
+}
+
+void Helper::cleanup()
+{
+    // Empty
+}
+
+void Helper::factoryReset()
+{
+    // Empty
+}
+
+void Helper::removeVersion(const std::string& /* versionId */)
+{
+    // Empty
+}
+
+void Helper::updateUbootVersionId(const std::string& /* versionId */)
+{
+    // Empty
+}
+
+void Helper::mirrorAlt()
+{
+    // Empty
+}
+
+} // namespace updater
+} // namespace software
+} // namespace phosphor
diff --git a/mmc/meson.build b/mmc/meson.build
new file mode 100644
index 0000000..5045dee
--- /dev/null
+++ b/mmc/meson.build
@@ -0,0 +1,4 @@
+image_updater_sources += files(
+    'flash.cpp',
+    'item_updater_helper.cpp'
+)