summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorXo Wang <xow@google.com>2016-11-30 17:02:18 -0800
committerPatrick Williams <patrick@stwcx.xyz>2016-12-08 03:18:19 +0000
commite1dcc231d780c910538722433fd09077314b53d7 (patch)
tree1b4a8f4b69f4082e80b2548c65191cd61aae8572
parentecfbe34a7f8978e1441c7935ce198c7496aa2058 (diff)
downloadtalos-openbmc-e1dcc231d780c910538722433fd09077314b53d7.tar.gz
talos-openbmc-e1dcc231d780c910538722433fd09077314b53d7.zip
meta-zaius: Fix up host reference clock after power on
Zaius's host reference clock generator IC requires an output configuration fixup before trying to send the P9 host any FSI transactions. The IC is powered by the main 3.3V rail (the BMC runs from standby 3.3V), so the fixup has to be applied every time after it is powered on. Add script that performs the I2C writes to the clock gen. Add systemd service that launches the script following power on. Add bitbake recipe to install service. Add image build append to build service into image. Signed-off-by: Xo Wang <xow@google.com> Change-Id: I8b1b83d0dabbb86439a043f8a1d9cdcb56986c45
-rw-r--r--meta-openbmc-machines/meta-openpower/meta-ingrasys/meta-zaius/recipes-phosphor/chassis/refclock-fixup.bb21
-rwxr-xr-xmeta-openbmc-machines/meta-openpower/meta-ingrasys/meta-zaius/recipes-phosphor/chassis/refclock-fixup/fix_zaius_refclock.sh27
-rw-r--r--meta-openbmc-machines/meta-openpower/meta-ingrasys/meta-zaius/recipes-phosphor/chassis/refclock-fixup/op-refclock-fixup@.service16
-rw-r--r--meta-openbmc-machines/meta-openpower/meta-ingrasys/meta-zaius/recipes-phosphor/images/obmc-phosphor-image.bbappend2
4 files changed, 66 insertions, 0 deletions
diff --git a/meta-openbmc-machines/meta-openpower/meta-ingrasys/meta-zaius/recipes-phosphor/chassis/refclock-fixup.bb b/meta-openbmc-machines/meta-openpower/meta-ingrasys/meta-zaius/recipes-phosphor/chassis/refclock-fixup.bb
new file mode 100644
index 000000000..ac2c585ec
--- /dev/null
+++ b/meta-openbmc-machines/meta-openpower/meta-ingrasys/meta-zaius/recipes-phosphor/chassis/refclock-fixup.bb
@@ -0,0 +1,21 @@
+DESCRIPTION = "Zaius host reference clock fixup"
+PR = "r0"
+
+inherit obmc-phosphor-systemd
+inherit obmc-phosphor-license
+
+TMPL = "op-refclock-fixup@.service"
+INSTFMT = "op-refclock-fixup@{0}.service"
+TGTFMT = "obmc-chassis-start@{0}.target"
+FMT = "../${TMPL}:${TGTFMT}.wants/${INSTFMT}"
+
+SYSTEMD_SERVICE_${PN} += "${TMPL}"
+SYSTEMD_LINK_${PN} += "${@compose_list(d, 'FMT', 'OBMC_CHASSIS_INSTANCES')}"
+
+SRC_URI += "file://fix_zaius_refclock.sh"
+RDEPENDS_${PN} += "i2c-tools"
+
+do_install() {
+ install -d ${D}${sbindir}
+ install -m 0755 ${WORKDIR}/fix_zaius_refclock.sh ${D}${sbindir}/fix_zaius_refclock.sh
+}
diff --git a/meta-openbmc-machines/meta-openpower/meta-ingrasys/meta-zaius/recipes-phosphor/chassis/refclock-fixup/fix_zaius_refclock.sh b/meta-openbmc-machines/meta-openpower/meta-ingrasys/meta-zaius/recipes-phosphor/chassis/refclock-fixup/fix_zaius_refclock.sh
new file mode 100755
index 000000000..01eb72b71
--- /dev/null
+++ b/meta-openbmc-machines/meta-openpower/meta-ingrasys/meta-zaius/recipes-phosphor/chassis/refclock-fixup/fix_zaius_refclock.sh
@@ -0,0 +1,27 @@
+#!/bin/sh
+# fix up refclock by reconfiguring output of Si5338C clock generator
+
+i2cset="i2cset"
+clkgen_i2c_bus="0"
+clkgen_i2c_addr="0x70"
+
+# Usage: clkgen_write <address> <data> [write length]
+clkgen_write()
+{
+ $i2cset -y $clkgen_i2c_bus $clkgen_i2c_addr $1 $2 $3
+}
+
+# disable outputs
+clkgen_write 230 0x10 b
+
+# set output configurations of each of the four channels to 3.3V HCSL
+clkgen_write 36 0x07 b
+clkgen_write 37 0x07 b
+clkgen_write 38 0x07 b
+clkgen_write 39 0x07 b
+clkgen_write 40 0xe7 b
+clkgen_write 41 0x9c b
+clkgen_write 42 0x27 b
+
+# enable outputs
+clkgen_write 230 0x00 b
diff --git a/meta-openbmc-machines/meta-openpower/meta-ingrasys/meta-zaius/recipes-phosphor/chassis/refclock-fixup/op-refclock-fixup@.service b/meta-openbmc-machines/meta-openpower/meta-ingrasys/meta-zaius/recipes-phosphor/chassis/refclock-fixup/op-refclock-fixup@.service
new file mode 100644
index 000000000..f5d9f9e72
--- /dev/null
+++ b/meta-openbmc-machines/meta-openpower/meta-ingrasys/meta-zaius/recipes-phosphor/chassis/refclock-fixup/op-refclock-fixup@.service
@@ -0,0 +1,16 @@
+[Unit]
+Description=Fix up Zaius host refclock
+Wants=obmc-host-start-pre@%i.target
+Before=obmc-host-start-pre@%i.target
+Wants=obmc-power-on@%i.target
+After=obmc-power-on@%i.target
+Conflicts=obmc-chassis-stop@%i.target
+
+[Service]
+Restart=no
+Type=oneshot
+RemainAfterExit=yes
+ExecStart={sbindir}/fix_zaius_refclock.sh
+
+[Install]
+WantedBy=obmc-chassis-start@%i.target
diff --git a/meta-openbmc-machines/meta-openpower/meta-ingrasys/meta-zaius/recipes-phosphor/images/obmc-phosphor-image.bbappend b/meta-openbmc-machines/meta-openpower/meta-ingrasys/meta-zaius/recipes-phosphor/images/obmc-phosphor-image.bbappend
new file mode 100644
index 000000000..a7bb4d179
--- /dev/null
+++ b/meta-openbmc-machines/meta-openpower/meta-ingrasys/meta-zaius/recipes-phosphor/images/obmc-phosphor-image.bbappend
@@ -0,0 +1,2 @@
+# TODO: make refclock-fixup append a dependency to P9 boot recipe when it exists
+OBMC_IMAGE_EXTRA_INSTALL_append = " refclock-fixup"
OpenPOWER on IntegriCloud