summaryrefslogtreecommitdiffstats
path: root/meta-ibm/meta-witherspoon/recipes-phosphor/power
diff options
context:
space:
mode:
Diffstat (limited to 'meta-ibm/meta-witherspoon/recipes-phosphor/power')
-rw-r--r--meta-ibm/meta-witherspoon/recipes-phosphor/power/phosphor-logging-error-logs-native.bbappend2
-rw-r--r--meta-ibm/meta-witherspoon/recipes-phosphor/power/witherspoon-pfault-analysis-error-native.bb18
-rw-r--r--meta-ibm/meta-witherspoon/recipes-phosphor/power/witherspoon-pfault-analysis.bb47
-rw-r--r--meta-ibm/meta-witherspoon/recipes-phosphor/power/witherspoon-pfault-analysis.inc5
-rw-r--r--meta-ibm/meta-witherspoon/recipes-phosphor/power/witherspoon-pfault-analysis/obmc/power-supply-monitor/power-supply-monitor-0.conf6
-rw-r--r--meta-ibm/meta-witherspoon/recipes-phosphor/power/witherspoon-pfault-analysis/obmc/power-supply-monitor/power-supply-monitor-1.conf6
-rw-r--r--meta-ibm/meta-witherspoon/recipes-phosphor/power/witherspoon-pfault-analysis/witherspoon-power-supply-monitor@.service15
-rw-r--r--meta-ibm/meta-witherspoon/recipes-phosphor/power/witherspoon-pfault-analysis/witherspoon-pseq-monitor-pgood.service11
-rw-r--r--meta-ibm/meta-witherspoon/recipes-phosphor/power/witherspoon-pfault-analysis/witherspoon-pseq-monitor.service10
-rw-r--r--meta-ibm/meta-witherspoon/recipes-phosphor/power/witherspoon-power-supply-policy-native.bb12
-rw-r--r--meta-ibm/meta-witherspoon/recipes-phosphor/power/witherspoon-power-supply-policy/power-supply-policy.yaml215
-rw-r--r--meta-ibm/meta-witherspoon/recipes-phosphor/power/witherspoon-power-supply-sync.bb15
-rw-r--r--meta-ibm/meta-witherspoon/recipes-phosphor/power/witherspoon-power-supply-sync/witherspoon-power-supply-sync.service14
13 files changed, 376 insertions, 0 deletions
diff --git a/meta-ibm/meta-witherspoon/recipes-phosphor/power/phosphor-logging-error-logs-native.bbappend b/meta-ibm/meta-witherspoon/recipes-phosphor/power/phosphor-logging-error-logs-native.bbappend
new file mode 100644
index 000000000..03646adeb
--- /dev/null
+++ b/meta-ibm/meta-witherspoon/recipes-phosphor/power/phosphor-logging-error-logs-native.bbappend
@@ -0,0 +1,2 @@
+DEPENDS += "witherspoon-pfault-analysis-error-native"
+
diff --git a/meta-ibm/meta-witherspoon/recipes-phosphor/power/witherspoon-pfault-analysis-error-native.bb b/meta-ibm/meta-witherspoon/recipes-phosphor/power/witherspoon-pfault-analysis-error-native.bb
new file mode 100644
index 000000000..64c551f7d
--- /dev/null
+++ b/meta-ibm/meta-witherspoon/recipes-phosphor/power/witherspoon-pfault-analysis-error-native.bb
@@ -0,0 +1,18 @@
+SUMMARY = "Copy error yaml files to known path for elog parsing"
+PR = "r1"
+
+inherit native
+inherit obmc-phosphor-license
+inherit phosphor-dbus-yaml
+
+require witherspoon-pfault-analysis.inc
+
+S = "${WORKDIR}/git"
+
+do_install_append() {
+ SRC=${S}/org/open_power/Witherspoon
+ DEST=${D}${yaml_dir}/org/open_power/Witherspoon
+ install -d ${DEST}
+ install ${SRC}/Fault.errors.yaml ${DEST}
+ install ${SRC}/Fault.metadata.yaml ${DEST}
+}
diff --git a/meta-ibm/meta-witherspoon/recipes-phosphor/power/witherspoon-pfault-analysis.bb b/meta-ibm/meta-witherspoon/recipes-phosphor/power/witherspoon-pfault-analysis.bb
new file mode 100644
index 000000000..1d148dfa0
--- /dev/null
+++ b/meta-ibm/meta-witherspoon/recipes-phosphor/power/witherspoon-pfault-analysis.bb
@@ -0,0 +1,47 @@
+SUMMARY = "Witherspoon Power Fault Analysis"
+DESCRIPTION = "Analyzes power devices for faults"
+PR = "r1"
+
+inherit autotools
+inherit pkgconfig
+inherit obmc-phosphor-systemd
+inherit pythonnative
+
+require ${PN}.inc
+
+S = "${WORKDIR}/git"
+
+DEPENDS += " \
+ phosphor-logging \
+ autoconf-archive-native \
+ openpower-dbus-interfaces \
+ sdbus++-native \
+ "
+
+RDEPENDS_${PN} += " \
+ phosphor-logging \
+ phosphor-dbus-interfaces \
+ sdbusplus \
+ "
+
+CHASSIS_ON_TGT = "obmc-chassis-poweron@0.target"
+SEQ_MONITOR_SVC = "witherspoon-pseq-monitor.service"
+SEQ_MONITOR_FMT = "../${SEQ_MONITOR_SVC}:${CHASSIS_ON_TGT}.wants/${SEQ_MONITOR_SVC}"
+
+SEQ_PGOOD_SVC = "witherspoon-pseq-monitor-pgood.service"
+SEQ_PGOOD_FMT = "../${SEQ_PGOOD_SVC}:${CHASSIS_ON_TGT}.wants/${SEQ_PGOOD_SVC}"
+
+SYSTEMD_SERVICE_${PN} += "${SEQ_MONITOR_SVC} ${SEQ_PGOOD_SVC}"
+SYSTEMD_LINK_${PN} += "${SEQ_MONITOR_FMT} ${SEQ_PGOOD_FMT}"
+
+PSU_MONITOR_TMPL = "witherspoon-power-supply-monitor@.service"
+PSU_MONITOR_INSTFMT = "witherspoon-power-supply-monitor@{0}.service"
+PSU_MONITOR_TGT = "${SYSTEMD_DEFAULT_TARGET}"
+PSU_MONITOR_FMT = "../${PSU_MONITOR_TMPL}:${PSU_MONITOR_TGT}.requires/${PSU_MONITOR_INSTFMT}"
+
+FILES_witherspoon-psu-monitor = "${sbindir}/witherspoon-psu-monitor"
+SYSTEMD_SERVICE_${PN} += "${PSU_MONITOR_TMPL}"
+SYSTEMD_LINK_${PN} += "${@compose_list(d, 'PSU_MONITOR_FMT', 'OBMC_POWER_SUPPLY_INSTANCES')}"
+
+PSU_MONITOR_ENV_FMT = "obmc/power-supply-monitor/power-supply-monitor-{0}.conf"
+SYSTEMD_ENVIRONMENT_FILE_${PN} += "${@compose_list(d, 'PSU_MONITOR_ENV_FMT', 'OBMC_POWER_SUPPLY_INSTANCES')}"
diff --git a/meta-ibm/meta-witherspoon/recipes-phosphor/power/witherspoon-pfault-analysis.inc b/meta-ibm/meta-witherspoon/recipes-phosphor/power/witherspoon-pfault-analysis.inc
new file mode 100644
index 000000000..f047c1fa2
--- /dev/null
+++ b/meta-ibm/meta-witherspoon/recipes-phosphor/power/witherspoon-pfault-analysis.inc
@@ -0,0 +1,5 @@
+HOMEPAGE = "https://github.com/openbmc/witherspoon-pfault-analysis"
+LICENSE = "Apache-2.0"
+LIC_FILES_CHKSUM = "file://${S}/LICENSE;md5=e3fc50a88d0a364313df4b21ef20c29e"
+SRC_URI += "git://github.com/openbmc/witherspoon-pfault-analysis"
+SRCREV = "cab4834210a92da1cd300ec12740fcb1c19dc375"
diff --git a/meta-ibm/meta-witherspoon/recipes-phosphor/power/witherspoon-pfault-analysis/obmc/power-supply-monitor/power-supply-monitor-0.conf b/meta-ibm/meta-witherspoon/recipes-phosphor/power/witherspoon-pfault-analysis/obmc/power-supply-monitor/power-supply-monitor-0.conf
new file mode 100644
index 000000000..207eb503f
--- /dev/null
+++ b/meta-ibm/meta-witherspoon/recipes-phosphor/power/witherspoon-pfault-analysis/obmc/power-supply-monitor/power-supply-monitor-0.conf
@@ -0,0 +1,6 @@
+DEVPATH=/sys/bus/i2c/devices/3-0069
+INSTANCE=0
+INVENTORY=/system/chassis/motherboard/powersupply0
+NUM_HISTORY_RECORDS=120
+SYNC_GPIO_PATH=/dev/gpiochip0
+SYNC_GPIO_NUM=105 \ No newline at end of file
diff --git a/meta-ibm/meta-witherspoon/recipes-phosphor/power/witherspoon-pfault-analysis/obmc/power-supply-monitor/power-supply-monitor-1.conf b/meta-ibm/meta-witherspoon/recipes-phosphor/power/witherspoon-pfault-analysis/obmc/power-supply-monitor/power-supply-monitor-1.conf
new file mode 100644
index 000000000..73efd450d
--- /dev/null
+++ b/meta-ibm/meta-witherspoon/recipes-phosphor/power/witherspoon-pfault-analysis/obmc/power-supply-monitor/power-supply-monitor-1.conf
@@ -0,0 +1,6 @@
+DEVPATH=/sys/bus/i2c/devices/3-0068
+INSTANCE=1
+INVENTORY=/system/chassis/motherboard/powersupply1
+NUM_HISTORY_RECORDS=120
+SYNC_GPIO_PATH=/dev/gpiochip0
+SYNC_GPIO_NUM=105 \ No newline at end of file
diff --git a/meta-ibm/meta-witherspoon/recipes-phosphor/power/witherspoon-pfault-analysis/witherspoon-power-supply-monitor@.service b/meta-ibm/meta-witherspoon/recipes-phosphor/power/witherspoon-pfault-analysis/witherspoon-power-supply-monitor@.service
new file mode 100644
index 000000000..ba4e368e4
--- /dev/null
+++ b/meta-ibm/meta-witherspoon/recipes-phosphor/power/witherspoon-pfault-analysis/witherspoon-power-supply-monitor@.service
@@ -0,0 +1,15 @@
+[Unit]
+Description=Witherspoon Power Supply %I Monitor
+Wants=mapper-wait@-xyz-openbmc_project-inventory-system-chassis-motherboard-powersupply%i.service
+After=mapper-wait@-xyz-openbmc_project-inventory-system-chassis-motherboard-powersupply%i.service
+Wants=mapper-wait@-org-openbmc-control-power0.service
+After=mapper-wait@-org-openbmc-control-power0.service
+ConditionPathExists={envfiledir}/obmc/power-supply-monitor/power-supply-monitor-%i.conf
+
+[Service]
+EnvironmentFile={envfiledir}/obmc/power-supply-monitor/power-supply-monitor-%i.conf
+ExecStart=/usr/bin/env witherspoon-psu-monitor --path=${{DEVPATH}} --instance=${{INSTANCE}} --inventory=${{INVENTORY}} --num-history-records=${{NUM_HISTORY_RECORDS}} --sync-gpio-path=${{SYNC_GPIO_PATH}} --sync-gpio-num=${{SYNC_GPIO_NUM}}
+SyslogIdentifier=witherspoon-psu-monitor
+
+[Install]
+RequiredBy={SYSTEMD_DEFAULT_TARGET}
diff --git a/meta-ibm/meta-witherspoon/recipes-phosphor/power/witherspoon-pfault-analysis/witherspoon-pseq-monitor-pgood.service b/meta-ibm/meta-witherspoon/recipes-phosphor/power/witherspoon-pfault-analysis/witherspoon-pseq-monitor-pgood.service
new file mode 100644
index 000000000..f18efc1a6
--- /dev/null
+++ b/meta-ibm/meta-witherspoon/recipes-phosphor/power/witherspoon-pfault-analysis/witherspoon-pseq-monitor-pgood.service
@@ -0,0 +1,11 @@
+[Unit]
+Description=Witherspoon Power Sequencer Power-on Monitor
+Wants=op-power-start@0.service
+After=op-power-start@0.service
+Conflicts=obmc-chassis-poweroff@0.target
+ConditionPathExists=!/run/openbmc/chassis@0-on
+
+[Service]
+Type=oneshot
+ExecStart=/usr/bin/env witherspoon-pseq-monitor -a pgood-monitor -i 5000
+SyslogIdentifier=witherspoon-pseq-monitor
diff --git a/meta-ibm/meta-witherspoon/recipes-phosphor/power/witherspoon-pfault-analysis/witherspoon-pseq-monitor.service b/meta-ibm/meta-witherspoon/recipes-phosphor/power/witherspoon-pfault-analysis/witherspoon-pseq-monitor.service
new file mode 100644
index 000000000..6e76c8f48
--- /dev/null
+++ b/meta-ibm/meta-witherspoon/recipes-phosphor/power/witherspoon-pfault-analysis/witherspoon-pseq-monitor.service
@@ -0,0 +1,10 @@
+[Unit]
+Description=Witherspoon Power Sequencer Runtime Monitor
+Wants=obmc-host-start-pre@0.target
+Before=obmc-host-start-pre@0.target
+After=obmc-power-on@0.target
+Conflicts=obmc-chassis-poweroff@0.target
+
+[Service]
+ExecStart=/usr/bin/env witherspoon-pseq-monitor -a runtime-monitor -i 500
+SyslogIdentifier=witherspoon-pseq-monitor
diff --git a/meta-ibm/meta-witherspoon/recipes-phosphor/power/witherspoon-power-supply-policy-native.bb b/meta-ibm/meta-witherspoon/recipes-phosphor/power/witherspoon-power-supply-policy-native.bb
new file mode 100644
index 000000000..4d234c199
--- /dev/null
+++ b/meta-ibm/meta-witherspoon/recipes-phosphor/power/witherspoon-power-supply-policy-native.bb
@@ -0,0 +1,12 @@
+SUMMARY = "Power supply policy for Witherspoon"
+PR = "r1"
+
+inherit native
+inherit obmc-phosphor-license
+inherit phosphor-dbus-monitor
+
+SRC_URI += "file://power-supply-policy.yaml"
+
+do_install() {
+ install -D ${WORKDIR}/power-supply-policy.yaml ${D}${config_dir}/power-supply-policy.yaml
+}
diff --git a/meta-ibm/meta-witherspoon/recipes-phosphor/power/witherspoon-power-supply-policy/power-supply-policy.yaml b/meta-ibm/meta-witherspoon/recipes-phosphor/power/witherspoon-power-supply-policy/power-supply-policy.yaml
new file mode 100644
index 000000000..20141c9c3
--- /dev/null
+++ b/meta-ibm/meta-witherspoon/recipes-phosphor/power/witherspoon-power-supply-policy/power-supply-policy.yaml
@@ -0,0 +1,215 @@
+# Witherspoon power supply policy for PDM.
+#
+# Create an error if a power supply is removed while the system is powered on
+
+- name: power supply0
+ class: group
+ group: path
+ members:
+ - meta: POWER SUPPLY
+ path: /xyz/openbmc_project/inventory/system/chassis/motherboard/powersupply0
+
+- name: power supply1
+ class: group
+ group: path
+ members:
+ - meta: POWER SUPPLY
+ path: /xyz/openbmc_project/inventory/system/chassis/motherboard/powersupply1
+
+- name: power supplies
+ description: >
+ 'A Witherspoon has two power supplies to monitor.'
+ class: group
+ group: path
+ members:
+ - meta: POWER SUPPLY
+ path: /xyz/openbmc_project/inventory/system/chassis/motherboard/powersupply0
+ - meta: POWER SUPPLY
+ path: /xyz/openbmc_project/inventory/system/chassis/motherboard/powersupply1
+
+- name: chassis state
+ description: >
+ 'A Witherspoon has a single chassis to monitor.'
+ class: group
+ group: path
+ members:
+ - meta: CHASSISSTATE
+ path: /xyz/openbmc_project/state/chassis0
+
+- name: power supply present
+ description: >
+ 'Monitor the presence state of each power supply.'
+ class: group
+ group: property
+ type: boolean
+ members:
+ - interface: xyz.openbmc_project.Inventory.Item
+ meta: PRESENT
+ property: Present
+
+- name: chassis powered
+ description: >
+ 'Monitor the chassis power state.'
+ class: group
+ group: property
+ type: string
+ members:
+ - interface: xyz.openbmc_project.State.Chassis
+ meta: CHASSIS_STATE
+ property: CurrentPowerState
+
+- name: watch power supply present
+ description: >
+ 'Trigger logic on power supply presence state changes.'
+ class: watch
+ watch: property
+ paths: power supplies
+ properties: power supply present
+ callback: check power
+
+- name: watch chassis state
+ description: >
+ 'Trigger logic on chassis power state changes.'
+ class: watch
+ watch: property
+ paths: chassis state
+ properties: chassis powered
+ callback: check power
+
+- name: check power
+ description: >
+ 'If the chassis has power, check for power supplies.'
+ class: condition
+ condition: count
+ paths: chassis state
+ properties: chassis powered
+ callback: check power supplies
+ countop: '>'
+ countbound: 0
+ op: '=='
+ bound: xyz.openbmc_project.State.Chassis.PowerState.On
+
+- name: check power supplies
+ description: >
+ 'Create an error if a power supply is not present.'
+ class: callback
+ callback: group
+ members:
+ - check power supply0 presence
+ - check power supply1 presence
+
+- name: check power supply0 presence
+ description: >
+ 'If this condition passes power supply0 has been unplugged for more than
+ 5 seconds. Count present power supplies rather than non-present
+ power supplies since the latter would pass if the power supply has not
+ been created for some reason.
+
+ For a more detailed definition of unplugged, consult the documentation
+ of xyz.openbmc_project.Inventory.Item and/or the documentation
+ of the power supply inventory object implementation.'
+ class: condition
+ condition: count
+ paths: power supply0
+ properties: power supply present
+ defer: 5000000us
+ callback: notpresent power supply0 error
+ countop: '<'
+ countbound: 1
+ op: '=='
+ bound: true
+
+- name: check power supply1 presence
+ description: >
+ 'If this condition passes power supply1 has been unplugged for more than
+ 5 seconds.'
+ class: condition
+ condition: count
+ paths: power supply1
+ properties: power supply present
+ defer: 5000000us
+ callback: notpresent power supply1 error
+ countop: '<'
+ countbound: 1
+ op: '=='
+ bound: true
+
+- name: notpresent power supply0 error
+ class: callback
+ callback: elog
+ paths: power supply0
+ properties: power supply present
+ error: xyz::openbmc_project::Inventory::Error::NotPresent
+ metadata:
+ - name: xyz::openbmc_project::Inventory::NotPresent::CALLOUT_INVENTORY_PATH
+ value: /xyz/openbmc_project/inventory/system/chassis/motherboard/powersupply0
+ type: string
+
+- name: notpresent power supply1 error
+ class: callback
+ callback: elog
+ paths: power supply1
+ properties: power supply present
+ error: xyz::openbmc_project::Inventory::Error::NotPresent
+ metadata:
+ - name: xyz::openbmc_project::Inventory::NotPresent::CALLOUT_INVENTORY_PATH
+ value: /xyz/openbmc_project/inventory/system/chassis/motherboard/powersupply1
+ type: string
+
+- name: resolve power supply0 errors if present
+ description: >
+ 'If power supply0 is present, call the resolve ps0 errors callback.'
+ class: condition
+ condition: count
+ paths: power supply0
+ properties: power supply present
+ callback: resolve power supply0 errors
+ countop: '>'
+ countbound: 0
+ op: '=='
+ bound: true
+
+- name: resolve power supply1 errors if present
+ description: >
+ 'If power supply1 is present, call the resolve ps1 errors callback.'
+ class: condition
+ condition: count
+ paths: power supply1
+ properties: power supply present
+ callback: resolve power supply1 errors
+ countop: '>'
+ countbound: 0
+ op: '=='
+ bound: true
+
+- name: resolve power supply0 errors
+ class: callback
+ callback: resolve callout
+ paths: power supply0
+ properties: power supply present
+ callout: /xyz/openbmc_project/inventory/system/chassis/motherboard/powersupply0
+
+- name: resolve power supply1 errors
+ class: callback
+ callback: resolve callout
+ paths: power supply1
+ properties: power supply present
+ callout: /xyz/openbmc_project/inventory/system/chassis/motherboard/powersupply1
+
+- name: watch power supply0 present for resolving error logs
+ description: >
+ 'On supply present state changes, check if errors need to be resolved.'
+ class: watch
+ watch: property
+ paths: power supply0
+ properties: power supply present
+ callback: resolve power supply0 errors if present
+
+- name: watch power supply1 present for resolving error logs
+ description: >
+ 'On supply present state changes, check if errors need to be resolved.'
+ class: watch
+ watch: property
+ paths: power supply1
+ properties: power supply present
+ callback: resolve power supply1 errors if present
diff --git a/meta-ibm/meta-witherspoon/recipes-phosphor/power/witherspoon-power-supply-sync.bb b/meta-ibm/meta-witherspoon/recipes-phosphor/power/witherspoon-power-supply-sync.bb
new file mode 100644
index 000000000..b0903e714
--- /dev/null
+++ b/meta-ibm/meta-witherspoon/recipes-phosphor/power/witherspoon-power-supply-sync.bb
@@ -0,0 +1,15 @@
+SUMMARY = "Witherspoon Power Supply Sync"
+DESCRIPTION = "Synchronizes the power supplies' INPUT_HISTORY data"
+PR = "r1"
+
+inherit obmc-phosphor-license
+inherit obmc-phosphor-systemd
+
+RDEPENDS_${PN} += "virtual/obmc-gpio-monitor"
+
+SYNC_SERVICE = "witherspoon-power-supply-sync.service"
+TGTFMT = "obmc-chassis-poweron@0.target"
+SYNC_FMT = "../${SYNC_SERVICE}:${TGTFMT}.wants/${SYNC_SERVICE}"
+
+SYSTEMD_SERVICE_${PN} += "${SYNC_SERVICE}"
+SYSTEMD_LINK_${PN} += "${SYNC_FMT}"
diff --git a/meta-ibm/meta-witherspoon/recipes-phosphor/power/witherspoon-power-supply-sync/witherspoon-power-supply-sync.service b/meta-ibm/meta-witherspoon/recipes-phosphor/power/witherspoon-power-supply-sync/witherspoon-power-supply-sync.service
new file mode 100644
index 000000000..005a0141d
--- /dev/null
+++ b/meta-ibm/meta-witherspoon/recipes-phosphor/power/witherspoon-power-supply-sync/witherspoon-power-supply-sync.service
@@ -0,0 +1,14 @@
+[Unit]
+Description=Witherspoon Power Supply Input History SYNC
+Wants=obmc-power-start-pre@0.target
+After=obmc-power-start-pre@0.target
+Wants=obmc-chassis-poweron@0.target
+Before=obmc-chassis-poweron@0.target
+ConditionPathExists=!/run/openbmc/chassis@0-on
+
+[Service]
+ExecStart=/usr/bin/env phosphor-gpio-util --gpio=105 --path=/dev/gpiochip0 --delay=5 --action=low_high
+SyslogIdentifier=witherspoon-power-supply-sync
+
+[Install]
+RequiredBy=obmc-chassis-poweron@0.target
OpenPOWER on IntegriCloud