meta-fii: meta-mori: add phosphor console package

Add phosphor console mori_uart_mux_ctrl script,obmc-console service
files, and .conf files
 - Added console feature for host & mpro
 - Added mori_uart_mux_ctrl.sh to set gpio S0_UART0_BMC_SEL and
    S0_UART1_BMC_SEL allowing routing between host & mpro consoles
    to bmc
 - Added host_console_uart_configuration.service so that it runs
    before obmc-console. Set it to require multi-user.target, which
    is also required by obmc-console.

Signed-off-by: Grant Williams <grant.williams@fii-na.com>
Change-Id: I5d7002c20c5d1b87fa5c78e69b0885fc635c6145
diff --git a/meta-fii/meta-mori/recipes-mori/mori-sys-utility/mori-boot/init_once.sh b/meta-fii/meta-mori/recipes-mori/mori-sys-utility/mori-boot/init_once.sh
index 1c59aa0..79c84d2 100644
--- a/meta-fii/meta-mori/recipes-mori/mori-sys-utility/mori-boot/init_once.sh
+++ b/meta-fii/meta-mori/recipes-mori/mori-sys-utility/mori-boot/init_once.sh
@@ -12,12 +12,6 @@
     set_gpio_ctrl CPU_EEPROM_SEL 1
     # BMC_CPU_PMBUS_SEL
     set_gpio_ctrl CPU_VRD_SEL 1
-
-    # CPU Host UART Mux
-    set_gpio_ctrl S0_UART0_BMC_SEL 0
-    # SCP Host UART Mux
-    set_gpio_ctrl S0_UART1_BMC_SEL 0
-
     # LED control
     # LED_BMC_LIVE
     set_gpio_ctrl LED_BMC_ALIVE 1
