meta-delta/meta-ahe50dc: Add new machine layer

This is an Open19 power shelf with two AST1250 BMCs in a redundant
active/active configuration.  It's not a server and hence has no host to
manage, and so omits many standard BMC services such as host power
control, serial console, and KVM support.  Its primary purpose is to
manage and monitor the six PSUs and 50 efuses (12VDC power outputs) the
AHE-50DC uses to provide power to Open19 bricks and switches.

Signed-off-by: Zev Weiss <zev@bewilderbeest.net>
Change-Id: I56cd21585b987de8d97a15612457e40b4a214d7d
diff --git a/meta-delta/meta-ahe50dc/conf/layer.conf b/meta-delta/meta-ahe50dc/conf/layer.conf
new file mode 100644
index 0000000..2560575
--- /dev/null
+++ b/meta-delta/meta-ahe50dc/conf/layer.conf
@@ -0,0 +1,10 @@
+# We have a conf and classes directory, add to BBPATH
+BBPATH .= ":${LAYERDIR}"
+
+# We have recipes-* directories, add to BBFILES
+BBFILES += "${LAYERDIR}/recipes-*/*/*.bb \
+            ${LAYERDIR}/recipes-*/*/*.bbappend"
+
+BBFILE_COLLECTIONS += "ahe50dc-layer"
+BBFILE_PATTERN_ahe50dc-layer = "^${LAYERDIR}/"
+LAYERSERIES_COMPAT_ahe50dc-layer = "kirkstone langdale"
diff --git a/meta-delta/meta-ahe50dc/conf/machine/ahe50dc.conf b/meta-delta/meta-ahe50dc/conf/machine/ahe50dc.conf
new file mode 100644
index 0000000..aa7e14c
--- /dev/null
+++ b/meta-delta/meta-ahe50dc/conf/machine/ahe50dc.conf
@@ -0,0 +1,36 @@
+KMACHINE = "aspeed"
+KERNEL_DEVICETREE = "${KMACHINE}-bmc-delta-${MACHINE}.dtb"
+
+UBOOT_MACHINE = "evb-ast2400_defconfig"
+UBOOT_DEVICETREE = "ast2400-ahe-50dc"
+
+FLASH_SIZE = "32768"
+
+require conf/machine/include/ast2400.inc
+require conf/machine/include/obmc-bsp-common.inc
+
+PREFERRED_PROVIDER_virtual/obmc-chassis-mgmt = "packagegroup-delta-apps"
+PREFERRED_PROVIDER_virtual/obmc-fan-mgmt = "packagegroup-delta-apps"
+PREFERRED_PROVIDER_virtual/obmc-flash-mgmt = "packagegroup-delta-apps"
+PREFERRED_PROVIDER_virtual/obmc-system-mgmt = "packagegroup-delta-apps"
+
+PREFERRED_PROVIDER_virtual/bootloader = "u-boot-aspeed-sdk"
+PREFERRED_PROVIDER_u-boot = "u-boot-aspeed-sdk"
+PREFERRED_PROVIDER_u-boot-fw-utils = "u-boot-fw-utils-aspeed-sdk"
+
+VIRTUAL-RUNTIME_obmc-inventory-manager = "entity-manager"
+VIRTUAL-RUNTIME_obmc-sensors-hwmon = "dbus-sensors"
+
+# features unneeded because ahe50dc doesn't have a host to manage
+IMAGE_FEATURES:remove = " \
+        obmc-chassis-mgmt \
+        obmc-chassis-state-mgmt \
+        obmc-console \
+        obmc-host-ipmi \
+        obmc-host-state-mgmt \
+        obmc-ikvm \
+        obmc-fan-control \
+        obmc-fan-mgmt \
+        "
+
+SERIAL_CONSOLES:ahe50dc = "115200;ttyS2"
diff --git a/meta-delta/meta-ahe50dc/conf/templates/default/bblayers.conf.sample b/meta-delta/meta-ahe50dc/conf/templates/default/bblayers.conf.sample
new file mode 100644
index 0000000..58e8693
--- /dev/null
+++ b/meta-delta/meta-ahe50dc/conf/templates/default/bblayers.conf.sample
@@ -0,0 +1,18 @@
+# LAYER_CONF_VERSION is increased each time build/conf/bblayers.conf
+# changes incompatibly
+LCONF_VERSION = "8"
+
+BBPATH = "${TOPDIR}"
+BBFILES ?= ""
+
+BBLAYERS ?= " \
+  ##OEROOT##/meta \
+  ##OEROOT##/meta-poky \
+  ##OEROOT##/meta-openembedded/meta-oe \
+  ##OEROOT##/meta-openembedded/meta-networking \
+  ##OEROOT##/meta-openembedded/meta-python \
+  ##OEROOT##/meta-phosphor \
+  ##OEROOT##/meta-aspeed \
+  ##OEROOT##/meta-delta \
+  ##OEROOT##/meta-delta/meta-ahe50dc \
+  "
diff --git a/meta-delta/meta-ahe50dc/conf/templates/default/local.conf.sample b/meta-delta/meta-ahe50dc/conf/templates/default/local.conf.sample
new file mode 100644
index 0000000..ffc53d4
--- /dev/null
+++ b/meta-delta/meta-ahe50dc/conf/templates/default/local.conf.sample
@@ -0,0 +1,17 @@
+MACHINE ??= "ahe50dc"
+DISTRO ?= "openbmc-phosphor"
+PACKAGE_CLASSES ?= "package_ipk"
+SANITY_TESTED_DISTROS:append ?= " *"
+EXTRA_IMAGE_FEATURES = "debug-tweaks"
+USER_CLASSES ?= "buildstats"
+PATCHRESOLVE = "noop"
+BB_DISKMON_DIRS = "\
+    STOPTASKS,${TMPDIR},1G,100K \
+    STOPTASKS,${DL_DIR},1G,100K \
+    STOPTASKS,${SSTATE_DIR},1G,100K \
+    STOPTASKS,/tmp,100M,100K \
+    HALT,${TMPDIR},100M,1K \
+    HALT,${DL_DIR},100M,1K \
+    HALT,${SSTATE_DIR},100M,1K \
+    HALT,/tmp,10M,1K"
+CONF_VERSION = "2"
diff --git a/meta-delta/meta-ahe50dc/recipes-bsp/u-boot/files/ahe50dc.cfg b/meta-delta/meta-ahe50dc/recipes-bsp/u-boot/files/ahe50dc.cfg
new file mode 100644
index 0000000..274b7ef
--- /dev/null
+++ b/meta-delta/meta-ahe50dc/recipes-bsp/u-boot/files/ahe50dc.cfg
@@ -0,0 +1,2 @@
+CONFIG_PHY_BROADCOM=y
+CONFIG_BOOTARGS="console=ttyS2,115200n8 root=/dev/ram rw"
diff --git a/meta-delta/meta-ahe50dc/recipes-bsp/u-boot/u-boot-aspeed-sdk_%.bbappend b/meta-delta/meta-ahe50dc/recipes-bsp/u-boot/u-boot-aspeed-sdk_%.bbappend
new file mode 100644
index 0000000..a4d89c0
--- /dev/null
+++ b/meta-delta/meta-ahe50dc/recipes-bsp/u-boot/u-boot-aspeed-sdk_%.bbappend
@@ -0,0 +1 @@
+require u-boot-common-aspeed-sdk.inc
diff --git a/meta-delta/meta-ahe50dc/recipes-bsp/u-boot/u-boot-common-aspeed-sdk.inc b/meta-delta/meta-ahe50dc/recipes-bsp/u-boot/u-boot-common-aspeed-sdk.inc
new file mode 100644
index 0000000..a1d0fd4
--- /dev/null
+++ b/meta-delta/meta-ahe50dc/recipes-bsp/u-boot/u-boot-common-aspeed-sdk.inc
@@ -0,0 +1,5 @@
+FILESEXTRAPATHS:prepend := "${THISDIR}/files:"
+
+SRC_URI:append = " \
+    file://ahe50dc.cfg \
+    "
diff --git a/meta-delta/meta-ahe50dc/recipes-bsp/u-boot/u-boot-fw-utils-aspeed-sdk_%.bbappend b/meta-delta/meta-ahe50dc/recipes-bsp/u-boot/u-boot-fw-utils-aspeed-sdk_%.bbappend
new file mode 100644
index 0000000..a4d89c0
--- /dev/null
+++ b/meta-delta/meta-ahe50dc/recipes-bsp/u-boot/u-boot-fw-utils-aspeed-sdk_%.bbappend
@@ -0,0 +1 @@
+require u-boot-common-aspeed-sdk.inc
diff --git a/meta-delta/meta-ahe50dc/recipes-delta/packagegroups/packagegroup-delta-apps.bb b/meta-delta/meta-ahe50dc/recipes-delta/packagegroups/packagegroup-delta-apps.bb
new file mode 100644
index 0000000..c8def97
--- /dev/null
+++ b/meta-delta/meta-ahe50dc/recipes-delta/packagegroups/packagegroup-delta-apps.bb
@@ -0,0 +1,40 @@
+SUMMARY = "OpenBMC for Delta Power - Applications"
+PR = "r1"
+
+inherit packagegroup
+
+PROVIDES = "${PACKAGES}"
+PACKAGES = " \
+        ${PN}-chassis \
+        ${PN}-fans \
+        ${PN}-flash \
+        ${PN}-system \
+        "
+
+PROVIDES += "virtual/obmc-chassis-mgmt"
+PROVIDES += "virtual/obmc-fan-mgmt"
+PROVIDES += "virtual/obmc-flash-mgmt"
+PROVIDES += "virtual/obmc-system-mgmt"
+
+RPROVIDES:${PN}-chassis += "virtual-obmc-chassis-mgmt"
+RPROVIDES:${PN}-fans += "virtual-obmc-fan-mgmt"
+RPROVIDES:${PN}-flash += "virtual-obmc-flash-mgmt"
+RPROVIDES:${PN}-system += "virtual-obmc-system-mgmt"
+
+SUMMARY:${PN}-chassis = "Delta Power Chassis"
+RDEPENDS:${PN}-chassis = " \
+        "
+
+SUMMARY:${PN}-fans = "Delta Power Fans"
+RDEPENDS:${PN}-fans = " \
+        "
+
+SUMMARY:${PN}-flash = "Delta Power Flash"
+RDEPENDS:${PN}-flash = " \
+        phosphor-ipmi-flash \
+        "
+
+SUMMARY:${PN}-system = "Delta Power System"
+RDEPENDS:${PN}-system = " \
+        bmcweb \
+        "