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,3 @@
EXTRA_OEMESON:append = " \
-Dreset-button-do-warm-reboot=enabled \
"
@@ -0,0 +1,26 @@
SUMMARY = "YAML configuration for Mt.Jade"
PR = "r1"
LICENSE = "Apache-2.0"
LIC_FILES_CHKSUM = "file://${COREBASE}/meta/files/common-licenses/Apache-2.0;md5=89aea4e17d99a7cacdbeed46a0096b10"
inherit allarch
SRC_URI = " \
file://${MACHINE}-ipmi-sensors.yaml \
file://mtjade-ipmi-fru.yaml \
"
S = "${WORKDIR}"
do_install() {
install -m 0644 -D ${MACHINE}-ipmi-sensors.yaml \
${D}${datadir}/${BPN}/ipmi-sensors.yaml
install -m 0644 -D mtjade-ipmi-fru.yaml \
${D}${datadir}/${BPN}/ipmi-fru-read.yaml
}
FILES:${PN}-dev = " \
${datadir}/${BPN}/ipmi-sensors.yaml \
${datadir}/${BPN}/ipmi-fru-read.yaml \
"
ALLOW_EMPTY:${PN} = "1"
@@ -0,0 +1,643 @@
1: &TEMP_DEFAULTS
bExp: 0
entityID: 30
entityInstance: 1
interfaces:
xyz.openbmc_project.Sensor.Value:
Value:
Offsets:
255:
type: double
multiplierM: 1
mutability: Mutability::Write|Mutability::Read
offsetB: 0
path: /xyz/openbmc_project/sensors/temperature/TS1_Temp
rExp: 0
readingType: readingData
sensorNamePattern: nameLeaf
sensorReadingType: 1
sensorType: 1
serviceInterface: org.freedesktop.DBus.Properties
unit: xyz.openbmc_project.Sensor.Value.Unit.DegreesC
2:
<<: *TEMP_DEFAULTS
entityInstance: 2
path: /xyz/openbmc_project/sensors/temperature/TS2_Temp
3:
<<: *TEMP_DEFAULTS
entityInstance: 3
path: /xyz/openbmc_project/sensors/temperature/TS3_Temp
4:
<<: *TEMP_DEFAULTS
entityInstance: 4
path: /xyz/openbmc_project/sensors/temperature/TS4_Temp
5:
<<: *TEMP_DEFAULTS
entityInstance: 5
path: /xyz/openbmc_project/sensors/temperature/TS5_Temp
6:
<<: *TEMP_DEFAULTS
entityInstance: 6
path: /xyz/openbmc_project/sensors/temperature/TS6_Temp
243:
<<: *TEMP_DEFAULTS
entityInstance: 58
path: /xyz/openbmc_project/sensors/temperature/PSU0_TEMP
244:
<<: *TEMP_DEFAULTS
entityInstance: 59
path: /xyz/openbmc_project/sensors/temperature/PSU1_TEMP
37: &FAN_DEFAULTS
entityID: 29
entityInstance: 13
sensorType: 4
path: /xyz/openbmc_project/sensors/fan_tach/FAN3_1
sensorReadingType: 1
multiplierM: 100
offsetB: 0
rExp: 0
unit: xyz.openbmc_project.Sensor.Value.Unit.RPMS
mutability: Mutability::Write|Mutability::Read
serviceInterface: org.freedesktop.DBus.Properties
readingType: readingData
sensorNamePattern: nameLeaf
interfaces:
xyz.openbmc_project.Sensor.Value:
Value:
Offsets:
0x0:
type: double
40:
<<: *FAN_DEFAULTS
entityInstance: 16
path: /xyz/openbmc_project/sensors/fan_tach/FAN3_2
43:
<<: *FAN_DEFAULTS
entityInstance: 19
path: /xyz/openbmc_project/sensors/fan_tach/FAN4_1
46:
<<: *FAN_DEFAULTS
entityInstance: 22
path: /xyz/openbmc_project/sensors/fan_tach/FAN4_2
49:
<<: *FAN_DEFAULTS
entityInstance: 25
path: /xyz/openbmc_project/sensors/fan_tach/FAN5_1
52:
<<: *FAN_DEFAULTS
entityInstance: 28
path: /xyz/openbmc_project/sensors/fan_tach/FAN5_2
55:
<<: *FAN_DEFAULTS
entityInstance: 31
path: /xyz/openbmc_project/sensors/fan_tach/FAN6_1
58:
<<: *FAN_DEFAULTS
entityInstance: 34
path: /xyz/openbmc_project/sensors/fan_tach/FAN6_2
61:
<<: *FAN_DEFAULTS
entityInstance: 37
path: /xyz/openbmc_project/sensors/fan_tach/FAN7_1
64:
<<: *FAN_DEFAULTS
entityInstance: 40
path: /xyz/openbmc_project/sensors/fan_tach/FAN7_2
67:
<<: *FAN_DEFAULTS
entityInstance: 43
path: /xyz/openbmc_project/sensors/fan_tach/FAN8_1
70:
<<: *FAN_DEFAULTS
entityInstance: 46
path: /xyz/openbmc_project/sensors/fan_tach/FAN8_2
245:
<<: *FAN_DEFAULTS
entityInstance: 60
path: /xyz/openbmc_project/sensors/fan_tach/PSU0_fan1
246:
<<: *FAN_DEFAULTS
entityInstance: 61
path: /xyz/openbmc_project/sensors/fan_tach/PSU1_fan1
73: &VOLTAGE_DEFAULTS
entityID: 0x13
entityInstance: 9
sensorType: 0x02
path: /xyz/openbmc_project/sensors/voltage/S0_0V8_VDDC_SOC
sensorReadingType: 0x01
multiplierM: 5
offsetB: 0
bExp: 0
unit: xyz.openbmc_project.Sensor.Value.Unit.Volts
rExp: -3
serviceInterface: org.freedesktop.DBus.Properties
readingType: readingData
interfaces:
xyz.openbmc_project.Sensor.Value:
Value:
Offsets:
0xFF:
type: double
74:
<<: *VOLTAGE_DEFAULTS
entityInstance: 11
multiplierM: 7
path: /xyz/openbmc_project/sensors/voltage/S0_0V75_PCP
75:
<<: *VOLTAGE_DEFAULTS
entityInstance: 13
multiplierM: 7
path: /xyz/openbmc_project/sensors/voltage/S0_1V2_VDDQ0123
76:
<<: *VOLTAGE_DEFAULTS
entityInstance: 15
multiplierM: 4
path: /xyz/openbmc_project/sensors/voltage/S0_0V6_VTT0123
77:
<<: *VOLTAGE_DEFAULTS
entityInstance: 17
multiplierM: 15
path: /xyz/openbmc_project/sensors/voltage/S0_2V5_VPP0123
78:
<<: *VOLTAGE_DEFAULTS
entityInstance: 19
multiplierM: 7
path: /xyz/openbmc_project/sensors/voltage/S0_1V2_VDDQ4567
79:
<<: *VOLTAGE_DEFAULTS
entityInstance: 21
multiplierM: 4
path: /xyz/openbmc_project/sensors/voltage/S0_0V6_VTT4567
80:
<<: *VOLTAGE_DEFAULTS
entityInstance: 23
multiplierM: 15
path: /xyz/openbmc_project/sensors/voltage/S0_2V5_VPP4567
81:
<<: *VOLTAGE_DEFAULTS
entityInstance: 25
multiplierM: 5
path: /xyz/openbmc_project/sensors/voltage/S0_0V85_RCA
82:
<<: *VOLTAGE_DEFAULTS
entityInstance: 27
multiplierM: 11
path: /xyz/openbmc_project/sensors/voltage/S0_1V8_VDDH
83:
<<: *VOLTAGE_DEFAULTS
entityInstance: 29
multiplierM: 9
path: /xyz/openbmc_project/sensors/voltage/S0_1V5_VDDH
84:
<<: *VOLTAGE_DEFAULTS
entityInstance: 31
multiplierM: 11
path: /xyz/openbmc_project/sensors/voltage/S0_1V8_SOC
85:
<<: *VOLTAGE_DEFAULTS
entityInstance: 33
multiplierM: 11
path: /xyz/openbmc_project/sensors/voltage/S0_1V8_PCP
86:
<<: *VOLTAGE_DEFAULTS
entityInstance: 35
multiplierM: 20
path: /xyz/openbmc_project/sensors/voltage/S0_3V3_SOC
87:
<<: *VOLTAGE_DEFAULTS
entityInstance: 10
multiplierM: 5
path: /xyz/openbmc_project/sensors/voltage/S1_0V8_VDDC_SOC
88:
<<: *VOLTAGE_DEFAULTS
entityInstance: 12
multiplierM: 7
path: /xyz/openbmc_project/sensors/voltage/S1_0V75_PCP
89:
<<: *VOLTAGE_DEFAULTS
entityInstance: 14
multiplierM: 7
path: /xyz/openbmc_project/sensors/voltage/S1_1V2_VDDQ0123
90:
<<: *VOLTAGE_DEFAULTS
entityInstance: 16
multiplierM: 4
path: /xyz/openbmc_project/sensors/voltage/S1_0V6_VTT0123
91:
<<: *VOLTAGE_DEFAULTS
entityInstance: 18
multiplierM: 15
path: /xyz/openbmc_project/sensors/voltage/S1_2V5_VPP0123
92:
<<: *VOLTAGE_DEFAULTS
entityInstance: 20
multiplierM: 7
path: /xyz/openbmc_project/sensors/voltage/S1_1V2_VDDQ4567
93:
<<: *VOLTAGE_DEFAULTS
entityInstance: 22
multiplierM: 4
path: /xyz/openbmc_project/sensors/voltage/S1_0V6_VTT4567
94:
<<: *VOLTAGE_DEFAULTS
entityInstance: 24
multiplierM: 15
path: /xyz/openbmc_project/sensors/voltage/S1_2V5_VPP4567
95:
<<: *VOLTAGE_DEFAULTS
entityInstance: 26
multiplierM: 5
path: /xyz/openbmc_project/sensors/voltage/S1_0V85_RCA
96:
<<: *VOLTAGE_DEFAULTS
entityInstance: 28
multiplierM: 11
path: /xyz/openbmc_project/sensors/voltage/S1_1V8_VDDH
97:
<<: *VOLTAGE_DEFAULTS
entityInstance: 30
multiplierM: 9
path: /xyz/openbmc_project/sensors/voltage/S1_1V5_VDDH
98:
<<: *VOLTAGE_DEFAULTS
entityInstance: 32
multiplierM: 11
path: /xyz/openbmc_project/sensors/voltage/S1_1V8_SOC
99:
<<: *VOLTAGE_DEFAULTS
entityInstance: 34
multiplierM: 11
path: /xyz/openbmc_project/sensors/voltage/S1_1V8_PCP
100:
<<: *VOLTAGE_DEFAULTS
entityInstance: 36
multiplierM: 20
path: /xyz/openbmc_project/sensors/voltage/S1_3V3_SOC
101:
<<: *VOLTAGE_DEFAULTS
entityInstance: 37
multiplierM: 20
path: /xyz/openbmc_project/sensors/voltage/3V3_SB
102:
<<: *VOLTAGE_DEFAULTS
entityInstance: 38
multiplierM: 18
path: /xyz/openbmc_project/sensors/voltage/VBAT_RTC
230:
<<: *VOLTAGE_DEFAULTS
entityInstance: 74
multiplierM: 20
rExp: -1
path: /xyz/openbmc_project/sensors/voltage/PSU0_VINPUT
231:
<<: *VOLTAGE_DEFAULTS
entityInstance: 75
multiplierM: 20
rExp: -1
path: /xyz/openbmc_project/sensors/voltage/PSU1_VINPUT
232:
<<: *VOLTAGE_DEFAULTS
entityInstance: 76
multiplierM: 20
rExp: -2
path: /xyz/openbmc_project/sensors/voltage/PSU0_VOUTPUT
233:
<<: *VOLTAGE_DEFAULTS
entityInstance: 77
multiplierM: 20
rExp: -2
path: /xyz/openbmc_project/sensors/voltage/PSU1_VOUTPUT
105:
<<: *TEMP_DEFAULTS
entityInstance: 13
path: /xyz/openbmc_project/sensors/temperature/S0_DIMMG1_Temp
106:
<<: *TEMP_DEFAULTS
entityInstance: 14
path: /xyz/openbmc_project/sensors/temperature/S1_DIMMG1_Temp
107:
<<: *TEMP_DEFAULTS
entityInstance: 15
path: /xyz/openbmc_project/sensors/temperature/S0_SOC_Temp
108:
<<: *TEMP_DEFAULTS
entityInstance: 16
path: /xyz/openbmc_project/sensors/temperature/S0_SOC_VRD_Temp
109:
<<: *TEMP_DEFAULTS
entityInstance: 17
path: /xyz/openbmc_project/sensors/temperature/S0_DIMM_VRD_Temp
110:
<<: *TEMP_DEFAULTS
entityInstance: 18
path: /xyz/openbmc_project/sensors/temperature/S0_Core_VRD_Temp
111:
<<: *TEMP_DEFAULTS
entityInstance: 19
path: /xyz/openbmc_project/sensors/temperature/S0_DIMMG0_Temp
112: &power
sensorType: 0x08
path: /xyz/openbmc_project/sensors/power/S0_CPU_Pwr
entityID: 19
entityInstance: 39
sensorReadingType: 0x01
multiplierM: 200
offsetB: 0
bExp: 0
unit: xyz.openbmc_project.Sensor.Value.Unit.Watts
rExp: -2
serviceInterface: org.freedesktop.DBus.Properties
readingType: readingData
interfaces:
xyz.openbmc_project.Sensor.Value:
Value:
Offsets:
0xFF:
type: double
113:
<<: *power
entityInstance: 40
multiplierM: 39
path: /xyz/openbmc_project/sensors/power/S0_DIMM_VR1_Pwr
114:
<<: *power
entityInstance: 41
multiplierM: 39
path: /xyz/openbmc_project/sensors/power/S0_DIMM_VR2_Pwr
115:
<<: *power
entityInstance: 42
multiplierM: 80
path: /xyz/openbmc_project/sensors/power/S0_MEM_Pwr
116:
<<: *VOLTAGE_DEFAULTS
entityInstance: 43
multiplierM: 10
path: /xyz/openbmc_project/sensors/voltage/S0_CPU_VCORE
117:
<<: *VOLTAGE_DEFAULTS
entityInstance: 44
multiplierM: 7
path: /xyz/openbmc_project/sensors/voltage/S0_DIMM_VR1_Volt
118:
<<: *VOLTAGE_DEFAULTS
entityInstance: 45
multiplierM: 7
path: /xyz/openbmc_project/sensors/voltage/S0_DIMM_VR2_Volt
119:
<<: *VOLTAGE_DEFAULTS
entityInstance: 46
multiplierM: 7
path: /xyz/openbmc_project/sensors/voltage/S0_DIMM_DDR_Volt
123:
<<: *TEMP_DEFAULTS
entityInstance: 20
path: /xyz/openbmc_project/sensors/temperature/S1_SOC_Temp
124:
<<: *TEMP_DEFAULTS
entityInstance: 21
path: /xyz/openbmc_project/sensors/temperature/S1_SOC_VRD_Temp
125:
<<: *TEMP_DEFAULTS
entityInstance: 22
path: /xyz/openbmc_project/sensors/temperature/S1_DIMM_VRD_Temp
126:
<<: *TEMP_DEFAULTS
entityInstance: 23
path: /xyz/openbmc_project/sensors/temperature/S1_Core_VRD_Temp
127:
<<: *TEMP_DEFAULTS
entityInstance: 24
path: /xyz/openbmc_project/sensors/temperature/S1_DIMMG0_Temp
128:
<<: *power
entityInstance: 47
multiplierM: 200
path: /xyz/openbmc_project/sensors/power/S1_CPU_Pwr
129:
<<: *power
entityInstance: 48
multiplierM: 39
path: /xyz/openbmc_project/sensors/power/S1_DIMM_VR1_Pwr
130:
<<: *power
entityInstance: 49
multiplierM: 39
path: /xyz/openbmc_project/sensors/power/S1_DIMM_VR2_Pwr
131:
<<: *power
entityInstance: 50
multiplierM: 80
path: /xyz/openbmc_project/sensors/power/S1_MEM_Pwr
132:
<<: *VOLTAGE_DEFAULTS
entityInstance: 51
multiplierM: 10
path: /xyz/openbmc_project/sensors/voltage/S1_CPU_VCORE
133:
<<: *VOLTAGE_DEFAULTS
entityInstance: 52
multiplierM: 7
path: /xyz/openbmc_project/sensors/voltage/S1_DIMM_VR1_Volt
134:
<<: *VOLTAGE_DEFAULTS
entityInstance: 53
multiplierM: 7
path: /xyz/openbmc_project/sensors/voltage/S1_DIMM_VR2_Volt
135:
<<: *VOLTAGE_DEFAULTS
entityInstance: 54
multiplierM: 7
path: /xyz/openbmc_project/sensors/voltage/S1_DIMM_DDR_Volt
145:
<<: *VOLTAGE_DEFAULTS
entityInstance: 58
multiplierM: 5
path: /xyz/openbmc_project/sensors/voltage/S0_SOC_Volt
146:
<<: *VOLTAGE_DEFAULTS
entityInstance: 59
multiplierM: 5
path: /xyz/openbmc_project/sensors/voltage/S1_SOC_Volt
152:
<<: *power
entityInstance: 60
multiplierM: 80
path: /xyz/openbmc_project/sensors/power/S0_RCA_VR_Pwr
153:
<<: *VOLTAGE_DEFAULTS
entityInstance: 55
multiplierM: 7
path: /xyz/openbmc_project/sensors/voltage/S0_RCA_VR_Volt
154:
<<: *TEMP_DEFAULTS
entityInstance: 25
path: /xyz/openbmc_project/sensors/temperature/S0_RCA_VR_Temp
155:
<<: *power
entityInstance: 61
multiplierM: 80
path: /xyz/openbmc_project/sensors/power/S1_RCA_VR_Pwr
156:
<<: *VOLTAGE_DEFAULTS
entityInstance: 56
multiplierM: 7
path: /xyz/openbmc_project/sensors/voltage/S1_RCA_VR_Volt
157:
<<: *TEMP_DEFAULTS
entityInstance: 26
path: /xyz/openbmc_project/sensors/temperature/S1_RCA_VR_Temp
240:
<<: *power
entityInstance: 84
multiplierM: 80
rExp: -1
path: /xyz/openbmc_project/sensors/power/PSU0_POUTPUT
241:
<<: *power
entityInstance: 85
multiplierM: 80
rExp: -1
path: /xyz/openbmc_project/sensors/power/PSU1_POUTPUT
242:
<<: *power
entityInstance: 57
multiplierM: 80
rExp: -1
path: /xyz/openbmc_project/sensors/power/total_power
238:
<<: *power
entityInstance: 82
multiplierM: 80
rExp: -1
path: /xyz/openbmc_project/sensors/power/PSU0_PINPUT
239:
<<: *power
entityInstance: 83
multiplierM: 80
rExp: -1
path: /xyz/openbmc_project/sensors/power/PSU1_PINPUT
169: &current
sensorType: 0x03
path: /xyz/openbmc_project/sensors/current/S0_Core_VRD_Curr
entityID: 19
entityInstance: 64
sensorReadingType: 0x01
multiplierM: 160
offsetB: 0
bExp: 0
unit: xyz.openbmc_project.Sensor.Value.Unit.Amperes
rExp: -3
serviceInterface: org.freedesktop.DBus.Properties
readingType: readingData
interfaces:
xyz.openbmc_project.Sensor.Value:
Value:
Offsets:
0xFF:
type: double
170:
<<: *current
entityInstance: 66
multiplierM: 80
path: /xyz/openbmc_project/sensors/current/S0_SOC_VRD_Curr
171:
<<: *current
entityInstance: 68
multiplierM: 80
path: /xyz/openbmc_project/sensors/current/S0_DIMM_VR1_Curr
172:
<<: *current
entityInstance: 70
multiplierM: 80
path: /xyz/openbmc_project/sensors/current/S0_DIMM_VR2_Curr
173:
<<: *current
entityInstance: 72
multiplierM: 80
path: /xyz/openbmc_project/sensors/current/S0_RCA_VRD_Curr
174:
<<: *current
entityInstance: 65
multiplierM: 160
path: /xyz/openbmc_project/sensors/current/S1_Core_VRD_Curr
175:
<<: *current
entityInstance: 67
multiplierM: 80
path: /xyz/openbmc_project/sensors/current/S1_SOC_VRD_Curr
176:
<<: *current
entityInstance: 69
multiplierM: 80
path: /xyz/openbmc_project/sensors/current/S1_DIMM_VR1_Curr
177:
<<: *current
entityInstance: 71
multiplierM: 80
path: /xyz/openbmc_project/sensors/current/S1_DIMM_VR2_Curr
178:
<<: *current
entityInstance: 73
multiplierM: 80
path: /xyz/openbmc_project/sensors/current/S1_RCA_VRD_Curr
234:
<<: *current
entityInstance: 78
multiplierM: 80
path: /xyz/openbmc_project/sensors/current/PSU0_IINPUT
235:
<<: *current
entityInstance: 79
multiplierM: 80
path: /xyz/openbmc_project/sensors/current/PSU1_IINPUT
236:
<<: *current
entityInstance: 80
multiplierM: 160
path: /xyz/openbmc_project/sensors/current/PSU0_IOUTPUT
237:
<<: *current
entityInstance: 81
multiplierM: 160
path: /xyz/openbmc_project/sensors/current/PSU1_IOUTPUT
@@ -0,0 +1 @@
# console-id is default to obmc-console
@@ -0,0 +1 @@
console-id = ttyS1
@@ -0,0 +1 @@
console-id = ttyS2
@@ -0,0 +1 @@
console-id = ttyS3
@@ -0,0 +1,3 @@
# console-id is default to obmc-console
local-tty = ttyS0
local-tty-baud = 115200
@@ -0,0 +1,3 @@
local-tty = ttyS1
local-tty-baud = 115200
console-id = ttyS1
@@ -0,0 +1,3 @@
local-tty = ttyS2
local-tty-baud = 115200
console-id = ttyS2
@@ -0,0 +1,3 @@
local-tty = ttyS3
local-tty-baud = 115200
console-id = ttyS3
@@ -0,0 +1,29 @@
FILESEXTRAPATHS:append := "${THISDIR}/${PN}:"
RDEPENDS:${PN} += "bash"
# Declare port spcific config files
OBMC_CONSOLE_TTYS = "ttyS0 ttyS1 ttyS2 ttyS3"
CONSOLE_CLIENT = "2200 2201 2202 2203"
CONSOLE_SERVER_CONF_FMT = "file://server.{0}.conf"
CONSOLE_CLIENT_CONF_FMT = "file://client.{0}.conf"
CONSOLE_CLIENT_SERVICE_FMT = "obmc-console-ssh@{0}.service"
SRC_URI += " \
${@compose_list(d, 'CONSOLE_SERVER_CONF_FMT', 'OBMC_CONSOLE_TTYS')} \
${@compose_list(d, 'CONSOLE_CLIENT_CONF_FMT', 'CONSOLE_CLIENT')} \
"
SYSTEMD_SERVICE:${PN}:append = " \
${@compose_list(d, 'CONSOLE_CLIENT_SERVICE_FMT', 'CONSOLE_CLIENT')} \
"
SYSTEMD_SERVICE:${PN}:remove = "obmc-console-ssh.socket"
FILES:${PN}:remove = "${systemd_system_unitdir}/obmc-console-ssh@.service.d/use-socket.conf"
PACKAGECONFIG:append = " concurrent-servers"
do_install:append() {
# Install the console client configurations
install -m 0644 ${WORKDIR}/client.*.conf ${D}${sysconfdir}/${BPN}/
}
@@ -0,0 +1,7 @@
#!/bin/bash
# shellcheck disable=SC2086
for filename in /sys/class/hwmon/*/pwm*
do
echo 255 > $filename
done;
@@ -0,0 +1,394 @@
[
{
"name": "set_target_fan_not_present",
"groups": [
{
"name": "air_cooled_zone0_fans",
"interface": "xyz.openbmc_project.Inventory.Item",
"property": { "name": "Present" }
}
],
"triggers": [
{
"class": "init",
"method": "get_properties"
},
{
"class": "signal",
"signal": "properties_changed"
}
],
"actions": [
{
"name": "count_state_before_target",
"count": 1,
"state": false,
"target": 255
}
]
},
{
// Hold fans at the given target when a number of rotors are nonfunctional.
"name": "set_target_fan_not_functional",
"groups": [
{
"name": "fan3",
"interface": "xyz.openbmc_project.State.Decorator.OperationalStatus",
"property": { "name": "Functional" }
},
{
"name": "fan4",
"interface": "xyz.openbmc_project.State.Decorator.OperationalStatus",
"property": { "name": "Functional" }
},
{
"name": "fan5",
"interface": "xyz.openbmc_project.State.Decorator.OperationalStatus",
"property": { "name": "Functional" }
},
{
"name": "fan6",
"interface": "xyz.openbmc_project.State.Decorator.OperationalStatus",
"property": { "name": "Functional" }
},
{
"name": "fan7",
"interface": "xyz.openbmc_project.State.Decorator.OperationalStatus",
"property": { "name": "Functional" }
},
{
"name": "fan8",
"interface": "xyz.openbmc_project.State.Decorator.OperationalStatus",
"property": { "name": "Functional" }
}
],
"triggers": [
{
"class": "init",
"method": "get_properties"
},
{
"class": "signal",
"signal": "properties_changed"
}
],
"actions": [
{
"name": "count_state_before_target",
"count": 1,
"state": false,
"target": 255
}
]
},
{
"name": "default_fan_floor_on_missing_service",
"groups": [
{
"name": "zone0_ambient",
"interface": "xyz.openbmc_project.Sensor.Value",
"property": { "name": "Value" }
}
],
"triggers": [
{
"class": "init",
"method": "name_has_owner"
},
{
"class": "signal",
"signal": "name_owner_changed"
}
],
"actions": [
{
"name": "call_actions_based_on_timer",
"timer": {
"interval": 5000000,
"type": "oneshot"
},
"actions": [
{
"name": "default_floor_on_missing_owner",
"groups": [
{
"name": "zone0_ambient",
"interface": "xyz.openbmc_project.Sensor.Value",
"property": { "name": "Value" }
}
]
}
]
}
]
},
{
"name": "target_mapping_from_TS_temp",
"groups": [
{
"name": "zone0_ambient",
"interface": "xyz.openbmc_project.Sensor.Value",
"property": { "name": "Value" }
}
],
"triggers": [
{
"class": "init",
"method": "get_properties"
},
{
"class": "signal",
"signal": "properties_changed"
},
{
"class": "timer",
"type": "repeating",
"interval": 5000000,
"preload_groups": true
}
],
"actions": [
{
"name": "target_from_group_max",
"groups": [
{
"name": "zone0_ambient",
"interface": "xyz.openbmc_project.Sensor.Value",
"property": { "name": "Value" }
}
],
"neg_hysteresis": 1,
"pos_hysteresis": 0,
"index": 0,
"map": [
{ "value": 10.0, "target": 38.0 },
{ "value": 18.0, "target": 38.0 },
{ "value": 20.0, "target": 41.0 },
{ "value": 21.0, "target": 43.0 },
{ "value": 22.0, "target": 46.0 },
{ "value": 24.0, "target": 48.0 },
{ "value": 28.0, "target": 51.0 },
{ "value": 32.0, "target": 56.0 },
{ "value": 34.0, "target": 59.0 },
{ "value": 36.0, "target": 61.0 },
{ "value": 40.0, "target": 64.0 },
{ "value": 41.0, "target": 66.0 },
{ "value": 42.0, "target": 69.0 },
{ "value": 43.0, "target": 71.0 },
{ "value": 44.0, "target": 74.0 },
{ "value": 45.0, "target": 77.0 },
{ "value": 46.0, "target": 79.0 },
{ "value": 47.0, "target": 82.0 },
{ "value": 48.0, "target": 84.0 },
{ "value": 49.0, "target": 87.0 },
{ "value": 50.0, "target": 89.0 }
]
}
]
},
{
"name": "target_mapping_from_OCP_temp",
"groups": [
{
"name": "zone0_ocp",
"interface": "xyz.openbmc_project.Sensor.Value",
"property": { "name": "Value" }
}
],
"triggers": [
{
"class": "init",
"method": "get_properties"
},
{
"class": "signal",
"signal": "properties_changed"
},
{
"class": "timer",
"type": "repeating",
"interval": 5000000,
"preload_groups": true
}
],
"actions": [
{
"name": "target_from_group_max",
"groups": [
{
"name": "zone0_ocp",
"interface": "xyz.openbmc_project.Sensor.Value",
"property": { "name": "Value" }
}
],
"neg_hysteresis": 2,
"pos_hysteresis": 2,
"index": 3,
"map": [
{ "value": 10.0, "target": 38.0 },
{ "value": 65.0, "target": 38.0 },
{ "value": 66.0, "target": 43.0 },
{ "value": 67.0, "target": 51.0 },
{ "value": 68.0, "target": 54.0 },
{ "value": 69.0, "target": 56.0 },
{ "value": 70.0, "target": 61.0 },
{ "value": 71.0, "target": 66.0 },
{ "value": 72.0, "target": 71.0 },
{ "value": 73.0, "target": 77.0 },
{ "value": 74.0, "target": 82.0 },
{ "value": 75.0, "target": 87.0 },
{ "value": 76.0, "target": 92.0 },
{ "value": 77.0, "target": 97.0 },
{ "value": 78.0, "target": 102.0 },
{ "value": 79.0, "target": 107.0 },
{ "value": 80.0, "target": 112.0 },
{ "value": 81.0, "target": 122.0 },
{ "value": 82.0, "target": 128.0 },
{ "value": 83.0, "target": 133.0 },
{ "value": 84.0, "target": 140.0 },
{ "value": 85.0, "target": 148.0 },
{ "value": 86.0, "target": 156.0 },
{ "value": 87.0, "target": 163.0 },
{ "value": 88.0, "target": 171.0 },
{ "value": 89.0, "target": 179.0 },
{ "value": 90.0, "target": 186.0 },
{ "value": 91.0, "target": 194.0 },
{ "value": 92.0, "target": 201.0 },
{ "value": 93.0, "target": 209.0 },
{ "value": 94.0, "target": 217.0 },
{ "value": 95.0, "target": 224.0 },
{ "value": 96.0, "target": 232.0 },
{ "value": 97.0, "target": 240.0 },
{ "value": 98.0, "target": 247.0 },
{ "value": 99.0, "target": 255.0 }
]
}
]
},
{
"name": "target_mapping_from_BP_NVME_temp",
"groups": [
{
"name": "zone0_bp_nvme",
"interface": "xyz.openbmc_project.Sensor.Value",
"property": { "name": "Value" }
}
],
"triggers": [
{
"class": "init",
"method": "get_properties"
},
{
"class": "signal",
"signal": "properties_changed"
},
{
"class": "timer",
"type": "repeating",
"interval": 5000000,
"preload_groups": true
}
],
"actions": [
{
"name": "target_from_group_max",
"groups": [
{
"name": "zone0_bp_nvme",
"interface": "xyz.openbmc_project.Sensor.Value",
"property": { "name": "Value" }
}
],
"neg_hysteresis": 2,
"pos_hysteresis": 0,
"index": 4,
"map": [
{ "value": 10.0, "target": 38.0 },
{ "value": 35.0, "target": 38.0 },
{ "value": 36.0, "target": 43.0 },
{ "value": 37.0, "target": 48.0 },
{ "value": 38.0, "target": 54.0 },
{ "value": 39.0, "target": 59.0 },
{ "value": 40.0, "target": 64.0 },
{ "value": 41.0, "target": 66.0 },
{ "value": 42.0, "target": 69.0 },
{ "value": 43.0, "target": 71.0 },
{ "value": 44.0, "target": 74.0 },
{ "value": 45.0, "target": 77.0 },
{ "value": 46.0, "target": 79.0 },
{ "value": 47.0, "target": 82.0 },
{ "value": 48.0, "target": 84.0 },
{ "value": 49.0, "target": 87.0 },
{ "value": 50.0, "target": 89.0 },
{ "value": 51.0, "target": 99.0 },
{ "value": 52.0, "target": 99.0 },
{ "value": 53.0, "target": 105.0 },
{ "value": 54.0, "target": 110.0 },
{ "value": 55.0, "target": 115.0 },
{ "value": 56.0, "target": 120.0 },
{ "value": 57.0, "target": 125.0 },
{ "value": 58.0, "target": 130.0 },
{ "value": 59.0, "target": 135.0 },
{ "value": 60.0, "target": 140.0 },
{ "value": 61.0, "target": 150.0 },
{ "value": 62.0, "target": 161.0 },
{ "value": 63.0, "target": 171.0 },
{ "value": 64.0, "target": 181.0 },
{ "value": 65.0, "target": 191.0 },
{ "value": 66.0, "target": 204.0 },
{ "value": 67.0, "target": 217.0 },
{ "value": 68.0, "target": 230.0 },
{ "value": 69.0, "target": 255.0 }
]
}
]
},
{
"name": "target_mapping_from_M2_NVME_temp",
"groups": [
{
"name": "zone0_m2_nvme",
"interface": "xyz.openbmc_project.Sensor.Value",
"property": { "name": "Value" }
}
],
"triggers": [
{
"class": "init",
"method": "get_properties"
},
{
"class": "signal",
"signal": "properties_changed"
},
{
"class": "timer",
"type": "repeating",
"interval": 5000000,
"preload_groups": true
}
],
"actions": [
{
"name": "target_from_group_max",
"groups": [
{
"name": "zone0_m2_nvme",
"interface": "xyz.openbmc_project.Sensor.Value",
"property": { "name": "Value" }
}
],
"neg_hysteresis": 2,
"pos_hysteresis": 0,
"index": 5,
"map": [
{ "value": 10.0, "target": 38.0 },
{ "value": 61.0, "target": 38.0 },
{ "value": 68.0, "target": 38.0 },
{ "value": 69.0, "target": 204.0 }
]
}
]
}
]
@@ -0,0 +1,44 @@
[
{
"name": "FAN3",
"zone": "0",
"sensors": ["PWM3"],
"target_interface": "xyz.openbmc_project.Control.FanPwm",
"target_path": "/xyz/openbmc_project/control/fanpwm/"
},
{
"name": "FAN4",
"zone": "0",
"sensors": ["PWM4"],
"target_interface": "xyz.openbmc_project.Control.FanPwm",
"target_path": "/xyz/openbmc_project/control/fanpwm/"
},
{
"name": "FAN5",
"zone": "0",
"sensors": ["PWM5"],
"target_interface": "xyz.openbmc_project.Control.FanPwm",
"target_path": "/xyz/openbmc_project/control/fanpwm/"
},
{
"name": "FAN6",
"zone": "0",
"sensors": ["PWM6"],
"target_interface": "xyz.openbmc_project.Control.FanPwm",
"target_path": "/xyz/openbmc_project/control/fanpwm/"
},
{
"name": "FAN7",
"zone": "0",
"sensors": ["PWM7"],
"target_interface": "xyz.openbmc_project.Control.FanPwm",
"target_path": "/xyz/openbmc_project/control/fanpwm/"
},
{
"name": "FAN8",
"zone": "0",
"sensors": ["PWM8"],
"target_interface": "xyz.openbmc_project.Control.FanPwm",
"target_path": "/xyz/openbmc_project/control/fanpwm/"
}
]
@@ -0,0 +1,80 @@
[
{
"name": "air_cooled_zone0_fans",
"members": [
"/xyz/openbmc_project/inventory/system/chassis/Mt_Jade/FAN3",
"/xyz/openbmc_project/inventory/system/chassis/Mt_Jade/FAN4",
"/xyz/openbmc_project/inventory/system/chassis/Mt_Jade/FAN5",
"/xyz/openbmc_project/inventory/system/chassis/Mt_Jade/FAN6",
"/xyz/openbmc_project/inventory/system/chassis/Mt_Jade/FAN7",
"/xyz/openbmc_project/inventory/system/chassis/Mt_Jade/FAN8"
]
},
{
"name": "fan3",
"members": [
"/xyz/openbmc_project/inventory/system/chassis/Mt_Jade/FAN3/FAN3_1",
"/xyz/openbmc_project/inventory/system/chassis/Mt_Jade/FAN3/FAN3_2"
]
},
{
"name": "fan4",
"members": [
"/xyz/openbmc_project/inventory/system/chassis/Mt_Jade/FAN4/FAN4_1",
"/xyz/openbmc_project/inventory/system/chassis/Mt_Jade/FAN4/FAN4_2"
]
},
{
"name": "fan5",
"members": [
"/xyz/openbmc_project/inventory/system/chassis/Mt_Jade/FAN5/FAN5_1",
"/xyz/openbmc_project/inventory/system/chassis/Mt_Jade/FAN5/FAN5_2"
]
},
{
"name": "fan6",
"members": [
"/xyz/openbmc_project/inventory/system/chassis/Mt_Jade/FAN6/FAN6_1",
"/xyz/openbmc_project/inventory/system/chassis/Mt_Jade/FAN6/FAN6_2"
]
},
{
"name": "fan7",
"members": [
"/xyz/openbmc_project/inventory/system/chassis/Mt_Jade/FAN7/FAN7_1",
"/xyz/openbmc_project/inventory/system/chassis/Mt_Jade/FAN7/FAN7_2"
]
},
{
"name": "fan8",
"members": [
"/xyz/openbmc_project/inventory/system/chassis/Mt_Jade/FAN8/FAN8_1",
"/xyz/openbmc_project/inventory/system/chassis/Mt_Jade/FAN8/FAN8_2"
]
},
{
"name": "zone0_ambient",
"service": "xyz.openbmc_project.HwmonTempSensor",
"members": [
"/xyz/openbmc_project/sensors/temperature/TS4_Temp"
]
},
{
"name": "zone0_ocp",
"members": [
"/xyz/openbmc_project/sensors/temperature/OCP_Temp"
]
},
{
"name": "zone0_bp_nvme",
"members": [
"/xyz/openbmc_project/sensors/temperature/nvme_bp_max"
]
},
{
"name": "zone0_m2_nvme",
"members": [
"/xyz/openbmc_project/sensors/temperature/nvme_m2_max"
]
}
]
@@ -0,0 +1,160 @@
{
"fans": [
{
"inventory": "/system/chassis/Mt_Jade/FAN3",
"allowed_out_of_range_time": 10,
"deviation": 25,
"num_sensors_nonfunc_for_fan_nonfunc": 1,
"monitor_start_delay": 30,
"set_func_on_present": false,
"sensors": [
{
"name": "FAN3_1",
"has_target": true,
"target_interface": "xyz.openbmc_project.Control.FanPwm",
"target_path": "/xyz/openbmc_project/control/fanpwm/PWM3",
"factor": 82,
"offset": 0
},
{
"name": "FAN3_2",
"has_target": false,
"target_interface": "xyz.openbmc_project.Control.FanPwm",
"target_path": "/xyz/openbmc_project/control/fanpwm/PWM3",
"factor": 82,
"offset": 0
}
]
},
{
"inventory": "/system/chassis/Mt_Jade/FAN4",
"allowed_out_of_range_time": 10,
"deviation": 25,
"num_sensors_nonfunc_for_fan_nonfunc": 1,
"monitor_start_delay": 30,
"set_func_on_present": false,
"sensors": [
{
"name": "FAN4_1",
"has_target": true,
"target_interface": "xyz.openbmc_project.Control.FanPwm",
"target_path": "/xyz/openbmc_project/control/fanpwm/PWM4",
"factor": 82,
"offset": 0
},
{
"name": "FAN4_2",
"has_target": false,
"target_interface": "xyz.openbmc_project.Control.FanPwm",
"target_path": "/xyz/openbmc_project/control/fanpwm/PWM4",
"factor": 82,
"offset": 0
}
]
},
{
"inventory": "/system/chassis/Mt_Jade/FAN5",
"allowed_out_of_range_time": 10,
"deviation": 25,
"num_sensors_nonfunc_for_fan_nonfunc": 1,
"monitor_start_delay": 30,
"set_func_on_present": false,
"sensors": [
{
"name": "FAN5_1",
"has_target": true,
"target_interface": "xyz.openbmc_project.Control.FanPwm",
"target_path": "/xyz/openbmc_project/control/fanpwm/PWM5",
"factor": 82,
"offset": 0
},
{
"name": "FAN5_2",
"has_target": false,
"target_interface": "xyz.openbmc_project.Control.FanPwm",
"target_path": "/xyz/openbmc_project/control/fanpwm/PWM5",
"factor": 82,
"offset": 0
}
]
},
{
"inventory": "/system/chassis/Mt_Jade/FAN6",
"allowed_out_of_range_time": 10,
"deviation": 25,
"num_sensors_nonfunc_for_fan_nonfunc": 1,
"monitor_start_delay": 30,
"set_func_on_present": false,
"sensors": [
{
"name": "FAN6_1",
"has_target": true,
"target_interface": "xyz.openbmc_project.Control.FanPwm",
"target_path": "/xyz/openbmc_project/control/fanpwm/PWM6",
"factor": 82,
"offset": 0
},
{
"name": "FAN6_2",
"has_target": false,
"target_interface": "xyz.openbmc_project.Control.FanPwm",
"target_path": "/xyz/openbmc_project/control/fanpwm/PWM6",
"factor": 82,
"offset": 0
}
]
},
{
"inventory": "/system/chassis/Mt_Jade/FAN7",
"allowed_out_of_range_time": 10,
"deviation": 25,
"num_sensors_nonfunc_for_fan_nonfunc": 1,
"monitor_start_delay": 30,
"set_func_on_present": false,
"sensors": [
{
"name": "FAN7_1",
"has_target": true,
"target_interface": "xyz.openbmc_project.Control.FanPwm",
"target_path": "/xyz/openbmc_project/control/fanpwm/PWM7",
"factor": 82,
"offset": 0
},
{
"name": "FAN7_2",
"has_target": false,
"target_interface": "xyz.openbmc_project.Control.FanPwm",
"target_path": "/xyz/openbmc_project/control/fanpwm/PWM7",
"factor": 82,
"offset": 0
}
]
},
{
"inventory": "/system/chassis/Mt_Jade/FAN8",
"allowed_out_of_range_time": 10,
"deviation": 25,
"num_sensors_nonfunc_for_fan_nonfunc": 1,
"monitor_start_delay": 30,
"set_func_on_present": false,
"sensors": [
{
"name": "FAN8_1",
"has_target": true,
"target_interface": "xyz.openbmc_project.Control.FanPwm",
"target_path": "/xyz/openbmc_project/control/fanpwm/PWM8",
"factor": 82,
"offset": 0
},
{
"name": "FAN8_2",
"has_target": false,
"target_interface": "xyz.openbmc_project.Control.FanPwm",
"target_path": "/xyz/openbmc_project/control/fanpwm/PWM8",
"factor": 82,
"offset": 0
}
]
}
]
}
@@ -0,0 +1,99 @@
[
{
"name": "FAN3",
"path": "/system/chassis/Mt_Jade/FAN3",
"methods": [
{
"type": "tach",
"sensors": [
"FAN3_1",
"FAN3_2"
]
}
],
"rpolicy": {
"type": "anyof"
}
},
{
"name": "FAN4",
"path": "/system/chassis/Mt_Jade/FAN4",
"methods": [
{
"type": "tach",
"sensors": [
"FAN4_1",
"FAN4_2"
]
}
],
"rpolicy": {
"type": "anyof"
}
},
{
"name": "FAN5",
"path": "/system/chassis/Mt_Jade/FAN5",
"methods": [
{
"type": "tach",
"sensors": [
"FAN5_1",
"FAN5_2"
]
}
],
"rpolicy": {
"type": "anyof"
}
},
{
"name": "FAN6",
"path": "/system/chassis/Mt_Jade/FAN6",
"methods": [
{
"type": "tach",
"sensors": [
"FAN6_1",
"FAN6_2"
]
}
],
"rpolicy": {
"type": "anyof"
}
},
{
"name": "FAN7",
"path": "/system/chassis/Mt_Jade/FAN7",
"methods": [
{
"type": "tach",
"sensors": [
"FAN7_1",
"FAN7_2"
]
}
],
"rpolicy": {
"type": "anyof"
}
},
{
"name": "FAN8",
"path": "/system/chassis/Mt_Jade/FAN8",
"methods": [
{
"type": "tach",
"sensors": [
"FAN8_1",
"FAN8_2"
]
}
],
"rpolicy": {
"type": "anyof"
}
}
]
@@ -0,0 +1,10 @@
[
{
"name": "0",
"poweron_target": 153,
"default_ceiling": 255,
"default_floor": 255,
"increase_delay": 5,
"decrease_interval": 30
}
]
@@ -0,0 +1,12 @@
[Unit]
Description=Phosphor Fan Control Daemon
Wants=xyz.openbmc_project.fansensor.service
After=xyz.openbmc_project.fansensor.service
StartLimitIntervalSec=30
StartLimitBurst=3
[Service]
Restart=on-failure
ExecStart=phosphor-fan-control
RestartSec=20
ExecStopPost=/usr/bin/ampere_set_fan_max_speed.sh
@@ -0,0 +1,12 @@
[Unit]
Description=Phosphor Fan Monitor Daemon
Wants=xyz.openbmc_project.fansensor.service
After=xyz.openbmc_project.fansensor.service
StartLimitIntervalSec=30
StartLimitBurst=3
[Service]
Restart=on-failure
ExecStart=phosphor-fan-monitor
RestartSec=20
ExecStopPost=/usr/bin/ampere_set_fan_max_speed.sh
@@ -0,0 +1,45 @@
FILESEXTRAPATHS:append := "${THISDIR}/${PN}:"
FILESEXTRAPATHS:append := "${THISDIR}/${PN}/${MACHINE}:"
RDEPENDS:${PN}-monitor += "bash"
PACKAGECONFIG:append = " json"
SRC_URI:append = " file://events.json \
file://fans.json \
file://groups.json \
file://zones.json \
file://monitor.json \
file://presence.json \
file://phosphor-fan-control@.service \
file://phosphor-fan-monitor@.service \
file://ampere_set_fan_max_speed.sh \
"
FILES:${PN}-monitor += " \
${bindir}/ampere_set_fan_max_speed.sh \
"
do_configure:prepend() {
mkdir -p ${S}/control/config_files/${MACHINE}
cp ${WORKDIR}/events.json ${S}/control/config_files/${MACHINE}/events.json
cp ${WORKDIR}/fans.json ${S}/control/config_files/${MACHINE}/fans.json
cp ${WORKDIR}/groups.json ${S}/control/config_files/${MACHINE}/groups.json
cp ${WORKDIR}/zones.json ${S}/control/config_files/${MACHINE}/zones.json
mkdir -p ${S}/monitor/config_files/${MACHINE}
cp ${WORKDIR}/monitor.json ${S}/monitor/config_files/${MACHINE}/config.json
mkdir -p ${S}/presence/config_files/${MACHINE}
cp ${WORKDIR}/presence.json ${S}/presence/config_files/${MACHINE}/config.json
}
do_install:append() {
install -d ${D}${bindir}
install -m 0755 ${WORKDIR}/ampere_set_fan_max_speed.sh ${D}${bindir}/ampere_set_fan_max_speed.sh
install -d ${D}${systemd_system_unitdir}
install -m 0644 ${WORKDIR}/phosphor-fan-monitor@.service ${D}${systemd_system_unitdir}
install -m 0644 ${WORKDIR}/phosphor-fan-control@.service ${D}${systemd_system_unitdir}
}
@@ -0,0 +1,8 @@
[Unit]
Description=Ampere Computing LLC host shutdown ACK
Conflicts=obmc-chassis-poweron@0.target
[Service]
Type=oneshot
ExecStart=/usr/sbin/ampere_power_util.sh mb shutdown_ack
SyslogIdentifier=ampere_host_shutdown_ack
@@ -0,0 +1,72 @@
#!/bin/sh
# When system only use single PSU ( ex : PSU1 ) to power ON normal 12V,
# HSC2 will be trigged Fault event (FET health).
# At this time, to plug-in PSU2 in system, PSU2 won't deliver power to
# +12V_MB because HSC2 is protected by Fault event.
# Due to HSC2 protected, the PSU redundancy mechanism can't be created.
# Once PSU1 is plugged out at this moment, system will crash ( reset )
# because +12V_MB dropped.
# BMC SW work-around solution:
# - When BMC detect event PSU is plugged in system, BMC will reset HSC
# by disbale HOT SWAP and then enable HOT SWAP through pmbus command to clear
# Fault event.
# Note:
# In case hot swap occurs during BMC reset, BMC still not in operation state,
# BMC can't detect PSU plug/unplug, then the work-around won't be executed
# Author: Chanh Nguyen <chnguyen@amperecomputing.com>
HSC1_PMBUS_NUM=10
HSC2_PMBUS_NUM=10
HSC1_SLAVE_ADDR=0x10
HSC2_SLAVE_ADDR=0x11
OPERATION=0x01
STATUS_MFR_SPECIFIC=0x80
# $1 will be the name of the psu
PSU=$1
if [ "$PSU" = 0 ]; then
HSC_PMBUS_NUM=$HSC1_PMBUS_NUM
HSC_SLAVE_ADDR=$HSC1_SLAVE_ADDR
elif [ "$PSU" = 1 ]; then
HSC_PMBUS_NUM=$HSC2_PMBUS_NUM
HSC_SLAVE_ADDR=$HSC2_SLAVE_ADDR
else
echo "Please choose PSU1 (0) or PSU2 (1)"
echo "Ex: ampere_psu_reset_hotswap.sh 0"
exit 0
fi
# Check HOST state
chassisstate=$(obmcutil chassisstate | awk -F. '{print $NF}')
if [ "$chassisstate" = 'Off' ]; then
echo "HOST is being OFF, so can't access the i2c $HSC_PMBUS_NUM. Please Turn ON HOST !"
exit 1
fi
# Check FET health problems
if ! data=$(i2cget -f -y $HSC_PMBUS_NUM $HSC_SLAVE_ADDR $STATUS_MFR_SPECIFIC); then
echo "ERROR: Can't access the i2c. Please check /dev/i2c-$HSC_PMBUS_NUM"
exit 1
fi
psu_sts=$(((data & 0x80) != 0))
if [ $psu_sts = 1 ]; then
echo "PSU $PSU: FET health problems have been detected"
echo "Reset Hot swap output on PSU $PSU"
# Disable Hot swap output
write_data=0x00
i2cset -f -y $HSC_PMBUS_NUM $HSC_SLAVE_ADDR $OPERATION $write_data b
# Enable Hot swap output
write_data=0x80;
i2cset -f -y $HSC_PMBUS_NUM $HSC_SLAVE_ADDR $OPERATION $write_data b
else
echo "PSU $PSU: FET health problems have not been detected"
fi
@@ -0,0 +1,6 @@
[Unit]
Description=Ampere Computing LLC Ampere failover event service
[Service]
Restart=no
ExecStart=/usr/sbin/ampere_scp_failover.sh
@@ -0,0 +1,34 @@
#!/bin/bash
# Handle the SCP Failover feature in which:
# - If the BMC receives the SCP_AUTH_FAILURE signal from Socket0,
# attempts to boot from the failover boot EEPROM.
# - If the second boot fails, treats this as a permanent boot failure
# and logs an event in SEL.
# shellcheck disable=SC1091
# shellcheck disable=SC2046
source /usr/sbin/gpio-lib.sh
source /usr/sbin/gpio-defs.sh
# Check the I2C_BACKUP_SEL
I2C_BACKUP_SEL=$(gpio_get_val "$BMC_I2C_BACKUP_SEL")
if [ "${I2C_BACKUP_SEL}" == "1" ]; then
# If it is HIGH, set it LOW. Then reset the Host to boot from
# the failover Boot EEPROM.
echo "scp-failover: switch HOST to failover boot EEPROM"
gpioset $(gpiofind BMC_SELECT_EEPROM)=0
# Reset the Host to boot on the failover EEPROM
ampere_power_util.sh mb force_reset
else
# Turn OFF Host as SCP firmware on both Boot EEPROM fail
obmcutil chassisoff
echo "scp-failover: switch HOST back to the main Boot EEPROM"
gpioset $(gpiofind BMC_SELECT_EEPROM)=1
# Log event
ampere_add_redfishevent.sh OpenBMC.0.1.GeneralFirmwareSecurityViolation.Critical "SCP Authentication failure"
fi
@@ -0,0 +1,73 @@
[
{
"Name": "REBOOT_ACK",
"ChipId": "0",
"GpioNum": 75,
"EventMon": "FALLING",
"Target": "obmc-host-force-warm-reboot@0.target",
"Continue": true
},
{
"Name": "SHUTDOWN_ACK",
"ChipId": "0",
"GpioNum": 50,
"EventMon": "FALLING",
"Target": "ampere-host-shutdown-ack@0.service",
"Continue": true
},
{
"Name": "S0_OVERTEMP",
"LineName": "S0_OVERTEMP_L",
"EventMon": "FALLING",
"Target": "ampere_overtemp@0.service",
"Continue": true
},
{
"Name": "S1_OVERTEMP",
"LineName": "S1_OVERTEMP_L",
"EventMon": "FALLING",
"Target": "ampere_overtemp@1.service",
"Continue": true
},
{
"Name": "S0_HIGHTEMP",
"LineName": "S0_HIGHTEMP_L",
"EventMon": "BOTH",
"Targets": {
"FALLING": ["ampere_hightemp_start@0.service"],
"RISING": ["ampere_hightemp_stop@0.service"]
},
"Continue": true
},
{
"Name": "S1_HIGHTEMP",
"LineName": "S1_HIGHTEMP_L",
"EventMon": "BOTH",
"Targets": {
"FALLING": ["ampere_hightemp_start@1.service"],
"RISING": ["ampere_hightemp_stop@1.service"]
},
"Continue": true
},
{
"Name": "S0_SCP_AUTH_FAIL",
"LineName": "S0_SCP_AUTH_FAIL_L",
"EventMon": "FALLING",
"Target": "ampere_scp_failover.service",
"Continue": true
},
{
"Name": "PSU1_VIN_GOOD",
"LineName": "PSU1_VIN_GOOD",
"EventMon": "RISING",
"Target": "psu_hotswap_reset@0.service",
"Continue": true
},
{
"Name": "PSU2_VIN_GOOD",
"LineName": "PSU2_VIN_GOOD",
"EventMon": "RISING",
"Target": "psu_hotswap_reset@1.service",
"Continue": true
}
]
@@ -0,0 +1,6 @@
[Unit]
Description=Ampere Computing LLC PSU1 reset hotswap
[Service]
Restart=no
ExecStart=/usr/sbin/ampere_psu_reset_hotswap.sh %i
@@ -0,0 +1,31 @@
FILESEXTRAPATHS:prepend := "${THISDIR}/${PN}:"
inherit systemd
inherit obmc-phosphor-systemd
RDEPENDS:${PN}-monitor += "bash"
RDEPENDS:${PN} += "bash"
SRC_URI += " \
file://phosphor-multi-gpio-monitor.json \
file://ampere_scp_failover.sh \
file://ampere_psu_reset_hotswap.sh \
"
SYSTEMD_SERVICE:${PN}-monitor += " \
ampere_scp_failover.service \
psu_hotswap_reset@.service \
"
FILES:${PN}-monitor += " \
${datadir}/${PN}/phosphor-multi-gpio-monitor.json \
/usr/sbin/ampere_scp_failover.sh \
/usr/sbin/ampere_psu_reset_hotswap.sh \
"
do_install:append() {
install -d ${D}${sbindir}
install -m 0644 ${WORKDIR}/phosphor-multi-gpio-monitor.json ${D}${datadir}/${PN}/
install -m 0755 ${WORKDIR}/ampere_scp_failover.sh ${D}${sbindir}/
install -m 0755 ${WORKDIR}/ampere_psu_reset_hotswap.sh ${D}${sbindir}/
}
@@ -0,0 +1,3 @@
SOCKET_ID=default
MODE=stream
STREAM_DST=/run/rsyslog/console/cpu
@@ -0,0 +1,3 @@
SOCKET_ID=ttyS1
MODE=stream
STREAM_DST=/run/rsyslog/console/scp0
@@ -0,0 +1,3 @@
SOCKET_ID=ttyS2
MODE=stream
STREAM_DST=/run/rsyslog/console/atf
@@ -0,0 +1,3 @@
SOCKET_ID=ttyS3
MODE=stream
STREAM_DST=/run/rsyslog/console/scp1
@@ -0,0 +1,18 @@
FILESEXTRAPATHS:prepend := "${THISDIR}/${PN}:"
SRC_URI:append = " \
file://ttyS0.conf \
file://ttyS1.conf \
file://ttyS2.conf \
file://ttyS3.conf \
"
do_install:append() {
# Install the configurations
install -m 0755 -d ${D}${sysconfdir}/${BPN}
install -m 0644 ${WORKDIR}/*.conf ${D}${sysconfdir}/${BPN}/
# Remove upstream-provided default configuration
rm -f ${D}${sysconfdir}/${BPN}/ttyVUART0.conf
}
@@ -0,0 +1,7 @@
# This is the default password for the OpenBMC root user account (0penBmc)
# Override salted and hashed value. The salted and hashed value are generated
# by command "openssl passwd -6 -salt rounds=1000\$UGMqyqdG 0penBmc"
AMPERE_DEFAULT_OPENBMC_PASSWORD = "'\$6\$rounds=1000\$UGMqyqdG\$uaE7HvA2vYhZYpIslelD1bsZMkXWV7YjL3wS2Vwj8rXyf90umESUzuR5if64N1LkNzTX.HUIi6D8s108y5GOB/'"
EXTRA_USERS_PARAMS:pn-obmc-phosphor-image = " \
usermod -p ${AMPERE_DEFAULT_OPENBMC_PASSWORD} root; \
"
@@ -0,0 +1 @@
FILESEXTRAPATHS:append := "${THISDIR}/${PN}:"
@@ -0,0 +1,30 @@
{
"inlet": [
{"instance": 1, "dbus": "/xyz/openbmc_project/sensors/temperature/PSU0_TEMP", "record_id": 243},
{"instance": 2, "dbus": "/xyz/openbmc_project/sensors/temperature/PSU1_TEMP", "record_id": 244}
],
"baseboard": [
{"instance": 1, "dbus": "/xyz/openbmc_project/sensors/temperature/TS1_Temp", "record_id": 1},
{"instance": 2, "dbus": "/xyz/openbmc_project/sensors/temperature/TS2_Temp", "record_id": 2},
{"instance": 3, "dbus": "/xyz/openbmc_project/sensors/temperature/TS3_Temp", "record_id": 3},
{"instance": 4, "dbus": "/xyz/openbmc_project/sensors/temperature/TS4_Temp", "record_id": 4},
{"instance": 5, "dbus": "/xyz/openbmc_project/sensors/temperature/TS5_Temp", "record_id": 5},
{"instance": 6, "dbus": "/xyz/openbmc_project/sensors/temperature/TS6_Temp", "record_id": 6}
],
"cpu": [
{ "instance": 1, "dbus": "/xyz/openbmc_project/sensors/temperature/S0_SOC_Temp", "record_id": 107 },
{ "instance": 2, "dbus": "/xyz/openbmc_project/sensors/temperature/S0_SOC_VRD_Temp", "record_id": 108 },
{ "instance": 3, "dbus": "/xyz/openbmc_project/sensors/temperature/S0_DIMM_VRD_Temp", "record_id": 109 },
{ "instance": 4, "dbus": "/xyz/openbmc_project/sensors/temperature/S0_Core_VRD_Temp", "record_id": 110 },
{ "instance": 5, "dbus": "/xyz/openbmc_project/sensors/temperature/S0_DIMMG0_Temp", "record_id": 111 },
{ "instance": 6, "dbus": "/xyz/openbmc_project/sensors/temperature/S0_RCA_VR_Temp", "record_id": 154 },
{ "instance": 7, "dbus": "/xyz/openbmc_project/sensors/temperature/S1_SOC_Temp", "record_id": 123 },
{ "instance": 8, "dbus": "/xyz/openbmc_project/sensors/temperature/S1_SOC_VRD_Temp", "record_id": 124 },
{ "instance": 9, "dbus": "/xyz/openbmc_project/sensors/temperature/S1_DIMM_VRD_Temp", "record_id": 125 },
{ "instance": 10, "dbus": "/xyz/openbmc_project/sensors/temperature/S1_Core_VRD_Temp", "record_id": 126 },
{ "instance": 11, "dbus": "/xyz/openbmc_project/sensors/temperature/S1_DIMMG0_Temp", "record_id": 127 },
{ "instance": 12, "dbus": "/xyz/openbmc_project/sensors/temperature/S1_RCA_VR_Temp", "record_id": 157 },
{ "instance": 13, "dbus": "/xyz/openbmc_project/sensors/temperature/S0_DIMMG1_Temp", "record_id": 105 },
{ "instance": 14, "dbus": "/xyz/openbmc_project/sensors/temperature/S1_DIMMG1_Temp", "record_id": 106 }
]
}
@@ -0,0 +1,2 @@
{"id": 32, "revision": 1, "addn_dev_support": 141,
"manuf_id": 52538, "prod_id": 130, "aux": 0}
@@ -0,0 +1,10 @@
FILESEXTRAPATHS:append := "${THISDIR}/${PN}:"
PACKAGECONFIG:append = " dynamic-storages-only"
DEPENDS:append = " mtjade-yaml-config"
EXTRA_OEMESON = " \
-Dsensor-yaml-gen=${STAGING_DIR_HOST}${datadir}/mtjade-yaml-config/ipmi-sensors.yaml \
-Dfru-yaml-gen=${STAGING_DIR_HOST}${datadir}/mtjade-yaml-config/ipmi-fru-read.yaml \
"
@@ -0,0 +1,7 @@
DEFAULT_RMCPP_IFACE = "eth1"
ALT_RMCPP_IFACE = "eth0"
SYSTEMD_SERVICE:${PN} += " \
${PN}@${ALT_RMCPP_IFACE}.service \
${PN}@${ALT_RMCPP_IFACE}.socket \
"
@@ -0,0 +1,3 @@
[Service]
ExecStopPost=/bin/sh -c "/usr/bin/gpioset 0 228=0"
ExecStartPost=/bin/sh -c "/usr/bin/gpioset 0 228=1"
@@ -0,0 +1,11 @@
FILESEXTRAPATHS:append := "${THISDIR}/${PN}:"
SRC_URI += " file://ssifbridge-override.conf"
FILES:${PN} += "${systemd_system_unitdir}/ssifbridge.service.d"
do_install:append() {
install -d ${D}${systemd_system_unitdir}/ssifbridge.service.d
install -m 644 ${WORKDIR}/ssifbridge-override.conf \
${D}${systemd_system_unitdir}/ssifbridge.service.d
}
@@ -0,0 +1,19 @@
SUMMARY = "Phosphor LED Group Management for Mt. Jade"
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}"
# Overwrite the example led layout yaml file prior
# to building the phosphor-led-manager package
do_install() {
SRC=${S}
DEST=${D}${datadir}/phosphor-led-manager
install -D ${SRC}/led.yaml ${DEST}/led.yaml
}
@@ -0,0 +1,32 @@
bmc_booted:
power:
Action: 'Blink'
DutyOn: 50
Period: 1000
Priority: 'On'
power_on:
power:
Action: 'On'
DutyOn: 50
Period: 0
Priority: 'On'
systemFault:
fault:
Action: 'On'
DutyOn: 50
Period: 0
Priority: 'Blink'
enclosure_identify:
identify:
Action: 'On'
DutyOn: 50
Period: 1000
enclosure_identify_blink:
identify:
Action: 'Blink'
DutyOn: 50
Period: 1000
@@ -0,0 +1,16 @@
RDEPENDS:${PN}-extras:append = " \
webui-vue \
phosphor-image-signing \
phosphor-virtual-sensor \
phosphor-misc-usb-ctrl \
phosphor-gpio-monitor-monitor \
"
RDEPENDS:${PN}-inventory:append = " \
dbus-sensors \
entity-manager \
"
RDEPENDS:${PN}-extras:remove = " phosphor-hwmon"
VIRTUAL-RUNTIME_obmc-sensors-hwmon ?= "dbus-sensors"
RDEPENDS:${PN}-extras:append = " phosphor-virtual-sensor"
@@ -0,0 +1,279 @@
[
{
"Desc":
{
"Name": "total_power",
"SensorType": "power"
},
"Threshold" :
{
},
"Associations":
[
[
"chassis",
"all_sensors",
"/xyz/openbmc_project/inventory/system/chassis/Mt_Jade"
],
[
"inventory",
"sensors",
"/xyz/openbmc_project/inventory/system/chassis/Mt_Jade"
]
],
"Params":
{
"DbusParam":
[
{
"ParamName": "P0",
"Desc":
{
"Name": "PSU0_POUTPUT",
"SensorType": "power"
}
},
{
"ParamName": "P1",
"Desc":
{
"Name": "PSU1_POUTPUT",
"SensorType": "power"
}
}
]
},
"Expression": "((P0 == P0) ? P0 : 0) + ((P1 == P1) ? P1 : 0)"
},
{
"Desc":{
"Name":"nvme_bp_max",
"SensorType":"temperature"
},
"Associations":
[
[
"chassis",
"all_sensors",
"/xyz/openbmc_project/inventory/system/chassis/Mt_Jade"
],
[
"inventory",
"sensors",
"/xyz/openbmc_project/inventory/system/chassis/Mt_Jade"
]
],
"Params":{
"DbusParam": [
{
"ParamName": "n0",
"Desc": {
"Name": "nvme0",
"SensorType": "temperature"
}
},
{
"ParamName": "n1",
"Desc": {
"Name": "nvme1",
"SensorType": "temperature"
}
},
{
"ParamName": "n2",
"Desc": {
"Name": "nvme2",
"SensorType": "temperature"
}
},
{
"ParamName": "n3",
"Desc": {
"Name": "nvme3",
"SensorType": "temperature"
}
},
{
"ParamName": "n4",
"Desc": {
"Name": "nvme4",
"SensorType": "temperature"
}
},
{
"ParamName": "n5",
"Desc": {
"Name": "nvme5",
"SensorType": "temperature"
}
},
{
"ParamName": "n6",
"Desc": {
"Name": "nvme6",
"SensorType": "temperature"
}
},
{
"ParamName": "n7",
"Desc": {
"Name": "nvme7",
"SensorType": "temperature"
}
},
{
"ParamName": "n8",
"Desc": {
"Name": "nvme8",
"SensorType": "temperature"
}
},
{
"ParamName": "n9",
"Desc": {
"Name": "nvme9",
"SensorType": "temperature"
}
},
{
"ParamName": "n10",
"Desc": {
"Name": "nvme10",
"SensorType": "temperature"
}
},
{
"ParamName": "n11",
"Desc": {
"Name": "nvme11",
"SensorType": "temperature"
}
},
{
"ParamName": "n12",
"Desc": {
"Name": "nvme12",
"SensorType": "temperature"
}
},
{
"ParamName": "n13",
"Desc": {
"Name": "nvme13",
"SensorType": "temperature"
}
},
{
"ParamName": "n14",
"Desc": {
"Name": "nvme14",
"SensorType": "temperature"
}
},
{
"ParamName": "n15",
"Desc": {
"Name": "nvme15",
"SensorType": "temperature"
}
},
{
"ParamName": "n16",
"Desc": {
"Name": "nvme16",
"SensorType": "temperature"
}
},
{
"ParamName": "n17",
"Desc": {
"Name": "nvme17",
"SensorType": "temperature"
}
},
{
"ParamName": "n18",
"Desc": {
"Name": "nvme18",
"SensorType": "temperature"
}
},
{
"ParamName": "n19",
"Desc": {
"Name": "nvme19",
"SensorType": "temperature"
}
},
{
"ParamName": "n20",
"Desc": {
"Name": "nvme20",
"SensorType": "temperature"
}
},
{
"ParamName": "n21",
"Desc": {
"Name": "nvme21",
"SensorType": "temperature"
}
},
{
"ParamName": "n22",
"Desc": {
"Name": "nvme22",
"SensorType": "temperature"
}
},
{
"ParamName": "n23",
"Desc": {
"Name": "nvme23",
"SensorType": "temperature"
}
}
]
},
"Expression": "max((n0 == n0) ? n0 : 0,(n1 == n1) ? n1 : 0,(n2 == n2) ? n2 : 0,(n3 == n3) ? n3 : 0,(n4 == n4) ? n4 : 0,(n5 == n5) ? n5 : 0,(n6 == n6) ? n6 : 0,(n7 == n7) ? n7 : 0,(n8 == n8) ? n8 : 0,(n9 == n9) ? n9 : 0,(n10 == n10) ? n10 : 0,(n11 == n11) ? n11 : 0,(n12 == n12) ? n12 : 0,(n13 == n13) ? n13 : 0,(n14 == n14) ? n14 : 0,(n15 == n15) ? n15 : 0,(n16 == n16) ? n16 : 0,(n17 == n17) ? n17 : 0,(n18 == n18) ? n18 : 0,(n19 == n19) ? n19 : 0,(n20 == n20) ? n20 : 0,(n21 == n21) ? n21 : 0,(n22 == n22) ? n22 : 0,(n23 == n23) ? n23 : 0)"
},
{
"Desc":{
"Name":"nvme_m2_max",
"SensorType":"temperature"
},
"Associations":
[
[
"chassis",
"all_sensors",
"/xyz/openbmc_project/inventory/system/chassis/Mt_Jade"
],
[
"inventory",
"sensors",
"/xyz/openbmc_project/inventory/system/chassis/Mt_Jade"
]
],
"Params":{
"DbusParam": [
{
"ParamName": "n24",
"Desc": {
"Name": "nvme24",
"SensorType": "temperature"
}
},
{
"ParamName": "n25",
"Desc": {
"Name": "nvme25",
"SensorType": "temperature"
}
}
]
},
"Expression": "max((n24 == n24) ? n24 : 0,(n25 == n25) ? n25 : 0)"
}
]
@@ -0,0 +1,10 @@
FILESEXTRAPATHS:prepend := "${THISDIR}/${PN}:"
SRC_URI:append = " \
file://virtual_sensor_config.json \
"
do_install:append() {
install -m 0644 ${WORKDIR}/virtual_sensor_config.json ${D}${datadir}/phosphor-virtual-sensor/
}
@@ -0,0 +1,59 @@
{
"gpio_configs": {
"power_config": {
"power_good_in": "PGOOD",
"power_up_outs": [
{"name": "OCP_MAIN_PWREN", "polarity": true},
{"name": "BMC_SYS_PSON_L", "polarity": false}
],
"reset_outs": [
{"name": "BMC_S0_SYSRESET_L", "polarity": false},
{"name": "BMC_S1_SYSRESET_L", "polarity": false}
]
}
},
"gpio_definitions": [
{
"name": "PGOOD",
"pin": "F4",
"direction": "in"
},
{
"name": "BMC_SYS_PSON_L",
"pin": "F2",
"direction": "out"
},
{
"name": "OCP_MAIN_PWREN",
"pin": "R4",
"direction": "out"
},
{
"name": "BMC_S0_SYSRESET_L",
"pin": "L3",
"direction": "out"
},
{
"name": "BMC_S1_SYSRESET_L",
"pin": "L4",
"direction": "out"
},
{
"name": "POWER_BUTTON",
"pin": "B4",
"direction": "both"
},
{
"name": "RESET_BUTTON",
"pin": "R5",
"direction": "both"
},
{
"name": "ID_BTN",
"pin": "Q5",
"direction": "both"
}
]
}
@@ -0,0 +1 @@
FILESEXTRAPATHS:append := "${THISDIR}/${PN}:"