diff options
author | Xo Wang <xow@google.com> | 2016-11-30 17:02:18 -0800 |
---|---|---|
committer | Patrick Williams <patrick@stwcx.xyz> | 2016-12-08 03:18:19 +0000 |
commit | e1dcc231d780c910538722433fd09077314b53d7 (patch) | |
tree | 1b4a8f4b69f4082e80b2548c65191cd61aae8572 | |
parent | ecfbe34a7f8978e1441c7935ce198c7496aa2058 (diff) | |
download | talos-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
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" |