summaryrefslogtreecommitdiff
path: root/meta-openbmc-machines
diff options
context:
space:
mode:
authorJoel Stanley <joel@jms.id.au>2018-05-11 07:04:07 +0300
committerJoel Stanley <joel@jms.id.au>2018-05-17 05:18:05 +0300
commit42ed6de4105b0e1bf859d3a640c55c4ee703154d (patch)
treef434f580e47b320751b2f168a101017e715cd15a /meta-openbmc-machines
parente6cb29744b94de30d705042c39c8a51c1c750d5f (diff)
downloadopenbmc-42ed6de4105b0e1bf859d3a640c55c4ee703154d.tar.xz
meta-openpower: Add hb_settings tool
This shell script is used to configure the SIO registers that are read by Hostboot at boot time in order to configure settings before IPMI and other forms of communication are possible. In the past these were hardcoded in the kernel, which is not an option now that we support non OpenPower machines in OpenBMC. Change-Id: If0f4e62cf28849648d1b1611da42e469b786eb86 Signed-off-by: Joel Stanley <joel@jms.id.au>
Diffstat (limited to 'meta-openbmc-machines')
-rw-r--r--meta-openbmc-machines/meta-openpower/common/recipes-phosphor/host/hostboot-settings/hb_settings110
1 files changed, 110 insertions, 0 deletions
diff --git a/meta-openbmc-machines/meta-openpower/common/recipes-phosphor/host/hostboot-settings/hb_settings b/meta-openbmc-machines/meta-openpower/common/recipes-phosphor/host/hostboot-settings/hb_settings
new file mode 100644
index 000000000..d75d4b74d
--- /dev/null
+++ b/meta-openbmc-machines/meta-openpower/common/recipes-phosphor/host/hostboot-settings/hb_settings
@@ -0,0 +1,110 @@
+#!/bin/sh
+# Copyright 2018 IBM Corp
+# SPDX-License-Identifier: Apache-2.0
+# Authored May 2018, Joel Stanley <joel@jms.id.au>
+#
+# This script sets the SIO scratch registers 0x2D in order to configure
+# hostboot. It supports boot flags v1 as defined in hostboot source:
+# src/usr/initservice/bootconfig/bootconfig_ast2400.C
+# src/usr/console/ast2400.C
+#
+# BOOT_FLAGS_VERSION_REG = 0x28,
+# Serial config reg: 0x2d
+# Serial config mask: 0xc0
+#
+# NONE = 0x00, // No output selected
+# SELECT_SUART = 0x40, // SIO Uart
+# SELECT_VUART = 0x80, // SOL virtual uart
+# RESERVED = 0xc0, // Reserved
+
+
+SYSFS_SIO=/sys/devices/platform/ahb/ahb:apb/1e789000.lpc/1e789080.lpc-host/1e789080.lpc-host:regs
+SYSFS_SIO28=$SYSFS_SIO/sio_28
+SYSFS_SIO2D=$SYSFS_SIO/sio_2d
+
+FLAGS_VERSION1=$((0x42))
+
+usage()
+{
+ echo "usage: hb_settings [[-u|--uart vuart|suart|none] | [-s|--show] | [-h]]"
+}
+
+show_regs()
+{
+ SIO28=$(cat $SYSFS_SIO28)
+ SIO2D=$(cat $SYSFS_SIO2D)
+
+ case $SIO28 in
+ $FLAGS_VERSION1)
+ echo "Boot flags version 1"
+ ;;
+ * )
+ echo "Unknown boot flags version"
+ ;;
+ esac
+
+ case $(($SIO2D >> 6)) in
+ 0)
+ echo "Hostboot serial output disabled"
+ ;;
+ 1)
+ echo "Hostboot serial output on SUART"
+ ;;
+ 2)
+ echo "Hostboot serial output on VUART"
+ ;;
+ 3)
+ echo "Reserved value"
+ ;;
+ * )
+ echo "Invalid uart value"
+ ;;
+ esac
+}
+
+set_regs()
+{
+ case $uart in
+ suart)
+ echo "Hostboot serial output on SUART"
+ VAL=0x40
+ ;;
+ vuart)
+ echo "Hostboot serial output on VUART"
+ VAL=0x80
+ ;;
+ none)
+ echo "Hostboot serial output disabled"
+ VAL=0x00
+ ;;
+ * )
+ echo "Invalid uart value"
+ usage
+ exit 1
+ esac
+
+ echo $FLAGS_VERSION1 > $SYSFS_SIO28
+ echo $VAL > $SYSFS_SIO2D
+}
+
+while [ "$1" != "" ]; do
+ case $1 in
+ -u | --uart) shift
+ uart=$1
+ set_regs
+ exit
+ ;;
+ -s | --show ) show_regs
+ exit
+ ;;
+ -h | --help ) usage
+ exit
+ ;;
+ * ) usage
+ exit 1
+ esac
+ shift
+done
+
+usage
+exit 0