meta-fii: meta-mori: Add ipmi flash and firmware update services

Adding bios update, bmc update, cpld update, and phosphor ipmi flash
packages

Signed-off-by: Grant Williams <grant.williams@fii-na.com>
Change-Id: I5543f520f710e065a476999991a48bdaf0544c0c
diff --git a/meta-fii/meta-mori/recipes-mori/mori-fw-utility/mori-bios-update.bb b/meta-fii/meta-mori/recipes-mori/mori-fw-utility/mori-bios-update.bb
new file mode 100644
index 0000000..d0c47c0
--- /dev/null
+++ b/meta-fii/meta-mori/recipes-mori/mori-fw-utility/mori-bios-update.bb
@@ -0,0 +1,35 @@
+SUMMARY = "Phosphor OpenBMC Mori BIOS Firmware Upgrade Command"
+DESCRIPTION = "Phosphor OpenBMC Mori BIOS Firmware Upgrade Comman Daemon"
+
+PR = "r1"
+LICENSE = "Apache-2.0"
+LIC_FILES_CHKSUM = "file://${COREBASE}/meta/files/common-licenses/Apache-2.0;md5=89aea4e17d99a7cacdbeed46a0096b10"
+
+inherit systemd
+inherit obmc-phosphor-systemd
+
+DEPENDS += "systemd"
+DEPENDS += "phosphor-ipmi-flash"
+RDEPENDS:${PN} += "libsystemd"
+RDEPENDS:${PN} += "mori-fw"
+PROVIDES += "virtual/bios-update"
+RPROVIDES:${PN} += "virtual/bios-update"
+
+FILES:${PN} += "${datadir}/phosphor-ipmi-flash/config-bios.json"
+
+SRC_URI += " \
+    file://phosphor-ipmi-flash-bios-update.service \
+    file://config-bios.json \
+    "
+
+SYSTEMD_PACKAGES = "${PN}"
+SYSTEMD_SERVICE:${PN} += " \
+    phosphor-ipmi-flash-bios-update.service \
+    "
+
+do_install () {
+    install -d ${D}${datadir}/phosphor-ipmi-flash
+    install -m 0644 ${WORKDIR}/config-bios.json ${D}${datadir}/phosphor-ipmi-flash
+    install -d ${D}${systemd_system_unitdir}
+    install -m 0644 ${WORKDIR}/phosphor-ipmi-flash-bios-update.service  ${D}${systemd_system_unitdir}
+}
diff --git a/meta-fii/meta-mori/recipes-mori/mori-fw-utility/mori-bios-update/config-bios.json b/meta-fii/meta-mori/recipes-mori/mori-fw-utility/mori-bios-update/config-bios.json
new file mode 100644
index 0000000..de23823
--- /dev/null
+++ b/meta-fii/meta-mori/recipes-mori/mori-fw-utility/mori-bios-update/config-bios.json
@@ -0,0 +1,19 @@
+[{
+    "blob": "/flash/bios",
+    "handler": {
+        "type": "file",
+        "path": "/run/initramfs/bios-image"
+    },
+    "actions": {
+        "preparation": {
+            "type": "skip"
+        },
+        "verification": {
+            "type": "skip"
+        },
+        "update": {
+            "type": "systemd",
+            "unit": "phosphor-ipmi-flash-bios-update.service"
+        }
+    }
+}]
diff --git a/meta-fii/meta-mori/recipes-mori/mori-fw-utility/mori-bios-update/phosphor-ipmi-flash-bios-update.service b/meta-fii/meta-mori/recipes-mori/mori-fw-utility/mori-bios-update/phosphor-ipmi-flash-bios-update.service
new file mode 100644
index 0000000..bf819a3
--- /dev/null
+++ b/meta-fii/meta-mori/recipes-mori/mori-fw-utility/mori-bios-update/phosphor-ipmi-flash-bios-update.service
@@ -0,0 +1,6 @@
+[Unit]
+Description=Phosphor-ipmi-flash update BIOS firmware service
+
+[Service]
+ExecStart=mori-fw.sh bios /run/initramfs/bios-image
+Type=oneshot
diff --git a/meta-fii/meta-mori/recipes-mori/mori-fw-utility/mori-bmc-update.bb b/meta-fii/meta-mori/recipes-mori/mori-fw-utility/mori-bmc-update.bb
new file mode 100644
index 0000000..db74f33
--- /dev/null
+++ b/meta-fii/meta-mori/recipes-mori/mori-fw-utility/mori-bmc-update.bb
@@ -0,0 +1,23 @@
+SUMMARY = "Phosphor OpenBMC Mori BMC Firmware Upgrade Command"
+DESCRIPTION = "Phosphor OpenBMC Mori BMC Firmware Upgrade Comman Daemon"
+
+PR = "r1"
+LICENSE = "Apache-2.0"
+LIC_FILES_CHKSUM = "file://${COREBASE}/meta/files/common-licenses/Apache-2.0;md5=89aea4e17d99a7cacdbeed46a0096b10"
+
+DEPENDS += "phosphor-ipmi-flash"
+RDEPENDS:${PN} += "mori-fw"
+
+RPROVIDES:${PN} += "virtual/bmc-update"
+PROVIDES += "virtual/bmc-update"
+RPROVIDES:${PN} += "virtual/bmc-update"
+FILES:${PN} += "${datadir}/phosphor-ipmi-flash/config-bmc.json"
+
+SRC_URI += " \
+    file://config-bmc.json \
+    "
+
+do_install () {
+    install -d ${D}${datadir}/phosphor-ipmi-flash
+    install -m 0644 ${WORKDIR}/config-bmc.json ${D}${datadir}/phosphor-ipmi-flash
+}
diff --git a/meta-fii/meta-mori/recipes-mori/mori-fw-utility/mori-bmc-update/config-bmc.json b/meta-fii/meta-mori/recipes-mori/mori-fw-utility/mori-bmc-update/config-bmc.json
new file mode 100644
index 0000000..5aefeb3
--- /dev/null
+++ b/meta-fii/meta-mori/recipes-mori/mori-fw-utility/mori-bmc-update/config-bmc.json
@@ -0,0 +1,20 @@
+[{
+    "blob": "/flash/image",
+    "handler": {
+        "type": "file",
+        "path": "/run/initramfs/image-bmc"
+    },
+    "actions": {
+        "preparation": {
+            "type": "skip"
+        },
+        "verification": {
+            "type": "skip"
+        },
+        "update": {
+            "type": "systemd",
+            "unit": "reboot.target",
+            "mode": "replace-irreversibly"
+        }
+    }
+}]
diff --git a/meta-fii/meta-mori/recipes-mori/mori-fw-utility/mori-cpld-update.bb b/meta-fii/meta-mori/recipes-mori/mori-fw-utility/mori-cpld-update.bb
new file mode 100644
index 0000000..7b19f8e
--- /dev/null
+++ b/meta-fii/meta-mori/recipes-mori/mori-fw-utility/mori-cpld-update.bb
@@ -0,0 +1,41 @@
+SUMMARY = "Phosphor OpenBMC Mori CPLD Firmware Upgrade Command"
+DESCRIPTION = "Phosphor OpenBMC Mori CPLD Firmware Upgrade Comman Daemon"
+
+PR = "r1"
+LICENSE = "Apache-2.0"
+LIC_FILES_CHKSUM = "file://${COREBASE}/meta/files/common-licenses/Apache-2.0;md5=89aea4e17d99a7cacdbeed46a0096b10"
+
+inherit systemd
+inherit obmc-phosphor-systemd
+
+DEPENDS += "systemd"
+DEPENDS += "phosphor-ipmi-flash"
+RDEPENDS:${PN} += "libsystemd"
+RDEPENDS:${PN} += "mori-fw"
+PROVIDES += "virtual/cpld-update"
+RPROVIDES:${PN} += "virtual/cpld-update"
+
+FILES:${PN} += "${datadir}/phosphor-ipmi-flash/config-bmccpld.json"
+FILES:${PN} += "${datadir}/phosphor-ipmi-flash/config-mbcpld.json"
+
+SRC_URI += " \
+    file://phosphor-ipmi-flash-bmccpld-update.service \
+    file://phosphor-ipmi-flash-mbcpld-update.service \
+    file://config-bmccpld.json \
+    file://config-mbcpld.json \
+    "
+
+SYSTEMD_PACKAGES = "${PN}"
+SYSTEMD_SERVICE:${PN} += " \
+    phosphor-ipmi-flash-bmccpld-update.service \
+    phosphor-ipmi-flash-mbcpld-update.service \
+    "
+
+do_install () {
+    install -d ${D}${datadir}/phosphor-ipmi-flash
+    install -m 0644 ${WORKDIR}/config-bmccpld.json ${D}${datadir}/phosphor-ipmi-flash
+    install -m 0644 ${WORKDIR}/config-mbcpld.json ${D}${datadir}/phosphor-ipmi-flash
+    install -d ${D}${systemd_system_unitdir}
+    install -m 0644 ${WORKDIR}/phosphor-ipmi-flash-bmccpld-update.service ${D}${systemd_system_unitdir}
+    install -m 0644 ${WORKDIR}/phosphor-ipmi-flash-mbcpld-update.service ${D}${systemd_system_unitdir}
+}
diff --git a/meta-fii/meta-mori/recipes-mori/mori-fw-utility/mori-cpld-update/config-bmccpld.json b/meta-fii/meta-mori/recipes-mori/mori-fw-utility/mori-cpld-update/config-bmccpld.json
new file mode 100644
index 0000000..687aa11
--- /dev/null
+++ b/meta-fii/meta-mori/recipes-mori/mori-fw-utility/mori-cpld-update/config-bmccpld.json
@@ -0,0 +1,19 @@
+[{
+    "blob": "/flash/bmccpld",
+    "handler": {
+        "type": "file",
+        "path": "/run/initramfs/bmc-cpld.svf"
+    },
+    "actions": {
+        "preparation": {
+            "type": "skip"
+        },
+        "verification": {
+            "type": "skip"
+        },
+        "update": {
+            "type": "systemd",
+            "unit": "phosphor-ipmi-flash-bmccpld-update.service"
+        }
+    }
+}]
diff --git a/meta-fii/meta-mori/recipes-mori/mori-fw-utility/mori-cpld-update/config-mbcpld.json b/meta-fii/meta-mori/recipes-mori/mori-fw-utility/mori-cpld-update/config-mbcpld.json
new file mode 100644
index 0000000..f5870bb
--- /dev/null
+++ b/meta-fii/meta-mori/recipes-mori/mori-fw-utility/mori-cpld-update/config-mbcpld.json
@@ -0,0 +1,20 @@
+[{
+    "blob": "/flash/mbcpld",
+    "handler": {
+        "type": "file",
+        "path": "/run/initramfs/mb-cpld.svf"
+    },
+    "actions": {
+        "preparation": {
+            "type": "skip"
+        },
+        "verification": {
+            "type": "skip"
+        },
+        "update": {
+            "type": "systemd",
+            "unit": "phosphor-ipmi-flash-mbcpld-update.service"
+        }
+    }
+}]
+
diff --git a/meta-fii/meta-mori/recipes-mori/mori-fw-utility/mori-cpld-update/phosphor-ipmi-flash-bmccpld-update.service b/meta-fii/meta-mori/recipes-mori/mori-fw-utility/mori-cpld-update/phosphor-ipmi-flash-bmccpld-update.service
new file mode 100644
index 0000000..2ed0e2f
--- /dev/null
+++ b/meta-fii/meta-mori/recipes-mori/mori-fw-utility/mori-cpld-update/phosphor-ipmi-flash-bmccpld-update.service
@@ -0,0 +1,9 @@
+[Unit]
+Description=Phosphor-ipmi-flash update BMC CPLD firmware service
+
+[Service]
+ExecStart=mori-fw.sh bmccpld /run/initramfs/bmc-cpld.svf
+Type=oneshot
+
+[Install]
+WantedBy=phosphor-ipmi-flash-bmccpld-update.target
diff --git a/meta-fii/meta-mori/recipes-mori/mori-fw-utility/mori-cpld-update/phosphor-ipmi-flash-mbcpld-update.service b/meta-fii/meta-mori/recipes-mori/mori-fw-utility/mori-cpld-update/phosphor-ipmi-flash-mbcpld-update.service
new file mode 100644
index 0000000..0036606
--- /dev/null
+++ b/meta-fii/meta-mori/recipes-mori/mori-fw-utility/mori-cpld-update/phosphor-ipmi-flash-mbcpld-update.service
@@ -0,0 +1,9 @@
+[Unit]
+Description=Phosphor-ipmi-flash update MB CPLD firmware service
+
+[Service]
+ExecStart=mori-fw.sh mbcpld /run/initramfs/mb-cpld.svf
+Type=oneshot
+
+[Install]
+WantedBy=phosphor-ipmi-flash-mbcpld-update.target
diff --git a/meta-fii/meta-mori/recipes-phosphor/image/obmc-phosphor-image.bbappend b/meta-fii/meta-mori/recipes-phosphor/image/obmc-phosphor-image.bbappend
index 80eae00..3f81483 100644
--- a/meta-fii/meta-mori/recipes-phosphor/image/obmc-phosphor-image.bbappend
+++ b/meta-fii/meta-mori/recipes-phosphor/image/obmc-phosphor-image.bbappend
@@ -36,6 +36,9 @@
 OBMC_IMAGE_EXTRA_INSTALL:append:mori = " mori-cmd"
 OBMC_IMAGE_EXTRA_INSTALL:append:mori = " mori-boot"
 OBMC_IMAGE_EXTRA_INSTALL:append:mori = " mori-fw"
+OBMC_IMAGE_EXTRA_INSTALL:append:mori = " virtual/bmc-update"
+OBMC_IMAGE_EXTRA_INSTALL:append:mori = " virtual/bios-update"
+OBMC_IMAGE_EXTRA_INSTALL:append:mori = " virtual/cpld-update"
 
 # Required for phosphor-ipmi-ssif
 OBMC_IMAGE_EXTRA_INSTALL:append:mori = " virtual-obmc-host-ipmi-hw"
diff --git a/meta-fii/meta-mori/recipes-phosphor/ipmi/phosphor-ipmi-flash_%.bbappend b/meta-fii/meta-mori/recipes-phosphor/ipmi/phosphor-ipmi-flash_%.bbappend
new file mode 100644
index 0000000..ad45d1a
--- /dev/null
+++ b/meta-fii/meta-mori/recipes-phosphor/ipmi/phosphor-ipmi-flash_%.bbappend
@@ -0,0 +1,3 @@
+PACKAGECONFIG:append:mori = " nuvoton-p2a-mbox net-bridge"
+
+IPMI_FLASH_BMC_ADDRESS:mori = "0xF0848000"