diff --git a/meta-fii/meta-mori/recipes-phosphor/console/obmc-console/host_console_uart_config.service b/meta-fii/meta-mori/recipes-phosphor/console/obmc-console/host_console_uart_config.service
new file mode 100644
index 0000000..8b5cbea
--- /dev/null
+++ b/meta-fii/meta-mori/recipes-phosphor/console/obmc-console/host_console_uart_config.service
@@ -0,0 +1,10 @@
+[Unit]
+Description = UART Activation Sequence
+Before=host-powerctrl.service
+
+[Service]
+ExecStart=/usr/libexec/obmc-console/mori_uart_mux_ctrl.sh
+Type=oneshot
+
+[Install]
+RequiredBy=multi-user.target
diff --git a/meta-fii/meta-mori/recipes-phosphor/console/obmc-console/mori_uart_mux_ctrl.sh b/meta-fii/meta-mori/recipes-phosphor/console/obmc-console/mori_uart_mux_ctrl.sh
new file mode 100644
index 0000000..e1f090a
--- /dev/null
+++ b/meta-fii/meta-mori/recipes-phosphor/console/obmc-console/mori_uart_mux_ctrl.sh
@@ -0,0 +1,8 @@
+#!/bin/bash
+# Provide source directive to shellcheck.
+# shellcheck source=meta-fii/meta-mori/recipes-mori/mori-fw-utility/mori-fw/mori-lib.sh
+source /usr/libexec/mori-fw/mori-lib.sh
+
+set_gpio_ctrl S0_UART0_BMC_SEL 1
+set_gpio_ctrl S0_UART1_BMC_SEL 1
+echo "UART initialization complete"
diff --git a/meta-fii/meta-mori/recipes-phosphor/console/obmc-console/obmc-console@.service b/meta-fii/meta-mori/recipes-phosphor/console/obmc-console/obmc-console@.service
new file mode 100644
index 0000000..3ce7942
--- /dev/null
+++ b/meta-fii/meta-mori/recipes-phosphor/console/obmc-console/obmc-console@.service
@@ -0,0 +1,17 @@
+[Unit]
+Description=Phosphor Console Muxer listening on device /dev/%I
+BindsTo=dev-%i.device
+After=dev-%i.device
+StartLimitBurst=3
+StartLimitIntervalSec=300
+
+[Service]
+ExecStart=/usr/sbin/obmc-console-server --config /etc/obmc-console/server.%i.conf %i
+SyslogIdentifier=obmc-console-server
+Restart=always
+RestartSec=10
+TimeoutStartSec=60
+TimeoutStopSec=60
+
+[Install]
+WantedBy=multi-user.target
diff --git a/meta-fii/meta-mori/recipes-phosphor/console/obmc-console/server.ttyS1.conf b/meta-fii/meta-mori/recipes-phosphor/console/obmc-console/server.ttyS1.conf
new file mode 100644
index 0000000..e93f078
--- /dev/null
+++ b/meta-fii/meta-mori/recipes-phosphor/console/obmc-console/server.ttyS1.conf
@@ -0,0 +1,3 @@
+baud = 115200
+logfile = /var/log/obmc-console-cpu.log
+logsize = 1M
diff --git a/meta-fii/meta-mori/recipes-phosphor/console/obmc-console/server.ttyS3.conf b/meta-fii/meta-mori/recipes-phosphor/console/obmc-console/server.ttyS3.conf
new file mode 100644
index 0000000..ae469bb
--- /dev/null
+++ b/meta-fii/meta-mori/recipes-phosphor/console/obmc-console/server.ttyS3.conf
@@ -0,0 +1,4 @@
+baud = 115200
+socket-id = ttyS3
+logfile = /var/log/obmc-console-mpro.log
+logsize = 1M
diff --git a/meta-fii/meta-mori/recipes-phosphor/console/obmc-console_%.bbappend b/meta-fii/meta-mori/recipes-phosphor/console/obmc-console_%.bbappend
new file mode 100644
index 0000000..90b21cd
--- /dev/null
+++ b/meta-fii/meta-mori/recipes-phosphor/console/obmc-console_%.bbappend
@@ -0,0 +1,30 @@
+FILESEXTRAPATHS:prepend:mori := "${THISDIR}/${PN}:"
+RDEPENDS:${PN}:append:mori = " bash"
+
+OBMC_CONSOLE_TTYS:mori = "ttyS1 ttyS3"
+
+SRC_URI:append:mori = " file://${BPN}@.service \
+                        file://host_console_uart_config.service \
+                        file://mori_uart_mux_ctrl.sh \
+                        file://server.ttyS1.conf \
+                        file://server.ttyS3.conf \
+                      "
+
+SYSTEMD_SERVICE:${PN}:append:mori = " \
+        ${BPN}@.service \
+        host_console_uart_config.service \
+        "
+
+do_install:append:mori() {
+    install -d ${D}${libexecdir}/${PN}
+    install -m 0755 ${WORKDIR}/mori_uart_mux_ctrl.sh ${D}${libexecdir}/${PN}/mori_uart_mux_ctrl.sh
+    install -m 0644 ${WORKDIR}/host_console_uart_config.service ${D}${systemd_unitdir}/system
+    # Overwrite base package's obmc-console@.service with our own
+    install -m 0644 ${WORKDIR}/${BPN}@.service ${D}${systemd_unitdir}/system/${BPN}@.service
+}
+
+pkg_postinst:${PN}:append:mori () {
+    systemctl --root=$D enable obmc-console@ttyS1.service
+    systemctl --root=$D enable obmc-console@ttyS3.service
+}
+
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 fe66784..7fe06dc 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
@@ -25,6 +25,9 @@
 OBMC_IMAGE_EXTRA_INSTALL:append:mori = " phosphor-certificate-manager"
 OBMC_IMAGE_EXTRA_INSTALL:append:mori = " phosphor-user-manager"
 
+# Required for the front port. Part of obmc-console
+OBMC_IMAGE_EXTRA_INSTALL:append:mori = " obmc-console"
+
 # Required from packagegroup-mori-apps
 OBMC_IMAGE_EXTRA_INSTALL:append:mori = " obmc-phosphor-buttons-signals"
 OBMC_IMAGE_EXTRA_INSTALL:append:mori = " obmc-phosphor-buttons-handler"