meta-facebook: Add service for power control initialization in phosphor-state-manager

Description:
Add service to for power control initialization use.

Test Case:
Get corresponding BMC register configuration.

Change-Id: I8d227da66ddca4e38142744606ee130c1ce7aa7f
Signed-off-by: Delphine CC Chiu <Delphine_CC_Chiu@wiwynn.com>
diff --git a/meta-facebook/recipes-phosphor/state/phosphor-state-manager/greatlakes/power-ctrl-init b/meta-facebook/recipes-phosphor/state/phosphor-state-manager/greatlakes/power-ctrl-init
new file mode 100644
index 0000000..da4c278
--- /dev/null
+++ b/meta-facebook/recipes-phosphor/state/phosphor-state-manager/greatlakes/power-ctrl-init
@@ -0,0 +1,24 @@
+#!/bin/bash
+# Provide source directive to shellcheck.
+gpioInitHighTable=(
+    "power-nic-bmc-enable"
+    "usb-bmc-enable"
+    "reset-cause-usb-hub"
+    "bmc-ready"
+    "fan0-bmc-cpld-enable"
+    "fan1-bmc-cpld-enable"
+    "fan2-bmc-cpld-enable"
+    "fan3-bmc-cpld-enable"
+)
+
+gpio-init()
+{
+    for gpioInitHigh in "${gpioInitHighTable[@]}"
+    do
+    # need the word splitting for gpiofind command.
+    # shellcheck disable=SC2046
+    gpioset $(gpiofind "${gpioInitHigh}")=1
+    done
+}
+
+gpio-init
diff --git a/meta-facebook/recipes-phosphor/state/phosphor-state-manager/greatlakes/power-ctrl-init.service b/meta-facebook/recipes-phosphor/state/phosphor-state-manager/greatlakes/power-ctrl-init.service
new file mode 100644
index 0000000..18def6d
--- /dev/null
+++ b/meta-facebook/recipes-phosphor/state/phosphor-state-manager/greatlakes/power-ctrl-init.service
@@ -0,0 +1,15 @@
+[Unit]
+Description=Power Control Initialization
+Wants=obmc-mapper.target
+After=obmc-mapper.target
+Wants=xyz.openbmc_project.Logging.service
+After=xyz.openbmc_project.Logging.service
+Before=mapper-wait@-xyz.openbmc_project.State.Chassis@0.service
+Before=mapper-wait@-xyz-openbmc_project-state-bmc.service
+
+[Service]
+Type=oneshot
+ExecStart=/usr/libexec/phosphor-state-manager/power-ctrl-init
+
+[Install]
+WantedBy=multi-user.target
diff --git a/meta-facebook/recipes-phosphor/state/phosphor-state-manager_%.bbappend b/meta-facebook/recipes-phosphor/state/phosphor-state-manager_%.bbappend
index 42c7117..8c60835 100644
--- a/meta-facebook/recipes-phosphor/state/phosphor-state-manager_%.bbappend
+++ b/meta-facebook/recipes-phosphor/state/phosphor-state-manager_%.bbappend
@@ -25,6 +25,7 @@
     file://host-poweron@.service \
     file://host-powercycle@.service \
     file://host-powerreset@.service \
+    file://power-ctrl-init.service \
     file://chassis-poweroff \
     file://chassis-poweron \
     file://chassis-powercycle \
@@ -33,6 +34,7 @@
     file://host-powercycle \
     file://host-powerreset \
     file://power-cmd \
+    file://power-ctrl-init \
     "
 
 RDEPENDS:${PN}:append:greatlakes = " bash"
@@ -41,7 +43,7 @@
     install -d ${D}${systemd_system_unitdir}
     install -m 0644 ${WORKDIR}/*.service ${D}${systemd_system_unitdir}/
 
-    install -d ${D}${libexecdir}
+    install -d ${D}${libexecdir}/${PN}
     install -m 0777 ${WORKDIR}/chassis-poweroff ${D}${libexecdir}/
     install -m 0777 ${WORKDIR}/chassis-poweron ${D}${libexecdir}/
     install -m 0777 ${WORKDIR}/chassis-powercycle ${D}${libexecdir}/
@@ -50,5 +52,9 @@
     install -m 0777 ${WORKDIR}/host-powercycle ${D}${libexecdir}/
     install -m 0777 ${WORKDIR}/host-powerreset ${D}${libexecdir}/
     install -m 0777 ${WORKDIR}/power-cmd ${D}${libexecdir}/
+    install -m 0777 ${WORKDIR}/power-ctrl-init ${D}${libexecdir}/${PN}/
 }
+
 FILES:${PN} += " /lib/systemd/system/*.service"
+
+SYSTEMD_SERVICE:${PN}-bmc:append:greatlakes = "power-ctrl-init.service"