diff options
author | Timothy Pearson <tpearson@raptorengineering.com> | 2019-04-30 18:59:12 +0000 |
---|---|---|
committer | Timothy Pearson <tpearson@raptorengineering.com> | 2019-05-10 21:56:01 +0000 |
commit | 4d58f41bf8838aafae797db31e5327cd2207291b (patch) | |
tree | f725354c32ad6f3faf9f041128c8d821c7bd297c | |
parent | c3c1ddbed8b7414e50ee75057038548fc37a49d4 (diff) | |
download | blackbird-openbmc-4d58f41bf8838aafae797db31e5327cd2207291b.tar.gz blackbird-openbmc-4d58f41bf8838aafae797db31e5327cd2207291b.zip |
Initial Blackbird files
112 files changed, 9155 insertions, 0 deletions
@@ -37,6 +37,7 @@ then move to the next step. Additional examples can be found in the Machine | TEMPLATECONF --------|--------- +Blackbird | ```meta-rcs/meta-blackbird/conf``` Talos II | ```meta-rcs/meta-talos/conf``` diff --git a/meta-rcs/meta-blackbird/conf/bblayers.conf.sample b/meta-rcs/meta-blackbird/conf/bblayers.conf.sample new file mode 100644 index 000000000..1faa7a3cc --- /dev/null +++ b/meta-rcs/meta-blackbird/conf/bblayers.conf.sample @@ -0,0 +1,33 @@ +# LAYER_CONF_VERSION is increased each time build/conf/bblayers.conf +# changes incompatibly +LCONF_VERSION = "8" + +BBPATH = "${TOPDIR}" +BBFILES ?= "" + +BBLAYERS ?= " \ + ##OEROOT##/meta \ + ##OEROOT##/meta-openembedded/meta-oe \ + ##OEROOT##/meta-openembedded/meta-networking \ + ##OEROOT##/meta-openembedded/meta-perl \ + ##OEROOT##/meta-openembedded/meta-python \ + ##OEROOT##/meta-phosphor \ + ##OEROOT##/meta-aspeed \ + ##OEROOT##/meta-openpower \ + ##OEROOT##/meta-ibm \ + ##OEROOT##/meta-rcs \ + ##OEROOT##/meta-rcs/meta-blackbird \ + " +BBLAYERS_NON_REMOVABLE ?= " \ + ##OEROOT##/meta \ + ##OEROOT##/meta-openembedded/meta-oe \ + ##OEROOT##/meta-openembedded/meta-networking \ + ##OEROOT##/meta-openembedded/meta-perl \ + ##OEROOT##/meta-openembedded/meta-python \ + ##OEROOT##/meta-phosphor \ + ##OEROOT##/meta-aspeed \ + ##OEROOT##/meta-openpower \ + ##OEROOT##/meta-ibm \ + ##OEROOT##/meta-rcs \ + ##OEROOT##/meta-rcs/meta-blackbird \ + " diff --git a/meta-rcs/meta-blackbird/conf/conf-notes.txt b/meta-rcs/meta-blackbird/conf/conf-notes.txt new file mode 100644 index 000000000..9b3c01a55 --- /dev/null +++ b/meta-rcs/meta-blackbird/conf/conf-notes.txt @@ -0,0 +1,2 @@ +Common targets are: + obmc-phosphor-image diff --git a/meta-rcs/meta-blackbird/conf/distro/openbmc-blackbird.conf b/meta-rcs/meta-blackbird/conf/distro/openbmc-blackbird.conf new file mode 100644 index 000000000..f8569d43e --- /dev/null +++ b/meta-rcs/meta-blackbird/conf/distro/openbmc-blackbird.conf @@ -0,0 +1,2 @@ +require conf/distro/openbmc-openpower.conf +require conf/distro/include/openpower-mrw.inc diff --git a/meta-rcs/meta-blackbird/conf/layer.conf b/meta-rcs/meta-blackbird/conf/layer.conf new file mode 100644 index 000000000..b8f5a9bae --- /dev/null +++ b/meta-rcs/meta-blackbird/conf/layer.conf @@ -0,0 +1,10 @@ +# We have a conf and classes directory, add to BBPATH +BBPATH .= ":${LAYERDIR}" + +# We have recipes-* directories, add to BBFILES +BBFILES += "${LAYERDIR}/recipes-*/*/*.bb \ + ${LAYERDIR}/recipes-*/*/*.bbappend" + +BBFILE_COLLECTIONS += "blackbird-layer" +BBFILE_PATTERN_blackbird-layer = "" +LAYERSERIES_COMPAT_blackbird-layer = "thud warrior" diff --git a/meta-rcs/meta-blackbird/conf/local.conf.sample b/meta-rcs/meta-blackbird/conf/local.conf.sample new file mode 100644 index 000000000..19af6ca50 --- /dev/null +++ b/meta-rcs/meta-blackbird/conf/local.conf.sample @@ -0,0 +1,223 @@ +# +# This file is your local configuration file and is where all local user settings +# are placed. The comments in this file give some guide to the options a new user +# to the system might want to change but pretty much any configuration option can +# be set in this file. +# +# Lines starting with the '#' character are commented out and in some cases the +# default values are provided as comments to show people example syntax. Enabling +# the option is a question of removing the # character and making any change to the +# variable as required. + +# +# Machine Selection +# +MACHINE ??= "blackbird" + +# +# Where to place downloads +# +# During a first build the system will download many different source code tarballs +# from various upstream projects. This can take a while, particularly if your network +# connection is slow. These are all stored in DL_DIR. When wiping and rebuilding you +# can preserve this directory to speed up this part of subsequent builds. This directory +# is safe to share between multiple builds on the same machine too. +# +# The default is a downloads directory under TOPDIR which is the build directory. +# +#DL_DIR ?= "${TOPDIR}/downloads" + +# +# Where to place shared-state files +# +# BitBake has the capability to accelerate builds based on previously built output. +# This is done using "shared state" files which can be thought of as cache objects +# and this option determines where those files are placed. +# +# You can wipe out TMPDIR leaving this directory intact and the build would regenerate +# from these files if no changes were made to the configuration. If changes were made +# to the configuration, only shared state files where the state was still valid would +# be used (done using checksums). +# +# The default is a sstate-cache directory under TOPDIR. +# +#SSTATE_DIR ?= "${TOPDIR}/sstate-cache" + +# +# Where to place the build output +# +# This option specifies where the bulk of the building work should be done and +# where BitBake should place its temporary files and output. Keep in mind that +# this includes the extraction and compilation of many applications and the toolchain +# which can use Gigabytes of hard disk space. +# +# The default is a tmp directory under TOPDIR. +# +#TMPDIR = "${TOPDIR}/tmp" + +# +# Default policy config +# +# The distribution setting controls which policy settings are used as defaults. +# The default value is fine for general Yocto project use, at least initially. +# Ultimately when creating custom policy, people will likely end up subclassing +# these defaults. +# +DISTRO ?= "openbmc-blackbird" +# As an example of a subclass there is a "bleeding" edge policy configuration +# where many versions are set to the absolute latest code from the upstream +# source control systems. This is just mentioned here as an example, its not +# useful to most new users. +# DISTRO ?= "poky-bleeding" + +# +# Package Management configuration +# +# This variable lists which packaging formats to enable. Multiple package backends +# can be enabled at once and the first item listed in the variable will be used +# to generate the root filesystems. +# Options are: +# - 'package_deb' for debian style deb files +# - 'package_ipk' for ipk files are used by opkg (a debian style embedded package manager) +# - 'package_rpm' for rpm style packages +# E.g.: PACKAGE_CLASSES ?= "package_rpm package_deb package_ipk" +# We default to rpm: +PACKAGE_CLASSES ?= "package_rpm" + +# +# SDK/ADT target architecture +# +# This variable specifies the architecture to build SDK/ADT items for and means +# you can build the SDK packages for architectures other than the machine you are +# running the build on (i.e. building i686 packages on an x86_64 host). +# Supported values are i686 and x86_64 +#SDKMACHINE ?= "i686" + +SANITY_TESTED_DISTROS_append ?= " *" + +# +# Extra image configuration defaults +# +# The EXTRA_IMAGE_FEATURES variable allows extra packages to be added to the generated +# images. Some of these options are added to certain image types automatically. The +# variable can contain the following options: +# "dbg-pkgs" - add -dbg packages for all installed packages +# (adds symbol information for debugging/profiling) +# "dev-pkgs" - add -dev packages for all installed packages +# (useful if you want to develop against libs in the image) +# "ptest-pkgs" - add -ptest packages for all ptest-enabled packages +# (useful if you want to run the package test suites) +# "tools-sdk" - add development tools (gcc, make, pkgconfig etc.) +# "tools-debug" - add debugging tools (gdb, strace) +# "eclipse-debug" - add Eclipse remote debugging support +# "tools-profile" - add profiling tools (oprofile, exmap, lttng, valgrind) +# "tools-testapps" - add useful testing tools (ts_print, aplay, arecord etc.) +# "debug-tweaks" - make an image suitable for development +# e.g. ssh root access has a blank password +# There are other application targets that can be used here too, see +# meta/classes/image.bbclass and meta/classes/core-image.bbclass for more details. +# We default to enabling the debugging tweaks. +EXTRA_IMAGE_FEATURES = "debug-tweaks" + +# +# Additional image features +# +# The following is a list of additional classes to use when building images which +# enable extra features. Some available options which can be included in this variable +# are: +# - 'buildstats' collect build statistics +# - 'image-mklibs' to reduce shared library files size for an image +# - 'image-prelink' in order to prelink the filesystem image +# - 'image-swab' to perform host system intrusion detection +# NOTE: if listing mklibs & prelink both, then make sure mklibs is before prelink +# NOTE: mklibs also needs to be explicitly enabled for a given image, see local.conf.extended +USER_CLASSES ?= "buildstats image-mklibs image-prelink" + +# +# Runtime testing of images +# +# The build system can test booting virtual machine images under qemu (an emulator) +# after any root filesystems are created and run tests against those images. To +# enable this uncomment this line. See classes/testimage(-auto).bbclass for +# further details. +#TEST_IMAGE = "1" +# +# Interactive shell configuration +# +# Under certain circumstances the system may need input from you and to do this it +# can launch an interactive shell. It needs to do this since the build is +# multithreaded and needs to be able to handle the case where more than one parallel +# process may require the user's attention. The default is iterate over the available +# terminal types to find one that works. +# +# Examples of the occasions this may happen are when resolving patches which cannot +# be applied, to use the devshell or the kernel menuconfig +# +# Supported values are auto, gnome, xfce, rxvt, screen, konsole (KDE 3.x only), none +# Note: currently, Konsole support only works for KDE 3.x due to the way +# newer Konsole versions behave +#OE_TERMINAL = "auto" +# By default disable interactive patch resolution (tasks will just fail instead): +PATCHRESOLVE = "noop" + +# +# Disk Space Monitoring during the build +# +# Monitor the disk space during the build. If there is less that 1GB of space or less +# than 100K inodes in any key build location (TMPDIR, DL_DIR, SSTATE_DIR), gracefully +# shutdown the build. If there is less that 100MB or 1K inodes, perform a hard abort +# of the build. The reason for this is that running completely out of space can corrupt +# files and damages the build in ways which may not be easily recoverable. +# It's necessary to monitor /tmp, if there is no space left the build will fail +# with very exotic errors. +BB_DISKMON_DIRS = "\ + STOPTASKS,${TMPDIR},1G,100K \ + STOPTASKS,${DL_DIR},1G,100K \ + STOPTASKS,${SSTATE_DIR},1G,100K \ + STOPTASKS,/tmp,100M,100K \ + ABORT,${TMPDIR},100M,1K \ + ABORT,${DL_DIR},100M,1K \ + ABORT,${SSTATE_DIR},100M,1K \ + ABORT,/tmp,10M,1K" + +# +# Shared-state files from other locations +# +# As mentioned above, shared state files are prebuilt cache data objects which can +# used to accelerate build time. This variable can be used to configure the system +# to search other mirror locations for these objects before it builds the data itself. +# +# This can be a filesystem directory, or a remote url such as http or ftp. These +# would contain the sstate-cache results from previous builds (possibly from other +# machines). This variable works like fetcher MIRRORS/PREMIRRORS and points to the +# cache locations to check for the shared objects. +# NOTE: if the mirror uses the same structure as SSTATE_DIR, you need to add PATH +# at the end as shown in the examples below. This will be substituted with the +# correct path within the directory structure. +#SSTATE_MIRRORS ?= "\ +#file://.* http://someserver.tld/share/sstate/PATH;downloadfilename=PATH \n \ +#file://.* file:///some/local/dir/sstate/PATH" + + +# +# Qemu configuration +# +# By default qemu will build with a builtin VNC server where graphical output can be +# seen. The two lines below enable the SDL backend too. This assumes there is a +# libsdl library available on your build system. +#PACKAGECONFIG_append_pn-qemu-native = " sdl" +#PACKAGECONFIG_append_pn-nativesdk-qemu = " sdl" +#ASSUME_PROVIDED += "libsdl-native" + + +# CONF_VERSION is increased each time build/conf/ changes incompatibly and is used to +# track the version of this file when it was generated. This can safely be ignored if +# this doesn't mean anything to you. +CONF_VERSION = "1" + +# Set the root password to '0penBmc' +INHERIT += "extrausers" + +EXTRA_USERS_PARAMS = " \ + usermod -p '\$1\$UGMqyqdG\$FZiylVFmRRfl9Z0Ue8G7e/' root; \ + " diff --git a/meta-rcs/meta-blackbird/conf/machine/blackbird.conf b/meta-rcs/meta-blackbird/conf/machine/blackbird.conf new file mode 100644 index 000000000..7174a1126 --- /dev/null +++ b/meta-rcs/meta-blackbird/conf/machine/blackbird.conf @@ -0,0 +1,46 @@ +KMACHINE = "aspeed" +KERNEL_DEVICETREE = "${KMACHINE}-bmc-opp-${MACHINE}.dtb" + +UBOOT_MACHINE = "ast_g5_ncsi_config" + +OBMC_MACHINE_FEATURES += "obmc-mrw" + +OBMC_POWER_SUPPLY_INSTANCES = "0 1" + +require conf/machine/include/ast2500.inc +require conf/machine/include/obmc-bsp-common.inc +require conf/machine/include/rcs.inc +require conf/machine/include/p9.inc + +PHOSPHOR_MRW_URI = "git://scm.raptorcs.com/scm/git/blackbird-xml;protocol=https" +PHOSPHOR_MRW_REV = "a25a7887218078a634f9bfb16b82929bbe6103fd" + +# Inhibit phosphor-hwmon-config-mrw +VIRTUAL-RUNTIME_phosphor-hwmon-config_df-mrw = "" + +# Inhibit phosphor-fan-presence-mrw-native +PREFERRED_PROVIDER_virtual/phosphor-fan-presence-config_df-mrw = \ + "phosphor-fan-presence-config-native" + +# Inhibit phosphor-fan-control-fan-config-mrw-native +PREFERRED_PROVIDER_virtual/phosphor-fan-control-fan-config_df-mrw = \ + "phosphor-fan-control-fan-config-native" + +DISTRO_FEATURES_append = "\ + obmc-openpower \ + obmc-openpower-extra \ + obmc-openpower-legacy \ + " +MACHINE_EXTRA_RDEPENDS += "obmc-ipl-status-led-monitor obmc-hardbeep" + +# For kernel debug +# MACHINE_EXTRA_RDEPENDS += " kernel-modules" + +PREFERRED_PROVIDER_virtual/phosphor-ipmi-fru-inventory = "blackbird-ipmi-inventory-map-native" +PREFERRED_PROVIDER_virtual/phosphor-ipmi-fru-inventory_df-mrw = "blackbird-ipmi-inventory-map-native" +PREFERRED_PROVIDER_virtual/phosphor-led-manager-config-native = "blackbird-led-manager-config-native" +PREFERRED_PROVIDER_virtual/phosphor-led-manager-config-native_df-mrw = "blackbird-led-manager-config-native" +PREFERRED_PROVIDER_virtual/phosphor-ipmi-fru-read-inventory = "blackbird-ipmi-fru-read-inventory-native" +PREFERRED_PROVIDER_virtual/phosphor-ipmi-fru-read-inventory_df-mrw = "blackbird-ipmi-fru-read-inventory-native" +PREFERRED_PROVIDER_virtual/phosphor-ipmi-inventory-sel = "blackbird-ipmi-inventory-sel-native" +PREFERRED_PROVIDER_virtual/phosphor-ipmi-inventory-sel_df-mrw = "blackbird-ipmi-inventory-sel-native" diff --git a/meta-rcs/meta-blackbird/recipes-kernel/linux/linux-aspeed/blackbird.cfg b/meta-rcs/meta-blackbird/recipes-kernel/linux/linux-aspeed/blackbird.cfg new file mode 100644 index 000000000..9b4a9bb1c --- /dev/null +++ b/meta-rcs/meta-blackbird/recipes-kernel/linux/linux-aspeed/blackbird.cfg @@ -0,0 +1,23 @@ +CONFIG_HWMON=y +CONFIG_SENSORS_TMP421=y +CONFIG_SENSORS_W83773G=y +CONFIG_RTC_DRV_RV8803=y + +CONFIG_GPIOLIB=y +CONFIG_PWM=y +CONFIG_PWM_GPIO=y +CONFIG_LEDS_CLASS=y +CONFIG_LEDS_PWM=y + +CONFIG_DEBUG_LL=y +CONFIG_DEBUG_LL_UART_8250=y +CONFIG_DEBUG_UART_PHYS=0x1e784000 +CONFIG_DEBUG_UART_VIRT=0xe8784000 +CONFIG_EARLY_PRINTK=y + +CONFIG_HZ=1000 +CONFIG_SCHED_HRTICK=y +CONFIG_HIGH_RES_TIMERS=y + +CONFIG_DEBUG_KERNEL=y +CONFIG_DEBUG_PINCTRL=y diff --git a/meta-rcs/meta-blackbird/recipes-kernel/linux/linux-aspeed_%.bbappend b/meta-rcs/meta-blackbird/recipes-kernel/linux/linux-aspeed_%.bbappend new file mode 100644 index 000000000..cd215864c --- /dev/null +++ b/meta-rcs/meta-blackbird/recipes-kernel/linux/linux-aspeed_%.bbappend @@ -0,0 +1,2 @@ +FILESEXTRAPATHS_prepend_blackbird := "${THISDIR}/${PN}:" +SRC_URI += "file://blackbird.cfg" diff --git a/meta-rcs/meta-blackbird/recipes-phosphor/chassis/avsbus-control.bb b/meta-rcs/meta-blackbird/recipes-phosphor/chassis/avsbus-control.bb new file mode 100644 index 000000000..e66e2b868 --- /dev/null +++ b/meta-rcs/meta-blackbird/recipes-phosphor/chassis/avsbus-control.bb @@ -0,0 +1,42 @@ +SUMMARY = "Blackbird AVSBus control" +PR = "r1" + +LICENSE = "Apache-2.0" +LIC_FILES_CHKSUM = "file://${IBMBASE}/COPYING.apache-2.0;md5=34400b68072d710fecd0a2940a0d1658" + +inherit obmc-phosphor-systemd + +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-rcs/meta-blackbird/recipes-phosphor/chassis/avsbus-control/avsbus-disable.sh b/meta-rcs/meta-blackbird/recipes-phosphor/chassis/avsbus-control/avsbus-disable.sh new file mode 100644 index 000000000..7ee4dfcd1 --- /dev/null +++ b/meta-rcs/meta-blackbird/recipes-phosphor/chassis/avsbus-control/avsbus-disable.sh @@ -0,0 +1,34 @@ +#!/bin/sh + +# Get CPU count +CPU_COUNT=1 +STATUS_FLAGS=$(i2cget -y 12 0x31 0x7) +if [ $? != 0 ]; then + STATUS_FLAGS=$(i2cget -y 12 0x31 0x7) +fi +if [ $? != 0 ]; then + STATUS_FLAGS=$(i2cget -y 12 0x31 0x7) +fi +CPU_PRESENT_FLAG_N=$(( ${STATUS_FLAGS} & 0x20 )) +if [ $CPU_PRESENT_FLAG_N != 0 ]; then + CPU_COUNT=$(( ${CPU_COUNT} + 1 )) +fi +echo "Found $CPU_COUNT CPU(s)" + +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 + +if [ $CPU_COUNT -gt 1 ]; then + 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 +fi diff --git a/meta-rcs/meta-blackbird/recipes-phosphor/chassis/avsbus-control/avsbus-disable@.service b/meta-rcs/meta-blackbird/recipes-phosphor/chassis/avsbus-control/avsbus-disable@.service new file mode 100644 index 000000000..424aa2394 --- /dev/null +++ b/meta-rcs/meta-blackbird/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-rcs/meta-blackbird/recipes-phosphor/chassis/avsbus-control/avsbus-enable.sh b/meta-rcs/meta-blackbird/recipes-phosphor/chassis/avsbus-control/avsbus-enable.sh new file mode 100644 index 000000000..2621c9e24 --- /dev/null +++ b/meta-rcs/meta-blackbird/recipes-phosphor/chassis/avsbus-control/avsbus-enable.sh @@ -0,0 +1,34 @@ +#!/bin/sh + +# Get CPU count +CPU_COUNT=1 +STATUS_FLAGS=$(i2cget -y 12 0x31 0x7) +if [ $? != 0 ]; then + STATUS_FLAGS=$(i2cget -y 12 0x31 0x7) +fi +if [ $? != 0 ]; then + STATUS_FLAGS=$(i2cget -y 12 0x31 0x7) +fi +CPU_PRESENT_FLAG_N=$(( ${STATUS_FLAGS} & 0x20 )) +if [ $CPU_PRESENT_FLAG_N != 0 ]; then + CPU_COUNT=$(( ${CPU_COUNT} + 1 )) +fi +echo "Found $CPU_COUNT CPU(s)" + +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 + +if [ $CPU_COUNT -gt 1 ]; then + 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 +fi diff --git a/meta-rcs/meta-blackbird/recipes-phosphor/chassis/avsbus-control/avsbus-enable@.service b/meta-rcs/meta-blackbird/recipes-phosphor/chassis/avsbus-control/avsbus-enable@.service new file mode 100644 index 000000000..4b0b19e8b --- /dev/null +++ b/meta-rcs/meta-blackbird/recipes-phosphor/chassis/avsbus-control/avsbus-enable@.service @@ -0,0 +1,17 @@ +[Unit] +Description=Enable the AVS bus on VRMs +Wants=vrm-control@%i.service +After=vrm-control@%i.service +Wants=obmc-power-start@%i.target +Before=obmc-power-start@%i.target +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-rcs/meta-blackbird/recipes-phosphor/chassis/avsbus-control/avsbus-workaround.sh b/meta-rcs/meta-blackbird/recipes-phosphor/chassis/avsbus-control/avsbus-workaround.sh new file mode 100644 index 000000000..882f1637c --- /dev/null +++ b/meta-rcs/meta-blackbird/recipes-phosphor/chassis/avsbus-control/avsbus-workaround.sh @@ -0,0 +1,23 @@ +#!/bin/sh + +# Get CPU count +CPU_COUNT=1 +STATUS_FLAGS=$(i2cget -y 12 0x31 0x7) +if [ $? != 0 ]; then + STATUS_FLAGS=$(i2cget -y 12 0x31 0x7) +fi +if [ $? != 0 ]; then + STATUS_FLAGS=$(i2cget -y 12 0x31 0x7) +fi +CPU_PRESENT_FLAG_N=$(( ${STATUS_FLAGS} & 0x20 )) +if [ $CPU_PRESENT_FLAG_N != 0 ]; then + CPU_COUNT=$(( ${CPU_COUNT} + 1 )) +fi +echo "Found $CPU_COUNT CPU(s)" + +i2cset -y 4 0x28 0x2E 0x23 b # VDD/VCS 0 +i2cset -y 4 0x2B 0x2E 0x23 b # VDN 0 +if [ $CPU_COUNT -gt 1 ]; then + i2cset -y 5 0x28 0x2E 0x23 b # VDD/VCS 1 + i2cset -y 5 0x2B 0x2E 0x23 b # VDN 1 +fi diff --git a/meta-rcs/meta-blackbird/recipes-phosphor/chassis/avsbus-control/avsbus-workaround@.service b/meta-rcs/meta-blackbird/recipes-phosphor/chassis/avsbus-control/avsbus-workaround@.service new file mode 100644 index 000000000..e7e00c046 --- /dev/null +++ b/meta-rcs/meta-blackbird/recipes-phosphor/chassis/avsbus-control/avsbus-workaround@.service @@ -0,0 +1,18 @@ +[Unit] +Description=Perform AVS bus workaround on VRMs +Wants=op-power-start@.service +After=op-power-start@.service +Wants=op-wait-power-on@%i.service +After=op-wait-power-on@%i.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-rcs/meta-blackbird/recipes-phosphor/chassis/fpga-config.bb b/meta-rcs/meta-blackbird/recipes-phosphor/chassis/fpga-config.bb new file mode 100644 index 000000000..dc0d37ea1 --- /dev/null +++ b/meta-rcs/meta-blackbird/recipes-phosphor/chassis/fpga-config.bb @@ -0,0 +1,21 @@ +SUMMARY = "Blackbird FPGA Setup" +DESCRIPTION = "Configure Blackbird FPGA" +PR = "r1" +LICENSE = "GPLv3" +LIC_FILES_CHKSUM = "file://COPYING.GPLv3;md5=d32239bcb673463ab874e80d47fae504" + +inherit obmc-phosphor-systemd + +RDEPENDS_${PN} += "i2c-tools bash" + +S = "${WORKDIR}" +SRC_URI += "file://fpga-setup.sh \ + file://fpga-config.service \ + file://COPYING.GPLv3" + +do_install() { + install -d ${D}${bindir} + install -m 0755 ${WORKDIR}/fpga-setup.sh ${D}${bindir}/fpga-setup.sh +} + +SYSTEMD_SERVICE_${PN} += "fpga-config.service" diff --git a/meta-rcs/meta-blackbird/recipes-phosphor/chassis/fpga-config/COPYING.GPLv3 b/meta-rcs/meta-blackbird/recipes-phosphor/chassis/fpga-config/COPYING.GPLv3 new file mode 100644 index 000000000..94a9ed024 --- /dev/null +++ b/meta-rcs/meta-blackbird/recipes-phosphor/chassis/fpga-config/COPYING.GPLv3 @@ -0,0 +1,674 @@ + GNU GENERAL PUBLIC LICENSE + Version 3, 29 June 2007 + + Copyright (C) 2007 Free Software Foundation, Inc. <http://fsf.org/> + Everyone is permitted to copy and distribute verbatim copies + of this license document, but changing it is not allowed. + + Preamble + + The GNU General Public License is a free, copyleft license for +software and other kinds of works. + + The licenses for most software and other practical works are designed +to take away your freedom to share and change the works. By contrast, +the GNU General Public License is intended to guarantee your freedom to +share and change all versions of a program--to make sure it remains free +software for all its users. We, the Free Software Foundation, use the +GNU General Public License for most of our software; it applies also to +any other work released this way by its authors. You can apply it to +your programs, too. + + When we speak of free software, we are referring to freedom, not +price. Our General Public Licenses are designed to make sure that you +have the freedom to distribute copies of free software (and charge for +them if you wish), that you receive source code or can get it if you +want it, that you can change the software or use pieces of it in new +free programs, and that you know you can do these things. + + To protect your rights, we need to prevent others from denying you +these rights or asking you to surrender the rights. Therefore, you have +certain responsibilities if you distribute copies of the software, or if +you modify it: responsibilities to respect the freedom of others. + + For example, if you distribute copies of such a program, whether +gratis or for a fee, you must pass on to the recipients the same +freedoms that you received. You must make sure that they, too, receive +or can get the source code. And you must show them these terms so they +know their rights. + + Developers that use the GNU GPL protect your rights with two steps: +(1) assert copyright on the software, and (2) offer you this License +giving you legal permission to copy, distribute and/or modify it. + + For the developers' and authors' protection, the GPL clearly explains +that there is no warranty for this free software. For both users' and +authors' sake, the GPL requires that modified versions be marked as +changed, so that their problems will not be attributed erroneously to +authors of previous versions. + + Some devices are designed to deny users access to install or run +modified versions of the software inside them, although the manufacturer +can do so. This is fundamentally incompatible with the aim of +protecting users' freedom to change the software. The systematic +pattern of such abuse occurs in the area of products for individuals to +use, which is precisely where it is most unacceptable. Therefore, we +have designed this version of the GPL to prohibit the practice for those +products. If such problems arise substantially in other domains, we +stand ready to extend this provision to those domains in future versions +of the GPL, as needed to protect the freedom of users. + + Finally, every program is threatened constantly by software patents. +States should not allow patents to restrict development and use of +software on general-purpose computers, but in those that do, we wish to +avoid the special danger that patents applied to a free program could +make it effectively proprietary. To prevent this, the GPL assures that +patents cannot be used to render the program non-free. + + The precise terms and conditions for copying, distribution and +modification follow. + + TERMS AND CONDITIONS + + 0. Definitions. + + "This License" refers to version 3 of the GNU General Public License. + + "Copyright" also means copyright-like laws that apply to other kinds of +works, such as semiconductor masks. + + "The Program" refers to any copyrightable work licensed under this +License. Each licensee is addressed as "you". "Licensees" and +"recipients" may be individuals or organizations. + + To "modify" a work means to copy from or adapt all or part of the work +in a fashion requiring copyright permission, other than the making of an +exact copy. The resulting work is called a "modified version" of the +earlier work or a work "based on" the earlier work. + + A "covered work" means either the unmodified Program or a work based +on the Program. + + To "propagate" a work means to do anything with it that, without +permission, would make you directly or secondarily liable for +infringement under applicable copyright law, except executing it on a +computer or modifying a private copy. Propagation includes copying, +distribution (with or without modification), making available to the +public, and in some countries other activities as well. + + To "convey" a work means any kind of propagation that enables other +parties to make or receive copies. Mere interaction with a user through +a computer network, with no transfer of a copy, is not conveying. + + An interactive user interface displays "Appropriate Legal Notices" +to the extent that it includes a convenient and prominently visible +feature that (1) displays an appropriate copyright notice, and (2) +tells the user that there is no warranty for the work (except to the +extent that warranties are provided), that licensees may convey the +work under this License, and how to view a copy of this License. If +the interface presents a list of user commands or options, such as a +menu, a prominent item in the list meets this criterion. + + 1. Source Code. + + The "source code" for a work means the preferred form of the work +for making modifications to it. "Object code" means any non-source +form of a work. + + A "Standard Interface" means an interface that either is an official +standard defined by a recognized standards body, or, in the case of +interfaces specified for a particular programming language, one that +is widely used among developers working in that language. + + The "System Libraries" of an executable work include anything, other +than the work as a whole, that (a) is included in the normal form of +packaging a Major Component, but which is not part of that Major +Component, and (b) serves only to enable use of the work with that +Major Component, or to implement a Standard Interface for which an +implementation is available to the public in source code form. A +"Major Component", in this context, means a major essential component +(kernel, window system, and so on) of the specific operating system +(if any) on which the executable work runs, or a compiler used to +produce the work, or an object code interpreter used to run it. + + The "Corresponding Source" for a work in object code form means all +the source code needed to generate, install, and (for an executable +work) run the object code and to modify the work, including scripts to +control those activities. However, it does not include the work's +System Libraries, or general-purpose tools or generally available free +programs which are used unmodified in performing those activities but +which are not part of the work. For example, Corresponding Source +includes interface definition files associated with source files for +the work, and the source code for shared libraries and dynamically +linked subprograms that the work is specifically designed to require, +such as by intimate data communication or control flow between those +subprograms and other parts of the work. + + The Corresponding Source need not include anything that users +can regenerate automatically from other parts of the Corresponding +Source. + + The Corresponding Source for a work in source code form is that +same work. + + 2. Basic Permissions. + + All rights granted under this License are granted for the term of +copyright on the Program, and are irrevocable provided the stated +conditions are met. This License explicitly affirms your unlimited +permission to run the unmodified Program. The output from running a +covered work is covered by this License only if the output, given its +content, constitutes a covered work. This License acknowledges your +rights of fair use or other equivalent, as provided by copyright law. + + You may make, run and propagate covered works that you do not +convey, without conditions so long as your license otherwise remains +in force. You may convey covered works to others for the sole purpose +of having them make modifications exclusively for you, or provide you +with facilities for running those works, provided that you comply with +the terms of this License in conveying all material for which you do +not control copyright. Those thus making or running the covered works +for you must do so exclusively on your behalf, under your direction +and control, on terms that prohibit them from making any copies of +your copyrighted material outside their relationship with you. + + Conveying under any other circumstances is permitted solely under +the conditions stated below. Sublicensing is not allowed; section 10 +makes it unnecessary. + + 3. Protecting Users' Legal Rights From Anti-Circumvention Law. + + No covered work shall be deemed part of an effective technological +measure under any applicable law fulfilling obligations under article +11 of the WIPO copyright treaty adopted on 20 December 1996, or +similar laws prohibiting or restricting circumvention of such +measures. + + When you convey a covered work, you waive any legal power to forbid +circumvention of technological measures to the extent such circumvention +is effected by exercising rights under this License with respect to +the covered work, and you disclaim any intention to limit operation or +modification of the work as a means of enforcing, against the work's +users, your or third parties' legal rights to forbid circumvention of +technological measures. + + 4. Conveying Verbatim Copies. + + You may convey verbatim copies of the Program's source code as you +receive it, in any medium, provided that you conspicuously and +appropriately publish on each copy an appropriate copyright notice; +keep intact all notices stating that this License and any +non-permissive terms added in accord with section 7 apply to the code; +keep intact all notices of the absence of any warranty; and give all +recipients a copy of this License along with the Program. + + You may charge any price or no price for each copy that you convey, +and you may offer support or warranty protection for a fee. + + 5. Conveying Modified Source Versions. + + You may convey a work based on the Program, or the modifications to +produce it from the Program, in the form of source code under the +terms of section 4, provided that you also meet all of these conditions: + + a) The work must carry prominent notices stating that you modified + it, and giving a relevant date. + + b) The work must carry prominent notices stating that it is + released under this License and any conditions added under section + 7. This requirement modifies the requirement in section 4 to + "keep intact all notices". + + c) You must license the entire work, as a whole, under this + License to anyone who comes into possession of a copy. This + License will therefore apply, along with any applicable section 7 + additional terms, to the whole of the work, and all its parts, + regardless of how they are packaged. This License gives no + permission to license the work in any other way, but it does not + invalidate such permission if you have separately received it. + + d) If the work has interactive user interfaces, each must display + Appropriate Legal Notices; however, if the Program has interactive + interfaces that do not display Appropriate Legal Notices, your + work need not make them do so. + + A compilation of a covered work with other separate and independent +works, which are not by their nature extensions of the covered work, +and which are not combined with it such as to form a larger program, +in or on a volume of a storage or distribution medium, is called an +"aggregate" if the compilation and its resulting copyright are not +used to limit the access or legal rights of the compilation's users +beyond what the individual works permit. Inclusion of a covered work +in an aggregate does not cause this License to apply to the other +parts of the aggregate. + + 6. Conveying Non-Source Forms. + + You may convey a covered work in object code form under the terms +of sections 4 and 5, provided that you also convey the +machine-readable Corresponding Source under the terms of this License, +in one of these ways: + + a) Convey the object code in, or embodied in, a physical product + (including a physical distribution medium), accompanied by the + Corresponding Source fixed on a durable physical medium + customarily used for software interchange. + + b) Convey the object code in, or embodied in, a physical product + (including a physical distribution medium), accompanied by a + written offer, valid for at least three years and valid for as + long as you offer spare parts or customer support for that product + model, to give anyone who possesses the object code either (1) a + copy of the Corresponding Source for all the software in the + product that is covered by this License, on a durable physical + medium customarily used for software interchange, for a price no + more than your reasonable cost of physically performing this + conveying of source, or (2) access to copy the + Corresponding Source from a network server at no charge. + + c) Convey individual copies of the object code with a copy of the + written offer to provide the Corresponding Source. This + alternative is allowed only occasionally and noncommercially, and + only if you received the object code with such an offer, in accord + with subsection 6b. + + d) Convey the object code by offering access from a designated + place (gratis or for a charge), and offer equivalent access to the + Corresponding Source in the same way through the same place at no + further charge. You need not require recipients to copy the + Corresponding Source along with the object code. If the place to + copy the object code is a network server, the Corresponding Source + may be on a different server (operated by you or a third party) + that supports equivalent copying facilities, provided you maintain + clear directions next to the object code saying where to find the + Corresponding Source. Regardless of what server hosts the + Corresponding Source, you remain obligated to ensure that it is + available for as long as needed to satisfy these requirements. + + e) Convey the object code using peer-to-peer transmission, provided + you inform other peers where the object code and Corresponding + Source of the work are being offered to the general public at no + charge under subsection 6d. + + A separable portion of the object code, whose source code is excluded +from the Corresponding Source as a System Library, need not be +included in conveying the object code work. + + A "User Product" is either (1) a "consumer product", which means any +tangible personal property which is normally used for personal, family, +or household purposes, or (2) anything designed or sold for incorporation +into a dwelling. In determining whether a product is a consumer product, +doubtful cases shall be resolved in favor of coverage. For a particular +product received by a particular user, "normally used" refers to a +typical or common use of that class of product, regardless of the status +of the particular user or of the way in which the particular user +actually uses, or expects or is expected to use, the product. A product +is a consumer product regardless of whether the product has substantial +commercial, industrial or non-consumer uses, unless such uses represent +the only significant mode of use of the product. + + "Installation Information" for a User Product means any methods, +procedures, authorization keys, or other information required to install +and execute modified versions of a covered work in that User Product from +a modified version of its Corresponding Source. The information must +suffice to ensure that the continued functioning of the modified object +code is in no case prevented or interfered with solely because +modification has been made. + + If you convey an object code work under this section in, or with, or +specifically for use in, a User Product, and the conveying occurs as +part of a transaction in which the right of possession and use of the +User Product is transferred to the recipient in perpetuity or for a +fixed term (regardless of how the transaction is characterized), the +Corresponding Source conveyed under this section must be accompanied +by the Installation Information. But this requirement does not apply +if neither you nor any third party retains the ability to install +modified object code on the User Product (for example, the work has +been installed in ROM). + + The requirement to provide Installation Information does not include a +requirement to continue to provide support service, warranty, or updates +for a work that has been modified or installed by the recipient, or for +the User Product in which it has been modified or installed. Access to a +network may be denied when the modification itself materially and +adversely affects the operation of the network or violates the rules and +protocols for communication across the network. + + Corresponding Source conveyed, and Installation Information provided, +in accord with this section must be in a format that is publicly +documented (and with an implementation available to the public in +source code form), and must require no special password or key for +unpacking, reading or copying. + + 7. Additional Terms. + + "Additional permissions" are terms that supplement the terms of this +License by making exceptions from one or more of its conditions. +Additional permissions that are applicable to the entire Program shall +be treated as though they were included in this License, to the extent +that they are valid under applicable law. If additional permissions +apply only to part of the Program, that part may be used separately +under those permissions, but the entire Program remains governed by +this License without regard to the additional permissions. + + When you convey a copy of a covered work, you may at your option +remove any additional permissions from that copy, or from any part of +it. (Additional permissions may be written to require their own +removal in certain cases when you modify the work.) You may place +additional permissions on material, added by you to a covered work, +for which you have or can give appropriate copyright permission. + + Notwithstanding any other provision of this License, for material you +add to a covered work, you may (if authorized by the copyright holders of +that material) supplement the terms of this License with terms: + + a) Disclaiming warranty or limiting liability differently from the + terms of sections 15 and 16 of this License; or + + b) Requiring preservation of specified reasonable legal notices or + author attributions in that material or in the Appropriate Legal + Notices displayed by works containing it; or + + c) Prohibiting misrepresentation of the origin of that material, or + requiring that modified versions of such material be marked in + reasonable ways as different from the original version; or + + d) Limiting the use for publicity purposes of names of licensors or + authors of the material; or + + e) Declining to grant rights under trademark law for use of some + trade names, trademarks, or service marks; or + + f) Requiring indemnification of licensors and authors of that + material by anyone who conveys the material (or modified versions of + it) with contractual assumptions of liability to the recipient, for + any liability that these contractual assumptions directly impose on + those licensors and authors. + + All other non-permissive additional terms are considered "further +restrictions" within the meaning of section 10. If the Program as you +received it, or any part of it, contains a notice stating that it is +governed by this License along with a term that is a further +restriction, you may remove that term. If a license document contains +a further restriction but permits relicensing or conveying under this +License, you may add to a covered work material governed by the terms +of that license document, provided that the further restriction does +not survive such relicensing or conveying. + + If you add terms to a covered work in accord with this section, you +must place, in the relevant source files, a statement of the +additional terms that apply to those files, or a notice indicating +where to find the applicable terms. + + Additional terms, permissive or non-permissive, may be stated in the +form of a separately written license, or stated as exceptions; +the above requirements apply either way. + + 8. Termination. + + You may not propagate or modify a covered work except as expressly +provided under this License. Any attempt otherwise to propagate or +modify it is void, and will automatically terminate your rights under +this License (including any patent licenses granted under the third +paragraph of section 11). + + However, if you cease all violation of this License, then your +license from a particular copyright holder is reinstated (a) +provisionally, unless and until the copyright holder explicitly and +finally terminates your license, and (b) permanently, if the copyright +holder fails to notify you of the violation by some reasonable means +prior to 60 days after the cessation. + + Moreover, your license from a particular copyright holder is +reinstated permanently if the copyright holder notifies you of the +violation by some reasonable means, this is the first time you have +received notice of violation of this License (for any work) from that +copyright holder, and you cure the violation prior to 30 days after +your receipt of the notice. + + Termination of your rights under this section does not terminate the +licenses of parties who have received copies or rights from you under +this License. If your rights have been terminated and not permanently +reinstated, you do not qualify to receive new licenses for the same +material under section 10. + + 9. Acceptance Not Required for Having Copies. + + You are not required to accept this License in order to receive or +run a copy of the Program. Ancillary propagation of a covered work +occurring solely as a consequence of using peer-to-peer transmission +to receive a copy likewise does not require acceptance. However, +nothing other than this License grants you permission to propagate or +modify any covered work. These actions infringe copyright if you do +not accept this License. Therefore, by modifying or propagating a +covered work, you indicate your acceptance of this License to do so. + + 10. Automatic Licensing of Downstream Recipients. + + Each time you convey a covered work, the recipient automatically +receives a license from the original licensors, to run, modify and +propagate that work, subject to this License. You are not responsible +for enforcing compliance by third parties with this License. + + An "entity transaction" is a transaction transferring control of an +organization, or substantially all assets of one, or subdividing an +organization, or merging organizations. If propagation of a covered +work results from an entity transaction, each party to that +transaction who receives a copy of the work also receives whatever +licenses to the work the party's predecessor in interest had or could +give under the previous paragraph, plus a right to possession of the +Corresponding Source of the work from the predecessor in interest, if +the predecessor has it or can get it with reasonable efforts. + + You may not impose any further restrictions on the exercise of the +rights granted or affirmed under this License. For example, you may +not impose a license fee, royalty, or other charge for exercise of +rights granted under this License, and you may not initiate litigation +(including a cross-claim or counterclaim in a lawsuit) alleging that +any patent claim is infringed by making, using, selling, offering for +sale, or importing the Program or any portion of it. + + 11. Patents. + + A "contributor" is a copyright holder who authorizes use under this +License of the Program or a work on which the Program is based. The +work thus licensed is called the contributor's "contributor version". + + A contributor's "essential patent claims" are all patent claims +owned or controlled by the contributor, whether already acquired or +hereafter acquired, that would be infringed by some manner, permitted +by this License, of making, using, or selling its contributor version, +but do not include claims that would be infringed only as a +consequence of further modification of the contributor version. For +purposes of this definition, "control" includes the right to grant +patent sublicenses in a manner consistent with the requirements of +this License. + + Each contributor grants you a non-exclusive, worldwide, royalty-free +patent license under the contributor's essential patent claims, to +make, use, sell, offer for sale, import and otherwise run, modify and +propagate the contents of its contributor version. + + In the following three paragraphs, a "patent license" is any express +agreement or commitment, however denominated, not to enforce a patent +(such as an express permission to practice a patent or covenant not to +sue for patent infringement). To "grant" such a patent license to a +party means to make such an agreement or commitment not to enforce a +patent against the party. + + If you convey a covered work, knowingly relying on a patent license, +and the Corresponding Source of the work is not available for anyone +to copy, free of charge and under the terms of this License, through a +publicly available network server or other readily accessible means, +then you must either (1) cause the Corresponding Source to be so +available, or (2) arrange to deprive yourself of the benefit of the +patent license for this particular work, or (3) arrange, in a manner +consistent with the requirements of this License, to extend the patent +license to downstream recipients. "Knowingly relying" means you have +actual knowledge that, but for the patent license, your conveying the +covered work in a country, or your recipient's use of the covered work +in a country, would infringe one or more identifiable patents in that +country that you have reason to believe are valid. + + If, pursuant to or in connection with a single transaction or +arrangement, you convey, or propagate by procuring conveyance of, a +covered work, and grant a patent license to some of the parties +receiving the covered work authorizing them to use, propagate, modify +or convey a specific copy of the covered work, then the patent license +you grant is automatically extended to all recipients of the covered +work and works based on it. + + A patent license is "discriminatory" if it does not include within +the scope of its coverage, prohibits the exercise of, or is +conditioned on the non-exercise of one or more of the rights that are +specifically granted under this License. You may not convey a covered +work if you are a party to an arrangement with a third party that is +in the business of distributing software, under which you make payment +to the third party based on the extent of your activity of conveying +the work, and under which the third party grants, to any of the +parties who would receive the covered work from you, a discriminatory +patent license (a) in connection with copies of the covered work +conveyed by you (or copies made from those copies), or (b) primarily +for and in connection with specific products or compilations that +contain the covered work, unless you entered into that arrangement, +or that patent license was granted, prior to 28 March 2007. + + Nothing in this License shall be construed as excluding or limiting +any implied license or other defenses to infringement that may +otherwise be available to you under applicable patent law. + + 12. No Surrender of Others' Freedom. + + If conditions are imposed on you (whether by court order, agreement or +otherwise) that contradict the conditions of this License, they do not +excuse you from the conditions of this License. If you cannot convey a +covered work so as to satisfy simultaneously your obligations under this +License and any other pertinent obligations, then as a consequence you may +not convey it at all. For example, if you agree to terms that obligate you +to collect a royalty for further conveying from those to whom you convey +the Program, the only way you could satisfy both those terms and this +License would be to refrain entirely from conveying the Program. + + 13. Use with the GNU Affero General Public License. + + Notwithstanding any other provision of this License, you have +permission to link or combine any covered work with a work licensed +under version 3 of the GNU Affero General Public License into a single +combined work, and to convey the resulting work. The terms of this +License will continue to apply to the part which is the covered work, +but the special requirements of the GNU Affero General Public License, +section 13, concerning interaction through a network will apply to the +combination as such. + + 14. Revised Versions of this License. + + The Free Software Foundation may publish revised and/or new versions of +the GNU General Public License from time to time. Such new versions will +be similar in spirit to the present version, but may differ in detail to +address new problems or concerns. + + Each version is given a distinguishing version number. If the +Program specifies that a certain numbered version of the GNU General +Public License "or any later version" applies to it, you have the +option of following the terms and conditions either of that numbered +version or of any later version published by the Free Software +Foundation. If the Program does not specify a version number of the +GNU General Public License, you may choose any version ever published +by the Free Software Foundation. + + If the Program specifies that a proxy can decide which future +versions of the GNU General Public License can be used, that proxy's +public statement of acceptance of a version permanently authorizes you +to choose that version for the Program. + + Later license versions may give you additional or different +permissions. However, no additional obligations are imposed on any +author or copyright holder as a result of your choosing to follow a +later version. + + 15. Disclaimer of Warranty. + + THERE IS NO WARRANTY FOR THE PROGRAM, TO THE EXTENT PERMITTED BY +APPLICABLE LAW. EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT +HOLDERS AND/OR OTHER PARTIES PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY +OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, +THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR +PURPOSE. THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE PROGRAM +IS WITH YOU. SHOULD THE PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF +ALL NECESSARY SERVICING, REPAIR OR CORRECTION. + + 16. Limitation of Liability. + + IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING +WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MODIFIES AND/OR CONVEYS +THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, INCLUDING ANY +GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THE +USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED TO LOSS OF +DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD +PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER PROGRAMS), +EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF +SUCH DAMAGES. + + 17. Interpretation of Sections 15 and 16. + + If the disclaimer of warranty and limitation of liability provided +above cannot be given local legal effect according to their terms, +reviewing courts shall apply local law that most closely approximates +an absolute waiver of all civil liability in connection with the +Program, unless a warranty or assumption of liability accompanies a +copy of the Program in return for a fee. + + END OF TERMS AND CONDITIONS + + How to Apply These Terms to Your New Programs + + If you develop a new program, and you want it to be of the greatest +possible use to the public, the best way to achieve this is to make it +free software which everyone can redistribute and change under these terms. + + To do so, attach the following notices to the program. It is safest +to attach them to the start of each source file to most effectively +state the exclusion of warranty; and each file should have at least +the "copyright" line and a pointer to where the full notice is found. + + <one line to give the program's name and a brief idea of what it does.> + Copyright (C) <year> <name of author> + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation, either version 3 of the License, or + (at your option) any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program. If not, see <http://www.gnu.org/licenses/>. + +Also add information on how to contact you by electronic and paper mail. + + If the program does terminal interaction, make it output a short +notice like this when it starts in an interactive mode: + + <program> Copyright (C) <year> <name of author> + This program comes with ABSOLUTELY NO WARRANTY; for details type `show w'. + This is free software, and you are welcome to redistribute it + under certain conditions; type `show c' for details. + +The hypothetical commands `show w' and `show c' should show the appropriate +parts of the General Public License. Of course, your program's commands +might be different; for a GUI interface, you would use an "about box". + + You should also get your employer (if you work as a programmer) or school, +if any, to sign a "copyright disclaimer" for the program, if necessary. +For more information on this, and how to apply and follow the GNU GPL, see +<http://www.gnu.org/licenses/>. + + The GNU General Public License does not permit incorporating your program +into proprietary programs. If your program is a subroutine library, you +may consider it more useful to permit linking proprietary applications with +the library. If this is what you want to do, use the GNU Lesser General +Public License instead of this License. But first, please read +<http://www.gnu.org/philosophy/why-not-lgpl.html>. diff --git a/meta-rcs/meta-blackbird/recipes-phosphor/chassis/fpga-config/fpga-config.service b/meta-rcs/meta-blackbird/recipes-phosphor/chassis/fpga-config/fpga-config.service new file mode 100644 index 000000000..bf64de961 --- /dev/null +++ b/meta-rcs/meta-blackbird/recipes-phosphor/chassis/fpga-config/fpga-config.service @@ -0,0 +1,13 @@ +[Unit] +Description=Set up FPGA +Requires=sysinit.target +After=sysinit.target + +[Service] +ExecStart=/usr/bin/env fpga-setup.sh +SyslogIdentifier=fpga-setup.sh +Type=oneshot +RemainAfterExit=yes + +[Install] +WantedBy=multi-user.target diff --git a/meta-rcs/meta-blackbird/recipes-phosphor/chassis/fpga-config/fpga-setup.sh b/meta-rcs/meta-blackbird/recipes-phosphor/chassis/fpga-config/fpga-setup.sh new file mode 100755 index 000000000..656d03321 --- /dev/null +++ b/meta-rcs/meta-blackbird/recipes-phosphor/chassis/fpga-config/fpga-setup.sh @@ -0,0 +1,11 @@ +#!/bin/sh +# +# Copyright 2018 - 2019 Raptor Engineering, LLC +# Released under the terms of the GPL v3 + +I2C_BUS=12 +I2C_DEV=0x31 + +# ***** FRONT PANEL LEDS ***** +# Set HDD LED inverted +i2cset -y ${I2C_BUS} ${I2C_DEV} 0x11 0x1 diff --git a/meta-rcs/meta-blackbird/recipes-phosphor/chassis/vrm-control.bb b/meta-rcs/meta-blackbird/recipes-phosphor/chassis/vrm-control.bb new file mode 100644 index 000000000..4ef839567 --- /dev/null +++ b/meta-rcs/meta-blackbird/recipes-phosphor/chassis/vrm-control.bb @@ -0,0 +1,28 @@ +SUMMARY = "Blackbird VRM Overrides" +DESCRIPTION = "Sets Blackbird VRMs to custom voltages" +PR = "r1" + +LICENSE = "Apache-2.0" +LIC_FILES_CHKSUM = "file://${IBMBASE}/COPYING.apache-2.0;md5=34400b68072d710fecd0a2940a0d1658" + +inherit obmc-phosphor-systemd + +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-rcs/meta-blackbird/recipes-phosphor/chassis/vrm-control/vrm-control.sh b/meta-rcs/meta-blackbird/recipes-phosphor/chassis/vrm-control/vrm-control.sh new file mode 100644 index 000000000..be8d3c0c8 --- /dev/null +++ b/meta-rcs/meta-blackbird/recipes-phosphor/chassis/vrm-control/vrm-control.sh @@ -0,0 +1,137 @@ +#!/bin/bash +# ######################################################### +# Script to run on Blackbird 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-rcs/meta-blackbird/recipes-phosphor/chassis/vrm-control/vrm-control@.service b/meta-rcs/meta-blackbird/recipes-phosphor/chassis/vrm-control/vrm-control@.service new file mode 100644 index 000000000..5d072ad5f --- /dev/null +++ b/meta-rcs/meta-blackbird/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-rcs/meta-blackbird/recipes-phosphor/chassis/vrm-control/vrm.sh b/meta-rcs/meta-blackbird/recipes-phosphor/chassis/vrm-control/vrm.sh new file mode 100644 index 000000000..86d5f1dd6 --- /dev/null +++ b/meta-rcs/meta-blackbird/recipes-phosphor/chassis/vrm-control/vrm.sh @@ -0,0 +1,22 @@ +#!/bin/sh + +# Get CPU count +CPU_COUNT=1 +STATUS_FLAGS=$(i2cget -y 12 0x31 0x7) +if [ $? != 0 ]; then + STATUS_FLAGS=$(i2cget -y 12 0x31 0x7) +fi +if [ $? != 0 ]; then + STATUS_FLAGS=$(i2cget -y 12 0x31 0x7) +fi +CPU_PRESENT_FLAG_N=$(( ${STATUS_FLAGS} & 0x20 )) +if [ $CPU_PRESENT_FLAG_N != 0 ]; then + CPU_COUNT=$(( ${CPU_COUNT} + 1 )) +fi +echo "Found $CPU_COUNT CPU(s)" + +if [ $CPU_COUNT -gt 1 ]; then + vrm-control.sh vdna=1.0 vdnb=1.0 +else + vrm-control.sh vdna=1.0 +fi diff --git a/meta-rcs/meta-blackbird/recipes-phosphor/console/obmc-console/obmc-console.conf b/meta-rcs/meta-blackbird/recipes-phosphor/console/obmc-console/obmc-console.conf new file mode 100644 index 000000000..a5ba3f328 --- /dev/null +++ b/meta-rcs/meta-blackbird/recipes-phosphor/console/obmc-console/obmc-console.conf @@ -0,0 +1,4 @@ +lpc-address = 0x3f8 +sirq = 4 +local-tty = ttyS0 +local-tty-baud = 115200 diff --git a/meta-rcs/meta-blackbird/recipes-phosphor/console/obmc-console_%.bbappend b/meta-rcs/meta-blackbird/recipes-phosphor/console/obmc-console_%.bbappend new file mode 100644 index 000000000..594e1cc34 --- /dev/null +++ b/meta-rcs/meta-blackbird/recipes-phosphor/console/obmc-console_%.bbappend @@ -0,0 +1 @@ +FILESEXTRAPATHS_prepend_blackbird := "${THISDIR}/${PN}:" diff --git a/meta-rcs/meta-blackbird/recipes-phosphor/fans/blackbird-fan-policy-native.bb b/meta-rcs/meta-blackbird/recipes-phosphor/fans/blackbird-fan-policy-native.bb new file mode 100644 index 000000000..9506550d1 --- /dev/null +++ b/meta-rcs/meta-blackbird/recipes-phosphor/fans/blackbird-fan-policy-native.bb @@ -0,0 +1,18 @@ +SUMMARY = "Fan policy for Blackbird" +PR = "r1" + +LICENSE = "Apache-2.0" +LIC_FILES_CHKSUM = "file://${IBMBASE}/COPYING.apache-2.0;md5=34400b68072d710fecd0a2940a0d1658" + +inherit native +inherit phosphor-dbus-monitor + +SRC_URI += "file://air-cooled.yaml" +SRC_URI += "file://water-cooled.yaml" +SRC_URI += "file://fan-errors.yaml" + +do_install() { + install -D ${WORKDIR}/air-cooled.yaml ${D}${config_dir}/air-cooled.yaml + install -D ${WORKDIR}/water-cooled.yaml ${D}${config_dir}/water-cooled.yaml + install -D ${WORKDIR}/fan-errors.yaml ${D}${config_dir}/fan-errors.yaml +} diff --git a/meta-rcs/meta-blackbird/recipes-phosphor/fans/blackbird-fan-policy/air-cooled.yaml b/meta-rcs/meta-blackbird/recipes-phosphor/fans/blackbird-fan-policy/air-cooled.yaml new file mode 100644 index 000000000..232b47c01 --- /dev/null +++ b/meta-rcs/meta-blackbird/recipes-phosphor/fans/blackbird-fan-policy/air-cooled.yaml @@ -0,0 +1,235 @@ +# Air cooled Blackbird fan policy for PDM. +# +# An air cooled Blackbird requires a minimum of one functional fan. +# If the number of functional fans drops below that +# power the system off. + +- name: fans + description: > + 'An air cooled Blackbird has three fans to monitor.' + class: group + group: path + members: + - meta: FAN + path: /xyz/openbmc_project/inventory/system/chassis/motherboard/fan0 + - meta: FAN + path: /xyz/openbmc_project/inventory/system/chassis/motherboard/fan1 + - meta: FAN + path: /xyz/openbmc_project/inventory/system/chassis/motherboard/fan2 + +- name: chassis state + description: > + 'Blackbird has a single chassis to monitor.' + class: group + group: path + members: + - meta: CHASSISSTATE + path: /xyz/openbmc_project/state/chassis0 + +- name: chassis + description: > + 'Blackbird has a single chassis to monitor.' + class: group + group: path + members: + - meta: CHASSIS + path: /xyz/openbmc_project/inventory/system/chassis + +- name: fan present + description: > + 'Monitor the presence state of each fan.' + class: group + group: property + type: boolean + members: + - interface: xyz.openbmc_project.Inventory.Item + meta: PRESENT + property: Present + +- name: fan functional + description: > + 'Monitor the functional state of each fan.' + class: group + group: property + type: boolean + members: + - interface: xyz.openbmc_project.State.Decorator.OperationalStatus + meta: FUNCTIONAL + property: Functional + +- 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: chassis air cooled + description: > + 'Monitor the chassis cooling type.' + class: group + group: property + type: boolean + members: + - interface: xyz.openbmc_project.Inventory.Decorator.CoolingType + meta: COOLING_TYPE + property: WaterCooled + +- name: watch fan present + description: > + 'Trigger logic on fan presence state changes.' + class: watch + watch: property + paths: fans + properties: fan present + callback: check cooling type + +- name: watch fan functional + description: > + 'Trigger logic on fan functional state changes.' + class: watch + watch: property + paths: fans + properties: fan functional + callback: check cooling type + +- name: watch chassis state + description: > + 'Trigger logic on chassis power state changes.' + class: watch + watch: property + paths: chassis state + properties: chassis powered + callback: check cooling type + +- name: watch cooling type + description: > + 'Maintain a cache of the chassis cooling type.' + class: watch + watch: property + paths: chassis + properties: chassis air cooled + +- name: check cooling type + description: > + 'If this condition passes the chassis is air cooled.' + class: condition + condition: count + paths: chassis + properties: chassis air cooled + callback: check power + countop: '==' + countbound: 0 + op: '==' + bound: true + +- name: check power + description: > + 'If the chassis has power, check fans.' + class: condition + condition: count + paths: chassis state + properties: chassis powered + callback: check fans + countop: '>' + countbound: 0 + op: '==' + bound: xyz.openbmc_project.State.Chassis.PowerState.On + +- name: check fans + description: > + 'Verify there are at least three functional fans, power off if not.' + class: callback + callback: group + members: + - check group presence + - check group functional + +- name: check group presence + description: > + 'If this condition passes more than one fan has been unplugged + for more than 25 seconds. Shut the system down. Count present + fans rather than non-present fans since the latter would pass + if the fan 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 fan inventory object implementation.' + class: condition + condition: count + paths: fans + properties: fan present + defer: 25000000us + callback: log and shutdown + countop: '<' + countbound: 1 + op: '==' + bound: true + +- name: check group functional + description: > + 'If this condition passes more than one fan in the group has been + marked as nonfunctional for five seconds. Shut the system down. + + For a more detailed definition of nonfunctional, consult the documentation + of xyz.openbmc_project.State.Decorator.OperationalStatus and/or the + documentation of the fan inventory object implementation.' + class: condition + condition: count + paths: fans + properties: fan functional + defer: 5000000us + callback: log and shutdown + countop: '>' + countbound: 1 + op: '==' + bound: false + +- name: log and shutdown + description: > + 'Shut the system down, log an event in the journal, and create an + error log.' + class: callback + callback: group + members: + - shutdown + - log + - create shutdown error + +- name: shutdown + description: > + 'Shut down the system.' + class: callback + callback: method + service: org.freedesktop.systemd1 + path: /org/freedesktop/systemd1 + interface: org.freedesktop.systemd1.Manager + method: StartUnit + args: + - value: obmc-chassis-hard-poweroff@0.target + type: string + - value: replace + type: string + +- name: log + description: > + 'Log a shutdown event to the systemd journal.' + class: callback + callback: journal + paths: chassis state + properties: chassis powered + severity: ERR + message: Shutting down system. There are not enough functional fans. + +- name: create shutdown error + description: > + 'Create a Fan Shutdown Error log.' + class: callback + callback: elog + paths: chassis state + properties: chassis powered + error: xyz::openbmc_project::State::Shutdown::Inventory::Error::Fan diff --git a/meta-rcs/meta-blackbird/recipes-phosphor/fans/blackbird-fan-policy/fan-errors.yaml b/meta-rcs/meta-blackbird/recipes-phosphor/fans/blackbird-fan-policy/fan-errors.yaml new file mode 100644 index 000000000..c9e415e5f --- /dev/null +++ b/meta-rcs/meta-blackbird/recipes-phosphor/fans/blackbird-fan-policy/fan-errors.yaml @@ -0,0 +1,531 @@ +# Blackbird fan error policy for PDM. +# +# * Create a NotPresent error if fan 0, 1, or 2 is not present for more +# than 20 seconds. +# * Create a Nonfunctional error if fan 0, 1, or 2 is not +# functional for any amount of time. +# +# The system must be powered on in both of these cases. +# If a water cooled system, don't create errors for fans 1, 5, or 6. +# Note: An error is created each time the chassis powers on. +# +# * Watch for fans to become functional, and then resolve their errors + +- name: fan0 + class: group + group: path + members: + - meta: FAN + path: /xyz/openbmc_project/inventory/system/chassis/motherboard/fan0 + +- name: fan1 + class: group + group: path + members: + - meta: FAN + path: /xyz/openbmc_project/inventory/system/chassis/motherboard/fan1 + +- name: fan2 + class: group + group: path + members: + - meta: FAN + path: /xyz/openbmc_project/inventory/system/chassis/motherboard/fan2 + +- name: chassis state + description: > + 'Blackbird has a single chassis to monitor.' + class: group + group: path + members: + - meta: CHASSISSTATE + path: /xyz/openbmc_project/state/chassis0 + +- name: chassis + description: > + 'Blackbird has a single chassis to monitor.' + class: group + group: path + members: + - meta: CHASSIS + path: /xyz/openbmc_project/inventory/system/chassis + + +- name: fan present + description: > + 'Monitor the presence state of each fan.' + class: group + group: property + type: boolean + members: + - interface: xyz.openbmc_project.Inventory.Item + meta: PRESENT + property: Present + +- name: fan functional + description: > + 'Monitor the functional state of each fan.' + class: group + group: property + type: boolean + members: + - interface: xyz.openbmc_project.State.Decorator.OperationalStatus + meta: FUNCTIONAL + property: Functional + +- 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: chassis air cooled + description: > + 'The chassis cooling type.' + class: group + group: property + type: boolean + members: + - interface: xyz.openbmc_project.Inventory.Decorator.CoolingType + meta: COOLING_TYPE + property: WaterCooled + +- 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: watch fan0 presence + description: > + 'Trigger logic on fan0 presence state changes.' + class: watch + watch: property + paths: fan0 + properties: fan present + callback: check power fan0 presence + +- name: watch fan0 functional + description: > + 'Trigger logic on fan0 functional state changes.' + class: watch + watch: property + paths: fan0 + properties: fan functional + callback: check power fan0 functional + +- name: watch fan1 presence + description: > + 'Trigger logic on fan1 presence state changes.' + class: watch + watch: property + paths: fan1 + properties: fan present + callback: check power fan1 presence + +- name: watch fan1 functional + description: > + 'Trigger logic on fan1 functional state changes.' + class: watch + watch: property + paths: fan1 + properties: fan functional + callback: check power fan1 functional + +- name: watch fan2 presence + description: > + 'Trigger logic on fan2 presence state changes.' + class: watch + watch: property + paths: fan2 + properties: fan present + callback: check power fan2 presence + +- name: watch fan2 functional + description: > + 'Trigger logic on fan2 functional state changes.' + class: watch + watch: property + paths: fan2 + properties: fan functional + callback: check power fan2 functional + +- name: watch fan0 functional for resolving error logs + description: > + 'On fan functional state changes, check if errors need to be resolved.' + class: watch + watch: property + paths: fan0 + properties: fan functional + callback: resolve fan0 errors if functional + +- name: watch fan1 functional for resolving error logs + description: > + 'On fan functional state changes, check if errors need to be resolved.' + class: watch + watch: property + paths: fan1 + properties: fan functional + callback: resolve fan1 errors if functional + +- name: watch fan2 functional for resolving error logs + description: > + 'On fan functional state changes, check if errors need to be resolved.' + class: watch + watch: property + paths: fan2 + properties: fan functional + callback: resolve fan2 errors if functional + +- name: check power + description: > + 'If the chassis has power, check all fans.' + class: condition + condition: count + paths: chassis state + properties: chassis powered + callback: check fans + countop: '>' + countbound: 0 + op: '==' + bound: xyz.openbmc_project.State.Chassis.PowerState.On + +- name: check power fan0 presence + description: > + 'If the chassis has power, check presence of fan0.' + class: condition + condition: count + paths: chassis state + properties: chassis powered + callback: check fan0 presence + countop: '>' + countbound: 0 + op: '==' + bound: xyz.openbmc_project.State.Chassis.PowerState.On + +- name: check power fan0 functional + description: > + 'If the chassis has power, check functional of fan0.' + class: condition + condition: count + paths: chassis state + properties: chassis powered + callback: check fan0 functional + countop: '>' + countbound: 0 + op: '==' + bound: xyz.openbmc_project.State.Chassis.PowerState.On + +- name: check power fan1 presence + description: > + 'If the chassis has power, check presence of fan1.' + class: condition + condition: count + paths: chassis state + properties: chassis powered + callback: check fan1 presence + countop: '>' + countbound: 0 + op: '==' + bound: xyz.openbmc_project.State.Chassis.PowerState.On + +- name: check power fan1 functional + description: > + 'If the chassis has power, check functional of fan1.' + class: condition + condition: count + paths: chassis state + properties: chassis powered + callback: check fan1 functional + countop: '>' + countbound: 0 + op: '==' + bound: xyz.openbmc_project.State.Chassis.PowerState.On + +- name: check power fan2 presence + description: > + 'If the chassis has power, check presence of fan2.' + class: condition + condition: count + paths: chassis state + properties: chassis powered + callback: check fan2 presence + countop: '>' + countbound: 0 + op: '==' + bound: xyz.openbmc_project.State.Chassis.PowerState.On + +- name: check power fan2 functional + description: > + 'If the chassis has power, check functional of fan2.' + class: condition + condition: count + paths: chassis state + properties: chassis powered + callback: check fan2 functional + countop: '>' + countbound: 0 + op: '==' + bound: xyz.openbmc_project.State.Chassis.PowerState.On + +- name: check fans + description: > + 'Verify each of the 6 fans are present.' + class: callback + callback: group + members: + - check fan0 presence + - check fan1 presence + - check fan2 presence + - check fan0 functional + - check fan1 functional + - check fan2 functional + +- name: check fan0 presence + description: > + 'If this condition passes fan0 has been unplugged for more than 20 seconds.' + class: condition + condition: count + paths: fan0 + properties: fan present + defer: 20000000us + callback: notpresent fan0 error + countop: '<' + countbound: 1 + op: '==' + bound: true + +- name: check fan0 functional + description: > + 'If this condition passes fan0 has been marked as nonfunctional.' + class: condition + condition: count + paths: fan0 + properties: fan functional + callback: nonfunctional fan0 error + countop: '>' + countbound: 0 + op: '==' + bound: false + +- name: check fan1 presence + description: > + 'If this condition passes fan1 has been unplugged for more than 20 seconds.' + class: condition + condition: count + paths: fan1 + properties: fan present + defer: 20000000us + callback: notpresent fan1 error + countop: '<' + countbound: 1 + op: '==' + bound: true + +- name: check fan1 functional + description: > + 'If this condition passes fan1 has been marked as nonfunctional.' + class: condition + condition: count + paths: fan1 + properties: fan functional + callback: nonfunctional fan1 error + countop: '>' + countbound: 0 + op: '==' + bound: false + +- name: check fan2 presence + description: > + 'If this condition passes fan2 has been unplugged for more than 20 seconds. + Fan 2 is not in a water cooled Blackbird, so check for cooling type + before creating an error.' + class: condition + condition: count + paths: fan2 + properties: fan present + defer: 20000000us + callback: notpresent fan2 error + countop: '<' + countbound: 1 + op: '==' + bound: true + +- name: check fan2 functional + description: > + 'If this condition passes fan2 has been marked as nonfunctional. + Fan 2 is not in a water cooled Blackbird, so check for cooling type + before creating an error.' + class: condition + condition: count + paths: fan2 + properties: fan functional + callback: nonfunctional fan2 error + countop: '>' + countbound: 0 + op: '==' + bound: false + +- name: check cooling type nonfunctional error + description: > + 'If this condition passes the chassis is air cooled and will create a + nonfunctional error for fans 1 and 3.' + class: condition + condition: count + paths: chassis + properties: chassis air cooled + callback: nonfunctional fan1 error + countop: '==' + countbound: 0 + op: '==' + bound: true + +- name: check cooling type notpresent error + description: > + 'If this condition passes the chassis is air cooled and will create a + notpresent error for fans 1 and 3' + class: condition + condition: count + paths: chassis + properties: chassis air cooled + callback: notpresent fan1 error + countop: '==' + countbound: 0 + op: '==' + bound: true + +- name: notpresent fan0 error + class: callback + callback: elog + paths: fan0 + properties: fan 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/fan0 + type: string + +- name: nonfunctional fan0 error + class: callback + callback: elog + paths: fan0 + properties: fan functional + error: xyz::openbmc_project::Inventory::Error::Nonfunctional + metadata: + - name: xyz::openbmc_project::Inventory::Nonfunctional::CALLOUT_INVENTORY_PATH + value: /xyz/openbmc_project/inventory/system/chassis/motherboard/fan0 + type: string + +- name: notpresent fan1 error + class: callback + callback: elog + paths: fan1 + properties: fan 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/fan1 + type: string + +- name: nonfunctional fan1 error + class: callback + callback: elog + paths: fan1 + properties: fan functional + error: xyz::openbmc_project::Inventory::Error::Nonfunctional + metadata: + - name: xyz::openbmc_project::Inventory::Nonfunctional::CALLOUT_INVENTORY_PATH + value: /xyz/openbmc_project/inventory/system/chassis/motherboard/fan1 + type: string + +- name: notpresent fan2 error + class: callback + callback: elog + paths: fan2 + properties: fan 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/fan2 + type: string + +- name: nonfunctional fan2 error + class: callback + callback: elog + paths: fan2 + properties: fan functional + error: xyz::openbmc_project::Inventory::Error::Nonfunctional + metadata: + - name: xyz::openbmc_project::Inventory::Nonfunctional::CALLOUT_INVENTORY_PATH + value: /xyz/openbmc_project/inventory/system/chassis/motherboard/fan2 + type: string + +- name: resolve fan0 errors if functional + description: > + 'If fan0 is functional, call the resolve fan0 errors callback.' + class: condition + condition: count + paths: fan0 + properties: fan functional + callback: resolve fan0 errors + countop: '>' + countbound: 0 + op: '==' + bound: true + +#Go ahead and do this on water cooled as well +- name: resolve fan1 errors if functional + description: > + 'If fan1 is functional, call the resolve fan1 errors callback.' + class: condition + condition: count + paths: fan1 + properties: fan functional + callback: resolve fan1 errors + countop: '>' + countbound: 0 + op: '==' + bound: true + +#Go ahead and do this on water cooled as well +- name: resolve fan2 errors if functional + description: > + 'If fan2 is functional, call the resolve fan2 errors callback.' + class: condition + condition: count + paths: fan2 + properties: fan functional + callback: resolve fan2 errors + countop: '>' + countbound: 0 + op: '==' + bound: true + +- name: resolve fan0 errors + class: callback + callback: resolve callout + paths: fan0 + properties: fan functional + callout: /xyz/openbmc_project/inventory/system/chassis/motherboard/fan0 + +- name: resolve fan1 errors + class: callback + callback: resolve callout + paths: fan1 + properties: fan functional + callout: /xyz/openbmc_project/inventory/system/chassis/motherboard/fan1 + +- name: resolve fan2 errors + class: callback + callback: resolve callout + paths: fan2 + properties: fan functional + callout: /xyz/openbmc_project/inventory/system/chassis/motherboard/fan2 diff --git a/meta-rcs/meta-blackbird/recipes-phosphor/fans/blackbird-fan-policy/water-cooled.yaml b/meta-rcs/meta-blackbird/recipes-phosphor/fans/blackbird-fan-policy/water-cooled.yaml new file mode 100644 index 000000000..dfb32dfcd --- /dev/null +++ b/meta-rcs/meta-blackbird/recipes-phosphor/fans/blackbird-fan-policy/water-cooled.yaml @@ -0,0 +1,233 @@ +# Water cooled Blackbird fan policy for PDM. +# +# A water cooled Blackbird requires a minimum of one functional fan and one functional pump. +# If the number of functional rotors drops below that +# power the system off. + +- name: fans + description: > + 'A water cooled Blackbird has two rotors to monitor.' + class: group + group: path + members: + - meta: FAN + path: /xyz/openbmc_project/inventory/system/chassis/motherboard/fan0 + - meta: FAN + path: /xyz/openbmc_project/inventory/system/chassis/motherboard/fan2 + +- name: chassis state + description: > + 'Blackbird has a single chassis to monitor.' + class: group + group: path + members: + - meta: CHASSISSTATE + path: /xyz/openbmc_project/state/chassis0 + +- name: chassis + description: > + 'Blackbird has a single chassis to monitor.' + class: group + group: path + members: + - meta: CHASSIS + path: /xyz/openbmc_project/inventory/system/chassis + +- name: fan present + description: > + 'Monitor the presence state of each fan.' + class: group + group: property + type: boolean + members: + - interface: xyz.openbmc_project.Inventory.Item + meta: PRESENT + property: Present + +- name: fan functional + description: > + 'Monitor the functional state of each fan.' + class: group + group: property + type: boolean + members: + - interface: xyz.openbmc_project.State.Decorator.OperationalStatus + meta: FUNCTIONAL + property: Functional + +- 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: chassis water cooled + description: > + 'Monitor the chassis cooling type.' + class: group + group: property + type: boolean + members: + - interface: xyz.openbmc_project.Inventory.Decorator.CoolingType + meta: COOLING_TYPE + property: WaterCooled + +- name: watch fan present + description: > + 'Trigger logic on fan presence state changes.' + class: watch + watch: property + paths: fans + properties: fan present + callback: check cooling type + +- name: watch fan functional + description: > + 'Trigger logic on fan functional state changes.' + class: watch + watch: property + paths: fans + properties: fan functional + callback: check cooling type + +- name: watch chassis state + description: > + 'Trigger logic on chassis power state changes.' + class: watch + watch: property + paths: chassis state + properties: chassis powered + callback: check cooling type + +- name: watch cooling type + description: > + 'Maintain a cache of the chassis cooling type.' + class: watch + watch: property + paths: chassis + properties: chassis water cooled + +- name: check cooling type + description: > + 'If this condition passes the chassis is water cooled.' + class: condition + condition: count + paths: chassis + properties: chassis water cooled + callback: check power + countop: '==' + countbound: 1 + op: '==' + bound: true + +- name: check power + description: > + 'If the chassis has power, check fans.' + class: condition + condition: count + paths: chassis state + properties: chassis powered + callback: check fans + countop: '>' + countbound: 0 + op: '==' + bound: xyz.openbmc_project.State.Chassis.PowerState.On + +- name: check fans + description: > + 'Verify there are at least two functional fans, power off if not.' + class: callback + callback: group + members: + - check group presence + - check group functional + +- name: check group presence + description: > + 'If this condition passes more than one fan has been unplugged + for more than 25 seconds. Shut the system down. Count present + fans rather than non-present fans since the latter would pass + if the fan 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 fan inventory object implementation.' + class: condition + condition: count + paths: fans + properties: fan present + defer: 25000000us + callback: log and shutdown + countop: '<' + countbound: 1 + op: '==' + bound: true + +- name: check group functional + description: > + 'If this condition passes more than one fan in the group has been marked + as nonfunctional for five seconds. Shut the system down. + + For a more detailed definition of nonfunctional, consult the documentation + of xyz.openbmc_project.State.Decorator.OperationalStatus and/or the + documentation of the fan inventory object implementation.' + class: condition + condition: count + paths: fans + properties: fan functional + defer: 5000000us + callback: log and shutdown + countop: '>' + countbound: 1 + op: '==' + bound: false + +- name: log and shutdown + description: > + 'Shut the system down, log an event in the journal, and create an + error log.' + class: callback + callback: group + members: + - shutdown + - log + - create shutdown error + +- name: shutdown + description: > + 'Shut down the system.' + class: callback + callback: method + service: org.freedesktop.systemd1 + path: /org/freedesktop/systemd1 + interface: org.freedesktop.systemd1.Manager + method: StartUnit + args: + - value: obmc-chassis-hard-poweroff@0.target + type: string + - value: replace + type: string + +- name: log + description: > + 'Log a shutdown event to the systemd journal.' + class: callback + callback: journal + paths: chassis state + properties: chassis powered + severity: ERR + message: Shutting down system. There are not enough functional fans. + +- name: create shutdown error + description: > + 'Create a Fan Shutdown Error log.' + class: callback + callback: elog + paths: chassis state + properties: chassis powered + error: xyz::openbmc_project::State::Shutdown::Inventory::Error::Fan diff --git a/meta-rcs/meta-blackbird/recipes-phosphor/fans/blackbird-fan-watchdog.bb b/meta-rcs/meta-blackbird/recipes-phosphor/fans/blackbird-fan-watchdog.bb new file mode 100644 index 000000000..9c1d40cfe --- /dev/null +++ b/meta-rcs/meta-blackbird/recipes-phosphor/fans/blackbird-fan-watchdog.bb @@ -0,0 +1,24 @@ +SUMMARY = "Blackbird fan watchdog services" +PR = "r1" + +LICENSE = "Apache-2.0" +LIC_FILES_CHKSUM = "file://${IBMBASE}/COPYING.apache-2.0;md5=34400b68072d710fecd0a2940a0d1658" + +inherit obmc-phosphor-systemd + +RDEPENDS_${PN} += "virtual/obmc-gpio-monitor" +RDEPENDS_${PN} += "busybox" + +RESET_SERVICE = "blackbird-reset-fan-watchdog.service" +TGTFMT = "obmc-chassis-poweron@0.target" +RESET_FMT = "../${RESET_SERVICE}:${TGTFMT}.requires/${RESET_SERVICE}" + +MONITOR_SERVICE = "blackbird-fan-watchdog-monitor@.service" + +WATCHDOG_SERVICE = "blackbird-fan-watchdog.service" +WATCHDOG_FMT = "../${WATCHDOG_SERVICE}:${TGTFMT}.requires/${WATCHDOG_SERVICE}" + +SYSTEMD_SERVICE_${PN} += "${RESET_SERVICE} ${MONITOR_SERVICE} ${WATCHDOG_SERVICE}" +SYSTEMD_LINK_${PN} += "${RESET_FMT} ${WATCHDOG_FMT}" +SYSTEMD_ENVIRONMENT_FILE_${PN} += "obmc/blackbird-fan-watchdog/reset-fan-watchdog.conf" +SYSTEMD_ENVIRONMENT_FILE_${PN} += "obmc/blackbird-fan-watchdog/fan-watchdog.conf" diff --git a/meta-rcs/meta-blackbird/recipes-phosphor/fans/blackbird-fan-watchdog/blackbird-fan-watchdog-monitor@.service b/meta-rcs/meta-blackbird/recipes-phosphor/fans/blackbird-fan-watchdog/blackbird-fan-watchdog-monitor@.service new file mode 100644 index 000000000..945561b50 --- /dev/null +++ b/meta-rcs/meta-blackbird/recipes-phosphor/fans/blackbird-fan-watchdog/blackbird-fan-watchdog-monitor@.service @@ -0,0 +1,10 @@ +[Unit] +Description=Fan Watchdog Failure Monitor + +#This can get called every time a process dies, so ensure it's never limited +StartLimitIntervalSec=0 + +[Service] +Type=oneshot +ExecStart=/usr/bin/env phosphor-unit-failure-monitor --source %i --target obmc-fan-watchdog-takeover.target --action start +SyslogIdentifier=phosphor-unit-failure-monitor diff --git a/meta-rcs/meta-blackbird/recipes-phosphor/fans/blackbird-fan-watchdog/blackbird-fan-watchdog.service b/meta-rcs/meta-blackbird/recipes-phosphor/fans/blackbird-fan-watchdog/blackbird-fan-watchdog.service new file mode 100644 index 000000000..80ec58bec --- /dev/null +++ b/meta-rcs/meta-blackbird/recipes-phosphor/fans/blackbird-fan-watchdog/blackbird-fan-watchdog.service @@ -0,0 +1,13 @@ +[Unit] +Description=Blackbird Fan Watchdog Daemon +Wants=phosphor-fan-control-init@0.service +Before=phosphor-fan-control-init@0.service +Conflicts=obmc-fan-watchdog-takeover.target + +[Service] +EnvironmentFile={envfiledir}/obmc/blackbird-fan-watchdog/fan-watchdog.conf +ExecStart=/sbin/watchdog -T ${{TIMEOUT}} -t ${{INTERVAL}} -F ${{DEVICE}} +KillSignal=SIGKILL + +[Install] +RequiredBy=obmc-chassis-poweron@0.target diff --git a/meta-rcs/meta-blackbird/recipes-phosphor/fans/blackbird-fan-watchdog/blackbird-reset-fan-watchdog.service b/meta-rcs/meta-blackbird/recipes-phosphor/fans/blackbird-fan-watchdog/blackbird-reset-fan-watchdog.service new file mode 100644 index 000000000..bd7fedaaa --- /dev/null +++ b/meta-rcs/meta-blackbird/recipes-phosphor/fans/blackbird-fan-watchdog/blackbird-reset-fan-watchdog.service @@ -0,0 +1,12 @@ +[Unit] +Description=Blackbird Fan Watchdog Reset +Wants=phosphor-fan-control-init@0.service +Before=phosphor-fan-control-init@0.service +Conflicts=obmc-chassis-poweroff@0.target + +[Service] +Type=oneshot +RemainAfterExit=yes +EnvironmentFile={envfiledir}/obmc/blackbird-fan-watchdog/reset-fan-watchdog.conf +ExecStart=/usr/bin/env phosphor-gpio-util -p ${{GPIO_PATH}} -g ${{GPIO}} -a ${{ACTION}} -d ${{DELAY}} +SyslogIdentifier=phosphor-gpio-util diff --git a/meta-rcs/meta-blackbird/recipes-phosphor/fans/blackbird-fan-watchdog/obmc/blackbird-fan-watchdog/fan-watchdog.conf b/meta-rcs/meta-blackbird/recipes-phosphor/fans/blackbird-fan-watchdog/obmc/blackbird-fan-watchdog/fan-watchdog.conf new file mode 100644 index 000000000..b54faae3b --- /dev/null +++ b/meta-rcs/meta-blackbird/recipes-phosphor/fans/blackbird-fan-watchdog/obmc/blackbird-fan-watchdog/fan-watchdog.conf @@ -0,0 +1,3 @@ +TIMEOUT=3 +INTERVAL=1 +DEVICE=/dev/watchdog0 diff --git a/meta-rcs/meta-blackbird/recipes-phosphor/fans/blackbird-fan-watchdog/obmc/blackbird-fan-watchdog/reset-fan-watchdog.conf b/meta-rcs/meta-blackbird/recipes-phosphor/fans/blackbird-fan-watchdog/obmc/blackbird-fan-watchdog/reset-fan-watchdog.conf new file mode 100644 index 000000000..b4e5ce74e --- /dev/null +++ b/meta-rcs/meta-blackbird/recipes-phosphor/fans/blackbird-fan-watchdog/obmc/blackbird-fan-watchdog/reset-fan-watchdog.conf @@ -0,0 +1,4 @@ +GPIO_PATH=/dev/gpiochip0 +GPIO=109 +DELAY=1 +ACTION=low_high diff --git a/meta-rcs/meta-blackbird/recipes-phosphor/fans/blackbird-thermal-policy-native.bb b/meta-rcs/meta-blackbird/recipes-phosphor/fans/blackbird-thermal-policy-native.bb new file mode 100644 index 000000000..2a60a581d --- /dev/null +++ b/meta-rcs/meta-blackbird/recipes-phosphor/fans/blackbird-thermal-policy-native.bb @@ -0,0 +1,14 @@ +SUMMARY = "Thermal policy for Blackbird" +PR = "r1" + +LICENSE = "Apache-2.0" +LIC_FILES_CHKSUM = "file://${IBMBASE}/COPYING.apache-2.0;md5=34400b68072d710fecd0a2940a0d1658" + +inherit native +inherit phosphor-dbus-monitor + +SRC_URI += "file://thermal-policy.yaml" + +do_install() { + install -D ${WORKDIR}/thermal-policy.yaml ${D}${config_dir}/thermal-policy.yaml +} diff --git a/meta-rcs/meta-blackbird/recipes-phosphor/fans/blackbird-thermal-policy/thermal-policy.yaml b/meta-rcs/meta-blackbird/recipes-phosphor/fans/blackbird-thermal-policy/thermal-policy.yaml new file mode 100644 index 000000000..d4b5c1649 --- /dev/null +++ b/meta-rcs/meta-blackbird/recipes-phosphor/fans/blackbird-thermal-policy/thermal-policy.yaml @@ -0,0 +1,152 @@ +# Blackbird thermal policy for PDM. +# +# Shut down a Blackbird system if more than three POWER9 cores +# have a temperature greater than 115 degrees Celcius. + + +- name: core sensors + description: > + 'Blackbird has one POWER9 chips with up to 24 cores.' + class: group + group: path + members: + - meta: SENSOR + path: /xyz/openbmc_project/sensors/temperature/p0_core0_temp + - meta: SENSOR + path: /xyz/openbmc_project/sensors/temperature/p0_core1_temp + - meta: SENSOR + path: /xyz/openbmc_project/sensors/temperature/p0_core2_temp + - meta: SENSOR + path: /xyz/openbmc_project/sensors/temperature/p0_core3_temp + - meta: SENSOR + path: /xyz/openbmc_project/sensors/temperature/p0_core4_temp + - meta: SENSOR + path: /xyz/openbmc_project/sensors/temperature/p0_core5_temp + - meta: SENSOR + path: /xyz/openbmc_project/sensors/temperature/p0_core6_temp + - meta: SENSOR + path: /xyz/openbmc_project/sensors/temperature/p0_core7_temp + - meta: SENSOR + path: /xyz/openbmc_project/sensors/temperature/p0_core8_temp + - meta: SENSOR + path: /xyz/openbmc_project/sensors/temperature/p0_core9_temp + - meta: SENSOR + path: /xyz/openbmc_project/sensors/temperature/p0_core10_temp + - meta: SENSOR + path: /xyz/openbmc_project/sensors/temperature/p0_core11_temp + - meta: SENSOR + path: /xyz/openbmc_project/sensors/temperature/p0_core12_temp + - meta: SENSOR + path: /xyz/openbmc_project/sensors/temperature/p0_core13_temp + - meta: SENSOR + path: /xyz/openbmc_project/sensors/temperature/p0_core14_temp + - meta: SENSOR + path: /xyz/openbmc_project/sensors/temperature/p0_core15_temp + - meta: SENSOR + path: /xyz/openbmc_project/sensors/temperature/p0_core16_temp + - meta: SENSOR + path: /xyz/openbmc_project/sensors/temperature/p0_core17_temp + - meta: SENSOR + path: /xyz/openbmc_project/sensors/temperature/p0_core18_temp + - meta: SENSOR + path: /xyz/openbmc_project/sensors/temperature/p0_core19_temp + - meta: SENSOR + path: /xyz/openbmc_project/sensors/temperature/p0_core20_temp + - meta: SENSOR + path: /xyz/openbmc_project/sensors/temperature/p0_core21_temp + - meta: SENSOR + path: /xyz/openbmc_project/sensors/temperature/p0_core22_temp + - meta: SENSOR + path: /xyz/openbmc_project/sensors/temperature/p0_core23_temp + +- name: core temp + description: > + 'Monitor the temperature of each core.' + class: group + group: property + type: int64 + members: + - interface: xyz.openbmc_project.Sensor.Value + meta: TEMP + property: Value + +- name: watch core temps + description: > + 'Trigger logic on core temp changes.' + class: watch + watch: property + paths: core sensors + properties: core temp + callback: check temps + +- name: check temps + description: > + 'If this condition passes at least three cores are running + too hot. Shut the system down.' + class: condition + condition: count + paths: core sensors + properties: core temp + callback: log and shutdown + countop: '>=' + countbound: 3 + op: '>=' + bound: 115000 + +- name: log and shutdown + description: > + 'Shut the system down and log an event.' + class: callback + callback: group + members: + - shutdown + - log + - create criticalhigh error + - create shutdown error + +- name: shutdown + description: > + 'Shut down the system.' + class: callback + callback: method + service: org.freedesktop.systemd1 + path: /org/freedesktop/systemd1 + interface: org.freedesktop.systemd1.Manager + method: StartUnit + args: + - value: obmc-chassis-hard-poweroff@0.target + type: string + - value: replace + type: string + +- name: log + description: > + 'Log a shutdown event to the systemd journal.' + class: callback + callback: journal + paths: core sensors + properties: core temp + severity: ERR + message: The system is too hot. Shutting down. + +- name: create criticalhigh error + description: > + 'Create a CriticalHigh Error log.' + class: callback + callback: elog + paths: core sensors + properties: core temp + error: xyz::openbmc_project::Sensor::Threshold::Error::CriticalHigh + metadata: + - name: xyz::openbmc_project::Sensor::Threshold::CriticalHigh::SENSOR_TYPE + value: temperature + type: string + +- name: create shutdown error + description: > + 'Create a SystemShutdown Error log.' + class: callback + callback: elog + paths: core sensors + properties: core temp + error: xyz::openbmc_project::State::Shutdown::ThermalEvent::Error::Processor diff --git a/meta-rcs/meta-blackbird/recipes-phosphor/fans/phosphor-fan-control-events-config-native.bbappend b/meta-rcs/meta-blackbird/recipes-phosphor/fans/phosphor-fan-control-events-config-native.bbappend new file mode 100644 index 000000000..72d991c7e --- /dev/null +++ b/meta-rcs/meta-blackbird/recipes-phosphor/fans/phosphor-fan-control-events-config-native.bbappend @@ -0,0 +1 @@ +FILESEXTRAPATHS_prepend := "${THISDIR}/${PN}:" diff --git a/meta-rcs/meta-blackbird/recipes-phosphor/fans/phosphor-fan-control-events-config-native/events.yaml b/meta-rcs/meta-blackbird/recipes-phosphor/fans/phosphor-fan-control-events-config-native/events.yaml new file mode 100644 index 000000000..131b844be --- /dev/null +++ b/meta-rcs/meta-blackbird/recipes-phosphor/fans/phosphor-fan-control-events-config-native/events.yaml @@ -0,0 +1,560 @@ +groups: + - name: air_cooled_zone0_fans + description: Group of fan inventory objects for air cooled zone 0 + type: /xyz/openbmc_project/inventory + members: + - /system/chassis/motherboard/fan2 + - name: water_and_air_cooled_zone0_fans + description: Group of fan inventory objects for water/air cooled zone 0 + type: /xyz/openbmc_project/inventory + members: + - /system/chassis/motherboard/fan2 + - name: air_cooled_zone2_fans + description: Group of fan inventory objects for air cooled zone 2 + type: /xyz/openbmc_project/inventory + members: + - /system/chassis/motherboard/fan0 + - name: water_and_air_cooled_zone2_fans + description: Group of fan inventory objects for water/air cooled zone 2 + type: /xyz/openbmc_project/inventory + members: + - /system/chassis/motherboard/fan0 + - name: zone2_ambient + description: Group of ambient temperature sensors for zone 2 + type: /xyz/openbmc_project/sensors + members: + - /temperature/ambient + - /temperature/cpu_1_ambient + - /temperature/pcie + - name: occ0_object + description: Dbus object containing OCC0 properties + type: /org/open_power/control + members: + - /occ0 + - name: zone0_cores + description: Group of core temperature sensors for zone 0 + type: /xyz/openbmc_project/sensors + members: + - /temperature/p0_core0_temp + - /temperature/p0_core1_temp + - /temperature/p0_core2_temp + - /temperature/p0_core3_temp + - /temperature/p0_core4_temp + - /temperature/p0_core5_temp + - /temperature/p0_core6_temp + - /temperature/p0_core7_temp + - /temperature/p0_core8_temp + - /temperature/p0_core9_temp + - /temperature/p0_core10_temp + - /temperature/p0_core11_temp + - /temperature/p0_core12_temp + - /temperature/p0_core13_temp + - /temperature/p0_core14_temp + - /temperature/p0_core15_temp + - /temperature/p0_core16_temp + - /temperature/p0_core17_temp + - /temperature/p0_core18_temp + - /temperature/p0_core19_temp + - /temperature/p0_core20_temp + - /temperature/p0_core21_temp + - /temperature/p0_core22_temp + - /temperature/p0_core23_temp + - name: zone0_regulators + description: Group of regulator temperature sensors for zone 0 + type: /xyz/openbmc_project/sensors + members: + - /temperature/p0_vdd_temp + - name: zone0_dimms + description: Group of dimm temperature sensors for zone 0 + type: /xyz/openbmc_project/sensors + members: + - /temperature/dimm0_temp + - /temperature/dimm1_temp + - /temperature/dimm2_temp + - /temperature/dimm3_temp + - /temperature/dimm4_temp + - /temperature/dimm5_temp + - /temperature/dimm6_temp + - /temperature/dimm7_temp + - name: zone0_pcie + description: Group of pcie temperature sensors for zone 0 + type: /xyz/openbmc_project/sensors + members: + - /temperature/pcie + +matches: + - name: propertiesChanged + description: > + A property changed match + parameters: + - object + - interface + signal: propertySignal + - name: interfacesAdded + description: > + An interfaces added match + parameters: + - object + signal: objectSignal + - name: interfacesRemoved + description: > + An interfaces removed match + parameters: + - object + signal: objectSignal + - name: nameOwnerChanged + description: > + A name owner changed match + parameters: + - object + - interface + signal: ownerSignal + +signals: + - name: propertySignal + description: > + Handle property signals + parameters: + - type + - object + - interface + - property + handler: setProperty + - name: objectSignal + description: > + Handle object signals + parameters: + - type + - object + - interface + - property + handler: setProperty + - name: ownerSignal + description: > + Handle owner signals + parameters: + - object + - interface + handler: setService + +handlers: + - name: setProperty + description: > + Sets a value for the given object/interface/property + parameters: + - type + - object + - interface + - property + - name: setService + description: > + Sets the service name(s) for the given group + parameters: + - group + +preconditions: + - name: property_states_match + description: > + All defined properties must match the values given to + enable a set speed event otherwise fan speeds are set to full + parameters: + - groups + +actions: + - name: call_actions_based_on_timer + description: > + Sets up a list of actions to be invoked when the defined timer + expires (or for each expiration of a repeating timer) + parameters: + - timer + - actions + - name: default_floor_on_missing_owner + description: > + Set the fan floor to the default floor + - name: set_speed_on_missing_owner + description: > + Set fans to the given speed when any service within the group + no longer exists + parameters: + - speed + - name: set_request_speed_base_with_max + description: > + Set the base request speed of a zone to the max value of a group for + calculating a new target speed + - name: count_state_before_speed + description: Set the speed when a number of properties at a state + parameters: + - count + - property + - speed + - name: set_floor_from_average_sensor_value + description: Set floor speed from first entry with average less than key + parameters: + - map + - name: set_ceiling_from_average_sensor_value + description: Set ceiling speed based on key transition values with average + parameters: + - map + - name: set_net_increase_speed + description: > + Set the speed increase delta based on a factor applied to + the delta increase size times the given value and property's + value difference + parameters: + - property + - factor + - delta + - name: set_net_decrease_speed + description: > + Set the speed decrease delta based on a factor applied to + the delta decrease size times the given value and property's + value difference + parameters: + - property + - factor + - delta + - name: run_pid_control + description: > + Runs PID control trying to keep value at property + parameters: + - property + - integrator_timestep + - kp + - ki + - kd + +events: + - name: default_fan_floor_on_service_fail + # No global zone conditions defined == all unless defined on group + groups: + - name: zone2_ambient + interface: xyz.openbmc_project.Sensor.Value + property: + name: Value + type: int64_t + matches: + - name: nameOwnerChanged + actions: + - name: call_actions_based_on_timer + timer: + delay: 5 + type: oneshot + actions: + - name: default_floor_on_missing_owner + - name: missing_before_high_speed_air_zone0 + groups: + - name: air_cooled_zone0_fans + zone_conditions: + - name: air_cooled_chassis + zones: + - 0 + interface: xyz.openbmc_project.Inventory.Item + property: + name: Present + type: bool + matches: + - name: propertiesChanged + actions: + - name: count_state_before_speed + count: 1 + property: + value: false + type: bool + speed: + value: 1000 + type: uint64_t + - name: fails_before_high_speed_air_zone0 + groups: + - name: air_cooled_zone0_fans + zone_conditions: + - name: air_cooled_chassis + zones: + - 0 + interface: xyz.openbmc_project.State.Decorator.OperationalStatus + property: + name: Functional + type: bool + matches: + - name: propertiesChanged + actions: + - name: count_state_before_speed + count: 1 + property: + value: false + type: bool + speed: + value: 1000 + type: uint64_t + - name: missing_before_high_speed_water_and_air_zone0 + groups: + - name: water_and_air_cooled_zone0_fans + zone_conditions: + - name: water_and_air_cooled_chassis + zones: + - 0 + interface: xyz.openbmc_project.Inventory.Item + property: + name: Present + type: bool + matches: + - name: propertiesChanged + actions: + - name: count_state_before_speed + count: 1 + property: + value: false + type: bool + speed: + value: 1000 + type: uint64_t + - name: fails_before_high_speed_water_and_air_zone0 + groups: + - name: water_and_air_cooled_zone0_fans + zone_conditions: + - name: water_and_air_cooled_chassis + zones: + - 0 + interface: xyz.openbmc_project.State.Decorator.OperationalStatus + property: + name: Functional + type: bool + matches: + - name: propertiesChanged + actions: + - name: count_state_before_speed + count: 1 + property: + value: false + type: bool + speed: + value: 1000 + type: uint64_t + - name: set_air_cooled_speed_boundaries_based_on_ambient + groups: + - name: zone2_ambient + zone_conditions: + - name: air_cooled_chassis + zones: + - 2 + interface: xyz.openbmc_project.Sensor.Value + property: + name: Value + type: int64_t + matches: + - name: propertiesChanged + actions: + - name: set_floor_from_average_sensor_value + map: + value: + - 22000: 100 + type: std::map<int64_t, uint64_t> + - name: set_ceiling_from_average_sensor_value + map: + value: + - 27000: 1000 + type: std::map<int64_t, uint64_t> + - name: set_water_cooled_speed_boundaries_based_on_ambient + groups: + - name: zone2_ambient + zone_conditions: + - name: water_and_air_cooled_chassis + zones: + - 2 + interface: xyz.openbmc_project.Sensor.Value + property: + name: Value + type: int64_t + matches: + - name: propertiesChanged + actions: + - name: set_floor_from_average_sensor_value + map: + value: + - 22000: 250 + type: std::map<int64_t, uint64_t> + - name: set_ceiling_from_average_sensor_value + map: + value: + - 27000: 1000 + type: std::map<int64_t, uint64_t> + - name: speed_changes_based_on_regulator_temps + groups: + - name: zone0_regulators + zone_conditions: + - name: air_cooled_chassis + zones: + - 0 + - name: water_and_air_cooled_chassis + zones: + - 0 + interface: xyz.openbmc_project.Sensor.Value + property: + name: Value + type: int64_t + matches: + - name: interfacesAdded + - name: propertiesChanged + actions: + - name: set_net_increase_speed + property: + value: 85000 + type: int64_t + factor: + value: 1000 + type: int64_t + delta: + value: 40 + type: uint64_t + timer: + interval: 5 + - name: occ_active_speed_changes_zone0 + precondition: + name: property_states_match + groups: + - name: occ0_object + interface: org.open_power.OCC.Status + property: + name: OccActive + type: bool + value: true + matches: + - name: interfacesAdded + - name: propertiesChanged + events: + - name: speed_changes_based_on_core_temps_zone0 + groups: + - name: zone0_cores + zone_conditions: + - name: air_cooled_chassis + zones: + - 0 + interface: xyz.openbmc_project.Sensor.Value + property: + name: Value + type: int64_t + matches: + - name: interfacesAdded + - name: propertiesChanged + actions: + - name: run_pid_control + property: + value: 63000 + type: int64_t + integrator_timestep: + value: 1 + type: int64_t + kp: + value: 3500 + type: int64_t + ki: + value: 100 + type: int64_t + kd: + value: 0 + type: int64_t + # Ensure PID values are always translated out to hardware + # This do-nothing "speed increase" is always called on every loop invocation + - name: set_net_increase_speed + property: + value: 0 + type: int64_t + factor: + value: 0 + type: int64_t + delta: + value: 0 + type: uint64_t + timer: + interval: 5 + - name: speed_changes_based_on_dimm_temps_zone0 + groups: + - name: zone0_dimms + zone_conditions: + - name: air_cooled_chassis + zones: + - 0 + - name: water_and_air_cooled_chassis + zones: + - 0 + interface: xyz.openbmc_project.Sensor.Value + property: + name: Value + type: int64_t + matches: + - name: interfacesAdded + - name: propertiesChanged + actions: + - name: set_net_increase_speed + property: + value: 64000 + type: int64_t + factor: + value: 1000 + type: int64_t + delta: + value: 4 + type: uint64_t + timer: + interval: 5 + - name: occ_active_speed_changes_zone2 + precondition: + name: property_states_match + groups: + - name: occ0_object + interface: org.open_power.OCC.Status + property: + name: OccActive + type: bool + value: true + matches: + - name: interfacesAdded + - name: propertiesChanged + events: + - name: speed_changes_based_on_ambient_temp + groups: + - name: zone2_ambient + zone_conditions: + - name: air_cooled_chassis + zones: + - 2 + - name: water_and_air_cooled_chassis + zones: + - 2 + interface: xyz.openbmc_project.Sensor.Value + property: + name: Value + type: int64_t + matches: + - name: interfacesAdded + - name: propertiesChanged + actions: + - name: run_pid_control + property: + value: 42000 + type: int64_t + integrator_timestep: + value: 1 + type: int64_t + kp: + value: 2500 + type: int64_t + ki: + value: 50 + type: int64_t + kd: + value: 0 + type: int64_t + # Ensure PID values are always translated out to hardware + # This do-nothing "speed increase" is always called on every loop invocation + - name: set_net_increase_speed + property: + value: 0 + type: int64_t + factor: + value: 0 + type: int64_t + delta: + value: 0 + type: uint64_t + timer: + interval: 5 diff --git a/meta-rcs/meta-blackbird/recipes-phosphor/fans/phosphor-fan-control-fan-config-native.bbappend b/meta-rcs/meta-blackbird/recipes-phosphor/fans/phosphor-fan-control-fan-config-native.bbappend new file mode 100644 index 000000000..72d991c7e --- /dev/null +++ b/meta-rcs/meta-blackbird/recipes-phosphor/fans/phosphor-fan-control-fan-config-native.bbappend @@ -0,0 +1 @@ +FILESEXTRAPATHS_prepend := "${THISDIR}/${PN}:" diff --git a/meta-rcs/meta-blackbird/recipes-phosphor/fans/phosphor-fan-control-fan-config-native/fans.yaml b/meta-rcs/meta-blackbird/recipes-phosphor/fans/phosphor-fan-control-fan-config-native/fans.yaml new file mode 100755 index 000000000..824ad5717 --- /dev/null +++ b/meta-rcs/meta-blackbird/recipes-phosphor/fans/phosphor-fan-control-fan-config-native/fans.yaml @@ -0,0 +1,13 @@ +fans: + - inventory: /system/chassis/motherboard/fan2 + cooling_zone: 0 + cooling_profile: all + sensors: + - fan2 + target_interface: xyz.openbmc_project.Control.FanSpeed + - inventory: /system/chassis/motherboard/fan0 + cooling_zone: 2 + cooling_profile: all + sensors: + - fan0 + target_interface: xyz.openbmc_project.Control.FanSpeed diff --git a/meta-rcs/meta-blackbird/recipes-phosphor/fans/phosphor-fan-control-zone-conditions-config-native.bbappend b/meta-rcs/meta-blackbird/recipes-phosphor/fans/phosphor-fan-control-zone-conditions-config-native.bbappend new file mode 100644 index 000000000..72d991c7e --- /dev/null +++ b/meta-rcs/meta-blackbird/recipes-phosphor/fans/phosphor-fan-control-zone-conditions-config-native.bbappend @@ -0,0 +1 @@ +FILESEXTRAPATHS_prepend := "${THISDIR}/${PN}:" diff --git a/meta-rcs/meta-blackbird/recipes-phosphor/fans/phosphor-fan-control-zone-conditions-config-native/zone_conditions.yaml b/meta-rcs/meta-blackbird/recipes-phosphor/fans/phosphor-fan-control-zone-conditions-config-native/zone_conditions.yaml new file mode 100644 index 000000000..0c8b3c5ff --- /dev/null +++ b/meta-rcs/meta-blackbird/recipes-phosphor/fans/phosphor-fan-control-zone-conditions-config-native/zone_conditions.yaml @@ -0,0 +1,18 @@ +conditions: + - name: air_cooled_chassis + type: getProperty + properties: + - property: WaterCooled + interface: xyz.openbmc_project.Inventory.Decorator.CoolingType + path: /xyz/openbmc_project/inventory/system/chassis + type: bool + value: false + + - name: water_and_air_cooled_chassis + type: getProperty + properties: + - property: WaterCooled + interface: xyz.openbmc_project.Inventory.Decorator.CoolingType + path: /xyz/openbmc_project/inventory/system/chassis + type: bool + value: true diff --git a/meta-rcs/meta-blackbird/recipes-phosphor/fans/phosphor-fan-control-zone-config-native.bbappend b/meta-rcs/meta-blackbird/recipes-phosphor/fans/phosphor-fan-control-zone-config-native.bbappend new file mode 100644 index 000000000..6d4804d12 --- /dev/null +++ b/meta-rcs/meta-blackbird/recipes-phosphor/fans/phosphor-fan-control-zone-config-native.bbappend @@ -0,0 +1,2 @@ +FILESEXTRAPATHS_prepend := "${THISDIR}/${PN}:" + diff --git a/meta-rcs/meta-blackbird/recipes-phosphor/fans/phosphor-fan-control-zone-config-native/zones.yaml b/meta-rcs/meta-blackbird/recipes-phosphor/fans/phosphor-fan-control-zone-config-native/zones.yaml new file mode 100644 index 000000000..3aed2dfdb --- /dev/null +++ b/meta-rcs/meta-blackbird/recipes-phosphor/fans/phosphor-fan-control-zone-config-native/zones.yaml @@ -0,0 +1,48 @@ +manager_configuration: + power_on_delay: 5 + +zone_configuration: + +#Air cooled zones +- zone_conditions: + - name: air_cooled_chassis + + zones: + - zone: 0 + cooling_profiles: + - air + - all + full_speed: 1000 + default_floor: 100 + increase_delay: 5 + decrease_interval: 5 + - zone: 2 + cooling_profiles: + - air + - all + full_speed: 1000 + default_floor: 100 + increase_delay: 5 + decrease_interval: 5 + +#Water cooled zones +- zone_conditions: + - name: water_and_air_cooled_chassis + + zones: + - zone: 0 + cooling_profiles: + - water + - all + full_speed: 1000 + default_floor: 100 + increase_delay: 5 + decrease_interval: 5 + - zone: 2 + cooling_profiles: + - water + - all + full_speed: 1000 + default_floor: 100 + increase_delay: 5 + decrease_interval: 5 diff --git a/meta-rcs/meta-blackbird/recipes-phosphor/fans/phosphor-fan-monitor-config-native.bbappend b/meta-rcs/meta-blackbird/recipes-phosphor/fans/phosphor-fan-monitor-config-native.bbappend new file mode 100644 index 000000000..72d991c7e --- /dev/null +++ b/meta-rcs/meta-blackbird/recipes-phosphor/fans/phosphor-fan-monitor-config-native.bbappend @@ -0,0 +1 @@ +FILESEXTRAPATHS_prepend := "${THISDIR}/${PN}:" diff --git a/meta-rcs/meta-blackbird/recipes-phosphor/fans/phosphor-fan-monitor-config-native/monitor.yaml b/meta-rcs/meta-blackbird/recipes-phosphor/fans/phosphor-fan-monitor-config-native/monitor.yaml new file mode 100644 index 000000000..504918ab4 --- /dev/null +++ b/meta-rcs/meta-blackbird/recipes-phosphor/fans/phosphor-fan-monitor-config-native/monitor.yaml @@ -0,0 +1,37 @@ +fans: + - inventory: /system/chassis/motherboard/fan0 + functional_delay: 5 + allowed_out_of_range_time: 30 + deviation: -500 + num_sensors_nonfunc_for_fan_nonfunc: 1 + sensors: + - name: fan0 + has_target: true + target_interface: xyz.openbmc_project.Control.FanSpeed + + - inventory: /system/chassis/motherboard/fan1 + functional_delay: 5 + allowed_out_of_range_time: 30 + deviation: -500 + num_sensors_nonfunc_for_fan_nonfunc: 1 + sensors: + - name: fan1 + has_target: true + target_interface: xyz.openbmc_project.Control.FanSpeed + + - inventory: /system/chassis/motherboard/fan2 + functional_delay: 5 + allowed_out_of_range_time: 30 + deviation: -500 + num_sensors_nonfunc_for_fan_nonfunc: 1 + sensors: + - name: fan2 + has_target: true + target_interface: xyz.openbmc_project.Control.FanSpeed + +sensor_trust_groups: + - class: NonzeroSpeed + group: + - name: fan0 + - name: fan1 + - name: fan2 diff --git a/meta-rcs/meta-blackbird/recipes-phosphor/fans/phosphor-fan-presence-config-native.bbappend b/meta-rcs/meta-blackbird/recipes-phosphor/fans/phosphor-fan-presence-config-native.bbappend new file mode 100644 index 000000000..72d991c7e --- /dev/null +++ b/meta-rcs/meta-blackbird/recipes-phosphor/fans/phosphor-fan-presence-config-native.bbappend @@ -0,0 +1 @@ +FILESEXTRAPATHS_prepend := "${THISDIR}/${PN}:" diff --git a/meta-rcs/meta-blackbird/recipes-phosphor/fans/phosphor-fan-presence-config-native/config.yaml b/meta-rcs/meta-blackbird/recipes-phosphor/fans/phosphor-fan-presence-config-native/config.yaml new file mode 100644 index 000000000..7b993de82 --- /dev/null +++ b/meta-rcs/meta-blackbird/recipes-phosphor/fans/phosphor-fan-presence-config-native/config.yaml @@ -0,0 +1,26 @@ +- name: fan0 + path: /system/chassis/motherboard/fan0 + methods: + - type: tach + sensors: + - fan0 + rpolicy: + type: anyof + +- name: fan1 + path: /system/chassis/motherboard/fan1 + methods: + - type: tach + sensors: + - fan1 + rpolicy: + type: anyof + +- name: fan2 + path: /system/chassis/motherboard/fan2 + methods: + - type: tach + sensors: + - fan2 + rpolicy: + type: anyof diff --git a/meta-rcs/meta-blackbird/recipes-phosphor/fans/phosphor-fan/fan-watchdog-conflicts.conf b/meta-rcs/meta-blackbird/recipes-phosphor/fans/phosphor-fan/fan-watchdog-conflicts.conf new file mode 100644 index 000000000..90b1e810e --- /dev/null +++ b/meta-rcs/meta-blackbird/recipes-phosphor/fans/phosphor-fan/fan-watchdog-conflicts.conf @@ -0,0 +1,2 @@ +[Unit] +Conflicts=obmc-fan-watchdog-takeover.target diff --git a/meta-rcs/meta-blackbird/recipes-phosphor/fans/phosphor-fan/fan-watchdog-monitor.conf b/meta-rcs/meta-blackbird/recipes-phosphor/fans/phosphor-fan/fan-watchdog-monitor.conf new file mode 100644 index 000000000..9a9cd42a9 --- /dev/null +++ b/meta-rcs/meta-blackbird/recipes-phosphor/fans/phosphor-fan/fan-watchdog-monitor.conf @@ -0,0 +1,5 @@ +[Unit] +#These overrides allow the fan watchdog to take over when this service dies +OnFailure=blackbird-fan-watchdog-monitor@%n.service +StartLimitIntervalSec=5 +StartLimitBurst=3 diff --git a/meta-rcs/meta-blackbird/recipes-phosphor/fans/phosphor-fan/obmc/phosphor-fan/phosphor-cooling-type-0.conf b/meta-rcs/meta-blackbird/recipes-phosphor/fans/phosphor-fan/obmc/phosphor-fan/phosphor-cooling-type-0.conf new file mode 100644 index 000000000..6b74301d1 --- /dev/null +++ b/meta-rcs/meta-blackbird/recipes-phosphor/fans/phosphor-fan/obmc/phosphor-fan/phosphor-cooling-type-0.conf @@ -0,0 +1,6 @@ +OBJPATH="--path=/system/chassis" +AIR="--air" +WATER="" +DEVICE="" +CODE="" + diff --git a/meta-rcs/meta-blackbird/recipes-phosphor/fans/phosphor-fan/phosphor-cooling-type@.service b/meta-rcs/meta-blackbird/recipes-phosphor/fans/phosphor-fan/phosphor-cooling-type@.service new file mode 100644 index 000000000..c1f5ae293 --- /dev/null +++ b/meta-rcs/meta-blackbird/recipes-phosphor/fans/phosphor-fan/phosphor-cooling-type@.service @@ -0,0 +1,15 @@ +[Unit] +Description=Phosphor Cooling Type +Wants=mapper-wait@-xyz-openbmc_project-inventory.service +After=mapper-wait@-xyz-openbmc_project-inventory.service +ConditionPathExists={envfiledir}/obmc/phosphor-fan/phosphor-cooling-type-%i.conf + +[Service] +Type=oneshot +RemainAfterExit=yes +EnvironmentFile={envfiledir}/obmc/phosphor-fan/phosphor-cooling-type-%i.conf +ExecStart=/usr/bin/env phosphor-cooling-type ${{OBJPATH}} ${{AIR}} ${{WATER}} ${{DEVICE}} ${{CODE}} +SyslogIdentifier=phosphor-cooling-type + +[Install] +RequiredBy=multi-user.target diff --git a/meta-rcs/meta-blackbird/recipes-phosphor/fans/phosphor-fan_%.bbappend b/meta-rcs/meta-blackbird/recipes-phosphor/fans/phosphor-fan_%.bbappend new file mode 100644 index 000000000..36751c29a --- /dev/null +++ b/meta-rcs/meta-blackbird/recipes-phosphor/fans/phosphor-fan_%.bbappend @@ -0,0 +1,33 @@ +FILESEXTRAPATHS_append := "${THISDIR}/${PN}:" + +# Package configuration +FAN_PACKAGES += " \ + phosphor-cooling-type \ +" + +PACKAGECONFIG += "cooling-type" + +RDEPENDS_phosphor-cooling-type += "libevdev" + +TMPL_COOLING = "phosphor-cooling-type@.service" +INSTFMT_COOLING = "phosphor-cooling-type@{0}.service" +COOLING_TGT = "multi-user.target" +FMT_COOLING = "../${TMPL_COOLING}:${COOLING_TGT}.requires/${INSTFMT_COOLING}" + +FILES_phosphor-cooling-type = "${sbindir}/phosphor-cooling-type" +SYSTEMD_SERVICE_phosphor-cooling-type += "${TMPL_COOLING}" +SYSTEMD_LINK_phosphor-cooling-type += "${@compose_list(d, 'FMT_COOLING', 'OBMC_CHASSIS_INSTANCES')}" + +COOLING_ENV_FMT = "obmc/phosphor-fan/phosphor-cooling-type-{0}.conf" + +SYSTEMD_ENVIRONMENT_FILE_phosphor-cooling-type += "${@compose_list(d, 'COOLING_ENV_FMT', 'OBMC_CHASSIS_INSTANCES')}" + +#These services are protected by the watchdog +SYSTEMD_OVERRIDE_phosphor-fan-control += "fan-watchdog-monitor.conf:phosphor-fan-control-init@0.service.d/fan-watchdog-monitor.conf" +SYSTEMD_OVERRIDE_phosphor-fan-control += "fan-watchdog-monitor.conf:phosphor-fan-control@0.service.d/fan-watchdog-monitor.conf" +SYSTEMD_OVERRIDE_phosphor-fan-monitor += "fan-watchdog-monitor.conf:phosphor-fan-monitor-init@0.service.d/fan-watchdog-monitor.conf" +SYSTEMD_OVERRIDE_phosphor-fan-monitor += "fan-watchdog-monitor.conf:phosphor-fan-monitor@0.service.d/fan-watchdog-monitor.conf" + +#These services need to be stopped when watchdog expires +SYSTEMD_OVERRIDE_phosphor-fan-control += "fan-watchdog-conflicts.conf:phosphor-fan-control@0.service.d/fan-watchdog-conflicts.conf" +SYSTEMD_OVERRIDE_phosphor-fan-monitor += "fan-watchdog-conflicts.conf:phosphor-fan-monitor@0.service.d/fan-watchdog-conflicts.conf" diff --git a/meta-rcs/meta-blackbird/recipes-phosphor/flash/phosphor-software-manager_%.bbappend b/meta-rcs/meta-blackbird/recipes-phosphor/flash/phosphor-software-manager_%.bbappend new file mode 100644 index 000000000..c92b1a89c --- /dev/null +++ b/meta-rcs/meta-blackbird/recipes-phosphor/flash/phosphor-software-manager_%.bbappend @@ -0,0 +1 @@ +PACKAGECONFIG_append = " verify_signature" diff --git a/meta-rcs/meta-blackbird/recipes-phosphor/gpio/id-button.bb b/meta-rcs/meta-blackbird/recipes-phosphor/gpio/id-button.bb new file mode 100644 index 000000000..5cee2de97 --- /dev/null +++ b/meta-rcs/meta-blackbird/recipes-phosphor/gpio/id-button.bb @@ -0,0 +1,30 @@ +SUMMARY = "Blackbird ID Button pressed application" +PR = "r1" +LICENSE = "Apache-2.0" +LIC_FILES_CHKSUM = "file://${IBMBASE}/COPYING.apache-2.0;md5=34400b68072d710fecd0a2940a0d1658" + +inherit obmc-phosphor-systemd + +DEPENDS += "virtual/obmc-gpio-monitor" +RDEPENDS_${PN} += "virtual/obmc-gpio-monitor" + +S = "${WORKDIR}" +SRC_URI += "file://toggle_identify_led.sh" + +do_install() { + install -d ${D}${bindir} + install -m 0755 ${WORKDIR}/toggle_identify_led.sh \ + ${D}${bindir}/toggle_identify_led.sh +} + +SYSTEMD_ENVIRONMENT_FILE_${PN} +="obmc/gpio/id_button" + +ID_BUTTON_SERVICE = "id_button" + +TMPL = "phosphor-gpio-monitor@.service" +INSTFMT = "phosphor-gpio-monitor@{0}.service" +TGT = "multi-user.target" +FMT = "../${TMPL}:${TGT}.requires/${INSTFMT}" + +SYSTEMD_SERVICE_${PN} += "id-button-pressed.service" +SYSTEMD_LINK_${PN} += "${@compose_list(d, 'FMT', 'ID_BUTTON_SERVICE')}" diff --git a/meta-rcs/meta-blackbird/recipes-phosphor/gpio/id-button/id-button-pressed.service b/meta-rcs/meta-blackbird/recipes-phosphor/gpio/id-button/id-button-pressed.service new file mode 100644 index 000000000..f633fc307 --- /dev/null +++ b/meta-rcs/meta-blackbird/recipes-phosphor/gpio/id-button/id-button-pressed.service @@ -0,0 +1,10 @@ +[Unit] +Description=ID Button Pressed Service +Wants=mapper-wait@-xyz-openbmc_project-led-groups.service +After=mapper-wait@-xyz-openbmc_project-led-groups.service +StartLimitIntervalSec=0 + +[Service] +Type=oneshot +ExecStart=/usr/bin/env toggle_identify_led.sh +SyslogIdentifier=id-button diff --git a/meta-rcs/meta-blackbird/recipes-phosphor/gpio/id-button/obmc/gpio/id_button b/meta-rcs/meta-blackbird/recipes-phosphor/gpio/id-button/obmc/gpio/id_button new file mode 100644 index 000000000..b1963573f --- /dev/null +++ b/meta-rcs/meta-blackbird/recipes-phosphor/gpio/id-button/obmc/gpio/id_button @@ -0,0 +1,5 @@ +DEVPATH=/dev/input/by-path/platform-gpio-keys-event +KEY=135 +POLARITY=1 +TARGET=id-button-pressed.service +EXTRA_ARGS=--continue diff --git a/meta-rcs/meta-blackbird/recipes-phosphor/gpio/id-button/toggle_identify_led.sh b/meta-rcs/meta-blackbird/recipes-phosphor/gpio/id-button/toggle_identify_led.sh new file mode 100755 index 000000000..eec96d3f1 --- /dev/null +++ b/meta-rcs/meta-blackbird/recipes-phosphor/gpio/id-button/toggle_identify_led.sh @@ -0,0 +1,20 @@ +#!/bin/sh +# Toggle the state of identify LED Group + +SERVICE="xyz.openbmc_project.LED.GroupManager" +INTERFACE="xyz.openbmc_project.Led.Group" +PROPERTY="Asserted" + +# Get current state +object=$(busctl tree $SERVICE --list | grep identify) +state=$(busctl get-property $SERVICE $object $INTERFACE $PROPERTY \ + | awk '{print $NF;}') + +if [ "$state" == "false" ]; then + target='true' +else + target='false' +fi + +# Set target state +busctl set-property $SERVICE $object $INTERFACE $PROPERTY b $target diff --git a/meta-rcs/meta-blackbird/recipes-phosphor/host/p9-host-start.bbappend b/meta-rcs/meta-blackbird/recipes-phosphor/host/p9-host-start.bbappend new file mode 100644 index 000000000..cd7c978f6 --- /dev/null +++ b/meta-rcs/meta-blackbird/recipes-phosphor/host/p9-host-start.bbappend @@ -0,0 +1,4 @@ +RDEPENDS_${PN} += 'avsbus-control' +RDEPENDS_${PN} += 'vrm-control' +RDEPENDS_${PN} += 'fpga-config' +RDEPENDS_${PN} += 'lvds-config' diff --git a/meta-rcs/meta-blackbird/recipes-phosphor/images/obmc-phosphor-image.bbappend b/meta-rcs/meta-blackbird/recipes-phosphor/images/obmc-phosphor-image.bbappend new file mode 100644 index 000000000..772685db7 --- /dev/null +++ b/meta-rcs/meta-blackbird/recipes-phosphor/images/obmc-phosphor-image.bbappend @@ -0,0 +1 @@ +OBMC_IMAGE_EXTRA_INSTALL_append = " mboxd liberation-fonts uart-render-controller" diff --git a/meta-rcs/meta-blackbird/recipes-phosphor/ipmi/blackbird-ipmi-fru-read-inventory-native.bb b/meta-rcs/meta-blackbird/recipes-phosphor/ipmi/blackbird-ipmi-fru-read-inventory-native.bb new file mode 100644 index 000000000..1b8347717 --- /dev/null +++ b/meta-rcs/meta-blackbird/recipes-phosphor/ipmi/blackbird-ipmi-fru-read-inventory-native.bb @@ -0,0 +1,19 @@ +SUMMARY = "Blackbird inventory map for phosphor-ipmi-host" +PR = "r1" +LICENSE = "Apache-2.0" +LIC_FILES_CHKSUM = "file://${IBMBASE}/COPYING.apache-2.0;md5=34400b68072d710fecd0a2940a0d1658" + +inherit native +inherit phosphor-ipmi-host + +SRC_URI += "file://config.yaml" + +PROVIDES += "virtual/phosphor-ipmi-fru-read-inventory" + +S = "${WORKDIR}" + +do_install() { + DEST=${D}${config_datadir} + install -d ${DEST} + install config.yaml ${DEST} +} diff --git a/meta-rcs/meta-blackbird/recipes-phosphor/ipmi/blackbird-ipmi-inventory-map-native.bb b/meta-rcs/meta-blackbird/recipes-phosphor/ipmi/blackbird-ipmi-inventory-map-native.bb new file mode 100644 index 000000000..c0620ff5d --- /dev/null +++ b/meta-rcs/meta-blackbird/recipes-phosphor/ipmi/blackbird-ipmi-inventory-map-native.bb @@ -0,0 +1,24 @@ +SUMMARY = "Romulus IPMI to DBus Inventory mapping." +PR = "r1" +LICENSE = "Apache-2.0" +LIC_FILES_CHKSUM = "file://${IBMBASE}/COPYING.apache-2.0;md5=34400b68072d710fecd0a2940a0d1658" + +inherit native +inherit phosphor-ipmi-fru + +SRC_URI += "file://config.yaml" + +PROVIDES += "virtual/phosphor-ipmi-fru-inventory" + +S = "${WORKDIR}" + +do_install() { + # TODO: install this to inventory_datadir + # after ipmi-fru-parser untangles the host + # firmware config from the machine inventory. + DEST=${D}${config_datadir} + + install -d ${DEST} + install config.yaml ${DEST} +} + diff --git a/meta-rcs/meta-blackbird/recipes-phosphor/ipmi/blackbird-ipmi-inventory-sel-native.bb b/meta-rcs/meta-blackbird/recipes-phosphor/ipmi/blackbird-ipmi-inventory-sel-native.bb new file mode 100644 index 000000000..a49af397b --- /dev/null +++ b/meta-rcs/meta-blackbird/recipes-phosphor/ipmi/blackbird-ipmi-inventory-sel-native.bb @@ -0,0 +1,19 @@ +SUMMARY = "Inventory to Sensor config for Blackbird" +PR = "r1" +LICENSE = "Apache-2.0" +LIC_FILES_CHKSUM = "file://${IBMBASE}/COPYING.apache-2.0;md5=34400b68072d710fecd0a2940a0d1658" + +inherit native +inherit phosphor-ipmi-host + +PROVIDES += "virtual/phosphor-ipmi-inventory-sel" + +SRC_URI += "file://sel-config.yaml" + +S = "${WORKDIR}" + +do_install() { + DEST=${D}${sensor_datadir} + install -d ${DEST} + install sel-config.yaml ${DEST}/invsensor.yaml +} diff --git a/meta-rcs/meta-blackbird/recipes-phosphor/ipmi/files/config.yaml b/meta-rcs/meta-blackbird/recipes-phosphor/ipmi/files/config.yaml new file mode 100644 index 000000000..de2e81474 --- /dev/null +++ b/meta-rcs/meta-blackbird/recipes-phosphor/ipmi/files/config.yaml @@ -0,0 +1,538 @@ +1: + /system/chassis/motherboard/cpu0: + entityID: 3 + entityInstance: 1 + interfaces: + xyz.openbmc_project.Inventory.Decorator.Revision: + Version: + IPMIFruProperty: Custom Field 2 + IPMIFruSection: Board + IPMIFruValueDelimiter: 58 + xyz.openbmc_project.Inventory.Decorator.Asset: + BuildDate: + IPMIFruProperty: Mfg Date + IPMIFruSection: Board + PartNumber: + IPMIFruProperty: Part Number + IPMIFruSection: Board + Manufacturer: + IPMIFruProperty: Manufacturer + IPMIFruSection: Board + SerialNumber: + IPMIFruProperty: Serial Number + IPMIFruSection: Board + xyz.openbmc_project.Inventory.Item: + PrettyName: + IPMIFruProperty: Name + IPMIFruSection: Board +2: + /system/chassis/motherboard/cpu1: + entityID: 3 + entityInstance: 2 + interfaces: + xyz.openbmc_project.Inventory.Decorator.Revision: + Version: + IPMIFruProperty: Custom Field 2 + IPMIFruSection: Board + IPMIFruValueDelimiter: 58 + xyz.openbmc_project.Inventory.Decorator.Asset: + BuildDate: + IPMIFruProperty: Mfg Date + IPMIFruSection: Board + PartNumber: + IPMIFruProperty: Part Number + IPMIFruSection: Board + Manufacturer: + IPMIFruProperty: Manufacturer + IPMIFruSection: Board + SerialNumber: + IPMIFruProperty: Serial Number + IPMIFruSection: Board + xyz.openbmc_project.Inventory.Item: + PrettyName: + IPMIFruProperty: Name + IPMIFruSection: Board + Value: False +3: + /system/chassis/motherboard: + entityID: 7 + entityInstance: 1 + interfaces: + xyz.openbmc_project.Inventory.Decorator.Asset: + BuildDate: + IPMIFruProperty: Mfg Date + IPMIFruSection: Board + PartNumber: + IPMIFruProperty: Part Number + IPMIFruSection: Board + Manufacturer: + IPMIFruProperty: Manufacturer + IPMIFruSection: Board + SerialNumber: + IPMIFruProperty: Serial Number + IPMIFruSection: Board + xyz.openbmc_project.Inventory.Item: + PrettyName: + IPMIFruProperty: Name + IPMIFruSection: Board + /system: + entityID: 7 + entityInstance: 1 + interfaces: + xyz.openbmc_project.Inventory.Decorator.Asset: + SerialNumber: + IPMIFruProperty: Serial Number + IPMIFruSection: Chassis + Model: + IPMIFruProperty: Part Number + IPMIFruSection: Chassis + + +4: + /system/chassis/motherboard/dimm0: + entityID: 32 + entityInstance: 1 + interfaces: + xyz.openbmc_project.Inventory.Item: + PrettyName: + IPMIFruProperty: Name + IPMIFruSection: Product + xyz.openbmc_project.Inventory.Decorator.Asset: + SerialNumber: + IPMIFruProperty: Serial Number + IPMIFruSection: Product + Manufacturer: + IPMIFruProperty: Manufacturer + IPMIFruSection: Product + PartNumber: + IPMIFruProperty: Part Number + IPMIFruSection: Product + BuildDate: + IPMIFruProperty: Mfg Date + IPMIFruSection: Product + Model: + IPMIFruProperty: Model Number + IPMIFruSection: Product + xyz.openbmc_project.Inventory.Decorator.Revision: + Version: + IPMIFruProperty: Version +5: + /system/chassis/motherboard/dimm1: + entityID: 32 + entityInstance: 2 + interfaces: + xyz.openbmc_project.Inventory.Item: + PrettyName: + IPMIFruProperty: Name + IPMIFruSection: Product + xyz.openbmc_project.Inventory.Decorator.Asset: + SerialNumber: + IPMIFruProperty: Serial Number + IPMIFruSection: Product + Manufacturer: + IPMIFruProperty: Manufacturer + IPMIFruSection: Product + PartNumber: + IPMIFruProperty: Part Number + IPMIFruSection: Product + BuildDate: + IPMIFruProperty: Mfg Date + IPMIFruSection: Product + Model: + IPMIFruProperty: Model Number + IPMIFruSection: Product + xyz.openbmc_project.Inventory.Decorator.Revision: + Version: + IPMIFruProperty: Version +6: + /system/chassis/motherboard/dimm2: + entityID: 32 + entityInstance: 3 + interfaces: + xyz.openbmc_project.Inventory.Item: + PrettyName: + IPMIFruProperty: Name + IPMIFruSection: Product + xyz.openbmc_project.Inventory.Decorator.Asset: + SerialNumber: + IPMIFruProperty: Serial Number + IPMIFruSection: Product + Manufacturer: + IPMIFruProperty: Manufacturer + IPMIFruSection: Product + PartNumber: + IPMIFruProperty: Part Number + IPMIFruSection: Product + BuildDate: + IPMIFruProperty: Mfg Date + IPMIFruSection: Product + Model: + IPMIFruProperty: Model Number + IPMIFruSection: Product + xyz.openbmc_project.Inventory.Decorator.Revision: + Version: + IPMIFruProperty: Version +7: + /system/chassis/motherboard/dimm3: + entityID: 32 + entityInstance: 4 + interfaces: + xyz.openbmc_project.Inventory.Item: + PrettyName: + IPMIFruProperty: Name + IPMIFruSection: Product + xyz.openbmc_project.Inventory.Decorator.Asset: + SerialNumber: + IPMIFruProperty: Serial Number + IPMIFruSection: Product + Manufacturer: + IPMIFruProperty: Manufacturer + IPMIFruSection: Product + PartNumber: + IPMIFruProperty: Part Number + IPMIFruSection: Product + BuildDate: + IPMIFruProperty: Mfg Date + IPMIFruSection: Product + Model: + IPMIFruProperty: Model Number + IPMIFruSection: Product + xyz.openbmc_project.Inventory.Decorator.Revision: + Version: + IPMIFruProperty: Version +8: + /system/chassis/motherboard/dimm4: + entityID: 32 + entityInstance: 5 + interfaces: + xyz.openbmc_project.Inventory.Item: + PrettyName: + IPMIFruProperty: Name + IPMIFruSection: Product + xyz.openbmc_project.Inventory.Decorator.Asset: + SerialNumber: + IPMIFruProperty: Serial Number + IPMIFruSection: Product + Manufacturer: + IPMIFruProperty: Manufacturer + IPMIFruSection: Product + PartNumber: + IPMIFruProperty: Part Number + IPMIFruSection: Product + BuildDate: + IPMIFruProperty: Mfg Date + IPMIFruSection: Product + Model: + IPMIFruProperty: Model Number + IPMIFruSection: Product + xyz.openbmc_project.Inventory.Decorator.Revision: + Version: + IPMIFruProperty: Version +9: + /system/chassis/motherboard/dimm5: + entityID: 32 + entityInstance: 6 + interfaces: + xyz.openbmc_project.Inventory.Item: + PrettyName: + IPMIFruProperty: Name + IPMIFruSection: Product + xyz.openbmc_project.Inventory.Decorator.Asset: + SerialNumber: + IPMIFruProperty: Serial Number + IPMIFruSection: Product + Manufacturer: + IPMIFruProperty: Manufacturer + IPMIFruSection: Product + PartNumber: + IPMIFruProperty: Part Number + IPMIFruSection: Product + BuildDate: + IPMIFruProperty: Mfg Date + IPMIFruSection: Product + Model: + IPMIFruProperty: Model Number + IPMIFruSection: Product + xyz.openbmc_project.Inventory.Decorator.Revision: + Version: + IPMIFruProperty: Version +10: + /system/chassis/motherboard/dimm6: + entityID: 32 + entityInstance: 7 + interfaces: + xyz.openbmc_project.Inventory.Item: + PrettyName: + IPMIFruProperty: Name + IPMIFruSection: Product + xyz.openbmc_project.Inventory.Decorator.Asset: + SerialNumber: + IPMIFruProperty: Serial Number + IPMIFruSection: Product + Manufacturer: + IPMIFruProperty: Manufacturer + IPMIFruSection: Product + PartNumber: + IPMIFruProperty: Part Number + IPMIFruSection: Product + BuildDate: + IPMIFruProperty: Mfg Date + IPMIFruSection: Product + Model: + IPMIFruProperty: Model Number + IPMIFruSection: Product + xyz.openbmc_project.Inventory.Decorator.Revision: + Version: + IPMIFruProperty: Version +11: + /system/chassis/motherboard/dimm7: + entityID: 32 + entityInstance: 8 + interfaces: + xyz.openbmc_project.Inventory.Item: + PrettyName: + IPMIFruProperty: Name + IPMIFruSection: Product + xyz.openbmc_project.Inventory.Decorator.Asset: + SerialNumber: + IPMIFruProperty: Serial Number + IPMIFruSection: Product + Manufacturer: + IPMIFruProperty: Manufacturer + IPMIFruSection: Product + PartNumber: + IPMIFruProperty: Part Number + IPMIFruSection: Product + BuildDate: + IPMIFruProperty: Mfg Date + IPMIFruSection: Product + Model: + IPMIFruProperty: Model Number + IPMIFruSection: Product + xyz.openbmc_project.Inventory.Decorator.Revision: + Version: + IPMIFruProperty: Version +12: + /system/chassis/motherboard/dimm8: + entityID: 32 + entityInstance: 9 + interfaces: + xyz.openbmc_project.Inventory.Item: + PrettyName: + IPMIFruProperty: Name + IPMIFruSection: Product + xyz.openbmc_project.Inventory.Decorator.Asset: + SerialNumber: + IPMIFruProperty: Serial Number + IPMIFruSection: Product + Manufacturer: + IPMIFruProperty: Manufacturer + IPMIFruSection: Product + PartNumber: + IPMIFruProperty: Part Number + IPMIFruSection: Product + BuildDate: + IPMIFruProperty: Mfg Date + IPMIFruSection: Product + Model: + IPMIFruProperty: Model Number + IPMIFruSection: Product + xyz.openbmc_project.Inventory.Decorator.Revision: + Version: + IPMIFruProperty: Version +13: + /system/chassis/motherboard/dimm9: + entityID: 32 + entityInstance: 10 + interfaces: + xyz.openbmc_project.Inventory.Item: + PrettyName: + IPMIFruProperty: Name + IPMIFruSection: Product + xyz.openbmc_project.Inventory.Decorator.Asset: + SerialNumber: + IPMIFruProperty: Serial Number + IPMIFruSection: Product + Manufacturer: + IPMIFruProperty: Manufacturer + IPMIFruSection: Product + PartNumber: + IPMIFruProperty: Part Number + IPMIFruSection: Product + BuildDate: + IPMIFruProperty: Mfg Date + IPMIFruSection: Product + Model: + IPMIFruProperty: Model Number + IPMIFruSection: Product + xyz.openbmc_project.Inventory.Decorator.Revision: + Version: + IPMIFruProperty: Version +14: + /system/chassis/motherboard/dimm10: + entityID: 32 + entityInstance: 11 + interfaces: + xyz.openbmc_project.Inventory.Item: + PrettyName: + IPMIFruProperty: Name + IPMIFruSection: Product + xyz.openbmc_project.Inventory.Decorator.Asset: + SerialNumber: + IPMIFruProperty: Serial Number + IPMIFruSection: Product + Manufacturer: + IPMIFruProperty: Manufacturer + IPMIFruSection: Product + PartNumber: + IPMIFruProperty: Part Number + IPMIFruSection: Product + BuildDate: + IPMIFruProperty: Mfg Date + IPMIFruSection: Product + Model: + IPMIFruProperty: Model Number + IPMIFruSection: Product + xyz.openbmc_project.Inventory.Decorator.Revision: + Version: + IPMIFruProperty: Version +15: + /system/chassis/motherboard/dimm11: + entityID: 32 + entityInstance: 12 + interfaces: + xyz.openbmc_project.Inventory.Item: + PrettyName: + IPMIFruProperty: Name + IPMIFruSection: Product + xyz.openbmc_project.Inventory.Decorator.Asset: + SerialNumber: + IPMIFruProperty: Serial Number + IPMIFruSection: Product + Manufacturer: + IPMIFruProperty: Manufacturer + IPMIFruSection: Product + PartNumber: + IPMIFruProperty: Part Number + IPMIFruSection: Product + BuildDate: + IPMIFruProperty: Mfg Date + IPMIFruSection: Product + Model: + IPMIFruProperty: Model Number + IPMIFruSection: Product + xyz.openbmc_project.Inventory.Decorator.Revision: + Version: + IPMIFruProperty: Version +16: + /system/chassis/motherboard/dimm12: + entityID: 32 + entityInstance: 13 + interfaces: + xyz.openbmc_project.Inventory.Item: + PrettyName: + IPMIFruProperty: Name + IPMIFruSection: Product + xyz.openbmc_project.Inventory.Decorator.Asset: + SerialNumber: + IPMIFruProperty: Serial Number + IPMIFruSection: Product + Manufacturer: + IPMIFruProperty: Manufacturer + IPMIFruSection: Product + PartNumber: + IPMIFruProperty: Part Number + IPMIFruSection: Product + BuildDate: + IPMIFruProperty: Mfg Date + IPMIFruSection: Product + Model: + IPMIFruProperty: Model Number + IPMIFruSection: Product + xyz.openbmc_project.Inventory.Decorator.Revision: + Version: + IPMIFruProperty: Version +17: + /system/chassis/motherboard/dimm13: + entityID: 32 + entityInstance: 14 + interfaces: + xyz.openbmc_project.Inventory.Item: + PrettyName: + IPMIFruProperty: Name + IPMIFruSection: Product + xyz.openbmc_project.Inventory.Decorator.Asset: + SerialNumber: + IPMIFruProperty: Serial Number + IPMIFruSection: Product + Manufacturer: + IPMIFruProperty: Manufacturer + IPMIFruSection: Product + PartNumber: + IPMIFruProperty: Part Number + IPMIFruSection: Product + BuildDate: + IPMIFruProperty: Mfg Date + IPMIFruSection: Product + Model: + IPMIFruProperty: Model Number + IPMIFruSection: Product + xyz.openbmc_project.Inventory.Decorator.Revision: + Version: + IPMIFruProperty: Version +18: + /system/chassis/motherboard/dimm14: + entityID: 32 + entityInstance: 15 + interfaces: + xyz.openbmc_project.Inventory.Item: + PrettyName: + IPMIFruProperty: Name + IPMIFruSection: Product + xyz.openbmc_project.Inventory.Decorator.Asset: + SerialNumber: + IPMIFruProperty: Serial Number + IPMIFruSection: Product + Manufacturer: + IPMIFruProperty: Manufacturer + IPMIFruSection: Product + PartNumber: + IPMIFruProperty: Part Number + IPMIFruSection: Product + BuildDate: + IPMIFruProperty: Mfg Date + IPMIFruSection: Product + Model: + IPMIFruProperty: Model Number + IPMIFruSection: Product + xyz.openbmc_project.Inventory.Decorator.Revision: + Version: + IPMIFruProperty: Version +19: + /system/chassis/motherboard/dimm15: + entityID: 32 + entityInstance: 16 + interfaces: + xyz.openbmc_project.Inventory.Item: + PrettyName: + IPMIFruProperty: Name + IPMIFruSection: Product + xyz.openbmc_project.Inventory.Decorator.Asset: + SerialNumber: + IPMIFruProperty: Serial Number + IPMIFruSection: Product + Manufacturer: + IPMIFruProperty: Manufacturer + IPMIFruSection: Product + PartNumber: + IPMIFruProperty: Part Number + IPMIFruSection: Product + BuildDate: + IPMIFruProperty: Mfg Date + IPMIFruSection: Product + Model: + IPMIFruProperty: Model Number + IPMIFruSection: Product + xyz.openbmc_project.Inventory.Decorator.Revision: + Version: + IPMIFruProperty: Version diff --git a/meta-rcs/meta-blackbird/recipes-phosphor/ipmi/files/sel-config.yaml b/meta-rcs/meta-blackbird/recipes-phosphor/ipmi/files/sel-config.yaml new file mode 100755 index 000000000..9a5189a6e --- /dev/null +++ b/meta-rcs/meta-blackbird/recipes-phosphor/ipmi/files/sel-config.yaml @@ -0,0 +1,340 @@ +/xyz/openbmc_project/inventory/system/chassis/motherboard/dimm0: + sensorID: 0x0B + sensorType: 0x0C + eventReadingType: 0x6F + offset: 0x04 +/xyz/openbmc_project/inventory/system/chassis/motherboard/dimm1: + sensorID: 0x0C + sensorType: 0x0C + eventReadingType: 0x6F + offset: 0x04 +/xyz/openbmc_project/inventory/system/chassis/motherboard/dimm10: + sensorID: 0x15 + sensorType: 0x0C + eventReadingType: 0x6F + offset: 0x04 +/xyz/openbmc_project/inventory/system/chassis/motherboard/dimm11: + sensorID: 0x16 + sensorType: 0x0C + eventReadingType: 0x6F + offset: 0x04 +/xyz/openbmc_project/inventory/system/chassis/motherboard/dimm12: + sensorID: 0x17 + sensorType: 0x0C + eventReadingType: 0x6F + offset: 0x04 +/xyz/openbmc_project/inventory/system/chassis/motherboard/dimm13: + sensorID: 0x18 + sensorType: 0x0C + eventReadingType: 0x6F + offset: 0x04 +/xyz/openbmc_project/inventory/system/chassis/motherboard/dimm14: + sensorID: 0x19 + sensorType: 0x0C + eventReadingType: 0x6F + offset: 0x04 +/xyz/openbmc_project/inventory/system/chassis/motherboard/dimm15: + sensorID: 0x1A + sensorType: 0x0C + eventReadingType: 0x6F + offset: 0x04 +/xyz/openbmc_project/inventory/system/chassis/motherboard/dimm2: + sensorID: 0x0D + sensorType: 0x0C + eventReadingType: 0x6F + offset: 0x04 +/xyz/openbmc_project/inventory/system/chassis/motherboard/dimm3: + sensorID: 0x0E + sensorType: 0x0C + eventReadingType: 0x6F + offset: 0x04 +/xyz/openbmc_project/inventory/system/chassis/motherboard/dimm4: + sensorID: 0x0F + sensorType: 0x0C + eventReadingType: 0x6F + offset: 0x04 +/xyz/openbmc_project/inventory/system/chassis/motherboard/dimm5: + sensorID: 0x10 + sensorType: 0x0C + eventReadingType: 0x6F + offset: 0x04 +/xyz/openbmc_project/inventory/system/chassis/motherboard/dimm6: + sensorID: 0x11 + sensorType: 0x0C + eventReadingType: 0x6F + offset: 0x04 +/xyz/openbmc_project/inventory/system/chassis/motherboard/dimm7: + sensorID: 0x12 + sensorType: 0x0C + eventReadingType: 0x6F + offset: 0x04 +/xyz/openbmc_project/inventory/system/chassis/motherboard/dimm8: + sensorID: 0x13 + sensorType: 0x0C + eventReadingType: 0x6F + offset: 0x04 +/xyz/openbmc_project/inventory/system/chassis/motherboard/dimm9: + sensorID: 0x14 + sensorType: 0x0C + eventReadingType: 0x6F + offset: 0x04 +/xyz/openbmc_project/inventory/system/chassis/motherboard/cpu0: + sensorID: 0x08 + sensorType: 0x07 + eventReadingType: 0x6F + offset: 0x08 +/xyz/openbmc_project/inventory/system/chassis/motherboard/cpu0/core0: + sensorID: 0x2B + sensorType: 0x07 + eventReadingType: 0x6F + offset: 0x08 +/xyz/openbmc_project/inventory/system/chassis/motherboard/cpu0/core1: + sensorID: 0x2C + sensorType: 0x07 + eventReadingType: 0x6F + offset: 0x08 +/xyz/openbmc_project/inventory/system/chassis/motherboard/cpu0/core2: + sensorID: 0x2D + sensorType: 0x07 + eventReadingType: 0x6F + offset: 0x08 +/xyz/openbmc_project/inventory/system/chassis/motherboard/cpu0/core3: + sensorID: 0x2E + sensorType: 0x07 + eventReadingType: 0x6F + offset: 0x08 +/xyz/openbmc_project/inventory/system/chassis/motherboard/cpu0/core4: + sensorID: 0x2F + sensorType: 0x07 + eventReadingType: 0x6F + offset: 0x08 +/xyz/openbmc_project/inventory/system/chassis/motherboard/cpu0/core5: + sensorID: 0x30 + sensorType: 0x07 + eventReadingType: 0x6F + offset: 0x08 +/xyz/openbmc_project/inventory/system/chassis/motherboard/cpu0/core6: + sensorID: 0x31 + sensorType: 0x07 + eventReadingType: 0x6F + offset: 0x08 +/xyz/openbmc_project/inventory/system/chassis/motherboard/cpu0/core7: + sensorID: 0x32 + sensorType: 0x07 + eventReadingType: 0x6F + offset: 0x08 +/xyz/openbmc_project/inventory/system/chassis/motherboard/cpu0/core8: + sensorID: 0x33 + sensorType: 0x07 + eventReadingType: 0x6F + offset: 0x08 +/xyz/openbmc_project/inventory/system/chassis/motherboard/cpu0/core9: + sensorID: 0x34 + sensorType: 0x07 + eventReadingType: 0x6F + offset: 0x08 +/xyz/openbmc_project/inventory/system/chassis/motherboard/cpu0/core10: + sensorID: 0x35 + sensorType: 0x07 + eventReadingType: 0x6F + offset: 0x08 +/xyz/openbmc_project/inventory/system/chassis/motherboard/cpu0/core11: + sensorID: 0x36 + sensorType: 0x07 + eventReadingType: 0x6F + offset: 0x08 +/xyz/openbmc_project/inventory/system/chassis/motherboard/cpu0/core12: + sensorID: 0x37 + sensorType: 0x07 + eventReadingType: 0x6F + offset: 0x08 +/xyz/openbmc_project/inventory/system/chassis/motherboard/cpu0/core13: + sensorID: 0x38 + sensorType: 0x07 + eventReadingType: 0x6F + offset: 0x08 +/xyz/openbmc_project/inventory/system/chassis/motherboard/cpu0/core14: + sensorID: 0x39 + sensorType: 0x07 + eventReadingType: 0x6F + offset: 0x08 +/xyz/openbmc_project/inventory/system/chassis/motherboard/cpu0/core15: + sensorID: 0x3A + sensorType: 0x07 + eventReadingType: 0x6F + offset: 0x08 +/xyz/openbmc_project/inventory/system/chassis/motherboard/cpu0/core16: + sensorID: 0x3B + sensorType: 0x07 + eventReadingType: 0x6F + offset: 0x08 +/xyz/openbmc_project/inventory/system/chassis/motherboard/cpu0/core17: + sensorID: 0x3C + sensorType: 0x07 + eventReadingType: 0x6F + offset: 0x08 +/xyz/openbmc_project/inventory/system/chassis/motherboard/cpu0/core18: + sensorID: 0x3D + sensorType: 0x07 + eventReadingType: 0x6F + offset: 0x08 +/xyz/openbmc_project/inventory/system/chassis/motherboard/cpu0/core19: + sensorID: 0x3E + sensorType: 0x07 + eventReadingType: 0x6F + offset: 0x08 +/xyz/openbmc_project/inventory/system/chassis/motherboard/cpu0/core20: + sensorID: 0x3F + sensorType: 0x07 + eventReadingType: 0x6F + offset: 0x08 +/xyz/openbmc_project/inventory/system/chassis/motherboard/cpu0/core21: + sensorID: 0x40 + sensorType: 0x07 + eventReadingType: 0x6F + offset: 0x08 +/xyz/openbmc_project/inventory/system/chassis/motherboard/cpu0/core22: + sensorID: 0x41 + sensorType: 0x07 + eventReadingType: 0x6F + offset: 0x08 +/xyz/openbmc_project/inventory/system/chassis/motherboard/cpu0/core23: + sensorID: 0x42 + sensorType: 0x07 + eventReadingType: 0x6F + offset: 0x08 +/xyz/openbmc_project/inventory/system/chassis/motherboard/cpu1: + sensorID: 0x09 + sensorType: 0x07 + eventReadingType: 0x6F + offset: 0x08 +/xyz/openbmc_project/inventory/system/chassis/motherboard/cpu1/core0: + sensorID: 0x43 + sensorType: 0x07 + eventReadingType: 0x6F + offset: 0x08 +/xyz/openbmc_project/inventory/system/chassis/motherboard/cpu1/core1: + sensorID: 0x44 + sensorType: 0x07 + eventReadingType: 0x6F + offset: 0x08 +/xyz/openbmc_project/inventory/system/chassis/motherboard/cpu1/core2: + sensorID: 0x45 + sensorType: 0x07 + eventReadingType: 0x6F + offset: 0x08 +/xyz/openbmc_project/inventory/system/chassis/motherboard/cpu1/core3: + sensorID: 0x46 + sensorType: 0x07 + eventReadingType: 0x6F + offset: 0x08 +/xyz/openbmc_project/inventory/system/chassis/motherboard/cpu1/core4: + sensorID: 0x47 + sensorType: 0x07 + eventReadingType: 0x6F + offset: 0x08 +/xyz/openbmc_project/inventory/system/chassis/motherboard/cpu1/core5: + sensorID: 0x48 + sensorType: 0x07 + eventReadingType: 0x6F + offset: 0x08 +/xyz/openbmc_project/inventory/system/chassis/motherboard/cpu1/core6: + sensorID: 0x49 + sensorType: 0x07 + eventReadingType: 0x6F + offset: 0x08 +/xyz/openbmc_project/inventory/system/chassis/motherboard/cpu1/core7: + sensorID: 0x4A + sensorType: 0x07 + eventReadingType: 0x6F + offset: 0x08 +/xyz/openbmc_project/inventory/system/chassis/motherboard/cpu1/core8: + sensorID: 0x4B + sensorType: 0x07 + eventReadingType: 0x6F + offset: 0x08 +/xyz/openbmc_project/inventory/system/chassis/motherboard/cpu1/core9: + sensorID: 0x4C + sensorType: 0x07 + eventReadingType: 0x6F + offset: 0x08 +/xyz/openbmc_project/inventory/system/chassis/motherboard/cpu1/core10: + sensorID: 0x4D + sensorType: 0x07 + eventReadingType: 0x6F + offset: 0x08 +/xyz/openbmc_project/inventory/system/chassis/motherboard/cpu1/core11: + sensorID: 0x4E + sensorType: 0x07 + eventReadingType: 0x6F + offset: 0x08 +/xyz/openbmc_project/inventory/system/chassis/motherboard/cpu1/core12: + sensorID: 0x4F + sensorType: 0x07 + eventReadingType: 0x6F + offset: 0x08 +/xyz/openbmc_project/inventory/system/chassis/motherboard/cpu1/core13: + sensorID: 0x50 + sensorType: 0x07 + eventReadingType: 0x6F + offset: 0x08 +/xyz/openbmc_project/inventory/system/chassis/motherboard/cpu1/core14: + sensorID: 0x51 + sensorType: 0x07 + eventReadingType: 0x6F + offset: 0x08 +/xyz/openbmc_project/inventory/system/chassis/motherboard/cpu1/core15: + sensorID: 0x52 + sensorType: 0x07 + eventReadingType: 0x6F + offset: 0x08 +/xyz/openbmc_project/inventory/system/chassis/motherboard/cpu1/core16: + sensorID: 0x53 + sensorType: 0x07 + eventReadingType: 0x6F + offset: 0x08 +/xyz/openbmc_project/inventory/system/chassis/motherboard/cpu1/core17: + sensorID: 0x54 + sensorType: 0x07 + eventReadingType: 0x6F + offset: 0x08 +/xyz/openbmc_project/inventory/system/chassis/motherboard/cpu1/core18: + sensorID: 0x55 + sensorType: 0x07 + eventReadingType: 0x6F + offset: 0x08 +/xyz/openbmc_project/inventory/system/chassis/motherboard/cpu1/core19: + sensorID: 0x56 + sensorType: 0x07 + eventReadingType: 0x6F + offset: 0x08 +/xyz/openbmc_project/inventory/system/chassis/motherboard/cpu1/core20: + sensorID: 0x57 + sensorType: 0x07 + eventReadingType: 0x6F + offset: 0x08 +/xyz/openbmc_project/inventory/system/chassis/motherboard/cpu1/core21: + sensorID: 0x58 + sensorType: 0x07 + eventReadingType: 0x6F + offset: 0x08 +/xyz/openbmc_project/inventory/system/chassis/motherboard/cpu1/core22: + sensorID: 0x59 + sensorType: 0x07 + eventReadingType: 0x6F + offset: 0x08 +/xyz/openbmc_project/inventory/system/chassis/motherboard/cpu1/core23: + sensorID: 0x5A + sensorType: 0x07 + eventReadingType: 0x6F + offset: 0x08 +/xyz/openbmc_project/inventory/system/chassis/motherboard: + sensorID: 0x8C + sensorType: 0xC7 + eventReadingType: 0x03 + offset: 0x00 +/xyz/openbmc_project/inventory/system: + sensorID: 0x90 + sensorType: 0x12 + eventReadingType: 0x6F + offset: 0x02 diff --git a/meta-rcs/meta-blackbird/recipes-phosphor/ipmi/phosphor-ipmi-config.bbappend b/meta-rcs/meta-blackbird/recipes-phosphor/ipmi/phosphor-ipmi-config.bbappend new file mode 100644 index 000000000..05a95346f --- /dev/null +++ b/meta-rcs/meta-blackbird/recipes-phosphor/ipmi/phosphor-ipmi-config.bbappend @@ -0,0 +1,45 @@ +FILESEXTRAPATHS_prepend := "${THISDIR}/${PN}:" + +# Calculate the auxiliary firmware revision to be updated in the dev_id.json +# file. It is calculated from the VERSION_ID field which currently has two +# formats. The revision field is 4 bytes, the first two bytes represent the +# count of commits from the tagging and next two bytes represent the version. +# Both fields are represented in BCD encoded format, so 9999 is the maximum +# value both fields can take. With the format "v2.1-216-ga78ace8", Petitboot +# would display the firmware revision as "Firmware version: 2.01.02160000", +# "0216" is count and the revision is "0000". With the format +# "ibm-v2.0-10-r41-0-gd0c319e" Petitboot would display the firmware revision +# as "Firmware version: 2.00.00100041", "0010" is count and the revision +# is "0041". +inherit image_version + +unset do_patch[noexec] +do_patch[depends] = "os-release:do_populate_sysroot" + +python do_patch() { + import json + import re + from shutil import copyfile + version_id = do_get_version(d) + + # count from the commit version + count = re.findall("-(\d{1,4})-", version_id) + + #release = re.findall("-r(\d{1,4})", version_id) + #if release: + # auxVer = count[0] + "{0:0>4}".format(release[0]) + #else: + # auxVer = count[0] + "0000" + auxVer = "00000" + + workdir = d.getVar('WORKDIR', True) + file = os.path.join(workdir, 'dev_id.json') + + # Update dev_id.json with the auxiliary firmware revision + with open(file, "r+") as jsonFile: + data = json.load(jsonFile) + jsonFile.seek(0) + jsonFile.truncate() + data["aux"] = int(auxVer, 16) + json.dump(data, jsonFile) +} diff --git a/meta-rcs/meta-blackbird/recipes-phosphor/ipmi/phosphor-ipmi-config/dcmi_sensors.json b/meta-rcs/meta-blackbird/recipes-phosphor/ipmi/phosphor-ipmi-config/dcmi_sensors.json new file mode 100644 index 000000000..56170bf48 --- /dev/null +++ b/meta-rcs/meta-blackbird/recipes-phosphor/ipmi/phosphor-ipmi-config/dcmi_sensors.json @@ -0,0 +1,59 @@ +{ + "inlet": [ + {"instance": 1, "dbus": "/xyz/openbmc_project/sensors/temperature/ambient", "record_id": 254} + ], + "baseboard": [ + {"instance": 1, "dbus": "/xyz/openbmc_project/sensors/temperature/pcie", "record_id": 253} + {"instance": 1, "dbus": "/xyz/openbmc_project/sensors/temperature/cpu_1_ambient", "record_id": 252} + ], + "cpu": [ + {"instance": 1, "dbus": "/xyz/openbmc_project/sensors/temperature/p0_core0_temp", "record_id": 17}, + {"instance": 2, "dbus": "/xyz/openbmc_project/sensors/temperature/p0_core1_temp", "record_id": 20}, + {"instance": 3, "dbus": "/xyz/openbmc_project/sensors/temperature/p0_core2_temp", "record_id": 23}, + {"instance": 4, "dbus": "/xyz/openbmc_project/sensors/temperature/p0_core3_temp", "record_id": 26}, + {"instance": 5, "dbus": "/xyz/openbmc_project/sensors/temperature/p0_core4_temp", "record_id": 29}, + {"instance": 6, "dbus": "/xyz/openbmc_project/sensors/temperature/p0_core5_temp", "record_id": 32}, + {"instance": 7, "dbus": "/xyz/openbmc_project/sensors/temperature/p0_core6_temp", "record_id": 35}, + {"instance": 8, "dbus": "/xyz/openbmc_project/sensors/temperature/p0_core7_temp", "record_id": 38}, + {"instance": 9, "dbus": "/xyz/openbmc_project/sensors/temperature/p0_core8_temp", "record_id": 41}, + {"instance": 10, "dbus": "/xyz/openbmc_project/sensors/temperature/p0_core9_temp", "record_id": 44}, + {"instance": 11, "dbus": "/xyz/openbmc_project/sensors/temperature/p0_core10_temp", "record_id": 47}, + {"instance": 12, "dbus": "/xyz/openbmc_project/sensors/temperature/p0_core11_temp", "record_id": 50}, + {"instance": 13, "dbus": "/xyz/openbmc_project/sensors/temperature/p0_core12_temp", "record_id": 53}, + {"instance": 14, "dbus": "/xyz/openbmc_project/sensors/temperature/p0_core13_temp", "record_id": 56}, + {"instance": 15, "dbus": "/xyz/openbmc_project/sensors/temperature/p0_core14_temp", "record_id": 59}, + {"instance": 16, "dbus": "/xyz/openbmc_project/sensors/temperature/p0_core15_temp", "record_id": 62}, + {"instance": 17, "dbus": "/xyz/openbmc_project/sensors/temperature/p0_core16_temp", "record_id": 65}, + {"instance": 18, "dbus": "/xyz/openbmc_project/sensors/temperature/p0_core17_temp", "record_id": 68}, + {"instance": 19, "dbus": "/xyz/openbmc_project/sensors/temperature/p0_core18_temp", "record_id": 71}, + {"instance": 20, "dbus": "/xyz/openbmc_project/sensors/temperature/p0_core19_temp", "record_id": 74}, + {"instance": 21, "dbus": "/xyz/openbmc_project/sensors/temperature/p0_core20_temp", "record_id": 77}, + {"instance": 22, "dbus": "/xyz/openbmc_project/sensors/temperature/p0_core21_temp", "record_id": 80}, + {"instance": 23, "dbus": "/xyz/openbmc_project/sensors/temperature/p0_core22_temp", "record_id": 83}, + {"instance": 24, "dbus": "/xyz/openbmc_project/sensors/temperature/p0_core23_temp", "record_id": 86}, + {"instance": 25, "dbus": "/xyz/openbmc_project/sensors/temperature/p1_core0_temp", "record_id": 91}, + {"instance": 26, "dbus": "/xyz/openbmc_project/sensors/temperature/p1_core1_temp", "record_id": 94}, + {"instance": 27, "dbus": "/xyz/openbmc_project/sensors/temperature/p1_core2_temp", "record_id": 97}, + {"instance": 28, "dbus": "/xyz/openbmc_project/sensors/temperature/p1_core3_temp", "record_id": 100}, + {"instance": 29, "dbus": "/xyz/openbmc_project/sensors/temperature/p1_core4_temp", "record_id": 103}, + {"instance": 30, "dbus": "/xyz/openbmc_project/sensors/temperature/p1_core5_temp", "record_id": 106}, + {"instance": 31, "dbus": "/xyz/openbmc_project/sensors/temperature/p1_core6_temp", "record_id": 109}, + {"instance": 32, "dbus": "/xyz/openbmc_project/sensors/temperature/p1_core7_temp", "record_id": 112}, + {"instance": 33, "dbus": "/xyz/openbmc_project/sensors/temperature/p1_core8_temp", "record_id": 115}, + {"instance": 34, "dbus": "/xyz/openbmc_project/sensors/temperature/p1_core9_temp", "record_id": 118}, + {"instance": 35, "dbus": "/xyz/openbmc_project/sensors/temperature/p1_core10_temp", "record_id": 121}, + {"instance": 36, "dbus": "/xyz/openbmc_project/sensors/temperature/p1_core11_temp", "record_id": 124}, + {"instance": 37, "dbus": "/xyz/openbmc_project/sensors/temperature/p1_core12_temp", "record_id": 127}, + {"instance": 38, "dbus": "/xyz/openbmc_project/sensors/temperature/p1_core13_temp", "record_id": 130}, + {"instance": 39, "dbus": "/xyz/openbmc_project/sensors/temperature/p1_core14_temp", "record_id": 133}, + {"instance": 40, "dbus": "/xyz/openbmc_project/sensors/temperature/p1_core15_temp", "record_id": 136}, + {"instance": 41, "dbus": "/xyz/openbmc_project/sensors/temperature/p1_core16_temp", "record_id": 139}, + {"instance": 42, "dbus": "/xyz/openbmc_project/sensors/temperature/p1_core17_temp", "record_id": 142}, + {"instance": 43, "dbus": "/xyz/openbmc_project/sensors/temperature/p1_core18_temp", "record_id": 145}, + {"instance": 44, "dbus": "/xyz/openbmc_project/sensors/temperature/p1_core19_temp", "record_id": 148}, + {"instance": 45, "dbus": "/xyz/openbmc_project/sensors/temperature/p1_core20_temp", "record_id": 151}, + {"instance": 46, "dbus": "/xyz/openbmc_project/sensors/temperature/p1_core21_temp", "record_id": 154}, + {"instance": 47, "dbus": "/xyz/openbmc_project/sensors/temperature/p1_core22_temp", "record_id": 157}, + {"instance": 48, "dbus": "/xyz/openbmc_project/sensors/temperature/p1_core23_temp", "record_id": 160} + ] +} diff --git a/meta-rcs/meta-blackbird/recipes-phosphor/ipmi/phosphor-ipmi-config/dev_id.json b/meta-rcs/meta-blackbird/recipes-phosphor/ipmi/phosphor-ipmi-config/dev_id.json new file mode 100644 index 000000000..f443fe134 --- /dev/null +++ b/meta-rcs/meta-blackbird/recipes-phosphor/ipmi/phosphor-ipmi-config/dev_id.json @@ -0,0 +1,2 @@ +{"id": 0, "revision": 128, "addn_dev_support": 141, + "manuf_id": 51974, "prod_id": 1, "aux": 0} diff --git a/meta-rcs/meta-blackbird/recipes-phosphor/ipmi/phosphor-ipmi-config/power_reading.json b/meta-rcs/meta-blackbird/recipes-phosphor/ipmi/phosphor-ipmi-config/power_reading.json new file mode 100644 index 000000000..97e8f32b5 --- /dev/null +++ b/meta-rcs/meta-blackbird/recipes-phosphor/ipmi/phosphor-ipmi-config/power_reading.json @@ -0,0 +1,3 @@ +{ + "path": "/xyz/openbmc_project/sensors/power/total_power" +} diff --git a/meta-rcs/meta-blackbird/recipes-phosphor/ipmi/phosphor-ipmi-fru-properties%.bbappend b/meta-rcs/meta-blackbird/recipes-phosphor/ipmi/phosphor-ipmi-fru-properties%.bbappend new file mode 100644 index 000000000..72d991c7e --- /dev/null +++ b/meta-rcs/meta-blackbird/recipes-phosphor/ipmi/phosphor-ipmi-fru-properties%.bbappend @@ -0,0 +1 @@ +FILESEXTRAPATHS_prepend := "${THISDIR}/${PN}:" diff --git a/meta-rcs/meta-blackbird/recipes-phosphor/ipmi/phosphor-ipmi-fru-properties%/extra-properties.yaml b/meta-rcs/meta-blackbird/recipes-phosphor/ipmi/phosphor-ipmi-fru-properties%/extra-properties.yaml new file mode 100644 index 000000000..ae626ed05 --- /dev/null +++ b/meta-rcs/meta-blackbird/recipes-phosphor/ipmi/phosphor-ipmi-fru-properties%/extra-properties.yaml @@ -0,0 +1,159 @@ +/system/chassis/motherboard/cpu0: + xyz.openbmc_project.Inventory.Decorator.Replaceable: + FieldReplaceable: 'true' + xyz.openbmc_project.Inventory.Decorator.Cacheable: + Cached: 'true' + xyz.openbmc_project.Inventory.Item: + Present: 'true' + +/system/chassis/motherboard/cpu1: + xyz.openbmc_project.Inventory.Decorator.Replaceable: + FieldReplaceable: 'true' + xyz.openbmc_project.Inventory.Decorator.Cacheable: + Cached: 'true' + xyz.openbmc_project.Inventory.Item: + Present: 'true' + +/system/chassis/motherboard: + xyz.openbmc_project.Inventory.Decorator.Replaceable: + FieldReplaceable: 'true' + xyz.openbmc_project.Inventory.Decorator.Cacheable: + Cached: 'true' + xyz.openbmc_project.Inventory.Item: + Present: 'true' + +/system: + xyz.openbmc_project.Inventory.Decorator.Replaceable: + FieldReplaceable: 'true' + xyz.openbmc_project.Inventory.Decorator.Cacheable: + Cached: 'true' + xyz.openbmc_project.Inventory.Item: + Present: 'true' + +/system/chassis/motherboard/dimm0: + xyz.openbmc_project.Inventory.Decorator.Replaceable: + FieldReplaceable: 'true' + xyz.openbmc_project.Inventory.Decorator.Cacheable: + Cached: 'true' + xyz.openbmc_project.Inventory.Item: + Present: 'true' + +/system/chassis/motherboard/dimm1: + xyz.openbmc_project.Inventory.Decorator.Replaceable: + FieldReplaceable: 'true' + xyz.openbmc_project.Inventory.Decorator.Cacheable: + Cached: 'true' + xyz.openbmc_project.Inventory.Item: + Present: 'true' + +/system/chassis/motherboard/dimm2: + xyz.openbmc_project.Inventory.Decorator.Replaceable: + FieldReplaceable: 'true' + xyz.openbmc_project.Inventory.Decorator.Cacheable: + Cached: 'true' + xyz.openbmc_project.Inventory.Item: + Present: 'true' + +/system/chassis/motherboard/dimm3: + xyz.openbmc_project.Inventory.Decorator.Replaceable: + FieldReplaceable: 'true' + xyz.openbmc_project.Inventory.Decorator.Cacheable: + Cached: 'true' + xyz.openbmc_project.Inventory.Item: + Present: 'true' + +/system/chassis/motherboard/dimm4: + xyz.openbmc_project.Inventory.Decorator.Replaceable: + FieldReplaceable: 'true' + xyz.openbmc_project.Inventory.Decorator.Cacheable: + Cached: 'true' + xyz.openbmc_project.Inventory.Item: + Present: 'true' + +/system/chassis/motherboard/dimm5: + xyz.openbmc_project.Inventory.Decorator.Replaceable: + FieldReplaceable: 'true' + xyz.openbmc_project.Inventory.Decorator.Cacheable: + Cached: 'true' + xyz.openbmc_project.Inventory.Item: + Present: 'true' + +/system/chassis/motherboard/dimm6: + xyz.openbmc_project.Inventory.Decorator.Replaceable: + FieldReplaceable: 'true' + xyz.openbmc_project.Inventory.Decorator.Cacheable: + Cached: 'true' + xyz.openbmc_project.Inventory.Item: + Present: 'true' + +/system/chassis/motherboard/dimm7: + xyz.openbmc_project.Inventory.Decorator.Replaceable: + FieldReplaceable: 'true' + xyz.openbmc_project.Inventory.Decorator.Cacheable: + Cached: 'true' + xyz.openbmc_project.Inventory.Item: + Present: 'true' + +/system/chassis/motherboard/dimm8: + xyz.openbmc_project.Inventory.Decorator.Replaceable: + FieldReplaceable: 'true' + xyz.openbmc_project.Inventory.Decorator.Cacheable: + Cached: 'true' + xyz.openbmc_project.Inventory.Item: + Present: 'true' + +/system/chassis/motherboard/dimm9: + xyz.openbmc_project.Inventory.Decorator.Replaceable: + FieldReplaceable: 'true' + xyz.openbmc_project.Inventory.Decorator.Cacheable: + Cached: 'true' + xyz.openbmc_project.Inventory.Item: + Present: 'true' + +/system/chassis/motherboard/dimm10: + xyz.openbmc_project.Inventory.Decorator.Replaceable: + FieldReplaceable: 'true' + xyz.openbmc_project.Inventory.Decorator.Cacheable: + Cached: 'true' + xyz.openbmc_project.Inventory.Item: + Present: 'true' + +/system/chassis/motherboard/dimm11: + xyz.openbmc_project.Inventory.Decorator.Replaceable: + FieldReplaceable: 'true' + xyz.openbmc_project.Inventory.Decorator.Cacheable: + Cached: 'true' + xyz.openbmc_project.Inventory.Item: + Present: 'true' + +/system/chassis/motherboard/dimm12: + xyz.openbmc_project.Inventory.Decorator.Replaceable: + FieldReplaceable: 'true' + xyz.openbmc_project.Inventory.Decorator.Cacheable: + Cached: 'true' + xyz.openbmc_project.Inventory.Item: + Present: 'true' + +/system/chassis/motherboard/dimm13: + xyz.openbmc_project.Inventory.Decorator.Replaceable: + FieldReplaceable: 'true' + xyz.openbmc_project.Inventory.Decorator.Cacheable: + Cached: 'true' + xyz.openbmc_project.Inventory.Item: + Present: 'true' + +/system/chassis/motherboard/dimm14: + xyz.openbmc_project.Inventory.Decorator.Replaceable: + FieldReplaceable: 'true' + xyz.openbmc_project.Inventory.Decorator.Cacheable: + Cached: 'true' + xyz.openbmc_project.Inventory.Item: + Present: 'true' + +/system/chassis/motherboard/dimm15: + xyz.openbmc_project.Inventory.Decorator.Replaceable: + FieldReplaceable: 'true' + xyz.openbmc_project.Inventory.Decorator.Cacheable: + Cached: 'true' + xyz.openbmc_project.Inventory.Item: + Present: 'true' diff --git a/meta-rcs/meta-blackbird/recipes-phosphor/ipmi/phosphor-ipmi-fru-read-bmc-inventory%/bmc-fru-config.yaml b/meta-rcs/meta-blackbird/recipes-phosphor/ipmi/phosphor-ipmi-fru-read-bmc-inventory%/bmc-fru-config.yaml new file mode 100644 index 000000000..c020c51c1 --- /dev/null +++ b/meta-rcs/meta-blackbird/recipes-phosphor/ipmi/phosphor-ipmi-fru-read-bmc-inventory%/bmc-fru-config.yaml @@ -0,0 +1,18 @@ +50: + /system/chassis/motherboard/fan0: + xyz.openbmc_project.Inventory.Item: + PrettyName: + IPMIFruProperty: Product Name + IPMIFruSection: Product +51: + /system/chassis/motherboard/fan1: + xyz.openbmc_project.Inventory.Item: + PrettyName: + IPMIFruProperty: Product Name + IPMIFruSection: Product +52: + /system/chassis/motherboard/fan2: + xyz.openbmc_project.Inventory.Item: + PrettyName: + IPMIFruProperty: Product Name + IPMIFruSection: Product diff --git a/meta-rcs/meta-blackbird/recipes-phosphor/ipmi/phosphor-ipmi-host/channel.yaml b/meta-rcs/meta-blackbird/recipes-phosphor/ipmi/phosphor-ipmi-host/channel.yaml new file mode 100644 index 000000000..627f4965f --- /dev/null +++ b/meta-rcs/meta-blackbird/recipes-phosphor/ipmi/phosphor-ipmi-host/channel.yaml @@ -0,0 +1,4 @@ +# Channel Number (must be unique) is the key +1: + # ifName the ethernet device name (used in the dbus path) + ifName: eth0 diff --git a/meta-rcs/meta-blackbird/recipes-phosphor/ipmi/phosphor-ipmi-host/hwmon_sensors.hardcoded.yaml b/meta-rcs/meta-blackbird/recipes-phosphor/ipmi/phosphor-ipmi-host/hwmon_sensors.hardcoded.yaml new file mode 100644 index 000000000..fe6d12096 --- /dev/null +++ b/meta-rcs/meta-blackbird/recipes-phosphor/ipmi/phosphor-ipmi-host/hwmon_sensors.hardcoded.yaml @@ -0,0 +1,1078 @@ +0xa5:
+ entityID: 0x20
+ entityInstance: 1
+ sensorType: 0x01
+ path: /xyz/openbmc_project/sensors/temperature/dimm0_temp
+ sensorReadingType: 0x01
+ multiplierM: 1
+ offsetB: -127
+ bExp: 0
+ rExp: 0
+ unit: xyz.openbmc_project.Sensor.Value.Unit.DegreesC
+ scale: -3
+ serviceInterface: org.freedesktop.DBus.Properties
+ readingType: readingData
+ sensorNamePattern: nameLeaf
+ interfaces:
+ xyz.openbmc_project.Sensor.Value:
+ Value:
+ Offsets:
+ 0xFF:
+ type: int64_t
+
+0xa7:
+ entityID: 0x20
+ entityInstance: 2
+ sensorType: 0x01
+ path: /xyz/openbmc_project/sensors/temperature/dimm1_temp
+ sensorReadingType: 0x01
+ multiplierM: 1
+ offsetB: -127
+ bExp: 0
+ rExp: 0
+ unit: xyz.openbmc_project.Sensor.Value.Unit.DegreesC
+ scale: -3
+ serviceInterface: org.freedesktop.DBus.Properties
+ readingType: readingData
+ sensorNamePattern: nameLeaf
+ interfaces:
+ xyz.openbmc_project.Sensor.Value:
+ Value:
+ Offsets:
+ 0xFF:
+ type: int64_t
+
+0xa9:
+ entityID: 0x20
+ entityInstance: 3
+ sensorType: 0x01
+ path: /xyz/openbmc_project/sensors/temperature/dimm2_temp
+ sensorReadingType: 0x01
+ multiplierM: 1
+ offsetB: -127
+ bExp: 0
+ rExp: 0
+ unit: xyz.openbmc_project.Sensor.Value.Unit.DegreesC
+ scale: -3
+ serviceInterface: org.freedesktop.DBus.Properties
+ readingType: readingData
+ sensorNamePattern: nameLeaf
+ interfaces:
+ xyz.openbmc_project.Sensor.Value:
+ Value:
+ Offsets:
+ 0xFF:
+ type: int64_t
+
+0xab:
+ entityID: 0x20
+ entityInstance: 4
+ sensorType: 0x01
+ path: /xyz/openbmc_project/sensors/temperature/dimm3_temp
+ sensorReadingType: 0x01
+ multiplierM: 1
+ offsetB: -127
+ bExp: 0
+ rExp: 0
+ unit: xyz.openbmc_project.Sensor.Value.Unit.DegreesC
+ scale: -3
+ serviceInterface: org.freedesktop.DBus.Properties
+ readingType: readingData
+ sensorNamePattern: nameLeaf
+ interfaces:
+ xyz.openbmc_project.Sensor.Value:
+ Value:
+ Offsets:
+ 0xFF:
+ type: int64_t
+
+0xad:
+ entityID: 0x20
+ entityInstance: 5
+ sensorType: 0x01
+ path: /xyz/openbmc_project/sensors/temperature/dimm4_temp
+ sensorReadingType: 0x01
+ multiplierM: 1
+ offsetB: -127
+ bExp: 0
+ rExp: 0
+ unit: xyz.openbmc_project.Sensor.Value.Unit.DegreesC
+ scale: -3
+ serviceInterface: org.freedesktop.DBus.Properties
+ readingType: readingData
+ sensorNamePattern: nameLeaf
+ interfaces:
+ xyz.openbmc_project.Sensor.Value:
+ Value:
+ Offsets:
+ 0xFF:
+ type: int64_t
+
+0xaf:
+ entityID: 0x20
+ entityInstance: 6
+ sensorType: 0x01
+ path: /xyz/openbmc_project/sensors/temperature/dimm5_temp
+ sensorReadingType: 0x01
+ multiplierM: 1
+ offsetB: -127
+ bExp: 0
+ rExp: 0
+ unit: xyz.openbmc_project.Sensor.Value.Unit.DegreesC
+ scale: -3
+ serviceInterface: org.freedesktop.DBus.Properties
+ readingType: readingData
+ sensorNamePattern: nameLeaf
+ interfaces:
+ xyz.openbmc_project.Sensor.Value:
+ Value:
+ Offsets:
+ 0xFF:
+ type: int64_t
+
+0xb1:
+ entityID: 0x20
+ entityInstance: 7
+ sensorType: 0x01
+ path: /xyz/openbmc_project/sensors/temperature/dimm6_temp
+ sensorReadingType: 0x01
+ multiplierM: 1
+ offsetB: -127
+ bExp: 0
+ rExp: 0
+ unit: xyz.openbmc_project.Sensor.Value.Unit.DegreesC
+ scale: -3
+ serviceInterface: org.freedesktop.DBus.Properties
+ readingType: readingData
+ sensorNamePattern: nameLeaf
+ interfaces:
+ xyz.openbmc_project.Sensor.Value:
+ Value:
+ Offsets:
+ 0xFF:
+ type: int64_t
+
+0xb3:
+ entityID: 0x20
+ entityInstance: 8
+ sensorType: 0x01
+ path: /xyz/openbmc_project/sensors/temperature/dimm7_temp
+ sensorReadingType: 0x01
+ multiplierM: 1
+ offsetB: -127
+ bExp: 0
+ rExp: 0
+ unit: xyz.openbmc_project.Sensor.Value.Unit.DegreesC
+ scale: -3
+ serviceInterface: org.freedesktop.DBus.Properties
+ readingType: readingData
+ sensorNamePattern: nameLeaf
+ interfaces:
+ xyz.openbmc_project.Sensor.Value:
+ Value:
+ Offsets:
+ 0xFF:
+ type: int64_t
+
+0xb5:
+ entityID: 0x20
+ entityInstance: 9
+ sensorType: 0x01
+ path: /xyz/openbmc_project/sensors/temperature/dimm8_temp
+ sensorReadingType: 0x01
+ multiplierM: 1
+ offsetB: -127
+ bExp: 0
+ rExp: 0
+ unit: xyz.openbmc_project.Sensor.Value.Unit.DegreesC
+ scale: -3
+ serviceInterface: org.freedesktop.DBus.Properties
+ readingType: readingData
+ sensorNamePattern: nameLeaf
+ interfaces:
+ xyz.openbmc_project.Sensor.Value:
+ Value:
+ Offsets:
+ 0xFF:
+ type: int64_t
+
+0xb7:
+ entityID: 0x20
+ entityInstance: 10
+ sensorType: 0x01
+ path: /xyz/openbmc_project/sensors/temperature/dimm9_temp
+ sensorReadingType: 0x01
+ multiplierM: 1
+ offsetB: -127
+ bExp: 0
+ rExp: 0
+ unit: xyz.openbmc_project.Sensor.Value.Unit.DegreesC
+ scale: -3
+ serviceInterface: org.freedesktop.DBus.Properties
+ readingType: readingData
+ sensorNamePattern: nameLeaf
+ interfaces:
+ xyz.openbmc_project.Sensor.Value:
+ Value:
+ Offsets:
+ 0xFF:
+ type: int64_t
+
+0xb9:
+ entityID: 0x20
+ entityInstance: 11
+ sensorType: 0x01
+ path: /xyz/openbmc_project/sensors/temperature/dimm10_temp
+ sensorReadingType: 0x01
+ multiplierM: 1
+ offsetB: -127
+ bExp: 0
+ rExp: 0
+ unit: xyz.openbmc_project.Sensor.Value.Unit.DegreesC
+ scale: -3
+ serviceInterface: org.freedesktop.DBus.Properties
+ readingType: readingData
+ sensorNamePattern: nameLeaf
+ interfaces:
+ xyz.openbmc_project.Sensor.Value:
+ Value:
+ Offsets:
+ 0xFF:
+ type: int64_t
+
+0xbb:
+ entityID: 0x20
+ entityInstance: 12
+ sensorType: 0x01
+ path: /xyz/openbmc_project/sensors/temperature/dimm11_temp
+ sensorReadingType: 0x01
+ multiplierM: 1
+ offsetB: -127
+ bExp: 0
+ rExp: 0
+ unit: xyz.openbmc_project.Sensor.Value.Unit.DegreesC
+ scale: -3
+ serviceInterface: org.freedesktop.DBus.Properties
+ readingType: readingData
+ sensorNamePattern: nameLeaf
+ interfaces:
+ xyz.openbmc_project.Sensor.Value:
+ Value:
+ Offsets:
+ 0xFF:
+ type: int64_t
+
+0xbd:
+ entityID: 0x20
+ entityInstance: 13
+ sensorType: 0x01
+ path: /xyz/openbmc_project/sensors/temperature/dimm12_temp
+ sensorReadingType: 0x01
+ multiplierM: 1
+ offsetB: -127
+ bExp: 0
+ rExp: 0
+ unit: xyz.openbmc_project.Sensor.Value.Unit.DegreesC
+ scale: -3
+ serviceInterface: org.freedesktop.DBus.Properties
+ readingType: readingData
+ sensorNamePattern: nameLeaf
+ interfaces:
+ xyz.openbmc_project.Sensor.Value:
+ Value:
+ Offsets:
+ 0xFF:
+ type: int64_t
+
+0xbf:
+ entityID: 0x20
+ entityInstance: 14
+ sensorType: 0x01
+ path: /xyz/openbmc_project/sensors/temperature/dimm13_temp
+ sensorReadingType: 0x01
+ multiplierM: 1
+ offsetB: -127
+ bExp: 0
+ rExp: 0
+ unit: xyz.openbmc_project.Sensor.Value.Unit.DegreesC
+ scale: -3
+ serviceInterface: org.freedesktop.DBus.Properties
+ readingType: readingData
+ sensorNamePattern: nameLeaf
+ interfaces:
+ xyz.openbmc_project.Sensor.Value:
+ Value:
+ Offsets:
+ 0xFF:
+ type: int64_t
+
+0xc1:
+ entityID: 0x20
+ entityInstance: 15
+ sensorType: 0x01
+ path: /xyz/openbmc_project/sensors/temperature/dimm14_temp
+ sensorReadingType: 0x01
+ multiplierM: 1
+ offsetB: -127
+ bExp: 0
+ rExp: 0
+ unit: xyz.openbmc_project.Sensor.Value.Unit.DegreesC
+ scale: -3
+ serviceInterface: org.freedesktop.DBus.Properties
+ readingType: readingData
+ sensorNamePattern: nameLeaf
+ interfaces:
+ xyz.openbmc_project.Sensor.Value:
+ Value:
+ Offsets:
+ 0xFF:
+ type: int64_t
+
+0xc3:
+ entityID: 0x20
+ entityInstance: 16
+ sensorType: 0x01
+ path: /xyz/openbmc_project/sensors/temperature/dimm15_temp
+ sensorReadingType: 0x01
+ multiplierM: 1
+ offsetB: -127
+ bExp: 0
+ rExp: 0
+ unit: xyz.openbmc_project.Sensor.Value.Unit.DegreesC
+ scale: -3
+ serviceInterface: org.freedesktop.DBus.Properties
+ readingType: readingData
+ sensorNamePattern: nameLeaf
+ interfaces:
+ xyz.openbmc_project.Sensor.Value:
+ Value:
+ Offsets:
+ 0xFF:
+ type: int64_t
+
+0x11:
+ entityID: 0x03
+ entityInstance: 1
+ sensorType: 0x01
+ path: /xyz/openbmc_project/sensors/temperature/p0_core0_temp
+ sensorReadingType: 0x01
+ multiplierM: 1
+ offsetB: -127
+ bExp: 0
+ rExp: 0
+ unit: xyz.openbmc_project.Sensor.Value.Unit.DegreesC
+ scale: -3
+ serviceInterface: org.freedesktop.DBus.Properties
+ readingType: readingData
+ sensorNamePattern: nameLeaf
+ interfaces:
+ xyz.openbmc_project.Sensor.Value:
+ Value:
+ Offsets:
+ 0xFF:
+ type: int64_t
+
+
+0x14:
+ entityID: 0x03
+ entityInstance: 2
+ sensorType: 0x01
+ path: /xyz/openbmc_project/sensors/temperature/p0_core1_temp
+ sensorReadingType: 0x01
+ multiplierM: 1
+ offsetB: -127
+ bExp: 0
+ rExp: 0
+ unit: xyz.openbmc_project.Sensor.Value.Unit.DegreesC
+ scale: -3
+ serviceInterface: org.freedesktop.DBus.Properties
+ readingType: readingData
+ sensorNamePattern: nameLeaf
+ interfaces:
+ xyz.openbmc_project.Sensor.Value:
+ Value:
+ Offsets:
+ 0xFF:
+ type: int64_t
+
+0x17:
+ entityID: 0x03
+ entityInstance: 3
+ sensorType: 0x01
+ path: /xyz/openbmc_project/sensors/temperature/p0_core2_temp
+ sensorReadingType: 0x01
+ multiplierM: 1
+ offsetB: -127
+ bExp: 0
+ rExp: 0
+ unit: xyz.openbmc_project.Sensor.Value.Unit.DegreesC
+ scale: -3
+ serviceInterface: org.freedesktop.DBus.Properties
+ readingType: readingData
+ sensorNamePattern: nameLeaf
+ interfaces:
+ xyz.openbmc_project.Sensor.Value:
+ Value:
+ Offsets:
+ 0xFF:
+ type: int64_t
+
+0x1a:
+ entityID: 0x03
+ entityInstance: 4
+ sensorType: 0x01
+ path: /xyz/openbmc_project/sensors/temperature/p0_core3_temp
+ sensorReadingType: 0x01
+ multiplierM: 1
+ offsetB: -127
+ bExp: 0
+ rExp: 0
+ unit: xyz.openbmc_project.Sensor.Value.Unit.DegreesC
+ scale: -3
+ serviceInterface: org.freedesktop.DBus.Properties
+ readingType: readingData
+ sensorNamePattern: nameLeaf
+ interfaces:
+ xyz.openbmc_project.Sensor.Value:
+ Value:
+ Offsets:
+ 0xFF:
+ type: int64_t
+
+0x1d:
+ entityID: 0x03
+ entityInstance: 5
+ sensorType: 0x01
+ path: /xyz/openbmc_project/sensors/temperature/p0_core4_temp
+ sensorReadingType: 0x01
+ multiplierM: 1
+ offsetB: -127
+ bExp: 0
+ rExp: 0
+ unit: xyz.openbmc_project.Sensor.Value.Unit.DegreesC
+ scale: -3
+ serviceInterface: org.freedesktop.DBus.Properties
+ readingType: readingData
+ sensorNamePattern: nameLeaf
+ interfaces:
+ xyz.openbmc_project.Sensor.Value:
+ Value:
+ Offsets:
+ 0xFF:
+ type: int64_t
+
+0x20:
+ entityID: 0x03
+ entityInstance: 6
+ sensorType: 0x01
+ path: /xyz/openbmc_project/sensors/temperature/p0_core5_temp
+ sensorReadingType: 0x01
+ multiplierM: 1
+ offsetB: -127
+ bExp: 0
+ rExp: 0
+ unit: xyz.openbmc_project.Sensor.Value.Unit.DegreesC
+ scale: -3
+ serviceInterface: org.freedesktop.DBus.Properties
+ readingType: readingData
+ sensorNamePattern: nameLeaf
+ interfaces:
+ xyz.openbmc_project.Sensor.Value:
+ Value:
+ Offsets:
+ 0xFF:
+ type: int64_t
+
+0x23:
+ entityID: 0x03
+ entityInstance: 7
+ sensorType: 0x01
+ path: /xyz/openbmc_project/sensors/temperature/p0_core6_temp
+ sensorReadingType: 0x01
+ multiplierM: 1
+ offsetB: -127
+ bExp: 0
+ rExp: 0
+ unit: xyz.openbmc_project.Sensor.Value.Unit.DegreesC
+ scale: -3
+ serviceInterface: org.freedesktop.DBus.Properties
+ readingType: readingData
+ sensorNamePattern: nameLeaf
+ interfaces:
+ xyz.openbmc_project.Sensor.Value:
+ Value:
+ Offsets:
+ 0xFF:
+ type: int64_t
+
+0x26:
+ entityID: 0x03
+ entityInstance: 8
+ sensorType: 0x01
+ path: /xyz/openbmc_project/sensors/temperature/p0_core7_temp
+ sensorReadingType: 0x01
+ multiplierM: 1
+ offsetB: -127
+ bExp: 0
+ rExp: 0
+ unit: xyz.openbmc_project.Sensor.Value.Unit.DegreesC
+ scale: -3
+ serviceInterface: org.freedesktop.DBus.Properties
+ readingType: readingData
+ sensorNamePattern: nameLeaf
+ interfaces:
+ xyz.openbmc_project.Sensor.Value:
+ Value:
+ Offsets:
+ 0xFF:
+ type: int64_t
+
+0x29:
+ entityID: 0x03
+ entityInstance: 9
+ sensorType: 0x01
+ path: /xyz/openbmc_project/sensors/temperature/p0_core8_temp
+ sensorReadingType: 0x01
+ multiplierM: 1
+ offsetB: -127
+ bExp: 0
+ rExp: 0
+ unit: xyz.openbmc_project.Sensor.Value.Unit.DegreesC
+ scale: -3
+ serviceInterface: org.freedesktop.DBus.Properties
+ readingType: readingData
+ sensorNamePattern: nameLeaf
+ interfaces:
+ xyz.openbmc_project.Sensor.Value:
+ Value:
+ Offsets:
+ 0xFF:
+ type: int64_t
+
+0x2c:
+ entityID: 0x03
+ entityInstance: 10
+ sensorType: 0x01
+ path: /xyz/openbmc_project/sensors/temperature/p0_core9_temp
+ sensorReadingType: 0x01
+ multiplierM: 1
+ offsetB: -127
+ bExp: 0
+ rExp: 0
+ unit: xyz.openbmc_project.Sensor.Value.Unit.DegreesC
+ scale: -3
+ serviceInterface: org.freedesktop.DBus.Properties
+ readingType: readingData
+ sensorNamePattern: nameLeaf
+ interfaces:
+ xyz.openbmc_project.Sensor.Value:
+ Value:
+ Offsets:
+ 0xFF:
+ type: int64_t
+
+0x2f:
+ entityID: 0x03
+ entityInstance: 11
+ sensorType: 0x01
+ path: /xyz/openbmc_project/sensors/temperature/p0_core10_temp
+ sensorReadingType: 0x01
+ multiplierM: 1
+ offsetB: -127
+ bExp: 0
+ rExp: 0
+ unit: xyz.openbmc_project.Sensor.Value.Unit.DegreesC
+ scale: -3
+ serviceInterface: org.freedesktop.DBus.Properties
+ readingType: readingData
+ sensorNamePattern: nameLeaf
+ interfaces:
+ xyz.openbmc_project.Sensor.Value:
+ Value:
+ Offsets:
+ 0xFF:
+ type: int64_t
+
+0x32:
+ entityID: 0x03
+ entityInstance: 12
+ sensorType: 0x01
+ path: /xyz/openbmc_project/sensors/temperature/p0_core11_temp
+ sensorReadingType: 0x01
+ multiplierM: 1
+ offsetB: -127
+ bExp: 0
+ rExp: 0
+ unit: xyz.openbmc_project.Sensor.Value.Unit.DegreesC
+ scale: -3
+ serviceInterface: org.freedesktop.DBus.Properties
+ readingType: readingData
+ sensorNamePattern: nameLeaf
+ interfaces:
+ xyz.openbmc_project.Sensor.Value:
+ Value:
+ Offsets:
+ 0xFF:
+ type: int64_t
+
+0x35:
+ entityID: 0x03
+ entityInstance: 13
+ sensorType: 0x01
+ path: /xyz/openbmc_project/sensors/temperature/p0_core12_temp
+ sensorReadingType: 0x01
+ multiplierM: 1
+ offsetB: -127
+ bExp: 0
+ rExp: 0
+ unit: xyz.openbmc_project.Sensor.Value.Unit.DegreesC
+ scale: -3
+ serviceInterface: org.freedesktop.DBus.Properties
+ readingType: readingData
+ sensorNamePattern: nameLeaf
+ interfaces:
+ xyz.openbmc_project.Sensor.Value:
+ Value:
+ Offsets:
+ 0xFF:
+ type: int64_t
+
+0x38:
+ entityID: 0x03
+ entityInstance: 14
+ sensorType: 0x01
+ path: /xyz/openbmc_project/sensors/temperature/p0_core13_temp
+ sensorReadingType: 0x01
+ multiplierM: 1
+ offsetB: -127
+ bExp: 0
+ rExp: 0
+ unit: xyz.openbmc_project.Sensor.Value.Unit.DegreesC
+ scale: -3
+ serviceInterface: org.freedesktop.DBus.Properties
+ readingType: readingData
+ sensorNamePattern: nameLeaf
+ interfaces:
+ xyz.openbmc_project.Sensor.Value:
+ Value:
+ Offsets:
+ 0xFF:
+ type: int64_t
+
+0x3b:
+ entityID: 0x03
+ entityInstance: 15
+ sensorType: 0x01
+ path: /xyz/openbmc_project/sensors/temperature/p0_core14_temp
+ sensorReadingType: 0x01
+ multiplierM: 1
+ offsetB: -127
+ bExp: 0
+ rExp: 0
+ unit: xyz.openbmc_project.Sensor.Value.Unit.DegreesC
+ scale: -3
+ serviceInterface: org.freedesktop.DBus.Properties
+ readingType: readingData
+ sensorNamePattern: nameLeaf
+ interfaces:
+ xyz.openbmc_project.Sensor.Value:
+ Value:
+ Offsets:
+ 0xFF:
+ type: int64_t
+
+0x3e:
+ entityID: 0x03
+ entityInstance: 16
+ sensorType: 0x01
+ path: /xyz/openbmc_project/sensors/temperature/p0_core15_temp
+ sensorReadingType: 0x01
+ multiplierM: 1
+ offsetB: -127
+ bExp: 0
+ rExp: 0
+ unit: xyz.openbmc_project.Sensor.Value.Unit.DegreesC
+ scale: -3
+ serviceInterface: org.freedesktop.DBus.Properties
+ readingType: readingData
+ sensorNamePattern: nameLeaf
+ interfaces:
+ xyz.openbmc_project.Sensor.Value:
+ Value:
+ Offsets:
+ 0xFF:
+ type: int64_t
+
+0x41:
+ entityID: 0x03
+ entityInstance: 17
+ sensorType: 0x01
+ path: /xyz/openbmc_project/sensors/temperature/p0_core16_temp
+ sensorReadingType: 0x01
+ multiplierM: 1
+ offsetB: -127
+ bExp: 0
+ rExp: 0
+ unit: xyz.openbmc_project.Sensor.Value.Unit.DegreesC
+ scale: -3
+ serviceInterface: org.freedesktop.DBus.Properties
+ readingType: readingData
+ sensorNamePattern: nameLeaf
+ interfaces:
+ xyz.openbmc_project.Sensor.Value:
+ Value:
+ Offsets:
+ 0xFF:
+ type: int64_t
+
+0x44:
+ entityID: 0x03
+ entityInstance: 18
+ sensorType: 0x01
+ path: /xyz/openbmc_project/sensors/temperature/p0_core17_temp
+ sensorReadingType: 0x01
+ multiplierM: 1
+ offsetB: -127
+ bExp: 0
+ rExp: 0
+ unit: xyz.openbmc_project.Sensor.Value.Unit.DegreesC
+ scale: -3
+ serviceInterface: org.freedesktop.DBus.Properties
+ readingType: readingData
+ sensorNamePattern: nameLeaf
+ interfaces:
+ xyz.openbmc_project.Sensor.Value:
+ Value:
+ Offsets:
+ 0xFF:
+ type: int64_t
+0x47:
+ entityID: 0x03
+ entityInstance: 19
+ sensorType: 0x01
+ path: /xyz/openbmc_project/sensors/temperature/p0_core18_temp
+ sensorReadingType: 0x01
+ multiplierM: 1
+ offsetB: -127
+ bExp: 0
+ rExp: 0
+ unit: xyz.openbmc_project.Sensor.Value.Unit.DegreesC
+ scale: -3
+ serviceInterface: org.freedesktop.DBus.Properties
+ readingType: readingData
+ sensorNamePattern: nameLeaf
+ interfaces:
+ xyz.openbmc_project.Sensor.Value:
+ Value:
+ Offsets:
+ 0xFF:
+ type: int64_t
+
+0x4a:
+ entityID: 0x03
+ entityInstance: 20
+ sensorType: 0x01
+ path: /xyz/openbmc_project/sensors/temperature/p0_core19_temp
+ sensorReadingType: 0x01
+ multiplierM: 1
+ offsetB: -127
+ bExp: 0
+ rExp: 0
+ unit: xyz.openbmc_project.Sensor.Value.Unit.DegreesC
+ scale: -3
+ serviceInterface: org.freedesktop.DBus.Properties
+ readingType: readingData
+ sensorNamePattern: nameLeaf
+ interfaces:
+ xyz.openbmc_project.Sensor.Value:
+ Value:
+ Offsets:
+ 0xFF:
+ type: int64_t
+
+0x4d:
+ entityID: 0x03
+ entityInstance: 21
+ sensorType: 0x01
+ path: /xyz/openbmc_project/sensors/temperature/p0_core20_temp
+ sensorReadingType: 0x01
+ multiplierM: 1
+ offsetB: -127
+ bExp: 0
+ rExp: 0
+ unit: xyz.openbmc_project.Sensor.Value.Unit.DegreesC
+ scale: -3
+ serviceInterface: org.freedesktop.DBus.Properties
+ readingType: readingData
+ sensorNamePattern: nameLeaf
+ interfaces:
+ xyz.openbmc_project.Sensor.Value:
+ Value:
+ Offsets:
+ 0xFF:
+ type: int64_t
+
+0x50:
+ entityID: 0x03
+ entityInstance: 22
+ sensorType: 0x01
+ path: /xyz/openbmc_project/sensors/temperature/p0_core21_temp
+ sensorReadingType: 0x01
+ multiplierM: 1
+ offsetB: -127
+ bExp: 0
+ rExp: 0
+ unit: xyz.openbmc_project.Sensor.Value.Unit.DegreesC
+ scale: -3
+ serviceInterface: org.freedesktop.DBus.Properties
+ readingType: readingData
+ sensorNamePattern: nameLeaf
+ interfaces:
+ xyz.openbmc_project.Sensor.Value:
+ Value:
+ Offsets:
+ 0xFF:
+ type: int64_t
+
+0x53:
+ entityID: 0x03
+ entityInstance: 23
+ sensorType: 0x01
+ path: /xyz/openbmc_project/sensors/temperature/p0_core22_temp
+ sensorReadingType: 0x01
+ multiplierM: 1
+ offsetB: -127
+ bExp: 0
+ rExp: 0
+ unit: xyz.openbmc_project.Sensor.Value.Unit.DegreesC
+ scale: -3
+ serviceInterface: org.freedesktop.DBus.Properties
+ readingType: readingData
+ sensorNamePattern: nameLeaf
+ interfaces:
+ xyz.openbmc_project.Sensor.Value:
+ Value:
+ Offsets:
+ 0xFF:
+ type: int64_t
+
+0x56:
+ entityID: 0x03
+ entityInstance: 24
+ sensorType: 0x01
+ path: /xyz/openbmc_project/sensors/temperature/p0_core23_temp
+ sensorReadingType: 0x01
+ multiplierM: 1
+ offsetB: -127
+ bExp: 0
+ rExp: 0
+ unit: xyz.openbmc_project.Sensor.Value.Unit.DegreesC
+ scale: -3
+ serviceInterface: org.freedesktop.DBus.Properties
+ readingType: readingData
+ sensorNamePattern: nameLeaf
+ interfaces:
+ xyz.openbmc_project.Sensor.Value:
+ Value:
+ Offsets:
+ 0xFF:
+ type: int64_t
+
+0xe7:
+ entityID: 0x0A
+ entityInstance: 2
+ sensorType: 0x08
+ path: /xyz/openbmc_project/sensors/power/p0_power
+ sensorReadingType: 0x01
+ multiplierM: 1
+ offsetB: 0
+ bExp: 0
+ rExp: 0
+ unit: xyz.openbmc_project.Sensor.Value.Unit.Watts
+ scale: -6
+ serviceInterface: org.freedesktop.DBus.Properties
+ readingType: readingData
+ sensorNamePattern: nameLeaf
+ interfaces:
+ xyz.openbmc_project.Sensor.Value:
+ Value:
+ Offsets:
+ 0xFF:
+ type: int64_t
+
+0xe8:
+ entityID: 0x0A
+ entityInstance: 2
+ sensorType: 0x08
+ path: /xyz/openbmc_project/sensors/power/p0_vdd_power
+ sensorReadingType: 0x01
+ multiplierM: 1
+ offsetB: 0
+ bExp: 0
+ rExp: 0
+ unit: xyz.openbmc_project.Sensor.Value.Unit.Watts
+ scale: -6
+ serviceInterface: org.freedesktop.DBus.Properties
+ readingType: readingData
+ sensorNamePattern: nameLeaf
+ interfaces:
+ xyz.openbmc_project.Sensor.Value:
+ Value:
+ Offsets:
+ 0xFF:
+ type: int64_t
+
+0xe9:
+ entityID: 0x0A
+ entityInstance: 2
+ sensorType: 0x08
+ path: /xyz/openbmc_project/sensors/power/p0_vdn_power
+ sensorReadingType: 0x01
+ multiplierM: 1
+ offsetB: 0
+ bExp: 0
+ rExp: 0
+ unit: xyz.openbmc_project.Sensor.Value.Unit.Watts
+ scale: -6
+ serviceInterface: org.freedesktop.DBus.Properties
+ readingType: readingData
+ sensorNamePattern: nameLeaf
+ interfaces:
+ xyz.openbmc_project.Sensor.Value:
+ Value:
+ Offsets:
+ 0xFF:
+ type: int64_t
+
+0xdd:
+ entityID: 0x1D
+ entityInstance: 1
+ sensorType: 0x04
+ path: /xyz/openbmc_project/sensors/fan_tach/fan0
+ sensorReadingType: 0x01
+ multiplierM: 100
+ offsetB: 0
+ bExp: 0
+ rExp: 0
+ unit: xyz.openbmc_project.Sensor.Value.Unit.RPMS
+ scale: 0
+ serviceInterface: org.freedesktop.DBus.Properties
+ readingType: readingData
+ sensorNamePattern: nameLeaf
+ interfaces:
+ xyz.openbmc_project.Sensor.Value:
+ Value:
+ Offsets:
+ 0xFF:
+ type: int64_t
+
+0xde:
+ entityID: 0x1D
+ entityInstance: 2
+ sensorType: 0x04
+ path: /xyz/openbmc_project/sensors/fan_tach/fan1
+ sensorReadingType: 0x01
+ multiplierM: 100
+ offsetB: 0
+ bExp: 0
+ rExp: 0
+ unit: xyz.openbmc_project.Sensor.Value.Unit.RPMS
+ scale: 0
+ serviceInterface: org.freedesktop.DBus.Properties
+ readingType: readingData
+ sensorNamePattern: nameLeaf
+ interfaces:
+ xyz.openbmc_project.Sensor.Value:
+ Value:
+ Offsets:
+ 0xFF:
+ type: int64_t
+
+0xdf:
+ entityID: 0x1D
+ entityInstance: 3
+ sensorType: 0x04
+ path: /xyz/openbmc_project/sensors/fan_tach/fan2
+ sensorReadingType: 0x01
+ multiplierM: 100
+ offsetB: 0
+ bExp: 0
+ rExp: 0
+ unit: xyz.openbmc_project.Sensor.Value.Unit.RPMS
+ scale: 0
+ serviceInterface: org.freedesktop.DBus.Properties
+ readingType: readingData
+ sensorNamePattern: nameLeaf
+ interfaces:
+ xyz.openbmc_project.Sensor.Value:
+ Value:
+ Offsets:
+ 0xFF:
+ type: int64_t
+
+0xfc:
+ entityID: 0x23
+ entityInstance: 1
+ sensorType: 0x01
+ path: /xyz/openbmc_project/sensors/temperature/cpu_1_ambient
+ sensorReadingType: 0x01
+ multiplierM: 30
+ offsetB: 0
+ bExp: 0
+ rExp: -2
+ unit: xyz.openbmc_project.Sensor.Value.Unit.DegreesC
+ scale: -3
+ serviceInterface: org.freedesktop.DBus.Properties
+ readingType: readingData
+ sensorNamePattern: nameLeaf
+ interfaces:
+ xyz.openbmc_project.Sensor.Value:
+ Value:
+ Offsets:
+ 0xFF:
+ type: int64_t
+
+0xfd:
+ entityID: 0x23
+ entityInstance: 1
+ sensorType: 0x01
+ path: /xyz/openbmc_project/sensors/temperature/pcie
+ sensorReadingType: 0x01
+ multiplierM: 30
+ offsetB: 0
+ bExp: 0
+ rExp: -2
+ unit: xyz.openbmc_project.Sensor.Value.Unit.DegreesC
+ scale: -3
+ serviceInterface: org.freedesktop.DBus.Properties
+ readingType: readingData
+ sensorNamePattern: nameLeaf
+ interfaces:
+ xyz.openbmc_project.Sensor.Value:
+ Value:
+ Offsets:
+ 0xFF:
+ type: int64_t
+
+0xfe:
+ entityID: 0x40
+ entityInstance: 1
+ sensorType: 0x01
+ path: /xyz/openbmc_project/sensors/temperature/ambient
+ sensorReadingType: 0x01
+ multiplierM: 20
+ offsetB: 0
+ bExp: 0
+ rExp: -2
+ unit: xyz.openbmc_project.Sensor.Value.Unit.DegreesC
+ scale: -3
+ serviceInterface: org.freedesktop.DBus.Properties
+ readingType: readingData
+ sensorNamePattern: nameLeaf
+ interfaces:
+ xyz.openbmc_project.Sensor.Value:
+ Value:
+ Offsets:
+ 0xFF:
+ type: int64_t
+
diff --git a/meta-rcs/meta-blackbird/recipes-phosphor/ipmi/phosphor-ipmi-host/occ_sensors.hardcoded.yaml b/meta-rcs/meta-blackbird/recipes-phosphor/ipmi/phosphor-ipmi-host/occ_sensors.hardcoded.yaml new file mode 100644 index 000000000..a52a8f042 --- /dev/null +++ b/meta-rcs/meta-blackbird/recipes-phosphor/ipmi/phosphor-ipmi-host/occ_sensors.hardcoded.yaml @@ -0,0 +1,44 @@ +0x08: + entityID: 0xD2 + entityInstance: 1 + sensorType: 0x09 + path: /org/open_power/control/occ0 + sensorReadingType: 0x09 + serviceInterface: org.freedesktop.DBus.Properties + readingType: assertion + mutability: Mutability::Write|Mutability::Read + sensorNamePattern: nameLeaf + interfaces: + org.open_power.OCC.Status: + OccActive: + Offsets: + 0x00: + assert: false + deassert: true + type: bool + 0x01: + assert: true + deassert: false + type: bool +0x09: + entityID: 0xD2 + entityInstance: 2 + sensorType: 0x09 + path: /org/open_power/control/occ1 + sensorReadingType: 0x09 + serviceInterface: org.freedesktop.DBus.Properties + readingType: assertion + mutability: Mutability::Write|Mutability::Read + sensorNamePattern: nameLeaf + interfaces: + org.open_power.OCC.Status: + OccActive: + Offsets: + 0x00: + assert: false + deassert: true + type: bool + 0x01: + assert: true + deassert: false + type: bool diff --git a/meta-rcs/meta-blackbird/recipes-phosphor/ipmi/phosphor-ipmi-host_%.bbappend b/meta-rcs/meta-blackbird/recipes-phosphor/ipmi/phosphor-ipmi-host_%.bbappend new file mode 100644 index 000000000..e1798ad4b --- /dev/null +++ b/meta-rcs/meta-blackbird/recipes-phosphor/ipmi/phosphor-ipmi-host_%.bbappend @@ -0,0 +1,10 @@ +FILESEXTRAPATHS_append := ":${THISDIR}/${PN}" +SRC_URI_append = " \ + file://occ_sensors.hardcoded.yaml \ + file://hwmon_sensors.hardcoded.yaml \ + file://channel.yaml \ + " + +EXTRA_OECONF_append = " \ + CHANNEL_YAML_GEN=${WORKDIR}/channel.yaml \ + " diff --git a/meta-rcs/meta-blackbird/recipes-phosphor/ipmi/phosphor-ipmi-sensor-inventory%.bbappend b/meta-rcs/meta-blackbird/recipes-phosphor/ipmi/phosphor-ipmi-sensor-inventory%.bbappend new file mode 100644 index 000000000..72d991c7e --- /dev/null +++ b/meta-rcs/meta-blackbird/recipes-phosphor/ipmi/phosphor-ipmi-sensor-inventory%.bbappend @@ -0,0 +1 @@ +FILESEXTRAPATHS_prepend := "${THISDIR}/${PN}:" diff --git a/meta-rcs/meta-blackbird/recipes-phosphor/ipmi/phosphor-ipmi-sensor-inventory%/config.yaml b/meta-rcs/meta-blackbird/recipes-phosphor/ipmi/phosphor-ipmi-sensor-inventory%/config.yaml new file mode 100755 index 000000000..db62dd2f5 --- /dev/null +++ b/meta-rcs/meta-blackbird/recipes-phosphor/ipmi/phosphor-ipmi-sensor-inventory%/config.yaml @@ -0,0 +1,1939 @@ +0x02: + sensorType: 0x0F + path: /xyz/openbmc_project/state/host0 + sensorReadingType: 0x6F + serviceInterface: org.freedesktop.DBus.Properties + readingType: eventdata2 + mutability: Mutability::Write|Mutability::Read + interfaces: + xyz.openbmc_project.State.Boot.Progress: + BootProgress: + Offsets: + 0x13: + type: string + set: xyz.openbmc_project.State.Boot.Progress.ProgressStages.OSStart + 0x00: + type: string + set: xyz.openbmc_project.State.Boot.Progress.ProgressStages.Unspecified + 0x01: + type: string + set: xyz.openbmc_project.State.Boot.Progress.ProgressStages.MemoryInit + 0x07: + type: string + set: xyz.openbmc_project.State.Boot.Progress.ProgressStages.PCIInit + 0x14: + type: string + set: xyz.openbmc_project.State.Boot.Progress.ProgressStages.MotherboardInit + 0x03: + type: string + set: xyz.openbmc_project.State.Boot.Progress.ProgressStages.SecondaryProcInit +0x03: + sensorType: 0x07 + path: /org/open_power/control/occ0 + sensorReadingType: 0x09 + serviceInterface: org.freedesktop.DBus.Properties + readingType: assertion + mutability: Mutability::Write|Mutability::Read + interfaces: + org.open_power.OCC.Status: + OccActive: + Offsets: + 0x00: + assert: false + deassert: true + type: bool + 0x01: + assert: true + deassert: false + type: bool +0x04: + sensorType: 0x07 + path: /org/open_power/control/occ1 + sensorReadingType: 0x09 + serviceInterface: org.freedesktop.DBus.Properties + readingType: assertion + mutability: Mutability::Write|Mutability::Read + interfaces: + org.open_power.OCC.Status: + OccActive: + Offsets: + 0x00: + assert: false + deassert: true + type: bool + 0x01: + assert: true + deassert: false + type: bool +0x05: + sensorType: 0xC3 + path: /xyz/openbmc_project/state/host0 + sensorReadingType: 0x6F + serviceInterface: org.freedesktop.DBus.Properties + readingType: readingAssertion + mutability: Mutability::Write|Mutability::Read + interfaces: + xyz.openbmc_project.Control.Boot.RebootAttempts: + AttemptsLeft: + Offsets: + 0xFF: + type: uint32_t +0x07: + sensorType: 0x1F + path: /xyz/openbmc_project/state/host0 + sensorReadingType: 0x6F + serviceInterface: org.freedesktop.DBus.Properties + readingType: assertion + mutability: Mutability::Write|Mutability::Read + interfaces: + xyz.openbmc_project.State.OperatingSystem.Status: + OperatingSystemState: + Offsets: + 0x02: + assert: xyz.openbmc_project.State.OperatingSystem.Status.OSStatus.PXEBoot + type: string + 0x06: + assert: xyz.openbmc_project.State.OperatingSystem.Status.OSStatus.BootComplete + type: string + 0x04: + assert: xyz.openbmc_project.State.OperatingSystem.Status.OSStatus.CDROMBoot + type: string + 0x01: + assert: xyz.openbmc_project.State.OperatingSystem.Status.OSStatus.CBoot + type: string + 0x03: + assert: xyz.openbmc_project.State.OperatingSystem.Status.OSStatus.DiagBoot + type: string + 0x05: + assert: xyz.openbmc_project.State.OperatingSystem.Status.OSStatus.ROMBoot + type: string +0x08: + sensorType: 0x07 + path: /system/chassis/motherboard/cpu0 + sensorReadingType: 0x6F + serviceInterface: xyz.openbmc_project.Inventory.Manager + readingType: assertion + mutability: Mutability::Write|Mutability::Read + interfaces: + xyz.openbmc_project.State.Decorator.OperationalStatus: + Functional: + Prereqs: + 0x07: + assert: true + deassert: false + type: bool + Offsets: + 0x08: + assert: false + deassert: true + type: bool + xyz.openbmc_project.Inventory.Item: + Present: + Offsets: + 0x07: + assert: true + deassert: false + type: bool +0x09: + sensorType: 0x07 + path: /system/chassis/motherboard/cpu1 + sensorReadingType: 0x6F + serviceInterface: xyz.openbmc_project.Inventory.Manager + readingType: assertion + mutability: Mutability::Write|Mutability::Read + interfaces: + xyz.openbmc_project.State.Decorator.OperationalStatus: + Functional: + Prereqs: + 0x07: + assert: true + deassert: false + type: bool + Offsets: + 0x08: + assert: false + deassert: true + type: bool + xyz.openbmc_project.Inventory.Item: + Present: + Offsets: + 0x07: + assert: true + deassert: false + type: bool +0x0b: + sensorType: 0x0C + path: /system/chassis/motherboard/dimm0 + sensorReadingType: 0x6F + serviceInterface: xyz.openbmc_project.Inventory.Manager + readingType: assertion + mutability: Mutability::Write|Mutability::Read + interfaces: + xyz.openbmc_project.State.Decorator.OperationalStatus: + Functional: + Prereqs: + 0x06: + assert: true + deassert: false + type: bool + Offsets: + 0x04: + assert: false + deassert: true + type: bool + xyz.openbmc_project.Inventory.Item: + Present: + Offsets: + 0x06: + assert: true + deassert: false + type: bool +0x0c: + sensorType: 0x0C + path: /system/chassis/motherboard/dimm1 + sensorReadingType: 0x6F + serviceInterface: xyz.openbmc_project.Inventory.Manager + readingType: assertion + mutability: Mutability::Write|Mutability::Read + interfaces: + xyz.openbmc_project.State.Decorator.OperationalStatus: + Functional: + Prereqs: + 0x06: + assert: true + deassert: false + type: bool + Offsets: + 0x04: + assert: false + deassert: true + type: bool + xyz.openbmc_project.Inventory.Item: + Present: + Offsets: + 0x06: + assert: true + deassert: false + type: bool +0x0d: + sensorType: 0x0C + path: /system/chassis/motherboard/dimm2 + sensorReadingType: 0x6F + serviceInterface: xyz.openbmc_project.Inventory.Manager + readingType: assertion + mutability: Mutability::Write|Mutability::Read + interfaces: + xyz.openbmc_project.State.Decorator.OperationalStatus: + Functional: + Prereqs: + 0x06: + assert: true + deassert: false + type: bool + Offsets: + 0x04: + assert: false + deassert: true + type: bool + xyz.openbmc_project.Inventory.Item: + Present: + Offsets: + 0x06: + assert: true + deassert: false + type: bool +0x0e: + sensorType: 0x0C + path: /system/chassis/motherboard/dimm3 + sensorReadingType: 0x6F + serviceInterface: xyz.openbmc_project.Inventory.Manager + readingType: assertion + mutability: Mutability::Write|Mutability::Read + interfaces: + xyz.openbmc_project.State.Decorator.OperationalStatus: + Functional: + Prereqs: + 0x06: + assert: true + deassert: false + type: bool + Offsets: + 0x04: + assert: false + deassert: true + type: bool + xyz.openbmc_project.Inventory.Item: + Present: + Offsets: + 0x06: + assert: true + deassert: false + type: bool +0x0f: + sensorType: 0x0C + path: /system/chassis/motherboard/dimm4 + sensorReadingType: 0x6F + serviceInterface: xyz.openbmc_project.Inventory.Manager + readingType: assertion + mutability: Mutability::Write|Mutability::Read + interfaces: + xyz.openbmc_project.State.Decorator.OperationalStatus: + Functional: + Prereqs: + 0x06: + assert: true + deassert: false + type: bool + Offsets: + 0x04: + assert: false + deassert: true + type: bool + xyz.openbmc_project.Inventory.Item: + Present: + Offsets: + 0x06: + assert: true + deassert: false + type: bool +0x10: + sensorType: 0x0C + path: /system/chassis/motherboard/dimm5 + sensorReadingType: 0x6F + serviceInterface: xyz.openbmc_project.Inventory.Manager + readingType: assertion + mutability: Mutability::Write|Mutability::Read + interfaces: + xyz.openbmc_project.State.Decorator.OperationalStatus: + Functional: + Prereqs: + 0x06: + assert: true + deassert: false + type: bool + Offsets: + 0x04: + assert: false + deassert: true + type: bool + xyz.openbmc_project.Inventory.Item: + Present: + Offsets: + 0x06: + assert: true + deassert: false + type: bool +0x11: + sensorType: 0x0C + path: /system/chassis/motherboard/dimm6 + sensorReadingType: 0x6F + serviceInterface: xyz.openbmc_project.Inventory.Manager + readingType: assertion + mutability: Mutability::Write|Mutability::Read + interfaces: + xyz.openbmc_project.State.Decorator.OperationalStatus: + Functional: + Prereqs: + 0x06: + assert: true + deassert: false + type: bool + Offsets: + 0x04: + assert: false + deassert: true + type: bool + xyz.openbmc_project.Inventory.Item: + Present: + Offsets: + 0x06: + assert: true + deassert: false + type: bool +0x12: + sensorType: 0x0C + path: /system/chassis/motherboard/dimm7 + sensorReadingType: 0x6F + serviceInterface: xyz.openbmc_project.Inventory.Manager + readingType: assertion + mutability: Mutability::Write|Mutability::Read + interfaces: + xyz.openbmc_project.State.Decorator.OperationalStatus: + Functional: + Prereqs: + 0x06: + assert: true + deassert: false + type: bool + Offsets: + 0x04: + assert: false + deassert: true + type: bool + xyz.openbmc_project.Inventory.Item: + Present: + Offsets: + 0x06: + assert: true + deassert: false + type: bool +0x13: + sensorType: 0x0C + path: /system/chassis/motherboard/dimm8 + sensorReadingType: 0x6F + serviceInterface: xyz.openbmc_project.Inventory.Manager + readingType: assertion + mutability: Mutability::Write|Mutability::Read + interfaces: + xyz.openbmc_project.State.Decorator.OperationalStatus: + Functional: + Prereqs: + 0x06: + assert: true + deassert: false + type: bool + Offsets: + 0x04: + assert: false + deassert: true + type: bool + xyz.openbmc_project.Inventory.Item: + Present: + Offsets: + 0x06: + assert: true + deassert: false + type: bool +0x14: + sensorType: 0x0C + path: /system/chassis/motherboard/dimm9 + sensorReadingType: 0x6F + serviceInterface: xyz.openbmc_project.Inventory.Manager + readingType: assertion + mutability: Mutability::Write|Mutability::Read + interfaces: + xyz.openbmc_project.State.Decorator.OperationalStatus: + Functional: + Prereqs: + 0x06: + assert: true + deassert: false + type: bool + Offsets: + 0x04: + assert: false + deassert: true + type: bool + xyz.openbmc_project.Inventory.Item: + Present: + Offsets: + 0x06: + assert: true + deassert: false + type: bool +0x15: + sensorType: 0x0C + path: /system/chassis/motherboard/dimm10 + sensorReadingType: 0x6F + serviceInterface: xyz.openbmc_project.Inventory.Manager + readingType: assertion + mutability: Mutability::Write|Mutability::Read + interfaces: + xyz.openbmc_project.State.Decorator.OperationalStatus: + Functional: + Prereqs: + 0x06: + assert: true + deassert: false + type: bool + Offsets: + 0x04: + assert: false + deassert: true + type: bool + xyz.openbmc_project.Inventory.Item: + Present: + Offsets: + 0x06: + assert: true + deassert: false + type: bool +0x16: + sensorType: 0x0C + path: /system/chassis/motherboard/dimm11 + sensorReadingType: 0x6F + serviceInterface: xyz.openbmc_project.Inventory.Manager + readingType: assertion + mutability: Mutability::Write|Mutability::Read + interfaces: + xyz.openbmc_project.State.Decorator.OperationalStatus: + Functional: + Prereqs: + 0x06: + assert: true + deassert: false + type: bool + Offsets: + 0x04: + assert: false + deassert: true + type: bool + xyz.openbmc_project.Inventory.Item: + Present: + Offsets: + 0x06: + assert: true + deassert: false + type: bool +0x17: + sensorType: 0x0C + path: /system/chassis/motherboard/dimm12 + sensorReadingType: 0x6F + serviceInterface: xyz.openbmc_project.Inventory.Manager + readingType: assertion + mutability: Mutability::Write|Mutability::Read + interfaces: + xyz.openbmc_project.State.Decorator.OperationalStatus: + Functional: + Prereqs: + 0x06: + assert: true + deassert: false + type: bool + Offsets: + 0x04: + assert: false + deassert: true + type: bool + xyz.openbmc_project.Inventory.Item: + Present: + Offsets: + 0x06: + assert: true + deassert: false + type: bool +0x18: + sensorType: 0x0C + path: /system/chassis/motherboard/dimm13 + sensorReadingType: 0x6F + serviceInterface: xyz.openbmc_project.Inventory.Manager + readingType: assertion + mutability: Mutability::Write|Mutability::Read + interfaces: + xyz.openbmc_project.State.Decorator.OperationalStatus: + Functional: + Prereqs: + 0x06: + assert: true + deassert: false + type: bool + Offsets: + 0x04: + assert: false + deassert: true + type: bool + xyz.openbmc_project.Inventory.Item: + Present: + Offsets: + 0x06: + assert: true + deassert: false + type: bool +0x19: + sensorType: 0x0C + path: /system/chassis/motherboard/dimm14 + sensorReadingType: 0x6F + serviceInterface: xyz.openbmc_project.Inventory.Manager + readingType: assertion + mutability: Mutability::Write|Mutability::Read + interfaces: + xyz.openbmc_project.State.Decorator.OperationalStatus: + Functional: + Prereqs: + 0x06: + assert: true + deassert: false + type: bool + Offsets: + 0x04: + assert: false + deassert: true + type: bool + xyz.openbmc_project.Inventory.Item: + Present: + Offsets: + 0x06: + assert: true + deassert: false + type: bool +0x1a: + sensorType: 0x0C + path: /system/chassis/motherboard/dimm15 + sensorReadingType: 0x6F + serviceInterface: xyz.openbmc_project.Inventory.Manager + readingType: assertion + mutability: Mutability::Write|Mutability::Read + interfaces: + xyz.openbmc_project.State.Decorator.OperationalStatus: + Functional: + Prereqs: + 0x06: + assert: true + deassert: false + type: bool + Offsets: + 0x04: + assert: false + deassert: true + type: bool + xyz.openbmc_project.Inventory.Item: + Present: + Offsets: + 0x06: + assert: true + deassert: false + type: bool +0x2b: + sensorType: 0x07 + path: /system/chassis/motherboard/cpu0/core0 + sensorReadingType: 0x6F + serviceInterface: xyz.openbmc_project.Inventory.Manager + readingType: assertion + mutability: Mutability::Write|Mutability::Read + interfaces: + xyz.openbmc_project.State.Decorator.OperationalStatus: + Functional: + Prereqs: + 0x07: + assert: true + deassert: false + type: bool + Offsets: + 0x08: + assert: false + deassert: true + type: bool + xyz.openbmc_project.Inventory.Item: + Present: + Offsets: + 0x07: + assert: true + deassert: false + type: bool + skipOn: deassert +0x2c: + sensorType: 0x07 + path: /system/chassis/motherboard/cpu0/core1 + sensorReadingType: 0x6F + serviceInterface: xyz.openbmc_project.Inventory.Manager + readingType: assertion + mutability: Mutability::Write|Mutability::Read + interfaces: + xyz.openbmc_project.State.Decorator.OperationalStatus: + Functional: + Prereqs: + 0x07: + assert: true + deassert: false + type: bool + Offsets: + 0x08: + assert: false + deassert: true + type: bool + xyz.openbmc_project.Inventory.Item: + Present: + Offsets: + 0x07: + assert: true + deassert: false + type: bool + skipOn: deassert +0x2d: + sensorType: 0x07 + path: /system/chassis/motherboard/cpu0/core2 + sensorReadingType: 0x6F + serviceInterface: xyz.openbmc_project.Inventory.Manager + readingType: assertion + mutability: Mutability::Write|Mutability::Read + interfaces: + xyz.openbmc_project.State.Decorator.OperationalStatus: + Functional: + Prereqs: + 0x07: + assert: true + deassert: false + type: bool + Offsets: + 0x08: + assert: false + deassert: true + type: bool + xyz.openbmc_project.Inventory.Item: + Present: + Offsets: + 0x07: + assert: true + deassert: false + type: bool + skipOn: deassert +0x2e: + sensorType: 0x07 + path: /system/chassis/motherboard/cpu0/core3 + sensorReadingType: 0x6F + serviceInterface: xyz.openbmc_project.Inventory.Manager + readingType: assertion + mutability: Mutability::Write|Mutability::Read + interfaces: + xyz.openbmc_project.State.Decorator.OperationalStatus: + Functional: + Prereqs: + 0x07: + assert: true + deassert: false + type: bool + Offsets: + 0x08: + assert: false + deassert: true + type: bool + xyz.openbmc_project.Inventory.Item: + Present: + Offsets: + 0x07: + assert: true + deassert: false + type: bool + skipOn: deassert +0x2f: + sensorType: 0x07 + path: /system/chassis/motherboard/cpu0/core4 + sensorReadingType: 0x6F + serviceInterface: xyz.openbmc_project.Inventory.Manager + readingType: assertion + mutability: Mutability::Write|Mutability::Read + interfaces: + xyz.openbmc_project.State.Decorator.OperationalStatus: + Functional: + Prereqs: + 0x07: + assert: true + deassert: false + type: bool + Offsets: + 0x08: + assert: false + deassert: true + type: bool + xyz.openbmc_project.Inventory.Item: + Present: + Offsets: + 0x07: + assert: true + deassert: false + type: bool + skipOn: deassert +0x30: + sensorType: 0x07 + path: /system/chassis/motherboard/cpu0/core5 + sensorReadingType: 0x6F + serviceInterface: xyz.openbmc_project.Inventory.Manager + readingType: assertion + mutability: Mutability::Write|Mutability::Read + interfaces: + xyz.openbmc_project.State.Decorator.OperationalStatus: + Functional: + Prereqs: + 0x07: + assert: true + deassert: false + type: bool + Offsets: + 0x08: + assert: false + deassert: true + type: bool + xyz.openbmc_project.Inventory.Item: + Present: + Offsets: + 0x07: + assert: true + deassert: false + type: bool + skipOn: deassert +0x31: + sensorType: 0x07 + path: /system/chassis/motherboard/cpu0/core6 + sensorReadingType: 0x6F + serviceInterface: xyz.openbmc_project.Inventory.Manager + readingType: assertion + mutability: Mutability::Write|Mutability::Read + interfaces: + xyz.openbmc_project.State.Decorator.OperationalStatus: + Functional: + Prereqs: + 0x07: + assert: true + deassert: false + type: bool + Offsets: + 0x08: + assert: false + deassert: true + type: bool + xyz.openbmc_project.Inventory.Item: + Present: + Offsets: + 0x07: + assert: true + deassert: false + type: bool + skipOn: deassert +0x32: + sensorType: 0x07 + path: /system/chassis/motherboard/cpu0/core7 + sensorReadingType: 0x6F + serviceInterface: xyz.openbmc_project.Inventory.Manager + readingType: assertion + mutability: Mutability::Write|Mutability::Read + interfaces: + xyz.openbmc_project.State.Decorator.OperationalStatus: + Functional: + Prereqs: + 0x07: + assert: true + deassert: false + type: bool + Offsets: + 0x08: + assert: false + deassert: true + type: bool + xyz.openbmc_project.Inventory.Item: + Present: + Offsets: + 0x07: + assert: true + deassert: false + type: bool + skipOn: deassert +0x33: + sensorType: 0x07 + path: /system/chassis/motherboard/cpu0/core8 + sensorReadingType: 0x6F + serviceInterface: xyz.openbmc_project.Inventory.Manager + readingType: assertion + mutability: Mutability::Write|Mutability::Read + interfaces: + xyz.openbmc_project.State.Decorator.OperationalStatus: + Functional: + Prereqs: + 0x07: + assert: true + deassert: false + type: bool + Offsets: + 0x08: + assert: false + deassert: true + type: bool + xyz.openbmc_project.Inventory.Item: + Present: + Offsets: + 0x07: + assert: true + deassert: false + type: bool + skipOn: deassert +0x34: + sensorType: 0x07 + path: /system/chassis/motherboard/cpu0/core9 + sensorReadingType: 0x6F + serviceInterface: xyz.openbmc_project.Inventory.Manager + readingType: assertion + mutability: Mutability::Write|Mutability::Read + interfaces: + xyz.openbmc_project.State.Decorator.OperationalStatus: + Functional: + Prereqs: + 0x07: + assert: true + deassert: false + type: bool + Offsets: + 0x08: + assert: false + deassert: true + type: bool + xyz.openbmc_project.Inventory.Item: + Present: + Offsets: + 0x07: + assert: true + deassert: false + type: bool + skipOn: deassert +0x35: + sensorType: 0x07 + path: /system/chassis/motherboard/cpu0/core10 + sensorReadingType: 0x6F + serviceInterface: xyz.openbmc_project.Inventory.Manager + readingType: assertion + mutability: Mutability::Write|Mutability::Read + interfaces: + xyz.openbmc_project.State.Decorator.OperationalStatus: + Functional: + Prereqs: + 0x07: + assert: true + deassert: false + type: bool + Offsets: + 0x08: + assert: false + deassert: true + type: bool + xyz.openbmc_project.Inventory.Item: + Present: + Offsets: + 0x07: + assert: true + deassert: false + type: bool + skipOn: deassert +0x36: + sensorType: 0x07 + path: /system/chassis/motherboard/cpu0/core11 + sensorReadingType: 0x6F + serviceInterface: xyz.openbmc_project.Inventory.Manager + readingType: assertion + mutability: Mutability::Write|Mutability::Read + interfaces: + xyz.openbmc_project.State.Decorator.OperationalStatus: + Functional: + Prereqs: + 0x07: + assert: true + deassert: false + type: bool + Offsets: + 0x08: + assert: false + deassert: true + type: bool + xyz.openbmc_project.Inventory.Item: + Present: + Offsets: + 0x07: + assert: true + deassert: false + type: bool + skipOn: deassert +0x37: + sensorType: 0x07 + path: /system/chassis/motherboard/cpu0/core12 + sensorReadingType: 0x6F + serviceInterface: xyz.openbmc_project.Inventory.Manager + readingType: assertion + mutability: Mutability::Write|Mutability::Read + interfaces: + xyz.openbmc_project.State.Decorator.OperationalStatus: + Functional: + Prereqs: + 0x07: + assert: true + deassert: false + type: bool + Offsets: + 0x08: + assert: false + deassert: true + type: bool + xyz.openbmc_project.Inventory.Item: + Present: + Offsets: + 0x07: + assert: true + deassert: false + type: bool + skipOn: deassert +0x38: + sensorType: 0x07 + path: /system/chassis/motherboard/cpu0/core13 + sensorReadingType: 0x6F + serviceInterface: xyz.openbmc_project.Inventory.Manager + readingType: assertion + mutability: Mutability::Write|Mutability::Read + interfaces: + xyz.openbmc_project.State.Decorator.OperationalStatus: + Functional: + Prereqs: + 0x07: + assert: true + deassert: false + type: bool + Offsets: + 0x08: + assert: false + deassert: true + type: bool + xyz.openbmc_project.Inventory.Item: + Present: + Offsets: + 0x07: + assert: true + deassert: false + type: bool + skipOn: deassert +0x39: + sensorType: 0x07 + path: /system/chassis/motherboard/cpu0/core14 + sensorReadingType: 0x6F + serviceInterface: xyz.openbmc_project.Inventory.Manager + readingType: assertion + mutability: Mutability::Write|Mutability::Read + interfaces: + xyz.openbmc_project.State.Decorator.OperationalStatus: + Functional: + Prereqs: + 0x07: + assert: true + deassert: false + type: bool + Offsets: + 0x08: + assert: false + deassert: true + type: bool + xyz.openbmc_project.Inventory.Item: + Present: + Offsets: + 0x07: + assert: true + deassert: false + type: bool + skipOn: deassert +0x3a: + sensorType: 0x07 + path: /system/chassis/motherboard/cpu0/core15 + sensorReadingType: 0x6F + serviceInterface: xyz.openbmc_project.Inventory.Manager + readingType: assertion + mutability: Mutability::Write|Mutability::Read + interfaces: + xyz.openbmc_project.State.Decorator.OperationalStatus: + Functional: + Prereqs: + 0x07: + assert: true + deassert: false + type: bool + Offsets: + 0x08: + assert: false + deassert: true + type: bool + xyz.openbmc_project.Inventory.Item: + Present: + Offsets: + 0x07: + assert: true + deassert: false + type: bool + skipOn: deassert +0x3b: + sensorType: 0x07 + path: /system/chassis/motherboard/cpu0/core16 + sensorReadingType: 0x6F + serviceInterface: xyz.openbmc_project.Inventory.Manager + readingType: assertion + mutability: Mutability::Write|Mutability::Read + interfaces: + xyz.openbmc_project.State.Decorator.OperationalStatus: + Functional: + Prereqs: + 0x07: + assert: true + deassert: false + type: bool + Offsets: + 0x08: + assert: false + deassert: true + type: bool + xyz.openbmc_project.Inventory.Item: + Present: + Offsets: + 0x07: + assert: true + deassert: false + type: bool + skipOn: deassert +0x3c: + sensorType: 0x07 + path: /system/chassis/motherboard/cpu0/core17 + sensorReadingType: 0x6F + serviceInterface: xyz.openbmc_project.Inventory.Manager + readingType: assertion + mutability: Mutability::Write|Mutability::Read + interfaces: + xyz.openbmc_project.State.Decorator.OperationalStatus: + Functional: + Prereqs: + 0x07: + assert: true + deassert: false + type: bool + Offsets: + 0x08: + assert: false + deassert: true + type: bool + xyz.openbmc_project.Inventory.Item: + Present: + Offsets: + 0x07: + assert: true + deassert: false + type: bool + skipOn: deassert +0x3d: + sensorType: 0x07 + path: /system/chassis/motherboard/cpu0/core18 + sensorReadingType: 0x6F + serviceInterface: xyz.openbmc_project.Inventory.Manager + readingType: assertion + mutability: Mutability::Write|Mutability::Read + interfaces: + xyz.openbmc_project.State.Decorator.OperationalStatus: + Functional: + Prereqs: + 0x07: + assert: true + deassert: false + type: bool + Offsets: + 0x08: + assert: false + deassert: true + type: bool + xyz.openbmc_project.Inventory.Item: + Present: + Offsets: + 0x07: + assert: true + deassert: false + type: bool + skipOn: deassert +0x3e: + sensorType: 0x07 + path: /system/chassis/motherboard/cpu0/core19 + sensorReadingType: 0x6F + serviceInterface: xyz.openbmc_project.Inventory.Manager + readingType: assertion + mutability: Mutability::Write|Mutability::Read + interfaces: + xyz.openbmc_project.State.Decorator.OperationalStatus: + Functional: + Prereqs: + 0x07: + assert: true + deassert: false + type: bool + Offsets: + 0x08: + assert: false + deassert: true + type: bool + xyz.openbmc_project.Inventory.Item: + Present: + Offsets: + 0x07: + assert: true + deassert: false + type: bool + skipOn: deassert +0x3f: + sensorType: 0x07 + path: /system/chassis/motherboard/cpu0/core20 + sensorReadingType: 0x6F + serviceInterface: xyz.openbmc_project.Inventory.Manager + readingType: assertion + mutability: Mutability::Write|Mutability::Read + interfaces: + xyz.openbmc_project.State.Decorator.OperationalStatus: + Functional: + Prereqs: + 0x07: + assert: true + deassert: false + type: bool + Offsets: + 0x08: + assert: false + deassert: true + type: bool + xyz.openbmc_project.Inventory.Item: + Present: + Offsets: + 0x07: + assert: true + deassert: false + type: bool + skipOn: deassert +0x40: + sensorType: 0x07 + path: /system/chassis/motherboard/cpu0/core21 + sensorReadingType: 0x6F + serviceInterface: xyz.openbmc_project.Inventory.Manager + readingType: assertion + mutability: Mutability::Write|Mutability::Read + interfaces: + xyz.openbmc_project.State.Decorator.OperationalStatus: + Functional: + Prereqs: + 0x07: + assert: true + deassert: false + type: bool + Offsets: + 0x08: + assert: false + deassert: true + type: bool + xyz.openbmc_project.Inventory.Item: + Present: + Offsets: + 0x07: + assert: true + deassert: false + type: bool + skipOn: deassert +0x41: + sensorType: 0x07 + path: /system/chassis/motherboard/cpu0/core22 + sensorReadingType: 0x6F + serviceInterface: xyz.openbmc_project.Inventory.Manager + readingType: assertion + mutability: Mutability::Write|Mutability::Read + interfaces: + xyz.openbmc_project.State.Decorator.OperationalStatus: + Functional: + Prereqs: + 0x07: + assert: true + deassert: false + type: bool + Offsets: + 0x08: + assert: false + deassert: true + type: bool + xyz.openbmc_project.Inventory.Item: + Present: + Offsets: + 0x07: + assert: true + deassert: false + type: bool + skipOn: deassert +0x42: + sensorType: 0x07 + path: /system/chassis/motherboard/cpu0/core23 + sensorReadingType: 0x6F + serviceInterface: xyz.openbmc_project.Inventory.Manager + readingType: assertion + mutability: Mutability::Write|Mutability::Read + interfaces: + xyz.openbmc_project.State.Decorator.OperationalStatus: + Functional: + Prereqs: + 0x07: + assert: true + deassert: false + type: bool + Offsets: + 0x08: + assert: false + deassert: true + type: bool + xyz.openbmc_project.Inventory.Item: + Present: + Offsets: + 0x07: + assert: true + deassert: false + type: bool + skipOn: deassert +0x43: + sensorType: 0x07 + path: /system/chassis/motherboard/cpu1/core0 + sensorReadingType: 0x6F + serviceInterface: xyz.openbmc_project.Inventory.Manager + readingType: assertion + mutability: Mutability::Write|Mutability::Read + interfaces: + xyz.openbmc_project.State.Decorator.OperationalStatus: + Functional: + Prereqs: + 0x07: + assert: true + deassert: false + type: bool + Offsets: + 0x08: + assert: false + deassert: true + type: bool + xyz.openbmc_project.Inventory.Item: + Present: + Offsets: + 0x07: + assert: true + deassert: false + type: bool + skipOn: deassert +0x44: + sensorType: 0x07 + path: /system/chassis/motherboard/cpu1/core1 + sensorReadingType: 0x6F + serviceInterface: xyz.openbmc_project.Inventory.Manager + readingType: assertion + mutability: Mutability::Write|Mutability::Read + interfaces: + xyz.openbmc_project.State.Decorator.OperationalStatus: + Functional: + Prereqs: + 0x07: + assert: true + deassert: false + type: bool + Offsets: + 0x08: + assert: false + deassert: true + type: bool + xyz.openbmc_project.Inventory.Item: + Present: + Offsets: + 0x07: + assert: true + deassert: false + type: bool + skipOn: deassert +0x45: + sensorType: 0x07 + path: /system/chassis/motherboard/cpu1/core2 + sensorReadingType: 0x6F + serviceInterface: xyz.openbmc_project.Inventory.Manager + readingType: assertion + mutability: Mutability::Write|Mutability::Read + interfaces: + xyz.openbmc_project.State.Decorator.OperationalStatus: + Functional: + Prereqs: + 0x07: + assert: true + deassert: false + type: bool + Offsets: + 0x08: + assert: false + deassert: true + type: bool + xyz.openbmc_project.Inventory.Item: + Present: + Offsets: + 0x07: + assert: true + deassert: false + type: bool + skipOn: deassert +0x46: + sensorType: 0x07 + path: /system/chassis/motherboard/cpu1/core3 + sensorReadingType: 0x6F + serviceInterface: xyz.openbmc_project.Inventory.Manager + readingType: assertion + mutability: Mutability::Write|Mutability::Read + interfaces: + xyz.openbmc_project.State.Decorator.OperationalStatus: + Functional: + Prereqs: + 0x07: + assert: true + deassert: false + type: bool + Offsets: + 0x08: + assert: false + deassert: true + type: bool + xyz.openbmc_project.Inventory.Item: + Present: + Offsets: + 0x07: + assert: true + deassert: false + type: bool + skipOn: deassert +0x47: + sensorType: 0x07 + path: /system/chassis/motherboard/cpu1/core4 + sensorReadingType: 0x6F + serviceInterface: xyz.openbmc_project.Inventory.Manager + readingType: assertion + mutability: Mutability::Write|Mutability::Read + interfaces: + xyz.openbmc_project.State.Decorator.OperationalStatus: + Functional: + Prereqs: + 0x07: + assert: true + deassert: false + type: bool + Offsets: + 0x08: + assert: false + deassert: true + type: bool + xyz.openbmc_project.Inventory.Item: + Present: + Offsets: + 0x07: + assert: true + deassert: false + type: bool + skipOn: deassert +0x48: + sensorType: 0x07 + path: /system/chassis/motherboard/cpu1/core5 + sensorReadingType: 0x6F + serviceInterface: xyz.openbmc_project.Inventory.Manager + readingType: assertion + mutability: Mutability::Write|Mutability::Read + interfaces: + xyz.openbmc_project.State.Decorator.OperationalStatus: + Functional: + Prereqs: + 0x07: + assert: true + deassert: false + type: bool + Offsets: + 0x08: + assert: false + deassert: true + type: bool + xyz.openbmc_project.Inventory.Item: + Present: + Offsets: + 0x07: + assert: true + deassert: false + type: bool + skipOn: deassert +0x49: + sensorType: 0x07 + path: /system/chassis/motherboard/cpu1/core6 + sensorReadingType: 0x6F + serviceInterface: xyz.openbmc_project.Inventory.Manager + readingType: assertion + mutability: Mutability::Write|Mutability::Read + interfaces: + xyz.openbmc_project.State.Decorator.OperationalStatus: + Functional: + Prereqs: + 0x07: + assert: true + deassert: false + type: bool + Offsets: + 0x08: + assert: false + deassert: true + type: bool + xyz.openbmc_project.Inventory.Item: + Present: + Offsets: + 0x07: + assert: true + deassert: false + type: bool + skipOn: deassert +0x4a: + sensorType: 0x07 + path: /system/chassis/motherboard/cpu1/core7 + sensorReadingType: 0x6F + serviceInterface: xyz.openbmc_project.Inventory.Manager + readingType: assertion + mutability: Mutability::Write|Mutability::Read + interfaces: + xyz.openbmc_project.State.Decorator.OperationalStatus: + Functional: + Prereqs: + 0x07: + assert: true + deassert: false + type: bool + Offsets: + 0x08: + assert: false + deassert: true + type: bool + xyz.openbmc_project.Inventory.Item: + Present: + Offsets: + 0x07: + assert: true + deassert: false + type: bool + skipOn: deassert +0x4b: + sensorType: 0x07 + path: /system/chassis/motherboard/cpu1/core8 + sensorReadingType: 0x6F + serviceInterface: xyz.openbmc_project.Inventory.Manager + readingType: assertion + mutability: Mutability::Write|Mutability::Read + interfaces: + xyz.openbmc_project.State.Decorator.OperationalStatus: + Functional: + Prereqs: + 0x07: + assert: true + deassert: false + type: bool + Offsets: + 0x08: + assert: false + deassert: true + type: bool + xyz.openbmc_project.Inventory.Item: + Present: + Offsets: + 0x07: + assert: true + deassert: false + type: bool + skipOn: deassert +0x4c: + sensorType: 0x07 + path: /system/chassis/motherboard/cpu1/core9 + sensorReadingType: 0x6F + serviceInterface: xyz.openbmc_project.Inventory.Manager + readingType: assertion + mutability: Mutability::Write|Mutability::Read + interfaces: + xyz.openbmc_project.State.Decorator.OperationalStatus: + Functional: + Prereqs: + 0x07: + assert: true + deassert: false + type: bool + Offsets: + 0x08: + assert: false + deassert: true + type: bool + xyz.openbmc_project.Inventory.Item: + Present: + Offsets: + 0x07: + assert: true + deassert: false + type: bool + skipOn: deassert +0x4d: + sensorType: 0x07 + path: /system/chassis/motherboard/cpu1/core10 + sensorReadingType: 0x6F + serviceInterface: xyz.openbmc_project.Inventory.Manager + readingType: assertion + mutability: Mutability::Write|Mutability::Read + interfaces: + xyz.openbmc_project.State.Decorator.OperationalStatus: + Functional: + Prereqs: + 0x07: + assert: true + deassert: false + type: bool + Offsets: + 0x08: + assert: false + deassert: true + type: bool + xyz.openbmc_project.Inventory.Item: + Present: + Offsets: + 0x07: + assert: true + deassert: false + type: bool + skipOn: deassert +0x4e: + sensorType: 0x07 + path: /system/chassis/motherboard/cpu1/core11 + sensorReadingType: 0x6F + serviceInterface: xyz.openbmc_project.Inventory.Manager + readingType: assertion + mutability: Mutability::Write|Mutability::Read + interfaces: + xyz.openbmc_project.State.Decorator.OperationalStatus: + Functional: + Prereqs: + 0x07: + assert: true + deassert: false + type: bool + Offsets: + 0x08: + assert: false + deassert: true + type: bool + xyz.openbmc_project.Inventory.Item: + Present: + Offsets: + 0x07: + assert: true + deassert: false + type: bool + skipOn: deassert +0x4f: + sensorType: 0x07 + path: /system/chassis/motherboard/cpu1/core12 + sensorReadingType: 0x6F + serviceInterface: xyz.openbmc_project.Inventory.Manager + readingType: assertion + mutability: Mutability::Write|Mutability::Read + interfaces: + xyz.openbmc_project.State.Decorator.OperationalStatus: + Functional: + Prereqs: + 0x07: + assert: true + deassert: false + type: bool + Offsets: + 0x08: + assert: false + deassert: true + type: bool + xyz.openbmc_project.Inventory.Item: + Present: + Offsets: + 0x07: + assert: true + deassert: false + type: bool + skipOn: deassert +0x50: + sensorType: 0x07 + path: /system/chassis/motherboard/cpu1/core13 + sensorReadingType: 0x6F + serviceInterface: xyz.openbmc_project.Inventory.Manager + readingType: assertion + mutability: Mutability::Write|Mutability::Read + interfaces: + xyz.openbmc_project.State.Decorator.OperationalStatus: + Functional: + Prereqs: + 0x07: + assert: true + deassert: false + type: bool + Offsets: + 0x08: + assert: false + deassert: true + type: bool + xyz.openbmc_project.Inventory.Item: + Present: + Offsets: + 0x07: + assert: true + deassert: false + type: bool + skipOn: deassert +0x51: + sensorType: 0x07 + path: /system/chassis/motherboard/cpu1/core14 + sensorReadingType: 0x6F + serviceInterface: xyz.openbmc_project.Inventory.Manager + readingType: assertion + mutability: Mutability::Write|Mutability::Read + interfaces: + xyz.openbmc_project.State.Decorator.OperationalStatus: + Functional: + Prereqs: + 0x07: + assert: true + deassert: false + type: bool + Offsets: + 0x08: + assert: false + deassert: true + type: bool + xyz.openbmc_project.Inventory.Item: + Present: + Offsets: + 0x07: + assert: true + deassert: false + type: bool + skipOn: deassert +0x52: + sensorType: 0x07 + path: /system/chassis/motherboard/cpu1/core15 + sensorReadingType: 0x6F + serviceInterface: xyz.openbmc_project.Inventory.Manager + readingType: assertion + mutability: Mutability::Write|Mutability::Read + interfaces: + xyz.openbmc_project.State.Decorator.OperationalStatus: + Functional: + Prereqs: + 0x07: + assert: true + deassert: false + type: bool + Offsets: + 0x08: + assert: false + deassert: true + type: bool + xyz.openbmc_project.Inventory.Item: + Present: + Offsets: + 0x07: + assert: true + deassert: false + type: bool + skipOn: deassert +0x53: + sensorType: 0x07 + path: /system/chassis/motherboard/cpu1/core16 + sensorReadingType: 0x6F + serviceInterface: xyz.openbmc_project.Inventory.Manager + readingType: assertion + mutability: Mutability::Write|Mutability::Read + interfaces: + xyz.openbmc_project.State.Decorator.OperationalStatus: + Functional: + Prereqs: + 0x07: + assert: true + deassert: false + type: bool + Offsets: + 0x08: + assert: false + deassert: true + type: bool + xyz.openbmc_project.Inventory.Item: + Present: + Offsets: + 0x07: + assert: true + deassert: false + type: bool + skipOn: deassert +0x54: + sensorType: 0x07 + path: /system/chassis/motherboard/cpu1/core17 + sensorReadingType: 0x6F + serviceInterface: xyz.openbmc_project.Inventory.Manager + readingType: assertion + mutability: Mutability::Write|Mutability::Read + interfaces: + xyz.openbmc_project.State.Decorator.OperationalStatus: + Functional: + Prereqs: + 0x07: + assert: true + deassert: false + type: bool + Offsets: + 0x08: + assert: false + deassert: true + type: bool + xyz.openbmc_project.Inventory.Item: + Present: + Offsets: + 0x07: + assert: true + deassert: false + type: bool + skipOn: deassert +0x55: + sensorType: 0x07 + path: /system/chassis/motherboard/cpu1/core18 + sensorReadingType: 0x6F + serviceInterface: xyz.openbmc_project.Inventory.Manager + readingType: assertion + mutability: Mutability::Write|Mutability::Read + interfaces: + xyz.openbmc_project.State.Decorator.OperationalStatus: + Functional: + Prereqs: + 0x07: + assert: true + deassert: false + type: bool + Offsets: + 0x08: + assert: false + deassert: true + type: bool + xyz.openbmc_project.Inventory.Item: + Present: + Offsets: + 0x07: + assert: true + deassert: false + type: bool + skipOn: deassert +0x56: + sensorType: 0x07 + path: /system/chassis/motherboard/cpu1/core19 + sensorReadingType: 0x6F + serviceInterface: xyz.openbmc_project.Inventory.Manager + readingType: assertion + mutability: Mutability::Write|Mutability::Read + interfaces: + xyz.openbmc_project.State.Decorator.OperationalStatus: + Functional: + Prereqs: + 0x07: + assert: true + deassert: false + type: bool + Offsets: + 0x08: + assert: false + deassert: true + type: bool + xyz.openbmc_project.Inventory.Item: + Present: + Offsets: + 0x07: + assert: true + deassert: false + type: bool + skipOn: deassert +0x57: + sensorType: 0x07 + path: /system/chassis/motherboard/cpu1/core20 + sensorReadingType: 0x6F + serviceInterface: xyz.openbmc_project.Inventory.Manager + readingType: assertion + mutability: Mutability::Write|Mutability::Read + interfaces: + xyz.openbmc_project.State.Decorator.OperationalStatus: + Functional: + Prereqs: + 0x07: + assert: true + deassert: false + type: bool + Offsets: + 0x08: + assert: false + deassert: true + type: bool + xyz.openbmc_project.Inventory.Item: + Present: + Offsets: + 0x07: + assert: true + deassert: false + type: bool + skipOn: deassert +0x58: + sensorType: 0x07 + path: /system/chassis/motherboard/cpu1/core21 + sensorReadingType: 0x6F + serviceInterface: xyz.openbmc_project.Inventory.Manager + readingType: assertion + mutability: Mutability::Write|Mutability::Read + interfaces: + xyz.openbmc_project.State.Decorator.OperationalStatus: + Functional: + Prereqs: + 0x07: + assert: true + deassert: false + type: bool + Offsets: + 0x08: + assert: false + deassert: true + type: bool + xyz.openbmc_project.Inventory.Item: + Present: + Offsets: + 0x07: + assert: true + deassert: false + type: bool + skipOn: deassert +0x59: + sensorType: 0x07 + path: /system/chassis/motherboard/cpu1/core22 + sensorReadingType: 0x6F + serviceInterface: xyz.openbmc_project.Inventory.Manager + readingType: assertion + mutability: Mutability::Write|Mutability::Read + interfaces: + xyz.openbmc_project.State.Decorator.OperationalStatus: + Functional: + Prereqs: + 0x07: + assert: true + deassert: false + type: bool + Offsets: + 0x08: + assert: false + deassert: true + type: bool + xyz.openbmc_project.Inventory.Item: + Present: + Offsets: + 0x07: + assert: true + deassert: false + type: bool + skipOn: deassert +0x5a: + sensorType: 0x07 + path: /system/chassis/motherboard/cpu1/core23 + sensorReadingType: 0x6F + serviceInterface: xyz.openbmc_project.Inventory.Manager + readingType: assertion + mutability: Mutability::Write|Mutability::Read + interfaces: + xyz.openbmc_project.State.Decorator.OperationalStatus: + Functional: + Prereqs: + 0x07: + assert: true + deassert: false + type: bool + Offsets: + 0x08: + assert: false + deassert: true + type: bool + xyz.openbmc_project.Inventory.Item: + Present: + Offsets: + 0x07: + assert: true + deassert: false + type: bool + skipOn: deassert diff --git a/meta-rcs/meta-blackbird/recipes-phosphor/leds/blackbird-led-manager-config-native.bb b/meta-rcs/meta-blackbird/recipes-phosphor/leds/blackbird-led-manager-config-native.bb new file mode 100644 index 000000000..54e37d9a9 --- /dev/null +++ b/meta-rcs/meta-blackbird/recipes-phosphor/leds/blackbird-led-manager-config-native.bb @@ -0,0 +1,20 @@ +SUMMARY = "Phosphor LED Group Management for Blackbird" +PR = "r1" + +LICENSE = "Apache-2.0" +LIC_FILES_CHKSUM = "file://${IBMBASE}/COPYING.apache-2.0;md5=34400b68072d710fecd0a2940a0d1658" + +inherit native + +PROVIDES += "virtual/phosphor-led-manager-config-native" + +SRC_URI += "file://led.yaml" +S = "${WORKDIR}" + +# Overwrite the example led layout yaml file prior +# to building the phosphor-led-manager package +do_install() { + SRC=${S} + DEST=${D}${datadir}/phosphor-led-manager + install -D ${SRC}/led.yaml ${DEST}/led.yaml +} diff --git a/meta-rcs/meta-blackbird/recipes-phosphor/leds/blackbird-led-manager-config/led.yaml b/meta-rcs/meta-blackbird/recipes-phosphor/leds/blackbird-led-manager-config/led.yaml new file mode 100755 index 000000000..f0e5cf1d4 --- /dev/null +++ b/meta-rcs/meta-blackbird/recipes-phosphor/leds/blackbird-led-manager-config/led.yaml @@ -0,0 +1,36 @@ +bmc_booted: + power: + Action: 'Off' + Priority: 'On' + + bmc_ready: + Action: 'On' + +power_on: + power: + Action: 'On' + DutyOn: 50 + Period: 0 + Priority: 'On' + +enclosure_fault: + fault: + Action: 'On' + +enclosure_identify: + identify: + Action: 'Blink' + DutyOn: 50 + Period: 1000 + +# The Op Panel on the Blackbird system holds a multicolor LED. +# Both the 'fault' and 'identify' gpios are wired to the same LED. +# By holding one in 'on' while the other in 'blink' state, ensures +# the manufacturing process can verify both colors function +lamp_test: + fault: + Action: 'Blink' + DutyOn: 50 + Period: 1000 + identify: + Action: 'On' diff --git a/meta-rcs/meta-blackbird/recipes-phosphor/mboxd/mboxd_%.bbappend b/meta-rcs/meta-blackbird/recipes-phosphor/mboxd/mboxd_%.bbappend new file mode 100644 index 000000000..8b6248a46 --- /dev/null +++ b/meta-rcs/meta-blackbird/recipes-phosphor/mboxd/mboxd_%.bbappend @@ -0,0 +1 @@ +MBOXD_FLASH_SIZE = "64M" diff --git a/meta-rcs/meta-blackbird/recipes-phosphor/network/network/ncsi-netlink.service b/meta-rcs/meta-blackbird/recipes-phosphor/network/network/ncsi-netlink.service new file mode 100644 index 000000000..44b34195e --- /dev/null +++ b/meta-rcs/meta-blackbird/recipes-phosphor/network/network/ncsi-netlink.service @@ -0,0 +1,13 @@ +[Unit] +Description=Stop the ethernet link failover +Wants=xyz.openbmc_project.Network.service +After=xyz.openbmc_project.Network.service + +[Service] +Restart=no +ExecStart=/usr/bin/env ncsi-netlink --set -x 2 -p 0 -c 0 +SyslogIdentifier=ncsi-netlink +Type=oneshot + +[Install] +WantedBy=multi-user.target diff --git a/meta-rcs/meta-blackbird/recipes-phosphor/network/phosphor-network_%.bbappend b/meta-rcs/meta-blackbird/recipes-phosphor/network/phosphor-network_%.bbappend new file mode 100644 index 000000000..5137f4e00 --- /dev/null +++ b/meta-rcs/meta-blackbird/recipes-phosphor/network/phosphor-network_%.bbappend @@ -0,0 +1,8 @@ +FILESEXTRAPATHS_prepend := "${THISDIR}/network:" +SRC_URI += "file://ncsi-netlink.service" +SYSTEMD_SERVICE_${PN} += "ncsi-netlink.service" + +do_install_append() { + install -d ${D}${systemd_system_unitdir} + install -m 0644 ${WORKDIR}/ncsi-netlink.service ${D}${systemd_system_unitdir} +} diff --git a/meta-rcs/meta-blackbird/recipes-phosphor/packagegroups/packagegroup-obmc-apps.bbappend b/meta-rcs/meta-blackbird/recipes-phosphor/packagegroups/packagegroup-obmc-apps.bbappend new file mode 100644 index 000000000..74866b373 --- /dev/null +++ b/meta-rcs/meta-blackbird/recipes-phosphor/packagegroups/packagegroup-obmc-apps.bbappend @@ -0,0 +1 @@ +RDEPENDS_${PN}-inventory += " openpower-occ-control phosphor-cooling-type" diff --git a/meta-rcs/meta-blackbird/recipes-phosphor/sensors/phosphor-hwmon/70-hwmon.rules b/meta-rcs/meta-blackbird/recipes-phosphor/sensors/phosphor-hwmon/70-hwmon.rules new file mode 100644 index 000000000..cdc9b9c54 --- /dev/null +++ b/meta-rcs/meta-blackbird/recipes-phosphor/sensors/phosphor-hwmon/70-hwmon.rules @@ -0,0 +1,3 @@ +SUBSYSTEM=="hwmon", ACTION=="add", DRIVERS!="occ-hwmon", PROGRAM="/bin/systemd-escape -p '%E{OF_FULLNAME}'", RUN="/bin/systemctl start xyz.openbmc_project.Hwmon@%c.service" +SUBSYSTEM=="hwmon", ACTION=="add", DRIVERS=="occ-hwmon", RUN="/usr/bin/start_hwmon.sh start %p %E{OF_FULLNAME}" +SUBSYSTEM=="hwmon", ACTION=="remove", RUN="/usr/bin/start_hwmon.sh stop %p %E{OF_FULLNAME}" diff --git a/meta-rcs/meta-blackbird/recipes-phosphor/sensors/phosphor-hwmon/obmc/hwmon/ahb/apb/bus@1e78a000/i2c-bus@440/power-supply@68.conf b/meta-rcs/meta-blackbird/recipes-phosphor/sensors/phosphor-hwmon/obmc/hwmon/ahb/apb/bus@1e78a000/i2c-bus@440/power-supply@68.conf new file mode 100644 index 000000000..e463b517c --- /dev/null +++ b/meta-rcs/meta-blackbird/recipes-phosphor/sensors/phosphor-hwmon/obmc/hwmon/ahb/apb/bus@1e78a000/i2c-bus@440/power-supply@68.conf @@ -0,0 +1,23 @@ +LABEL_in1="ps1_input_voltage" +WARNHI_in1="290000" +WARNLO_in1="200000" +CRITHI_in1="300000" +CRITLO_in1="180000" + +LABEL_in2="ps1_output_voltage" +WARNHI_in2="12700" +WARNLO_in2="0" +CRITHI_in2="13000" +CRITLO_in2="0" + +LABEL_curr1="ps1_output_current" +WARNHI_curr1="170000" +WARNLO_curr1="0" +CRITHI_curr1="180000" +CRITLO_curr1="0" + +LABEL_power1="ps1_input_power" +WARNHI_power1="2350000000" +WARNLO_power1="0" +CRITHI_power1="2500000000" +CRITLO_power1="0" diff --git a/meta-rcs/meta-blackbird/recipes-phosphor/sensors/phosphor-hwmon/obmc/hwmon/ahb/apb/bus@1e78a000/i2c-bus@440/power-supply@69.conf b/meta-rcs/meta-blackbird/recipes-phosphor/sensors/phosphor-hwmon/obmc/hwmon/ahb/apb/bus@1e78a000/i2c-bus@440/power-supply@69.conf new file mode 100644 index 000000000..2fadbdec0 --- /dev/null +++ b/meta-rcs/meta-blackbird/recipes-phosphor/sensors/phosphor-hwmon/obmc/hwmon/ahb/apb/bus@1e78a000/i2c-bus@440/power-supply@69.conf @@ -0,0 +1,23 @@ +LABEL_in1="ps0_input_voltage" +WARNHI_in1="290000" +WARNLO_in1="200000" +CRITHI_in1="300000" +CRITLO_in1="180000" + +LABEL_in2="ps0_output_voltage" +WARNHI_in2="12700" +WARNLO_in2="0" +CRITHI_in2="13000" +CRITLO_in2="0" + +LABEL_curr1="ps0_output_current" +WARNHI_curr1="170000" +WARNLO_curr1="0" +CRITHI_curr1="180000" +CRITLO_curr1="0" + +LABEL_power1="ps0_input_power" +WARNHI_power1="2350000000" +WARNLO_power1="0" +CRITHI_power1="2500000000" +CRITLO_power1="0" diff --git a/meta-rcs/meta-blackbird/recipes-phosphor/sensors/phosphor-hwmon/obmc/hwmon/ahb/apb/bus@1e78a000/i2c-bus@440/w83773g@4c.conf b/meta-rcs/meta-blackbird/recipes-phosphor/sensors/phosphor-hwmon/obmc/hwmon/ahb/apb/bus@1e78a000/i2c-bus@440/w83773g@4c.conf new file mode 100644 index 000000000..506687fcd --- /dev/null +++ b/meta-rcs/meta-blackbird/recipes-phosphor/sensors/phosphor-hwmon/obmc/hwmon/ahb/apb/bus@1e78a000/i2c-bus@440/w83773g@4c.conf @@ -0,0 +1,3 @@ +LABEL_temp1 = "pcie" +LABEL_temp2 = "cpu_1_ambient" +LABEL_temp3 = "ambient" diff --git a/meta-rcs/meta-blackbird/recipes-phosphor/sensors/phosphor-hwmon/obmc/hwmon/ahb/apb/pwm-tacho-controller@1e786000.conf b/meta-rcs/meta-blackbird/recipes-phosphor/sensors/phosphor-hwmon/obmc/hwmon/ahb/apb/pwm-tacho-controller@1e786000.conf new file mode 100644 index 000000000..f6360879a --- /dev/null +++ b/meta-rcs/meta-blackbird/recipes-phosphor/sensors/phosphor-hwmon/obmc/hwmon/ahb/apb/pwm-tacho-controller@1e786000.conf @@ -0,0 +1,17 @@ +# Blackbird has 3 fan ports, but the two chassis fans are connected together +LABEL_fan9 = "fan0" +LABEL_fan10 = "fan1" +LABEL_fan11 = "fan2" + +RPM_TARGET_fan9 = "1" +# Fan 1 can be monitored but will not be factored in to automatic PID control +# This is accomplished by setting its RPM control path to a non-existent node +RPM_TARGET_fan10 = "3" +RPM_TARGET_fan11 = "2" + +# PWM nodes use raw mode (0-255 value range) +RAWPWM_fan1 = "1" +RAWPWM_fan2 = "1" + +# Legacy mode +TARGET_MODE = "RPM" diff --git a/meta-rcs/meta-blackbird/recipes-phosphor/sensors/phosphor-hwmon/obmc/hwmon/devices/platform/gpio-fsi/fsi0/slave@00--00/00--00--00--06/sbefifo1-dev0/occ-hwmon.1.conf b/meta-rcs/meta-blackbird/recipes-phosphor/sensors/phosphor-hwmon/obmc/hwmon/devices/platform/gpio-fsi/fsi0/slave@00--00/00--00--00--06/sbefifo1-dev0/occ-hwmon.1.conf new file mode 100644 index 000000000..7752d2bbb --- /dev/null +++ b/meta-rcs/meta-blackbird/recipes-phosphor/sensors/phosphor-hwmon/obmc/hwmon/devices/platform/gpio-fsi/fsi0/slave@00--00/00--00--00--06/sbefifo1-dev0/occ-hwmon.1.conf @@ -0,0 +1,123 @@ +MODE_temp1 = "label" +MODE_temp2 = "label" +MODE_temp3 = "label" +MODE_temp4 = "label" +MODE_temp5 = "label" +MODE_temp6 = "label" +MODE_temp7 = "label" +MODE_temp8 = "label" +MODE_temp9 = "label" +MODE_temp10 = "label" +MODE_temp11 = "label" +MODE_temp12 = "label" +MODE_temp13 = "label" +MODE_temp14 = "label" +MODE_temp15 = "label" +MODE_temp16 = "label" +MODE_temp17 = "label" +MODE_temp18 = "label" +MODE_temp19 = "label" +MODE_temp20 = "label" +MODE_temp21 = "label" +MODE_temp22 = "label" +MODE_temp23 = "label" +MODE_temp24 = "label" +MODE_temp25 = "label" +MODE_temp26 = "label" +MODE_temp27 = "label" +MODE_temp28 = "label" +MODE_temp29 = "label" +MODE_temp30 = "label" +MODE_temp31 = "label" +MODE_temp32 = "label" +MODE_freq1 = "label" +MODE_freq2 = "label" +MODE_freq3 = "label" +MODE_freq4 = "label" +MODE_freq5 = "label" +MODE_freq6 = "label" +MODE_freq7 = "label" +MODE_freq8 = "label" +MODE_freq9 = "label" +MODE_freq10 = "label" +MODE_freq11 = "label" +MODE_freq12 = "label" +MODE_freq13 = "label" +MODE_freq14 = "label" +MODE_freq15 = "label" +MODE_freq16 = "label" +MODE_freq17 = "label" +MODE_freq18 = "label" +MODE_freq19 = "label" +MODE_freq20 = "label" +MODE_freq21 = "label" +MODE_freq22 = "label" +MODE_freq23 = "label" +MODE_freq24 = "label" +MODE_freq25 = "label" +MODE_freq26 = "label" +MODE_freq27 = "label" +MODE_freq28 = "label" +MODE_freq29 = "label" +MODE_freq30 = "label" +MODE_freq31 = "label" +MODE_freq32 = "label" +LABEL_temp91 = "p0_core0_temp" +LABEL_temp92 = "p0_core1_temp" +LABEL_temp93 = "p0_core2_temp" +LABEL_temp94 = "p0_core3_temp" +LABEL_temp95 = "p0_core4_temp" +LABEL_temp96 = "p0_core5_temp" +LABEL_temp97 = "p0_core6_temp" +LABEL_temp98 = "p0_core7_temp" +LABEL_temp99 = "p0_core8_temp" +LABEL_temp100 = "p0_core9_temp" +LABEL_temp101 = "p0_core10_temp" +LABEL_temp102 = "p0_core11_temp" +LABEL_temp103 = "p0_core12_temp" +LABEL_temp104 = "p0_core13_temp" +LABEL_temp105 = "p0_core14_temp" +LABEL_temp106 = "p0_core15_temp" +LABEL_temp107 = "p0_core16_temp" +LABEL_temp108 = "p0_core17_temp" +LABEL_temp109 = "p0_core18_temp" +LABEL_temp110 = "p0_core19_temp" +LABEL_temp111 = "p0_core20_temp" +LABEL_temp112 = "p0_core21_temp" +LABEL_temp113 = "p0_core22_temp" +LABEL_temp114 = "p0_core23_temp" +LABEL_temp27 = "dimm0_temp" +LABEL_temp28 = "dimm1_temp" +LABEL_temp29 = "dimm2_temp" +LABEL_temp30 = "dimm3_temp" +LABEL_temp31 = "dimm4_temp" +LABEL_temp32 = "dimm5_temp" +LABEL_temp33 = "dimm6_temp" +LABEL_temp34 = "dimm7_temp" +LABEL_freq91 = "p0_core0_freq" +LABEL_freq92 = "p0_core1_freq" +LABEL_freq93 = "p0_core2_freq" +LABEL_freq94 = "p0_core3_freq" +LABEL_freq95 = "p0_core4_freq" +LABEL_freq96 = "p0_core5_freq" +LABEL_freq97 = "p0_core6_freq" +LABEL_freq98 = "p0_core7_freq" +LABEL_freq99 = "p0_core8_freq" +LABEL_freq100 = "p0_core9_freq" +LABEL_freq101 = "p0_core10_freq" +LABEL_freq102 = "p0_core11_freq" +LABEL_freq103 = "p0_core12_freq" +LABEL_freq104 = "p0_core13_freq" +LABEL_freq105 = "p0_core14_freq" +LABEL_freq106 = "p0_core15_freq" +LABEL_freq107 = "p0_core16_freq" +LABEL_freq108 = "p0_core17_freq" +LABEL_freq109 = "p0_core18_freq" +LABEL_freq110 = "p0_core19_freq" +LABEL_freq111 = "p0_core20_freq" +LABEL_freq112 = "p0_core21_freq" +LABEL_freq113 = "p0_core22_freq" +LABEL_freq114 = "p0_core23_freq" +LABEL_power2 = "p0_power" +LABEL_power3 = "p0_vdd_power" +LABEL_power4 = "p0_vdn_power" diff --git a/meta-rcs/meta-blackbird/recipes-phosphor/sensors/phosphor-hwmon/obmc/hwmon/devices/platform/gpio-fsi/fsi0/slave@00--00/00--00--00--0a/fsi1/slave@01--00/01--01--00--06/sbefifo2-dev0/occ-hwmon.2.conf b/meta-rcs/meta-blackbird/recipes-phosphor/sensors/phosphor-hwmon/obmc/hwmon/devices/platform/gpio-fsi/fsi0/slave@00--00/00--00--00--0a/fsi1/slave@01--00/01--01--00--06/sbefifo2-dev0/occ-hwmon.2.conf new file mode 100644 index 000000000..d90820d8c --- /dev/null +++ b/meta-rcs/meta-blackbird/recipes-phosphor/sensors/phosphor-hwmon/obmc/hwmon/devices/platform/gpio-fsi/fsi0/slave@00--00/00--00--00--0a/fsi1/slave@01--00/01--01--00--06/sbefifo2-dev0/occ-hwmon.2.conf @@ -0,0 +1,123 @@ +MODE_temp1 = "label" +MODE_temp2 = "label" +MODE_temp3 = "label" +MODE_temp4 = "label" +MODE_temp5 = "label" +MODE_temp6 = "label" +MODE_temp7 = "label" +MODE_temp8 = "label" +MODE_temp9 = "label" +MODE_temp10 = "label" +MODE_temp11 = "label" +MODE_temp12 = "label" +MODE_temp13 = "label" +MODE_temp14 = "label" +MODE_temp15 = "label" +MODE_temp16 = "label" +MODE_temp17 = "label" +MODE_temp18 = "label" +MODE_temp19 = "label" +MODE_temp20 = "label" +MODE_temp21 = "label" +MODE_temp22 = "label" +MODE_temp23 = "label" +MODE_temp24 = "label" +MODE_temp25 = "label" +MODE_temp26 = "label" +MODE_temp27 = "label" +MODE_temp28 = "label" +MODE_temp29 = "label" +MODE_temp30 = "label" +MODE_temp31 = "label" +MODE_temp32 = "label" +MODE_freq1 = "label" +MODE_freq2 = "label" +MODE_freq3 = "label" +MODE_freq4 = "label" +MODE_freq5 = "label" +MODE_freq6 = "label" +MODE_freq7 = "label" +MODE_freq8 = "label" +MODE_freq9 = "label" +MODE_freq10 = "label" +MODE_freq11 = "label" +MODE_freq12 = "label" +MODE_freq13 = "label" +MODE_freq14 = "label" +MODE_freq15 = "label" +MODE_freq16 = "label" +MODE_freq17 = "label" +MODE_freq18 = "label" +MODE_freq19 = "label" +MODE_freq20 = "label" +MODE_freq21 = "label" +MODE_freq22 = "label" +MODE_freq23 = "label" +MODE_freq24 = "label" +MODE_freq25 = "label" +MODE_freq26 = "label" +MODE_freq27 = "label" +MODE_freq28 = "label" +MODE_freq29 = "label" +MODE_freq30 = "label" +MODE_freq31 = "label" +MODE_freq32 = "label" +LABEL_temp115 = "p1_core0_temp" +LABEL_temp116 = "p1_core1_temp" +LABEL_temp117 = "p1_core2_temp" +LABEL_temp118 = "p1_core3_temp" +LABEL_temp119 = "p1_core4_temp" +LABEL_temp120 = "p1_core5_temp" +LABEL_temp121 = "p1_core6_temp" +LABEL_temp122 = "p1_core7_temp" +LABEL_temp123 = "p1_core8_temp" +LABEL_temp124 = "p1_core9_temp" +LABEL_temp125 = "p1_core10_temp" +LABEL_temp126 = "p1_core11_temp" +LABEL_temp127 = "p1_core12_temp" +LABEL_temp128 = "p1_core13_temp" +LABEL_temp129 = "p1_core14_temp" +LABEL_temp130 = "p1_core15_temp" +LABEL_temp131 = "p1_core16_temp" +LABEL_temp132 = "p1_core17_temp" +LABEL_temp133 = "p1_core18_temp" +LABEL_temp134 = "p1_core19_temp" +LABEL_temp135 = "p1_core20_temp" +LABEL_temp136 = "p1_core21_temp" +LABEL_temp137 = "p1_core22_temp" +LABEL_temp138 = "p1_core23_temp" +LABEL_temp35 = "dimm8_temp" +LABEL_temp36 = "dimm9_temp" +LABEL_temp37 = "dimm10_temp" +LABEL_temp38 = "dimm11_temp" +LABEL_temp39 = "dimm12_temp" +LABEL_temp40 = "dimm13_temp" +LABEL_temp41 = "dimm14_temp" +LABEL_temp42 = "dimm15_temp" +LABEL_freq115 = "p1_core0_freq" +LABEL_freq116 = "p1_core1_freq" +LABEL_freq117 = "p1_core2_freq" +LABEL_freq118 = "p1_core3_freq" +LABEL_freq119 = "p1_core4_freq" +LABEL_freq120 = "p1_core5_freq" +LABEL_freq121 = "p1_core6_freq" +LABEL_freq122 = "p1_core7_freq" +LABEL_freq123 = "p1_core8_freq" +LABEL_freq124 = "p1_core9_freq" +LABEL_freq125 = "p1_core10_freq" +LABEL_freq126 = "p1_core11_freq" +LABEL_freq127 = "p1_core12_freq" +LABEL_freq128 = "p1_core13_freq" +LABEL_freq129 = "p1_core14_freq" +LABEL_freq130 = "p1_core15_freq" +LABEL_freq131 = "p1_core16_freq" +LABEL_freq132 = "p1_core17_freq" +LABEL_freq133 = "p1_core18_freq" +LABEL_freq134 = "p1_core19_freq" +LABEL_freq135 = "p1_core20_freq" +LABEL_freq136 = "p1_core21_freq" +LABEL_freq137 = "p1_core22_freq" +LABEL_freq138 = "p1_core23_freq" +LABEL_power2 = "p1_power" +LABEL_power3 = "p1_vdd_power" +LABEL_power4 = "p1_vdn_power" diff --git a/meta-rcs/meta-blackbird/recipes-phosphor/sensors/phosphor-hwmon/xyz.openbmc_project.Hwmon@.service b/meta-rcs/meta-blackbird/recipes-phosphor/sensors/phosphor-hwmon/xyz.openbmc_project.Hwmon@.service new file mode 100644 index 000000000..b930b5711 --- /dev/null +++ b/meta-rcs/meta-blackbird/recipes-phosphor/sensors/phosphor-hwmon/xyz.openbmc_project.Hwmon@.service @@ -0,0 +1,10 @@ +[Unit] +Description=Phosphor Hwmon Poller +ConditionFileNotEmpty=/etc/default/obmc/hwmon/%I.conf +After=xyz.openbmc_project.ObjectMapper.service + +[Service] +Restart=on-failure +ExecStart=/usr/bin/env phosphor-hwmon-readd -o %I +SyslogIdentifier=phosphor-hwmon-readd +EnvironmentFile=/etc/default/obmc/hwmon/%I.conf diff --git a/meta-rcs/meta-blackbird/recipes-phosphor/sensors/phosphor-hwmon_%.bbappend b/meta-rcs/meta-blackbird/recipes-phosphor/sensors/phosphor-hwmon_%.bbappend new file mode 100644 index 000000000..0dff905b2 --- /dev/null +++ b/meta-rcs/meta-blackbird/recipes-phosphor/sensors/phosphor-hwmon_%.bbappend @@ -0,0 +1,21 @@ +FILESEXTRAPATHS_prepend := "${THISDIR}/${PN}:" + +BLACKBIRD_CHIPS = " \ + pwm-tacho-controller@1e786000 \ + bus@1e78a000/i2c-bus@440/w83773g@4c \ + bus@1e78a000/i2c-bus@440/power-supply@68 \ + bus@1e78a000/i2c-bus@440/power-supply@69 \ + " +BLACKBIRD_ITEMSFMT = "ahb/apb/{0}.conf" +BLACKBIRD_ITEMS = "${@compose_list(d, 'BLACKBIRD_ITEMSFMT', 'BLACKBIRD_CHIPS')}" + +BLACKBIRD_OCCS = " \ + 00--00--00--06/sbefifo1-dev0/occ-hwmon.1 \ + " + +BLACKBIRD_OCCSFMT = "devices/platform/gpio-fsi/fsi0/slave@00--00/{0}.conf" +BLACKBIRD_OCCITEMS = "${@compose_list(d, 'BLACKBIRD_OCCSFMT', 'BLACKBIRD_OCCS')}" + +ENVS = "obmc/hwmon/{0}" +SYSTEMD_ENVIRONMENT_FILE_${PN} += "${@compose_list(d, 'ENVS', 'BLACKBIRD_ITEMS')}" +SYSTEMD_ENVIRONMENT_FILE_${PN} += "${@compose_list(d, 'ENVS', 'BLACKBIRD_OCCITEMS')}" diff --git a/meta-rcs/meta-blackbird/recipes-phosphor/skeleton/obmc-libobmc-intf/gpio_defs.json b/meta-rcs/meta-blackbird/recipes-phosphor/skeleton/obmc-libobmc-intf/gpio_defs.json new file mode 100644 index 000000000..9790e958c --- /dev/null +++ b/meta-rcs/meta-blackbird/recipes-phosphor/skeleton/obmc-libobmc-intf/gpio_defs.json @@ -0,0 +1,66 @@ +{ + "gpio_configs": { + + "power_config": { + "power_good_in": "SYS_PWROK_BUFF", + "power_up_outs": [ + { "name": "BMC_POWER_UP", "polarity": true} + ], + "reset_outs": [ + ] + } + }, + + "gpio_definitions": [ + { + "name": "BMC_POWER_UP", + "pin": "D1", + "direction": "out" + }, + { + "name": "SYS_PWROK_BUFF", + "pin": "D2", + "direction": "in" + }, + { + "name": "BMC_WD_CLEAR_PULSE_N", + "pin": "N5", + "direction": "falling" + }, + { + "name": "CHECKSTOP", + "pin": "J2", + "direction": "falling" + }, + { + "name": "BMC_CP0_RESET_N", + "pin": "A1", + "direction": "out" + }, + { + "name": "BMC_CP0_PERST_ENABLE_R", + "pin": "A3", + "direction": "out" + }, + { + "name": "BMC_THROTTLE", + "pin": "J3", + "direction": "out" + }, + { + "name": "IDBTN", + "pin": "Q7", + "direction": "out" + }, + { + "name": "POWER_BUTTON", + "pin": "I3", + "direction": "both" + }, + { + "name": "RESET_BUTTON", + "pin": "O6", + "direction": "both" + } + ] +} diff --git a/meta-rcs/meta-blackbird/recipes-phosphor/skeleton/obmc-libobmc-intf_%.bbappend b/meta-rcs/meta-blackbird/recipes-phosphor/skeleton/obmc-libobmc-intf_%.bbappend new file mode 100644 index 000000000..72d991c7e --- /dev/null +++ b/meta-rcs/meta-blackbird/recipes-phosphor/skeleton/obmc-libobmc-intf_%.bbappend @@ -0,0 +1 @@ +FILESEXTRAPATHS_prepend := "${THISDIR}/${PN}:" diff --git a/meta-rcs/meta-blackbird/recipes-phosphor/state/phosphor-state-manager/obmc/phosphor-reboot-host/reboot.conf b/meta-rcs/meta-blackbird/recipes-phosphor/state/phosphor-state-manager/obmc/phosphor-reboot-host/reboot.conf new file mode 100644 index 000000000..25b617371 --- /dev/null +++ b/meta-rcs/meta-blackbird/recipes-phosphor/state/phosphor-state-manager/obmc/phosphor-reboot-host/reboot.conf @@ -0,0 +1,3 @@ +# Sleep 8 seconds on Blackbird to make sure the checkstop status on +# CPU is cleared. See https://github.com/openbmc/openbmc/issues/3330 +REBOOT_DELAY=8 diff --git a/meta-rcs/meta-blackbird/recipes-phosphor/state/phosphor-state-manager_%.bbappend b/meta-rcs/meta-blackbird/recipes-phosphor/state/phosphor-state-manager_%.bbappend new file mode 100644 index 000000000..594e1cc34 --- /dev/null +++ b/meta-rcs/meta-blackbird/recipes-phosphor/state/phosphor-state-manager_%.bbappend @@ -0,0 +1 @@ +FILESEXTRAPATHS_prepend_blackbird := "${THISDIR}/${PN}:" diff --git a/meta-rcs/meta-blackbird/recipes-phosphor/video/fbterm/fb.modes b/meta-rcs/meta-blackbird/recipes-phosphor/video/fbterm/fb.modes new file mode 100644 index 000000000..dfc51fe97 --- /dev/null +++ b/meta-rcs/meta-blackbird/recipes-phosphor/video/fbterm/fb.modes @@ -0,0 +1,7 @@ +mode "800x600-60" + # D: 40.00 MHz, H: 37.879 kHz, V: 60.32 Hz + geometry 800 600 800 600 32 + timings 0 88 40 23 1 128 4 + hsync high + vsync high +endmode diff --git a/meta-rcs/meta-blackbird/recipes-phosphor/video/fbterm/fbterm b/meta-rcs/meta-blackbird/recipes-phosphor/video/fbterm/fbterm new file mode 100644 index 000000000..0cf29d433 --- /dev/null +++ b/meta-rcs/meta-blackbird/recipes-phosphor/video/fbterm/fbterm @@ -0,0 +1 @@ +FB_MODE=800x600-60 diff --git a/meta-rcs/meta-blackbird/recipes-phosphor/video/fbterm/fbterm-static-background.png b/meta-rcs/meta-blackbird/recipes-phosphor/video/fbterm/fbterm-static-background.png Binary files differnew file mode 100644 index 000000000..71a136d36 --- /dev/null +++ b/meta-rcs/meta-blackbird/recipes-phosphor/video/fbterm/fbterm-static-background.png diff --git a/meta-rcs/meta-blackbird/recipes-phosphor/video/fbterm/fbterm.service b/meta-rcs/meta-blackbird/recipes-phosphor/video/fbterm/fbterm.service new file mode 100644 index 000000000..4f2daaaae --- /dev/null +++ b/meta-rcs/meta-blackbird/recipes-phosphor/video/fbterm/fbterm.service @@ -0,0 +1,8 @@ +[Unit] +Description=UART renderer +Requires=obmc-console@ttyVUART0.service + +[Service] +EnvironmentFile={envfiledir}/fbterm +ExecStartPre=/usr/sbin/fbset $FB_MODE +ExecStart=/usr/bin/fbterm-bi /usr/share/images/fbterm-static-background.png --write-only obmc-console-client --color-foreground=7 --color-background=7 --font-names=mono diff --git a/meta-rcs/meta-blackbird/recipes-phosphor/video/fbterm_git.bbappend b/meta-rcs/meta-blackbird/recipes-phosphor/video/fbterm_git.bbappend new file mode 100644 index 000000000..822d1e15e --- /dev/null +++ b/meta-rcs/meta-blackbird/recipes-phosphor/video/fbterm_git.bbappend @@ -0,0 +1 @@ +FILESEXTRAPATHS_prepend := "${THISDIR}/fbterm:" diff --git a/meta-rcs/meta-blackbird/recipes-phosphor/video/lvds-config.bb b/meta-rcs/meta-blackbird/recipes-phosphor/video/lvds-config.bb new file mode 100644 index 000000000..f1707b631 --- /dev/null +++ b/meta-rcs/meta-blackbird/recipes-phosphor/video/lvds-config.bb @@ -0,0 +1,27 @@ +SUMMARY = "Blackbird HDMI Setup" +DESCRIPTION = "Configure Blackbird HDMI transceiver" +PR = "r1" +LICENSE = "GPLv3" +LIC_FILES_CHKSUM = "file://COPYING.GPLv3;md5=d32239bcb673463ab874e80d47fae504" + +inherit obmc-phosphor-systemd + +RDEPENDS_${PN} += "i2c-tools bash" + +S = "${WORKDIR}" +SRC_URI += "file://lvds.sh \ + file://COPYING.GPLv3" + +do_install() { + install -d ${D}${bindir} + install -m 0755 ${WORKDIR}/lvds.sh ${D}${bindir}/lvds.sh +} + +TMPL = "lvds-config@.service" +INSTFMT = "lvds-config@{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-rcs/meta-blackbird/recipes-phosphor/video/lvds-config/COPYING.GPLv3 b/meta-rcs/meta-blackbird/recipes-phosphor/video/lvds-config/COPYING.GPLv3 new file mode 100644 index 000000000..94a9ed024 --- /dev/null +++ b/meta-rcs/meta-blackbird/recipes-phosphor/video/lvds-config/COPYING.GPLv3 @@ -0,0 +1,674 @@ + GNU GENERAL PUBLIC LICENSE + Version 3, 29 June 2007 + + Copyright (C) 2007 Free Software Foundation, Inc. <http://fsf.org/> + Everyone is permitted to copy and distribute verbatim copies + of this license document, but changing it is not allowed. + + Preamble + + The GNU General Public License is a free, copyleft license for +software and other kinds of works. + + The licenses for most software and other practical works are designed +to take away your freedom to share and change the works. By contrast, +the GNU General Public License is intended to guarantee your freedom to +share and change all versions of a program--to make sure it remains free +software for all its users. We, the Free Software Foundation, use the +GNU General Public License for most of our software; it applies also to +any other work released this way by its authors. You can apply it to +your programs, too. + + When we speak of free software, we are referring to freedom, not +price. Our General Public Licenses are designed to make sure that you +have the freedom to distribute copies of free software (and charge for +them if you wish), that you receive source code or can get it if you +want it, that you can change the software or use pieces of it in new +free programs, and that you know you can do these things. + + To protect your rights, we need to prevent others from denying you +these rights or asking you to surrender the rights. Therefore, you have +certain responsibilities if you distribute copies of the software, or if +you modify it: responsibilities to respect the freedom of others. + + For example, if you distribute copies of such a program, whether +gratis or for a fee, you must pass on to the recipients the same +freedoms that you received. You must make sure that they, too, receive +or can get the source code. And you must show them these terms so they +know their rights. + + Developers that use the GNU GPL protect your rights with two steps: +(1) assert copyright on the software, and (2) offer you this License +giving you legal permission to copy, distribute and/or modify it. + + For the developers' and authors' protection, the GPL clearly explains +that there is no warranty for this free software. For both users' and +authors' sake, the GPL requires that modified versions be marked as +changed, so that their problems will not be attributed erroneously to +authors of previous versions. + + Some devices are designed to deny users access to install or run +modified versions of the software inside them, although the manufacturer +can do so. This is fundamentally incompatible with the aim of +protecting users' freedom to change the software. The systematic +pattern of such abuse occurs in the area of products for individuals to +use, which is precisely where it is most unacceptable. Therefore, we +have designed this version of the GPL to prohibit the practice for those +products. If such problems arise substantially in other domains, we +stand ready to extend this provision to those domains in future versions +of the GPL, as needed to protect the freedom of users. + + Finally, every program is threatened constantly by software patents. +States should not allow patents to restrict development and use of +software on general-purpose computers, but in those that do, we wish to +avoid the special danger that patents applied to a free program could +make it effectively proprietary. To prevent this, the GPL assures that +patents cannot be used to render the program non-free. + + The precise terms and conditions for copying, distribution and +modification follow. + + TERMS AND CONDITIONS + + 0. Definitions. + + "This License" refers to version 3 of the GNU General Public License. + + "Copyright" also means copyright-like laws that apply to other kinds of +works, such as semiconductor masks. + + "The Program" refers to any copyrightable work licensed under this +License. Each licensee is addressed as "you". "Licensees" and +"recipients" may be individuals or organizations. + + To "modify" a work means to copy from or adapt all or part of the work +in a fashion requiring copyright permission, other than the making of an +exact copy. The resulting work is called a "modified version" of the +earlier work or a work "based on" the earlier work. + + A "covered work" means either the unmodified Program or a work based +on the Program. + + To "propagate" a work means to do anything with it that, without +permission, would make you directly or secondarily liable for +infringement under applicable copyright law, except executing it on a +computer or modifying a private copy. Propagation includes copying, +distribution (with or without modification), making available to the +public, and in some countries other activities as well. + + To "convey" a work means any kind of propagation that enables other +parties to make or receive copies. Mere interaction with a user through +a computer network, with no transfer of a copy, is not conveying. + + An interactive user interface displays "Appropriate Legal Notices" +to the extent that it includes a convenient and prominently visible +feature that (1) displays an appropriate copyright notice, and (2) +tells the user that there is no warranty for the work (except to the +extent that warranties are provided), that licensees may convey the +work under this License, and how to view a copy of this License. If +the interface presents a list of user commands or options, such as a +menu, a prominent item in the list meets this criterion. + + 1. Source Code. + + The "source code" for a work means the preferred form of the work +for making modifications to it. "Object code" means any non-source +form of a work. + + A "Standard Interface" means an interface that either is an official +standard defined by a recognized standards body, or, in the case of +interfaces specified for a particular programming language, one that +is widely used among developers working in that language. + + The "System Libraries" of an executable work include anything, other +than the work as a whole, that (a) is included in the normal form of +packaging a Major Component, but which is not part of that Major +Component, and (b) serves only to enable use of the work with that +Major Component, or to implement a Standard Interface for which an +implementation is available to the public in source code form. A +"Major Component", in this context, means a major essential component +(kernel, window system, and so on) of the specific operating system +(if any) on which the executable work runs, or a compiler used to +produce the work, or an object code interpreter used to run it. + + The "Corresponding Source" for a work in object code form means all +the source code needed to generate, install, and (for an executable +work) run the object code and to modify the work, including scripts to +control those activities. However, it does not include the work's +System Libraries, or general-purpose tools or generally available free +programs which are used unmodified in performing those activities but +which are not part of the work. For example, Corresponding Source +includes interface definition files associated with source files for +the work, and the source code for shared libraries and dynamically +linked subprograms that the work is specifically designed to require, +such as by intimate data communication or control flow between those +subprograms and other parts of the work. + + The Corresponding Source need not include anything that users +can regenerate automatically from other parts of the Corresponding +Source. + + The Corresponding Source for a work in source code form is that +same work. + + 2. Basic Permissions. + + All rights granted under this License are granted for the term of +copyright on the Program, and are irrevocable provided the stated +conditions are met. This License explicitly affirms your unlimited +permission to run the unmodified Program. The output from running a +covered work is covered by this License only if the output, given its +content, constitutes a covered work. This License acknowledges your +rights of fair use or other equivalent, as provided by copyright law. + + You may make, run and propagate covered works that you do not +convey, without conditions so long as your license otherwise remains +in force. You may convey covered works to others for the sole purpose +of having them make modifications exclusively for you, or provide you +with facilities for running those works, provided that you comply with +the terms of this License in conveying all material for which you do +not control copyright. Those thus making or running the covered works +for you must do so exclusively on your behalf, under your direction +and control, on terms that prohibit them from making any copies of +your copyrighted material outside their relationship with you. + + Conveying under any other circumstances is permitted solely under +the conditions stated below. Sublicensing is not allowed; section 10 +makes it unnecessary. + + 3. Protecting Users' Legal Rights From Anti-Circumvention Law. + + No covered work shall be deemed part of an effective technological +measure under any applicable law fulfilling obligations under article +11 of the WIPO copyright treaty adopted on 20 December 1996, or +similar laws prohibiting or restricting circumvention of such +measures. + + When you convey a covered work, you waive any legal power to forbid +circumvention of technological measures to the extent such circumvention +is effected by exercising rights under this License with respect to +the covered work, and you disclaim any intention to limit operation or +modification of the work as a means of enforcing, against the work's +users, your or third parties' legal rights to forbid circumvention of +technological measures. + + 4. Conveying Verbatim Copies. + + You may convey verbatim copies of the Program's source code as you +receive it, in any medium, provided that you conspicuously and +appropriately publish on each copy an appropriate copyright notice; +keep intact all notices stating that this License and any +non-permissive terms added in accord with section 7 apply to the code; +keep intact all notices of the absence of any warranty; and give all +recipients a copy of this License along with the Program. + + You may charge any price or no price for each copy that you convey, +and you may offer support or warranty protection for a fee. + + 5. Conveying Modified Source Versions. + + You may convey a work based on the Program, or the modifications to +produce it from the Program, in the form of source code under the +terms of section 4, provided that you also meet all of these conditions: + + a) The work must carry prominent notices stating that you modified + it, and giving a relevant date. + + b) The work must carry prominent notices stating that it is + released under this License and any conditions added under section + 7. This requirement modifies the requirement in section 4 to + "keep intact all notices". + + c) You must license the entire work, as a whole, under this + License to anyone who comes into possession of a copy. This + License will therefore apply, along with any applicable section 7 + additional terms, to the whole of the work, and all its parts, + regardless of how they are packaged. This License gives no + permission to license the work in any other way, but it does not + invalidate such permission if you have separately received it. + + d) If the work has interactive user interfaces, each must display + Appropriate Legal Notices; however, if the Program has interactive + interfaces that do not display Appropriate Legal Notices, your + work need not make them do so. + + A compilation of a covered work with other separate and independent +works, which are not by their nature extensions of the covered work, +and which are not combined with it such as to form a larger program, +in or on a volume of a storage or distribution medium, is called an +"aggregate" if the compilation and its resulting copyright are not +used to limit the access or legal rights of the compilation's users +beyond what the individual works permit. Inclusion of a covered work +in an aggregate does not cause this License to apply to the other +parts of the aggregate. + + 6. Conveying Non-Source Forms. + + You may convey a covered work in object code form under the terms +of sections 4 and 5, provided that you also convey the +machine-readable Corresponding Source under the terms of this License, +in one of these ways: + + a) Convey the object code in, or embodied in, a physical product + (including a physical distribution medium), accompanied by the + Corresponding Source fixed on a durable physical medium + customarily used for software interchange. + + b) Convey the object code in, or embodied in, a physical product + (including a physical distribution medium), accompanied by a + written offer, valid for at least three years and valid for as + long as you offer spare parts or customer support for that product + model, to give anyone who possesses the object code either (1) a + copy of the Corresponding Source for all the software in the + product that is covered by this License, on a durable physical + medium customarily used for software interchange, for a price no + more than your reasonable cost of physically performing this + conveying of source, or (2) access to copy the + Corresponding Source from a network server at no charge. + + c) Convey individual copies of the object code with a copy of the + written offer to provide the Corresponding Source. This + alternative is allowed only occasionally and noncommercially, and + only if you received the object code with such an offer, in accord + with subsection 6b. + + d) Convey the object code by offering access from a designated + place (gratis or for a charge), and offer equivalent access to the + Corresponding Source in the same way through the same place at no + further charge. You need not require recipients to copy the + Corresponding Source along with the object code. If the place to + copy the object code is a network server, the Corresponding Source + may be on a different server (operated by you or a third party) + that supports equivalent copying facilities, provided you maintain + clear directions next to the object code saying where to find the + Corresponding Source. Regardless of what server hosts the + Corresponding Source, you remain obligated to ensure that it is + available for as long as needed to satisfy these requirements. + + e) Convey the object code using peer-to-peer transmission, provided + you inform other peers where the object code and Corresponding + Source of the work are being offered to the general public at no + charge under subsection 6d. + + A separable portion of the object code, whose source code is excluded +from the Corresponding Source as a System Library, need not be +included in conveying the object code work. + + A "User Product" is either (1) a "consumer product", which means any +tangible personal property which is normally used for personal, family, +or household purposes, or (2) anything designed or sold for incorporation +into a dwelling. In determining whether a product is a consumer product, +doubtful cases shall be resolved in favor of coverage. For a particular +product received by a particular user, "normally used" refers to a +typical or common use of that class of product, regardless of the status +of the particular user or of the way in which the particular user +actually uses, or expects or is expected to use, the product. A product +is a consumer product regardless of whether the product has substantial +commercial, industrial or non-consumer uses, unless such uses represent +the only significant mode of use of the product. + + "Installation Information" for a User Product means any methods, +procedures, authorization keys, or other information required to install +and execute modified versions of a covered work in that User Product from +a modified version of its Corresponding Source. The information must +suffice to ensure that the continued functioning of the modified object +code is in no case prevented or interfered with solely because +modification has been made. + + If you convey an object code work under this section in, or with, or +specifically for use in, a User Product, and the conveying occurs as +part of a transaction in which the right of possession and use of the +User Product is transferred to the recipient in perpetuity or for a +fixed term (regardless of how the transaction is characterized), the +Corresponding Source conveyed under this section must be accompanied +by the Installation Information. But this requirement does not apply +if neither you nor any third party retains the ability to install +modified object code on the User Product (for example, the work has +been installed in ROM). + + The requirement to provide Installation Information does not include a +requirement to continue to provide support service, warranty, or updates +for a work that has been modified or installed by the recipient, or for +the User Product in which it has been modified or installed. Access to a +network may be denied when the modification itself materially and +adversely affects the operation of the network or violates the rules and +protocols for communication across the network. + + Corresponding Source conveyed, and Installation Information provided, +in accord with this section must be in a format that is publicly +documented (and with an implementation available to the public in +source code form), and must require no special password or key for +unpacking, reading or copying. + + 7. Additional Terms. + + "Additional permissions" are terms that supplement the terms of this +License by making exceptions from one or more of its conditions. +Additional permissions that are applicable to the entire Program shall +be treated as though they were included in this License, to the extent +that they are valid under applicable law. If additional permissions +apply only to part of the Program, that part may be used separately +under those permissions, but the entire Program remains governed by +this License without regard to the additional permissions. + + When you convey a copy of a covered work, you may at your option +remove any additional permissions from that copy, or from any part of +it. (Additional permissions may be written to require their own +removal in certain cases when you modify the work.) You may place +additional permissions on material, added by you to a covered work, +for which you have or can give appropriate copyright permission. + + Notwithstanding any other provision of this License, for material you +add to a covered work, you may (if authorized by the copyright holders of +that material) supplement the terms of this License with terms: + + a) Disclaiming warranty or limiting liability differently from the + terms of sections 15 and 16 of this License; or + + b) Requiring preservation of specified reasonable legal notices or + author attributions in that material or in the Appropriate Legal + Notices displayed by works containing it; or + + c) Prohibiting misrepresentation of the origin of that material, or + requiring that modified versions of such material be marked in + reasonable ways as different from the original version; or + + d) Limiting the use for publicity purposes of names of licensors or + authors of the material; or + + e) Declining to grant rights under trademark law for use of some + trade names, trademarks, or service marks; or + + f) Requiring indemnification of licensors and authors of that + material by anyone who conveys the material (or modified versions of + it) with contractual assumptions of liability to the recipient, for + any liability that these contractual assumptions directly impose on + those licensors and authors. + + All other non-permissive additional terms are considered "further +restrictions" within the meaning of section 10. If the Program as you +received it, or any part of it, contains a notice stating that it is +governed by this License along with a term that is a further +restriction, you may remove that term. If a license document contains +a further restriction but permits relicensing or conveying under this +License, you may add to a covered work material governed by the terms +of that license document, provided that the further restriction does +not survive such relicensing or conveying. + + If you add terms to a covered work in accord with this section, you +must place, in the relevant source files, a statement of the +additional terms that apply to those files, or a notice indicating +where to find the applicable terms. + + Additional terms, permissive or non-permissive, may be stated in the +form of a separately written license, or stated as exceptions; +the above requirements apply either way. + + 8. Termination. + + You may not propagate or modify a covered work except as expressly +provided under this License. Any attempt otherwise to propagate or +modify it is void, and will automatically terminate your rights under +this License (including any patent licenses granted under the third +paragraph of section 11). + + However, if you cease all violation of this License, then your +license from a particular copyright holder is reinstated (a) +provisionally, unless and until the copyright holder explicitly and +finally terminates your license, and (b) permanently, if the copyright +holder fails to notify you of the violation by some reasonable means +prior to 60 days after the cessation. + + Moreover, your license from a particular copyright holder is +reinstated permanently if the copyright holder notifies you of the +violation by some reasonable means, this is the first time you have +received notice of violation of this License (for any work) from that +copyright holder, and you cure the violation prior to 30 days after +your receipt of the notice. + + Termination of your rights under this section does not terminate the +licenses of parties who have received copies or rights from you under +this License. If your rights have been terminated and not permanently +reinstated, you do not qualify to receive new licenses for the same +material under section 10. + + 9. Acceptance Not Required for Having Copies. + + You are not required to accept this License in order to receive or +run a copy of the Program. Ancillary propagation of a covered work +occurring solely as a consequence of using peer-to-peer transmission +to receive a copy likewise does not require acceptance. However, +nothing other than this License grants you permission to propagate or +modify any covered work. These actions infringe copyright if you do +not accept this License. Therefore, by modifying or propagating a +covered work, you indicate your acceptance of this License to do so. + + 10. Automatic Licensing of Downstream Recipients. + + Each time you convey a covered work, the recipient automatically +receives a license from the original licensors, to run, modify and +propagate that work, subject to this License. You are not responsible +for enforcing compliance by third parties with this License. + + An "entity transaction" is a transaction transferring control of an +organization, or substantially all assets of one, or subdividing an +organization, or merging organizations. If propagation of a covered +work results from an entity transaction, each party to that +transaction who receives a copy of the work also receives whatever +licenses to the work the party's predecessor in interest had or could +give under the previous paragraph, plus a right to possession of the +Corresponding Source of the work from the predecessor in interest, if +the predecessor has it or can get it with reasonable efforts. + + You may not impose any further restrictions on the exercise of the +rights granted or affirmed under this License. For example, you may +not impose a license fee, royalty, or other charge for exercise of +rights granted under this License, and you may not initiate litigation +(including a cross-claim or counterclaim in a lawsuit) alleging that +any patent claim is infringed by making, using, selling, offering for +sale, or importing the Program or any portion of it. + + 11. Patents. + + A "contributor" is a copyright holder who authorizes use under this +License of the Program or a work on which the Program is based. The +work thus licensed is called the contributor's "contributor version". + + A contributor's "essential patent claims" are all patent claims +owned or controlled by the contributor, whether already acquired or +hereafter acquired, that would be infringed by some manner, permitted +by this License, of making, using, or selling its contributor version, +but do not include claims that would be infringed only as a +consequence of further modification of the contributor version. For +purposes of this definition, "control" includes the right to grant +patent sublicenses in a manner consistent with the requirements of +this License. + + Each contributor grants you a non-exclusive, worldwide, royalty-free +patent license under the contributor's essential patent claims, to +make, use, sell, offer for sale, import and otherwise run, modify and +propagate the contents of its contributor version. + + In the following three paragraphs, a "patent license" is any express +agreement or commitment, however denominated, not to enforce a patent +(such as an express permission to practice a patent or covenant not to +sue for patent infringement). To "grant" such a patent license to a +party means to make such an agreement or commitment not to enforce a +patent against the party. + + If you convey a covered work, knowingly relying on a patent license, +and the Corresponding Source of the work is not available for anyone +to copy, free of charge and under the terms of this License, through a +publicly available network server or other readily accessible means, +then you must either (1) cause the Corresponding Source to be so +available, or (2) arrange to deprive yourself of the benefit of the +patent license for this particular work, or (3) arrange, in a manner +consistent with the requirements of this License, to extend the patent +license to downstream recipients. "Knowingly relying" means you have +actual knowledge that, but for the patent license, your conveying the +covered work in a country, or your recipient's use of the covered work +in a country, would infringe one or more identifiable patents in that +country that you have reason to believe are valid. + + If, pursuant to or in connection with a single transaction or +arrangement, you convey, or propagate by procuring conveyance of, a +covered work, and grant a patent license to some of the parties +receiving the covered work authorizing them to use, propagate, modify +or convey a specific copy of the covered work, then the patent license +you grant is automatically extended to all recipients of the covered +work and works based on it. + + A patent license is "discriminatory" if it does not include within +the scope of its coverage, prohibits the exercise of, or is +conditioned on the non-exercise of one or more of the rights that are +specifically granted under this License. You may not convey a covered +work if you are a party to an arrangement with a third party that is +in the business of distributing software, under which you make payment +to the third party based on the extent of your activity of conveying +the work, and under which the third party grants, to any of the +parties who would receive the covered work from you, a discriminatory +patent license (a) in connection with copies of the covered work +conveyed by you (or copies made from those copies), or (b) primarily +for and in connection with specific products or compilations that +contain the covered work, unless you entered into that arrangement, +or that patent license was granted, prior to 28 March 2007. + + Nothing in this License shall be construed as excluding or limiting +any implied license or other defenses to infringement that may +otherwise be available to you under applicable patent law. + + 12. No Surrender of Others' Freedom. + + If conditions are imposed on you (whether by court order, agreement or +otherwise) that contradict the conditions of this License, they do not +excuse you from the conditions of this License. If you cannot convey a +covered work so as to satisfy simultaneously your obligations under this +License and any other pertinent obligations, then as a consequence you may +not convey it at all. For example, if you agree to terms that obligate you +to collect a royalty for further conveying from those to whom you convey +the Program, the only way you could satisfy both those terms and this +License would be to refrain entirely from conveying the Program. + + 13. Use with the GNU Affero General Public License. + + Notwithstanding any other provision of this License, you have +permission to link or combine any covered work with a work licensed +under version 3 of the GNU Affero General Public License into a single +combined work, and to convey the resulting work. The terms of this +License will continue to apply to the part which is the covered work, +but the special requirements of the GNU Affero General Public License, +section 13, concerning interaction through a network will apply to the +combination as such. + + 14. Revised Versions of this License. + + The Free Software Foundation may publish revised and/or new versions of +the GNU General Public License from time to time. Such new versions will +be similar in spirit to the present version, but may differ in detail to +address new problems or concerns. + + Each version is given a distinguishing version number. If the +Program specifies that a certain numbered version of the GNU General +Public License "or any later version" applies to it, you have the +option of following the terms and conditions either of that numbered +version or of any later version published by the Free Software +Foundation. If the Program does not specify a version number of the +GNU General Public License, you may choose any version ever published +by the Free Software Foundation. + + If the Program specifies that a proxy can decide which future +versions of the GNU General Public License can be used, that proxy's +public statement of acceptance of a version permanently authorizes you +to choose that version for the Program. + + Later license versions may give you additional or different +permissions. However, no additional obligations are imposed on any +author or copyright holder as a result of your choosing to follow a +later version. + + 15. Disclaimer of Warranty. + + THERE IS NO WARRANTY FOR THE PROGRAM, TO THE EXTENT PERMITTED BY +APPLICABLE LAW. EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT +HOLDERS AND/OR OTHER PARTIES PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY +OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, +THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR +PURPOSE. THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE PROGRAM +IS WITH YOU. SHOULD THE PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF +ALL NECESSARY SERVICING, REPAIR OR CORRECTION. + + 16. Limitation of Liability. + + IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING +WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MODIFIES AND/OR CONVEYS +THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, INCLUDING ANY +GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THE +USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED TO LOSS OF +DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD +PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER PROGRAMS), +EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF +SUCH DAMAGES. + + 17. Interpretation of Sections 15 and 16. + + If the disclaimer of warranty and limitation of liability provided +above cannot be given local legal effect according to their terms, +reviewing courts shall apply local law that most closely approximates +an absolute waiver of all civil liability in connection with the +Program, unless a warranty or assumption of liability accompanies a +copy of the Program in return for a fee. + + END OF TERMS AND CONDITIONS + + How to Apply These Terms to Your New Programs + + If you develop a new program, and you want it to be of the greatest +possible use to the public, the best way to achieve this is to make it +free software which everyone can redistribute and change under these terms. + + To do so, attach the following notices to the program. It is safest +to attach them to the start of each source file to most effectively +state the exclusion of warranty; and each file should have at least +the "copyright" line and a pointer to where the full notice is found. + + <one line to give the program's name and a brief idea of what it does.> + Copyright (C) <year> <name of author> + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation, either version 3 of the License, or + (at your option) any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program. If not, see <http://www.gnu.org/licenses/>. + +Also add information on how to contact you by electronic and paper mail. + + If the program does terminal interaction, make it output a short +notice like this when it starts in an interactive mode: + + <program> Copyright (C) <year> <name of author> + This program comes with ABSOLUTELY NO WARRANTY; for details type `show w'. + This is free software, and you are welcome to redistribute it + under certain conditions; type `show c' for details. + +The hypothetical commands `show w' and `show c' should show the appropriate +parts of the General Public License. Of course, your program's commands +might be different; for a GUI interface, you would use an "about box". + + You should also get your employer (if you work as a programmer) or school, +if any, to sign a "copyright disclaimer" for the program, if necessary. +For more information on this, and how to apply and follow the GNU GPL, see +<http://www.gnu.org/licenses/>. + + The GNU General Public License does not permit incorporating your program +into proprietary programs. If your program is a subroutine library, you +may consider it more useful to permit linking proprietary applications with +the library. If this is what you want to do, use the GNU Lesser General +Public License instead of this License. But first, please read +<http://www.gnu.org/philosophy/why-not-lgpl.html>. diff --git a/meta-rcs/meta-blackbird/recipes-phosphor/video/lvds-config/lvds-config@.service b/meta-rcs/meta-blackbird/recipes-phosphor/video/lvds-config/lvds-config@.service new file mode 100644 index 000000000..9c307bc91 --- /dev/null +++ b/meta-rcs/meta-blackbird/recipes-phosphor/video/lvds-config/lvds-config@.service @@ -0,0 +1,17 @@ +[Unit] +Description=Set up LVDS transceiver +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-poweroff@%i.target +ConditionPathExists=!/run/openbmc/chassis@%i-on + +[Service] +ExecStart=/usr/bin/env lvds.sh +SyslogIdentifier=lvds.sh +Type=oneshot +RemainAfterExit=yes + +[Install] +WantedBy=obmc-chassis-poweron@i.target diff --git a/meta-rcs/meta-blackbird/recipes-phosphor/video/lvds-config/lvds.sh b/meta-rcs/meta-blackbird/recipes-phosphor/video/lvds-config/lvds.sh new file mode 100755 index 000000000..2d0197d26 --- /dev/null +++ b/meta-rcs/meta-blackbird/recipes-phosphor/video/lvds-config/lvds.sh @@ -0,0 +1,56 @@ +#!/bin/bash +# +# Copyright 2018 - 2019 Raptor Engineering, LLC +# Released under the terms of the GPL v3 + +# ***** BMC PINMUX ***** + +# HACK +# Work around pinmux hog failure on cold boot +# Remove this block once the pinmux is fixed in the kernel! +devmem 0x1e6e2094 32 0x00004001 +devmem 0x1e6e208c 32 0x000000ff +devmem 0x1e6e20a4 32 0xfffff000 +devmem 0x1e6e20a8 32 0x000fffff +devmem 0x1e6e6064 32 0x00000080 + + +# ***** SET UP ITE HDMI TRANSCEIVER ***** + +I2C_BUS=5 +I2C_DEV=0x4c + +# ***** GENERAL ***** +# Reset device +i2cset -y ${I2C_BUS} ${I2C_DEV} 0x4 0x1c + + +# ***** VIDEO ***** +# Set bank 0 +i2cset -y ${I2C_BUS} ${I2C_DEV} 0x0f 0x08 # 0x0f[1:0] = 0 + +# AVMute output +i2cset -y ${I2C_BUS} ${I2C_DEV} 0xc1 0x01 # 0xc1[0] = 1 + +# Take device out of reset +i2cset -y ${I2C_BUS} ${I2C_DEV} 0x04 0x00 + +# Enable HDMI transmitter reset +i2cset -y ${I2C_BUS} ${I2C_DEV} 0x61 0x10 + +# Configure input signal +i2cset -y ${I2C_BUS} ${I2C_DEV} 0x70 0x00 # RGB mode, I/O latch at TxClk, non-CCIR656, non-embedded sync, single edge, no PCLK delay +i2cset -y ${I2C_BUS} ${I2C_DEV} 0x90 0x00 # PG horizontal total = 0, H/V sync provided by external driver, active low VSYNC, active low HSYNC, Data Enable provided by external driver + +# Enable DVI mode (works for HDMI as well, host should configure HDMI later in the boot process) +i2cset -y ${I2C_BUS} ${I2C_DEV} 0xc0 0x00 # 0xc0[0] = 0 + +# Release HDMI transmitter reset +i2cset -y ${I2C_BUS} ${I2C_DEV} 0x61 0x00 # 0x61[4] = 0 + +# Un-AVMute output +i2cset -y ${I2C_BUS} ${I2C_DEV} 0xc1 0x00 # 0xc1[0] = 0 + +# ***** AUDIO ***** +# Disable audio channel +i2cset -y ${I2C_BUS} ${I2C_DEV} 0xe0 0x08 # 0xe0[3:0] = 0 diff --git a/meta-rcs/meta-blackbird/recipes-phosphor/video/uart-render-controller/uart-render-controller.service b/meta-rcs/meta-blackbird/recipes-phosphor/video/uart-render-controller/uart-render-controller.service new file mode 100644 index 000000000..e2c51d00d --- /dev/null +++ b/meta-rcs/meta-blackbird/recipes-phosphor/video/uart-render-controller/uart-render-controller.service @@ -0,0 +1,14 @@ + +[Unit] +Description=UART render controller +Requires=xyz.openbmc_project.State.Host.service +After=xyz.openbmc_project.State.Host.service + +[Service] +ExecStart=/usr/sbin/obmc-uart-render-controller \ + /sys/devices/platform/ahb/ahb:apb/1e6e2000.syscon/1e6e2000.syscon:scratch/vga0 \ + /sys/devices/platform/ahb/ahb:apb/1e6e2000.syscon/1e6e2000.syscon:scratch/dvo_mux \ + fbterm.service + +[Install] +WantedBy=multi-user.target diff --git a/meta-rcs/meta-blackbird/recipes-phosphor/video/uart-render-controller_git.bbappend b/meta-rcs/meta-blackbird/recipes-phosphor/video/uart-render-controller_git.bbappend new file mode 100644 index 000000000..173e5227d --- /dev/null +++ b/meta-rcs/meta-blackbird/recipes-phosphor/video/uart-render-controller_git.bbappend @@ -0,0 +1 @@ +FILESEXTRAPATHS_prepend := "${THISDIR}/uart-render-controller:" diff --git a/meta-rcs/meta-blackbird/recipes-phosphor/workbook/blackbird-config_git.bb b/meta-rcs/meta-blackbird/recipes-phosphor/workbook/blackbird-config_git.bb new file mode 100644 index 000000000..9b28915a3 --- /dev/null +++ b/meta-rcs/meta-blackbird/recipes-phosphor/workbook/blackbird-config_git.bb @@ -0,0 +1,6 @@ +SUMMARY = "Blackbird board wiring" +DESCRIPTION = "Blackbird wiring information for the Blackbird OpenPOWER system." +PR = "r1" +PV = "1.0+git${SRCPV}" + +inherit config-in-skeleton diff --git a/meta-rcs/meta-blackbird/recipes.txt b/meta-rcs/meta-blackbird/recipes.txt new file mode 100644 index 000000000..3ec3f4a42 --- /dev/null +++ b/meta-rcs/meta-blackbird/recipes.txt @@ -0,0 +1,2 @@ +recipes-kernel - The kernel and generic applications/libraries with strong kernel dependencies +recipes-phosphor - Phosphor OpenBMC applications and configuration |