summaryrefslogtreecommitdiffstats
path: root/meta-openbmc-machines/meta-openpower/meta-rcs/meta-talos/recipes-phosphor/chassis
diff options
context:
space:
mode:
Diffstat (limited to 'meta-openbmc-machines/meta-openpower/meta-rcs/meta-talos/recipes-phosphor/chassis')
-rw-r--r--meta-openbmc-machines/meta-openpower/meta-rcs/meta-talos/recipes-phosphor/chassis/avsbus-control.bb40
-rw-r--r--meta-openbmc-machines/meta-openpower/meta-rcs/meta-talos/recipes-phosphor/chassis/avsbus-control/avsbus-disable.sh16
-rw-r--r--meta-openbmc-machines/meta-openpower/meta-rcs/meta-talos/recipes-phosphor/chassis/avsbus-control/avsbus-disable@.service16
-rw-r--r--meta-openbmc-machines/meta-openpower/meta-rcs/meta-talos/recipes-phosphor/chassis/avsbus-control/avsbus-enable.sh16
-rw-r--r--meta-openbmc-machines/meta-openpower/meta-rcs/meta-talos/recipes-phosphor/chassis/avsbus-control/avsbus-enable@.service15
-rw-r--r--meta-openbmc-machines/meta-openpower/meta-rcs/meta-talos/recipes-phosphor/chassis/avsbus-control/avsbus-workaround.sh7
-rw-r--r--meta-openbmc-machines/meta-openpower/meta-rcs/meta-talos/recipes-phosphor/chassis/avsbus-control/avsbus-workaround@.service16
-rw-r--r--meta-openbmc-machines/meta-openpower/meta-rcs/meta-talos/recipes-phosphor/chassis/fpga-trigger.bb36
-rw-r--r--meta-openbmc-machines/meta-openpower/meta-rcs/meta-talos/recipes-phosphor/chassis/fpga-trigger/fpga_reset.sh4
-rw-r--r--meta-openbmc-machines/meta-openpower/meta-rcs/meta-talos/recipes-phosphor/chassis/fpga-trigger/fpga_reset@.service14
-rw-r--r--meta-openbmc-machines/meta-openpower/meta-rcs/meta-talos/recipes-phosphor/chassis/fpga-trigger/fpga_trigger.sh4
-rw-r--r--meta-openbmc-machines/meta-openpower/meta-rcs/meta-talos/recipes-phosphor/chassis/fpga-trigger/fpga_trigger@.service16
-rw-r--r--meta-openbmc-machines/meta-openpower/meta-rcs/meta-talos/recipes-phosphor/chassis/vrm-control.bb26
-rw-r--r--meta-openbmc-machines/meta-openpower/meta-rcs/meta-talos/recipes-phosphor/chassis/vrm-control/vrm-control.sh137
-rw-r--r--meta-openbmc-machines/meta-openpower/meta-rcs/meta-talos/recipes-phosphor/chassis/vrm-control/vrm-control@.service15
-rw-r--r--meta-openbmc-machines/meta-openpower/meta-rcs/meta-talos/recipes-phosphor/chassis/vrm-control/vrm.sh3
16 files changed, 381 insertions, 0 deletions
diff --git a/meta-openbmc-machines/meta-openpower/meta-rcs/meta-talos/recipes-phosphor/chassis/avsbus-control.bb b/meta-openbmc-machines/meta-openpower/meta-rcs/meta-talos/recipes-phosphor/chassis/avsbus-control.bb
new file mode 100644
index 000000000..e74682dba
--- /dev/null
+++ b/meta-openbmc-machines/meta-openpower/meta-rcs/meta-talos/recipes-phosphor/chassis/avsbus-control.bb
@@ -0,0 +1,40 @@
+SUMMARY = "Talos II AVSBus control"
+PR = "r1"
+
+inherit obmc-phosphor-systemd
+inherit obmc-phosphor-license
+
+RDEPENDS_${PN} += "i2c-tools bash"
+
+S = "${WORKDIR}"
+SRC_URI += "file://avsbus-workaround.sh \
+ file://avsbus-enable.sh \
+ file://avsbus-disable.sh"
+
+do_install() {
+ install -d ${D}${bindir}
+ install -m 0755 ${WORKDIR}/avsbus-workaround.sh \
+ ${D}${bindir}/avsbus-workaround.sh
+ install -m 0755 ${WORKDIR}/avsbus-disable.sh \
+ ${D}${bindir}/avsbus-disable.sh
+ install -m 0755 ${WORKDIR}/avsbus-enable.sh \
+ ${D}${bindir}/avsbus-enable.sh
+}
+
+TMPL_EN= "avsbus-enable@.service"
+TMPL_DIS= "avsbus-disable@.service"
+TMPL_WA= "avsbus-workaround@.service"
+INSTFMT_EN= "avsbus-enable@{0}.service"
+INSTFMT_DIS= "avsbus-disable@{0}.service"
+INSTFMT_WA= "avsbus-workaround@{0}.service"
+TGTFMT = "obmc-chassis-poweron@{0}.target"
+FMT_EN = "../${TMPL_EN}:${TGTFMT}.requires/${INSTFMT_EN}"
+FMT_DIS = "../${TMPL_DIS}:${TGTFMT}.requires/${INSTFMT_DIS}"
+FMT_WA = "../${TMPL_WA}:${TGTFMT}.requires/${INSTFMT_WA}"
+
+SYSTEMD_SERVICE_${PN} += "${TMPL_EN}"
+SYSTEMD_LINK_${PN} += "${@compose_list(d, 'FMT_EN', 'OBMC_CHASSIS_INSTANCES')}"
+SYSTEMD_SERVICE_${PN} += "${TMPL_DIS}"
+SYSTEMD_LINK_${PN} += "${@compose_list(d, 'FMT_DIS', 'OBMC_CHASSIS_INSTANCES')}"
+SYSTEMD_SERVICE_${PN} += "${TMPL_WA}"
+SYSTEMD_LINK_${PN} += "${@compose_list(d, 'FMT_WA', 'OBMC_CHASSIS_INSTANCES')}"
diff --git a/meta-openbmc-machines/meta-openpower/meta-rcs/meta-talos/recipes-phosphor/chassis/avsbus-control/avsbus-disable.sh b/meta-openbmc-machines/meta-openpower/meta-rcs/meta-talos/recipes-phosphor/chassis/avsbus-control/avsbus-disable.sh
new file mode 100644
index 000000000..1c3600088
--- /dev/null
+++ b/meta-openbmc-machines/meta-openpower/meta-rcs/meta-talos/recipes-phosphor/chassis/avsbus-control/avsbus-disable.sh
@@ -0,0 +1,16 @@
+#!/bin/sh
+
+i2cset -y 4 0x70 0x00 0x00 b # VDD 0 - PAGE set
+i2cset -y 4 0x70 0x01 0x80 b # VDD 0
+i2cset -y 4 0x70 0x00 0x01 b # VCS 0 - PAGE set
+i2cset -y 4 0x70 0x01 0x80 b # VCS 0
+i2cset -y 4 0x70 0x00 0x00 b # VCS 0 - PAGE reset
+i2cset -y 4 0x73 0x00 0x00 b # VDN 0 - PAGE set
+i2cset -y 4 0x73 0x01 0x80 b # VDN 0
+i2cset -y 5 0x70 0x00 0x00 b # VDD 1 - PAGE set
+i2cset -y 5 0x70 0x01 0x80 b # VDD 1
+i2cset -y 5 0x70 0x00 0x01 b # VCS 1 - PAGE set
+i2cset -y 5 0x70 0x01 0x80 b # VCS 1
+i2cset -y 5 0x70 0x00 0x00 b # VCS 1 - PAGE reset
+i2cset -y 5 0x73 0x00 0x00 b # VDN 1 - PAGE set
+i2cset -y 5 0x73 0x01 0x80 b # VDN 1
diff --git a/meta-openbmc-machines/meta-openpower/meta-rcs/meta-talos/recipes-phosphor/chassis/avsbus-control/avsbus-disable@.service b/meta-openbmc-machines/meta-openpower/meta-rcs/meta-talos/recipes-phosphor/chassis/avsbus-control/avsbus-disable@.service
new file mode 100644
index 000000000..424aa2394
--- /dev/null
+++ b/meta-openbmc-machines/meta-openpower/meta-rcs/meta-talos/recipes-phosphor/chassis/avsbus-control/avsbus-disable@.service
@@ -0,0 +1,16 @@
+[Unit]
+Description=Disable the AVS bus on the VRMs
+Wants=avsbus-workaround@%i.service
+After=avsbus-workaround@%i.service
+Before=vrm-control@%i.service
+Conflicts=obmc-chassis-poweroff@%i.target
+ConditionPathExists=!/run/openbmc/chassis@%i-on
+
+[Service]
+ExecStart=/usr/bin/env avsbus-disable.sh
+SyslogIdentifier=avsbus-disable.sh
+Type=oneshot
+RemainAfterExit=yes
+
+[Install]
+WantedBy=obmc-chassis-poweron@%i.target
diff --git a/meta-openbmc-machines/meta-openpower/meta-rcs/meta-talos/recipes-phosphor/chassis/avsbus-control/avsbus-enable.sh b/meta-openbmc-machines/meta-openpower/meta-rcs/meta-talos/recipes-phosphor/chassis/avsbus-control/avsbus-enable.sh
new file mode 100644
index 000000000..98e585cc2
--- /dev/null
+++ b/meta-openbmc-machines/meta-openpower/meta-rcs/meta-talos/recipes-phosphor/chassis/avsbus-control/avsbus-enable.sh
@@ -0,0 +1,16 @@
+#!/bin/sh
+
+i2cset -y 4 0x70 0x00 0x00 b # VDD 0 - PAGE set
+i2cset -y 4 0x70 0x01 0xB0 b # VDD 0
+i2cset -y 4 0x70 0x00 0x01 b # VCS 0 - PAGE set
+i2cset -y 4 0x70 0x01 0xB0 b # VCS 0
+i2cset -y 4 0x70 0x00 0x00 b # VCS 0 - PAGE reset
+i2cset -y 4 0x73 0x00 0x00 b # VDN 0 - PAGE set
+i2cset -y 4 0x73 0x01 0xB0 b # VDN 0
+i2cset -y 5 0x70 0x00 0x00 b # VDD 1 - PAGE set
+i2cset -y 5 0x70 0x01 0xB0 b # VDD 1
+i2cset -y 5 0x70 0x00 0x01 b # VCS 1 - PAGE set
+i2cset -y 5 0x70 0x01 0xB0 b # VCS 1
+i2cset -y 5 0x70 0x00 0x00 b # VCS 1 - PAGE reset
+i2cset -y 5 0x73 0x00 0x00 b # VDN 1 - PAGE set
+i2cset -y 5 0x73 0x01 0xB0 b # VDN 1
diff --git a/meta-openbmc-machines/meta-openpower/meta-rcs/meta-talos/recipes-phosphor/chassis/avsbus-control/avsbus-enable@.service b/meta-openbmc-machines/meta-openpower/meta-rcs/meta-talos/recipes-phosphor/chassis/avsbus-control/avsbus-enable@.service
new file mode 100644
index 000000000..b7fb41e24
--- /dev/null
+++ b/meta-openbmc-machines/meta-openpower/meta-rcs/meta-talos/recipes-phosphor/chassis/avsbus-control/avsbus-enable@.service
@@ -0,0 +1,15 @@
+[Unit]
+Description=Enable the AVS bus on VRMs
+Wants=vrm-control@%i.service
+After=vrm-control@%i.service
+Conflicts=obmc-chassis-poweroff@%i.target
+ConditionPathExists=!/run/openbmc/chassis@%i-on
+
+[Service]
+ExecStart=/usr/bin/env avsbus-enable.sh
+SyslogIdentifier=avsbus-enable.sh
+Type=oneshot
+RemainAfterExit=yes
+
+[Install]
+WantedBy=obmc-chassis-poweron@%i.target
diff --git a/meta-openbmc-machines/meta-openpower/meta-rcs/meta-talos/recipes-phosphor/chassis/avsbus-control/avsbus-workaround.sh b/meta-openbmc-machines/meta-openpower/meta-rcs/meta-talos/recipes-phosphor/chassis/avsbus-control/avsbus-workaround.sh
new file mode 100644
index 000000000..75ec8caed
--- /dev/null
+++ b/meta-openbmc-machines/meta-openpower/meta-rcs/meta-talos/recipes-phosphor/chassis/avsbus-control/avsbus-workaround.sh
@@ -0,0 +1,7 @@
+#!/bin/sh
+
+i2cset -y 4 0x28 0x2E 0x23 b # VDD/VCS 0
+i2cset -y 4 0x2B 0x2E 0x23 b # VDN 0
+i2cset -y 5 0x28 0x2E 0x23 b # VDD/VCS 1
+i2cset -y 5 0x2B 0x2E 0x23 b # VDN 1
+
diff --git a/meta-openbmc-machines/meta-openpower/meta-rcs/meta-talos/recipes-phosphor/chassis/avsbus-control/avsbus-workaround@.service b/meta-openbmc-machines/meta-openpower/meta-rcs/meta-talos/recipes-phosphor/chassis/avsbus-control/avsbus-workaround@.service
new file mode 100644
index 000000000..156ef03c7
--- /dev/null
+++ b/meta-openbmc-machines/meta-openpower/meta-rcs/meta-talos/recipes-phosphor/chassis/avsbus-control/avsbus-workaround@.service
@@ -0,0 +1,16 @@
+[Unit]
+Description=Perform AVS bus workaround on VRMs
+Wants=op-power-start@.service
+After=op-power-start@.service
+Before=avsbus-disable@%i.service
+Conflicts=obmc-chassis-poweroff@%i.target
+ConditionPathExists=!/run/openbmc/chassis@%i-on
+
+[Service]
+ExecStart=/usr/bin/env avsbus-workaround.sh
+SyslogIdentifier=avsbus-workaround.sh
+Type=oneshot
+RemainAfterExit=yes
+
+[Install]
+WantedBy=obmc-chassis-poweron@%i.target
diff --git a/meta-openbmc-machines/meta-openpower/meta-rcs/meta-talos/recipes-phosphor/chassis/fpga-trigger.bb b/meta-openbmc-machines/meta-openpower/meta-rcs/meta-talos/recipes-phosphor/chassis/fpga-trigger.bb
new file mode 100644
index 000000000..caa0f5b75
--- /dev/null
+++ b/meta-openbmc-machines/meta-openpower/meta-rcs/meta-talos/recipes-phosphor/chassis/fpga-trigger.bb
@@ -0,0 +1,36 @@
+SUMMARY = "Talos II FPGA Trigger"
+DESCRIPTION = "Talos II power on workaround to trigger FPGA to continue power sequence"
+PR = "r0"
+
+inherit obmc-phosphor-systemd
+inherit obmc-phosphor-license
+
+RDEPENDS_${PN} += "obmc-pydevtools"
+
+PROVIDES += 'virtual/p9-vcs-workaround'
+RPROVIDES_${PN} += 'virtual-p9-vcs-workaround'
+
+S = "${WORKDIR}"
+SRC_URI += "file://fpga_trigger.sh \
+ file://fpga_reset.sh"
+
+do_install() {
+ install -d ${D}${bindir}
+ install -m 0755 ${WORKDIR}/fpga_trigger.sh ${D}${bindir}/fpga_trigger.sh
+ install -m 0755 ${WORKDIR}/fpga_reset.sh ${D}${bindir}/fpga_reset.sh
+}
+
+TMPL = "fpga_trigger@.service"
+TMPL_RESET = "fpga_reset@.service"
+INSTFMT = "fpga_trigger@{0}.service"
+INSTFMT_RESET = "fpga_reset@{0}.service"
+TGTFMT = "obmc-chassis-poweron@{0}.target"
+TGTFMT_RESET = "obmc-chassis-poweroff@{0}.target"
+FMT = "../${TMPL}:${TGTFMT}.requires/${INSTFMT}"
+FMT_RESET = "../${TMPL_RESET}:${TGTFMT_RESET}.requires/${INSTFMT_RESET}"
+
+SYSTEMD_SERVICE_${PN} += "${TMPL}"
+SYSTEMD_LINK_${PN} += "${@compose_list(d, 'FMT', 'OBMC_CHASSIS_INSTANCES')}"
+
+SYSTEMD_SERVICE_${PN} += "${TMPL_RESET}"
+SYSTEMD_LINK_${PN} += "${@compose_list(d, 'FMT_RESET', 'OBMC_CHASSIS_INSTANCES')}"
diff --git a/meta-openbmc-machines/meta-openpower/meta-rcs/meta-talos/recipes-phosphor/chassis/fpga-trigger/fpga_reset.sh b/meta-openbmc-machines/meta-openpower/meta-rcs/meta-talos/recipes-phosphor/chassis/fpga-trigger/fpga_reset.sh
new file mode 100644
index 000000000..7cd6db730
--- /dev/null
+++ b/meta-openbmc-machines/meta-openpower/meta-rcs/meta-talos/recipes-phosphor/chassis/fpga-trigger/fpga_reset.sh
@@ -0,0 +1,4 @@
+#!/bin/sh
+
+# Reset FPGA
+gpioutil -p S7 -d out -v 1
diff --git a/meta-openbmc-machines/meta-openpower/meta-rcs/meta-talos/recipes-phosphor/chassis/fpga-trigger/fpga_reset@.service b/meta-openbmc-machines/meta-openpower/meta-rcs/meta-talos/recipes-phosphor/chassis/fpga-trigger/fpga_reset@.service
new file mode 100644
index 000000000..fbf01c0c7
--- /dev/null
+++ b/meta-openbmc-machines/meta-openpower/meta-rcs/meta-talos/recipes-phosphor/chassis/fpga-trigger/fpga_reset@.service
@@ -0,0 +1,14 @@
+[Unit]
+Description=Reset FPGA to wait after VDD is powered up
+Wants=op-wait-power-off@%i.service
+After=op-wait-power-off@%i.service
+Conflicts=obmc-chassis-poweron@%i.target
+
+[Service]
+ExecStart=/usr/bin/env fpga_reset.sh
+SyslogIdentifier=fpga_reset.sh
+Type=oneshot
+RemainAfterExit=yes
+
+[Install]
+WantedBy=obmc-chassis-poweroff@%i.target
diff --git a/meta-openbmc-machines/meta-openpower/meta-rcs/meta-talos/recipes-phosphor/chassis/fpga-trigger/fpga_trigger.sh b/meta-openbmc-machines/meta-openpower/meta-rcs/meta-talos/recipes-phosphor/chassis/fpga-trigger/fpga_trigger.sh
new file mode 100644
index 000000000..eb821caef
--- /dev/null
+++ b/meta-openbmc-machines/meta-openpower/meta-rcs/meta-talos/recipes-phosphor/chassis/fpga-trigger/fpga_trigger.sh
@@ -0,0 +1,4 @@
+#!/bin/sh
+
+# Trigger FPGA to give pgood signal
+gpioutil -p S7 -d out -v 0
diff --git a/meta-openbmc-machines/meta-openpower/meta-rcs/meta-talos/recipes-phosphor/chassis/fpga-trigger/fpga_trigger@.service b/meta-openbmc-machines/meta-openpower/meta-rcs/meta-talos/recipes-phosphor/chassis/fpga-trigger/fpga_trigger@.service
new file mode 100644
index 000000000..f949f175c
--- /dev/null
+++ b/meta-openbmc-machines/meta-openpower/meta-rcs/meta-talos/recipes-phosphor/chassis/fpga-trigger/fpga_trigger@.service
@@ -0,0 +1,16 @@
+[Unit]
+Description=Trigger FPGA to give pgood
+Wants=vcs_workaround@%i.service
+Before=vcs_workaround@%i.service
+Wants=obmc-host-start-pre@%i.target
+Before=obmc-host-start-pre@%i.target
+Conflicts=obmc-chassis-poweroff@%i.target
+
+[Service]
+ExecStart=/usr/bin/env fpga_trigger.sh
+SyslogIdentifier=fpga_trigger.sh
+Type=oneshot
+RemainAfterExit=yes
+
+[Install]
+WantedBy=obmc-chassis-poweron@%i.target
diff --git a/meta-openbmc-machines/meta-openpower/meta-rcs/meta-talos/recipes-phosphor/chassis/vrm-control.bb b/meta-openbmc-machines/meta-openpower/meta-rcs/meta-talos/recipes-phosphor/chassis/vrm-control.bb
new file mode 100644
index 000000000..e2eb9f3b9
--- /dev/null
+++ b/meta-openbmc-machines/meta-openpower/meta-rcs/meta-talos/recipes-phosphor/chassis/vrm-control.bb
@@ -0,0 +1,26 @@
+SUMMARY = "Talos II VRM Overrides"
+DESCRIPTION = "Sets Talos II VRMs to custom voltages"
+PR = "r1"
+
+inherit obmc-phosphor-systemd
+inherit obmc-phosphor-license
+
+RDEPENDS_${PN} += "i2c-tools bash"
+
+S = "${WORKDIR}"
+SRC_URI += "file://vrm-control.sh \
+ file://vrm.sh"
+
+do_install() {
+ install -d ${D}${bindir}
+ install -m 0755 ${WORKDIR}/vrm.sh ${D}${bindir}/vrm.sh
+ install -m 0755 ${WORKDIR}/vrm-control.sh ${D}${bindir}/vrm-control.sh
+}
+
+TMPL = "vrm-control@.service"
+INSTFMT = "vrm-control@{0}.service"
+TGTFMT = "obmc-chassis-poweron@{0}.target"
+FMT = "../${TMPL}:${TGTFMT}.requires/${INSTFMT}"
+
+SYSTEMD_SERVICE_${PN} += "${TMPL}"
+SYSTEMD_LINK_${PN} += "${@compose_list(d, 'FMT', 'OBMC_CHASSIS_INSTANCES')}"
diff --git a/meta-openbmc-machines/meta-openpower/meta-rcs/meta-talos/recipes-phosphor/chassis/vrm-control/vrm-control.sh b/meta-openbmc-machines/meta-openpower/meta-rcs/meta-talos/recipes-phosphor/chassis/vrm-control/vrm-control.sh
new file mode 100644
index 000000000..be23d4691
--- /dev/null
+++ b/meta-openbmc-machines/meta-openpower/meta-rcs/meta-talos/recipes-phosphor/chassis/vrm-control/vrm-control.sh
@@ -0,0 +1,137 @@
+#!/bin/bash
+# #########################################################
+# Script to run on Talos II BMC to read/set vrm voltages
+
+
+# #########################################################
+d2v () {
+# usage: d2v <decimal volts>
+
+echo $1 | awk '{print $1 * 256 + .5}' | cut -d '.' -f 1
+}
+
+
+# #########################################################
+v2d () {
+# usage: v2d <hex val>
+
+printf " %0.3fV" `echo $1 | awk '{print $1 / 256}'`
+}
+
+
+# #########################################################
+i2d () {
+# usage: i2d <hex val> <current divisor>
+
+# parse current mantisa and exponent
+# format: SEEE ESMM MMMM MMMM
+let e=$1/0x800
+let esign=e/0x10
+let m=$1\&0x07FF
+let msign=m/0x0400
+
+if [ $msign -eq 1 ]
+then
+ # calc ones compliment
+ let m=($m^0x07FF)+1
+ m="-$m"
+fi
+if [ $esign -eq 1 ]
+then
+ # calc ones compliment
+ let e=(e^0x1F)+1
+ e="-$e"
+fi
+printf " %0.3fA\n" `echo $m $e $2 | awk '{print ($1 * 2^$2) / $3}'`
+}
+
+
+# #########################################################
+rw_vc () {
+# usage: rw_vc <bus> <addr> <current divisor> <channel> <value>
+
+# select channel
+if [ $4 != "x" ]
+then
+ i2cset -y $1 $2 0 $4 b
+fi
+
+# write new voltage set point
+if [ ! -e $5 ]
+then
+ i2cset -y $1 $2 0x21 `d2v $5` w
+fi
+
+# print voltage set point
+v2d `i2cget -y $1 $2 0x21 w`
+
+# print voltage
+v2d `i2cget -y $1 $2 0x8B w`
+
+# print current
+i2d `i2cget -y $1 $2 0x8C w` $3
+
+# default back to channel 0
+if [ $4 != "x" ]
+then
+ i2cset -y $1 $2 0 0 b
+fi
+}
+
+
+# #########################################################
+# Main
+
+if [ -e $1 ]
+then
+ $0 vdda vcsa vdna vioa vddb vcsb vdnb viob
+ exit
+fi
+
+if [ $1 == "-h" ]
+then
+ echo " Usage: vrm [<rail>=[value] [<rail>=[value]] ...]"
+ echo " rail: vdda vcsa vdna vioa vddb vcsb vdnb viob"
+ echo " value: volts"
+ echo
+ echo " e.g., vrm vioa=1.0 viob=1.0"
+ echo
+ exit
+fi
+
+echo "rail set read current"
+echo "------- ------- ------- -------"
+for param in ${@:1}
+do
+ rail=`echo $param | cut -d'=' -f 1`
+ val=`echo ${param}= | cut -d'=' -f 2`
+ echo -n "$rail"
+ case "$rail" in
+ vdda)
+ rw_vc 4 0x70 2 0 $val
+ ;;
+ vddb)
+ rw_vc 5 0x70 2 0 $val
+ ;;
+ vcsa)
+ rw_vc 4 0x70 4 1 $val
+ ;;
+ vcsb)
+ rw_vc 5 0x70 4 1 $val
+ ;;
+ vdna)
+ rw_vc 4 0x73 2 0 $val
+ ;;
+ vdnb)
+ rw_vc 5 0x73 2 0 $val
+ ;;
+ vioa)
+ rw_vc 4 0x73 2 1 $val
+ ;;
+ viob)
+ rw_vc 5 0x73 2 1 $val
+ ;;
+ *)
+ echo " non-existant"
+ esac
+done
diff --git a/meta-openbmc-machines/meta-openpower/meta-rcs/meta-talos/recipes-phosphor/chassis/vrm-control/vrm-control@.service b/meta-openbmc-machines/meta-openpower/meta-rcs/meta-talos/recipes-phosphor/chassis/vrm-control/vrm-control@.service
new file mode 100644
index 000000000..5d072ad5f
--- /dev/null
+++ b/meta-openbmc-machines/meta-openpower/meta-rcs/meta-talos/recipes-phosphor/chassis/vrm-control/vrm-control@.service
@@ -0,0 +1,15 @@
+[Unit]
+Description=Apply voltage overrides to VRMs
+Wants=avsbus-disable@%i.service
+After=avsbus-disable@%i.service
+Before=avsbus-enable@%i.service
+Conflicts=obmc-chassis-poweroff@%i.target
+
+[Service]
+ExecStart=/usr/bin/env vrm.sh
+SyslogIdentifier=vrm.sh
+Type=oneshot
+RemainAfterExit=yes
+
+[Install]
+WantedBy=obmc-chassis-poweron@%i.target
diff --git a/meta-openbmc-machines/meta-openpower/meta-rcs/meta-talos/recipes-phosphor/chassis/vrm-control/vrm.sh b/meta-openbmc-machines/meta-openpower/meta-rcs/meta-talos/recipes-phosphor/chassis/vrm-control/vrm.sh
new file mode 100644
index 000000000..725e72f84
--- /dev/null
+++ b/meta-openbmc-machines/meta-openpower/meta-rcs/meta-talos/recipes-phosphor/chassis/vrm-control/vrm.sh
@@ -0,0 +1,3 @@
+#!/bin/sh
+
+vrm-control.sh vdna=0.9 vdnb=0.9
OpenPOWER on IntegriCloud