Initial commit

This commit is contained in:
Your Name
2026-04-23 17:07:55 +08:00
commit b7e39e063b
16725 changed files with 1625565 additions and 0 deletions
@@ -0,0 +1,4 @@
require conf/distro/openbmc-phosphor.conf
DISTRO_FEATURES:remove = "avahi"
DISTRO_FEATURES:remove = "slp"
+11
View File
@@ -0,0 +1,11 @@
# 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 += "gsj-layer"
BBFILE_PATTERN_gsj-layer := "^${LAYERDIR}/"
LAYERSERIES_COMPAT_gsj-layer = "langdale mickledore"
LAYERDEPENDS_gsj-layer = "core phosphor-layer google-layer quanta-layer"
@@ -0,0 +1,60 @@
KMACHINE = "nuvoton"
KERNEL_DEVICETREE = "${KMACHINE}-npcm730-gsj.dtb"
UBOOT_MACHINE = "PolegSVB_config"
IGPS_MACHINE = "EB"
FLASH_SIZE = "32768"
require conf/machine/include/npcm7xx.inc
require conf/machine/include/obmc-bsp-common.inc
IMAGE_FSTYPES += " cpio.${INITRAMFS_CTYPE}.u-boot"
IMAGE_FSTYPES += " mtd-ubi-tar"
MACHINE_FEATURES += "\
obmc-phosphor-fan-mgmt \
obmc-phosphor-chassis-mgmt \
obmc-phosphor-flash-mgmt \
obmc-host-state-mgmt \
obmc-chassis-state-mgmt \
obmc-bmc-state-mgmt \
"
# Remove unneeded binaries from image
IMAGE_FEATURES:remove = "obmc-bmc-state-mgmt"
IMAGE_FEATURES:remove = "obmc-bmcweb"
IMAGE_FEATURES:remove = "obmc-chassis-state-mgmt"
IMAGE_FEATURES:remove = "obmc-chassis-mgmt"
IMAGE_FEATURES:remove = "obmc-console"
IMAGE_FEATURES:remove = "obmc-devtools"
IMAGE_FEATURES:remove = "obmc-fan-control"
IMAGE_FEATURES:remove = "obmc-fan-mgmt"
IMAGE_FEATURES:remove = "obmc-flash-mgmt"
IMAGE_FEATURES:remove = "obmc-fru-ipmi"
IMAGE_FEATURES:remove = "obmc-health-monitor"
IMAGE_FEATURES:remove = "obmc-host-ipmi"
IMAGE_FEATURES:remove = "obmc-host-state-mgmt"
IMAGE_FEATURES:remove = "obmc-ikvm"
IMAGE_FEATURES:remove = "obmc-inventory"
IMAGE_FEATURES:remove = "obmc-leds"
IMAGE_FEATURES:remove = "obmc-logging-mgmt"
IMAGE_FEATURES:remove = "obmc-remote-logging-mgmt"
IMAGE_FEATURES:remove = "obmc-rng"
IMAGE_FEATURES:remove = "obmc-sensors"
IMAGE_FEATURES:remove = "obmc-settings-mgmt"
IMAGE_FEATURES:remove = "obmc-software"
IMAGE_FEATURES:remove = "obmc-system-mgmt"
IMAGE_FEATURES:remove = "obmc-user-mgmt"
IMAGE_FEATURES:remove = "obmc-user-mgmt-ldap"
IMAGE_FEATURES:remove = "obmc-debug-collector"
IMAGE_FEATURES:remove = "obmc-network-mgmt"
IMAGE_FEATURES:remove = "obmc-telemetry"
OBMC_IMAGE_BASE_INSTALL:remove = "packagegroup-obmc-apps-extras"
PREFERRED_PROVIDER_virtual/obmc-chassis-mgmt = "packagegroup-gsj-apps"
PREFERRED_PROVIDER_virtual/obmc-fan-mgmt = "packagegroup-gsj-apps"
PREFERRED_PROVIDER_virtual/obmc-flash-mgmt = "packagegroup-gsj-apps"
PREFERRED_PROVIDER_virtual/phosphor-ipmi-fru-inventory = "gsj-ipmi-inventory-map-native"
PREFERRED_PROVIDER_virtual/phosphor-ipmi-fru-properties = "gsj-ipmi-fru-properties-native"
PREFERRED_PROVIDER_virtual/phosphor-ipmi-fru-read-inventory = "gsj-ipmi-fru-read-inventory-native"
PREFERRED_PROVIDER_virtual/phosphor-ipmi-sensor-inventory = "gsj-ipmi-sensor-map-native"
PREFERRED_PROVIDER_virtual/phosphor-led-manager-config-native = "gsj-led-manager-config-native"
@@ -0,0 +1,19 @@
# LAYER_CONF_VERSION is increased each time build/conf/bblayers.conf
# changes incompatibly
LCONF_VERSION = "8"
BBPATH = "${TOPDIR}"
BBFILES ?= ""
BBLAYERS ?= " \
##OEROOT##/meta \
##OEROOT##/meta-security/meta-tpm \
##OEROOT##/meta-openembedded/meta-oe \
##OEROOT##/meta-openembedded/meta-networking \
##OEROOT##/meta-openembedded/meta-python \
##OEROOT##/meta-phosphor \
##OEROOT##/meta-nuvoton \
##OEROOT##/meta-google \
##OEROOT##/meta-quanta \
##OEROOT##/meta-quanta/meta-gsj \
"
@@ -0,0 +1,2 @@
Common targets are:
obmc-phosphor-image
@@ -0,0 +1,18 @@
MACHINE ??= "gsj"
DISTRO ?= "openbmc-gsj"
PACKAGE_CLASSES ?= "package_ipk"
SANITY_TESTED_DISTROS:append ?= " *"
EXTRA_IMAGE_FEATURES ?= "debug-tweaks"
USER_CLASSES ?= "buildstats"
PATCHRESOLVE = "noop"
BB_DISKMON_DIRS ??= "\
STOPTASKS,${TMPDIR},1G,100K \
STOPTASKS,${DL_DIR},1G,100K \
STOPTASKS,${SSTATE_DIR},1G,100K \
STOPTASKS,/tmp,100M,100K \
HALT,${TMPDIR},100M,1K \
HALT,${DL_DIR},100M,1K \
HALT,${SSTATE_DIR},100M,1K \
HALT,/tmp,10M,1K"
CONF_VERSION = "2"
@@ -0,0 +1,24 @@
# Configuration file for fw_(printenv/setenv) utility.
# Up to two entries are valid, in this case the redundant
# environment sector is assumed present.
# Notice, that the "Number of sectors" is not required on NOR and SPI-dataflash.
# Futhermore, if the Flash sector size is ommitted, this value is assumed to
# be the same as the Environment size, which is valid for NOR and SPI-dataflash
# NOR example
# MTD device name Device offset Env. size Flash sector size Number of sectors
/dev/mtd2 0x0000 0x40000 0x4000
# MTD SPI-dataflash example
# MTD device name Device offset Env. size Flash sector size Number of sectors
#/dev/mtd5 0x4200 0x4200
#/dev/mtd6 0x4200 0x4200
# NAND example
#/dev/mtd0 0x4000 0x4000 0x20000 2
# Block device example
#/dev/mmcblk0 0xc0000 0x20000
# VFAT example
#/boot/uboot.env 0x0000 0x4000
@@ -0,0 +1,7 @@
FILESEXTRAPATHS:prepend:gsj := "${THISDIR}/${PN}:"
SRC_URI:append:gsj = " file://fw_env.config"
do_install:append:gsj () {
install -m 644 ${WORKDIR}/fw_env.config ${D}${sysconfdir}/fw_env.config
}
@@ -0,0 +1,11 @@
SYSTEMD_SERVICE:${PN}:remove:gsj = " \
gbmc-bare-metal-active.target \
gbmc-host-poweroff.target \
gbmc-psu-hardreset.target \
gbmc-psu-hardreset-pre.target \
gbmc-psu-hardreset-time.service \
"
do_install:append:gsj() {
rm -r ${D}${systemd_unitdir}
}
@@ -0,0 +1,26 @@
SUMMARY = "OpenBMC Quanta Detect Fan Fail Service"
DESCRIPTION = "OpenBMC Quanta Detect Fan Fail Daemon."
PR = "r1"
LICENSE = "Apache-2.0"
LIC_FILES_CHKSUM = "file://${COREBASE}/meta/files/common-licenses/Apache-2.0;md5=89aea4e17d99a7cacdbeed46a0096b10"
inherit systemd
DEPENDS += "systemd"
RDEPENDS:${PN} += "bash"
FILESEXTRAPATHS:append:gsj := "${THISDIR}/files:"
SRC_URI:append:gsj = " file://detect-fan-fail.sh \
file://detect-fan-fail.service \
"
do_install:append:gsj() {
install -d ${D}${bindir}
install -m 0755 ${WORKDIR}/detect-fan-fail.sh ${D}${bindir}/
install -d ${D}${systemd_unitdir}/system/
install -m 0644 ${WORKDIR}/detect-fan-fail.service ${D}${systemd_unitdir}/system
}
SYSTEMD_PACKAGES = "${PN}"
SYSTEMD_SERVICE:${PN} = "detect-fan-fail.service"
@@ -0,0 +1,10 @@
[Unit]
Description=Detect Fan Fail Manager
After=phosphor-pid-control.service
[Service]
ExecStart=/usr/bin/detect-fan-fail.sh
Restart=always
[Install]
WantedBy=multi-user.target
@@ -0,0 +1,58 @@
#!/bin/bash
# get fan state by d-bus command
function get_fan_state() {
get_property_path='xyz.openbmc_project.Sensor.Threshold.Critical CriticalAlarmLow'
fan_state="$(busctl get-property "$1" "$2" "$get_property_path" | awk '{print $2}')"
echo "$fan_state"
}
# set fan pwm by d-bus command
function set_fan_value() {
set_property_path='xyz.openbmc_project.Control.FanPwm'
busctl set-property "$1" "$2" $set_property_path Target t 255
}
fan_tach_path=( '/xyz/openbmc_project/sensors/fan_tach/Fan0_0_RPM'
'/xyz/openbmc_project/sensors/fan_tach/Fan0_1_RPM'
'/xyz/openbmc_project/sensors/fan_tach/Fan1_0_RPM'
'/xyz/openbmc_project/sensors/fan_tach/Fan1_1_RPM'
'/xyz/openbmc_project/sensors/fan_tach/Fan2_0_RPM'
'/xyz/openbmc_project/sensors/fan_tach/Fan2_1_RPM'
)
check_fail_flag=0
current_fan_state=()
while true; do
hwmon_path="$(mapper get-service "${fan_tach_path[0]}")"
for i in "${!fan_tach_path[@]}";
do
current_fan_state[i%2]=$(get_fan_state "$hwmon_path" "${fan_tach_path[$i]}")
#Compare state of dual rotors with CriticalAlarmLow to check if fan fail
if [ ${#current_fan_state[@]} -eq 2 ];then
if [ "${current_fan_state[0]}" == "true" ] && \
[ "${current_fan_state[1]}" == "true" ] ;then
if [ $check_fail_flag -eq 0 ];then
systemctl stop phosphor-pid-control
for j in "${!fan_tach_path[@]}";
do
#If fan fail is detect, set other fan rpm to pwm 255.
set_fan_value "$hwmon_path" "${fan_tach_path[$j]}"
check_fail_flag=1
done
fi
current_fan_state=()
break
fi
current_fan_state=()
fi
#fans are going to normal.
if [ "$i" -eq $((${#fan_tach_path[@]}-1)) ] && [ $check_fail_flag -eq 1 ]; then
check_fail_flag=0
systemctl restart phosphor-pid-control
fi
done
sleep 2
done
@@ -0,0 +1,12 @@
[Unit]
Description=Hotswap Controller Setting Changing
Before=xyz.openbmc_project.Hwmon@.service
[Service]
ExecStart=/usr/bin/gsj-hotswap-change-setting.sh
Restart=no
Type=oneshot
RemainAfterExit=true
[Install]
WantedBy=multi-user.target
@@ -0,0 +1,67 @@
#!/bin/bash
# Purpose:
# The purpose of the script is to change the CB/CL ratio setting of the hotswap controller from 1.9x to 3.9x
I2C_BUS=11
CHIP_ADDR=0x15
GPIO_ID=91 #Revision ID
GPIO_BasePath=/sys/class/gpio
function set_hotswap_reg()
{
#set reg "0xd9" bit 3 to 1
i2cset -f -y $I2C_BUS $CHIP_ADDR 0xd9 0x08
}
function get_hotswap_value()
{
#get the value of reg "0xd9", return value should be "0x08"
i2cget -f -y $I2C_BUS $CHIP_ADDR 0xd9
}
function export_gpio()
{
if [ -d "$GPIO_BasePath/gpio$GPIO_ID" ]; then
echo "gpio$GPIO_ID folder exist, skip export."
else
echo "Export gpio$GPIO_ID..."
echo $GPIO_ID > $GPIO_BasePath/export
fi
}
function get_gpio_value()
{
cat $GPIO_BasePath/gpio$GPIO_ID/value
}
function setting_hotswap()
{
echo "setting hotswap controller..."
set_hotswap_reg
for i in {0..3};
do
if [ "$i" == "3" ];then
echo "change hotswap controller setting failed after retry 3 times."
else
hotswap_value=$(get_hotswap_value)
echo "get hotswap controller return value : $hotswap_value"
if [ "$hotswap_value" == "0x08" ];then
echo "change hotswap controller setting success."
break;
else
echo "hotswap controller setting failed, retry $i times..."
fi
fi
done
}
export_gpio
gpio_value=$(get_gpio_value)
if [ "$gpio_value" == "1" ];then
echo "gpio$GPIO_ID value is: $gpio_value, setting hotswap."
setting_hotswap
else
echo "gpio$GPIO_ID value is: $gpio_value, no need to set hotswap."
fi
@@ -0,0 +1,26 @@
SUMMARY = "Hotswap Controller Setting Changing"
DESCRIPTION = "Hotswap Controller Setting Changing Daemon"
PR = "r1"
LICENSE = "Apache-2.0"
LIC_FILES_CHKSUM = "file://${COREBASE}/meta/files/common-licenses/Apache-2.0;md5=89aea4e17d99a7cacdbeed46a0096b10"
inherit systemd
DEPENDS += "systemd"
RDEPENDS:${PN} += "bash"
FILESEXTRAPATHS:prepend := "${THISDIR}/files:"
SRC_URI:append = " file://gsj-hotswap-change-setting.sh \
file://gsj-hotswap-change-setting.service \
"
do_install() {
install -d ${D}${bindir}
install -m 0755 ${WORKDIR}/gsj-hotswap-change-setting.sh ${D}${bindir}/
install -d ${D}${systemd_unitdir}/system/
install -m 0644 ${WORKDIR}/gsj-hotswap-change-setting.service ${D}${systemd_unitdir}/system
}
SYSTEMD_PACKAGES = "${PN}"
SYSTEMD_SERVICE:${PN} = "gsj-hotswap-change-setting.service"
@@ -0,0 +1,30 @@
SUMMARY = "OpenBMC for GSJ system - Applications"
PR = "r1"
inherit packagegroup
PROVIDES = "${PACKAGES}"
PACKAGES = " \
${PN}-chassis \
${PN}-fans \
${PN}-flash \
"
PROVIDES += "virtual/obmc-chassis-mgmt"
PROVIDES += "virtual/obmc-fan-mgmt"
PROVIDES += "virtual/obmc-flash-mgmt"
RPROVIDES:${PN}-chassis += "virtual-obmc-chassis-mgmt"
RPROVIDES:${PN}-fans += "virtual-obmc-fan-mgmt"
RPROVIDES:${PN}-flash += "virtual-obmc-flash-mgmt"
SUMMARY:${PN}-chassis = "GSJ Chassis"
RDEPENDS:${PN}-chassis = ""
SUMMARY:${PN}-fans = "GSJ Fans"
RDEPENDS:${PN}-fans = ""
SUMMARY:${PN}-flash = "GSJ Flash"
RDEPENDS:${PN}-flash = " \
phosphor-ipmi-flash \
"
@@ -0,0 +1,46 @@
### NVME SSD Power Control Manager
#### Description
The package mantains for SSD power control and related noification handle Deamon
#### Design
The service power supply design follow PCI Express Card Electromechanical Specification Revision 3.0 in Section 2.2
nvme_gpio.service follow section 2.2.1 Initial power-Up to initinal and adjust related signal.
nvme_powermanager.service follow section 2.2.2 power management states monitor PRESENT signal and update related signal.
#### Process
* Plugging
1. U2_[SSD_index] PRSNT_N will be input low
2. Set PWR_U2_[SSD_index]_EN to high
3. Check PWRGD_U2_[SSD_index] is high
4-1. If PWRGD_U2_[SSD_index] is high (PWR Good)
- Wait 5ms
- Enable PCI Clock by SMBus 9FGL0851
- Wait 100ms
- Set RST_BMC_U2 to high
4-2. If PWRGD_U2_[SSD_index] is low (PWR Fail)
- Set RST_BMC_U2_[SSD_index]_R_N to low
- Wait 100ms
- Disable PCI Clock by SMBus
* Removing
1. U2_[SSD_index] PRSNT_N will be input high
2. Set RST_BMC_U2 to low
3. Wait 100ms
4. Disable PCI Clock by SMBus
5. Wait 5ms
6. PWR_U2_[SSD_index]_EN to low
#### Test
1. PRESENT detect SSD: The hardware design has been implemented.
2. Initial SSD slot Power output: nvme_gpio service has tested on Module. It could sucess initial gpios and set correct power output.
3. Detect PRESENT and change power setting: nvme_powermanager service has tested on Module. It could success detect SSD plugged or removal change power output.
4. Improve initial power-up sequence: For matched hardware default initial power-up setting, the nvme_gpio service only set unplugged slot related signal.
5. Improve service execute sequence: nvme_powermanager.service must wait for nvme_gpio.service ensure gpio export complete.
@@ -0,0 +1,59 @@
#!/bin/bash
# shellcheck source=meta-quanta/meta-gsj/recipes-gsj/quanta-nvme-powerctrl/files/nvme_powerctrl_library.sh
source /usr/libexec/nvme_powerctrl_library.sh
function set_gpio() {
#$1 gpio pin
echo "$1" > /sys/class/gpio/export
}
echo "Read Clock Gen Value is: $CLOCK_GEN_VALUE"
## Initial U2_PRESENT_N
for i in "${!U2_PRESENT[@]}";
do
set_gpio "${U2_PRESENT[$i]}";
set_gpio_direction "${U2_PRESENT[$i]}" 'in';
echo "Read $i SSD present: $(read_gpio_input "${U2_PRESENT[$i]}")"
done
## Initial POWER_U2_EN
for i in "${!POWER_U2[@]}";
do
set_gpio "${POWER_U2[$i]}";
done
## Initial PWRGD_U2
for i in "${!PWRGD_U2[@]}";
do
set_gpio "${PWRGD_U2[$i]}";
set_gpio_direction "${PWRGD_U2[$i]}" 'in';
echo "Read $i SSD Power Good: $(read_gpio_input "${PWRGD_U2[$i]}")"
done
## Initial RST_BMC_U2
for i in "${!RST_BMC_U2[@]}";
do
set_gpio "${RST_BMC_U2[$i]}";
done
### Initial related Power by Present
for i in {0..7};
do
update_value=$(printf '%x\n' "$((0x01 << i))")
if [ "$(read_gpio_input "${U2_PRESENT[$i]}")" == $PLUGGED ];then
CLOCK_GEN_VALUE=$(printf '0x%x\n' \
"$((CLOCK_GEN_VALUE | 0x$update_value))")
else
set_gpio_direction "${RST_BMC_U2[$i]}" "low"
set_gpio_direction "${POWER_U2[$i]}" "low"
CLOCK_GEN_VALUE=$(printf '0x%x\n' \
"$((CLOCK_GEN_VALUE & ~0x$update_value))")
fi
done
i2cset -y $I2C_BUS $CHIP_ADDR 0 "$CLOCK_GEN_VALUE" s
echo "Read Clock Gen Value again is: $CLOCK_GEN_VALUE"
exit 0;
@@ -0,0 +1,12 @@
[Unit]
Description = configure GPIO for SSD Power Control
Before=nvme_powermanager.service
[Service]
Restart=no
RemainAfterExit=true
Type=oneshot
ExecStart=/usr/bin/init_once.sh
[Install]
WantedBy=multi-user.target
@@ -0,0 +1,65 @@
#!/bin/bash
export U2_PRESENT=( 148 149 150 151 152 153 154 155 )
export POWER_U2=( 195 196 202 199 198 197 127 126 )
export PWRGD_U2=( 161 162 163 164 165 166 167 168 )
export RST_BMC_U2=( 72 73 74 75 76 77 78 79 )
export PLUGGED=0
export I2C_BUS=8
export CHIP_ADDR=0x68
export CLOCK_GEN_VALUE=
CLOCK_GEN_VALUE=$(i2cget -y $I2C_BUS $CHIP_ADDR 0 i 2|cut -f3 -d' ')
function set_gpio_direction()
{
#$1 gpio pin, $2 'in','high','low'
echo "$2" > "/sys/class/gpio/gpio$1/direction"
}
function read_gpio_input()
{
#$1 read input gpio pin
cat "/sys/class/gpio/gpio$1/value"
}
function enable_nvme_power()
{
set_gpio_direction "${POWER_U2[$1]}" "high"
sleep 0.04
check_powergood "$1"
}
function check_powergood()
{
if [ "$(read_gpio_input "${PWRGD_U2[$1]}")" == 1 ];then
sleep 0.005
update_clock_gen_chip_register "$1" 1
sleep 0.1
set_gpio_direction "${RST_BMC_U2[$1]}" "high"
else
disable_nvme_power "$1"
fi
}
function disable_nvme_power()
{
set_gpio_direction "${RST_BMC_U2[$1]}" "low"
sleep 0.1
update_clock_gen_chip_register "$1" 0
sleep 0.005
set_gpio_direction "${POWER_U2[$1]}" "low"
}
function update_clock_gen_chip_register(){
#$1 nvme slot number, $2 enable/disable
update_value=$(printf '%x\n' "$((0x01 <<$1))")
if [ "$2" -eq 1 ];then
CLOCK_GEN_VALUE=$(printf '0x%x\n' \
"$((CLOCK_GEN_VALUE | 0x$update_value))")
else
CLOCK_GEN_VALUE=$(printf '0x%x\n' \
"$((CLOCK_GEN_VALUE & ~0x$update_value))")
fi
i2cset -y $I2C_BUS $CHIP_ADDR 0 "$CLOCK_GEN_VALUE" s
}
@@ -0,0 +1,11 @@
[Unit]
Description=SSD NVME Power Manager
Requires=nvme_gpio.service
After=nvme_gpio.service
[Service]
ExecStart=/usr/bin/nvme_powermanager.sh
Restart=always
[Install]
WantedBy=multi-user.target
@@ -0,0 +1,48 @@
#!/bin/bash
# shellcheck source=meta-quanta/meta-gsj/recipes-gsj/quanta-nvme-powerctrl/files/nvme_powerctrl_library.sh
source /usr/libexec/nvme_powerctrl_library.sh
U2_PRESENT_STATUS=( 1 1 1 1 1 1 1 1 )
function recovery_power()
{
set_gpio_direction "${POWER_U2[$1]}" "low"
sleep 0.2
set_gpio_direction "${POWER_U2[$1]}" "high"
sleep 0.2
check_powergood "$1"
}
##Initial U2 present status
for i in {0..7};
do
U2_PRESENT_STATUS[i]=$(read_gpio_input "${U2_PRESENT[$i]}")
done
## Loop while
while :
do
for i in {0..7};
do
## 1 second scan all loop
sleep 0.125
read_present=$(read_gpio_input "${U2_PRESENT[$i]}")
if [ "$read_present" != "${U2_PRESENT_STATUS[$i]}" ];then
U2_PRESENT_STATUS[i]="$read_present"
if [ "$read_present" == $PLUGGED ];then
echo "NVME $i Enable Power"
enable_nvme_power "$i"
else
echo "NVME $i Disable Power"
disable_nvme_power "$i"
fi
else
if [ "${U2_PRESENT_STATUS[$i]}" == $PLUGGED ] &&
[ "$(read_gpio_input "${PWRGD_U2[$i]}")" == 0 ];then
echo "NVME $i Recovery Power"
recovery_power "$i"
fi
fi
done
done
@@ -0,0 +1,37 @@
SUMMARY = "Phosphor OpenBMC Quanta NVME Power Control Service"
DESCRIPTION = "Phosphor OpenBMC Quanta NVME Power Control Daemon."
PR = "r1"
LICENSE = "Apache-2.0"
LIC_FILES_CHKSUM = "file://${COREBASE}/meta/files/common-licenses/Apache-2.0;md5=89aea4e17d99a7cacdbeed46a0096b10"
FILESEXTRAPATHS:append := "${THISDIR}/files:"
inherit systemd
DEPENDS += "systemd"
RDEPENDS:${PN} += "libsystemd"
RDEPENDS:${PN} += "bash"
RDEPENDS:${PN} += "iotools"
SRC_URI += "file://init_once.sh \
file://nvme_powermanager.sh \
file://nvme_powerctrl_library.sh \
file://nvme_gpio.service \
file://nvme_powermanager.service \
"
do_install () {
install -d ${D}${bindir}
install -m 0755 ${WORKDIR}/init_once.sh ${D}${bindir}/
install -m 0755 ${WORKDIR}/nvme_powermanager.sh ${D}${bindir}/
install -d ${D}${libexecdir}
install -m 0755 ${WORKDIR}/nvme_powerctrl_library.sh ${D}${libexecdir}/
install -d ${D}${systemd_unitdir}/system/
install -m 0644 ${WORKDIR}/nvme_gpio.service ${D}${systemd_unitdir}/system
install -m 0644 ${WORKDIR}/nvme_powermanager.service ${D}${systemd_unitdir}/system
}
SYSTEMD_PACKAGES = "${PN}"
SYSTEMD_SERVICE:${PN} = "nvme_gpio.service nvme_powermanager.service"
@@ -0,0 +1,7 @@
[Match]
Name=usb0
[Address]
Address=169.254.95.118/16
[Network]
LinkLocalAddressing=no
IPv6AcceptRA=no
@@ -0,0 +1,10 @@
[Unit]
Description=enable usb network
After=phosphor-ipmi-host.service
[Service]
Type=oneshot
ExecStart=/bin/bash -c '/usr/sbin/usb_network.sh'
[Install]
WantedBy=multi-user.target
@@ -0,0 +1,27 @@
#!/bin/bash
cd /sys/kernel/config/usb_gadget || exit
if [ ! -f "g1" ]; then
mkdir g1
cd g1 || exit
echo 0x1d6b > idVendor # Linux foundation
echo 0x0104 > idProduct # Multifunction composite gadget
mkdir -p strings/0x409
echo "Linux" > strings/0x409/manufacturer
echo "Ethernet/RNDIS gadget" > strings/0x409/product
mkdir -p configs/c.1
echo 100 > configs/c.1/MaxPower
mkdir -p configs/c.1/strings/0x409
echo "RNDIS" > configs/c.1/strings/0x409/configuration
mkdir -p functions/rndis.usb0
ln -s functions/rndis.usb0 configs/c.1
echo f0839000.udc > UDC
fi
exit 0
@@ -0,0 +1,29 @@
FILESEXTRAPATHS:append := "${THISDIR}/files:"
LICENSE = "Apache-2.0"
LIC_FILES_CHKSUM = "file://${COREBASE}/meta/files/common-licenses/Apache-2.0;md5=89aea4e17d99a7cacdbeed46a0096b10"
DEPENDS += "systemd"
RDEPENDS:${PN} += "libsystemd"
RDEPENDS:${PN} += "bash"
SRC_URI += "file://usb_network.sh \
file://usb_network.service \
file://00-bmc-usb0.network"
do_install() {
install -d ${D}/${sbindir}
install -m 0755 ${WORKDIR}/usb_network.sh ${D}/${sbindir}
install -d ${D}${systemd_unitdir}/system/
install -m 0644 ${WORKDIR}/usb_network.service ${D}${systemd_unitdir}/system
install -d ${D}${sysconfdir_native}/systemd/network/
install -m 0644 ${WORKDIR}/00-bmc-usb0.network ${D}${sysconfdir_native}/systemd/network
}
NATIVE_SYSTEMD_SUPPORT = "1"
SYSTEMD_PACKAGES = "${PN}"
SYSTEMD_SERVICE:${PN} = "usb_network.service"
FILES:${PN} += "${sysconfdir_native}/systemd/network/00-bmc-usb0.network"
inherit allarch systemd
@@ -0,0 +1,65 @@
CONFIG_HWMON=y
CONFIG_SENSORS_LM75=y
CONFIG_SENSORS_FAN=y
CONFIG_NEW_LEDS=y
CONFIG_LEDS_CLASS=y
CONFIG_LEDS_GPIO=y
CONFIG_LEDS_TRIGGERS=y
CONFIG_LEDS_TRIGGER_TIMER=y
CONFIG_LEDS_TRIGGER_HEARTBEAT=y
CONFIG_LEDS_TRIGGER_DEFAULT_ON=y
CONFIG_OVERLAY_FS=y
CONFIG_SQUASHFS=y
CONFIG_SQUASHFS_XZ=y
CONFIG_JFFS2_FS=y
CONFIG_MTD_M25P80=y
CONFIG_SPI_NPCM_FIU=y
CONFIG_SPI=y
CONFIG_SPI_NPCM_PSPI=y
CONFIG_NET_NCSI=y
CONFIG_EEPROM_AT24=y
CONFIG_I2C_MUX=y
CONFIG_I2C_MUX_PCA954x=y
CONFIG_I2C_SLAVE_EEPROM=y
CONFIG_GPIO_PCA953X=y
CONFIG_GPIO_PCA953X_IRQ=y
CONFIG_GPIO_PCF857X=y
CONFIG_PMBUS=y
CONFIG_SENSORS_PMBUS=y
CONFIG_SENSORS_ADM1275=y
CONFIG_MUX_MMIO=y
CONFIG_USB_U_ETHER=y
CONFIG_USB_F_ECM=y
CONFIG_USB_F_EEM=y
CONFIG_USB_F_SUBSET=y
CONFIG_USB_F_RNDIS=y
CONFIG_USB_F_MASS_STORAGE=y
CONFIG_USB_CONFIGFS=y
CONFIG_USB_CONFIGFS_ECM=y
CONFIG_USB_CONFIGFS_ECM_SUBSET=y
CONFIG_USB_CONFIGFS_RNDIS=y
CONFIG_USB_CONFIGFS_EEM=y
CONFIG_USB_CONFIGFS_MASS_STORAGE=y
CONFIG_USB_CONFIGFS_F_HID=y
CONFIG_USB_GADGET_NPCM_USB2=y
CONFIG_USB_NPCM_UDC=y
CONFIG_MEDIA_SUPPORT=y
CONFIG_FORCE_MAX_ZONEORDER=12
CONFIG_SENSORS_LM25066=y
CONFIG_I2C_SLAVE=y
CONFIG_I2C_SLAVE_MQUEUE=y
CONFIG_NUVOTON_JTAG=y
CONFIG_EDAC_ATOMIC_SCRUB=y
CONFIG_EDAC_SUPPORT=y
CONFIG_EDAC=y
CONFIG_EDAC_LEGACY_SYSFS=y
CONFIG_EDAC_DEBUG=y
CONFIG_EDAC_NPCM7XX=y
CONFIG_RAS=y
CONFIG_SENSORS_UCD9000=y
@@ -0,0 +1,2 @@
FILESEXTRAPATHS:prepend:gsj := "${THISDIR}/linux-nuvoton:"
SRC_URI:append:gsj = " file://gsj.cfg"
@@ -0,0 +1,415 @@
{
"sensors" : [
{
"name": "Fan0_0_RPM",
"type": "fan",
"readPath": "/sys/devices/platform/ahb/ahb:apb/f0103000.pwm-fan-controller/hwmon/**/fan1_input",
"writePath": "/sys/devices/platform/ahb/ahb:apb/f0103000.pwm-fan-controller/hwmon/**/pwm1",
"min": 0,
"max": 255
},
{
"name": "Fan0_1_RPM",
"type": "fan",
"readPath": "/sys/devices/platform/ahb/ahb:apb/f0103000.pwm-fan-controller/hwmon/**/fan2_input",
"writePath": "/sys/devices/platform/ahb/ahb:apb/f0103000.pwm-fan-controller/hwmon/**/pwm1",
"min": 0,
"max": 255
},
{
"name": "Fan1_0_RPM",
"type": "fan",
"readPath": "/sys/devices/platform/ahb/ahb:apb/f0103000.pwm-fan-controller/hwmon/**/fan3_input",
"writePath": "/sys/devices/platform/ahb/ahb:apb/f0103000.pwm-fan-controller/hwmon/**/pwm2",
"min": 0,
"max": 255
},
{
"name": "Fan1_1_RPM",
"type": "fan",
"readPath": "/sys/devices/platform/ahb/ahb:apb/f0103000.pwm-fan-controller/hwmon/**/fan4_input",
"writePath": "/sys/devices/platform/ahb/ahb:apb/f0103000.pwm-fan-controller/hwmon/**/pwm2",
"min": 0,
"max": 255
},
{
"name": "Fan2_0_RPM",
"type": "fan",
"readPath": "/sys/devices/platform/ahb/ahb:apb/f0103000.pwm-fan-controller/hwmon/**/fan5_input",
"writePath": "/sys/devices/platform/ahb/ahb:apb/f0103000.pwm-fan-controller/hwmon/**/pwm3",
"min": 0,
"max": 255
},
{
"name": "Fan2_1_RPM",
"type": "fan",
"readPath": "/sys/devices/platform/ahb/ahb:apb/f0103000.pwm-fan-controller/hwmon/**/fan6_input",
"writePath": "/sys/devices/platform/ahb/ahb:apb/f0103000.pwm-fan-controller/hwmon/**/pwm3",
"min": 0,
"max": 255
},
{
"name": "KL0",
"type": "temp",
"readPath": "/xyz/openbmc_project/sensors/temperature/KL0",
"writePath": "",
"min": 0,
"max": 0,
"ignoreDbusMinMax": true,
"timeout": 0
},
{
"name": "nvme0",
"type": "temp",
"readPath": "/xyz/openbmc_project/sensors/temperature/nvme0",
"writePath": "",
"min": 0,
"max": 0,
"ignoreDbusMinMax": true,
"timeout": 0
},
{
"name": "nvme1",
"type": "temp",
"readPath": "/xyz/openbmc_project/sensors/temperature/nvme1",
"writePath": "",
"min": 0,
"max": 0,
"ignoreDbusMinMax": true,
"timeout": 0
}
],
"zones" : [
{
"id": 0,
"minThermalOutput": 0.0,
"failsafePercent": 100.0,
"pids": [
{
"name": "Fan0_0_RPM",
"type": "fan",
"inputs": ["Fan0_0_RPM"],
"setpoint": 65.0,
"pid": {
"samplePeriod": 1.0,
"proportionalCoeff": 0.0,
"integralCoeff": 0.0,
"feedFwdOffsetCoeff": 0.0,
"feedFwdGainCoeff": 1.0,
"integralLimit_min": 0.0,
"integralLimit_max": 0.0,
"outLim_min": 3.0,
"outLim_max": 100.0,
"slewNeg": 0.0,
"slewPos": 0.0
}
},
{
"name": "Fan0_1_RPM",
"type": "fan",
"inputs": ["Fan0_1_RPM"],
"setpoint": 65.0,
"pid": {
"samplePeriod": 1.0,
"proportionalCoeff": 0.0,
"integralCoeff": 0.0,
"feedFwdOffsetCoeff": 0.0,
"feedFwdGainCoeff": 1.0,
"integralLimit_min": 0.0,
"integralLimit_max": 0.0,
"outLim_min": 3.0,
"outLim_max": 100.0,
"slewNeg": 0.0,
"slewPos": 0.0
}
},
{
"name": "Fan1_0_RPM",
"type": "fan",
"inputs": ["Fan1_0_RPM"],
"setpoint": 65.0,
"pid": {
"samplePeriod": 1.0,
"proportionalCoeff": 0.0,
"integralCoeff": 0.0,
"feedFwdOffsetCoeff": 0.0,
"feedFwdGainCoeff": 1.0,
"integralLimit_min": 0.0,
"integralLimit_max": 0.0,
"outLim_min": 3.0,
"outLim_max": 100.0,
"slewNeg": 0.0,
"slewPos": 0.0
}
},
{
"name": "Fan1_1_RPM",
"type": "fan",
"inputs": ["Fan1_1_RPM"],
"setpoint": 65.0,
"pid": {
"samplePeriod": 1.0,
"proportionalCoeff": 0.0,
"integralCoeff": 0.0,
"feedFwdOffsetCoeff": 0.0,
"feedFwdGainCoeff": 1.0,
"integralLimit_min": 0.0,
"integralLimit_max": 0.0,
"outLim_min": 3.0,
"outLim_max": 100.0,
"slewNeg": 0.0,
"slewPos": 0.0
}
},
{
"name": "Fan2_0_RPM",
"type": "fan",
"inputs": ["Fan2_0_RPM"],
"setpoint": 65.0,
"pid": {
"samplePeriod": 1.0,
"proportionalCoeff": 0.0,
"integralCoeff": 0.0,
"feedFwdOffsetCoeff": 0.0,
"feedFwdGainCoeff": 1.0,
"integralLimit_min": 0.0,
"integralLimit_max": 0.0,
"outLim_min": 3.0,
"outLim_max": 100.0,
"slewNeg": 0.0,
"slewPos": 0.0
}
},
{
"name": "Fan2_1_RPM",
"type": "fan",
"inputs": ["Fan2_1_RPM"],
"setpoint": 65.0,
"pid": {
"samplePeriod": 1.0,
"proportionalCoeff": 0.0,
"integralCoeff": 0.0,
"feedFwdOffsetCoeff": 0.0,
"feedFwdGainCoeff": 1.0,
"integralLimit_min": 0.0,
"integralLimit_max": 0.0,
"outLim_min": 3.0,
"outLim_max": 100.0,
"slewNeg": 0.0,
"slewPos": 0.0
}
},
{
"name": "nvme0",
"type": "temp",
"inputs": ["nvme0"],
"setpoint": 65.0,
"pid": {
"samplePeriod": 1.0,
"proportionalCoeff": -20.0,
"integralCoeff": -0.1,
"feedFwdOffsetCoeff": 0.0,
"feedFwdGainCoeff": 0.0,
"integralLimit_min": 0.0,
"integralLimit_max": 0.0,
"outLim_min": 0.0,
"outLim_max": 16000.0,
"slewNeg": 0.0,
"slewPos": 0.0,
"positiveHysteresis": 1.0,
"negativeHysteresis": 1.0
}
},
{
"name": "nvme1",
"type": "temp",
"inputs": ["nvme1"],
"setpoint": 65.0,
"pid": {
"samplePeriod": 1.0,
"proportionalCoeff": -20.0,
"integralCoeff": -0.1,
"feedFwdOffsetCoeff": 0.0,
"feedFwdGainCoeff": 0.0,
"integralLimit_min": 0.0,
"integralLimit_max": 0.0,
"outLim_min": 0.0,
"outLim_max": 16000.0,
"slewNeg": 0.0,
"slewPos": 0.0,
"positiveHysteresis": 1.0,
"negativeHysteresis": 1.0
}
},
{
"name": "KL0",
"type": "stepwise",
"inputs": ["KL0"],
"setpoint": 30.0,
"pid": {
"samplePeriod": 1.0,
"positiveHysteresis": 0.0,
"negativeHysteresis": 0.0,
"isCeiling": false,
"reading": {
"0": 25,
"1": 26,
"2": 27,
"3": 28,
"4": 29,
"5": 30,
"6": 31,
"7": 32,
"8": 33,
"9": 34,
"10": 35,
"11": 36,
"12": 37,
"13": 38,
"14": 39,
"15": 40,
"16": 42,
"17": 44,
"18": 45,
"19": 50
},
"output": {
"0": 10,
"1": 10,
"2": 10,
"3": 10,
"4": 10,
"5": 10,
"6": 20,
"7": 30,
"8": 40,
"9": 50,
"10": 60,
"11": 73,
"12": 76,
"13": 79,
"14": 82,
"15": 86,
"16": 90,
"17": 90,
"18": 100,
"19": 100
}
}
},
{
"name": "nvme00",
"type": "stepwise",
"inputs": ["nvme0"],
"setpoint": 30.0,
"pid": {
"samplePeriod": 1.0,
"positiveHysteresis": 1.0,
"negativeHysteresis": 1.0,
"isCeiling": false,
"reading": {
"0": 45,
"1": 46,
"2": 47,
"3": 48,
"4": 49,
"5": 50,
"6": 51,
"7": 52,
"8": 53,
"9": 54,
"10": 55,
"11": 56,
"12": 57,
"13": 58,
"14": 59,
"15": 60,
"16": 61,
"17": 62,
"18": 63,
"19": 64
},
"output": {
"0": 5,
"1": 5,
"2": 5,
"3": 6,
"4": 6,
"5": 7,
"6": 7,
"7": 8,
"8": 10,
"9": 12,
"10": 14,
"11": 16,
"12": 18,
"13": 20,
"14": 21,
"15": 21,
"16": 22,
"17": 22,
"18": 25,
"19": 25
}
}
},
{
"name": "nvme10",
"type": "stepwise",
"inputs": ["nvme1"],
"setpoint": 30.0,
"pid": {
"samplePeriod": 1.0,
"positiveHysteresis": 1.0,
"negativeHysteresis": 1.0,
"isCeiling": false,
"reading": {
"0": 45,
"1": 46,
"2": 47,
"3": 48,
"4": 49,
"5": 50,
"6": 51,
"7": 52,
"8": 53,
"9": 54,
"10": 55,
"11": 56,
"12": 57,
"13": 58,
"14": 59,
"15": 60,
"16": 61,
"17": 62,
"18": 63,
"19": 64
},
"output": {
"0": 5,
"1": 5,
"2": 5,
"3": 6,
"4": 6,
"5": 7,
"6": 7,
"7": 8,
"8": 10,
"9": 12,
"10": 14,
"11": 16,
"12": 18,
"13": 20,
"14": 21,
"15": 21,
"16": 22,
"17": 22,
"18": 25,
"19": 25
}
}
}
]
}
]
}
@@ -0,0 +1,937 @@
{
"sensors" : [
{
"name": "Fan0_0_RPM",
"type": "fan",
"readPath": "/sys/devices/platform/ahb/ahb:apb/f0103000.pwm-fan-controller/hwmon/**/fan1_input",
"writePath": "/sys/devices/platform/ahb/ahb:apb/f0103000.pwm-fan-controller/hwmon/**/pwm1",
"min": 0,
"max": 255
},
{
"name": "Fan0_1_RPM",
"type": "fan",
"readPath": "/sys/devices/platform/ahb/ahb:apb/f0103000.pwm-fan-controller/hwmon/**/fan2_input",
"writePath": "/sys/devices/platform/ahb/ahb:apb/f0103000.pwm-fan-controller/hwmon/**/pwm1",
"min": 0,
"max": 255
},
{
"name": "Fan1_0_RPM",
"type": "fan",
"readPath": "/sys/devices/platform/ahb/ahb:apb/f0103000.pwm-fan-controller/hwmon/**/fan3_input",
"writePath": "/sys/devices/platform/ahb/ahb:apb/f0103000.pwm-fan-controller/hwmon/**/pwm2",
"min": 0,
"max": 255
},
{
"name": "Fan1_1_RPM",
"type": "fan",
"readPath": "/sys/devices/platform/ahb/ahb:apb/f0103000.pwm-fan-controller/hwmon/**/fan4_input",
"writePath": "/sys/devices/platform/ahb/ahb:apb/f0103000.pwm-fan-controller/hwmon/**/pwm2",
"min": 0,
"max": 255
},
{
"name": "Fan2_0_RPM",
"type": "fan",
"readPath": "/sys/devices/platform/ahb/ahb:apb/f0103000.pwm-fan-controller/hwmon/**/fan5_input",
"writePath": "/sys/devices/platform/ahb/ahb:apb/f0103000.pwm-fan-controller/hwmon/**/pwm3",
"min": 0,
"max": 255
},
{
"name": "Fan2_1_RPM",
"type": "fan",
"readPath": "/sys/devices/platform/ahb/ahb:apb/f0103000.pwm-fan-controller/hwmon/**/fan6_input",
"writePath": "/sys/devices/platform/ahb/ahb:apb/f0103000.pwm-fan-controller/hwmon/**/pwm3",
"min": 0,
"max": 255
},
{
"name": "KL0",
"type": "temp",
"readPath": "/xyz/openbmc_project/sensors/temperature/KL0",
"writePath": "",
"min": 0,
"max": 0,
"ignoreDbusMinMax": true,
"timeout": 0
},
{
"name": "nvme0",
"type": "temp",
"readPath": "/xyz/openbmc_project/sensors/temperature/nvme0",
"writePath": "",
"min": 0,
"max": 0,
"ignoreDbusMinMax": true,
"timeout": 0
},
{
"name": "nvme1",
"type": "temp",
"readPath": "/xyz/openbmc_project/sensors/temperature/nvme1",
"writePath": "",
"min": 0,
"max": 0,
"ignoreDbusMinMax": true,
"timeout": 0
},
{
"name": "nvme2",
"type": "temp",
"readPath": "/xyz/openbmc_project/sensors/temperature/nvme2",
"writePath": "",
"min": 0,
"max": 0,
"ignoreDbusMinMax": true,
"timeout": 0
},
{
"name": "nvme3",
"type": "temp",
"readPath": "/xyz/openbmc_project/sensors/temperature/nvme3",
"writePath": "",
"min": 0,
"max": 0,
"ignoreDbusMinMax": true,
"timeout": 0
},
{
"name": "nvme4",
"type": "temp",
"readPath": "/xyz/openbmc_project/sensors/temperature/nvme4",
"writePath": "",
"min": 0,
"max": 0,
"ignoreDbusMinMax": true,
"timeout": 0
},
{
"name": "nvme5",
"type": "temp",
"readPath": "/xyz/openbmc_project/sensors/temperature/nvme5",
"writePath": "",
"min": 0,
"max": 0,
"ignoreDbusMinMax": true,
"timeout": 0
},
{
"name": "nvme6",
"type": "temp",
"readPath": "/xyz/openbmc_project/sensors/temperature/nvme6",
"writePath": "",
"min": 0,
"max": 0,
"ignoreDbusMinMax": true,
"timeout": 0
},
{
"name": "nvme7",
"type": "temp",
"readPath": "/xyz/openbmc_project/sensors/temperature/nvme7",
"writePath": "",
"min": 0,
"max": 0,
"ignoreDbusMinMax": true,
"timeout": 0
}
],
"zones" : [
{
"id": 0,
"minThermalOutput": 0.0,
"failsafePercent": 100.0,
"pids": [
{
"name": "Fan0_0_RPM",
"type": "fan",
"inputs": ["Fan0_0_RPM"],
"setpoint": 65.0,
"pid": {
"samplePeriod": 1.0,
"proportionalCoeff": 0.0,
"integralCoeff": 0.0,
"feedFwdOffsetCoeff": 0.0,
"feedFwdGainCoeff": 1.0,
"integralLimit_min": 0.0,
"integralLimit_max": 0.0,
"outLim_min": 3.0,
"outLim_max": 100.0,
"slewNeg": 0.0,
"slewPos": 0.0
}
},
{
"name": "Fan0_1_RPM",
"type": "fan",
"inputs": ["Fan0_1_RPM"],
"setpoint": 65.0,
"pid": {
"samplePeriod": 1.0,
"proportionalCoeff": 0.0,
"integralCoeff": 0.0,
"feedFwdOffsetCoeff": 0.0,
"feedFwdGainCoeff": 1.0,
"integralLimit_min": 0.0,
"integralLimit_max": 0.0,
"outLim_min": 3.0,
"outLim_max": 100.0,
"slewNeg": 0.0,
"slewPos": 0.0
}
},
{
"name": "Fan1_0_RPM",
"type": "fan",
"inputs": ["Fan1_0_RPM"],
"setpoint": 65.0,
"pid": {
"samplePeriod": 1.0,
"proportionalCoeff": 0.0,
"integralCoeff": 0.0,
"feedFwdOffsetCoeff": 0.0,
"feedFwdGainCoeff": 1.0,
"integralLimit_min": 0.0,
"integralLimit_max": 0.0,
"outLim_min": 3.0,
"outLim_max": 100.0,
"slewNeg": 0.0,
"slewPos": 0.0
}
},
{
"name": "Fan1_1_RPM",
"type": "fan",
"inputs": ["Fan1_1_RPM"],
"setpoint": 65.0,
"pid": {
"samplePeriod": 1.0,
"proportionalCoeff": 0.0,
"integralCoeff": 0.0,
"feedFwdOffsetCoeff": 0.0,
"feedFwdGainCoeff": 1.0,
"integralLimit_min": 0.0,
"integralLimit_max": 0.0,
"outLim_min": 3.0,
"outLim_max": 100.0,
"slewNeg": 0.0,
"slewPos": 0.0
}
},
{
"name": "Fan2_0_RPM",
"type": "fan",
"inputs": ["Fan2_0_RPM"],
"setpoint": 65.0,
"pid": {
"samplePeriod": 1.0,
"proportionalCoeff": 0.0,
"integralCoeff": 0.0,
"feedFwdOffsetCoeff": 0.0,
"feedFwdGainCoeff": 1.0,
"integralLimit_min": 0.0,
"integralLimit_max": 0.0,
"outLim_min": 3.0,
"outLim_max": 100.0,
"slewNeg": 0.0,
"slewPos": 0.0
}
},
{
"name": "Fan2_1_RPM",
"type": "fan",
"inputs": ["Fan2_1_RPM"],
"setpoint": 65.0,
"pid": {
"samplePeriod": 1.0,
"proportionalCoeff": 0.0,
"integralCoeff": 0.0,
"feedFwdOffsetCoeff": 0.0,
"feedFwdGainCoeff": 1.0,
"integralLimit_min": 0.0,
"integralLimit_max": 0.0,
"outLim_min": 3.0,
"outLim_max": 100.0,
"slewNeg": 0.0,
"slewPos": 0.0
}
},
{
"name": "nvme0",
"type": "temp",
"inputs": ["nvme0"],
"setpoint": 65.0,
"pid": {
"samplePeriod": 1.0,
"proportionalCoeff": -20.0,
"integralCoeff": -0.1,
"feedFwdOffsetCoeff": 0.0,
"feedFwdGainCoeff": 0.0,
"integralLimit_min": 0.0,
"integralLimit_max": 0.0,
"outLim_min": 0.0,
"outLim_max": 16000.0,
"slewNeg": 0.0,
"slewPos": 0.0,
"positiveHysteresis": 1.0,
"negativeHysteresis": 1.0
}
},
{
"name": "nvme1",
"type": "temp",
"inputs": ["nvme1"],
"setpoint": 65.0,
"pid": {
"samplePeriod": 1.0,
"proportionalCoeff": -20.0,
"integralCoeff": -0.1,
"feedFwdOffsetCoeff": 0.0,
"feedFwdGainCoeff": 0.0,
"integralLimit_min": 0.0,
"integralLimit_max": 0.0,
"outLim_min": 0.0,
"outLim_max": 16000.0,
"slewNeg": 0.0,
"slewPos": 0.0,
"positiveHysteresis": 1.0,
"negativeHysteresis": 1.0
}
},
{
"name": "nvme2",
"type": "temp",
"inputs": ["nvme2"],
"setpoint": 65.0,
"pid": {
"samplePeriod": 1.0,
"proportionalCoeff": -20.0,
"integralCoeff": -0.1,
"feedFwdOffsetCoeff": 0.0,
"feedFwdGainCoeff": 0.0,
"integralLimit_min": 0.0,
"integralLimit_max": 0.0,
"outLim_min": 0.0,
"outLim_max": 16000.0,
"slewNeg": 0.0,
"slewPos": 0.0,
"positiveHysteresis": 1.0,
"negativeHysteresis": 1.0
}
},
{
"name": "nvme3",
"type": "temp",
"inputs": ["nvme3"],
"setpoint": 65.0,
"pid": {
"samplePeriod": 1.0,
"proportionalCoeff": -20.0,
"integralCoeff": -0.1,
"feedFwdOffsetCoeff": 0.0,
"feedFwdGainCoeff": 0.0,
"integralLimit_min": 0.0,
"integralLimit_max": 0.0,
"outLim_min": 0.0,
"outLim_max": 16000.0,
"slewNeg": 0.0,
"slewPos": 0.0,
"positiveHysteresis": 1.0,
"negativeHysteresis": 1.0
}
},
{
"name": "nvme4",
"type": "temp",
"inputs": ["nvme4"],
"setpoint": 65.0,
"pid": {
"samplePeriod": 1.0,
"proportionalCoeff": -20.0,
"integralCoeff": -0.1,
"feedFwdOffsetCoeff": 0.0,
"feedFwdGainCoeff": 0.0,
"integralLimit_min": 0.0,
"integralLimit_max": 0.0,
"outLim_min": 0.0,
"outLim_max": 16000.0,
"slewNeg": 0.0,
"slewPos": 0.0,
"positiveHysteresis": 1.0,
"negativeHysteresis": 1.0
}
},
{
"name": "nvme5",
"type": "temp",
"inputs": ["nvme5"],
"setpoint": 65.0,
"pid": {
"samplePeriod": 1.0,
"proportionalCoeff": -20.0,
"integralCoeff": -0.1,
"feedFwdOffsetCoeff": 0.0,
"feedFwdGainCoeff": 0.0,
"integralLimit_min": 0.0,
"integralLimit_max": 0.0,
"outLim_min": 0.0,
"outLim_max": 16000.0,
"slewNeg": 0.0,
"slewPos": 0.0,
"positiveHysteresis": 1.0,
"negativeHysteresis": 1.0
}
},
{
"name": "nvme6",
"type": "temp",
"inputs": ["nvme6"],
"setpoint": 65.0,
"pid": {
"samplePeriod": 1.0,
"proportionalCoeff": -20.0,
"integralCoeff": -0.1,
"feedFwdOffsetCoeff": 0.0,
"feedFwdGainCoeff": 0.0,
"integralLimit_min": 0.0,
"integralLimit_max": 0.0,
"outLim_min": 0.0,
"outLim_max": 16000.0,
"slewNeg": 0.0,
"slewPos": 0.0,
"positiveHysteresis": 1.0,
"negativeHysteresis": 1.0
}
},
{
"name": "nvme7",
"type": "temp",
"inputs": ["nvme7"],
"setpoint": 65.0,
"pid": {
"samplePeriod": 1.0,
"proportionalCoeff": -20.0,
"integralCoeff": -0.1,
"feedFwdOffsetCoeff": 0.0,
"feedFwdGainCoeff": 0.0,
"integralLimit_min": 0.0,
"integralLimit_max": 0.0,
"outLim_min": 0.0,
"outLim_max": 16000.0,
"slewNeg": 0.0,
"slewPos": 0.0,
"positiveHysteresis": 1.0,
"negativeHysteresis": 1.0
}
},
{
"name": "KL0",
"type": "stepwise",
"inputs": ["KL0"],
"setpoint": 30.0,
"pid": {
"samplePeriod": 1.0,
"positiveHysteresis": 0.0,
"negativeHysteresis": 0.0,
"isCeiling": false,
"reading": {
"0": 25,
"1": 26,
"2": 27,
"3": 28,
"4": 29,
"5": 30,
"6": 31,
"7": 32,
"8": 33,
"9": 34,
"10": 35,
"11": 36,
"12": 37,
"13": 38,
"14": 39,
"15": 40,
"16": 42,
"17": 44,
"18": 45,
"19": 50
},
"output": {
"0": 10,
"1": 10,
"2": 10,
"3": 10,
"4": 10,
"5": 10,
"6": 20,
"7": 30,
"8": 40,
"9": 50,
"10": 60,
"11": 73,
"12": 76,
"13": 79,
"14": 82,
"15": 86,
"16": 90,
"17": 90,
"18": 100,
"19": 100
}
}
},
{
"name": "nvme00",
"type": "stepwise",
"inputs": ["nvme0"],
"setpoint": 30.0,
"pid": {
"samplePeriod": 1.0,
"positiveHysteresis": 1.0,
"negativeHysteresis": 1.0,
"isCeiling": false,
"reading": {
"0": 45,
"1": 46,
"2": 47,
"3": 48,
"4": 49,
"5": 50,
"6": 51,
"7": 52,
"8": 53,
"9": 54,
"10": 55,
"11": 56,
"12": 57,
"13": 58,
"14": 59,
"15": 60,
"16": 61,
"17": 62,
"18": 63,
"19": 64
},
"output": {
"0": 10,
"1": 10,
"2": 13,
"3": 15,
"4": 18,
"5": 21,
"6": 24,
"7": 26,
"8": 28,
"9": 30,
"10": 32,
"11": 34,
"12": 36,
"13": 38,
"14": 40,
"15": 41,
"16": 42,
"17": 43,
"18": 44,
"19": 45
}
}
},
{
"name": "nvme10",
"type": "stepwise",
"inputs": ["nvme1"],
"setpoint": 30.0,
"pid": {
"samplePeriod": 1.0,
"positiveHysteresis": 1.0,
"negativeHysteresis": 1.0,
"isCeiling": false,
"reading": {
"0": 45,
"1": 46,
"2": 47,
"3": 48,
"4": 49,
"5": 50,
"6": 51,
"7": 52,
"8": 53,
"9": 54,
"10": 55,
"11": 56,
"12": 57,
"13": 58,
"14": 59,
"15": 60,
"16": 61,
"17": 62,
"18": 63,
"19": 64
},
"output": {
"0": 10,
"1": 10,
"2": 13,
"3": 15,
"4": 18,
"5": 21,
"6": 24,
"7": 26,
"8": 28,
"9": 30,
"10": 32,
"11": 34,
"12": 36,
"13": 38,
"14": 40,
"15": 41,
"16": 42,
"17": 43,
"18": 44,
"19": 45
}
}
},
{
"name": "nvme20",
"type": "stepwise",
"inputs": ["nvme2"],
"setpoint": 30.0,
"pid": {
"samplePeriod": 1.0,
"positiveHysteresis": 1.0,
"negativeHysteresis": 1.0,
"isCeiling": false,
"reading": {
"0": 45,
"1": 46,
"2": 47,
"3": 48,
"4": 49,
"5": 50,
"6": 51,
"7": 52,
"8": 53,
"9": 54,
"10": 55,
"11": 56,
"12": 57,
"13": 58,
"14": 59,
"15": 60,
"16": 61,
"17": 62,
"18": 63,
"19": 64
},
"output": {
"0": 10,
"1": 10,
"2": 13,
"3": 15,
"4": 18,
"5": 21,
"6": 24,
"7": 26,
"8": 28,
"9": 30,
"10": 32,
"11": 34,
"12": 36,
"13": 38,
"14": 40,
"15": 41,
"16": 42,
"17": 43,
"18": 44,
"19": 45
}
}
},
{
"name": "nvme30",
"type": "stepwise",
"inputs": ["nvme3"],
"setpoint": 30.0,
"pid": {
"samplePeriod": 1.0,
"positiveHysteresis": 1.0,
"negativeHysteresis": 1.0,
"isCeiling": false,
"reading": {
"0": 45,
"1": 46,
"2": 47,
"3": 48,
"4": 49,
"5": 50,
"6": 51,
"7": 52,
"8": 53,
"9": 54,
"10": 55,
"11": 56,
"12": 57,
"13": 58,
"14": 59,
"15": 60,
"16": 61,
"17": 62,
"18": 63,
"19": 64
},
"output": {
"0": 10,
"1": 10,
"2": 13,
"3": 15,
"4": 18,
"5": 21,
"6": 24,
"7": 26,
"8": 28,
"9": 30,
"10": 32,
"11": 34,
"12": 36,
"13": 38,
"14": 40,
"15": 41,
"16": 42,
"17": 43,
"18": 44,
"19": 45
}
}
},
{
"name": "nvme40",
"type": "stepwise",
"inputs": ["nvme4"],
"setpoint": 30.0,
"pid": {
"samplePeriod": 1.0,
"positiveHysteresis": 1.0,
"negativeHysteresis": 1.0,
"isCeiling": false,
"reading": {
"0": 45,
"1": 46,
"2": 47,
"3": 48,
"4": 49,
"5": 50,
"6": 51,
"7": 52,
"8": 53,
"9": 54,
"10": 55,
"11": 56,
"12": 57,
"13": 58,
"14": 59,
"15": 60,
"16": 61,
"17": 62,
"18": 63,
"19": 64
},
"output": {
"0": 10,
"1": 10,
"2": 13,
"3": 15,
"4": 18,
"5": 21,
"6": 24,
"7": 26,
"8": 28,
"9": 30,
"10": 32,
"11": 34,
"12": 36,
"13": 38,
"14": 40,
"15": 41,
"16": 42,
"17": 43,
"18": 44,
"19": 45
}
}
},
{
"name": "nvme50",
"type": "stepwise",
"inputs": ["nvme5"],
"setpoint": 30.0,
"pid": {
"samplePeriod": 1.0,
"positiveHysteresis": 1.0,
"negativeHysteresis": 1.0,
"isCeiling": false,
"reading": {
"0": 45,
"1": 46,
"2": 47,
"3": 48,
"4": 49,
"5": 50,
"6": 51,
"7": 52,
"8": 53,
"9": 54,
"10": 55,
"11": 56,
"12": 57,
"13": 58,
"14": 59,
"15": 60,
"16": 61,
"17": 62,
"18": 63,
"19": 64
},
"output": {
"0": 10,
"1": 10,
"2": 13,
"3": 15,
"4": 18,
"5": 21,
"6": 24,
"7": 26,
"8": 28,
"9": 30,
"10": 32,
"11": 34,
"12": 36,
"13": 38,
"14": 40,
"15": 41,
"16": 42,
"17": 43,
"18": 44,
"19": 45
}
}
},
{
"name": "nvme60",
"type": "stepwise",
"inputs": ["nvme6"],
"setpoint": 30.0,
"pid": {
"samplePeriod": 1.0,
"positiveHysteresis": 1.0,
"negativeHysteresis": 1.0,
"isCeiling": false,
"reading": {
"0": 45,
"1": 46,
"2": 47,
"3": 48,
"4": 49,
"5": 50,
"6": 51,
"7": 52,
"8": 53,
"9": 54,
"10": 55,
"11": 56,
"12": 57,
"13": 58,
"14": 59,
"15": 60,
"16": 61,
"17": 62,
"18": 63,
"19": 64
},
"output": {
"0": 10,
"1": 10,
"2": 13,
"3": 15,
"4": 18,
"5": 21,
"6": 24,
"7": 26,
"8": 28,
"9": 30,
"10": 32,
"11": 34,
"12": 36,
"13": 38,
"14": 40,
"15": 41,
"16": 42,
"17": 43,
"18": 44,
"19": 45
}
}
},
{
"name": "nvme70",
"type": "stepwise",
"inputs": ["nvme7"],
"setpoint": 30.0,
"pid": {
"samplePeriod": 1.0,
"positiveHysteresis": 1.0,
"negativeHysteresis": 1.0,
"isCeiling": false,
"reading": {
"0": 45,
"1": 46,
"2": 47,
"3": 48,
"4": 49,
"5": 50,
"6": 51,
"7": 52,
"8": 53,
"9": 54,
"10": 55,
"11": 56,
"12": 57,
"13": 58,
"14": 59,
"15": 60,
"16": 61,
"17": 62,
"18": 63,
"19": 64
},
"output": {
"0": 10,
"1": 10,
"2": 13,
"3": 15,
"4": 18,
"5": 21,
"6": 24,
"7": 26,
"8": 28,
"9": 30,
"10": 32,
"11": 34,
"12": 36,
"13": 38,
"14": 40,
"15": 41,
"16": 42,
"17": 43,
"18": 44,
"19": 45
}
}
}
]
}
]
}
@@ -0,0 +1,10 @@
[Unit]
Description=Set Fan to Default Duty as Booting Up
DefaultDependencies=no
[Service]
Type=simple
ExecStart=/usr/bin/fan-default-speed.sh
[Install]
WantedBy=sysinit.target
@@ -0,0 +1,39 @@
#!/bin/bash
NVME_GPIO_NUM=( 148 149 150 151 152 153 154 155 )
NVME=( 1 1 1 1 1 1 1 1 )
FAN_TABLE_PATH="/usr/share/swampd/config.json"
FAN_TABLE=( "/usr/share/swampd/config-8ssd.json" "/usr/share/swampd/config-2ssd.json" )
TYPE=-1
# get nvme presence
for i in {0..7}
do
gpioNum=${NVME_GPIO_NUM[$i]}
NVME[i]=$(cat "/sys/class/gpio/gpio$gpioNum/value")
done
# distinguish between 8-ssd and 2-ssd sku
for i in {2..7}
do
if [ "${NVME[$i]}" -eq 0 ]; then
TYPE=0
fi
done
if [ $TYPE -eq -1 ]; then
for i in {0..1}
do
if [ "${NVME[$i]}" -eq 0 ]; then
TYPE=1
fi
done
fi
if [ $TYPE -eq 1 ]; then
cp "${FAN_TABLE[1]}" $FAN_TABLE_PATH
else
cp "${FAN_TABLE[0]}" $FAN_TABLE_PATH
fi
# start pid control
/usr/bin/swampd
@@ -0,0 +1,5 @@
#!/bin/bash
echo 230 > /sys/class/hwmon/*/pwm1
echo 230 > /sys/class/hwmon/*/pwm2
echo 230 > /sys/class/hwmon/*/pwm3
@@ -0,0 +1,12 @@
[Unit]
Description=Set Fan to Default Duty as Rebooting
DefaultDependencies=no
After=shutdown.target
[Service]
Type=oneshot
RemainAfterExit=true
ExecStart=/usr/bin/fan-default-speed.sh
[Install]
WantedBy=shutdown.target
@@ -0,0 +1,14 @@
[Unit]
Description=OpenBMC Fan Control Daemon
After=xyz.openbmc_project.nvme.manager.service
[Service]
Type=simple
ExecStart=/usr/bin/fan-control.sh
Restart=always
RestartSec=5
StartLimitInterval=0
ExecStopPost=/usr/bin/fan-default-speed.sh
[Install]
WantedBy=basic.target
@@ -0,0 +1,40 @@
FILESEXTRAPATHS:prepend:gsj := "${THISDIR}/${PN}:"
SRC_URI:append:gsj = " file://config-8ssd.json"
SRC_URI:append:gsj = " file://config-2ssd.json"
SRC_URI:append:gsj = " file://fan-control.sh"
SRC_URI:append:gsj = " file://fan-default-speed.sh"
SRC_URI:append:gsj = " file://phosphor-pid-control.service"
SRC_URI:append:gsj = " file://fan-reboot-control.service"
SRC_URI:append:gsj = " file://fan-boot-control.service"
FILES:${PN}:append:gsj = " ${datadir}/swampd/config-8ssd.json"
FILES:${PN}:append:gsj = " ${datadir}/swampd/config-2ssd.json"
FILES:${PN}:append:gsj = " ${bindir}/fan-control.sh"
FILES:${PN}:append:gsj = " ${bindir}/fan-default-speed.sh"
inherit systemd
RDEPENDS:${PN} += "bash"
SYSTEMD_SERVICE:${PN}:append:gsj = " phosphor-pid-control.service"
SYSTEMD_SERVICE:${PN}:append:gsj = " fan-reboot-control.service"
SYSTEMD_SERVICE:${PN}:append:gsj = " fan-boot-control.service"
do_install:append:gsj() {
install -d ${D}/${bindir}
install -m 0755 ${WORKDIR}/fan-control.sh ${D}/${bindir}
install -m 0755 ${WORKDIR}/fan-default-speed.sh ${D}/${bindir}
install -d ${D}${datadir}/swampd
install -m 0644 -D ${WORKDIR}/config-8ssd.json \
${D}${datadir}/swampd/config-8ssd.json
install -m 0644 -D ${WORKDIR}/config-2ssd.json \
${D}${datadir}/swampd/config-2ssd.json
install -d ${D}${systemd_unitdir}/system/
install -m 0644 ${WORKDIR}/phosphor-pid-control.service \
${D}${systemd_unitdir}/system
install -m 0644 ${WORKDIR}/fan-reboot-control.service \
${D}${systemd_unitdir}/system
install -m 0644 ${WORKDIR}/fan-boot-control.service \
${D}${systemd_unitdir}/system
}
@@ -0,0 +1,14 @@
OBMC_IMAGE_EXTRA_INSTALL:append:gsj = " quanta-nvme-powerctrl"
OBMC_IMAGE_EXTRA_INSTALL:append:gsj = " phosphor-nvme"
OBMC_IMAGE_EXTRA_INSTALL:append:gsj = " phosphor-pid-control"
OBMC_IMAGE_EXTRA_INSTALL:append:gsj = " detect-fan-fail"
OBMC_IMAGE_EXTRA_INSTALL:append:gsj = " google-ipmi-sys"
OBMC_IMAGE_EXTRA_INSTALL:append:gsj = " gsj-hotswap-change-setting"
OBMC_IMAGE_EXTRA_INSTALL:append:gsj = " iperf3"
OBMC_IMAGE_EXTRA_INSTALL:append:gsj = " phosphor-ipmi-host"
OBMC_IMAGE_EXTRA_INSTALL:append:gsj = " phosphor-hwmon"
OBMC_IMAGE_EXTRA_INSTALL:append:gsj = " phosphor-inventory-manager"
OBMC_IMAGE_EXTRA_INSTALL:append:gsj = " phosphor-host-postd"
OBMC_IMAGE_EXTRA_INSTALL:append:gsj = " phosphor-led-manager"
OBMC_IMAGE_EXTRA_INSTALL:append:gsj = " phosphor-led-sysfs"
OBMC_IMAGE_EXTRA_INSTALL:append:gsj = " phosphor-led-manager-faultmonitor"
@@ -0,0 +1,52 @@
0x00:
/system/chassis/bmc:
entityID: 6
entityInstance: 1
interfaces:
xyz.openbmc_project.Inventory.Decorator.Asset:
BuildDate:
IPMIFruProperty: Mfg Date
IPMIFruSection: Board
SerialNumber:
IPMIFruProperty: Serial Number
IPMIFruSection: Board
PartNumber:
IPMIFruProperty: Part Number
IPMIFruSection: Board
Manufacturer:
IPMIFruProperty: Manufacturer
IPMIFruSection: Board
xyz.openbmc_project.Inventory.Item:
PrettyName:
IPMIFruProperty: Name
IPMIFruSection: Board
xyz.openbmc_project.Inventory.Decorator.Revision:
Version:
IPMIFruProperty: FRU File ID
IPMIFruSection: Board
0x01:
/system/chassis/hsbp:
entityID: 16
entityInstance: 1
interfaces:
xyz.openbmc_project.Inventory.Decorator.Asset:
BuildDate:
IPMIFruProperty: Mfg Date
IPMIFruSection: Board
SerialNumber:
IPMIFruProperty: Serial Number
IPMIFruSection: Board
PartNumber:
IPMIFruProperty: Part Number
IPMIFruSection: Board
Manufacturer:
IPMIFruProperty: Manufacturer
IPMIFruSection: Board
xyz.openbmc_project.Inventory.Item:
PrettyName:
IPMIFruProperty: Name
IPMIFruSection: Board
xyz.openbmc_project.Inventory.Decorator.Revision:
Version:
IPMIFruProperty: FRU File ID
IPMIFruSection: Board
@@ -0,0 +1,19 @@
SUMMARY = "FRU properties config for ipmi-fru-parser"
PR = "r1"
LICENSE = "Apache-2.0"
LIC_FILES_CHKSUM = "file://${COREBASE}/meta/files/common-licenses/Apache-2.0;md5=89aea4e17d99a7cacdbeed46a0096b10"
inherit phosphor-ipmi-fru
inherit native
SRC_URI += "file://extra-properties.yaml"
PROVIDES += "virtual/phosphor-ipmi-fru-properties"
S = "${WORKDIR}"
do_install() {
DEST=${D}${properties_datadir}
install -d ${DEST}
install extra-properties.yaml ${DEST}
}
@@ -0,0 +1,7 @@
/system/chassis/bmc:
xyz.openbmc_project.Inventory.Item:
Present: 'true'
/system/chassis/hsbp:
xyz.openbmc_project.Inventory.Item:
Present: 'true'
@@ -0,0 +1,19 @@
SUMMARY = "gsj inventory map for phosphor-ipmi-host"
PR = "r1"
LICENSE = "Apache-2.0"
LIC_FILES_CHKSUM = "file://${COREBASE}/meta/files/common-licenses/Apache-2.0;md5=89aea4e17d99a7cacdbeed46a0096b10"
inherit phosphor-ipmi-host
inherit native
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}
}
@@ -0,0 +1,19 @@
SUMMARY = "gsj IPMI to DBus Inventory mapping."
PR = "r1"
LICENSE = "Apache-2.0"
LIC_FILES_CHKSUM = "file://${COREBASE}/meta/files/common-licenses/Apache-2.0;md5=89aea4e17d99a7cacdbeed46a0096b10"
inherit phosphor-ipmi-fru
inherit native
SRC_URI += "file://config.yaml"
PROVIDES += "virtual/phosphor-ipmi-fru-inventory"
S = "${WORKDIR}"
do_install() {
DEST=${D}${config_datadir}
install -d ${DEST}
install config.yaml ${DEST}
}
@@ -0,0 +1,19 @@
SUMMARY = "Quanta gsj IPMI to DBus Sensor mapping."
PR = "r1"
LICENSE = "Apache-2.0"
LIC_FILES_CHKSUM = "file://${COREBASE}/meta/files/common-licenses/Apache-2.0;md5=89aea4e17d99a7cacdbeed46a0096b10"
inherit phosphor-ipmi-host
inherit native
PROVIDES += "virtual/phosphor-ipmi-sensor-inventory"
SRC_URI += "file://config.yaml"
S = "${WORKDIR}"
do_install() {
DEST=${D}${sensor_datadir}
install -d ${DEST}
install config.yaml ${DEST}/sensor.yaml
}
@@ -0,0 +1,977 @@
0x30:
entityID: 0x06
entityInstance: 1
sensorType: 0x01
path: /xyz/openbmc_project/sensors/temperature/KL0
sensorReadingType: 0x01
bExp: 0
rExp: 0
mutability: Mutability::Write|Mutability::Read
serviceInterface: org.freedesktop.DBus.Properties
readingType: readingData
sensorNamePattern: nameLeaf
unit: xyz.openbmc_project.Sensor.Value.Unit.DegreesC
interfaces:
xyz.openbmc_project.Sensor.Value:
Value:
Offsets:
0xFF:
type: double
0x31:
entityID: 0x0D
entityInstance: 1
sensorType: 0x01
path: /xyz/openbmc_project/sensors/temperature/KL1
sensorReadingType: 0x01
bExp: 0
rExp: 0
mutability: Mutability::Write|Mutability::Read
serviceInterface: org.freedesktop.DBus.Properties
readingType: readingData
sensorNamePattern: nameLeaf
unit: xyz.openbmc_project.Sensor.Value.Unit.DegreesC
interfaces:
xyz.openbmc_project.Sensor.Value:
Value:
Offsets:
0xFF:
type: double
0x32:
entityID: 0x0E
entityInstance: 1
sensorType: 0x01
path: /xyz/openbmc_project/sensors/temperature/KL2
sensorReadingType: 0x01
bExp: 0
rExp: 0
mutability: Mutability::Write|Mutability::Read
serviceInterface: org.freedesktop.DBus.Properties
readingType: readingData
sensorNamePattern: nameLeaf
unit: xyz.openbmc_project.Sensor.Value.Unit.DegreesC
interfaces:
xyz.openbmc_project.Sensor.Value:
Value:
Offsets:
0xFF:
type: double
0x33:
entityID: 0x0E
entityInstance: 2
sensorType: 0x01
path: /xyz/openbmc_project/sensors/temperature/KL3
sensorReadingType: 0x01
bExp: 0
rExp: 0
mutability: Mutability::Write|Mutability::Read
serviceInterface: org.freedesktop.DBus.Properties
readingType: readingData
sensorNamePattern: nameLeaf
unit: xyz.openbmc_project.Sensor.Value.Unit.DegreesC
interfaces:
xyz.openbmc_project.Sensor.Value:
Value:
Offsets:
0xFF:
type: double
0x3C:
entityID: 0x0A
entityInstance: 1
sensorType: 0x01
path: /xyz/openbmc_project/sensors/temperature/P48V_HSC_Temp
sensorReadingType: 0x01
bExp: 0
rExp: 0
mutability: Mutability::Write|Mutability::Read
serviceInterface: org.freedesktop.DBus.Properties
readingType: readingData
sensorNamePattern: nameLeaf
unit: xyz.openbmc_project.Sensor.Value.Unit.DegreesC
interfaces:
xyz.openbmc_project.Sensor.Value:
Value:
Offsets:
0xFF:
type: double
0x70:
entityID: 0x0A
entityInstance: 5
sensorType: 0x03
path: /xyz/openbmc_project/sensors/current/P48V_HSC_Current
sensorReadingType: 0x01
multiplierM: 9
offsetB: 0
bExp: 0
rExp: -2
mutability: Mutability::Write|Mutability::Read
serviceInterface: org.freedesktop.DBus.Properties
readingType: readingData
sensorNamePattern: nameLeaf
unit: xyz.openbmc_project.Sensor.Value.Unit.Amperes
interfaces:
xyz.openbmc_project.Sensor.Value:
Value:
Offsets:
0xFF:
type: double
0x60:
entityID: 0x0A
entityInstance: 3
sensorType: 0x02
path: /xyz/openbmc_project/sensors/voltage/P48V_HSC_Vol
sensorReadingType: 0x01
multiplierM: 243
offsetB: 0
bExp: 0
rExp: -3
mutability: Mutability::Write|Mutability::Read
serviceInterface: org.freedesktop.DBus.Properties
readingType: readingData
sensorNamePattern: nameLeaf
unit: xyz.openbmc_project.Sensor.Value.Unit.Volts
interfaces:
xyz.openbmc_project.Sensor.Value:
Value:
Offsets:
0xFF:
type: double
0x90:
entityID: 0x0A
entityInstance: 6
sensorType: 0x0B
path: /xyz/openbmc_project/sensors/power/P48V_HSC_Power
sensorReadingType: 0x01
multiplierM: 310
offsetB: 4
bExp: 2
rExp: -2
mutability: Mutability::Write|Mutability::Read
serviceInterface: org.freedesktop.DBus.Properties
readingType: readingData
sensorNamePattern: nameLeaf
unit: xyz.openbmc_project.Sensor.Value.Unit.Watts
interfaces:
xyz.openbmc_project.Sensor.Value:
Value:
Offsets:
0xFF:
type: double
0x3D:
entityID: 0x0A
entityInstance: 2
sensorType: 0x01
path: /xyz/openbmc_project/sensors/temperature/P12V_BRIC_Temp
sensorReadingType: 0x01
bExp: 0
rExp: 0
mutability: Mutability::Write|Mutability::Read
serviceInterface: org.freedesktop.DBus.Properties
readingType: readingData
sensorNamePattern: nameLeaf
unit: xyz.openbmc_project.Sensor.Value.Unit.DegreesC
interfaces:
xyz.openbmc_project.Sensor.Value:
Value:
Offsets:
0xFF:
type: double
0x71:
entityID: 0x0A
entityInstance: 7
sensorType: 0x03
path: /xyz/openbmc_project/sensors/current/P12V_BRIC_Curr
sensorReadingType: 0x01
multiplierM: 200
offsetB: 0
bExp: 0
rExp: -3
mutability: Mutability::Write|Mutability::Read
serviceInterface: org.freedesktop.DBus.Properties
readingType: readingData
sensorNamePattern: nameLeaf
unit: xyz.openbmc_project.Sensor.Value.Unit.Amperes
interfaces:
xyz.openbmc_project.Sensor.Value:
Value:
Offsets:
0xFF:
type: double
0x61:
entityID: 0x0A
entityInstance: 4
sensorType: 0x02
path: /xyz/openbmc_project/sensors/voltage/P12V_BRIC_Vol
sensorReadingType: 0x01
multiplierM: 509
offsetB: 0
bExp: 0
rExp: -4
mutability: Mutability::Write|Mutability::Read
serviceInterface: org.freedesktop.DBus.Properties
readingType: readingData
sensorNamePattern: nameLeaf
unit: xyz.openbmc_project.Sensor.Value.Unit.Volts
interfaces:
xyz.openbmc_project.Sensor.Value:
Value:
Offsets:
0xFF:
type: double
0x80:
entityID: 0x1D
entityInstance: 1
sensorType: 0x04
path: /xyz/openbmc_project/sensors/fan_tach/Fan0_0_RPM
sensorReadingType: 0x01
multiplierM: 79
offsetB: 0
bExp: 0
rExp: 0
unit: xyz.openbmc_project.Sensor.Value.Unit.RPMS
serviceInterface: org.freedesktop.DBus.Properties
readingType: readingData
sensorNamePattern: nameLeaf
interfaces:
xyz.openbmc_project.Sensor.Value:
Value:
Offsets:
0xFF:
type: double
0x81:
entityID: 0x1D
entityInstance: 2
sensorType: 0x04
path: /xyz/openbmc_project/sensors/fan_tach/Fan0_1_RPM
sensorReadingType: 0x01
multiplierM: 79
offsetB: 0
bExp: 0
rExp: 0
unit: xyz.openbmc_project.Sensor.Value.Unit.RPMS
serviceInterface: org.freedesktop.DBus.Properties
readingType: readingData
sensorNamePattern: nameLeaf
interfaces:
xyz.openbmc_project.Sensor.Value:
Value:
Offsets:
0xFF:
type: double
0x82:
entityID: 0x1D
entityInstance: 3
sensorType: 0x04
path: /xyz/openbmc_project/sensors/fan_tach/Fan1_0_RPM
sensorReadingType: 0x01
multiplierM: 79
offsetB: 0
bExp: 0
rExp: 0
unit: xyz.openbmc_project.Sensor.Value.Unit.RPMS
serviceInterface: org.freedesktop.DBus.Properties
readingType: readingData
sensorNamePattern: nameLeaf
interfaces:
xyz.openbmc_project.Sensor.Value:
Value:
Offsets:
0xFF:
type: double
0x83:
entityID: 0x1D
entityInstance: 4
sensorType: 0x04
path: /xyz/openbmc_project/sensors/fan_tach/Fan1_1_RPM
sensorReadingType: 0x01
multiplierM: 79
offsetB: 0
bExp: 0
rExp: 0
unit: xyz.openbmc_project.Sensor.Value.Unit.RPMS
serviceInterface: org.freedesktop.DBus.Properties
readingType: readingData
sensorNamePattern: nameLeaf
interfaces:
xyz.openbmc_project.Sensor.Value:
Value:
Offsets:
0xFF:
type: double
0x84:
entityID: 0x1D
entityInstance: 5
sensorType: 0x04
path: /xyz/openbmc_project/sensors/fan_tach/Fan2_0_RPM
sensorReadingType: 0x01
multiplierM: 79
offsetB: 0
bExp: 0
rExp: 0
unit: xyz.openbmc_project.Sensor.Value.Unit.RPMS
serviceInterface: org.freedesktop.DBus.Properties
readingType: readingData
sensorNamePattern: nameLeaf
interfaces:
xyz.openbmc_project.Sensor.Value:
Value:
Offsets:
0xFF:
type: double
0x85:
entityID: 0x1D
entityInstance: 6
sensorType: 0x04
path: /xyz/openbmc_project/sensors/fan_tach/Fan2_1_RPM
sensorReadingType: 0x01
multiplierM: 79
offsetB: 0
bExp: 0
rExp: 0
unit: xyz.openbmc_project.Sensor.Value.Unit.RPMS
serviceInterface: org.freedesktop.DBus.Properties
readingType: readingData
sensorNamePattern: nameLeaf
interfaces:
xyz.openbmc_project.Sensor.Value:
Value:
Offsets:
0xFF:
type: double
0xC0: &fan_pwm
sensorType: 0x04
path: /xyz/openbmc_project/sensors/fan_tach/Fan0_0_RPM
sensorReadingType: 0x01
multiplierM: 1
offsetB: 0
bExp: 0
mutability: Mutability::Write|Mutability::Read
serviceInterface: org.freedesktop.DBus.Properties
readingType: readingData
interfaces:
xyz.openbmc_project.Control.FanPwm:
Target:
Offsets:
0xFF:
type: uint64_t
0xC1:
<<: *fan_pwm
path: /xyz/openbmc_project/sensors/fan_tach/Fan1_0_RPM
0xC2:
<<: *fan_pwm
path: /xyz/openbmc_project/sensors/fan_tach/Fan2_0_RPM
0x34:
entityID: 0x07
entityInstance: 1
sensorType: 0x01
path: /xyz/openbmc_project/sensors/temperature/nvme0
sensorReadingType: 0x01
mutability: Mutability::Write|Mutability::Read
serviceInterface: org.freedesktop.DBus.Properties
readingType: readingData
sensorNamePattern: nameLeaf
unit: xyz.openbmc_project.Sensor.Value.Unit.DegreesC
interfaces:
xyz.openbmc_project.Sensor.Value:
Value:
Offsets:
0xFF:
type: double
0x35:
entityID: 0x07
entityInstance: 2
sensorType: 0x01
path: /xyz/openbmc_project/sensors/temperature/nvme1
sensorReadingType: 0x01
mutability: Mutability::Write|Mutability::Read
serviceInterface: org.freedesktop.DBus.Properties
readingType: readingData
sensorNamePattern: nameLeaf
unit: xyz.openbmc_project.Sensor.Value.Unit.DegreesC
interfaces:
xyz.openbmc_project.Sensor.Value:
Value:
Offsets:
0xFF:
type: double
0x36:
entityID: 0x07
entityInstance: 3
sensorType: 0x01
path: /xyz/openbmc_project/sensors/temperature/nvme2
sensorReadingType: 0x01
mutability: Mutability::Write|Mutability::Read
serviceInterface: org.freedesktop.DBus.Properties
readingType: readingData
sensorNamePattern: nameLeaf
unit: xyz.openbmc_project.Sensor.Value.Unit.DegreesC
interfaces:
xyz.openbmc_project.Sensor.Value:
Value:
Offsets:
0xFF:
type: double
0x37:
entityID: 0x07
entityInstance: 4
sensorType: 0x01
path: /xyz/openbmc_project/sensors/temperature/nvme3
sensorReadingType: 0x01
mutability: Mutability::Write|Mutability::Read
serviceInterface: org.freedesktop.DBus.Properties
readingType: readingData
sensorNamePattern: nameLeaf
unit: xyz.openbmc_project.Sensor.Value.Unit.DegreesC
interfaces:
xyz.openbmc_project.Sensor.Value:
Value:
Offsets:
0xFF:
type: double
0x38:
entityID: 0x07
entityInstance: 5
sensorType: 0x01
path: /xyz/openbmc_project/sensors/temperature/nvme4
sensorReadingType: 0x01
mutability: Mutability::Write|Mutability::Read
serviceInterface: org.freedesktop.DBus.Properties
readingType: readingData
sensorNamePattern: nameLeaf
unit: xyz.openbmc_project.Sensor.Value.Unit.DegreesC
interfaces:
xyz.openbmc_project.Sensor.Value:
Value:
Offsets:
0xFF:
type: double
0x39:
entityID: 0x07
entityInstance: 6
sensorType: 0x01
path: /xyz/openbmc_project/sensors/temperature/nvme5
sensorReadingType: 0x01
mutability: Mutability::Write|Mutability::Read
serviceInterface: org.freedesktop.DBus.Properties
readingType: readingData
sensorNamePattern: nameLeaf
unit: xyz.openbmc_project.Sensor.Value.Unit.DegreesC
interfaces:
xyz.openbmc_project.Sensor.Value:
Value:
Offsets:
0xFF:
type: double
0x3A:
entityID: 0x07
entityInstance: 7
sensorType: 0x01
path: /xyz/openbmc_project/sensors/temperature/nvme6
sensorReadingType: 0x01
mutability: Mutability::Write|Mutability::Read
serviceInterface: org.freedesktop.DBus.Properties
readingType: readingData
sensorNamePattern: nameLeaf
unit: xyz.openbmc_project.Sensor.Value.Unit.DegreesC
interfaces:
xyz.openbmc_project.Sensor.Value:
Value:
Offsets:
0xFF:
type: double
0x3B:
entityID: 0x07
entityInstance: 8
sensorType: 0x01
path: /xyz/openbmc_project/sensors/temperature/nvme7
sensorReadingType: 0x01
mutability: Mutability::Write|Mutability::Read
serviceInterface: org.freedesktop.DBus.Properties
readingType: readingData
sensorNamePattern: nameLeaf
unit: xyz.openbmc_project.Sensor.Value.Unit.DegreesC
interfaces:
xyz.openbmc_project.Sensor.Value:
Value:
Offsets:
0xFF:
type: double
0x40:
entityID: 0x07
entityInstance: 9
sensorType: 0x21
path: /xyz/openbmc_project/led/groups/led_u2_0_locate
sensorReadingType: 0x6F
mutability: Mutability::Write|Mutability::Read
serviceInterface: org.freedesktop.DBus.Properties
readingType: assertion
sensorNamePattern: nameLeaf
interfaces:
xyz.openbmc_project.Led.Group:
Asserted:
Offsets:
0x01:
type: bool
assert: true
0x41:
entityID: 0x07
entityInstance: 10
sensorType: 0x21
path: /xyz/openbmc_project/led/groups/led_u2_1_locate
sensorReadingType: 0x6F
mutability: Mutability::Write|Mutability::Read
serviceInterface: org.freedesktop.DBus.Properties
readingType: assertion
sensorNamePattern: nameLeaf
interfaces:
xyz.openbmc_project.Led.Group:
Asserted:
Offsets:
0x01:
type: bool
assert: true
0x42:
entityID: 0x07
entityInstance: 11
sensorType: 0x21
path: /xyz/openbmc_project/led/groups/led_u2_2_locate
sensorReadingType: 0x6F
mutability: Mutability::Write|Mutability::Read
serviceInterface: org.freedesktop.DBus.Properties
readingType: assertion
sensorNamePattern: nameLeaf
interfaces:
xyz.openbmc_project.Led.Group:
Asserted:
Offsets:
0x01:
type: bool
assert: true
0x43:
entityID: 0x07
entityInstance: 12
sensorType: 0x21
path: /xyz/openbmc_project/led/groups/led_u2_3_locate
sensorReadingType: 0x6F
mutability: Mutability::Write|Mutability::Read
serviceInterface: org.freedesktop.DBus.Properties
readingType: assertion
sensorNamePattern: nameLeaf
interfaces:
xyz.openbmc_project.Led.Group:
Asserted:
Offsets:
0x01:
type: bool
assert: true
0x44:
entityID: 0x07
entityInstance: 13
sensorType: 0x21
path: /xyz/openbmc_project/led/groups/led_u2_4_locate
sensorReadingType: 0x6F
mutability: Mutability::Write|Mutability::Read
serviceInterface: org.freedesktop.DBus.Properties
readingType: assertion
sensorNamePattern: nameLeaf
interfaces:
xyz.openbmc_project.Led.Group:
Asserted:
Offsets:
0x01:
type: bool
assert: true
0x45:
entityID: 0x07
entityInstance: 14
sensorType: 0x21
path: /xyz/openbmc_project/led/groups/led_u2_5_locate
sensorReadingType: 0x6F
mutability: Mutability::Write|Mutability::Read
serviceInterface: org.freedesktop.DBus.Properties
readingType: assertion
sensorNamePattern: nameLeaf
interfaces:
xyz.openbmc_project.Led.Group:
Asserted:
Offsets:
0x01:
type: bool
assert: true
0x46:
entityID: 0x07
entityInstance: 15
sensorType: 0x21
path: /xyz/openbmc_project/led/groups/led_u2_6_locate
sensorReadingType: 0x6F
mutability: Mutability::Write|Mutability::Read
serviceInterface: org.freedesktop.DBus.Properties
readingType: assertion
sensorNamePattern: nameLeaf
interfaces:
xyz.openbmc_project.Led.Group:
Asserted:
Offsets:
0x01:
type: bool
assert: true
0x47:
entityID: 0x07
entityInstance: 16
sensorType: 0x21
path: /xyz/openbmc_project/led/groups/led_u2_7_locate
sensorReadingType: 0x6F
mutability: Mutability::Write|Mutability::Read
serviceInterface: org.freedesktop.DBus.Properties
readingType: assertion
sensorNamePattern: nameLeaf
interfaces:
xyz.openbmc_project.Led.Group:
Asserted:
Offsets:
0x01:
type: bool
assert: true
0x50:
entityID: 0x07
entityInstance: 17
sensorType: 0x21
path: /xyz/openbmc_project/led/groups/led_u2_0_fault
sensorReadingType: 0x6F
mutability: Mutability::Read
serviceInterface: org.freedesktop.DBus.Properties
readingType: assertion
sensorNamePattern: nameLeaf
interfaces:
xyz.openbmc_project.Led.Group:
Asserted:
Offsets:
0x00:
type: bool
assert: true
0x51:
entityID: 0x07
entityInstance: 18
sensorType: 0x21
path: /xyz/openbmc_project/led/groups/led_u2_1_fault
sensorReadingType: 0x6F
mutability: Mutability::Read
serviceInterface: org.freedesktop.DBus.Properties
readingType: assertion
sensorNamePattern: nameLeaf
interfaces:
xyz.openbmc_project.Led.Group:
Asserted:
Offsets:
0x00:
type: bool
assert: true
0x52:
entityID: 0x07
entityInstance: 19
sensorType: 0x21
path: /xyz/openbmc_project/led/groups/led_u2_2_fault
sensorReadingType: 0x6F
mutability: Mutability::Read
serviceInterface: org.freedesktop.DBus.Properties
readingType: assertion
sensorNamePattern: nameLeaf
interfaces:
xyz.openbmc_project.Led.Group:
Asserted:
Offsets:
0x00:
type: bool
assert: true
0x53:
entityID: 0x07
entityInstance: 20
sensorType: 0x21
path: /xyz/openbmc_project/led/groups/led_u2_3_fault
sensorReadingType: 0x6F
mutability: Mutability::Read
serviceInterface: org.freedesktop.DBus.Properties
readingType: assertion
sensorNamePattern: nameLeaf
interfaces:
xyz.openbmc_project.Led.Group:
Asserted:
Offsets:
0x00:
type: bool
assert: true
0x54:
entityID: 0x07
entityInstance: 21
sensorType: 0x21
path: /xyz/openbmc_project/led/groups/led_u2_4_fault
sensorReadingType: 0x6F
mutability: Mutability::Read
serviceInterface: org.freedesktop.DBus.Properties
readingType: assertion
sensorNamePattern: nameLeaf
interfaces:
xyz.openbmc_project.Led.Group:
Asserted:
Offsets:
0x00:
type: bool
assert: true
0x55:
entityID: 0x07
entityInstance: 22
sensorType: 0x21
path: /xyz/openbmc_project/led/groups/led_u2_5_fault
sensorReadingType: 0x6F
mutability: Mutability::Read
serviceInterface: org.freedesktop.DBus.Properties
readingType: assertion
sensorNamePattern: nameLeaf
interfaces:
xyz.openbmc_project.Led.Group:
Asserted:
Offsets:
0x00:
type: bool
assert: true
0x56:
entityID: 0x07
entityInstance: 23
sensorType: 0x21
path: /xyz/openbmc_project/led/groups/led_u2_6_fault
sensorReadingType: 0x6F
mutability: Mutability::Read
serviceInterface: org.freedesktop.DBus.Properties
readingType: assertion
sensorNamePattern: nameLeaf
interfaces:
xyz.openbmc_project.Led.Group:
Asserted:
Offsets:
0x00:
type: bool
assert: true
0x57:
entityID: 0x07
entityInstance: 24
sensorType: 0x21
path: /xyz/openbmc_project/led/groups/led_u2_7_fault
sensorReadingType: 0x6F
mutability: Mutability::Read
serviceInterface: org.freedesktop.DBus.Properties
readingType: assertion
sensorNamePattern: nameLeaf
interfaces:
xyz.openbmc_project.Led.Group:
Asserted:
Offsets:
0x00:
type: bool
assert: true
0xB0:
entityID: 0x20
entityInstance: 1
sensorType: 0x0C
path: /xyz/openbmc_project/metrics/memory/BmcECC
sensorReadingType: 0x6F
serviceInterface: org.freedesktop.DBus.Properties
readingType: assertion
mutability: Mutability::Read
sensorNamePattern: nameLeaf
interfaces:
xyz.openbmc_project.Memory.MemoryECC:
state:
Offsets:
0x00:
type: string
assert: xyz.openbmc_project.Memory.MemoryECC.ECCStatus.CE
0x01:
type: string
assert: xyz.openbmc_project.Memory.MemoryECC.ECCStatus.UE
0x05:
type: string
assert: xyz.openbmc_project.Memory.MemoryECC.ECCStatus.LogFull
0x62:
entityID: 0x0A
entityInstance: 7
sensorType: 0x02
path: /xyz/openbmc_project/sensors/voltage/P3V3_STBY_Vol
sensorReadingType: 0x01
multiplierM: 156
offsetB: 0
bExp: 0
rExp: -4
mutability: Mutability::Write|Mutability::Read
serviceInterface: org.freedesktop.DBus.Properties
readingType: readingData
sensorNamePattern: nameLeaf
unit: xyz.openbmc_project.Sensor.Value.Unit.Volts
interfaces:
xyz.openbmc_project.Sensor.Value:
Value:
Offsets:
0xFF:
type: double
0x64:
entityID: 0x0A
entityInstance: 8
sensorType: 0x02
path: /xyz/openbmc_project/sensors/voltage/P2V5_BMC_Vol
sensorReadingType: 0x01
multiplierM: 117
offsetB: 0
bExp: 0
rExp: -4
mutability: Mutability::Write|Mutability::Read
serviceInterface: org.freedesktop.DBus.Properties
readingType: readingData
sensorNamePattern: nameLeaf
unit: xyz.openbmc_project.Sensor.Value.Unit.Volts
interfaces:
xyz.openbmc_project.Sensor.Value:
Value:
Offsets:
0xFF:
type: double
0x65:
entityID: 0x0A
entityInstance: 9
sensorType: 0x02
path: /xyz/openbmc_project/sensors/voltage/P1V8_BMC_Vol
sensorReadingType: 0x01
multiplierM: 78
offsetB: 0
bExp: 0
rExp: -4
mutability: Mutability::Write|Mutability::Read
serviceInterface: org.freedesktop.DBus.Properties
readingType: readingData
sensorNamePattern: nameLeaf
unit: xyz.openbmc_project.Sensor.Value.Unit.Volts
interfaces:
xyz.openbmc_project.Sensor.Value:
Value:
Offsets:
0xFF:
type: double
0x66:
entityID: 0x0A
entityInstance: 10
sensorType: 0x02
path: /xyz/openbmc_project/sensors/voltage/P1V2_BMC_Vol
sensorReadingType: 0x01
multiplierM: 78
offsetB: 0
bExp: 0
rExp: -4
mutability: Mutability::Write|Mutability::Read
serviceInterface: org.freedesktop.DBus.Properties
readingType: readingData
sensorNamePattern: nameLeaf
unit: xyz.openbmc_project.Sensor.Value.Unit.Volts
interfaces:
xyz.openbmc_project.Sensor.Value:
Value:
Offsets:
0xFF:
type: double
0x67:
entityID: 0x0A
entityInstance: 11
sensorType: 0x02
path: /xyz/openbmc_project/sensors/voltage/PVTT_BMC_Vol
sensorReadingType: 0x01
multiplierM: 392
offsetB: 0
bExp: 0
rExp: -5
mutability: Mutability::Write|Mutability::Read
serviceInterface: org.freedesktop.DBus.Properties
readingType: readingData
sensorNamePattern: nameLeaf
unit: xyz.openbmc_project.Sensor.Value.Unit.Volts
interfaces:
xyz.openbmc_project.Sensor.Value:
Value:
Offsets:
0xFF:
type: double
0x68:
entityID: 0x0A
entityInstance: 12
sensorType: 0x02
path: /xyz/openbmc_project/sensors/voltage/P1V175_BMC_Vol
sensorReadingType: 0x01
multiplierM: 78
offsetB: 0
bExp: 0
rExp: -4
mutability: Mutability::Write|Mutability::Read
serviceInterface: org.freedesktop.DBus.Properties
readingType: readingData
sensorNamePattern: nameLeaf
unit: xyz.openbmc_project.Sensor.Value.Unit.Volts
interfaces:
xyz.openbmc_project.Sensor.Value:
Value:
Offsets:
0xFF:
type: double
0x69:
entityID: 0x0A
entityInstance: 13
sensorType: 0x02
path: /xyz/openbmc_project/sensors/voltage/P3V3_PEVPH_Vol
sensorReadingType: 0x01
multiplierM: 156
offsetB: 0
bExp: 0
rExp: -4
mutability: Mutability::Write|Mutability::Read
serviceInterface: org.freedesktop.DBus.Properties
readingType: readingData
sensorNamePattern: nameLeaf
unit: xyz.openbmc_project.Sensor.Value.Unit.Volts
interfaces:
xyz.openbmc_project.Sensor.Value:
Value:
Offsets:
0xFF:
type: double
@@ -0,0 +1 @@
FILESEXTRAPATHS:prepend:gsj := "${THISDIR}/${PN}:"
@@ -0,0 +1,9 @@
{
"0" : {
"access_mode" : "always_available",
"user_auth_disabled" : false,
"per_msg_auth_disabled" : false,
"alerting_disabled" : false,
"priv_limit" : "priv-admin"
}
}
@@ -0,0 +1,25 @@
{
"0" : {
"name" : "usb0",
"is_valid" : true,
"active_sessions" : 0,
"channel_info" : {
"medium_type" : "lan-802.3",
"protocol_type" : "ipmb-1.0",
"session_supported" : "multi-session",
"is_ipmi" : true
}
},
"8" : {
"name" : "INTRABMC",
"is_valid" : true,
"active_sessions" : 0,
"channel_info" : {
"medium_type" : "oem",
"protocol_type" : "oem",
"session_supported" : "session-less",
"is_ipmi" : true
}
}
}
@@ -0,0 +1 @@
PACKAGECONFIG:append:gsj = " net-bridge reboot-update static-bmc"
@@ -0,0 +1,2 @@
SYSFS_PATH=/sys/bus/i2c/devices/10-0055/eeprom
FRUID=0
@@ -0,0 +1,2 @@
SYSFS_PATH=/sys/bus/i2c/devices/9-0055/eeprom
FRUID=1
@@ -0,0 +1,20 @@
inherit obmc-phosphor-systemd
FILESEXTRAPATHS:prepend:gsj := "${THISDIR}/${PN}:"
EEPROM_NAMES = "hsbp bmc"
EEPROMFMT = "system/chassis/{0}"
EEPROM_ESCAPEDFMT = "system-chassis-{0}"
EEPROMS = "${@compose_list(d, 'EEPROMFMT', 'EEPROM_NAMES')}"
EEPROMS_ESCAPED = "${@compose_list(d, 'EEPROM_ESCAPEDFMT', 'EEPROM_NAMES')}"
ENVFMT = "obmc/eeproms/{0}"
SYSTEMD_ENVIRONMENT_FILE:${PN}:append:gsj := " ${@compose_list(d, 'ENVFMT', 'EEPROMS')}"
TMPL = "obmc-read-eeprom@.service"
TGT = "multi-user.target"
INSTFMT = "obmc-read-eeprom@{0}.service"
FMT = "../${TMPL}:${TGT}.wants/${INSTFMT}"
SYSTEMD_LINK:${PN}:append:gsj := " ${@compose_list(d, 'FMT', 'EEPROMS_ESCAPED')}"
@@ -0,0 +1,61 @@
#<NetFn>:<Command>
0x00:0x00 //<Chassis>:<Chassis Capabiliti>
0x00:0x01 //<Chassis>:<Get Chassis Status>
0x00:0x02 //<Chassis>:<Chassis Control>
0x00:0x05 //<Chassis>:<Set Chassis Capabilities>
0x00:0x06 //<Chassis>:<Set Power Restore Policy>
0x00:0x08 //<Chassis>:<Set System Boot Options>
0x00:0x09 //<Chassis>:<Get System Boot Options>
0x04:0x20 //<Sensor/Event>:<Get Device SDR Info>
0x04:0x21 //<Sensor/Event>:<Get Device SDR>
0x04:0x22 //<Sensor/Event>:<Reserve Device SDR Repository>
0x04:0x27 //<Sensor/Event>:<Get Sensor Threshold>
0x04:0x29 //<Sensor/Event>:<Get Sensor Event Enable>
0x04:0x2B //<Sensor/Event>:<Get Sensor Event Status>
0x04:0x2D //<Sensor/Event>:<Get Sensor Reading>
0x04:0x2F //<Sensor/Event>:<Get Sensor Type>
0x04:0x30 //<Sensor/Event>:<Set Sensor Reading and Event Status>
0x06:0x01 //<App>:<Get Device ID>
0x06:0x02 //<App>:<Cold Reset>
0x06:0x03 //<App>:<Warm Reset>
0x06:0x04 //<App>:<Get Self Test Results>
0x06:0x08 //<App>:<Get Device GUID>
0x06:0x35 //<App>:<Read Event Message Buffer>
0x06:0x40 //<App>:<Set Channel Access>
0x06:0x41 //<App>:<Get Channel Access>
0x06:0x42 //<App>:<Get Channel Info>
0x06:0x43 //<App>:<Set User Access>
0x06:0x44 //<App>:<Get User Access>
0x06:0x45 //<App>:<Set User Name>
0x06:0x46 //<App>:<Get User Name>
0x06:0x47 //<App>:<Set User Password>
0x06:0x48 //<App>:<Activate Payload>
0x06:0x49 //<App>:<Deactivate Payload>
0x06:0x4A //<App>:<Get Payload Activation Status>
0x06:0x4B //<App>:<Get Payload Instance Info>
0x06:0x54 //<App>:<Get Channel Cipher Suites>
0x0A:0x10 //<Storage>:<Get FRU Inventory Area Info>
0x0A:0x11 //<Storage>:<Read FRU Data>
0x0A:0x20 //<Storage>:<Get SDR Repository Info>
0x0A:0x22 //<Storage>:<Reserve SDR Repository>
0x0A:0x23 //<Storage>:<Get SDR>
0x0A:0x40 //<Storage>:<Get SEL Info>
0x0A:0x42 //<Storage>:<Reserve SEL>
0x0A:0x43 //<Storage>:<Get SEL Entry>
0x0A:0x44 //<Storage>:<Add SEL Entry>
0x0A:0x47 //<Storage>:<Clear SEL>
0x0A:0x48 //<Storage>:<Get SEL Time>
0x0A:0x49 //<Storage>:<Set SEL Time>
0x0C:0x01 //<Transport>:<Set LAN Configuration Parameters>
0x0C:0x02 //<Transport>:<Get LAN Configuration Parameters>
0x2C:0x00 //<Group Extension>:<Group Extension Command>
0x2C:0x01 //<Group Extension>:<Get DCMI Capabilities>
0x2C:0x02 //<Group Extension>:<Get Power Reading>
0x2C:0x03 //<Group Extension>:<Get Power Limit>
0x2C:0x06 //<Group Extension>:<Get Asset Tag>
0x2C:0x07 //<Group Extension>:<Get Sensor Info>
0x2C:0x10 //<Group Extension>:<Get Temperature Readings>
0x2C:0x3E //<Group Extension>:<Get HPM.x Capabilities>
0x2E:0x02 //<Google OEM>:<I2C via Proxy Adapter>
0x2E:0x30 //<Google OEM>:<Ethernet Statistics>
0x2E:0x32 //<Google OEM>:<Sys Commands>
@@ -0,0 +1,7 @@
FILESEXTRAPATHS:prepend := "${THISDIR}/${PN}:"
# Replace the default whitelist for GSJ board.
SRC_URI:append:gsj = " file://gsj-ipmid-whitelist.conf"
WHITELIST_CONF:remove:gsj = " ${S}/host-ipmid-whitelist.conf"
WHITELIST_CONF:append:gsj = " ${WORKDIR}/gsj-ipmid-whitelist.conf"
@@ -0,0 +1,3 @@
# In gsj, usb0 is the interface.
RMCPP_IFACE:gsj = "usb0"
@@ -0,0 +1,17 @@
SUMMARY = "Phosphor LED Group Management for gsj"
PR = "r1"
LICENSE = "Apache-2.0"
LIC_FILES_CHKSUM = "file://${COREBASE}/meta/files/common-licenses/Apache-2.0;md5=89aea4e17d99a7cacdbeed46a0096b10"
inherit native
PROVIDES += "virtual/phosphor-led-manager-config-native"
SRC_URI += "file://led.yaml"
S = "${WORKDIR}"
do_install() {
SRC=${S}
DEST=${D}${datadir}/phosphor-led-manager
install -D ${SRC}/led.yaml ${DEST}/led.yaml
}
@@ -0,0 +1,113 @@
BmcBooted:
led-bmc-live:
Action: 'Blink'
DutyOn: 50
Period: 1000
LED_BMC_TRAY_PWRGD:
LED_BMC_TRAY_PWRGD:
Action: 'On'
Period: 1000
LED_U2_0_LOCATE:
LED_U2_0_LOCATE:
Action: 'Blink'
DutyOn: 50
Period: 250
LED_U2_0_FAULT:
Action: 'Blink'
DutyOn: 50
Period: 250
LED_U2_1_LOCATE:
LED_U2_1_LOCATE:
Action: 'Blink'
DutyOn: 50
Period: 250
LED_U2_1_FAULT:
Action: 'Blink'
DutyOn: 50
Period: 250
LED_U2_2_LOCATE:
LED_U2_2_LOCATE:
Action: 'Blink'
DutyOn: 50
Period: 250
LED_U2_2_FAULT:
Action: 'Blink'
DutyOn: 50
Period: 250
LED_U2_3_LOCATE:
LED_U2_3_LOCATE:
Action: 'Blink'
DutyOn: 50
Period: 250
LED_U2_3_FAULT:
Action: 'Blink'
DutyOn: 50
Period: 250
LED_U2_4_LOCATE:
LED_U2_4_LOCATE:
Action: 'Blink'
DutyOn: 50
Period: 250
LED_U2_4_FAULT:
Action: 'Blink'
DutyOn: 50
Period: 250
LED_U2_5_LOCATE:
LED_U2_5_LOCATE:
Action: 'Blink'
DutyOn: 50
Period: 250
LED_U2_5_FAULT:
Action: 'Blink'
DutyOn: 50
Period: 250
LED_U2_6_LOCATE:
LED_U2_6_LOCATE:
Action: 'Blink'
DutyOn: 50
Period: 250
LED_U2_6_FAULT:
Action: 'Blink'
DutyOn: 50
Period: 250
LED_U2_7_LOCATE:
LED_U2_7_LOCATE:
Action: 'Blink'
DutyOn: 50
Period: 250
LED_U2_7_FAULT:
Action: 'Blink'
DutyOn: 50
Period: 250
LED_U2_0_FAULT:
LED_U2_0_FAULT:
Action: 'On'
Period: 1000
LED_U2_1_FAULT:
LED_U2_1_FAULT:
Action: 'On'
Period: 1000
LED_U2_2_FAULT:
LED_U2_2_FAULT:
Action: 'On'
Period: 1000
LED_U2_3_FAULT:
LED_U2_3_FAULT:
Action: 'On'
Period: 1000
LED_U2_4_FAULT:
LED_U2_4_FAULT:
Action: 'On'
Period: 1000
LED_U2_5_FAULT:
LED_U2_5_FAULT:
Action: 'On'
Period: 1000
LED_U2_6_FAULT:
LED_U2_6_FAULT:
Action: 'On'
Period: 1000
LED_U2_7_FAULT:
LED_U2_7_FAULT:
Action: 'On'
Period: 1000
@@ -0,0 +1,8 @@
LABEL_temp1= "KL0"
WARNLO_temp1= "5000"
WARNHI_temp1= "38000"
CRITHI_temp1 = "40000"
CRITLO_temp1 = "0"
MINVALUE_temp1 = "-128"
MAXVALUE_temp1 = "127"
EVENT_temp1= "WARNHI,WARNLO,CRITHI,CRITLO"
@@ -0,0 +1,8 @@
LABEL_temp1= "KL1"
WARNLO_temp1= "5000"
WARNHI_temp1= "53000"
CRITHI_temp1 = "56000"
CRITLO_temp1 = "0"
MINVALUE_temp1 = "-128"
MAXVALUE_temp1 = "127"
EVENT_temp1= "WARNHI,WARNLO,CRITHI,CRITLO"
@@ -0,0 +1,8 @@
LABEL_temp1= "KL2"
WARNLO_temp1= "5000"
WARNHI_temp1= "58000"
CRITHI_temp1 = "61000"
CRITLO_temp1 = "0"
MINVALUE_temp1 = "-128"
MAXVALUE_temp1 = "127"
EVENT_temp1= "WARNHI,WARNLO,CRITHI,CRITLO"
@@ -0,0 +1,8 @@
LABEL_temp1= "KL3"
WARNLO_temp1= "5000"
WARNHI_temp1= "42000"
CRITHI_temp1 = "44000"
CRITLO_temp1 = "0"
MINVALUE_temp1 = "-128"
MAXVALUE_temp1 = "127"
EVENT_temp1= "WARNHI,WARNLO,CRITHI,CRITLO"
@@ -0,0 +1,37 @@
LABEL_temp1= "P48V_HSC_Temp"
WARNHI_temp1= "60000"
WARNLO_temp1= "5000"
CRITHI_temp1= "65000"
CRITLO_temp1= "0"
MINVALUE_temp1 = "-128"
MAXVALUE_temp1 = "127"
EVENT_temp1= "WARNHI,WARNLO,CRITHI,CRITLO"
LABEL_curr1= "P48V_HSC_Current"
WARNLO_curr1= "4"
CRITLO_curr1= "0"
WARNHI_curr1= "17629"
CRITHI_curr1= "19231"
MINVALUE_curr1 = "0"
MAXVALUE_curr1 = "23"
EVENT_curr1= "WARNHI,WARNLO,CRITHI,CRITLO"
GAIN_curr1= "0.78"
LABEL_in3= "P48V_HSC_Vol"
WARNLO_in3= "39500"
CRITLO_in3= "38500"
WARNHI_in3= "60500"
CRITHI_in3= "61500"
MINVALUE_in3 = "0"
MAXVALUE_in3 = "62"
EVENT_in3= "WARNHI,WARNLO,CRITHI,CRITLO"
LABEL_power1= "P48V_HSC_Power"
WARNLO_power1= "128205"
CRITLO_power1= "0"
WARNHI_power1= "705128205"
CRITHI_power1= "769230770"
MINVALUE_power1 = "0"
MAXVALUE_power1 = "795"
EVENT_power1= "WARNHI,WARNLO,CRITHI,CRITLO"
GAIN_power1= "0.78"
@@ -0,0 +1,27 @@
LABEL_temp1= "P12V_BRIC_Temp"
WARNHI_temp1= "88000"
WARNLO_temp1= "5000"
CRITHI_temp1= "93000"
CRITLO_temp1= "0"
MINVALUE_temp1 = "-128"
MAXVALUE_temp1 = "127"
EVENT_temp1 = "WARNHI,WARNLO,CRITHI,CRITLO"
LABEL_curr1= "P12V_BRIC_Curr"
WARNLO_curr1= "9"
CRITLO_curr1= "0"
WARNHI_curr1= "45800"
CRITHI_curr1= "50000"
MINVALUE_curr1 = "0"
MAXVALUE_curr1 = "51"
EVENT_curr1 = "WARNHI,WARNLO,CRITHI,CRITLO"
LABEL_in2= "P12V_BRIC_Vol"
WARNLO_in2= "11400"
CRITLO_in2= "11040"
WARNHI_in2= "12600"
CRITHI_in2= "12960"
MINVALUE_in2= "0"
MAXVALUE_in2= "13"
EVENT_in2= "WARNHI,WARNLO,CRITHI,CRITLO"
@@ -0,0 +1,62 @@
LABEL_in1= "P3V3_STBY_Vol"
WARNLO_in1= "3135"
CRITLO_in1= "3135"
WARNHI_in1= "3465"
CRITHI_in1= "3465"
MINVALUE_in1= "0"
MAXVALUE_in1= "4"
EVENT_in1= "WARNHI,WARNLO,CRITHI,CRITLO"
LABEL_in2= "P2V5_BMC_Vol"
WARNLO_in2= "2375"
CRITLO_in2= "2375"
WARNHI_in2= "2625"
CRITHI_in2= "2625"
MINVALUE_in2= "0"
MAXVALUE_in2= "3"
EVENT_in2= "WARNHI,WARNLO,CRITHI,CRITLO"
LABEL_in3= "P1V8_BMC_Vol"
WARNLO_in3= "1710"
CRITLO_in3= "1710"
WARNHI_in3= "1890"
CRITHI_in3= "1890"
MINVALUE_in3= "0"
MAXVALUE_in3= "2"
EVENT_in3= "WARNHI,WARNLO,CRITHI,CRITLO"
LABEL_in4= "P1V2_BMC_Vol"
WARNLO_in4= "1140"
CRITLO_in4= "1140"
WARNHI_in4= "1260"
CRITHI_in4= "1260"
MINVALUE_in4= "0"
MAXVALUE_in4= "2"
EVENT_in4= "WARNHI,WARNLO,CRITHI,CRITLO"
LABEL_in5= "PVTT_BMC_Vol"
WARNLO_in5= "571"
CRITLO_in5= "571"
WARNHI_in5= "626"
CRITHI_in5= "626"
MINVALUE_in5= "0"
MAXVALUE_in5= "1"
EVENT_in5= "WARNHI,WARNLO,CRITHI,CRITLO"
LABEL_in6= "P1V175_BMC_Vol"
WARNLO_in6= "1139"
CRITLO_in6= "1139"
WARNHI_in6= "1210"
CRITHI_in6= "1210"
MINVALUE_in6= "0"
MAXVALUE_in6= "2"
EVENT_in6= "WARNHI,WARNLO,CRITHI,CRITLO"
LABEL_in7= "P3V3_PEVPH_Vol"
WARNLO_in7= "3135"
CRITLO_in7= "3135"
WARNHI_in7= "3465"
CRITHI_in7= "3465"
MINVALUE_in7= "0"
MAXVALUE_in7= "4"
EVENT_in7= "WARNHI,WARNLO,CRITHI,CRITLO"
@@ -0,0 +1,65 @@
LABEL_fan1= "Fan0_0_RPM"
TARGET_fan1= "Fan0_0_RPM"
WARNHI_fan1= "19250"
WARNLO_fan1= "150"
CRITHI_fan1= "19250"
CRITLO_fan1= "150"
MINVALUE_fan1 = "0"
MAXVALUE_fan1 = "20145"
PWM_TARGET_fan1 = 1
EVENT_fan1= "WARNHI,WARNLO,CRITHI,CRITLO"
LABEL_fan2= "Fan0_1_RPM"
TARGET_fan2= "Fan0_1_RPM"
WARNHI_fan2= "17600"
WARNLO_fan2= "150"
CRITHI_fan2= "17600"
CRITLO_fan2= "150"
MINVALUE_fan2 = "0"
MAXVALUE_fan2 = "20145"
PWM_TARGET_fan2 = 1
EVENT_fan2= "WARNHI,WARNLO,CRITHI,CRITLO"
LABEL_fan3= "Fan1_0_RPM"
TARGET_fan3= "Fan1_0_RPM"
WARNHI_fan3= "19250"
WARNLO_fan3= "150"
CRITHI_fan3= "19250"
CRITLO_fan3= "150"
MINVALUE_fan3 = "0"
MAXVALUE_fan3 = "20145"
PWM_TARGET_fan3 = 2
EVENT_fan3= "WARNHI,WARNLO,CRITHI,CRITLO"
LABEL_fan4= "Fan1_1_RPM"
TARGET_fan4= "Fan1_1_RPM"
WARNHI_fan4= "17600"
WARNLO_fan4= "150"
CRITHI_fan4= "17600"
CRITLO_fan4= "150"
MINVALUE_fan4 = "0"
MAXVALUE_fan4 = "20145"
PWM_TARGET_fan4 = 2
EVENT_fan4= "WARNHI,WARNLO,CRITHI,CRITLO"
LABEL_fan5= "Fan2_0_RPM"
TARGET_fan5= "Fan2_0_RPM"
WARNHI_fan5= "19250"
WARNLO_fan5= "150"
CRITHI_fan5= "19250"
CRITLO_fan5= "150"
MINVALUE_fan5 = "0"
MAXVALUE_fan5 = "20145"
PWM_TARGET_fan5 = 3
EVENT_fan5= "WARNHI,WARNLO,CRITHI,CRITLO"
LABEL_fan6= "Fan2_1_RPM"
TARGET_fan6= "Fan2_1_RPM"
WARNHI_fan6= "17600"
WARNLO_fan6= "150"
CRITHI_fan6= "17600"
CRITLO_fan6= "150"
MINVALUE_fan6 = "0"
MAXVALUE_fan6 = "20145"
PWM_TARGET_fan6 = 3
EVENT_fan6= "WARNHI,WARNLO,CRITHI,CRITLO"
@@ -0,0 +1,23 @@
FILESEXTRAPATHS:prepend := "${THISDIR}/${PN}:"
NAMES = " \
i2c@81000/lm75@5c \
i2c@82000/lm75@5c \
i2c@83000/lm75@5c \
i2c@84000/lm75@5c \
i2c@8b000/hotswap@15 \
i2c@8b000/power-brick@36 \
i2c@8c000/ucd90160@6b \
"
ITEMSFMT = "ahb/apb/{0}.conf"
ITEMS += "${@compose_list(d, 'ITEMSFMT', 'NAMES')}"
ENVS = "obmc/hwmon/{0}"
SYSTEMD_ENVIRONMENT_FILE:${PN}:append:gsj = " ${@compose_list(d, 'ENVS', 'ITEMS')}"
# Fan sensors
FITEMS = "pwm-fan-controller@103000.conf"
FENVS = "obmc/hwmon/ahb/apb/{0}"
SYSTEMD_ENVIRONMENT_FILE:${PN}:append:gsj = " ${@compose_list(d, 'FENVS', 'FITEMS')}"
@@ -0,0 +1,6 @@
---
/xyz/openbmc_project/control/host0/restriction_mode:
- Interface: xyz.openbmc_project.Control.Security.RestrictionMode
Properties:
RestrictionMode:
Default: RestrictionMode::Modes::Whitelist
@@ -0,0 +1,2 @@
FILESEXTRAPATHS:prepend:gsj := "${THISDIR}/${BPN}:"
SRC_URI:append:gsj = " file://restrictionmode-default-whitelist.override.yml"