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,947 @@
{
"version": "R05",
"sensors": [
{
"name": "fan0",
"type": "fan",
"readPath": "/xyz/openbmc_project/sensors/fan_tach/fan0",
"writePath": "/sys/devices/platform/ahb/ahb:apb/f0103000.pwm-fan-controller/hwmon/@Fan_0_To_4_Hwmon@/pwm1",
"min": 0,
"max": 255
},
{
"name": "fan1",
"type": "fan",
"readPath": "/xyz/openbmc_project/sensors/fan_tach/fan1",
"writePath": "/sys/devices/platform/ahb/ahb:apb/f0103000.pwm-fan-controller/hwmon/@Fan_0_To_4_Hwmon@/pwm2",
"min": 0,
"max": 255
},
{
"name": "fb_fan0",
"type": "fan",
"readPath": "/xyz/openbmc_project/sensors/fan_tach/fb_fan0",
"writePath": "/sys/devices/platform/ahb/ahb:apb/f0103000.pwm-fan-controller/hwmon/@Fan_0_To_4_Hwmon@/pwm3",
"min": 0,
"max": 255
},
{
"name": "fb_fan1",
"type": "fan",
"readPath": "/xyz/openbmc_project/sensors/fan_tach/fb_fan1",
"writePath": "/sys/devices/platform/ahb/ahb:apb/f0103000.pwm-fan-controller/hwmon/@Fan_0_To_4_Hwmon@/pwm4",
"min": 0,
"max": 255
},
{
"name": "fb_fan2",
"type": "fan",
"readPath": "/xyz/openbmc_project/sensors/fan_tach/fb_fan2",
"writePath": "/sys/devices/platform/ahb/ahb:apb/f0103000.pwm-fan-controller/hwmon/@Fan_0_To_4_Hwmon@/pwm5",
"min": 0,
"max": 255
},
{
"name": "fleeting0",
"type": "margin",
"readPath": "/xyz/openbmc_project/extsensors/margin/fleeting0",
"writePath": "",
"min": 0,
"max": 0,
"ignoreDbusMinMax": true,
"timeout": 0
},
{
"name": "fleeting1",
"type": "margin",
"readPath": "/xyz/openbmc_project/extsensors/margin/fleeting1",
"writePath": "",
"min": 0,
"max": 0,
"ignoreDbusMinMax": true,
"timeout": 0
},
{
"name": "fleeting2",
"type": "margin",
"readPath": "/xyz/openbmc_project/extsensors/margin/fleeting2",
"writePath": "",
"min": 0,
"max": 0,
"ignoreDbusMinMax": true,
"timeout": 0
},
{
"name": "cputemp",
"type": "temp",
"readPath": "/xyz/openbmc_project/sensors/temperature/cputemp",
"writePath": "",
"min": 0,
"max": 0,
"ignoreDbusMinMax": true,
"timeout": 0
},
{
"name": "vddcr_cpu",
"type": "temp",
"readPath": "/xyz/openbmc_project/sensors/temperature/vddcr_cpu",
"writePath": "",
"min": 0,
"max": 0,
"ignoreDbusMinMax": true,
"timeout": 0
},
{
"name": "vddcr_soc",
"type": "temp",
"readPath": "/xyz/openbmc_project/sensors/temperature/vddcr_soc",
"writePath": "",
"min": 0,
"max": 0,
"ignoreDbusMinMax": true,
"timeout": 0
},
{
"name": "vddio_abcd",
"type": "temp",
"readPath": "/xyz/openbmc_project/sensors/temperature/vddio_abcd",
"writePath": "",
"min": 0,
"max": 0,
"ignoreDbusMinMax": true,
"timeout": 0
},
{
"name": "vddio_efgh",
"type": "temp",
"readPath": "/xyz/openbmc_project/sensors/temperature/vddio_efgh",
"writePath": "",
"min": 0,
"max": 0,
"ignoreDbusMinMax": true,
"timeout": 0
},
{
"name": "p12v_mobo",
"type": "temp",
"readPath": "/xyz/openbmc_project/sensors/temperature/p12v_mobo",
"writePath": "",
"min": 0,
"max": 0,
"ignoreDbusMinMax": true,
"timeout": 0
},
{
"name": "powerseq_temp",
"type": "temp",
"readPath": "/xyz/openbmc_project/sensors/temperature/powerseq_temp",
"writePath": "",
"min": 0,
"max": 0,
"ignoreDbusMinMax": true,
"timeout": 0
},
{
"name": "p12v_fan",
"type": "temp",
"readPath": "/xyz/openbmc_project/sensors/temperature/p12v_fan",
"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
},
{
"name": "nvme8",
"type": "temp",
"readPath": "/xyz/openbmc_project/sensors/temperature/nvme8",
"writePath": "",
"min": 0,
"max": 0,
"ignoreDbusMinMax": true,
"timeout": 0
},
{
"name": "nvme9",
"type": "temp",
"readPath": "/xyz/openbmc_project/sensors/temperature/nvme9",
"writePath": "",
"min": 0,
"max": 0,
"ignoreDbusMinMax": true,
"timeout": 0
},
{
"name": "nvme10",
"type": "temp",
"readPath": "/xyz/openbmc_project/sensors/temperature/nvme10",
"writePath": "",
"min": 0,
"max": 0,
"ignoreDbusMinMax": true,
"timeout": 0
},
{
"name": "nvme11",
"type": "temp",
"readPath": "/xyz/openbmc_project/sensors/temperature/nvme11",
"writePath": "",
"min": 0,
"max": 0,
"ignoreDbusMinMax": true,
"timeout": 0
},
{
"name": "nvme12",
"type": "temp",
"readPath": "/xyz/openbmc_project/sensors/temperature/nvme12",
"writePath": "",
"min": 0,
"max": 0,
"ignoreDbusMinMax": true,
"timeout": 0
},
{
"name": "nvme13",
"type": "temp",
"readPath": "/xyz/openbmc_project/sensors/temperature/nvme13",
"writePath": "",
"min": 0,
"max": 0,
"ignoreDbusMinMax": true,
"timeout": 0
},
{
"name": "nvme14",
"type": "temp",
"readPath": "/xyz/openbmc_project/sensors/temperature/nvme14",
"writePath": "",
"min": 0,
"max": 0,
"ignoreDbusMinMax": true,
"timeout": 0
},
{
"name": "nvme15",
"type": "temp",
"readPath": "/xyz/openbmc_project/sensors/temperature/nvme15",
"writePath": "",
"min": 0,
"max": 0,
"ignoreDbusMinMax": true,
"timeout": 0
}
],
"zones": [
{
"id": 0,
"minThermalOutput": 0.0,
"failsafePercent": 100.0,
"pids": [
{
"name": "fan0",
"type": "fan",
"inputs": [
"fan0"
],
"setpoint": 0.0,
"pid": {
"samplePeriod": 0.1,
"proportionalCoeff": 0.0,
"integralCoeff": 0.0,
"feedFwdOffsetCoeff": 0.0,
"feedFwdGainCoeff": 0.0056,
"integralLimit_min": 0.0,
"integralLimit_max": 0.0,
"outLim_min": 15.0,
"outLim_max": 100.0,
"slewNeg": 0.0,
"slewPos": 0.0
}
},
{
"name": "fan1",
"type": "fan",
"inputs": [
"fan1"
],
"setpoint": 0.0,
"pid": {
"samplePeriod": 0.1,
"proportionalCoeff": 0.0,
"integralCoeff": 0.0,
"feedFwdOffsetCoeff": 0.0,
"feedFwdGainCoeff": 0.0056,
"integralLimit_min": 0.0,
"integralLimit_max": 0.0,
"outLim_min": 15.0,
"outLim_max": 100.0,
"slewNeg": 0.0,
"slewPos": 0.0
}
},
{
"name": "cputemp",
"type": "temp",
"inputs": [
"cputemp"
],
"setpoint": 80.0,
"pid": {
"samplePeriod": 1.0,
"proportionalCoeff": -714.0,
"integralCoeff": -9.0,
"feedFwdOffsetCoeff": 0.0,
"feedFwdGainCoeff": 0.0,
"integralLimit_min": 2679.0,
"integralLimit_max": 18000.0,
"outLim_min": 2679.0,
"outLim_max": 18000.0,
"slewNeg": 0.0,
"slewPos": 0.0,
"positiveHysteresis": 0.0,
"negativeHysteresis": 0.0
}
},
{
"name": "zone0_vr",
"type": "temp",
"inputs": [
"vddcr_cpu",
"vddcr_soc",
"vddio_abcd",
"vddio_efgh",
"p12v_mobo",
"powerseq_temp"
],
"setpoint": 90.0,
"pid": {
"samplePeriod": 1.0,
"proportionalCoeff": -536.0,
"integralCoeff": -9.0,
"feedFwdOffsetCoeff": 0.0,
"feedFwdGainCoeff": 0.0,
"integralLimit_min": 2679.0,
"integralLimit_max": 18000.0,
"outLim_min": 2679.0,
"outLim_max": 18000.0,
"slewNeg": 0.0,
"slewPos": 0.0,
"positiveHysteresis": 0.0,
"negativeHysteresis": 0.0
}
},
{
"name": "fleeting0",
"type": "margin",
"inputs": [
"fleeting0"
],
"setpoint": 10.0,
"pid": {
"samplePeriod": 1.0,
"proportionalCoeff": 536.0,
"integralCoeff": 9.0,
"feedFwdOffsetCoeff": 0.0,
"feedFwdGainCoeff": 0.0,
"integralLimit_min": 2679.0,
"integralLimit_max": 18000.0,
"outLim_min": 2679.0,
"outLim_max": 18000.0,
"slewNeg": 0.0,
"slewPos": 0.0,
"positiveHysteresis": 0.0,
"negativeHysteresis": 0.0
}
},
{
"name": "fleeting1",
"type": "margin",
"inputs": [
"fleeting1"
],
"setpoint": 10.0,
"pid": {
"samplePeriod": 1.0,
"proportionalCoeff": 536.0,
"integralCoeff": 18.0,
"feedFwdOffsetCoeff": 0.0,
"feedFwdGainCoeff": 0.0,
"integralLimit_min": 2679.0,
"integralLimit_max": 18000.0,
"outLim_min": 2679.0,
"outLim_max": 18000.0,
"slewNeg": 0.0,
"slewPos": 0.0,
"positiveHysteresis": 0.0,
"negativeHysteresis": 0.0
}
},
{
"name": "fleeting2",
"type": "margin",
"inputs": [
"fleeting2"
],
"setpoint": 10.0,
"pid": {
"samplePeriod": 1.0,
"proportionalCoeff": 536.0,
"integralCoeff": 18.0,
"feedFwdOffsetCoeff": 0.0,
"feedFwdGainCoeff": 0.0,
"integralLimit_min": 2679.0,
"integralLimit_max": 18000.0,
"outLim_min": 2679.0,
"outLim_max": 18000.0,
"slewNeg": 0.0,
"slewPos": 0.0,
"positiveHysteresis": 0.0,
"negativeHysteresis": 0.0
}
}
]
},
{
"id": 1,
"minThermalOutput": 0.0,
"failsafePercent": 100.0,
"pids": [
{
"name": "fb_fan0",
"type": "fan",
"inputs": [
"fb_fan0"
],
"setpoint": 0.0,
"pid": {
"samplePeriod": 0.1,
"proportionalCoeff": 0.0,
"integralCoeff": 0.0,
"feedFwdOffsetCoeff": 0.0,
"feedFwdGainCoeff": 0.0056,
"integralLimit_min": 0.0,
"integralLimit_max": 0.0,
"outLim_min": 15.0,
"outLim_max": 100.0,
"slewNeg": 0.0,
"slewPos": 0.0
}
},
{
"name": "fb_fan1",
"type": "fan",
"inputs": [
"fb_fan1"
],
"setpoint": 0.0,
"pid": {
"samplePeriod": 0.1,
"proportionalCoeff": 0.0,
"integralCoeff": 0.0,
"feedFwdOffsetCoeff": 0.0,
"feedFwdGainCoeff": 0.0056,
"integralLimit_min": 0.0,
"integralLimit_max": 0.0,
"outLim_min": 15.0,
"outLim_max": 100.0,
"slewNeg": 0.0,
"slewPos": 0.0
}
},
{
"name": "fb_fan2",
"type": "fan",
"inputs": [
"fb_fan2"
],
"setpoint": 0.0,
"pid": {
"samplePeriod": 0.1,
"proportionalCoeff": 0.0,
"integralCoeff": 0.0,
"feedFwdOffsetCoeff": 0.0,
"feedFwdGainCoeff": 0.0056,
"integralLimit_min": 0.0,
"integralLimit_max": 0.0,
"outLim_min": 15.0,
"outLim_max": 100.0,
"slewNeg": 0.0,
"slewPos": 0.0
}
},
{
"name": "p12v_fan",
"type": "temp",
"inputs": [
"p12v_fan"
],
"setpoint": 90.0,
"pid": {
"samplePeriod": 1.0,
"proportionalCoeff": -268.0,
"integralCoeff": -4.0,
"feedFwdOffsetCoeff": 0.0,
"feedFwdGainCoeff": 0.0,
"integralLimit_min": 2679.0,
"integralLimit_max": 18000.0,
"outLim_min": 2679.0,
"outLim_max": 18000.0,
"slewNeg": 0.0,
"slewPos": 0.0,
"positiveHysteresis": 0.0,
"negativeHysteresis": 0.0
}
},
{
"name": "nvme0",
"type": "temp",
"inputs": [
"nvme0"
],
"setpoint": @WCTemp00@,
"pid": {
"samplePeriod": 1.0,
"proportionalCoeff": -1250.0,
"integralCoeff": -12.0,
"feedFwdOffsetCoeff": 0.0,
"feedFwdGainCoeff": 0.0,
"integralLimit_min": 2679.0,
"integralLimit_max": 18000.0,
"outLim_min": 2679.0,
"outLim_max": 18000.0,
"slewNeg": 0.0,
"slewPos": 0.0,
"positiveHysteresis": 0.0,
"negativeHysteresis": 0.0
}
},
{
"name": "nvme1",
"type": "temp",
"inputs": [
"nvme1"
],
"setpoint": @WCTemp01@,
"pid": {
"samplePeriod": 1.0,
"proportionalCoeff": -1250.0,
"integralCoeff": -12.0,
"feedFwdOffsetCoeff": 0.0,
"feedFwdGainCoeff": 0.0,
"integralLimit_min": 2679.0,
"integralLimit_max": 18000.0,
"outLim_min": 2679.0,
"outLim_max": 18000.0,
"slewNeg": 0.0,
"slewPos": 0.0,
"positiveHysteresis": 0.0,
"negativeHysteresis": 0.0
}
},
{
"name": "nvme2",
"type": "temp",
"inputs": [
"nvme2"
],
"setpoint": @WCTemp02@,
"pid": {
"samplePeriod": 1.0,
"proportionalCoeff": -1250.0,
"integralCoeff": -12.0,
"feedFwdOffsetCoeff": 0.0,
"feedFwdGainCoeff": 0.0,
"integralLimit_min": 2679.0,
"integralLimit_max": 18000.0,
"outLim_min": 2679.0,
"outLim_max": 18000.0,
"slewNeg": 0.0,
"slewPos": 0.0,
"positiveHysteresis": 0.0,
"negativeHysteresis": 0.0
}
},
{
"name": "nvme3",
"type": "temp",
"inputs": [
"nvme3"
],
"setpoint": @WCTemp03@,
"pid": {
"samplePeriod": 1.0,
"proportionalCoeff": -1250.0,
"integralCoeff": -12.0,
"feedFwdOffsetCoeff": 0.0,
"feedFwdGainCoeff": 0.0,
"integralLimit_min": 2679.0,
"integralLimit_max": 18000.0,
"outLim_min": 2679.0,
"outLim_max": 18000.0,
"slewNeg": 0.0,
"slewPos": 0.0,
"positiveHysteresis": 0.0,
"negativeHysteresis": 0.0
}
},
{
"name": "nvme4",
"type": "temp",
"inputs": [
"nvme4"
],
"setpoint": @WCTemp04@,
"pid": {
"samplePeriod": 1.0,
"proportionalCoeff": -1250.0,
"integralCoeff": -12.0,
"feedFwdOffsetCoeff": 0.0,
"feedFwdGainCoeff": 0.0,
"integralLimit_min": 2679.0,
"integralLimit_max": 18000.0,
"outLim_min": 2679.0,
"outLim_max": 18000.0,
"slewNeg": 0.0,
"slewPos": 0.0,
"positiveHysteresis": 0.0,
"negativeHysteresis": 0.0
}
},
{
"name": "nvme5",
"type": "temp",
"inputs": [
"nvme5"
],
"setpoint": @WCTemp05@,
"pid": {
"samplePeriod": 1.0,
"proportionalCoeff": -1250.0,
"integralCoeff": -12.0,
"feedFwdOffsetCoeff": 0.0,
"feedFwdGainCoeff": 0.0,
"integralLimit_min": 2679.0,
"integralLimit_max": 18000.0,
"outLim_min": 2679.0,
"outLim_max": 18000.0,
"slewNeg": 0.0,
"slewPos": 0.0,
"positiveHysteresis": 0.0,
"negativeHysteresis": 0.0
}
},
{
"name": "nvme6",
"type": "temp",
"inputs": [
"nvme6"
],
"setpoint": @WCTemp06@,
"pid": {
"samplePeriod": 1.0,
"proportionalCoeff": -1250.0,
"integralCoeff": -12.0,
"feedFwdOffsetCoeff": 0.0,
"feedFwdGainCoeff": 0.0,
"integralLimit_min": 2679.0,
"integralLimit_max": 18000.0,
"outLim_min": 2679.0,
"outLim_max": 18000.0,
"slewNeg": 0.0,
"slewPos": 0.0,
"positiveHysteresis": 0.0,
"negativeHysteresis": 0.0
}
},
{
"name": "nvme7",
"type": "temp",
"inputs": [
"nvme7"
],
"setpoint": @WCTemp07@,
"pid": {
"samplePeriod": 1.0,
"proportionalCoeff": -1250.0,
"integralCoeff": -12.0,
"feedFwdOffsetCoeff": 0.0,
"feedFwdGainCoeff": 0.0,
"integralLimit_min": 2679.0,
"integralLimit_max": 18000.0,
"outLim_min": 2679.0,
"outLim_max": 18000.0,
"slewNeg": 0.0,
"slewPos": 0.0,
"positiveHysteresis": 0.0,
"negativeHysteresis": 0.0
}
},
{
"name": "nvme8",
"type": "temp",
"inputs": [
"nvme8"
],
"setpoint": @WCTemp08@,
"pid": {
"samplePeriod": 1.0,
"proportionalCoeff": -1250.0,
"integralCoeff": -12.0,
"feedFwdOffsetCoeff": 0.0,
"feedFwdGainCoeff": 0.0,
"integralLimit_min": 2679.0,
"integralLimit_max": 18000.0,
"outLim_min": 2679.0,
"outLim_max": 18000.0,
"slewNeg": 0.0,
"slewPos": 0.0,
"positiveHysteresis": 0.0,
"negativeHysteresis": 0.0
}
},
{
"name": "nvme9",
"type": "temp",
"inputs": [
"nvme9"
],
"setpoint": @WCTemp09@,
"pid": {
"samplePeriod": 1.0,
"proportionalCoeff": -1250.0,
"integralCoeff": -12.0,
"feedFwdOffsetCoeff": 0.0,
"feedFwdGainCoeff": 0.0,
"integralLimit_min": 2679.0,
"integralLimit_max": 18000.0,
"outLim_min": 2679.0,
"outLim_max": 18000.0,
"slewNeg": 0.0,
"slewPos": 0.0,
"positiveHysteresis": 0.0,
"negativeHysteresis": 0.0
}
},
{
"name": "nvme10",
"type": "temp",
"inputs": [
"nvme10"
],
"setpoint": @WCTemp10@,
"pid": {
"samplePeriod": 1.0,
"proportionalCoeff": -1250.0,
"integralCoeff": -12.0,
"feedFwdOffsetCoeff": 0.0,
"feedFwdGainCoeff": 0.0,
"integralLimit_min": 2679.0,
"integralLimit_max": 18000.0,
"outLim_min": 2679.0,
"outLim_max": 18000.0,
"slewNeg": 0.0,
"slewPos": 0.0,
"positiveHysteresis": 0.0,
"negativeHysteresis": 0.0
}
},
{
"name": "nvme11",
"type": "temp",
"inputs": [
"nvme11"
],
"setpoint": @WCTemp11@,
"pid": {
"samplePeriod": 1.0,
"proportionalCoeff": -1250.0,
"integralCoeff": -12.0,
"feedFwdOffsetCoeff": 0.0,
"feedFwdGainCoeff": 0.0,
"integralLimit_min": 2679.0,
"integralLimit_max": 18000.0,
"outLim_min": 2679.0,
"outLim_max": 18000.0,
"slewNeg": 0.0,
"slewPos": 0.0,
"positiveHysteresis": 0.0,
"negativeHysteresis": 0.0
}
},
{
"name": "nvme12",
"type": "temp",
"inputs": [
"nvme12"
],
"setpoint": @WCTemp12@,
"pid": {
"samplePeriod": 1.0,
"proportionalCoeff": -1250.0,
"integralCoeff": -12.0,
"feedFwdOffsetCoeff": 0.0,
"feedFwdGainCoeff": 0.0,
"integralLimit_min": 2679.0,
"integralLimit_max": 18000.0,
"outLim_min": 2679.0,
"outLim_max": 18000.0,
"slewNeg": 0.0,
"slewPos": 0.0,
"positiveHysteresis": 0.0,
"negativeHysteresis": 0.0
}
},
{
"name": "nvme13",
"type": "temp",
"inputs": [
"nvme13"
],
"setpoint": @WCTemp13@,
"pid": {
"samplePeriod": 1.0,
"proportionalCoeff": -1250.0,
"integralCoeff": -12.0,
"feedFwdOffsetCoeff": 0.0,
"feedFwdGainCoeff": 0.0,
"integralLimit_min": 2679.0,
"integralLimit_max": 18000.0,
"outLim_min": 2679.0,
"outLim_max": 18000.0,
"slewNeg": 0.0,
"slewPos": 0.0,
"positiveHysteresis": 0.0,
"negativeHysteresis": 0.0
}
},
{
"name": "nvme14",
"type": "temp",
"inputs": [
"nvme14"
],
"setpoint": @WCTemp14@,
"pid": {
"samplePeriod": 1.0,
"proportionalCoeff": -1250.0,
"integralCoeff": -12.0,
"feedFwdOffsetCoeff": 0.0,
"feedFwdGainCoeff": 0.0,
"integralLimit_min": 2679.0,
"integralLimit_max": 18000.0,
"outLim_min": 2679.0,
"outLim_max": 18000.0,
"slewNeg": 0.0,
"slewPos": 0.0,
"positiveHysteresis": 0.0,
"negativeHysteresis": 0.0
}
},
{
"name": "nvme15",
"type": "temp",
"inputs": [
"nvme15"
],
"setpoint": @WCTemp15@,
"pid": {
"samplePeriod": 1.0,
"proportionalCoeff": -1250.0,
"integralCoeff": -12.0,
"feedFwdOffsetCoeff": 0.0,
"feedFwdGainCoeff": 0.0,
"integralLimit_min": 2679.0,
"integralLimit_max": 18000.0,
"outLim_min": 2679.0,
"outLim_max": 18000.0,
"slewNeg": 0.0,
"slewPos": 0.0,
"positiveHysteresis": 0.0,
"negativeHysteresis": 0.0
}
}
]
}
]
}
@@ -0,0 +1,88 @@
#!/bin/bash
FAN_TABLE_FILE_IN="/usr/share/swampd/config.json.in"
TEMP_FILE="$(mktemp)"
cp "$FAN_TABLE_FILE_IN" "$TEMP_FILE"
# wait for fan dbus
mapper wait /xyz/openbmc_project/sensors/fan_tach/fan0
mapper wait /xyz/openbmc_project/sensors/fan_tach/fan1
mapper wait /xyz/openbmc_project/sensors/fan_tach/fb_fan0
mapper wait /xyz/openbmc_project/sensors/fan_tach/fb_fan1
mapper wait /xyz/openbmc_project/sensors/fan_tach/fb_fan2
# generate fan table writePath
Fan_0_To_4_Hwmon="$(ls /sys/devices/platform/ahb/ahb:*/*pwm-fan-controller/hwmon/)"
if [[ "$Fan_0_To_4_Hwmon" != "" ]]; then
sed -i "s/@Fan_0_To_4_Hwmon@/$Fan_0_To_4_Hwmon/g" "$TEMP_FILE"
fi
presentGpio=()
presentState=()
gpioPath="/sys/class/gpio/gpio"
if [[ -f "/etc/nvme/nvme_config.json" ]]; then
# shellcheck disable=SC2207
presentGpio=($(grep NVMeDrivePresentPin /etc/nvme/nvme_config.json \
| awk '{print $2}' | cut -d "," -f 0))
fi
nvmePath="/xyz/openbmc_project/sensors/temperature/nvme"
# Get and Set WCTEMP
for ((i = 0; i < 16; i++)); do
name="@WCTemp$(printf "%02d" $i)@"
wcTemp=72000
if [[ -d "${gpioPath}${presentGpio[i]}" ]] &&
[[ "$(cat "${gpioPath}${presentGpio[i]}/value")" == "0" ]]; then
presentState[i]="true"
else
presentState[i]="false"
fi
if [[ "${presentState[i]}" == "true" ]]; then
actualWCTemp=0
for ((j = 0; j < 3; j++)); do
actualWCTemp="$(
busctl get-property xyz.openbmc_project.nvme.manager \
${nvmePath}${i} \
xyz.openbmc_project.Sensor.Threshold.Critical \
CriticalHigh | awk '{print $2}'
)"
if [[ "${actualWCTemp}" -ne 0 ]]; then
break
fi
echo "${nvmePath}${i} WCTemp was read to be 0, retrying after 1 sec sleep"
sleep 1
done
if [[ "${actualWCTemp}" -ne 0 ]]; then
wcTemp="$(echo "${actualWCTemp} -7" | awk '{printf $1 + $2}')"
else
echo "${nvmePath}${i} WCTemp was read to be 0, using default WCTemp: ${wcTemp}"
fi
fi
sed -i "s/$name/${wcTemp}/g" "$TEMP_FILE"
if [[ "${presentState[i]}" == "false" ]]; then
sensorPath="${nvmePath}${i}"
pathLine=$(grep -nw "$sensorPath" "$TEMP_FILE" | awk -F ':' '{print $1}')
sed -i "$TEMP_FILE" -re "$((pathLine - 3)),$((pathLine + 6))d"
if [ $i -eq 15 ]; then
sed -i "$((pathLine - 4))s/,//" "$TEMP_FILE"
fi
listLine=$(grep -n "\"name\": \"nvme${i}\"" "$TEMP_FILE" | awk -F ':' '{print $1}')
sed -i "$TEMP_FILE" -re "$((listLine - 1)),$((listLine + 21))d"
if [ $i -eq 15 ]; then
sed -i "$((listLine - 2))s/,//" "$TEMP_FILE"
fi
fi
done
# Use shell parameter expansion to trim the ".in" suffix
mv "$TEMP_FILE" "${FAN_TABLE_FILE_IN%".in"}"
exit 0
@@ -0,0 +1,15 @@
[Unit]
Description=Swampd Margin-based Fan Control Daemon
After=xyz.openbmc_project.Hwmon@-ahb-apb-pwm\x2dfan\x2dcontroller\x40103000.service
After=xyz.openbmc_project.nvme.manager.service
[Service]
Type=simple
ExecStartPre=/usr/bin/fan-table-init.sh
ExecStart=/usr/bin/swampd
Restart=always
RestartSec=5
StartLimitInterval=0
[Install]
WantedBy=basic.target
@@ -0,0 +1,25 @@
FILESEXTRAPATHS:prepend:gbs := "${THISDIR}/${PN}:"
SRC_URI:append:gbs = " file://config.json.in \
file://fan-table-init.sh \
file://phosphor-pid-control.service \
"
FILES:${PN}:append:gbs = " ${datadir}/swampd/config.json.in"
FILES:${PN}:append:gbs = " ${bindir}/fan-table-init.sh"
RDEPENDS:${PN} += "bash"
SYSTEMD_SERVICE:${PN}:append:gbs = " phosphor-pid-control.service"
do_install:append:gbs() {
install -d ${D}/${bindir}
install -m 0755 ${WORKDIR}/fan-table-init.sh ${D}/${bindir}
install -d ${D}${datadir}/swampd
install -m 0644 -D ${WORKDIR}/config.json.in \
${D}${datadir}/swampd/
install -d ${D}${systemd_system_unitdir}
install -m 0644 ${WORKDIR}/phosphor-pid-control.service \
${D}${systemd_system_unitdir}
}