blob: 2a377a3c7eec77ea7dc655b97eaa77a5cc1d820a (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
|
# OEM-IPMI Commands to talk to Phosphor-pid-control
## IPMI Command Specification
The host needs the ability to send to the BMC, the margin information on the
devices that it knows how to read that the BMC cannot. There is no command in
IPMI that currently supports this use-case, therefore it will be added as an OEM
command.
The state of the BMC readable temperature sensors can be read through normal
IPMI commands and is already supported.
### OEM Set Control
A host tool needs to be able to set the control of the thermal system to either
automatic or manual. When manual, the daemon will effectively wait to be told to
be put back in automatic mode. It is expected in this manual mode that something
will be controlling the fans via the other commands.
Manual mode is controlled by zone through the following OEM command:
#### Request
Byte | Purpose | Value
---- | ------------ | -----------------------------------------------------
`00` | `netfn` | `0x2e`
`01` | `command` | `0x04 (also using manual command)`
`02` | `oem1` | `0xcf`
`03` | `oem2` | `0xc2`
`04` | `padding` | `0x00`
`05` | `SubCommand` | `Get or Set. Get == 0, Set == 1`
`06` | `ZoneId` |
`07` | `Mode` | `If Set, Value 1 == Manual Mode, 0 == Automatic Mode`
#### Response
Byte | Purpose | Value
---- | --------- | -----------------------------------------------------
`02` | `oem1` | `0xcf`
`03` | `oem2` | `0xc2`
`04` | `padding` | `0x00`
`07` | `Mode` | `If Set, Value 1 == Manual Mode, 0 == Automatic Mode`
### OEM Get Failsafe Mode
A host tool needs to be able to read back whether a zone is in failsafe mode.
This setting is read-only because it's dynamically determined within Swampd per
zone.
Byte | Purpose | Value
---- | ------------ | ----------------------------------
`00` | `netfn` | `0x2e`
`01` | `command` | `0x04 (also using manual command)`
`02` | `oem1` | `0xcf`
`03` | `oem2` | `0xc2`
`04` | `padding` | `0x00`
`05` | `SubCommand` | `Get == 2`
`06` | `ZoneId` |
#### Response
Byte | Purpose | Value
---- | ---------- | -----------------------------------------------
`02` | `oem1` | `0xcf`
`03` | `oem2` | `0xc2`
`04` | `padding` | `0x00`
`07` | `failsafe` | `1 == in Failsafe Mode, 0 not in failsafe mode`
|