Introducing the Phosphor OpenBMC OE layer

 -Codifies the IBM vision for an OpenBMC build system.
 -Structured around a core DBUS API architecture.
 -Provides implementation flexibility within that architecture.
 -Provides sample qemuarm BSP layer.
diff --git a/COPYING.MIT b/COPYING.MIT
new file mode 100644
index 0000000..fb950dc
--- /dev/null
+++ b/COPYING.MIT
@@ -0,0 +1,17 @@
+Permission is hereby granted, free of charge, to any person obtaining a copy 
+of this software and associated documentation files (the "Software"), to deal 
+in the Software without restriction, including without limitation the rights 
+to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 
+copies of the Software, and to permit persons to whom the Software is 
+furnished to do so, subject to the following conditions:
+
+The above copyright notice and this permission notice shall be included in 
+all copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 
+IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 
+FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 
+AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 
+LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 
+OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN 
+THE SOFTWARE.
diff --git a/COPYING.apache-2.0 b/COPYING.apache-2.0
new file mode 100644
index 0000000..67db858
--- /dev/null
+++ b/COPYING.apache-2.0
@@ -0,0 +1,175 @@
+
+                                 Apache License
+                           Version 2.0, January 2004
+                        http://www.apache.org/licenses/
+
+   TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION
+
+   1. Definitions.
+
+      "License" shall mean the terms and conditions for use, reproduction,
+      and distribution as defined by Sections 1 through 9 of this document.
+
+      "Licensor" shall mean the copyright owner or entity authorized by
+      the copyright owner that is granting the License.
+
+      "Legal Entity" shall mean the union of the acting entity and all
+      other entities that control, are controlled by, or are under common
+      control with that entity. For the purposes of this definition,
+      "control" means (i) the power, direct or indirect, to cause the
+      direction or management of such entity, whether by contract or
+      otherwise, or (ii) ownership of fifty percent (50%) or more of the
+      outstanding shares, or (iii) beneficial ownership of such entity.
+
+      "You" (or "Your") shall mean an individual or Legal Entity
+      exercising permissions granted by this License.
+
+      "Source" form shall mean the preferred form for making modifications,
+      including but not limited to software source code, documentation
+      source, and configuration files.
+
+      "Object" form shall mean any form resulting from mechanical
+      transformation or translation of a Source form, including but
+      not limited to compiled object code, generated documentation,
+      and conversions to other media types.
+
+      "Work" shall mean the work of authorship, whether in Source or
+      Object form, made available under the License, as indicated by a
+      copyright notice that is included in or attached to the work
+      (an example is provided in the Appendix below).
+
+      "Derivative Works" shall mean any work, whether in Source or Object
+      form, that is based on (or derived from) the Work and for which the
+      editorial revisions, annotations, elaborations, or other modifications
+      represent, as a whole, an original work of authorship. For the purposes
+      of this License, Derivative Works shall not include works that remain
+      separable from, or merely link (or bind by name) to the interfaces of,
+      the Work and Derivative Works thereof.
+
+      "Contribution" shall mean any work of authorship, including
+      the original version of the Work and any modifications or additions
+      to that Work or Derivative Works thereof, that is intentionally
+      submitted to Licensor for inclusion in the Work by the copyright owner
+      or by an individual or Legal Entity authorized to submit on behalf of
+      the copyright owner. For the purposes of this definition, "submitted"
+      means any form of electronic, verbal, or written communication sent
+      to the Licensor or its representatives, including but not limited to
+      communication on electronic mailing lists, source code control systems,
+      and issue tracking systems that are managed by, or on behalf of, the
+      Licensor for the purpose of discussing and improving the Work, but
+      excluding communication that is conspicuously marked or otherwise
+      designated in writing by the copyright owner as "Not a Contribution."
+
+      "Contributor" shall mean Licensor and any individual or Legal Entity
+      on behalf of whom a Contribution has been received by Licensor and
+      subsequently incorporated within the Work.
+
+   2. Grant of Copyright License. Subject to the terms and conditions of
+      this License, each Contributor hereby grants to You a perpetual,
+      worldwide, non-exclusive, no-charge, royalty-free, irrevocable
+      copyright license to reproduce, prepare Derivative Works of,
+      publicly display, publicly perform, sublicense, and distribute the
+      Work and such Derivative Works in Source or Object form.
+
+   3. Grant of Patent License. Subject to the terms and conditions of
+      this License, each Contributor hereby grants to You a perpetual,
+      worldwide, non-exclusive, no-charge, royalty-free, irrevocable
+      (except as stated in this section) patent license to make, have made,
+      use, offer to sell, sell, import, and otherwise transfer the Work,
+      where such license applies only to those patent claims licensable
+      by such Contributor that are necessarily infringed by their
+      Contribution(s) alone or by combination of their Contribution(s)
+      with the Work to which such Contribution(s) was submitted. If You
+      institute patent litigation against any entity (including a
+      cross-claim or counterclaim in a lawsuit) alleging that the Work
+      or a Contribution incorporated within the Work constitutes direct
+      or contributory patent infringement, then any patent licenses
+      granted to You under this License for that Work shall terminate
+      as of the date such litigation is filed.
+
+   4. Redistribution. You may reproduce and distribute copies of the
+      Work or Derivative Works thereof in any medium, with or without
+      modifications, and in Source or Object form, provided that You
+      meet the following conditions:
+
+      (a) You must give any other recipients of the Work or
+          Derivative Works a copy of this License; and
+
+      (b) You must cause any modified files to carry prominent notices
+          stating that You changed the files; and
+
+      (c) You must retain, in the Source form of any Derivative Works
+          that You distribute, all copyright, patent, trademark, and
+          attribution notices from the Source form of the Work,
+          excluding those notices that do not pertain to any part of
+          the Derivative Works; and
+
+      (d) If the Work includes a "NOTICE" text file as part of its
+          distribution, then any Derivative Works that You distribute must
+          include a readable copy of the attribution notices contained
+          within such NOTICE file, excluding those notices that do not
+          pertain to any part of the Derivative Works, in at least one
+          of the following places: within a NOTICE text file distributed
+          as part of the Derivative Works; within the Source form or
+          documentation, if provided along with the Derivative Works; or,
+          within a display generated by the Derivative Works, if and
+          wherever such third-party notices normally appear. The contents
+          of the NOTICE file are for informational purposes only and
+          do not modify the License. You may add Your own attribution
+          notices within Derivative Works that You distribute, alongside
+          or as an addendum to the NOTICE text from the Work, provided
+          that such additional attribution notices cannot be construed
+          as modifying the License.
+
+      You may add Your own copyright statement to Your modifications and
+      may provide additional or different license terms and conditions
+      for use, reproduction, or distribution of Your modifications, or
+      for any such Derivative Works as a whole, provided Your use,
+      reproduction, and distribution of the Work otherwise complies with
+      the conditions stated in this License.
+
+   5. Submission of Contributions. Unless You explicitly state otherwise,
+      any Contribution intentionally submitted for inclusion in the Work
+      by You to the Licensor shall be under the terms and conditions of
+      this License, without any additional terms or conditions.
+      Notwithstanding the above, nothing herein shall supersede or modify
+      the terms of any separate license agreement you may have executed
+      with Licensor regarding such Contributions.
+
+   6. Trademarks. This License does not grant permission to use the trade
+      names, trademarks, service marks, or product names of the Licensor,
+      except as required for reasonable and customary use in describing the
+      origin of the Work and reproducing the content of the NOTICE file.
+
+   7. Disclaimer of Warranty. Unless required by applicable law or
+      agreed to in writing, Licensor provides the Work (and each
+      Contributor provides its Contributions) on an "AS IS" BASIS,
+      WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
+      implied, including, without limitation, any warranties or conditions
+      of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A
+      PARTICULAR PURPOSE. You are solely responsible for determining the
+      appropriateness of using or redistributing the Work and assume any
+      risks associated with Your exercise of permissions under this License.
+
+   8. Limitation of Liability. In no event and under no legal theory,
+      whether in tort (including negligence), contract, or otherwise,
+      unless required by applicable law (such as deliberate and grossly
+      negligent acts) or agreed to in writing, shall any Contributor be
+      liable to You for damages, including any direct, indirect, special,
+      incidental, or consequential damages of any character arising as a
+      result of this License or out of the use or inability to use the
+      Work (including but not limited to damages for loss of goodwill,
+      work stoppage, computer failure or malfunction, or any and all
+      other commercial damages or losses), even if such Contributor
+      has been advised of the possibility of such damages.
+
+   9. Accepting Warranty or Additional Liability. While redistributing
+      the Work or Derivative Works thereof, You may choose to offer,
+      and charge a fee for, acceptance of support, warranty, indemnity,
+      or other liability obligations and/or rights consistent with this
+      License. However, in accepting such obligations, You may act only
+      on Your own behalf and on Your sole responsibility, not on behalf
+      of any other Contributor, and only if You agree to indemnify,
+      defend, and hold each Contributor harmless for any liability
+      incurred by, or claims asserted against, such Contributor by reason
+      of your accepting any such warranty or additional liability.
diff --git a/LICENSE b/LICENSE
new file mode 100644
index 0000000..2bf823d
--- /dev/null
+++ b/LICENSE
@@ -0,0 +1,12 @@
+Different components of Phosphor OpenBMC are under different licenses (a mix
+of MIT and Apache-2.0). Please see:
+
+COPYING.Apache-2.0
+COPYING.MIT (MIT)
+
+All metadata is MIT licensed unless otherwise stated. Source code
+included in tree for individual recipes is under the LICENSE stated in
+the associated recipe (.bb file) unless otherwise stated.
+
+License information for any other files is either explicitly stated 
+or defaults to Apache-2.0.
diff --git a/classes/obmc-phosphor-c-daemon.bbclass b/classes/obmc-phosphor-c-daemon.bbclass
new file mode 100644
index 0000000..e21d17c
--- /dev/null
+++ b/classes/obmc-phosphor-c-daemon.bbclass
@@ -0,0 +1,17 @@
+# Common code for dbus applications using c.
+
+inherit obmc-phosphor-systemd
+inherit obmc-phosphor-license
+
+DEPENDS += "glib-2.0"
+SRC_URI += " \
+        file://Makefile \
+        file://${PN}.c \
+        "
+S = "${WORKDIR}"
+
+do_install_append() {
+        # install the binary
+        install -d ${D}${sbindir}
+        install -m 0755 ${WORKDIR}/${PN} ${D}${sbindir}
+}
diff --git a/classes/obmc-phosphor-chassis-mgmt.bbclass b/classes/obmc-phosphor-chassis-mgmt.bbclass
new file mode 100644
index 0000000..377da0a
--- /dev/null
+++ b/classes/obmc-phosphor-chassis-mgmt.bbclass
@@ -0,0 +1,3 @@
+# Common code for recipes that implement Phosphor OpenBMC chassis management.
+
+RPROVIDES_${PN} += "virtual/obmc-phosphor-chassis-mgmt"
diff --git a/classes/obmc-phosphor-event-mgmt.bbclass b/classes/obmc-phosphor-event-mgmt.bbclass
new file mode 100644
index 0000000..01f2edf
--- /dev/null
+++ b/classes/obmc-phosphor-event-mgmt.bbclass
@@ -0,0 +1,3 @@
+# Common code for recipes that implement Phosphor OpenBMC event management.
+
+RPROVIDES_${PN} += "virtual/obmc-phosphor-event-mgmt"
diff --git a/classes/obmc-phosphor-fan-mgmt.bbclass b/classes/obmc-phosphor-fan-mgmt.bbclass
new file mode 100644
index 0000000..973376d
--- /dev/null
+++ b/classes/obmc-phosphor-fan-mgmt.bbclass
@@ -0,0 +1,3 @@
+# Common code for recipes that implement Phosphor OpenBMC fan management.
+
+RPROVIDES_${PN} += "virtual/obmc-phosphor-fan-mgmt"
diff --git a/classes/obmc-phosphor-flash-mgmt.bbclass b/classes/obmc-phosphor-flash-mgmt.bbclass
new file mode 100644
index 0000000..d166949
--- /dev/null
+++ b/classes/obmc-phosphor-flash-mgmt.bbclass
@@ -0,0 +1,3 @@
+# Common code for recipes that implement Phosphor OpenBMC flash management.
+
+RPROVIDES_${PN} += "virtual/obmc-phosphor-flash-mgmt"
diff --git a/classes/obmc-phosphor-image.bbclass b/classes/obmc-phosphor-image.bbclass
new file mode 100644
index 0000000..59be345
--- /dev/null
+++ b/classes/obmc-phosphor-image.bbclass
@@ -0,0 +1,38 @@
+# Common code for generating Phosphor OpenBMC images.
+
+# Additional IMAGE_FEATURES available with Phosphor OpenBMC:
+#
+# - obmc-phosphor-fan-mgmt            - Phosphor OpenBMC fan management
+# - obmc-phosphor-chassis-mgmt        - Phosphor OpenBMC chassis management
+# - obmc-phosphor-sensor-mgmt         - Phosphor OpenBMC sensor management
+# - obmc-phosphor-flash-mgmt          - Phosphor OpenBMC flash management
+# - obmc-phosphor-event-mgmt          - Phosphor OpenBMC event management
+# - obmc-phosphor-policy-mgmt         - Phosphor OpenBMC policy management
+# - obmc-phosphor-system-mgmt         - Phosphor OpenBMC system management
+
+inherit core-image
+inherit obmc-phosphor-license
+
+FEATURE_PACKAGES_obmc-phosphor-fan-mgmt ?= "packagegroup-obmc-phosphor-apps-fan-mgmt"
+FEATURE_PACKAGES_obmc-phosphor-chassis-mgmt ?= "packagegroup-obmc-phosphor-apps-chassis-mgmt"
+FEATURE_PACKAGES_obmc-phosphor-sensor-mgmt ?= "packagegroup-obmc-phosphor-apps-sensor-mgmt"
+FEATURE_PACKAGES_obmc-phosphor-flash-mgmt ?= "packagegroup-obmc-phosphor-apps-flash-mgmt"
+FEATURE_PACKAGES_obmc-phosphor-event-mgmt ?= "packagegroup-obmc-phosphor-apps-event-mgmt"
+FEATURE_PACKAGES_obmc-phosphor-policy-mgmt ?= "packagegroup-obmc-phosphor-apps-policy-mgmt"
+FEATURE_PACKAGES_obmc-phosphor-system-mgmt ?= "packagegroup-obmc-phosphor-apps-system-mgmt"
+
+# Install entire Phosphor application stack by default
+IMAGE_FEATURES += " \
+       obmc-phosphor-fan-mgmt \
+       obmc-phosphor-chassis-mgmt \
+       obmc-phosphor-sensor-mgmt \
+       obmc-phosphor-flash-mgmt \
+       obmc-phosphor-event-mgmt \
+       obmc-phosphor-policy-mgmt \
+       obmc-phosphor-system-mgmt \
+       ssh-server-openssh \
+       "
+
+IMAGE_INSTALL += " \
+       bash \
+       "
diff --git a/classes/obmc-phosphor-license.bbclass b/classes/obmc-phosphor-license.bbclass
new file mode 100644
index 0000000..9694f7f
--- /dev/null
+++ b/classes/obmc-phosphor-license.bbclass
@@ -0,0 +1,4 @@
+# Common code for packages distributed without a license that want Apache-2.0.
+
+LICENSE = "Apache-2.0"
+LIC_FILES_CHKSUM = "file://${PHOSPHORBASE}/COPYING.apache-2.0;md5=34400b68072d710fecd0a2940a0d1658"
diff --git a/classes/obmc-phosphor-policy-mgmt.bbclass b/classes/obmc-phosphor-policy-mgmt.bbclass
new file mode 100644
index 0000000..86e0cbe
--- /dev/null
+++ b/classes/obmc-phosphor-policy-mgmt.bbclass
@@ -0,0 +1,3 @@
+# Common code for recipes that implement Phosphor OpenBMC policy management.
+
+RPROVIDES_${PN} += "virtual/obmc-phosphor-policy-mgmt"
diff --git a/classes/obmc-phosphor-py-daemon.bbclass b/classes/obmc-phosphor-py-daemon.bbclass
new file mode 100644
index 0000000..35c2714
--- /dev/null
+++ b/classes/obmc-phosphor-py-daemon.bbclass
@@ -0,0 +1,17 @@
+# Common code for dbus applications using python.
+
+inherit allarch
+inherit obmc-phosphor-systemd
+inherit obmc-phosphor-license
+
+RDEPENDS_${PN} += "python-dbus python-pygobject"
+SRC_URI += " \
+        file://${PN}.py \
+        "
+S = "${WORKDIR}"
+
+do_install_append() {
+        # install the script
+        install -d ${D}${sbindir}
+        install -m 0755 ${WORKDIR}/${PN}.py ${D}${sbindir}/${PN}
+}
diff --git a/classes/obmc-phosphor-sensor-mgmt.bbclass b/classes/obmc-phosphor-sensor-mgmt.bbclass
new file mode 100644
index 0000000..9939386
--- /dev/null
+++ b/classes/obmc-phosphor-sensor-mgmt.bbclass
@@ -0,0 +1,3 @@
+# Common code for recipes that implement Phosphor OpenBMC sensor management.
+
+RPROVIDES_${PN} += "virtual/obmc-phosphor-sensor-mgmt"
diff --git a/classes/obmc-phosphor-system-mgmt.bbclass b/classes/obmc-phosphor-system-mgmt.bbclass
new file mode 100644
index 0000000..4939d2f
--- /dev/null
+++ b/classes/obmc-phosphor-system-mgmt.bbclass
@@ -0,0 +1,3 @@
+# Common code for recipes that implement Phosphor OpenBMC system management.
+
+RPROVIDES_${PN} += "virtual/obmc-phosphor-system-mgmt"
diff --git a/classes/obmc-phosphor-systemd.bbclass b/classes/obmc-phosphor-systemd.bbclass
new file mode 100644
index 0000000..7bd2d9d
--- /dev/null
+++ b/classes/obmc-phosphor-systemd.bbclass
@@ -0,0 +1,14 @@
+# Common code for Phosphor OpenBMC systemd services.
+
+inherit systemd
+
+SYSTEMD_SERVICE_${PN} = "${PN}.service"
+SRC_URI += " \
+        file://${PN}.service \
+        "
+
+do_install_append() {
+        # install systemd unit files
+        install -d ${D}${systemd_unitdir}/system
+        install -m 0644 ${WORKDIR}/${PN}.service ${D}${systemd_unitdir}/system
+}
diff --git a/classes/obmc-phosphor-utils.bbclass b/classes/obmc-phosphor-utils.bbclass
new file mode 100644
index 0000000..4f55629
--- /dev/null
+++ b/classes/obmc-phosphor-utils.bbclass
@@ -0,0 +1,14 @@
+# Helper functions for checking feature variables.
+
+inherit utils
+
+def df_enabled(feature, value, d):
+        return base_contains("DISTRO_FEATURES", feature, value, "", d)
+
+def mf_enabled(feature, value, d):
+        return base_contains("MACHINE_FEATURES", feature, value, "", d)
+
+def cf_enabled(feature, value, d):
+        return value if df_enabled(feature, value, d) \
+                and mf_enabled(feature, value, d) \
+                        else ""
diff --git a/common/recipes-phosphor/images/obmc-phosphor-image-no-sysmgr.bb b/common/recipes-phosphor/images/obmc-phosphor-image-no-sysmgr.bb
new file mode 100644
index 0000000..519db4a
--- /dev/null
+++ b/common/recipes-phosphor/images/obmc-phosphor-image-no-sysmgr.bb
@@ -0,0 +1,8 @@
+DESCRIPTION = "Sample image recipe using Phosphor, an OpenBMC \
+framework, illustrating the removal of a default image feature."
+
+require obmc-phosphor-image.bb
+
+IMAGE_FEATURES_remove = " \
+        obmc-phosphor-system-mgmt \
+        "
diff --git a/common/recipes-phosphor/images/obmc-phosphor-image.bb b/common/recipes-phosphor/images/obmc-phosphor-image.bb
new file mode 100644
index 0000000..8e481a1
--- /dev/null
+++ b/common/recipes-phosphor/images/obmc-phosphor-image.bb
@@ -0,0 +1,3 @@
+DESCRIPTION = "Image with Phosphor, an OpenBMC framework."
+
+inherit obmc-phosphor-image
diff --git a/common/recipes-phosphor/obmc-phosphor-chassis/files/obmc-phosphor-chassisd.py b/common/recipes-phosphor/obmc-phosphor-chassis/files/obmc-phosphor-chassisd.py
new file mode 100644
index 0000000..a68f2e5
--- /dev/null
+++ b/common/recipes-phosphor/obmc-phosphor-chassis/files/obmc-phosphor-chassisd.py
@@ -0,0 +1,29 @@
+#!/usr/bin/env python
+
+# Contributors Listed Below - COPYRIGHT 2015
+# [+] International Business Machines Corp.
+#
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#     http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
+# implied. See the License for the specific language governing
+# permissions and limitations under the License.
+
+import time
+import sys
+import dbus
+import dbus.service
+import dbus.mainloop.glib
+
+if __name__ == '__main__':
+	print "obmc-phosphor-chassisd starting..."
+
+	while 1:
+		time.sleep(5)
diff --git a/common/recipes-phosphor/obmc-phosphor-chassis/files/obmc-phosphor-chassisd.service b/common/recipes-phosphor/obmc-phosphor-chassis/files/obmc-phosphor-chassisd.service
new file mode 100644
index 0000000..7711511
--- /dev/null
+++ b/common/recipes-phosphor/obmc-phosphor-chassis/files/obmc-phosphor-chassisd.service
@@ -0,0 +1,8 @@
+[Unit]
+Description=Phosphor OpenBMC chassis management daemon
+
+[Service]
+ExecStart=/usr/sbin/obmc-phosphor-chassisd
+
+[Install]
+WantedBy=multi-user.target
diff --git a/common/recipes-phosphor/obmc-phosphor-chassis/obmc-phosphor-chassisd.bb b/common/recipes-phosphor/obmc-phosphor-chassis/obmc-phosphor-chassisd.bb
new file mode 100644
index 0000000..2ff0dcf
--- /dev/null
+++ b/common/recipes-phosphor/obmc-phosphor-chassis/obmc-phosphor-chassisd.bb
@@ -0,0 +1,6 @@
+SUMMARY = "Phosphor OpenBMC Chassis Management"
+DESCRIPTION = "Phosphor OpenBMC chassis management reference implementation."
+PR = "r1"
+
+inherit obmc-phosphor-chassis-mgmt
+inherit obmc-phosphor-py-daemon
diff --git a/common/recipes-phosphor/obmc-phosphor-event/files/obmc-phosphor-eventd.py b/common/recipes-phosphor/obmc-phosphor-event/files/obmc-phosphor-eventd.py
new file mode 100644
index 0000000..ed45068
--- /dev/null
+++ b/common/recipes-phosphor/obmc-phosphor-event/files/obmc-phosphor-eventd.py
@@ -0,0 +1,29 @@
+#!/usr/bin/env python
+
+# Contributors Listed Below - COPYRIGHT 2015
+# [+] International Business Machines Corp.
+#
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#     http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
+# implied. See the License for the specific language governing
+# permissions and limitations under the License.
+
+import time
+import sys
+import dbus
+import dbus.service
+import dbus.mainloop.glib
+
+if __name__ == '__main__':
+	print "obmc-phosphor-eventd starting..."
+
+	while 1:
+		time.sleep(5)
diff --git a/common/recipes-phosphor/obmc-phosphor-event/files/obmc-phosphor-eventd.service b/common/recipes-phosphor/obmc-phosphor-event/files/obmc-phosphor-eventd.service
new file mode 100644
index 0000000..8e0266b
--- /dev/null
+++ b/common/recipes-phosphor/obmc-phosphor-event/files/obmc-phosphor-eventd.service
@@ -0,0 +1,8 @@
+[Unit]
+Description=Phosphor OpenBMC event management daemon
+
+[Service]
+ExecStart=/usr/sbin/obmc-phosphor-eventd
+
+[Install]
+WantedBy=multi-user.target
diff --git a/common/recipes-phosphor/obmc-phosphor-event/obmc-phosphor-eventd.bb b/common/recipes-phosphor/obmc-phosphor-event/obmc-phosphor-eventd.bb
new file mode 100644
index 0000000..92b0ded
--- /dev/null
+++ b/common/recipes-phosphor/obmc-phosphor-event/obmc-phosphor-eventd.bb
@@ -0,0 +1,6 @@
+SUMMARY = "Phosphor OpenBMC Event Management"
+DESCRIPTION = "Phosphor OpenBMC event management reference implementation."
+PR = "r1"
+
+inherit obmc-phosphor-event-mgmt
+inherit obmc-phosphor-py-daemon
diff --git a/common/recipes-phosphor/obmc-phosphor-fan/files/Makefile b/common/recipes-phosphor/obmc-phosphor-fan/files/Makefile
new file mode 100644
index 0000000..b8f103d
--- /dev/null
+++ b/common/recipes-phosphor/obmc-phosphor-fan/files/Makefile
@@ -0,0 +1,15 @@
+EXE     = obmc-phosphor-fand
+OBJS    = $(EXE).o
+DEPPKGS = gio-unix-2.0 glib-2.0
+CC      = $(CROSS_COMPILE)gcc
+INCLUDES += $(shell pkg-config --cflags $(DEPPKGS))
+LIBS += $(shell pkg-config --libs $(DEPPKGS))
+
+%.o : %.c
+	$(CC) $(CFLAGS) $(INCLUDES) -c $< -o $@
+$(EXE): $(OBJS)
+	$(CC) $(LDFLAGS) $(LIBS) $^ -o $@
+clean:
+	rm -f $(OBJS) $(EXE) *.o *.d
+distclean: clean
+	rm -f *.c~ *.h~ *.sh~ Makefile~ config.mk~
diff --git a/common/recipes-phosphor/obmc-phosphor-fan/files/obmc-phosphor-fand.c b/common/recipes-phosphor/obmc-phosphor-fan/files/obmc-phosphor-fand.c
new file mode 100644
index 0000000..558ba10
--- /dev/null
+++ b/common/recipes-phosphor/obmc-phosphor-fan/files/obmc-phosphor-fand.c
@@ -0,0 +1,29 @@
+/* Contributors Listed Below - COPYRIGHT 2015                             */
+/* [+] International Business Machines Corp.                              */
+/*                                                                        */
+/*                                                                        */
+/* Licensed under the Apache License, Version 2.0 (the "License");        */
+/* you may not use this file except in compliance with the License.       */
+/* You may obtain a copy of the License at                                */
+/*                                                                        */
+/*     http://www.apache.org/licenses/LICENSE-2.0                         */
+/*                                                                        */
+/* Unless required by applicable law or agreed to in writing, software    */
+/* distributed under the License is distributed on an "AS IS" BASIS,      */
+/* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or        */
+/* implied. See the License for the specific language governing           */
+/* permissions and limitations under the License.                         */
+
+#include <stdio.h>
+#include <stdlib.h>
+#include <gio/gio.h>
+
+int main(int argc, char *argv[])
+{
+	printf("obmc-phosphor-fand starting...\n");
+
+	while(1)
+		sleep(5);
+
+	exit(EXIT_SUCCESS);
+}
diff --git a/common/recipes-phosphor/obmc-phosphor-fan/files/obmc-phosphor-fand.service b/common/recipes-phosphor/obmc-phosphor-fan/files/obmc-phosphor-fand.service
new file mode 100644
index 0000000..0dc2b02
--- /dev/null
+++ b/common/recipes-phosphor/obmc-phosphor-fan/files/obmc-phosphor-fand.service
@@ -0,0 +1,8 @@
+[Unit]
+Description=Phosphor OpenBMC fan management daemon
+
+[Service]
+ExecStart=/usr/sbin/obmc-phosphor-fand
+
+[Install]
+WantedBy=multi-user.target
diff --git a/common/recipes-phosphor/obmc-phosphor-fan/obmc-phosphor-fand.bb b/common/recipes-phosphor/obmc-phosphor-fan/obmc-phosphor-fand.bb
new file mode 100644
index 0000000..c83e825
--- /dev/null
+++ b/common/recipes-phosphor/obmc-phosphor-fan/obmc-phosphor-fand.bb
@@ -0,0 +1,6 @@
+SUMMARY = "Phosphor OpenBMC Fan Management."
+DESCRIPTION = "Phosphor OpenBMC fan management reference implementation."
+PR = "r1"
+
+inherit obmc-phosphor-fan-mgmt
+inherit obmc-phosphor-c-daemon
diff --git a/common/recipes-phosphor/obmc-phosphor-flash/files/obmc-phosphor-flashd.py b/common/recipes-phosphor/obmc-phosphor-flash/files/obmc-phosphor-flashd.py
new file mode 100644
index 0000000..5e5dd8f
--- /dev/null
+++ b/common/recipes-phosphor/obmc-phosphor-flash/files/obmc-phosphor-flashd.py
@@ -0,0 +1,29 @@
+#!/usr/bin/env python
+
+# Contributors Listed Below - COPYRIGHT 2015
+# [+] International Business Machines Corp.
+#
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#     http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
+# implied. See the License for the specific language governing
+# permissions and limitations under the License.
+
+import time
+import sys
+import dbus
+import dbus.service
+import dbus.mainloop.glib
+
+if __name__ == '__main__':
+	print "obmc-phosphor-flashd starting..."
+
+	while 1:
+		time.sleep(5)
diff --git a/common/recipes-phosphor/obmc-phosphor-flash/files/obmc-phosphor-flashd.service b/common/recipes-phosphor/obmc-phosphor-flash/files/obmc-phosphor-flashd.service
new file mode 100644
index 0000000..2f518f3
--- /dev/null
+++ b/common/recipes-phosphor/obmc-phosphor-flash/files/obmc-phosphor-flashd.service
@@ -0,0 +1,8 @@
+[Unit]
+Description=Phosphor OpenBMC flash management daemon
+
+[Service]
+ExecStart=/usr/sbin/obmc-phosphor-flashd
+
+[Install]
+WantedBy=multi-user.target
diff --git a/common/recipes-phosphor/obmc-phosphor-flash/obmc-phosphor-flashd.bb b/common/recipes-phosphor/obmc-phosphor-flash/obmc-phosphor-flashd.bb
new file mode 100644
index 0000000..8221019
--- /dev/null
+++ b/common/recipes-phosphor/obmc-phosphor-flash/obmc-phosphor-flashd.bb
@@ -0,0 +1,6 @@
+SUMMARY = "Phosphor OpenBMC Flash Management"
+DESCRIPTION = "Phosphor OpenBMC flash management reference implementation."
+PR = "r1"
+
+inherit obmc-phosphor-flash-mgmt
+inherit obmc-phosphor-py-daemon
diff --git a/common/recipes-phosphor/obmc-phosphor-policy/files/obmc-phosphor-policyd.py b/common/recipes-phosphor/obmc-phosphor-policy/files/obmc-phosphor-policyd.py
new file mode 100644
index 0000000..48f19d4
--- /dev/null
+++ b/common/recipes-phosphor/obmc-phosphor-policy/files/obmc-phosphor-policyd.py
@@ -0,0 +1,29 @@
+#!/usr/bin/env python
+
+# Contributors Listed Below - COPYRIGHT 2015
+# [+] International Business Machines Corp.
+#
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#     http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
+# implied. See the License for the specific language governing
+# permissions and limitations under the License.
+
+import time
+import sys
+import dbus
+import dbus.service
+import dbus.mainloop.glib
+
+if __name__ == '__main__':
+	print "obmc-phosphor-policyd starting..."
+
+	while 1:
+		time.sleep(5)
diff --git a/common/recipes-phosphor/obmc-phosphor-policy/files/obmc-phosphor-policyd.service b/common/recipes-phosphor/obmc-phosphor-policy/files/obmc-phosphor-policyd.service
new file mode 100644
index 0000000..9a1f6fe
--- /dev/null
+++ b/common/recipes-phosphor/obmc-phosphor-policy/files/obmc-phosphor-policyd.service
@@ -0,0 +1,8 @@
+[Unit]
+Description=Phosphor OpenBMC policy management daemon
+
+[Service]
+ExecStart=/usr/sbin/obmc-phosphor-policyd
+
+[Install]
+WantedBy=multi-user.target
diff --git a/common/recipes-phosphor/obmc-phosphor-policy/obmc-phosphor-policyd.bb b/common/recipes-phosphor/obmc-phosphor-policy/obmc-phosphor-policyd.bb
new file mode 100644
index 0000000..6c8d6fc
--- /dev/null
+++ b/common/recipes-phosphor/obmc-phosphor-policy/obmc-phosphor-policyd.bb
@@ -0,0 +1,6 @@
+SUMMARY = "Phosphor OpenBMC Policy Management"
+DESCRIPTION = "Phosphor OpenBMC policy management reference implementation."
+PR = "r1"
+
+inherit obmc-phosphor-policy-mgmt
+inherit obmc-phosphor-py-daemon
diff --git a/common/recipes-phosphor/obmc-phosphor-qemu/files/Makefile b/common/recipes-phosphor/obmc-phosphor-qemu/files/Makefile
new file mode 100644
index 0000000..6517af0
--- /dev/null
+++ b/common/recipes-phosphor/obmc-phosphor-qemu/files/Makefile
@@ -0,0 +1,15 @@
+EXE     = obmc-phosphor-qemu
+OBJS    = $(EXE).o
+PACKAGES= gio-unix-2.0 glib-2.0
+INCLUDES += $(shell pkg-config --cflags $(PACKAGES))
+LIBS += $(shell pkg-config --libs $(PACKAGES))
+CC      = $(CROSS_COMPILE)gcc
+
+%.o : %.c
+	$(CC) $(CFLAGS) $(INCLUDES) -c $< -o $@
+$(EXE): $(OBJS)
+	$(CC) $(LDFLAGS) $(LIBS) $^ -o $@
+clean:
+	rm -f $(OBJS) $(EXE) *.o *.d
+distclean: clean
+	rm -f *.c~ *.h~ *.sh~ Makefile~ config.mk~
diff --git a/common/recipes-phosphor/obmc-phosphor-qemu/files/obmc-phosphor-qemu.c b/common/recipes-phosphor/obmc-phosphor-qemu/files/obmc-phosphor-qemu.c
new file mode 100644
index 0000000..8076132
--- /dev/null
+++ b/common/recipes-phosphor/obmc-phosphor-qemu/files/obmc-phosphor-qemu.c
@@ -0,0 +1,13 @@
+#include <stdio.h>
+#include <stdlib.h>
+#include <gio/gio.h>
+
+int main(int argc, char *argv[])
+{
+	printf("obmc-phosphor-qemu...\n");
+
+	while(1)
+		sleep(5);
+
+	exit(EXIT_SUCCESS);
+}
diff --git a/common/recipes-phosphor/obmc-phosphor-qemu/files/obmc-phosphor-qemu.service b/common/recipes-phosphor/obmc-phosphor-qemu/files/obmc-phosphor-qemu.service
new file mode 100644
index 0000000..0cf4e15
--- /dev/null
+++ b/common/recipes-phosphor/obmc-phosphor-qemu/files/obmc-phosphor-qemu.service
@@ -0,0 +1,8 @@
+[Unit]
+Description=Phosphor OpenBMC QEMU application example
+
+[Service]
+ExecStart=/usr/sbin/obmc-phosphor-qemu
+
+[Install]
+WantedBy=multi-user.target
diff --git a/common/recipes-phosphor/obmc-phosphor-qemu/obmc-phosphor-qemu.bb b/common/recipes-phosphor/obmc-phosphor-qemu/obmc-phosphor-qemu.bb
new file mode 100644
index 0000000..3e4541d
--- /dev/null
+++ b/common/recipes-phosphor/obmc-phosphor-qemu/obmc-phosphor-qemu.bb
@@ -0,0 +1,5 @@
+SUMMARY = "Phosphor OpenBMC BSP Example Application"
+DESCRIPTION = "Phosphor OpenBMC QEMU BSP example implementation."
+PR = "r1"
+
+inherit obmc-phosphor-c-daemon
diff --git a/common/recipes-phosphor/obmc-phosphor-sensor/files/obmc-phosphor-sensord.py b/common/recipes-phosphor/obmc-phosphor-sensor/files/obmc-phosphor-sensord.py
new file mode 100644
index 0000000..c9771ac
--- /dev/null
+++ b/common/recipes-phosphor/obmc-phosphor-sensor/files/obmc-phosphor-sensord.py
@@ -0,0 +1,29 @@
+#!/usr/bin/env python
+
+# Contributors Listed Below - COPYRIGHT 2015
+# [+] International Business Machines Corp.
+#
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#     http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
+# implied. See the License for the specific language governing
+# permissions and limitations under the License.
+
+import time
+import sys
+import dbus
+import dbus.service
+import dbus.mainloop.glib
+
+if __name__ == '__main__':
+	print "obmc-phosphor-sensord starting..."
+
+	while 1:
+		time.sleep(5)
diff --git a/common/recipes-phosphor/obmc-phosphor-sensor/files/obmc-phosphor-sensord.service b/common/recipes-phosphor/obmc-phosphor-sensor/files/obmc-phosphor-sensord.service
new file mode 100644
index 0000000..233ca47
--- /dev/null
+++ b/common/recipes-phosphor/obmc-phosphor-sensor/files/obmc-phosphor-sensord.service
@@ -0,0 +1,8 @@
+[Unit]
+Description=Phosphor OpenBMC sensor management daemon
+
+[Service]
+ExecStart=/usr/sbin/obmc-phosphor-sensord
+
+[Install]
+WantedBy=multi-user.target
diff --git a/common/recipes-phosphor/obmc-phosphor-sensor/obmc-phosphor-sensord.bb b/common/recipes-phosphor/obmc-phosphor-sensor/obmc-phosphor-sensord.bb
new file mode 100644
index 0000000..382d055
--- /dev/null
+++ b/common/recipes-phosphor/obmc-phosphor-sensor/obmc-phosphor-sensord.bb
@@ -0,0 +1,6 @@
+SUMMARY = "Phosphor OpenBMC Sensor Management"
+DESCRIPTION = "Phosphor OpenBMC sensor management reference implementation."
+PR = "r1"
+
+inherit obmc-phosphor-sensor-mgmt
+inherit obmc-phosphor-py-daemon
diff --git a/common/recipes-phosphor/obmc-phosphor-sys/files/obmc-phosphor-sysd.py b/common/recipes-phosphor/obmc-phosphor-sys/files/obmc-phosphor-sysd.py
new file mode 100644
index 0000000..c8080ac
--- /dev/null
+++ b/common/recipes-phosphor/obmc-phosphor-sys/files/obmc-phosphor-sysd.py
@@ -0,0 +1,29 @@
+#!/usr/bin/env python
+
+# Contributors Listed Below - COPYRIGHT 2015
+# [+] International Business Machines Corp.
+#
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#     http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
+# implied. See the License for the specific language governing
+# permissions and limitations under the License.
+
+import time
+import sys
+import dbus
+import dbus.service
+import dbus.mainloop.glib
+
+if __name__ == '__main__':
+	print "obmc-phosphor-watchdogd starting..."
+
+	while 1:
+		time.sleep(5)
diff --git a/common/recipes-phosphor/obmc-phosphor-sys/files/obmc-phosphor-sysd.service b/common/recipes-phosphor/obmc-phosphor-sys/files/obmc-phosphor-sysd.service
new file mode 100644
index 0000000..d3d954d
--- /dev/null
+++ b/common/recipes-phosphor/obmc-phosphor-sys/files/obmc-phosphor-sysd.service
@@ -0,0 +1,8 @@
+[Unit]
+Description=Phosphor OpenBMC system management daemon
+
+[Service]
+ExecStart=/usr/sbin/obmc-phosphor-sysd
+
+[Install]
+WantedBy=multi-user.target
diff --git a/common/recipes-phosphor/obmc-phosphor-sys/obmc-phosphor-sysd.bb b/common/recipes-phosphor/obmc-phosphor-sys/obmc-phosphor-sysd.bb
new file mode 100644
index 0000000..99927db
--- /dev/null
+++ b/common/recipes-phosphor/obmc-phosphor-sys/obmc-phosphor-sysd.bb
@@ -0,0 +1,6 @@
+SUMMARY = "Phosphor OpenBMC System Management"
+DESCRIPTION = "Phosphor OpenBMC system management reference implementation."
+PR = "r1"
+
+inherit obmc-phosphor-system-mgmt
+inherit obmc-phosphor-py-daemon
diff --git a/common/recipes-phosphor/packagegroups/packagegroup-obmc-phosphor-apps.bb b/common/recipes-phosphor/packagegroups/packagegroup-obmc-phosphor-apps.bb
new file mode 100644
index 0000000..634f5d8
--- /dev/null
+++ b/common/recipes-phosphor/packagegroups/packagegroup-obmc-phosphor-apps.bb
@@ -0,0 +1,68 @@
+SUMMARY = "Phosphor OpenBMC - Applications"
+PR = "r1"
+
+inherit packagegroup
+inherit obmc-phosphor-utils
+inherit obmc-phosphor-license
+
+VIRTUAL-RUNTIME_obmc-phosphor-fan-ctl ?= "virtual/obmc-phosphor-fan-ctl"
+VIRTUAL-RUNTIME_obmc-phosphor-sensor-ctl ?= "virtual/obmc-phosphor-sensor-ctl"
+VIRTUAL-RUNTIME_obmc-phosphor-chassis-ctl ?= "virtual/obmc-phosphor-chassis-ctl"
+VIRTUAL-RUNTIME_obmc-phosphor-flash-ctl ?= "virtual/obmc-phosphor-flash-ctl"
+
+PROVIDES = "${PACKAGES}"
+PACKAGES = " \
+        ${@mf_enabled("obmc-phosphor-fan-mgmt", "packagegroup-obmc-phosphor-apps-fan-mgmt", d)} \
+        ${@mf_enabled("obmc-phosphor-chassis-mgmt", "packagegroup-obmc-phosphor-apps-chassis-mgmt", d)} \
+        ${@mf_enabled("obmc-phosphor-sensor-mgmt", "packagegroup-obmc-phosphor-apps-sensor-mgmt", d)} \
+        ${@mf_enabled("obmc-phosphor-flash-mgmt", "packagegroup-obmc-phosphor-apps-flash-mgmt", d)} \
+        ${@df_enabled("obmc-phosphor-event-mgmt", "packagegroup-obmc-phosphor-apps-event-mgmt", d)} \
+        ${@df_enabled("obmc-phosphor-policy-mgmt", "packagegroup-obmc-phosphor-apps-policy-mgmt", d)} \
+        ${@df_enabled("obmc-phosphor-system-mgmt", "packagegroup-obmc-phosphor-apps-system-mgmt", d)} \
+        "
+
+SUMMARY_packagegroup-obmc-phosphor-apps-fan-mgmt = "Fan management support"
+RDEPENDS_packagegroup-obmc-phosphor-apps-fan-mgmt = \
+        "${@cf_enabled("obmc-phosphor-fan-mgmt", " \
+                virtual/obmc-phosphor-fan-mgmt \
+                ${VIRTUAL-RUNTIME_obmc-phosphor-fan-ctl} \
+        ", d)}"
+
+SUMMARY_packagegroup-obmc-phosphor-apps-chassis-mgmt = "Chassis management support"
+RDEPENDS_packagegroup-obmc-phosphor-apps-chassis-mgmt = "\
+        ${@cf_enabled("obmc-phosphor-chassis-mgmt", " \
+                virtual/obmc-phosphor-chassis-mgmt \
+                ${VIRTUAL-RUNTIME_obmc-phosphor-chassis-ctl} \
+        ", d)}"
+
+SUMMARY_packagegroup-obmc-phosphor-apps-sensor-mgmt = "Sensor management support"
+RDEPENDS_packagegroup-obmc-phosphor-apps-sensor-mgmt = "\
+        ${@cf_enabled("obmc-phosphor-sensor-mgmt", " \
+                virtual/obmc-phosphor-sensor-mgmt \
+                ${VIRTUAL-RUNTIME_obmc-phosphor-sensor-ctl} \
+        ", d)}"
+
+SUMMARY_packagegroup-obmc-phosphor-apps-flash-mgmt = "Flash management support"
+RDEPENDS_packagegroup-obmc-phosphor-apps-flash-mgmt = "\
+        ${@cf_enabled("obmc-phosphor-flash-mgmt", " \
+                virtual/obmc-phosphor-flash-mgmt \
+                ${VIRTUAL-RUNTIME_obmc-phosphor-flash-ctl} \
+        ", d)}"
+
+SUMMARY_packagegroup-obmc-phosphor-apps-event-mgmt = "Event management support"
+RDEPENDS_packagegroup-obmc-phosphor-apps-event-mgmt = " \
+        ${@df_enabled("obmc-phosphor-event-mgmt", " \
+                virtual/obmc-phosphor-event-mgmt \
+        ", d)}"
+
+SUMMARY_packagegroup-obmc-phosphor-apps-policy-mgmt = "Policy management support"
+RDEPENDS_packagegroup-obmc-phosphor-apps-policy-mgmt = " \
+        ${@df_enabled("obmc-phosphor-policy-mgmt", " \
+                virtual/obmc-phosphor-policy-mgmt \
+        ", d)}"
+
+SUMMARY_packagegroup-obmc-phosphor-apps-system-mgmt = "System management support"
+RDEPENDS_packagegroup-obmc-phosphor-apps-system-mgmt = " \
+        ${@df_enabled("obmc-phosphor-system-mgmt", " \
+                virtual/obmc-phosphor-system-mgmt \
+        ", d)}"
diff --git a/common/recipes.txt b/common/recipes.txt
new file mode 100644
index 0000000..c2c88b7
--- /dev/null
+++ b/common/recipes.txt
@@ -0,0 +1 @@
+recipes-phosphor      - Phosphor OpenBMC applications and configuration
diff --git a/conf/bblayers.conf.sample b/conf/bblayers.conf.sample
new file mode 100644
index 0000000..caab032
--- /dev/null
+++ b/conf/bblayers.conf.sample
@@ -0,0 +1,17 @@
+# LAYER_CONF_VERSION is increased each time build/conf/bblayers.conf
+# changes incompatibly
+LCONF_VERSION = "6"
+
+BBPATH = "${TOPDIR}"
+BBFILES ?= ""
+
+BBLAYERS ?= " \
+  ##OEROOT##/meta \
+  ##OEROOT##/meta-yocto \
+  ##OEROOT##/meta-phosphor \
+  ##OEROOT##/meta-phosphor/meta-sample-bsp \
+  "
+BBLAYERS_NON_REMOVABLE ?= " \
+  ##OEROOT##/meta \
+  ##OEROOT##/meta-yocto \
+  "
diff --git a/conf/conf-notes.txt b/conf/conf-notes.txt
new file mode 100644
index 0000000..3570355
--- /dev/null
+++ b/conf/conf-notes.txt
@@ -0,0 +1,6 @@
+Common targets are:
+     obmc-phosphor-image
+
+You can also run generated qemu images with a command like:
+     idir=tmp/deploy/images/qemuphosphor
+     runqemu qemuarm $idir/zImage-qemuphosphor.bin $idir/obmc-phosphor-image-qemuphosphor.ext4
diff --git a/conf/distro/openbmc-phosphor.conf b/conf/distro/openbmc-phosphor.conf
new file mode 100644
index 0000000..ee457c8
--- /dev/null
+++ b/conf/distro/openbmc-phosphor.conf
@@ -0,0 +1,27 @@
+require conf/distro/poky.conf
+
+DISTRO = "openbmc-phosphor"
+DISTRO_NAME = "Phosphor OpenBMC (Phosphor OpenBMC Project Reference Distro)"
+DISTRO_VERSION = "0.1.0"
+
+IMAGE_FSTYPES += "cpio.gz"
+
+VIRTUAL-RUNTIME_keymaps = ""
+
+# Phosphor OpenBMC uses systemd and udev
+DISTRO_FEATURES_append = " systemd"
+VIRTUAL-RUNTIME_init_manager = "systemd"
+DISTRO_FEATURES_BACKFILL_CONSIDERED = "sysvinit"
+VIRTUAL-RUNTIME_initscripts = ""
+
+DISTRO_FEATURES = "\
+        ipv6 \
+        obmc-phosphor-fan-mgmt \
+        obmc-phosphor-chassis-mgmt \
+        obmc-phosphor-sensor-mgmt \
+        obmc-phosphor-flash-mgmt \
+        obmc-phosphor-event-mgmt \
+        obmc-phosphor-policy-mgmt \
+        obmc-phosphor-system-mgmt \
+        ${DISTRO_FEATURES_LIBC} \
+        "
diff --git a/conf/layer.conf b/conf/layer.conf
new file mode 100644
index 0000000..ffccec0
--- /dev/null
+++ b/conf/layer.conf
@@ -0,0 +1,13 @@
+# We have a conf and classes directory, add to BBPATH
+BBPATH .= ":${LAYERDIR}"
+
+# We have recipes-* directories, add to BBFILES
+BBFILES += "${LAYERDIR}/common/recipes-*/*/*.bb \
+            ${LAYERDIR}/common/recipes-*/*/*.bbappend"
+
+BBFILE_COLLECTIONS += "obmc-phosphor"
+BBFILE_PATTERN_obmc-phosphor = "^${LAYERDIR}/"
+LAYERVERSION_obmc-phosphor = "1"
+
+# Provide a variable that points the base of the phosphor layer.
+PHOSPHORBASE = '${@os.path.normpath("${LAYERDIR}/")}'
diff --git a/conf/local.conf.sample b/conf/local.conf.sample
new file mode 100644
index 0000000..e6b6d66
--- /dev/null
+++ b/conf/local.conf.sample
@@ -0,0 +1,244 @@
+#
+# This file is your local configuration file and is where all local user settings
+# are placed. The comments in this file give some guide to the options a new user
+# to the system might want to change but pretty much any configuration option can
+# be set in this file. More adventurous users can look at local.conf.extended 
+# which contains other examples of configuration which can be placed in this file
+# but new users likely won't need any of them initially.
+#
+# Lines starting with the '#' character are commented out and in some cases the 
+# default values are provided as comments to show people example syntax. Enabling
+# the option is a question of removing the # character and making any change to the
+# variable as required.
+
+#
+# Machine Selection
+#
+# You need to select a specific machine to target the build with. There are a selection
+# of emulated machines available which can boot and run in the QEMU emulator:
+#
+#MACHINE ?= "qemuarm"
+#MACHINE ?= "qemuarm64"
+#MACHINE ?= "qemumips"
+#MACHINE ?= "qemuppc"
+#MACHINE ?= "qemux86"
+#MACHINE ?= "qemux86-64"
+#
+# There are also the following hardware board target machines included for 
+# demonstration purposes:
+#
+#MACHINE ?= "beaglebone"
+#MACHINE ?= "genericx86"
+#MACHINE ?= "genericx86-64"
+#MACHINE ?= "mpc8315e-rdb"
+#MACHINE ?= "edgerouter"
+#
+# This sets the default machine to be qemux86 if no other machine is selected:
+MACHINE ??= "qemuphosphor"
+
+#
+# Where to place downloads
+#
+# During a first build the system will download many different source code tarballs
+# from various upstream projects. This can take a while, particularly if your network
+# connection is slow. These are all stored in DL_DIR. When wiping and rebuilding you
+# can preserve this directory to speed up this part of subsequent builds. This directory
+# is safe to share between multiple builds on the same machine too.
+#
+# The default is a downloads directory under TOPDIR which is the build directory.
+#
+#DL_DIR ?= "${TOPDIR}/downloads"
+
+#
+# Where to place shared-state files
+#
+# BitBake has the capability to accelerate builds based on previously built output.
+# This is done using "shared state" files which can be thought of as cache objects
+# and this option determines where those files are placed.
+#
+# You can wipe out TMPDIR leaving this directory intact and the build would regenerate
+# from these files if no changes were made to the configuration. If changes were made
+# to the configuration, only shared state files where the state was still valid would
+# be used (done using checksums).
+#
+# The default is a sstate-cache directory under TOPDIR.
+#
+#SSTATE_DIR ?= "${TOPDIR}/sstate-cache"
+
+#
+# Where to place the build output
+#
+# This option specifies where the bulk of the building work should be done and
+# where BitBake should place its temporary files and output. Keep in mind that
+# this includes the extraction and compilation of many applications and the toolchain
+# which can use Gigabytes of hard disk space.
+#
+# The default is a tmp directory under TOPDIR.
+#
+#TMPDIR = "${TOPDIR}/tmp"
+
+#
+# Default policy config
+#
+# The distribution setting controls which policy settings are used as defaults.
+# The default value is fine for general Yocto project use, at least initially.
+# Ultimately when creating custom policy, people will likely end up subclassing 
+# these defaults.
+#
+DISTRO ?= "openbmc-phosphor"
+# As an example of a subclass there is a "bleeding" edge policy configuration
+# where many versions are set to the absolute latest code from the upstream 
+# source control systems. This is just mentioned here as an example, its not
+# useful to most new users.
+# DISTRO ?= "poky-bleeding"
+
+#
+# Package Management configuration
+#
+# This variable lists which packaging formats to enable. Multiple package backends 
+# can be enabled at once and the first item listed in the variable will be used 
+# to generate the root filesystems.
+# Options are:
+#  - 'package_deb' for debian style deb files
+#  - 'package_ipk' for ipk files are used by opkg (a debian style embedded package manager)
+#  - 'package_rpm' for rpm style packages
+# E.g.: PACKAGE_CLASSES ?= "package_rpm package_deb package_ipk"
+# We default to rpm:
+PACKAGE_CLASSES ?= "package_rpm"
+
+#
+# SDK/ADT target architecture
+#
+# This variable specifies the architecture to build SDK/ADT items for and means
+# you can build the SDK packages for architectures other than the machine you are 
+# running the build on (i.e. building i686 packages on an x86_64 host).
+# Supported values are i686 and x86_64
+#SDKMACHINE ?= "i686"
+
+SANITY_TESTED_DISTROS_append ?= " RedHatEnterpriseWorkstation-6.6"
+#
+# Extra image configuration defaults
+#
+# The EXTRA_IMAGE_FEATURES variable allows extra packages to be added to the generated 
+# images. Some of these options are added to certain image types automatically. The
+# variable can contain the following options:
+#  "dbg-pkgs"       - add -dbg packages for all installed packages
+#                     (adds symbol information for debugging/profiling)
+#  "dev-pkgs"       - add -dev packages for all installed packages
+#                     (useful if you want to develop against libs in the image)
+#  "ptest-pkgs"     - add -ptest packages for all ptest-enabled packages
+#                     (useful if you want to run the package test suites)
+#  "tools-sdk"      - add development tools (gcc, make, pkgconfig etc.)
+#  "tools-debug"    - add debugging tools (gdb, strace)
+#  "eclipse-debug"  - add Eclipse remote debugging support
+#  "tools-profile"  - add profiling tools (oprofile, exmap, lttng, valgrind)
+#  "tools-testapps" - add useful testing tools (ts_print, aplay, arecord etc.)
+#  "debug-tweaks"   - make an image suitable for development
+#                     e.g. ssh root access has a blank password
+# There are other application targets that can be used here too, see
+# meta/classes/image.bbclass and meta/classes/core-image.bbclass for more details.
+# We default to enabling the debugging tweaks.
+EXTRA_IMAGE_FEATURES = "debug-tweaks"
+
+#
+# Additional image features
+#
+# The following is a list of additional classes to use when building images which
+# enable extra features. Some available options which can be included in this variable 
+# are:
+#   - 'buildstats' collect build statistics
+#   - 'image-mklibs' to reduce shared library files size for an image
+#   - 'image-prelink' in order to prelink the filesystem image
+#   - 'image-swab' to perform host system intrusion detection
+# NOTE: if listing mklibs & prelink both, then make sure mklibs is before prelink
+# NOTE: mklibs also needs to be explicitly enabled for a given image, see local.conf.extended
+USER_CLASSES ?= "buildstats image-mklibs image-prelink"
+
+#
+# Runtime testing of images
+#
+# The build system can test booting virtual machine images under qemu (an emulator)
+# after any root filesystems are created and run tests against those images. To
+# enable this uncomment this line. See classes/testimage(-auto).bbclass for
+# further details.
+#TEST_IMAGE = "1"
+#
+# Interactive shell configuration
+#
+# Under certain circumstances the system may need input from you and to do this it 
+# can launch an interactive shell. It needs to do this since the build is 
+# multithreaded and needs to be able to handle the case where more than one parallel
+# process may require the user's attention. The default is iterate over the available
+# terminal types to find one that works.
+#
+# Examples of the occasions this may happen are when resolving patches which cannot
+# be applied, to use the devshell or the kernel menuconfig
+#
+# Supported values are auto, gnome, xfce, rxvt, screen, konsole (KDE 3.x only), none
+# Note: currently, Konsole support only works for KDE 3.x due to the way
+# newer Konsole versions behave
+#OE_TERMINAL = "auto"
+# By default disable interactive patch resolution (tasks will just fail instead):
+PATCHRESOLVE = "noop"
+
+#
+# Disk Space Monitoring during the build
+#
+# Monitor the disk space during the build. If there is less that 1GB of space or less
+# than 100K inodes in any key build location (TMPDIR, DL_DIR, SSTATE_DIR), gracefully
+# shutdown the build. If there is less that 100MB or 1K inodes, perform a hard abort
+# of the build. The reason for this is that running completely out of space can corrupt
+# files and damages the build in ways which may not be easily recoverable.
+# It's necesary to monitor /tmp, if there is no space left the build will fail
+# with very exotic errors.
+BB_DISKMON_DIRS = "\
+    STOPTASKS,${TMPDIR},1G,100K \
+    STOPTASKS,${DL_DIR},1G,100K \
+    STOPTASKS,${SSTATE_DIR},1G,100K \
+    STOPTASKS,/tmp,100M,100K \
+    ABORT,${TMPDIR},100M,1K \
+    ABORT,${DL_DIR},100M,1K \
+    ABORT,${SSTATE_DIR},100M,1K \
+    ABORT,/tmp,10M,1K"
+
+#
+# Shared-state files from other locations
+#
+# As mentioned above, shared state files are prebuilt cache data objects which can 
+# used to accelerate build time. This variable can be used to configure the system
+# to search other mirror locations for these objects before it builds the data itself.
+#
+# This can be a filesystem directory, or a remote url such as http or ftp. These
+# would contain the sstate-cache results from previous builds (possibly from other 
+# machines). This variable works like fetcher MIRRORS/PREMIRRORS and points to the 
+# cache locations to check for the shared objects.
+# NOTE: if the mirror uses the same structure as SSTATE_DIR, you need to add PATH
+# at the end as shown in the examples below. This will be substituted with the
+# correct path within the directory structure.
+#SSTATE_MIRRORS ?= "\
+#file://.* http://someserver.tld/share/sstate/PATH;downloadfilename=PATH \n \
+#file://.* file:///some/local/dir/sstate/PATH"
+
+
+#
+# Qemu configuration
+#
+# By default qemu will build with a builtin VNC server where graphical output can be
+# seen. The two lines below enable the SDL backend too. This assumes there is a
+# libsdl library available on your build system.
+PACKAGECONFIG_append_pn-qemu-native = " sdl"
+PACKAGECONFIG_append_pn-nativesdk-qemu = " sdl"
+ASSUME_PROVIDED += "libsdl-native"
+
+
+# CONF_VERSION is increased each time build/conf/ changes incompatibly and is used to
+# track the version of this file when it was generated. This can safely be ignored if
+# this doesn't mean anything to you.
+CONF_VERSION = "1"
+
+# Set the root password to '0penBmc'
+INHERIT += "extrausers"
+
+EXTRA_USERS_PARAMS = " \
+  usermod -p '\$1\$UGMqyqdG\$FZiylVFmRRfl9Z0Ue8G7e/' root; \
+  "
diff --git a/conf/machine/include/qemuphosphor.inc b/conf/machine/include/qemuphosphor.inc
new file mode 100644
index 0000000..04db4ba
--- /dev/null
+++ b/conf/machine/include/qemuphosphor.inc
@@ -0,0 +1,5 @@
+# The qemu helper scripts don't work with
+# cpio images.
+
+# Prefer linux-yocto with qemu.
+PREFERRED_PROVIDER_virtual/kernel ?= "linux-yocto"
diff --git a/meta-sample-bsp/conf/layer.conf b/meta-sample-bsp/conf/layer.conf
new file mode 100644
index 0000000..90a037c
--- /dev/null
+++ b/meta-sample-bsp/conf/layer.conf
@@ -0,0 +1,10 @@
+# We have a conf and classes directory, add to BBPATH
+BBPATH .= ":${LAYERDIR}"
+
+# We have a recipes-* directories, add to BBFILES
+BBFILES += "${LAYERDIR}/recipes-*/*/*.bb \
+        ${LAYERDIR}/recipes-*/*/*.bbappend"
+
+BBFILE_COLLECTIONS += "qemuphosphor"
+BBFILE_PATTERN_qemuphosphor = "^${LAYERDIR}/"
+LAYERVERSION_qemuphosphor = "1"
diff --git a/meta-sample-bsp/conf/machine/qemuphosphor.conf b/meta-sample-bsp/conf/machine/qemuphosphor.conf
new file mode 100644
index 0000000..076ac41
--- /dev/null
+++ b/meta-sample-bsp/conf/machine/qemuphosphor.conf
@@ -0,0 +1,30 @@
+#@TYPE: Machine
+#@NAME: qemuphosphor
+#@DESCRIPTION: Machine configuration for qemuphosphor systems
+
+require conf/machine/include/qemu.inc
+require conf/machine/include/tune-arm926ejs.inc
+require conf/machine/include/qemuphosphor.inc
+
+KERNEL_IMAGETYPE = "zImage"
+SERIAL_CONSOLE = "115200 ttyAMA0"
+
+MACHINE_FEATURES += "\
+        obmc-phosphor-fan-mgmt \
+        obmc-phosphor-chassis-mgmt \
+        obmc-phosphor-sensor-mgmt \
+        obmc-phosphor-flash-mgmt \
+        "
+
+VIRTUAL-RUNTIME_obmc-phosphor-fan-ctl = " \
+       obmc-phosphor-qemu \
+       "
+VIRTUAL-RUNTIME_obmc-phosphor-sensor-ctl = " \
+       obmc-phosphor-qemu \
+       "
+VIRTUAL-RUNTIME_obmc-phosphor-chassis-ctl = " \
+       obmc-phosphor-qemu \
+       "
+VIRTUAL-RUNTIME_obmc-phosphor-flash-ctl = " \
+       obmc-phosphor-qemu \
+       "
diff --git a/meta-sample-bsp/recipes-bsp/formfactor/formfactor/qemuphosphor/machconfig b/meta-sample-bsp/recipes-bsp/formfactor/formfactor/qemuphosphor/machconfig
new file mode 100644
index 0000000..54a7eab
--- /dev/null
+++ b/meta-sample-bsp/recipes-bsp/formfactor/formfactor/qemuphosphor/machconfig
@@ -0,0 +1,3 @@
+# Assume a USB mouse and keyboard are connected
+HAVE_TOUCHSCREEN=n
+HAVE_KEYBOARD=n
diff --git a/meta-sample-bsp/recipes-bsp/formfactor/formfactor_0.0.bbappend b/meta-sample-bsp/recipes-bsp/formfactor/formfactor_0.0.bbappend
new file mode 100644
index 0000000..6d4804d
--- /dev/null
+++ b/meta-sample-bsp/recipes-bsp/formfactor/formfactor_0.0.bbappend
@@ -0,0 +1,2 @@
+FILESEXTRAPATHS_prepend := "${THISDIR}/${PN}:"
+
diff --git a/meta-sample-bsp/recipes-core/init-ifupdown/init-ifupdown/qemuphosphor/interfaces b/meta-sample-bsp/recipes-core/init-ifupdown/init-ifupdown/qemuphosphor/interfaces
new file mode 100644
index 0000000..d7409f7
--- /dev/null
+++ b/meta-sample-bsp/recipes-core/init-ifupdown/init-ifupdown/qemuphosphor/interfaces
@@ -0,0 +1,5 @@
+# /etc/network/interfaces -- configuration file for ifup(8), ifdown(8)
+
+# The loopback interface
+auto lo
+iface lo inet loopback
diff --git a/meta-sample-bsp/recipes-core/init-ifupdown/init-ifupdown_1.0.bbappend b/meta-sample-bsp/recipes-core/init-ifupdown/init-ifupdown_1.0.bbappend
new file mode 100644
index 0000000..72d991c
--- /dev/null
+++ b/meta-sample-bsp/recipes-core/init-ifupdown/init-ifupdown_1.0.bbappend
@@ -0,0 +1 @@
+FILESEXTRAPATHS_prepend := "${THISDIR}/${PN}:"
diff --git a/meta-sample-bsp/recipes-graphics/xorg-xserver/xserver-xf86-config/qemuphosphor/xorg.conf b/meta-sample-bsp/recipes-graphics/xorg-xserver/xserver-xf86-config/qemuphosphor/xorg.conf
new file mode 100644
index 0000000..d191868
--- /dev/null
+++ b/meta-sample-bsp/recipes-graphics/xorg-xserver/xserver-xf86-config/qemuphosphor/xorg.conf
@@ -0,0 +1,71 @@
+
+Section "Files"
+EndSection
+
+Section "InputDevice"
+    Identifier    "Generic Keyboard"
+    Driver        "evdev"
+    Option        "CoreKeyboard"
+    Option        "Device"      "/dev/input/by-path/platform-i8042-serio-0-event-kbd"
+    Option        "XkbRules"    "xorg"
+    Option        "XkbModel"    "evdev"
+    Option        "XkbLayout"    "us"
+EndSection
+
+Section "InputDevice"
+    Identifier    "Configured Mouse"
+    Driver        "mouse"
+
+    Option        "CorePointer"
+    Option        "Device"        "/dev/input/mice"
+    Option        "Protocol"        "ImPS/2"
+    Option        "ZAxisMapping"        "4 5"
+    Option        "Emulate3Buttons"    "true"
+EndSection
+
+Section "InputDevice"
+    Identifier    "Qemu Tablet"
+    Driver        "evdev"
+    Option        "CorePointer"
+    Option        "Device"        "/dev/input/touchscreen0"
+    Option        "USB"           "on"
+EndSection
+
+Section "Device"
+    Identifier    "Graphics Controller"
+    Driver        "fbdev"
+
+EndSection
+
+Section "Monitor"
+    Identifier    "Generic Monitor"
+    Option        "DPMS"
+    # 1024x600 59.85 Hz (CVT) hsync: 37.35 kHz; pclk: 49.00 MHz
+    Modeline "1024x600_60.00"   49.00  1024 1072 1168 1312  600 603 613 624 -hsync +vsync
+    # 640x480 @ 60Hz (Industry standard) hsync: 31.5kHz
+    ModeLine "640x480"    25.2  640  656  752  800    480  490  492  525 -hsync -vsync
+    # 640x480 @ 72Hz (VESA) hsync: 37.9kHz
+    ModeLine "640x480"    31.5  640  664  704  832    480  489  491  520 -hsync -vsync
+    # 640x480 @ 75Hz (VESA) hsync: 37.5kHz
+    ModeLine "640x480"    31.5  640  656  720  840    480  481  484  500 -hsync -vsync
+    # 640x480 @ 85Hz (VESA) hsync: 43.3kHz
+    ModeLine "640x480"    36.0  640  696  752  832    480  481  484  509 -hsync -vsync
+EndSection
+
+Section "Screen"
+    Identifier    "Default Screen"
+    Device        "Graphics Controller"
+    Monitor        "Generic Monitor"
+    SubSection "Display"
+        Modes     "640x480"
+    EndSubSection
+EndSection
+
+Section "ServerLayout"
+    Identifier    "Default Layout"
+    Screen        "Default Screen"
+    InputDevice    "Generic Keyboard"
+    # InputDevice    "Configured Mouse"
+    InputDevice    "QEMU Tablet"
+    Option         "AllowEmptyInput" "no"
+EndSection
diff --git a/meta-sample-bsp/recipes-graphics/xorg-xserver/xserver-xf86-config_0.1.bbappend b/meta-sample-bsp/recipes-graphics/xorg-xserver/xserver-xf86-config_0.1.bbappend
new file mode 100644
index 0000000..72d991c
--- /dev/null
+++ b/meta-sample-bsp/recipes-graphics/xorg-xserver/xserver-xf86-config_0.1.bbappend
@@ -0,0 +1 @@
+FILESEXTRAPATHS_prepend := "${THISDIR}/${PN}:"
diff --git a/meta-sample-bsp/recipes-kernel/linux/files/qemuphosphor-preempt-rt.scc b/meta-sample-bsp/recipes-kernel/linux/files/qemuphosphor-preempt-rt.scc
new file mode 100644
index 0000000..b9260c7
--- /dev/null
+++ b/meta-sample-bsp/recipes-kernel/linux/files/qemuphosphor-preempt-rt.scc
@@ -0,0 +1,7 @@
+define KMACHINE qemuphosphor
+define KTYPE preempt-rt
+define KARCH arm
+
+include ktypes/preempt-rt/preempt-rt.scc
+
+include qemuphosphor.scc
diff --git a/meta-sample-bsp/recipes-kernel/linux/files/qemuphosphor-standard.scc b/meta-sample-bsp/recipes-kernel/linux/files/qemuphosphor-standard.scc
new file mode 100644
index 0000000..75cd200
--- /dev/null
+++ b/meta-sample-bsp/recipes-kernel/linux/files/qemuphosphor-standard.scc
@@ -0,0 +1,7 @@
+define KMACHINE qemuphosphor
+define KTYPE standard
+define KARCH arm
+
+include bsp/arm-versatile-926ejs/arm-versatile-926ejs-standard
+
+include qemuphosphor.scc
diff --git a/meta-sample-bsp/recipes-kernel/linux/files/qemuphosphor-tiny.scc b/meta-sample-bsp/recipes-kernel/linux/files/qemuphosphor-tiny.scc
new file mode 100644
index 0000000..f479d81
--- /dev/null
+++ b/meta-sample-bsp/recipes-kernel/linux/files/qemuphosphor-tiny.scc
@@ -0,0 +1,7 @@
+define KMACHINE qemuphosphor
+define KTYPE tiny
+define KARCH arm
+
+include ktypes/tiny/tiny.scc
+
+include qemuphosphor.scc
diff --git a/meta-sample-bsp/recipes-kernel/linux/files/qemuphosphor-user-config.cfg b/meta-sample-bsp/recipes-kernel/linux/files/qemuphosphor-user-config.cfg
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/meta-sample-bsp/recipes-kernel/linux/files/qemuphosphor-user-config.cfg
diff --git a/meta-sample-bsp/recipes-kernel/linux/files/qemuphosphor-user-features.scc b/meta-sample-bsp/recipes-kernel/linux/files/qemuphosphor-user-features.scc
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/meta-sample-bsp/recipes-kernel/linux/files/qemuphosphor-user-features.scc
diff --git a/meta-sample-bsp/recipes-kernel/linux/files/qemuphosphor-user-patches.scc b/meta-sample-bsp/recipes-kernel/linux/files/qemuphosphor-user-patches.scc
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/meta-sample-bsp/recipes-kernel/linux/files/qemuphosphor-user-patches.scc
diff --git a/meta-sample-bsp/recipes-kernel/linux/files/qemuphosphor.cfg b/meta-sample-bsp/recipes-kernel/linux/files/qemuphosphor.cfg
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/meta-sample-bsp/recipes-kernel/linux/files/qemuphosphor.cfg
diff --git a/meta-sample-bsp/recipes-kernel/linux/files/qemuphosphor.scc b/meta-sample-bsp/recipes-kernel/linux/files/qemuphosphor.scc
new file mode 100644
index 0000000..52144aa
--- /dev/null
+++ b/meta-sample-bsp/recipes-kernel/linux/files/qemuphosphor.scc
@@ -0,0 +1,4 @@
+kconf hardware qemuphosphor.cfg
+
+kconf hardware qemuphosphor-user-config.cfg
+include qemuphosphor-user-patches.scc
diff --git a/meta-sample-bsp/recipes-kernel/linux/linux-yocto_%.bbappend b/meta-sample-bsp/recipes-kernel/linux/linux-yocto_%.bbappend
new file mode 100644
index 0000000..ce876ad
--- /dev/null
+++ b/meta-sample-bsp/recipes-kernel/linux/linux-yocto_%.bbappend
@@ -0,0 +1,12 @@
+FILESEXTRAPATHS_prepend := "${THISDIR}/files:"
+
+PR := "${PR}.1"
+
+COMPATIBLE_MACHINE_qemuphosphor = "qemuphosphor"
+
+KBRANCH_qemuphosphor  = "standard/arm-versatile-926ejs"
+
+KERNEL_FEATURES_append_qemuphosphor += " cfg/smp.scc"
+
+SRC_URI += "file://qemuphosphor-standard.scc \
+           "