1*3420426cSMatt Spinler[
2*3420426cSMatt Spinler    {
3*3420426cSMatt Spinler        // Hold fans at the given target when a number of fans are missing.
4*3420426cSMatt Spinler        "name": "fan(s) missing",
5*3420426cSMatt Spinler        "groups": [
6*3420426cSMatt Spinler            {
7*3420426cSMatt Spinler                "name": "fan inventory",
8*3420426cSMatt Spinler                "interface": "xyz.openbmc_project.Inventory.Item",
9*3420426cSMatt Spinler                "property": { "name": "Present" }
10*3420426cSMatt Spinler            }
11*3420426cSMatt Spinler        ],
12*3420426cSMatt Spinler        "triggers": [
13*3420426cSMatt Spinler            {
14*3420426cSMatt Spinler                "class": "init",
15*3420426cSMatt Spinler                "method": "get_properties"
16*3420426cSMatt Spinler            },
17*3420426cSMatt Spinler            {
18*3420426cSMatt Spinler                "class": "signal",
19*3420426cSMatt Spinler                "signal": "properties_changed"
20*3420426cSMatt Spinler            }
21*3420426cSMatt Spinler        ],
22*3420426cSMatt Spinler        "actions": [
23*3420426cSMatt Spinler            {
24*3420426cSMatt Spinler                "name": "count_state_before_target",
25*3420426cSMatt Spinler                "count": 1,
26*3420426cSMatt Spinler                "state": false,
27*3420426cSMatt Spinler                "target": 18000
28*3420426cSMatt Spinler            }
29*3420426cSMatt Spinler        ]
30*3420426cSMatt Spinler    },
31*3420426cSMatt Spinler    {
32*3420426cSMatt Spinler        // Hold fans at the given target when a number of rotors are nonfunctional.
33*3420426cSMatt Spinler        "name": "fan rotor(s) faulted",
34*3420426cSMatt Spinler        "groups": [
35*3420426cSMatt Spinler            {
36*3420426cSMatt Spinler                "name": "fan0 rotor inventory",
37*3420426cSMatt Spinler                "interface": "xyz.openbmc_project.State.Decorator.OperationalStatus",
38*3420426cSMatt Spinler                "property": { "name": "Functional" }
39*3420426cSMatt Spinler            },
40*3420426cSMatt Spinler            {
41*3420426cSMatt Spinler                "name": "fan1 rotor inventory",
42*3420426cSMatt Spinler                "interface": "xyz.openbmc_project.State.Decorator.OperationalStatus",
43*3420426cSMatt Spinler                "property": { "name": "Functional" }
44*3420426cSMatt Spinler            },
45*3420426cSMatt Spinler            {
46*3420426cSMatt Spinler                "name": "fan2 rotor inventory",
47*3420426cSMatt Spinler                "interface": "xyz.openbmc_project.State.Decorator.OperationalStatus",
48*3420426cSMatt Spinler                "property": { "name": "Functional" }
49*3420426cSMatt Spinler            },
50*3420426cSMatt Spinler            {
51*3420426cSMatt Spinler                "name": "fan3 rotor inventory",
52*3420426cSMatt Spinler                "interface": "xyz.openbmc_project.State.Decorator.OperationalStatus",
53*3420426cSMatt Spinler                "property": { "name": "Functional" }
54*3420426cSMatt Spinler            },
55*3420426cSMatt Spinler            {
56*3420426cSMatt Spinler                "name": "fan4 rotor inventory",
57*3420426cSMatt Spinler                "interface": "xyz.openbmc_project.State.Decorator.OperationalStatus",
58*3420426cSMatt Spinler                "property": { "name": "Functional" }
59*3420426cSMatt Spinler            },
60*3420426cSMatt Spinler            {
61*3420426cSMatt Spinler                "name": "fan5 rotor inventory",
62*3420426cSMatt Spinler                "interface": "xyz.openbmc_project.State.Decorator.OperationalStatus",
63*3420426cSMatt Spinler                "property": { "name": "Functional" }
64*3420426cSMatt Spinler            }
65*3420426cSMatt Spinler        ],
66*3420426cSMatt Spinler        "triggers": [
67*3420426cSMatt Spinler            {
68*3420426cSMatt Spinler                "class": "init",
69*3420426cSMatt Spinler                "method": "get_properties"
70*3420426cSMatt Spinler            },
71*3420426cSMatt Spinler            {
72*3420426cSMatt Spinler                "class": "signal",
73*3420426cSMatt Spinler                "signal": "properties_changed"
74*3420426cSMatt Spinler            }
75*3420426cSMatt Spinler        ],
76*3420426cSMatt Spinler        "actions": [
77*3420426cSMatt Spinler            {
78*3420426cSMatt Spinler                "name": "count_state_before_target",
79*3420426cSMatt Spinler                "count": 1,
80*3420426cSMatt Spinler                "state": false,
81*3420426cSMatt Spinler                "target": 18000
82*3420426cSMatt Spinler            }
83*3420426cSMatt Spinler        ]
84*3420426cSMatt Spinler    },
85*3420426cSMatt Spinler    {
86*3420426cSMatt Spinler        // (for the following 6 rules)
87*3420426cSMatt Spinler        // if a dual-rotor fan becomes non-functional, lock its speed to
88*3420426cSMatt Spinler        // poweron_target to lock the other rotor to full_speed
89*3420426cSMatt Spinler        "name": "nonfunc rotor override-0",
90*3420426cSMatt Spinler        "groups": [
91*3420426cSMatt Spinler            {
92*3420426cSMatt Spinler                "name": "fan0 rotor inventory",
93*3420426cSMatt Spinler                "interface": "xyz.openbmc_project.State.Decorator.OperationalStatus",
94*3420426cSMatt Spinler                "property": { "name": "Functional" }
95*3420426cSMatt Spinler            }
96*3420426cSMatt Spinler        ],
97*3420426cSMatt Spinler        "triggers": [
98*3420426cSMatt Spinler            {
99*3420426cSMatt Spinler                "class": "init",
100*3420426cSMatt Spinler                "method": "get_properties"
101*3420426cSMatt Spinler            },
102*3420426cSMatt Spinler            {
103*3420426cSMatt Spinler                "class": "signal",
104*3420426cSMatt Spinler                "signal": "properties_changed"
105*3420426cSMatt Spinler            }
106*3420426cSMatt Spinler        ],
107*3420426cSMatt Spinler        "actions": [
108*3420426cSMatt Spinler            {
109*3420426cSMatt Spinler                "name": "override_fan_target",
110*3420426cSMatt Spinler                "count": 1,
111*3420426cSMatt Spinler                "state": false,
112*3420426cSMatt Spinler                "fans": ["fan0"],
113*3420426cSMatt Spinler                "target": 18000
114*3420426cSMatt Spinler            }
115*3420426cSMatt Spinler        ]
116*3420426cSMatt Spinler    },
117*3420426cSMatt Spinler    {
118*3420426cSMatt Spinler        "name": "nonfunc rotor override-1",
119*3420426cSMatt Spinler        "groups": [
120*3420426cSMatt Spinler            {
121*3420426cSMatt Spinler                "name": "fan1 rotor inventory",
122*3420426cSMatt Spinler                "interface": "xyz.openbmc_project.State.Decorator.OperationalStatus",
123*3420426cSMatt Spinler                "property": { "name": "Functional" }
124*3420426cSMatt Spinler            }
125*3420426cSMatt Spinler        ],
126*3420426cSMatt Spinler        "triggers": [
127*3420426cSMatt Spinler            {
128*3420426cSMatt Spinler                "class": "init",
129*3420426cSMatt Spinler                "method": "get_properties"
130*3420426cSMatt Spinler            },
131*3420426cSMatt Spinler            {
132*3420426cSMatt Spinler                "class": "signal",
133*3420426cSMatt Spinler                "signal": "properties_changed"
134*3420426cSMatt Spinler            }
135*3420426cSMatt Spinler        ],
136*3420426cSMatt Spinler        "actions": [
137*3420426cSMatt Spinler            {
138*3420426cSMatt Spinler                "name": "override_fan_target",
139*3420426cSMatt Spinler                "count": 1,
140*3420426cSMatt Spinler                "state": false,
141*3420426cSMatt Spinler                "fans": ["fan1"],
142*3420426cSMatt Spinler                "target": 18000
143*3420426cSMatt Spinler            }
144*3420426cSMatt Spinler        ]
145*3420426cSMatt Spinler    },
146*3420426cSMatt Spinler    {
147*3420426cSMatt Spinler        "name": "nonfunc rotor override-2",
148*3420426cSMatt Spinler        "groups": [
149*3420426cSMatt Spinler            {
150*3420426cSMatt Spinler                "name": "fan2 rotor inventory",
151*3420426cSMatt Spinler                "interface": "xyz.openbmc_project.State.Decorator.OperationalStatus",
152*3420426cSMatt Spinler                "property": { "name": "Functional" }
153*3420426cSMatt Spinler            }
154*3420426cSMatt Spinler        ],
155*3420426cSMatt Spinler        "triggers": [
156*3420426cSMatt Spinler            {
157*3420426cSMatt Spinler                "class": "init",
158*3420426cSMatt Spinler                "method": "get_properties"
159*3420426cSMatt Spinler            },
160*3420426cSMatt Spinler            {
161*3420426cSMatt Spinler                "class": "signal",
162*3420426cSMatt Spinler                "signal": "properties_changed"
163*3420426cSMatt Spinler            }
164*3420426cSMatt Spinler        ],
165*3420426cSMatt Spinler        "actions": [
166*3420426cSMatt Spinler            {
167*3420426cSMatt Spinler                "name": "override_fan_target",
168*3420426cSMatt Spinler                "count": 1,
169*3420426cSMatt Spinler                "state": false,
170*3420426cSMatt Spinler                "fans": ["fan2"],
171*3420426cSMatt Spinler                "target": 18000
172*3420426cSMatt Spinler            }
173*3420426cSMatt Spinler        ]
174*3420426cSMatt Spinler    },
175*3420426cSMatt Spinler    {
176*3420426cSMatt Spinler        "name": "nonfunc rotor override-3",
177*3420426cSMatt Spinler        "groups": [
178*3420426cSMatt Spinler            {
179*3420426cSMatt Spinler                "name": "fan3 rotor inventory",
180*3420426cSMatt Spinler                "interface": "xyz.openbmc_project.State.Decorator.OperationalStatus",
181*3420426cSMatt Spinler                "property": { "name": "Functional" }
182*3420426cSMatt Spinler            }
183*3420426cSMatt Spinler        ],
184*3420426cSMatt Spinler        "triggers": [
185*3420426cSMatt Spinler            {
186*3420426cSMatt Spinler                "class": "init",
187*3420426cSMatt Spinler                "method": "get_properties"
188*3420426cSMatt Spinler            },
189*3420426cSMatt Spinler            {
190*3420426cSMatt Spinler                "class": "signal",
191*3420426cSMatt Spinler                "signal": "properties_changed"
192*3420426cSMatt Spinler            }
193*3420426cSMatt Spinler        ],
194*3420426cSMatt Spinler        "actions": [
195*3420426cSMatt Spinler            {
196*3420426cSMatt Spinler                "name": "override_fan_target",
197*3420426cSMatt Spinler                "count": 1,
198*3420426cSMatt Spinler                "state": false,
199*3420426cSMatt Spinler                "fans": ["fan3"],
200*3420426cSMatt Spinler                "target": 18000
201*3420426cSMatt Spinler            }
202*3420426cSMatt Spinler        ]
203*3420426cSMatt Spinler    },
204*3420426cSMatt Spinler    {
205*3420426cSMatt Spinler        "name": "nonfunc rotor override-4",
206*3420426cSMatt Spinler        "groups": [
207*3420426cSMatt Spinler            {
208*3420426cSMatt Spinler                "name": "fan4 rotor inventory",
209*3420426cSMatt Spinler                "interface": "xyz.openbmc_project.State.Decorator.OperationalStatus",
210*3420426cSMatt Spinler                "property": { "name": "Functional" }
211*3420426cSMatt Spinler            }
212*3420426cSMatt Spinler        ],
213*3420426cSMatt Spinler        "triggers": [
214*3420426cSMatt Spinler            {
215*3420426cSMatt Spinler                "class": "init",
216*3420426cSMatt Spinler                "method": "get_properties"
217*3420426cSMatt Spinler            },
218*3420426cSMatt Spinler            {
219*3420426cSMatt Spinler                "class": "signal",
220*3420426cSMatt Spinler                "signal": "properties_changed"
221*3420426cSMatt Spinler            }
222*3420426cSMatt Spinler        ],
223*3420426cSMatt Spinler        "actions": [
224*3420426cSMatt Spinler            {
225*3420426cSMatt Spinler                "name": "override_fan_target",
226*3420426cSMatt Spinler                "count": 1,
227*3420426cSMatt Spinler                "state": false,
228*3420426cSMatt Spinler                "fans": ["fan4"],
229*3420426cSMatt Spinler                "target": 18000
230*3420426cSMatt Spinler            }
231*3420426cSMatt Spinler        ]
232*3420426cSMatt Spinler    },
233*3420426cSMatt Spinler    {
234*3420426cSMatt Spinler        "name": "nonfunc rotor override-5",
235*3420426cSMatt Spinler        "groups": [
236*3420426cSMatt Spinler            {
237*3420426cSMatt Spinler                "name": "fan5 rotor inventory",
238*3420426cSMatt Spinler                "interface": "xyz.openbmc_project.State.Decorator.OperationalStatus",
239*3420426cSMatt Spinler                "property": { "name": "Functional" }
240*3420426cSMatt Spinler            }
241*3420426cSMatt Spinler        ],
242*3420426cSMatt Spinler        "triggers": [
243*3420426cSMatt Spinler            {
244*3420426cSMatt Spinler                "class": "init",
245*3420426cSMatt Spinler                "method": "get_properties"
246*3420426cSMatt Spinler            },
247*3420426cSMatt Spinler            {
248*3420426cSMatt Spinler                "class": "signal",
249*3420426cSMatt Spinler                "signal": "properties_changed"
250*3420426cSMatt Spinler            }
251*3420426cSMatt Spinler        ],
252*3420426cSMatt Spinler        "actions": [
253*3420426cSMatt Spinler            {
254*3420426cSMatt Spinler                "name": "override_fan_target",
255*3420426cSMatt Spinler                "count": 1,
256*3420426cSMatt Spinler                "state": false,
257*3420426cSMatt Spinler                "fans": ["fan5"],
258*3420426cSMatt Spinler                "target": 18000
259*3420426cSMatt Spinler            }
260*3420426cSMatt Spinler        ]
261*3420426cSMatt Spinler    },
262*3420426cSMatt Spinler    {
263*3420426cSMatt Spinler        // Hold fans at the given target when any critical service
264*3420426cSMatt Spinler        // is not running for 5 seconds.
265*3420426cSMatt Spinler        "name": "service(s) missing",
266*3420426cSMatt Spinler        "groups": [
267*3420426cSMatt Spinler            {
268*3420426cSMatt Spinler                "name": "fan inventory",
269*3420426cSMatt Spinler                "interface": "xyz.openbmc_project.Inventory.Item",
270*3420426cSMatt Spinler                "property": { "name": "Present" }
271*3420426cSMatt Spinler            },
272*3420426cSMatt Spinler            {
273*3420426cSMatt Spinler                "name": "occ objects",
274*3420426cSMatt Spinler                "interface": "org.open_power.OCC.Status",
275*3420426cSMatt Spinler                "property": { "name": "OccActive" }
276*3420426cSMatt Spinler            },
277*3420426cSMatt Spinler            {
278*3420426cSMatt Spinler                "name": "nvme temps",
279*3420426cSMatt Spinler                "interface": "xyz.openbmc_project.Sensor.Value",
280*3420426cSMatt Spinler                "property": { "name": "Value" }
281*3420426cSMatt Spinler            },
282*3420426cSMatt Spinler            {
283*3420426cSMatt Spinler                "name": "planar temps",
284*3420426cSMatt Spinler                "interface": "xyz.openbmc_project.Sensor.Value",
285*3420426cSMatt Spinler                "property": { "name": "Value" }
286*3420426cSMatt Spinler            },
287*3420426cSMatt Spinler            {
288*3420426cSMatt Spinler                "name": "flett temps",
289*3420426cSMatt Spinler                "interface": "xyz.openbmc_project.Sensor.Value",
290*3420426cSMatt Spinler                "property": { "name": "Value" }
291*3420426cSMatt Spinler            },
292*3420426cSMatt Spinler            {
293*3420426cSMatt Spinler                "name": "pcie cable card temps",
294*3420426cSMatt Spinler                "interface": "xyz.openbmc_project.Sensor.Value",
295*3420426cSMatt Spinler                "property": { "name": "Value" }
296*3420426cSMatt Spinler            },
297*3420426cSMatt Spinler            {
298*3420426cSMatt Spinler                "name": "ambient temp",
299*3420426cSMatt Spinler                "interface": "xyz.openbmc_project.Sensor.Value",
300*3420426cSMatt Spinler                "property": { "name": "Value" }
301*3420426cSMatt Spinler            },
302*3420426cSMatt Spinler            {
303*3420426cSMatt Spinler                "name": "altitude",
304*3420426cSMatt Spinler                "interface": "xyz.openbmc_project.Sensor.Value",
305*3420426cSMatt Spinler                "property": { "name": "Value" }
306*3420426cSMatt Spinler            }
307*3420426cSMatt Spinler        ],
308*3420426cSMatt Spinler        "triggers": [
309*3420426cSMatt Spinler            {
310*3420426cSMatt Spinler                "class": "init",
311*3420426cSMatt Spinler                "method": "name_has_owner"
312*3420426cSMatt Spinler            },
313*3420426cSMatt Spinler            {
314*3420426cSMatt Spinler                "class": "signal",
315*3420426cSMatt Spinler                "signal": "name_owner_changed"
316*3420426cSMatt Spinler            }
317*3420426cSMatt Spinler        ],
318*3420426cSMatt Spinler        "actions": [
319*3420426cSMatt Spinler            {
320*3420426cSMatt Spinler                "name": "call_actions_based_on_timer",
321*3420426cSMatt Spinler                "timer": {
322*3420426cSMatt Spinler                    "interval": 5000000,
323*3420426cSMatt Spinler                    "type": "oneshot"
324*3420426cSMatt Spinler                },
325*3420426cSMatt Spinler                "actions": [
326*3420426cSMatt Spinler                    {
327*3420426cSMatt Spinler                        "name": "set_target_on_missing_owner",
328*3420426cSMatt Spinler                        "groups": [
329*3420426cSMatt Spinler                            {
330*3420426cSMatt Spinler                                "name": "fan inventory",
331*3420426cSMatt Spinler                                "interface": "xyz.openbmc_project.Inventory.Item",
332*3420426cSMatt Spinler                                "property": { "name": "Present" }
333*3420426cSMatt Spinler                            },
334*3420426cSMatt Spinler                            {
335*3420426cSMatt Spinler                                "name": "occ objects",
336*3420426cSMatt Spinler                                "interface": "org.open_power.OCC.Status",
337*3420426cSMatt Spinler                                "property": { "name": "OccActive" }
338*3420426cSMatt Spinler                            },
339*3420426cSMatt Spinler                            {
340*3420426cSMatt Spinler                                "name": "nvme temps",
341*3420426cSMatt Spinler                                "interface": "xyz.openbmc_project.Sensor.Value",
342*3420426cSMatt Spinler                                "property": { "name": "Value" }
343*3420426cSMatt Spinler                            },
344*3420426cSMatt Spinler                            {
345*3420426cSMatt Spinler                                "name": "planar temps",
346*3420426cSMatt Spinler                                "interface": "xyz.openbmc_project.Sensor.Value",
347*3420426cSMatt Spinler                                "property": { "name": "Value" }
348*3420426cSMatt Spinler                            },
349*3420426cSMatt Spinler                            {
350*3420426cSMatt Spinler                                "name": "flett temps",
351*3420426cSMatt Spinler                                "interface": "xyz.openbmc_project.Sensor.Value",
352*3420426cSMatt Spinler                                "property": { "name": "Value" }
353*3420426cSMatt Spinler                            },
354*3420426cSMatt Spinler                            {
355*3420426cSMatt Spinler                                "name": "pcie cable card temps",
356*3420426cSMatt Spinler                                "interface": "xyz.openbmc_project.Sensor.Value",
357*3420426cSMatt Spinler                                "property": { "name": "Value" }
358*3420426cSMatt Spinler                            },
359*3420426cSMatt Spinler                            {
360*3420426cSMatt Spinler                                "name": "ambient temp",
361*3420426cSMatt Spinler                                "interface": "xyz.openbmc_project.Sensor.Value",
362*3420426cSMatt Spinler                                "property": { "name": "Value" }
363*3420426cSMatt Spinler                            }
364*3420426cSMatt Spinler                        ],
365*3420426cSMatt Spinler                        "target": 18000
366*3420426cSMatt Spinler                    }
367*3420426cSMatt Spinler                ]
368*3420426cSMatt Spinler            }
369*3420426cSMatt Spinler        ]
370*3420426cSMatt Spinler    },
371*3420426cSMatt Spinler    {
372*3420426cSMatt Spinler        // Set a fan floor if an OCC isn't active
373*3420426cSMatt Spinler        "name": "Non-active OCCs",
374*3420426cSMatt Spinler        "groups": [
375*3420426cSMatt Spinler            {
376*3420426cSMatt Spinler                "name": "occ objects",
377*3420426cSMatt Spinler                "interface": "org.open_power.OCC.Status",
378*3420426cSMatt Spinler                "property": {
379*3420426cSMatt Spinler                    "name": "OccActive"
380*3420426cSMatt Spinler                }
381*3420426cSMatt Spinler            }
382*3420426cSMatt Spinler        ],
383*3420426cSMatt Spinler        "triggers": [
384*3420426cSMatt Spinler            {
385*3420426cSMatt Spinler                "class": "signal",
386*3420426cSMatt Spinler                "signal": "properties_changed"
387*3420426cSMatt Spinler            },
388*3420426cSMatt Spinler            {
389*3420426cSMatt Spinler                "class": "signal",
390*3420426cSMatt Spinler                "signal": "interfaces_added"
391*3420426cSMatt Spinler            },
392*3420426cSMatt Spinler            {
393*3420426cSMatt Spinler                "class": "init",
394*3420426cSMatt Spinler                "method": "get_properties"
395*3420426cSMatt Spinler            }
396*3420426cSMatt Spinler        ],
397*3420426cSMatt Spinler        "actions": [
398*3420426cSMatt Spinler            {
399*3420426cSMatt Spinler                "name": "count_state_floor",
400*3420426cSMatt Spinler                "count": 1,
401*3420426cSMatt Spinler                "state": false,
402*3420426cSMatt Spinler                "floor": 18000
403*3420426cSMatt Spinler            }
404*3420426cSMatt Spinler        ]
405*3420426cSMatt Spinler    },
406*3420426cSMatt Spinler    {
407*3420426cSMatt Spinler        // Set a raised fan floor when any temperature or altitude sensor is
408*3420426cSMatt Spinler        // nonfunctional
409*3420426cSMatt Spinler        "name": "Nonfunctional temperature sensors",
410*3420426cSMatt Spinler        "groups": [
411*3420426cSMatt Spinler            {
412*3420426cSMatt Spinler                "name": "proc0 core temps",
413*3420426cSMatt Spinler                "interface": "xyz.openbmc_project.State.Decorator.OperationalStatus",
414*3420426cSMatt Spinler                "property": { "name": "Functional" }
415*3420426cSMatt Spinler            },
416*3420426cSMatt Spinler            {
417*3420426cSMatt Spinler                "name": "proc1 core temps",
418*3420426cSMatt Spinler                "interface": "xyz.openbmc_project.State.Decorator.OperationalStatus",
419*3420426cSMatt Spinler                "property": { "name": "Functional" }
420*3420426cSMatt Spinler            },
421*3420426cSMatt Spinler            {
422*3420426cSMatt Spinler                "name": "proc2 core temps",
423*3420426cSMatt Spinler                "interface": "xyz.openbmc_project.State.Decorator.OperationalStatus",
424*3420426cSMatt Spinler                "property": { "name": "Functional" }
425*3420426cSMatt Spinler            },
426*3420426cSMatt Spinler            {
427*3420426cSMatt Spinler                "name": "proc3 core temps",
428*3420426cSMatt Spinler                "interface": "xyz.openbmc_project.State.Decorator.OperationalStatus",
429*3420426cSMatt Spinler                "property": { "name": "Functional" }
430*3420426cSMatt Spinler            },
431*3420426cSMatt Spinler            {
432*3420426cSMatt Spinler                "name": "proc0 ioring temp",
433*3420426cSMatt Spinler                "interface": "xyz.openbmc_project.State.Decorator.OperationalStatus",
434*3420426cSMatt Spinler                "property": { "name": "Functional" }
435*3420426cSMatt Spinler            },
436*3420426cSMatt Spinler            {
437*3420426cSMatt Spinler                "name": "proc1 ioring temp",
438*3420426cSMatt Spinler                "interface": "xyz.openbmc_project.State.Decorator.OperationalStatus",
439*3420426cSMatt Spinler                "property": { "name": "Functional" }
440*3420426cSMatt Spinler            },
441*3420426cSMatt Spinler            {
442*3420426cSMatt Spinler                "name": "proc2 ioring temp",
443*3420426cSMatt Spinler                "interface": "xyz.openbmc_project.State.Decorator.OperationalStatus",
444*3420426cSMatt Spinler                "property": { "name": "Functional" }
445*3420426cSMatt Spinler            },
446*3420426cSMatt Spinler            {
447*3420426cSMatt Spinler                "name": "proc3 ioring temp",
448*3420426cSMatt Spinler                "interface": "xyz.openbmc_project.State.Decorator.OperationalStatus",
449*3420426cSMatt Spinler                "property": { "name": "Functional" }
450*3420426cSMatt Spinler            },
451*3420426cSMatt Spinler            {
452*3420426cSMatt Spinler                "name": "dram temps",
453*3420426cSMatt Spinler                "interface": "xyz.openbmc_project.State.Decorator.OperationalStatus",
454*3420426cSMatt Spinler                "property": { "name": "Functional" }
455*3420426cSMatt Spinler            },
456*3420426cSMatt Spinler            {
457*3420426cSMatt Spinler                "name": "pmic temps",
458*3420426cSMatt Spinler                "interface": "xyz.openbmc_project.State.Decorator.OperationalStatus",
459*3420426cSMatt Spinler                "property": { "name": "Functional" }
460*3420426cSMatt Spinler            },
461*3420426cSMatt Spinler            {
462*3420426cSMatt Spinler                "name": "internal memory buffer temps",
463*3420426cSMatt Spinler                "interface": "xyz.openbmc_project.State.Decorator.OperationalStatus",
464*3420426cSMatt Spinler                "property": { "name": "Functional" }
465*3420426cSMatt Spinler            },
466*3420426cSMatt Spinler            {
467*3420426cSMatt Spinler                "name": "dram and external memory buffer temps",
468*3420426cSMatt Spinler                "interface": "xyz.openbmc_project.State.Decorator.OperationalStatus",
469*3420426cSMatt Spinler                "property": { "name": "Functional" }
470*3420426cSMatt Spinler            },
471*3420426cSMatt Spinler            {
472*3420426cSMatt Spinler                "name": "external memory buffer temps",
473*3420426cSMatt Spinler                "interface": "xyz.openbmc_project.State.Decorator.OperationalStatus",
474*3420426cSMatt Spinler                "property": { "name": "Functional" }
475*3420426cSMatt Spinler            },
476*3420426cSMatt Spinler            {
477*3420426cSMatt Spinler                "name": "vdd vrm temps",
478*3420426cSMatt Spinler                "interface": "xyz.openbmc_project.State.Decorator.OperationalStatus",
479*3420426cSMatt Spinler                "property": { "name": "Functional" }
480*3420426cSMatt Spinler            },
481*3420426cSMatt Spinler            {
482*3420426cSMatt Spinler                "name": "nvme temps",
483*3420426cSMatt Spinler                "interface": "xyz.openbmc_project.State.Decorator.OperationalStatus",
484*3420426cSMatt Spinler                "property": { "name": "Functional" }
485*3420426cSMatt Spinler            },
486*3420426cSMatt Spinler            {
487*3420426cSMatt Spinler                "name": "planar temps",
488*3420426cSMatt Spinler                "interface": "xyz.openbmc_project.State.Decorator.OperationalStatus",
489*3420426cSMatt Spinler                "property": { "name": "Functional" }
490*3420426cSMatt Spinler            },
491*3420426cSMatt Spinler            {
492*3420426cSMatt Spinler                "name": "flett temps",
493*3420426cSMatt Spinler                "interface": "xyz.openbmc_project.State.Decorator.OperationalStatus",
494*3420426cSMatt Spinler                "property": { "name": "Functional" }
495*3420426cSMatt Spinler            },
496*3420426cSMatt Spinler            {
497*3420426cSMatt Spinler                "name": "pcie cable card temps",
498*3420426cSMatt Spinler                "interface": "xyz.openbmc_project.State.Decorator.OperationalStatus",
499*3420426cSMatt Spinler                "property": { "name": "Functional" }
500*3420426cSMatt Spinler            },
501*3420426cSMatt Spinler            {
502*3420426cSMatt Spinler                "name": "ambient temp",
503*3420426cSMatt Spinler                "interface": "xyz.openbmc_project.State.Decorator.OperationalStatus",
504*3420426cSMatt Spinler                "property": { "name": "Functional" }
505*3420426cSMatt Spinler            },
506*3420426cSMatt Spinler            {
507*3420426cSMatt Spinler                "name": "altitude",
508*3420426cSMatt Spinler                "interface": "xyz.openbmc_project.State.Decorator.OperationalStatus",
509*3420426cSMatt Spinler                "property": { "name": "Functional" }
510*3420426cSMatt Spinler            }
511*3420426cSMatt Spinler        ],
512*3420426cSMatt Spinler        "triggers": [
513*3420426cSMatt Spinler            {
514*3420426cSMatt Spinler                "class": "signal",
515*3420426cSMatt Spinler                "signal": "properties_changed"
516*3420426cSMatt Spinler            },
517*3420426cSMatt Spinler            {
518*3420426cSMatt Spinler                "class": "signal",
519*3420426cSMatt Spinler                "signal": "interfaces_added"
520*3420426cSMatt Spinler            },
521*3420426cSMatt Spinler            {
522*3420426cSMatt Spinler                "class": "signal",
523*3420426cSMatt Spinler                "signal": "interfaces_removed"
524*3420426cSMatt Spinler            },
525*3420426cSMatt Spinler            {
526*3420426cSMatt Spinler                "class": "init",
527*3420426cSMatt Spinler                "method": "get_properties"
528*3420426cSMatt Spinler            }
529*3420426cSMatt Spinler        ],
530*3420426cSMatt Spinler        "actions": [
531*3420426cSMatt Spinler            {
532*3420426cSMatt Spinler                "name": "count_state_floor",
533*3420426cSMatt Spinler                "count": 1,
534*3420426cSMatt Spinler                "state": false,
535*3420426cSMatt Spinler                "floor": 18000
536*3420426cSMatt Spinler            }
537*3420426cSMatt Spinler        ]
538*3420426cSMatt Spinler    },
539*3420426cSMatt Spinler    {
540*3420426cSMatt Spinler        "name": "Set Proc 0 Core DVFS parameter",
541*3420426cSMatt Spinler        "groups": [
542*3420426cSMatt Spinler            {
543*3420426cSMatt Spinler                "name": "proc 0 core dvfs temp",
544*3420426cSMatt Spinler                "interface": "xyz.openbmc_project.Sensor.Value",
545*3420426cSMatt Spinler                "property": { "name": "Value" }
546*3420426cSMatt Spinler            }
547*3420426cSMatt Spinler        ],
548*3420426cSMatt Spinler        "triggers": [
549*3420426cSMatt Spinler            {
550*3420426cSMatt Spinler                "class": "init",
551*3420426cSMatt Spinler                "method": "get_properties"
552*3420426cSMatt Spinler            },
553*3420426cSMatt Spinler            {
554*3420426cSMatt Spinler                "class": "signal",
555*3420426cSMatt Spinler                "signal": "interfaces_added"
556*3420426cSMatt Spinler            },
557*3420426cSMatt Spinler            {
558*3420426cSMatt Spinler                "class": "signal",
559*3420426cSMatt Spinler                "signal": "properties_changed"
560*3420426cSMatt Spinler            }
561*3420426cSMatt Spinler        ],
562*3420426cSMatt Spinler        "actions": [
563*3420426cSMatt Spinler            {
564*3420426cSMatt Spinler                "name": "set_parameter_from_group_max",
565*3420426cSMatt Spinler                "parameter_name": "proc_0_core_dvfs_increase_temp",
566*3420426cSMatt Spinler                "modifier": {
567*3420426cSMatt Spinler                    "operator": "minus",
568*3420426cSMatt Spinler                    "value": 10
569*3420426cSMatt Spinler                }
570*3420426cSMatt Spinler            },
571*3420426cSMatt Spinler            {
572*3420426cSMatt Spinler                "name": "set_parameter_from_group_max",
573*3420426cSMatt Spinler                "parameter_name": "proc_0_core_dvfs_decrease_temp",
574*3420426cSMatt Spinler                "modifier": {
575*3420426cSMatt Spinler                    "operator": "minus",
576*3420426cSMatt Spinler                    "value": 13
577*3420426cSMatt Spinler                }
578*3420426cSMatt Spinler            }
579*3420426cSMatt Spinler        ]
580*3420426cSMatt Spinler    },
581*3420426cSMatt Spinler    {
582*3420426cSMatt Spinler        "name": "Set Proc 1 Core DVFS parameter",
583*3420426cSMatt Spinler        "groups": [
584*3420426cSMatt Spinler            {
585*3420426cSMatt Spinler                "name": "proc 1 core dvfs temp",
586*3420426cSMatt Spinler                "interface": "xyz.openbmc_project.Sensor.Value",
587*3420426cSMatt Spinler                "property": { "name": "Value" }
588*3420426cSMatt Spinler            }
589*3420426cSMatt Spinler        ],
590*3420426cSMatt Spinler        "triggers": [
591*3420426cSMatt Spinler            {
592*3420426cSMatt Spinler                "class": "init",
593*3420426cSMatt Spinler                "method": "get_properties"
594*3420426cSMatt Spinler            },
595*3420426cSMatt Spinler            {
596*3420426cSMatt Spinler                "class": "signal",
597*3420426cSMatt Spinler                "signal": "interfaces_added"
598*3420426cSMatt Spinler            },
599*3420426cSMatt Spinler            {
600*3420426cSMatt Spinler                "class": "signal",
601*3420426cSMatt Spinler                "signal": "properties_changed"
602*3420426cSMatt Spinler            }
603*3420426cSMatt Spinler        ],
604*3420426cSMatt Spinler        "actions": [
605*3420426cSMatt Spinler            {
606*3420426cSMatt Spinler                "name": "set_parameter_from_group_max",
607*3420426cSMatt Spinler                "parameter_name": "proc_1_core_dvfs_increase_temp",
608*3420426cSMatt Spinler                "modifier": {
609*3420426cSMatt Spinler                    "operator": "minus",
610*3420426cSMatt Spinler                    "value": 10
611*3420426cSMatt Spinler                }
612*3420426cSMatt Spinler            },
613*3420426cSMatt Spinler            {
614*3420426cSMatt Spinler                "name": "set_parameter_from_group_max",
615*3420426cSMatt Spinler                "parameter_name": "proc_1_core_dvfs_decrease_temp",
616*3420426cSMatt Spinler                "modifier": {
617*3420426cSMatt Spinler                    "operator": "minus",
618*3420426cSMatt Spinler                    "value": 13
619*3420426cSMatt Spinler                }
620*3420426cSMatt Spinler            }
621*3420426cSMatt Spinler        ]
622*3420426cSMatt Spinler    },
623*3420426cSMatt Spinler    {
624*3420426cSMatt Spinler        "name": "Set Proc 2 Core DVFS parameter",
625*3420426cSMatt Spinler        "groups": [
626*3420426cSMatt Spinler            {
627*3420426cSMatt Spinler                "name": "proc 2 core dvfs temp",
628*3420426cSMatt Spinler                "interface": "xyz.openbmc_project.Sensor.Value",
629*3420426cSMatt Spinler                "property": { "name": "Value" }
630*3420426cSMatt Spinler            }
631*3420426cSMatt Spinler        ],
632*3420426cSMatt Spinler        "triggers": [
633*3420426cSMatt Spinler            {
634*3420426cSMatt Spinler                "class": "init",
635*3420426cSMatt Spinler                "method": "get_properties"
636*3420426cSMatt Spinler            },
637*3420426cSMatt Spinler            {
638*3420426cSMatt Spinler                "class": "signal",
639*3420426cSMatt Spinler                "signal": "interfaces_added"
640*3420426cSMatt Spinler            },
641*3420426cSMatt Spinler            {
642*3420426cSMatt Spinler                "class": "signal",
643*3420426cSMatt Spinler                "signal": "properties_changed"
644*3420426cSMatt Spinler            }
645*3420426cSMatt Spinler        ],
646*3420426cSMatt Spinler        "actions": [
647*3420426cSMatt Spinler            {
648*3420426cSMatt Spinler                "name": "set_parameter_from_group_max",
649*3420426cSMatt Spinler                "parameter_name": "proc_2_core_dvfs_increase_temp",
650*3420426cSMatt Spinler                "modifier": {
651*3420426cSMatt Spinler                    "operator": "minus",
652*3420426cSMatt Spinler                    "value": 10
653*3420426cSMatt Spinler                }
654*3420426cSMatt Spinler            },
655*3420426cSMatt Spinler            {
656*3420426cSMatt Spinler                "name": "set_parameter_from_group_max",
657*3420426cSMatt Spinler                "parameter_name": "proc_2_core_dvfs_decrease_temp",
658*3420426cSMatt Spinler                "modifier": {
659*3420426cSMatt Spinler                    "operator": "minus",
660*3420426cSMatt Spinler                    "value": 13
661*3420426cSMatt Spinler                }
662*3420426cSMatt Spinler            }
663*3420426cSMatt Spinler        ]
664*3420426cSMatt Spinler    },
665*3420426cSMatt Spinler    {
666*3420426cSMatt Spinler        "name": "Set Proc 3 Core DVFS parameter",
667*3420426cSMatt Spinler        "groups": [
668*3420426cSMatt Spinler            {
669*3420426cSMatt Spinler                "name": "proc 3 core dvfs temp",
670*3420426cSMatt Spinler                "interface": "xyz.openbmc_project.Sensor.Value",
671*3420426cSMatt Spinler                "property": { "name": "Value" }
672*3420426cSMatt Spinler            }
673*3420426cSMatt Spinler        ],
674*3420426cSMatt Spinler        "triggers": [
675*3420426cSMatt Spinler            {
676*3420426cSMatt Spinler                "class": "init",
677*3420426cSMatt Spinler                "method": "get_properties"
678*3420426cSMatt Spinler            },
679*3420426cSMatt Spinler            {
680*3420426cSMatt Spinler                "class": "signal",
681*3420426cSMatt Spinler                "signal": "interfaces_added"
682*3420426cSMatt Spinler            },
683*3420426cSMatt Spinler            {
684*3420426cSMatt Spinler                "class": "signal",
685*3420426cSMatt Spinler                "signal": "properties_changed"
686*3420426cSMatt Spinler            }
687*3420426cSMatt Spinler        ],
688*3420426cSMatt Spinler        "actions": [
689*3420426cSMatt Spinler            {
690*3420426cSMatt Spinler                "name": "set_parameter_from_group_max",
691*3420426cSMatt Spinler                "parameter_name": "proc_3_core_dvfs_increase_temp",
692*3420426cSMatt Spinler                "modifier": {
693*3420426cSMatt Spinler                    "operator": "minus",
694*3420426cSMatt Spinler                    "value": 10
695*3420426cSMatt Spinler                }
696*3420426cSMatt Spinler            },
697*3420426cSMatt Spinler            {
698*3420426cSMatt Spinler                "name": "set_parameter_from_group_max",
699*3420426cSMatt Spinler                "parameter_name": "proc_3_core_dvfs_decrease_temp",
700*3420426cSMatt Spinler                "modifier": {
701*3420426cSMatt Spinler                    "operator": "minus",
702*3420426cSMatt Spinler                    "value": 13
703*3420426cSMatt Spinler                }
704*3420426cSMatt Spinler            }
705*3420426cSMatt Spinler        ]
706*3420426cSMatt Spinler    },
707*3420426cSMatt Spinler    {
708*3420426cSMatt Spinler        "name": "Set Proc 0 IO Ring DVFS parameter",
709*3420426cSMatt Spinler        "groups": [
710*3420426cSMatt Spinler            {
711*3420426cSMatt Spinler                "name": "proc 0 ioring dvfs temp",
712*3420426cSMatt Spinler                "interface": "xyz.openbmc_project.Sensor.Value",
713*3420426cSMatt Spinler                "property": { "name": "Value" }
714*3420426cSMatt Spinler            }
715*3420426cSMatt Spinler        ],
716*3420426cSMatt Spinler        "triggers": [
717*3420426cSMatt Spinler            {
718*3420426cSMatt Spinler                "class": "init",
719*3420426cSMatt Spinler                "method": "get_properties"
720*3420426cSMatt Spinler            },
721*3420426cSMatt Spinler            {
722*3420426cSMatt Spinler                "class": "signal",
723*3420426cSMatt Spinler                "signal": "interfaces_added"
724*3420426cSMatt Spinler            },
725*3420426cSMatt Spinler            {
726*3420426cSMatt Spinler                "class": "signal",
727*3420426cSMatt Spinler                "signal": "properties_changed"
728*3420426cSMatt Spinler            }
729*3420426cSMatt Spinler        ],
730*3420426cSMatt Spinler        "actions": [
731*3420426cSMatt Spinler            {
732*3420426cSMatt Spinler                "name": "set_parameter_from_group_max",
733*3420426cSMatt Spinler                "parameter_name": "proc_0_ioring_dvfs_increase_temp",
734*3420426cSMatt Spinler                "modifier": {
735*3420426cSMatt Spinler                    "operator": "minus",
736*3420426cSMatt Spinler                    "value": 10
737*3420426cSMatt Spinler                }
738*3420426cSMatt Spinler            },
739*3420426cSMatt Spinler            {
740*3420426cSMatt Spinler                "name": "set_parameter_from_group_max",
741*3420426cSMatt Spinler                "parameter_name": "proc_0_ioring_dvfs_decrease_temp",
742*3420426cSMatt Spinler                "modifier": {
743*3420426cSMatt Spinler                    "operator": "minus",
744*3420426cSMatt Spinler                    "value": 13
745*3420426cSMatt Spinler                }
746*3420426cSMatt Spinler            }
747*3420426cSMatt Spinler        ]
748*3420426cSMatt Spinler    },
749*3420426cSMatt Spinler    {
750*3420426cSMatt Spinler        "name": "Set Proc 1 IO Ring DVFS parameter",
751*3420426cSMatt Spinler        "groups": [
752*3420426cSMatt Spinler            {
753*3420426cSMatt Spinler                "name": "proc 1 ioring dvfs temp",
754*3420426cSMatt Spinler                "interface": "xyz.openbmc_project.Sensor.Value",
755*3420426cSMatt Spinler                "property": { "name": "Value" }
756*3420426cSMatt Spinler            }
757*3420426cSMatt Spinler        ],
758*3420426cSMatt Spinler        "triggers": [
759*3420426cSMatt Spinler            {
760*3420426cSMatt Spinler                "class": "init",
761*3420426cSMatt Spinler                "method": "get_properties"
762*3420426cSMatt Spinler            },
763*3420426cSMatt Spinler            {
764*3420426cSMatt Spinler                "class": "signal",
765*3420426cSMatt Spinler                "signal": "interfaces_added"
766*3420426cSMatt Spinler            },
767*3420426cSMatt Spinler            {
768*3420426cSMatt Spinler                "class": "signal",
769*3420426cSMatt Spinler                "signal": "properties_changed"
770*3420426cSMatt Spinler            }
771*3420426cSMatt Spinler        ],
772*3420426cSMatt Spinler        "actions": [
773*3420426cSMatt Spinler            {
774*3420426cSMatt Spinler                "name": "set_parameter_from_group_max",
775*3420426cSMatt Spinler                "parameter_name": "proc_1_ioring_dvfs_increase_temp",
776*3420426cSMatt Spinler                "modifier": {
777*3420426cSMatt Spinler                    "operator": "minus",
778*3420426cSMatt Spinler                    "value": 10
779*3420426cSMatt Spinler                }
780*3420426cSMatt Spinler            },
781*3420426cSMatt Spinler            {
782*3420426cSMatt Spinler                "name": "set_parameter_from_group_max",
783*3420426cSMatt Spinler                "parameter_name": "proc_1_ioring_dvfs_decrease_temp",
784*3420426cSMatt Spinler                "modifier": {
785*3420426cSMatt Spinler                    "operator": "minus",
786*3420426cSMatt Spinler                    "value": 13
787*3420426cSMatt Spinler                }
788*3420426cSMatt Spinler            }
789*3420426cSMatt Spinler        ]
790*3420426cSMatt Spinler    },
791*3420426cSMatt Spinler    {
792*3420426cSMatt Spinler        "name": "Set Proc 2 IO Ring DVFS parameter",
793*3420426cSMatt Spinler        "groups": [
794*3420426cSMatt Spinler            {
795*3420426cSMatt Spinler                "name": "proc 2 ioring dvfs temp",
796*3420426cSMatt Spinler                "interface": "xyz.openbmc_project.Sensor.Value",
797*3420426cSMatt Spinler                "property": { "name": "Value" }
798*3420426cSMatt Spinler            }
799*3420426cSMatt Spinler        ],
800*3420426cSMatt Spinler        "triggers": [
801*3420426cSMatt Spinler            {
802*3420426cSMatt Spinler                "class": "init",
803*3420426cSMatt Spinler                "method": "get_properties"
804*3420426cSMatt Spinler            },
805*3420426cSMatt Spinler            {
806*3420426cSMatt Spinler                "class": "signal",
807*3420426cSMatt Spinler                "signal": "interfaces_added"
808*3420426cSMatt Spinler            },
809*3420426cSMatt Spinler            {
810*3420426cSMatt Spinler                "class": "signal",
811*3420426cSMatt Spinler                "signal": "properties_changed"
812*3420426cSMatt Spinler            }
813*3420426cSMatt Spinler        ],
814*3420426cSMatt Spinler        "actions": [
815*3420426cSMatt Spinler            {
816*3420426cSMatt Spinler                "name": "set_parameter_from_group_max",
817*3420426cSMatt Spinler                "parameter_name": "proc_2_ioring_dvfs_increase_temp",
818*3420426cSMatt Spinler                "modifier": {
819*3420426cSMatt Spinler                    "operator": "minus",
820*3420426cSMatt Spinler                    "value": 10
821*3420426cSMatt Spinler                }
822*3420426cSMatt Spinler            },
823*3420426cSMatt Spinler            {
824*3420426cSMatt Spinler                "name": "set_parameter_from_group_max",
825*3420426cSMatt Spinler                "parameter_name": "proc_2_ioring_dvfs_decrease_temp",
826*3420426cSMatt Spinler                "modifier": {
827*3420426cSMatt Spinler                    "operator": "minus",
828*3420426cSMatt Spinler                    "value": 13
829*3420426cSMatt Spinler                }
830*3420426cSMatt Spinler            }
831*3420426cSMatt Spinler        ]
832*3420426cSMatt Spinler    },
833*3420426cSMatt Spinler    {
834*3420426cSMatt Spinler        "name": "Set Proc 3 IO Ring DVFS parameter",
835*3420426cSMatt Spinler        "groups": [
836*3420426cSMatt Spinler            {
837*3420426cSMatt Spinler                "name": "proc 3 ioring dvfs temp",
838*3420426cSMatt Spinler                "interface": "xyz.openbmc_project.Sensor.Value",
839*3420426cSMatt Spinler                "property": { "name": "Value" }
840*3420426cSMatt Spinler            }
841*3420426cSMatt Spinler        ],
842*3420426cSMatt Spinler        "triggers": [
843*3420426cSMatt Spinler            {
844*3420426cSMatt Spinler                "class": "init",
845*3420426cSMatt Spinler                "method": "get_properties"
846*3420426cSMatt Spinler            },
847*3420426cSMatt Spinler            {
848*3420426cSMatt Spinler                "class": "signal",
849*3420426cSMatt Spinler                "signal": "properties_changed"
850*3420426cSMatt Spinler            },
851*3420426cSMatt Spinler            {
852*3420426cSMatt Spinler                "class": "signal",
853*3420426cSMatt Spinler                "signal": "interfaces_added"
854*3420426cSMatt Spinler            }
855*3420426cSMatt Spinler        ],
856*3420426cSMatt Spinler        "actions": [
857*3420426cSMatt Spinler            {
858*3420426cSMatt Spinler                "name": "set_parameter_from_group_max",
859*3420426cSMatt Spinler                "parameter_name": "proc_3_ioring_dvfs_increase_temp",
860*3420426cSMatt Spinler                "modifier": {
861*3420426cSMatt Spinler                    "operator": "minus",
862*3420426cSMatt Spinler                    "value": 10
863*3420426cSMatt Spinler                }
864*3420426cSMatt Spinler            },
865*3420426cSMatt Spinler            {
866*3420426cSMatt Spinler                "name": "set_parameter_from_group_max",
867*3420426cSMatt Spinler                "parameter_name": "proc_3_ioring_dvfs_decrease_temp",
868*3420426cSMatt Spinler                "modifier": {
869*3420426cSMatt Spinler                    "operator": "minus",
870*3420426cSMatt Spinler                    "value": 13
871*3420426cSMatt Spinler                }
872*3420426cSMatt Spinler            }
873*3420426cSMatt Spinler        ]
874*3420426cSMatt Spinler    },
875*3420426cSMatt Spinler    {
876*3420426cSMatt Spinler        "name": "Set DRAM DVFS parameter",
877*3420426cSMatt Spinler        "groups": [
878*3420426cSMatt Spinler            {
879*3420426cSMatt Spinler                "name": "dram dvfs temp",
880*3420426cSMatt Spinler                "interface": "xyz.openbmc_project.Sensor.Value",
881*3420426cSMatt Spinler                "property": { "name": "Value" }
882*3420426cSMatt Spinler            }
883*3420426cSMatt Spinler        ],
884*3420426cSMatt Spinler        "triggers": [
885*3420426cSMatt Spinler            {
886*3420426cSMatt Spinler                "class": "init",
887*3420426cSMatt Spinler                "method": "get_properties"
888*3420426cSMatt Spinler            },
889*3420426cSMatt Spinler            {
890*3420426cSMatt Spinler                "class": "signal",
891*3420426cSMatt Spinler                "signal": "properties_changed"
892*3420426cSMatt Spinler            },
893*3420426cSMatt Spinler            {
894*3420426cSMatt Spinler                "class": "signal",
895*3420426cSMatt Spinler                "signal": "interfaces_added"
896*3420426cSMatt Spinler            }
897*3420426cSMatt Spinler        ],
898*3420426cSMatt Spinler        "actions": [
899*3420426cSMatt Spinler            {
900*3420426cSMatt Spinler                "name": "set_parameter_from_group_max",
901*3420426cSMatt Spinler                "parameter_name": "dram_dvfs_increase_temp",
902*3420426cSMatt Spinler                "modifier": {
903*3420426cSMatt Spinler                    "operator": "minus",
904*3420426cSMatt Spinler                    "value": 9
905*3420426cSMatt Spinler                }
906*3420426cSMatt Spinler            },
907*3420426cSMatt Spinler            {
908*3420426cSMatt Spinler                "name": "set_parameter_from_group_max",
909*3420426cSMatt Spinler                "parameter_name": "dram_dvfs_decrease_temp",
910*3420426cSMatt Spinler                "modifier": {
911*3420426cSMatt Spinler                    "operator": "minus",
912*3420426cSMatt Spinler                    "value": 12
913*3420426cSMatt Spinler                }
914*3420426cSMatt Spinler            }
915*3420426cSMatt Spinler        ]
916*3420426cSMatt Spinler    },
917*3420426cSMatt Spinler    {
918*3420426cSMatt Spinler        "name": "Set PMIC DVFS parameter",
919*3420426cSMatt Spinler        "groups": [
920*3420426cSMatt Spinler            {
921*3420426cSMatt Spinler                "name": "pmic dvfs temp",
922*3420426cSMatt Spinler                "interface": "xyz.openbmc_project.Sensor.Value",
923*3420426cSMatt Spinler                "property": { "name": "Value" }
924*3420426cSMatt Spinler            }
925*3420426cSMatt Spinler        ],
926*3420426cSMatt Spinler        "triggers": [
927*3420426cSMatt Spinler            {
928*3420426cSMatt Spinler                "class": "init",
929*3420426cSMatt Spinler                "method": "get_properties"
930*3420426cSMatt Spinler            },
931*3420426cSMatt Spinler            {
932*3420426cSMatt Spinler                "class": "signal",
933*3420426cSMatt Spinler                "signal": "properties_changed"
934*3420426cSMatt Spinler            },
935*3420426cSMatt Spinler            {
936*3420426cSMatt Spinler                "class": "signal",
937*3420426cSMatt Spinler                "signal": "interfaces_added"
938*3420426cSMatt Spinler            }
939*3420426cSMatt Spinler        ],
940*3420426cSMatt Spinler        "actions": [
941*3420426cSMatt Spinler            {
942*3420426cSMatt Spinler                "name": "set_parameter_from_group_max",
943*3420426cSMatt Spinler                "parameter_name": "pmic_dvfs_increase_temp",
944*3420426cSMatt Spinler                "modifier": {
945*3420426cSMatt Spinler                    "operator": "minus",
946*3420426cSMatt Spinler                    "value": 9
947*3420426cSMatt Spinler                }
948*3420426cSMatt Spinler            },
949*3420426cSMatt Spinler            {
950*3420426cSMatt Spinler                "name": "set_parameter_from_group_max",
951*3420426cSMatt Spinler                "parameter_name": "pmic_dvfs_decrease_temp",
952*3420426cSMatt Spinler                "modifier": {
953*3420426cSMatt Spinler                    "operator": "minus",
954*3420426cSMatt Spinler                    "value": 12
955*3420426cSMatt Spinler                }
956*3420426cSMatt Spinler            }
957*3420426cSMatt Spinler        ]
958*3420426cSMatt Spinler    },
959*3420426cSMatt Spinler    {
960*3420426cSMatt Spinler        "name": "Set internal memory buffer DVFS parameter",
961*3420426cSMatt Spinler        "groups": [
962*3420426cSMatt Spinler            {
963*3420426cSMatt Spinler                "name": "internal memory buffer dvfs temp",
964*3420426cSMatt Spinler                "interface": "xyz.openbmc_project.Sensor.Value",
965*3420426cSMatt Spinler                "property": { "name": "Value" }
966*3420426cSMatt Spinler            }
967*3420426cSMatt Spinler        ],
968*3420426cSMatt Spinler        "triggers": [
969*3420426cSMatt Spinler            {
970*3420426cSMatt Spinler                "class": "init",
971*3420426cSMatt Spinler                "method": "get_properties"
972*3420426cSMatt Spinler            },
973*3420426cSMatt Spinler            {
974*3420426cSMatt Spinler                "class": "signal",
975*3420426cSMatt Spinler                "signal": "properties_changed"
976*3420426cSMatt Spinler            },
977*3420426cSMatt Spinler            {
978*3420426cSMatt Spinler                "class": "signal",
979*3420426cSMatt Spinler                "signal": "interfaces_added"
980*3420426cSMatt Spinler            }
981*3420426cSMatt Spinler        ],
982*3420426cSMatt Spinler        "actions": [
983*3420426cSMatt Spinler            {
984*3420426cSMatt Spinler                "name": "set_parameter_from_group_max",
985*3420426cSMatt Spinler                "parameter_name": "intmb_dvfs_increase_temp",
986*3420426cSMatt Spinler                "modifier": {
987*3420426cSMatt Spinler                    "operator": "minus",
988*3420426cSMatt Spinler                    "value": 10
989*3420426cSMatt Spinler                }
990*3420426cSMatt Spinler            },
991*3420426cSMatt Spinler            {
992*3420426cSMatt Spinler                "name": "set_parameter_from_group_max",
993*3420426cSMatt Spinler                "parameter_name": "intmb_dvfs_decrease_temp",
994*3420426cSMatt Spinler                "modifier": {
995*3420426cSMatt Spinler                    "operator": "minus",
996*3420426cSMatt Spinler                    "value": 13
997*3420426cSMatt Spinler                }
998*3420426cSMatt Spinler            }
999*3420426cSMatt Spinler        ]
1000*3420426cSMatt Spinler    },
1001*3420426cSMatt Spinler    {
1002*3420426cSMatt Spinler        "name": "Set DRAM and external memory buffer DVFS parameter",
1003*3420426cSMatt Spinler        "groups": [
1004*3420426cSMatt Spinler            {
1005*3420426cSMatt Spinler                "name": "dram and external memory buffer dvfs temp",
1006*3420426cSMatt Spinler                "interface": "xyz.openbmc_project.Sensor.Value",
1007*3420426cSMatt Spinler                "property": { "name": "Value" }
1008*3420426cSMatt Spinler            }
1009*3420426cSMatt Spinler        ],
1010*3420426cSMatt Spinler        "triggers": [
1011*3420426cSMatt Spinler            {
1012*3420426cSMatt Spinler                "class": "init",
1013*3420426cSMatt Spinler                "method": "get_properties"
1014*3420426cSMatt Spinler            },
1015*3420426cSMatt Spinler            {
1016*3420426cSMatt Spinler                "class": "signal",
1017*3420426cSMatt Spinler                "signal": "properties_changed"
1018*3420426cSMatt Spinler            },
1019*3420426cSMatt Spinler            {
1020*3420426cSMatt Spinler                "class": "signal",
1021*3420426cSMatt Spinler                "signal": "interfaces_added"
1022*3420426cSMatt Spinler            }
1023*3420426cSMatt Spinler        ],
1024*3420426cSMatt Spinler        "actions": [
1025*3420426cSMatt Spinler            {
1026*3420426cSMatt Spinler                "name": "set_parameter_from_group_max",
1027*3420426cSMatt Spinler                "parameter_name": "dram_extmb_dvfs_increase_temp",
1028*3420426cSMatt Spinler                "modifier": {
1029*3420426cSMatt Spinler                    "operator": "minus",
1030*3420426cSMatt Spinler                    "value": 10
1031*3420426cSMatt Spinler                }
1032*3420426cSMatt Spinler            },
1033*3420426cSMatt Spinler            {
1034*3420426cSMatt Spinler                "name": "set_parameter_from_group_max",
1035*3420426cSMatt Spinler                "parameter_name": "dram_extmb_dvfs_decrease_temp",
1036*3420426cSMatt Spinler                "modifier": {
1037*3420426cSMatt Spinler                    "operator": "minus",
1038*3420426cSMatt Spinler                    "value": 13
1039*3420426cSMatt Spinler                }
1040*3420426cSMatt Spinler            }
1041*3420426cSMatt Spinler        ]
1042*3420426cSMatt Spinler    },
1043*3420426cSMatt Spinler    {
1044*3420426cSMatt Spinler        "name": "Set external memory buffer DVFS parameter",
1045*3420426cSMatt Spinler        "groups": [
1046*3420426cSMatt Spinler            {
1047*3420426cSMatt Spinler                "name": "external memory buffer dvfs temp",
1048*3420426cSMatt Spinler                "interface": "xyz.openbmc_project.Sensor.Value",
1049*3420426cSMatt Spinler                "property": { "name": "Value" }
1050*3420426cSMatt Spinler            }
1051*3420426cSMatt Spinler        ],
1052*3420426cSMatt Spinler        "triggers": [
1053*3420426cSMatt Spinler            {
1054*3420426cSMatt Spinler                "class": "init",
1055*3420426cSMatt Spinler                "method": "get_properties"
1056*3420426cSMatt Spinler            },
1057*3420426cSMatt Spinler            {
1058*3420426cSMatt Spinler                "class": "signal",
1059*3420426cSMatt Spinler                "signal": "properties_changed"
1060*3420426cSMatt Spinler            },
1061*3420426cSMatt Spinler            {
1062*3420426cSMatt Spinler                "class": "signal",
1063*3420426cSMatt Spinler                "signal": "interfaces_added"
1064*3420426cSMatt Spinler            }
1065*3420426cSMatt Spinler        ],
1066*3420426cSMatt Spinler        "actions": [
1067*3420426cSMatt Spinler            {
1068*3420426cSMatt Spinler                "name": "set_parameter_from_group_max",
1069*3420426cSMatt Spinler                "parameter_name": "extmb_dvfs_increase_temp",
1070*3420426cSMatt Spinler                "modifier": {
1071*3420426cSMatt Spinler                    "operator": "minus",
1072*3420426cSMatt Spinler                    "value": 10
1073*3420426cSMatt Spinler                }
1074*3420426cSMatt Spinler            },
1075*3420426cSMatt Spinler            {
1076*3420426cSMatt Spinler                "name": "set_parameter_from_group_max",
1077*3420426cSMatt Spinler                "parameter_name": "extmb_dvfs_decrease_temp",
1078*3420426cSMatt Spinler                "modifier": {
1079*3420426cSMatt Spinler                    "operator": "minus",
1080*3420426cSMatt Spinler                    "value": 13
1081*3420426cSMatt Spinler                }
1082*3420426cSMatt Spinler            }
1083*3420426cSMatt Spinler        ]
1084*3420426cSMatt Spinler    },
1085*3420426cSMatt Spinler    {
1086*3420426cSMatt Spinler        // Collect group temperatures each iteration the repeating timer expires
1087*3420426cSMatt Spinler        "name": "Fan control timer loop",
1088*3420426cSMatt Spinler        "groups": [
1089*3420426cSMatt Spinler            {
1090*3420426cSMatt Spinler                "name": "proc0 core temps",
1091*3420426cSMatt Spinler                "interface": "xyz.openbmc_project.Sensor.Value",
1092*3420426cSMatt Spinler                "property": { "name": "Value" }
1093*3420426cSMatt Spinler            },
1094*3420426cSMatt Spinler            {
1095*3420426cSMatt Spinler                "name": "proc1 core temps",
1096*3420426cSMatt Spinler                "interface": "xyz.openbmc_project.Sensor.Value",
1097*3420426cSMatt Spinler                "property": { "name": "Value" }
1098*3420426cSMatt Spinler            },
1099*3420426cSMatt Spinler            {
1100*3420426cSMatt Spinler                "name": "proc2 core temps",
1101*3420426cSMatt Spinler                "interface": "xyz.openbmc_project.Sensor.Value",
1102*3420426cSMatt Spinler                "property": { "name": "Value" }
1103*3420426cSMatt Spinler            },
1104*3420426cSMatt Spinler            {
1105*3420426cSMatt Spinler                "name": "proc3 core temps",
1106*3420426cSMatt Spinler                "interface": "xyz.openbmc_project.Sensor.Value",
1107*3420426cSMatt Spinler                "property": { "name": "Value" }
1108*3420426cSMatt Spinler            },
1109*3420426cSMatt Spinler            {
1110*3420426cSMatt Spinler                "name": "proc0 ioring temp",
1111*3420426cSMatt Spinler                "interface": "xyz.openbmc_project.Sensor.Value",
1112*3420426cSMatt Spinler                "property": { "name": "Value" }
1113*3420426cSMatt Spinler            },
1114*3420426cSMatt Spinler            {
1115*3420426cSMatt Spinler                "name": "proc1 ioring temp",
1116*3420426cSMatt Spinler                "interface": "xyz.openbmc_project.Sensor.Value",
1117*3420426cSMatt Spinler                "property": { "name": "Value" }
1118*3420426cSMatt Spinler            },
1119*3420426cSMatt Spinler            {
1120*3420426cSMatt Spinler                "name": "proc2 ioring temp",
1121*3420426cSMatt Spinler                "interface": "xyz.openbmc_project.Sensor.Value",
1122*3420426cSMatt Spinler                "property": { "name": "Value" }
1123*3420426cSMatt Spinler            },
1124*3420426cSMatt Spinler            {
1125*3420426cSMatt Spinler                "name": "proc3 ioring temp",
1126*3420426cSMatt Spinler                "interface": "xyz.openbmc_project.Sensor.Value",
1127*3420426cSMatt Spinler                "property": { "name": "Value" }
1128*3420426cSMatt Spinler            },
1129*3420426cSMatt Spinler            {
1130*3420426cSMatt Spinler                "name": "dram temps",
1131*3420426cSMatt Spinler                "interface": "xyz.openbmc_project.Sensor.Value",
1132*3420426cSMatt Spinler                "property": { "name": "Value" }
1133*3420426cSMatt Spinler            },
1134*3420426cSMatt Spinler            {
1135*3420426cSMatt Spinler                "name": "pmic temps",
1136*3420426cSMatt Spinler                "interface": "xyz.openbmc_project.Sensor.Value",
1137*3420426cSMatt Spinler                "property": { "name": "Value" }
1138*3420426cSMatt Spinler            },
1139*3420426cSMatt Spinler            {
1140*3420426cSMatt Spinler                "name": "internal memory buffer temps",
1141*3420426cSMatt Spinler                "interface": "xyz.openbmc_project.Sensor.Value",
1142*3420426cSMatt Spinler                "property": { "name": "Value" }
1143*3420426cSMatt Spinler            },
1144*3420426cSMatt Spinler            {
1145*3420426cSMatt Spinler                "name": "dram and external memory buffer temps",
1146*3420426cSMatt Spinler                "interface": "xyz.openbmc_project.Sensor.Value",
1147*3420426cSMatt Spinler                "property": { "name": "Value" }
1148*3420426cSMatt Spinler            },
1149*3420426cSMatt Spinler            {
1150*3420426cSMatt Spinler                "name": "external memory buffer temps",
1151*3420426cSMatt Spinler                "interface": "xyz.openbmc_project.Sensor.Value",
1152*3420426cSMatt Spinler                "property": { "name": "Value" }
1153*3420426cSMatt Spinler            },
1154*3420426cSMatt Spinler            {
1155*3420426cSMatt Spinler                "name": "vdd vrm temps",
1156*3420426cSMatt Spinler                "interface": "xyz.openbmc_project.Sensor.Value",
1157*3420426cSMatt Spinler                "property": { "name": "Value" }
1158*3420426cSMatt Spinler            },
1159*3420426cSMatt Spinler            {
1160*3420426cSMatt Spinler                "name": "nvme temps",
1161*3420426cSMatt Spinler                "interface": "xyz.openbmc_project.Sensor.Value",
1162*3420426cSMatt Spinler                "property": { "name": "Value" }
1163*3420426cSMatt Spinler            },
1164*3420426cSMatt Spinler            {
1165*3420426cSMatt Spinler                "name": "planar temps",
1166*3420426cSMatt Spinler                "interface": "xyz.openbmc_project.Sensor.Value",
1167*3420426cSMatt Spinler                "property": { "name": "Value" }
1168*3420426cSMatt Spinler            },
1169*3420426cSMatt Spinler            {
1170*3420426cSMatt Spinler                "name": "flett temps",
1171*3420426cSMatt Spinler                "interface": "xyz.openbmc_project.Sensor.Value",
1172*3420426cSMatt Spinler                "property": { "name": "Value" }
1173*3420426cSMatt Spinler            },
1174*3420426cSMatt Spinler            {
1175*3420426cSMatt Spinler                "name": "pcie cable card temps",
1176*3420426cSMatt Spinler                "interface": "xyz.openbmc_project.Sensor.Value",
1177*3420426cSMatt Spinler                "property": { "name": "Value" }
1178*3420426cSMatt Spinler            }
1179*3420426cSMatt Spinler        ],
1180*3420426cSMatt Spinler        "triggers": [
1181*3420426cSMatt Spinler            {
1182*3420426cSMatt Spinler                "class": "timer",
1183*3420426cSMatt Spinler                "type": "repeating",
1184*3420426cSMatt Spinler                "interval": 2000000,
1185*3420426cSMatt Spinler                "preload_groups": true
1186*3420426cSMatt Spinler            }
1187*3420426cSMatt Spinler        ],
1188*3420426cSMatt Spinler        "actions": [
1189*3420426cSMatt Spinler            {
1190*3420426cSMatt Spinler                "name": "set_net_increase_target",
1191*3420426cSMatt Spinler                "groups": [
1192*3420426cSMatt Spinler                    {
1193*3420426cSMatt Spinler                        "name": "proc0 core temps",
1194*3420426cSMatt Spinler                        "interface": "xyz.openbmc_project.Sensor.Value",
1195*3420426cSMatt Spinler                        "property": { "name": "Value" }
1196*3420426cSMatt Spinler                    }
1197*3420426cSMatt Spinler                ],
1198*3420426cSMatt Spinler                "state_parameter_name": "proc_0_core_dvfs_increase_temp",
1199*3420426cSMatt Spinler                "delta": 300
1200*3420426cSMatt Spinler            },
1201*3420426cSMatt Spinler            {
1202*3420426cSMatt Spinler                "name": "set_net_increase_target",
1203*3420426cSMatt Spinler                "groups": [
1204*3420426cSMatt Spinler                    {
1205*3420426cSMatt Spinler                        "name": "proc1 core temps",
1206*3420426cSMatt Spinler                        "interface": "xyz.openbmc_project.Sensor.Value",
1207*3420426cSMatt Spinler                        "property": { "name": "Value" }
1208*3420426cSMatt Spinler                    }
1209*3420426cSMatt Spinler                ],
1210*3420426cSMatt Spinler                "state_parameter_name": "proc_1_core_dvfs_increase_temp",
1211*3420426cSMatt Spinler                "delta": 300
1212*3420426cSMatt Spinler            },
1213*3420426cSMatt Spinler            {
1214*3420426cSMatt Spinler                "name": "set_net_increase_target",
1215*3420426cSMatt Spinler                "groups": [
1216*3420426cSMatt Spinler                    {
1217*3420426cSMatt Spinler                        "name": "proc2 core temps",
1218*3420426cSMatt Spinler                        "interface": "xyz.openbmc_project.Sensor.Value",
1219*3420426cSMatt Spinler                        "property": { "name": "Value" }
1220*3420426cSMatt Spinler                    }
1221*3420426cSMatt Spinler                ],
1222*3420426cSMatt Spinler                "state_parameter_name": "proc_2_core_dvfs_increase_temp",
1223*3420426cSMatt Spinler                "delta": 300
1224*3420426cSMatt Spinler            },
1225*3420426cSMatt Spinler            {
1226*3420426cSMatt Spinler                "name": "set_net_increase_target",
1227*3420426cSMatt Spinler                "groups": [
1228*3420426cSMatt Spinler                    {
1229*3420426cSMatt Spinler                        "name": "proc3 core temps",
1230*3420426cSMatt Spinler                        "interface": "xyz.openbmc_project.Sensor.Value",
1231*3420426cSMatt Spinler                        "property": { "name": "Value" }
1232*3420426cSMatt Spinler                    }
1233*3420426cSMatt Spinler                ],
1234*3420426cSMatt Spinler                "state_parameter_name": "proc_3_core_dvfs_increase_temp",
1235*3420426cSMatt Spinler                "delta": 300
1236*3420426cSMatt Spinler            },
1237*3420426cSMatt Spinler            {
1238*3420426cSMatt Spinler                "name": "set_net_increase_target",
1239*3420426cSMatt Spinler                "groups": [
1240*3420426cSMatt Spinler                    {
1241*3420426cSMatt Spinler                        "name": "proc0 ioring temp",
1242*3420426cSMatt Spinler                        "interface": "xyz.openbmc_project.Sensor.Value",
1243*3420426cSMatt Spinler                        "property": { "name": "Value" }
1244*3420426cSMatt Spinler                    }
1245*3420426cSMatt Spinler                ],
1246*3420426cSMatt Spinler                "state_parameter_name": "proc_0_ioring_dvfs_increase_temp",
1247*3420426cSMatt Spinler                "delta": 300
1248*3420426cSMatt Spinler            },
1249*3420426cSMatt Spinler            {
1250*3420426cSMatt Spinler                "name": "set_net_increase_target",
1251*3420426cSMatt Spinler                "groups": [
1252*3420426cSMatt Spinler                    {
1253*3420426cSMatt Spinler                        "name": "proc1 ioring temp",
1254*3420426cSMatt Spinler                        "interface": "xyz.openbmc_project.Sensor.Value",
1255*3420426cSMatt Spinler                        "property": { "name": "Value" }
1256*3420426cSMatt Spinler                    }
1257*3420426cSMatt Spinler                ],
1258*3420426cSMatt Spinler                "state_parameter_name": "proc_1_ioring_dvfs_increase_temp",
1259*3420426cSMatt Spinler                "delta": 300
1260*3420426cSMatt Spinler            },
1261*3420426cSMatt Spinler            {
1262*3420426cSMatt Spinler                "name": "set_net_increase_target",
1263*3420426cSMatt Spinler                "groups": [
1264*3420426cSMatt Spinler                    {
1265*3420426cSMatt Spinler                        "name": "proc2 ioring temp",
1266*3420426cSMatt Spinler                        "interface": "xyz.openbmc_project.Sensor.Value",
1267*3420426cSMatt Spinler                        "property": { "name": "Value" }
1268*3420426cSMatt Spinler                    }
1269*3420426cSMatt Spinler                ],
1270*3420426cSMatt Spinler                "state_parameter_name": "proc_2_ioring_dvfs_increase_temp",
1271*3420426cSMatt Spinler                "delta": 300
1272*3420426cSMatt Spinler            },
1273*3420426cSMatt Spinler            {
1274*3420426cSMatt Spinler                "name": "set_net_increase_target",
1275*3420426cSMatt Spinler                "groups": [
1276*3420426cSMatt Spinler                    {
1277*3420426cSMatt Spinler                        "name": "proc3 ioring temp",
1278*3420426cSMatt Spinler                        "interface": "xyz.openbmc_project.Sensor.Value",
1279*3420426cSMatt Spinler                        "property": { "name": "Value" }
1280*3420426cSMatt Spinler                    }
1281*3420426cSMatt Spinler                ],
1282*3420426cSMatt Spinler                "state_parameter_name": "proc_3_ioring_dvfs_increase_temp",
1283*3420426cSMatt Spinler                "delta": 300
1284*3420426cSMatt Spinler            },
1285*3420426cSMatt Spinler            {
1286*3420426cSMatt Spinler                "name": "set_net_increase_target",
1287*3420426cSMatt Spinler                "groups": [
1288*3420426cSMatt Spinler                    {
1289*3420426cSMatt Spinler                        "name": "dram temps",
1290*3420426cSMatt Spinler                        "interface": "xyz.openbmc_project.Sensor.Value",
1291*3420426cSMatt Spinler                        "property": { "name": "Value" }
1292*3420426cSMatt Spinler                    }
1293*3420426cSMatt Spinler                ],
1294*3420426cSMatt Spinler                "state_parameter_name": "dram_dvfs_increase_temp",
1295*3420426cSMatt Spinler                "delta": 100
1296*3420426cSMatt Spinler            },
1297*3420426cSMatt Spinler            {
1298*3420426cSMatt Spinler                "name": "set_net_increase_target",
1299*3420426cSMatt Spinler                "groups": [
1300*3420426cSMatt Spinler                    {
1301*3420426cSMatt Spinler                        "name": "pmic temps",
1302*3420426cSMatt Spinler                        "interface": "xyz.openbmc_project.Sensor.Value",
1303*3420426cSMatt Spinler                        "property": { "name": "Value" }
1304*3420426cSMatt Spinler                    }
1305*3420426cSMatt Spinler                ],
1306*3420426cSMatt Spinler                "state_parameter_name": "pmic_dvfs_increase_temp",
1307*3420426cSMatt Spinler                "delta": 100
1308*3420426cSMatt Spinler            },
1309*3420426cSMatt Spinler            {
1310*3420426cSMatt Spinler                "name": "set_net_increase_target",
1311*3420426cSMatt Spinler                "groups": [
1312*3420426cSMatt Spinler                    {
1313*3420426cSMatt Spinler                        "name": "internal memory buffer temps",
1314*3420426cSMatt Spinler                        "interface": "xyz.openbmc_project.Sensor.Value",
1315*3420426cSMatt Spinler                        "property": { "name": "Value" }
1316*3420426cSMatt Spinler                    }
1317*3420426cSMatt Spinler                ],
1318*3420426cSMatt Spinler                "state_parameter_name": "intmb_dvfs_increase_temp",
1319*3420426cSMatt Spinler                "delta": 100
1320*3420426cSMatt Spinler            },
1321*3420426cSMatt Spinler            {
1322*3420426cSMatt Spinler                "name": "set_net_increase_target",
1323*3420426cSMatt Spinler                "groups": [
1324*3420426cSMatt Spinler                    {
1325*3420426cSMatt Spinler                        "name": "dram and external memory buffer temps",
1326*3420426cSMatt Spinler                        "interface": "xyz.openbmc_project.Sensor.Value",
1327*3420426cSMatt Spinler                        "property": { "name": "Value" }
1328*3420426cSMatt Spinler                    }
1329*3420426cSMatt Spinler                ],
1330*3420426cSMatt Spinler                "state_parameter_name": "dram_extmb_dvfs_increase_temp",
1331*3420426cSMatt Spinler                "delta": 200
1332*3420426cSMatt Spinler            },
1333*3420426cSMatt Spinler            {
1334*3420426cSMatt Spinler                "name": "set_net_increase_target",
1335*3420426cSMatt Spinler                "groups": [
1336*3420426cSMatt Spinler                    {
1337*3420426cSMatt Spinler                        "name": "external memory buffer temps",
1338*3420426cSMatt Spinler                        "interface": "xyz.openbmc_project.Sensor.Value",
1339*3420426cSMatt Spinler                        "property": { "name": "Value" }
1340*3420426cSMatt Spinler                    }
1341*3420426cSMatt Spinler                ],
1342*3420426cSMatt Spinler                "state_parameter_name": "extmb_dvfs_increase_temp",
1343*3420426cSMatt Spinler                "delta": 200
1344*3420426cSMatt Spinler            },
1345*3420426cSMatt Spinler            {
1346*3420426cSMatt Spinler                "name": "set_net_increase_target",
1347*3420426cSMatt Spinler                "groups": [
1348*3420426cSMatt Spinler                    {
1349*3420426cSMatt Spinler                        "name": "vdd vrm temps",
1350*3420426cSMatt Spinler                        "interface": "xyz.openbmc_project.Sensor.Value",
1351*3420426cSMatt Spinler                        "property": { "name": "Value" }
1352*3420426cSMatt Spinler                    }
1353*3420426cSMatt Spinler                ],
1354*3420426cSMatt Spinler                "state": 82.0,
1355*3420426cSMatt Spinler                "delta": 300
1356*3420426cSMatt Spinler            },
1357*3420426cSMatt Spinler            {
1358*3420426cSMatt Spinler                "name": "set_net_increase_target",
1359*3420426cSMatt Spinler                "groups": [
1360*3420426cSMatt Spinler                    {
1361*3420426cSMatt Spinler                        "name": "nvme temps",
1362*3420426cSMatt Spinler                        "interface": "xyz.openbmc_project.Sensor.Value",
1363*3420426cSMatt Spinler                        "property": { "name": "Value" }
1364*3420426cSMatt Spinler                    }
1365*3420426cSMatt Spinler                ],
1366*3420426cSMatt Spinler                "state": 58.0,
1367*3420426cSMatt Spinler                "delta": 200
1368*3420426cSMatt Spinler            },
1369*3420426cSMatt Spinler            {
1370*3420426cSMatt Spinler                "name": "set_net_increase_target",
1371*3420426cSMatt Spinler                "groups": [
1372*3420426cSMatt Spinler                    {
1373*3420426cSMatt Spinler                        "name": "planar temps",
1374*3420426cSMatt Spinler                        "interface": "xyz.openbmc_project.Sensor.Value",
1375*3420426cSMatt Spinler                        "property": { "name": "Value" }
1376*3420426cSMatt Spinler                    }
1377*3420426cSMatt Spinler                ],
1378*3420426cSMatt Spinler                "state": 65.0,
1379*3420426cSMatt Spinler                "delta": 255
1380*3420426cSMatt Spinler            },
1381*3420426cSMatt Spinler            {
1382*3420426cSMatt Spinler                "name": "set_net_increase_target",
1383*3420426cSMatt Spinler                "groups": [
1384*3420426cSMatt Spinler                    {
1385*3420426cSMatt Spinler                        "name": "flett temps",
1386*3420426cSMatt Spinler                        "interface": "xyz.openbmc_project.Sensor.Value",
1387*3420426cSMatt Spinler                        "property": { "name": "Value" }
1388*3420426cSMatt Spinler                    }
1389*3420426cSMatt Spinler                ],
1390*3420426cSMatt Spinler                "state": 80.0,
1391*3420426cSMatt Spinler                "delta": 200
1392*3420426cSMatt Spinler            },
1393*3420426cSMatt Spinler            {
1394*3420426cSMatt Spinler                "name": "set_net_increase_target",
1395*3420426cSMatt Spinler                "groups": [
1396*3420426cSMatt Spinler                    {
1397*3420426cSMatt Spinler                        "name": "pcie cable card temps",
1398*3420426cSMatt Spinler                        "interface": "xyz.openbmc_project.Sensor.Value",
1399*3420426cSMatt Spinler                        "property": { "name": "Value" }
1400*3420426cSMatt Spinler                    }
1401*3420426cSMatt Spinler                ],
1402*3420426cSMatt Spinler                "state": 70.0,
1403*3420426cSMatt Spinler                "delta": 255
1404*3420426cSMatt Spinler            },
1405*3420426cSMatt Spinler            {
1406*3420426cSMatt Spinler                "name": "set_net_decrease_target",
1407*3420426cSMatt Spinler                "groups": [
1408*3420426cSMatt Spinler                    {
1409*3420426cSMatt Spinler                        "name": "proc0 core temps",
1410*3420426cSMatt Spinler                        "interface": "xyz.openbmc_project.Sensor.Value",
1411*3420426cSMatt Spinler                        "property": { "name": "Value" }
1412*3420426cSMatt Spinler                    }
1413*3420426cSMatt Spinler                ],
1414*3420426cSMatt Spinler                "state_parameter_name": "proc_0_core_dvfs_decrease_temp",
1415*3420426cSMatt Spinler                "delta": 50
1416*3420426cSMatt Spinler            },
1417*3420426cSMatt Spinler            {
1418*3420426cSMatt Spinler                "name": "set_net_decrease_target",
1419*3420426cSMatt Spinler                "groups": [
1420*3420426cSMatt Spinler                    {
1421*3420426cSMatt Spinler                        "name": "proc1 core temps",
1422*3420426cSMatt Spinler                        "interface": "xyz.openbmc_project.Sensor.Value",
1423*3420426cSMatt Spinler                        "property": { "name": "Value" }
1424*3420426cSMatt Spinler                    }
1425*3420426cSMatt Spinler                ],
1426*3420426cSMatt Spinler                "state_parameter_name": "proc_1_core_dvfs_decrease_temp",
1427*3420426cSMatt Spinler                "delta": 50
1428*3420426cSMatt Spinler            },
1429*3420426cSMatt Spinler            {
1430*3420426cSMatt Spinler                "name": "set_net_decrease_target",
1431*3420426cSMatt Spinler                "groups": [
1432*3420426cSMatt Spinler                    {
1433*3420426cSMatt Spinler                        "name": "proc2 core temps",
1434*3420426cSMatt Spinler                        "interface": "xyz.openbmc_project.Sensor.Value",
1435*3420426cSMatt Spinler                        "property": { "name": "Value" }
1436*3420426cSMatt Spinler                    }
1437*3420426cSMatt Spinler                ],
1438*3420426cSMatt Spinler                "state_parameter_name": "proc_2_core_dvfs_decrease_temp",
1439*3420426cSMatt Spinler                "delta": 50
1440*3420426cSMatt Spinler            },
1441*3420426cSMatt Spinler            {
1442*3420426cSMatt Spinler                "name": "set_net_decrease_target",
1443*3420426cSMatt Spinler                "groups": [
1444*3420426cSMatt Spinler                    {
1445*3420426cSMatt Spinler                        "name": "proc3 core temps",
1446*3420426cSMatt Spinler                        "interface": "xyz.openbmc_project.Sensor.Value",
1447*3420426cSMatt Spinler                        "property": { "name": "Value" }
1448*3420426cSMatt Spinler                    }
1449*3420426cSMatt Spinler                ],
1450*3420426cSMatt Spinler                "state_parameter_name": "proc_3_core_dvfs_decrease_temp",
1451*3420426cSMatt Spinler                "delta": 50
1452*3420426cSMatt Spinler            },
1453*3420426cSMatt Spinler            {
1454*3420426cSMatt Spinler                "name": "set_net_decrease_target",
1455*3420426cSMatt Spinler                "groups": [
1456*3420426cSMatt Spinler                    {
1457*3420426cSMatt Spinler                        "name": "proc0 ioring temp",
1458*3420426cSMatt Spinler                        "interface": "xyz.openbmc_project.Sensor.Value",
1459*3420426cSMatt Spinler                        "property": { "name": "Value" }
1460*3420426cSMatt Spinler                    }
1461*3420426cSMatt Spinler                ],
1462*3420426cSMatt Spinler                "state_parameter_name": "proc_0_ioring_dvfs_decrease_temp",
1463*3420426cSMatt Spinler                "delta": 50
1464*3420426cSMatt Spinler            },
1465*3420426cSMatt Spinler            {
1466*3420426cSMatt Spinler                "name": "set_net_decrease_target",
1467*3420426cSMatt Spinler                "groups": [
1468*3420426cSMatt Spinler                    {
1469*3420426cSMatt Spinler                        "name": "proc1 ioring temp",
1470*3420426cSMatt Spinler                        "interface": "xyz.openbmc_project.Sensor.Value",
1471*3420426cSMatt Spinler                        "property": { "name": "Value" }
1472*3420426cSMatt Spinler                    }
1473*3420426cSMatt Spinler                ],
1474*3420426cSMatt Spinler                "state_parameter_name": "proc_1_ioring_dvfs_decrease_temp",
1475*3420426cSMatt Spinler                "delta": 50
1476*3420426cSMatt Spinler            },
1477*3420426cSMatt Spinler            {
1478*3420426cSMatt Spinler                "name": "set_net_decrease_target",
1479*3420426cSMatt Spinler                "groups": [
1480*3420426cSMatt Spinler                    {
1481*3420426cSMatt Spinler                        "name": "proc2 ioring temp",
1482*3420426cSMatt Spinler                        "interface": "xyz.openbmc_project.Sensor.Value",
1483*3420426cSMatt Spinler                        "property": { "name": "Value" }
1484*3420426cSMatt Spinler                    }
1485*3420426cSMatt Spinler                ],
1486*3420426cSMatt Spinler                "state_parameter_name": "proc_2_ioring_dvfs_decrease_temp",
1487*3420426cSMatt Spinler                "delta": 50
1488*3420426cSMatt Spinler            },
1489*3420426cSMatt Spinler            {
1490*3420426cSMatt Spinler                "name": "set_net_decrease_target",
1491*3420426cSMatt Spinler                "groups": [
1492*3420426cSMatt Spinler                    {
1493*3420426cSMatt Spinler                        "name": "proc3 ioring temp",
1494*3420426cSMatt Spinler                        "interface": "xyz.openbmc_project.Sensor.Value",
1495*3420426cSMatt Spinler                        "property": { "name": "Value" }
1496*3420426cSMatt Spinler                    }
1497*3420426cSMatt Spinler                ],
1498*3420426cSMatt Spinler                "state_parameter_name": "proc_3_ioring_dvfs_decrease_temp",
1499*3420426cSMatt Spinler                "delta": 50
1500*3420426cSMatt Spinler            },
1501*3420426cSMatt Spinler            {
1502*3420426cSMatt Spinler                "name": "set_net_decrease_target",
1503*3420426cSMatt Spinler                "groups": [
1504*3420426cSMatt Spinler                    {
1505*3420426cSMatt Spinler                        "name": "dram temps",
1506*3420426cSMatt Spinler                        "interface": "xyz.openbmc_project.Sensor.Value",
1507*3420426cSMatt Spinler                        "property": { "name": "Value" }
1508*3420426cSMatt Spinler                    }
1509*3420426cSMatt Spinler                ],
1510*3420426cSMatt Spinler                "state_parameter_name": "dram_dvfs_decrease_temp",
1511*3420426cSMatt Spinler                "delta": 40
1512*3420426cSMatt Spinler            },
1513*3420426cSMatt Spinler            {
1514*3420426cSMatt Spinler                "name": "set_net_decrease_target",
1515*3420426cSMatt Spinler                "groups": [
1516*3420426cSMatt Spinler                    {
1517*3420426cSMatt Spinler                        "name": "pmic temps",
1518*3420426cSMatt Spinler                        "interface": "xyz.openbmc_project.Sensor.Value",
1519*3420426cSMatt Spinler                        "property": { "name": "Value" }
1520*3420426cSMatt Spinler                    }
1521*3420426cSMatt Spinler                ],
1522*3420426cSMatt Spinler                "state_parameter_name": "pmic_dvfs_decrease_temp",
1523*3420426cSMatt Spinler                "delta": 40
1524*3420426cSMatt Spinler            },
1525*3420426cSMatt Spinler            {
1526*3420426cSMatt Spinler                "name": "set_net_decrease_target",
1527*3420426cSMatt Spinler                "groups": [
1528*3420426cSMatt Spinler                    {
1529*3420426cSMatt Spinler                        "name": "internal memory buffer temps",
1530*3420426cSMatt Spinler                        "interface": "xyz.openbmc_project.Sensor.Value",
1531*3420426cSMatt Spinler                        "property": { "name": "Value" }
1532*3420426cSMatt Spinler                    }
1533*3420426cSMatt Spinler                ],
1534*3420426cSMatt Spinler                "state_parameter_name": "intmb_dvfs_decrease_temp",
1535*3420426cSMatt Spinler                "delta": 40
1536*3420426cSMatt Spinler            },
1537*3420426cSMatt Spinler            {
1538*3420426cSMatt Spinler                "name": "set_net_decrease_target",
1539*3420426cSMatt Spinler                "groups": [
1540*3420426cSMatt Spinler                    {
1541*3420426cSMatt Spinler                        "name": "dram and external memory buffer temps",
1542*3420426cSMatt Spinler                        "interface": "xyz.openbmc_project.Sensor.Value",
1543*3420426cSMatt Spinler                        "property": { "name": "Value" }
1544*3420426cSMatt Spinler                    }
1545*3420426cSMatt Spinler                ],
1546*3420426cSMatt Spinler                "state_parameter_name": "dram_extmb_dvfs_decrease_temp",
1547*3420426cSMatt Spinler                "delta": 40
1548*3420426cSMatt Spinler            },
1549*3420426cSMatt Spinler            {
1550*3420426cSMatt Spinler                "name": "set_net_decrease_target",
1551*3420426cSMatt Spinler                "groups": [
1552*3420426cSMatt Spinler                    {
1553*3420426cSMatt Spinler                        "name": "external memory buffer temps",
1554*3420426cSMatt Spinler                        "interface": "xyz.openbmc_project.Sensor.Value",
1555*3420426cSMatt Spinler                        "property": { "name": "Value" }
1556*3420426cSMatt Spinler                    }
1557*3420426cSMatt Spinler                ],
1558*3420426cSMatt Spinler                "state_parameter_name": "extmb_dvfs_decrease_temp",
1559*3420426cSMatt Spinler                "delta": 40
1560*3420426cSMatt Spinler            },
1561*3420426cSMatt Spinler            {
1562*3420426cSMatt Spinler                "name": "set_net_decrease_target",
1563*3420426cSMatt Spinler                "groups": [
1564*3420426cSMatt Spinler                    {
1565*3420426cSMatt Spinler                        "name": "vdd vrm temps",
1566*3420426cSMatt Spinler                        "interface": "xyz.openbmc_project.Sensor.Value",
1567*3420426cSMatt Spinler                        "property": { "name": "Value" }
1568*3420426cSMatt Spinler                    }
1569*3420426cSMatt Spinler                ],
1570*3420426cSMatt Spinler                "state": 79.0,
1571*3420426cSMatt Spinler                "delta": 30
1572*3420426cSMatt Spinler            },
1573*3420426cSMatt Spinler            {
1574*3420426cSMatt Spinler                "name": "set_net_decrease_target",
1575*3420426cSMatt Spinler                "groups": [
1576*3420426cSMatt Spinler                    {
1577*3420426cSMatt Spinler                        "name": "nvme temps",
1578*3420426cSMatt Spinler                        "interface": "xyz.openbmc_project.Sensor.Value",
1579*3420426cSMatt Spinler                        "property": { "name": "Value" }
1580*3420426cSMatt Spinler                    }
1581*3420426cSMatt Spinler                ],
1582*3420426cSMatt Spinler                "state": 55.0,
1583*3420426cSMatt Spinler                "delta": 40
1584*3420426cSMatt Spinler            },
1585*3420426cSMatt Spinler            {
1586*3420426cSMatt Spinler                "name": "set_net_decrease_target",
1587*3420426cSMatt Spinler                "groups": [
1588*3420426cSMatt Spinler                    {
1589*3420426cSMatt Spinler                        "name": "planar temps",
1590*3420426cSMatt Spinler                        "interface": "xyz.openbmc_project.Sensor.Value",
1591*3420426cSMatt Spinler                        "property": { "name": "Value" }
1592*3420426cSMatt Spinler                    }
1593*3420426cSMatt Spinler                ],
1594*3420426cSMatt Spinler                "state": 60.0,
1595*3420426cSMatt Spinler                "delta": 80
1596*3420426cSMatt Spinler            },
1597*3420426cSMatt Spinler            {
1598*3420426cSMatt Spinler                "name": "set_net_decrease_target",
1599*3420426cSMatt Spinler                "groups": [
1600*3420426cSMatt Spinler                    {
1601*3420426cSMatt Spinler                        "name": "flett temps",
1602*3420426cSMatt Spinler                        "interface": "xyz.openbmc_project.Sensor.Value",
1603*3420426cSMatt Spinler                        "property": { "name": "Value" }
1604*3420426cSMatt Spinler                    }
1605*3420426cSMatt Spinler                ],
1606*3420426cSMatt Spinler                "state": 75.0,
1607*3420426cSMatt Spinler                "delta": 80
1608*3420426cSMatt Spinler            },
1609*3420426cSMatt Spinler            {
1610*3420426cSMatt Spinler                "name": "set_net_decrease_target",
1611*3420426cSMatt Spinler                "groups": [
1612*3420426cSMatt Spinler                    {
1613*3420426cSMatt Spinler                        "name": "pcie cable card temps",
1614*3420426cSMatt Spinler                        "interface": "xyz.openbmc_project.Sensor.Value",
1615*3420426cSMatt Spinler                        "property": { "name": "Value" }
1616*3420426cSMatt Spinler                    }
1617*3420426cSMatt Spinler                ],
1618*3420426cSMatt Spinler                "state": 65.0,
1619*3420426cSMatt Spinler                "delta": 80
1620*3420426cSMatt Spinler            }
1621*3420426cSMatt Spinler        ]
1622*3420426cSMatt Spinler    },
1623*3420426cSMatt Spinler    {
1624*3420426cSMatt Spinler        // Remove NVMe temperature objects from cache when they are removed from
1625*3420426cSMatt Spinler        // dbus. There's no need to react to their removal.
1626*3420426cSMatt Spinler        "name": "remove nvme objects",
1627*3420426cSMatt Spinler        "groups": [
1628*3420426cSMatt Spinler            {
1629*3420426cSMatt Spinler                "name": "nvme temps",
1630*3420426cSMatt Spinler                "interface": "xyz.openbmc_project.Sensor.Value",
1631*3420426cSMatt Spinler                "property": { "name": "Value" }
1632*3420426cSMatt Spinler            },
1633*3420426cSMatt Spinler            {
1634*3420426cSMatt Spinler                "name": "nvme temps",
1635*3420426cSMatt Spinler                "interface": "xyz.openbmc_project.State.Decorator.OperationalStatus",
1636*3420426cSMatt Spinler                "property": { "name": "Functional" }
1637*3420426cSMatt Spinler            }
1638*3420426cSMatt Spinler        ],
1639*3420426cSMatt Spinler        "triggers": [
1640*3420426cSMatt Spinler            {
1641*3420426cSMatt Spinler                "class": "signal",
1642*3420426cSMatt Spinler                "signal": "interfaces_removed"
1643*3420426cSMatt Spinler            }
1644*3420426cSMatt Spinler        ]
1645*3420426cSMatt Spinler    },
1646*3420426cSMatt Spinler    {
1647*3420426cSMatt Spinler        "name": "set pcie floor index",
1648*3420426cSMatt Spinler        "groups": [
1649*3420426cSMatt Spinler            {
1650*3420426cSMatt Spinler                "name": "pcie slots",
1651*3420426cSMatt Spinler                "interface": "xyz.openbmc_project.State.Decorator.PowerState",
1652*3420426cSMatt Spinler                "property": {
1653*3420426cSMatt Spinler                    "name": "PowerState"
1654*3420426cSMatt Spinler                }
1655*3420426cSMatt Spinler            },
1656*3420426cSMatt Spinler            {
1657*3420426cSMatt Spinler                "name": "pcie cards",
1658*3420426cSMatt Spinler                "interface": "xyz.openbmc_project.Inventory.Item.PCIeDevice",
1659*3420426cSMatt Spinler                "property": {
1660*3420426cSMatt Spinler                    "name": "Function0DeviceId"
1661*3420426cSMatt Spinler                }
1662*3420426cSMatt Spinler            },
1663*3420426cSMatt Spinler            {
1664*3420426cSMatt Spinler                "name": "pcie cards",
1665*3420426cSMatt Spinler                "interface": "xyz.openbmc_project.Inventory.Item.PCIeDevice",
1666*3420426cSMatt Spinler                "property": {
1667*3420426cSMatt Spinler                    "name": "Function0VendorId"
1668*3420426cSMatt Spinler                }
1669*3420426cSMatt Spinler            },
1670*3420426cSMatt Spinler            {
1671*3420426cSMatt Spinler                "name": "pcie cards",
1672*3420426cSMatt Spinler                "interface": "xyz.openbmc_project.Inventory.Item.PCIeDevice",
1673*3420426cSMatt Spinler                "property": {
1674*3420426cSMatt Spinler                    "name": "Function0SubsystemId"
1675*3420426cSMatt Spinler                }
1676*3420426cSMatt Spinler            },
1677*3420426cSMatt Spinler            {
1678*3420426cSMatt Spinler                "name": "pcie cards",
1679*3420426cSMatt Spinler                "interface": "xyz.openbmc_project.Inventory.Item.PCIeDevice",
1680*3420426cSMatt Spinler                "property": {
1681*3420426cSMatt Spinler                    "name": "Function0SubsystemVendorId"
1682*3420426cSMatt Spinler                }
1683*3420426cSMatt Spinler            }
1684*3420426cSMatt Spinler        ],
1685*3420426cSMatt Spinler        "triggers": [
1686*3420426cSMatt Spinler            {
1687*3420426cSMatt Spinler                "class": "init",
1688*3420426cSMatt Spinler                "method": "get_properties"
1689*3420426cSMatt Spinler            },
1690*3420426cSMatt Spinler            {
1691*3420426cSMatt Spinler                "class": "signal",
1692*3420426cSMatt Spinler                "signal": "properties_changed"
1693*3420426cSMatt Spinler            },
1694*3420426cSMatt Spinler            {
1695*3420426cSMatt Spinler                "class": "signal",
1696*3420426cSMatt Spinler                "signal": "interfaces_added"
1697*3420426cSMatt Spinler            }
1698*3420426cSMatt Spinler        ],
1699*3420426cSMatt Spinler        "actions": [
1700*3420426cSMatt Spinler            {
1701*3420426cSMatt Spinler                "name": "pcie_card_floors",
1702*3420426cSMatt Spinler                "use_config_specific_files": true,
1703*3420426cSMatt Spinler                "settle_time": 2
1704*3420426cSMatt Spinler            }
1705*3420426cSMatt Spinler        ]
1706*3420426cSMatt Spinler    },
1707*3420426cSMatt Spinler    {
1708*3420426cSMatt Spinler        "name": "Set altitude offset parameter",
1709*3420426cSMatt Spinler        "groups": [
1710*3420426cSMatt Spinler            {
1711*3420426cSMatt Spinler                "name": "altitude",
1712*3420426cSMatt Spinler                "interface": "xyz.openbmc_project.Sensor.Value",
1713*3420426cSMatt Spinler                "property": { "name": "Value" }
1714*3420426cSMatt Spinler            }
1715*3420426cSMatt Spinler        ],
1716*3420426cSMatt Spinler        "triggers": [
1717*3420426cSMatt Spinler            {
1718*3420426cSMatt Spinler                "class": "init",
1719*3420426cSMatt Spinler                "method": "get_properties"
1720*3420426cSMatt Spinler            },
1721*3420426cSMatt Spinler            {
1722*3420426cSMatt Spinler                "class": "signal",
1723*3420426cSMatt Spinler                "signal": "interfaces_added"
1724*3420426cSMatt Spinler            },
1725*3420426cSMatt Spinler            {
1726*3420426cSMatt Spinler                // Refresh altitude every 24hrs
1727*3420426cSMatt Spinler                "class": "timer",
1728*3420426cSMatt Spinler                "type": "repeating",
1729*3420426cSMatt Spinler                "interval": 86400000000,
1730*3420426cSMatt Spinler                "preload_groups": true
1731*3420426cSMatt Spinler            }
1732*3420426cSMatt Spinler        ],
1733*3420426cSMatt Spinler        "actions": [
1734*3420426cSMatt Spinler            {
1735*3420426cSMatt Spinler                "name": "set_parameter_from_group_max",
1736*3420426cSMatt Spinler                "parameter_name": "ambient_20_altitude_offset",
1737*3420426cSMatt Spinler                "modifier": {
1738*3420426cSMatt Spinler                    "operator": "less_than",
1739*3420426cSMatt Spinler                    "default_value": 10000,
1740*3420426cSMatt Spinler                    "value": [
1741*3420426cSMatt Spinler                        { "arg_value": 500, "parameter_value": 0 },
1742*3420426cSMatt Spinler                        { "arg_value": 1000, "parameter_value": 700 },
1743*3420426cSMatt Spinler                        { "arg_value": 1500, "parameter_value": 1600 },
1744*3420426cSMatt Spinler                        { "arg_value": 2000, "parameter_value": 2300 },
1745*3420426cSMatt Spinler                        { "arg_value": 2500, "parameter_value": 3200 },
1746*3420426cSMatt Spinler                        { "arg_value": 3300, "parameter_value": 4000 }
1747*3420426cSMatt Spinler                    ]
1748*3420426cSMatt Spinler                }
1749*3420426cSMatt Spinler            },
1750*3420426cSMatt Spinler            {
1751*3420426cSMatt Spinler                "name": "set_parameter_from_group_max",
1752*3420426cSMatt Spinler                "parameter_name": "ambient_25_altitude_offset",
1753*3420426cSMatt Spinler                "modifier": {
1754*3420426cSMatt Spinler                    "operator": "less_than",
1755*3420426cSMatt Spinler                    "default_value": 10000,
1756*3420426cSMatt Spinler                    "value": [
1757*3420426cSMatt Spinler                        { "arg_value": 500, "parameter_value": 0 },
1758*3420426cSMatt Spinler                        { "arg_value": 1000, "parameter_value": 1000 },
1759*3420426cSMatt Spinler                        { "arg_value": 1500, "parameter_value": 2100 },
1760*3420426cSMatt Spinler                        { "arg_value": 2000, "parameter_value": 3100 },
1761*3420426cSMatt Spinler                        { "arg_value": 2500, "parameter_value": 4100 },
1762*3420426cSMatt Spinler                        { "arg_value": 3300, "parameter_value": 4900 }
1763*3420426cSMatt Spinler                    ]
1764*3420426cSMatt Spinler                }
1765*3420426cSMatt Spinler            },
1766*3420426cSMatt Spinler            {
1767*3420426cSMatt Spinler                "name": "set_parameter_from_group_max",
1768*3420426cSMatt Spinler                "parameter_name": "ambient_30_altitude_offset",
1769*3420426cSMatt Spinler                "modifier": {
1770*3420426cSMatt Spinler                    "operator": "less_than",
1771*3420426cSMatt Spinler                    "default_value": 10000,
1772*3420426cSMatt Spinler                    "value": [
1773*3420426cSMatt Spinler                        { "arg_value": 500, "parameter_value": 0 },
1774*3420426cSMatt Spinler                        { "arg_value": 1000, "parameter_value": 1000 },
1775*3420426cSMatt Spinler                        { "arg_value": 1500, "parameter_value": 2100 },
1776*3420426cSMatt Spinler                        { "arg_value": 2000, "parameter_value": 3200 },
1777*3420426cSMatt Spinler                        { "arg_value": 2500, "parameter_value": 4000 },
1778*3420426cSMatt Spinler                        { "arg_value": 3300, "parameter_value": 4800 }
1779*3420426cSMatt Spinler                    ]
1780*3420426cSMatt Spinler                }
1781*3420426cSMatt Spinler            },
1782*3420426cSMatt Spinler            {
1783*3420426cSMatt Spinler                "name": "set_parameter_from_group_max",
1784*3420426cSMatt Spinler                "parameter_name": "ambient_35_altitude_offset",
1785*3420426cSMatt Spinler                "modifier": {
1786*3420426cSMatt Spinler                    "operator": "less_than",
1787*3420426cSMatt Spinler                    "default_value": 10000,
1788*3420426cSMatt Spinler                    "value": [
1789*3420426cSMatt Spinler                        { "arg_value": 500, "parameter_value": 0 },
1790*3420426cSMatt Spinler                        { "arg_value": 1000, "parameter_value": 900 },
1791*3420426cSMatt Spinler                        { "arg_value": 1500, "parameter_value": 1700 },
1792*3420426cSMatt Spinler                        { "arg_value": 2000, "parameter_value": 2500 },
1793*3420426cSMatt Spinler                        { "arg_value": 2500, "parameter_value": 3400 },
1794*3420426cSMatt Spinler                        { "arg_value": 3300, "parameter_value": 4200 }
1795*3420426cSMatt Spinler                    ]
1796*3420426cSMatt Spinler                }
1797*3420426cSMatt Spinler            },
1798*3420426cSMatt Spinler            {
1799*3420426cSMatt Spinler                "name": "set_parameter_from_group_max",
1800*3420426cSMatt Spinler                "parameter_name": "ambient_40_altitude_offset",
1801*3420426cSMatt Spinler                "modifier": {
1802*3420426cSMatt Spinler                    "operator": "less_than",
1803*3420426cSMatt Spinler                    "default_value": 10000,
1804*3420426cSMatt Spinler                    "value": [
1805*3420426cSMatt Spinler                        { "arg_value": 500, "parameter_value": 0 },
1806*3420426cSMatt Spinler                        { "arg_value": 1000, "parameter_value": 1000 },
1807*3420426cSMatt Spinler                        { "arg_value": 1500, "parameter_value": 1900 },
1808*3420426cSMatt Spinler                        { "arg_value": 2000, "parameter_value": 2800 },
1809*3420426cSMatt Spinler                        { "arg_value": 2500, "parameter_value": 3700 },
1810*3420426cSMatt Spinler                        { "arg_value": 3300, "parameter_value": 4500 }
1811*3420426cSMatt Spinler                    ]
1812*3420426cSMatt Spinler                }
1813*3420426cSMatt Spinler            }
1814*3420426cSMatt Spinler        ]
1815*3420426cSMatt Spinler    },
1816*3420426cSMatt Spinler    {
1817*3420426cSMatt Spinler        "name": "Fan floors",
1818*3420426cSMatt Spinler        "groups": [
1819*3420426cSMatt Spinler            {
1820*3420426cSMatt Spinler                "name": "ambient temp",
1821*3420426cSMatt Spinler                "interface": "xyz.openbmc_project.Sensor.Value",
1822*3420426cSMatt Spinler                "property": { "name": "Value" }
1823*3420426cSMatt Spinler            }
1824*3420426cSMatt Spinler        ],
1825*3420426cSMatt Spinler        "triggers": [
1826*3420426cSMatt Spinler            {
1827*3420426cSMatt Spinler                "class": "init",
1828*3420426cSMatt Spinler                "method": "get_properties"
1829*3420426cSMatt Spinler            },
1830*3420426cSMatt Spinler            {
1831*3420426cSMatt Spinler                "class": "signal",
1832*3420426cSMatt Spinler                "signal": "properties_changed"
1833*3420426cSMatt Spinler            },
1834*3420426cSMatt Spinler            {
1835*3420426cSMatt Spinler                "class": "signal",
1836*3420426cSMatt Spinler                "signal": "interfaces_added"
1837*3420426cSMatt Spinler            },
1838*3420426cSMatt Spinler            {
1839*3420426cSMatt Spinler                "class": "parameter",
1840*3420426cSMatt Spinler                "parameter": "pcie_floor_index"
1841*3420426cSMatt Spinler            },
1842*3420426cSMatt Spinler            {
1843*3420426cSMatt Spinler                "class": "parameter",
1844*3420426cSMatt Spinler                "parameter": "ambient_20_altitude_offset"
1845*3420426cSMatt Spinler            },
1846*3420426cSMatt Spinler            {
1847*3420426cSMatt Spinler                "class": "parameter",
1848*3420426cSMatt Spinler                "parameter": "ambient_25_altitude_offset"
1849*3420426cSMatt Spinler            },
1850*3420426cSMatt Spinler            {
1851*3420426cSMatt Spinler                "class": "parameter",
1852*3420426cSMatt Spinler                "parameter": "ambient_30_altitude_offset"
1853*3420426cSMatt Spinler            },
1854*3420426cSMatt Spinler            {
1855*3420426cSMatt Spinler                "class": "parameter",
1856*3420426cSMatt Spinler                "parameter": "ambient_35_altitude_offset"
1857*3420426cSMatt Spinler            },
1858*3420426cSMatt Spinler            {
1859*3420426cSMatt Spinler                "class": "parameter",
1860*3420426cSMatt Spinler                "parameter": "ambient_40_altitude_offset"
1861*3420426cSMatt Spinler            }
1862*3420426cSMatt Spinler        ],
1863*3420426cSMatt Spinler        "actions": [
1864*3420426cSMatt Spinler            {
1865*3420426cSMatt Spinler                "name": "mapped_floor",
1866*3420426cSMatt Spinler                "key_group": "ambient temp",
1867*3420426cSMatt Spinler                "fan_floors": [
1868*3420426cSMatt Spinler                    {
1869*3420426cSMatt Spinler                        // Entry valid for temps < 20
1870*3420426cSMatt Spinler                        "key": 20,
1871*3420426cSMatt Spinler                        "default_floor": 5400,
1872*3420426cSMatt Spinler                        "floor_offset_parameter": "ambient_20_altitude_offset",
1873*3420426cSMatt Spinler                        "floors": [
1874*3420426cSMatt Spinler                            {
1875*3420426cSMatt Spinler                                "parameter": "pcie_floor_index",
1876*3420426cSMatt Spinler                                "floors": [
1877*3420426cSMatt Spinler                                    { "value": 1, "floor": 5600 },
1878*3420426cSMatt Spinler                                    { "value": 2, "floor": 9000 },
1879*3420426cSMatt Spinler                                    { "value": 3, "floor": 9000 },
1880*3420426cSMatt Spinler                                    { "value": 4, "floor": 9200 },
1881*3420426cSMatt Spinler                                    { "value": 5, "floor": 10600 }
1882*3420426cSMatt Spinler                                ]
1883*3420426cSMatt Spinler                            }
1884*3420426cSMatt Spinler                        ]
1885*3420426cSMatt Spinler                    },
1886*3420426cSMatt Spinler                    {
1887*3420426cSMatt Spinler                        // Entry valid for temps < 25
1888*3420426cSMatt Spinler                        "key": 25,
1889*3420426cSMatt Spinler                        "default_floor": 7300,
1890*3420426cSMatt Spinler                        "floor_offset_parameter": "ambient_25_altitude_offset",
1891*3420426cSMatt Spinler                        "floors": [
1892*3420426cSMatt Spinler                            {
1893*3420426cSMatt Spinler                                "parameter": "pcie_floor_index",
1894*3420426cSMatt Spinler                                "floors": [
1895*3420426cSMatt Spinler                                    { "value": 1, "floor": 7800 },
1896*3420426cSMatt Spinler                                    { "value": 2, "floor": 10700 },
1897*3420426cSMatt Spinler                                    { "value": 3, "floor": 11300 },
1898*3420426cSMatt Spinler                                    { "value": 4, "floor": 12700 },
1899*3420426cSMatt Spinler                                    { "value": 5, "floor": 13900 }
1900*3420426cSMatt Spinler                                ]
1901*3420426cSMatt Spinler                            }
1902*3420426cSMatt Spinler                        ]
1903*3420426cSMatt Spinler                    },
1904*3420426cSMatt Spinler                    {
1905*3420426cSMatt Spinler                        // Entry valid for temps < 30
1906*3420426cSMatt Spinler                        "key": 30,
1907*3420426cSMatt Spinler                        "default_floor": 9100,
1908*3420426cSMatt Spinler                        "floor_offset_parameter": "ambient_30_altitude_offset",
1909*3420426cSMatt Spinler                        "floors": [
1910*3420426cSMatt Spinler                            {
1911*3420426cSMatt Spinler                                "parameter": "pcie_floor_index",
1912*3420426cSMatt Spinler                                "floors": [
1913*3420426cSMatt Spinler                                    { "value": 1, "floor": 10300 },
1914*3420426cSMatt Spinler                                    { "value": 2, "floor": 12100 },
1915*3420426cSMatt Spinler                                    { "value": 3, "floor": 14400 },
1916*3420426cSMatt Spinler                                    { "value": 4, "floor": 16300 },
1917*3420426cSMatt Spinler                                    { "value": 5, "floor": 17200 }
1918*3420426cSMatt Spinler                                ]
1919*3420426cSMatt Spinler                            }
1920*3420426cSMatt Spinler                        ]
1921*3420426cSMatt Spinler                    },
1922*3420426cSMatt Spinler                    {
1923*3420426cSMatt Spinler                        // Entry valid for temps < 35
1924*3420426cSMatt Spinler                        "key": 35,
1925*3420426cSMatt Spinler                        "default_floor": 10800,
1926*3420426cSMatt Spinler                        "floor_offset_parameter": "ambient_35_altitude_offset",
1927*3420426cSMatt Spinler                        "floors": [
1928*3420426cSMatt Spinler                            {
1929*3420426cSMatt Spinler                                "parameter": "pcie_floor_index",
1930*3420426cSMatt Spinler                                "floors": [
1931*3420426cSMatt Spinler                                    { "value": 1, "floor": 12700 },
1932*3420426cSMatt Spinler                                    { "value": 2, "floor": 13500 },
1933*3420426cSMatt Spinler                                    { "value": 3, "floor": 17400 },
1934*3420426cSMatt Spinler                                    { "value": 4, "floor": 18000 },
1935*3420426cSMatt Spinler                                    { "value": 5, "floor": 18000 }
1936*3420426cSMatt Spinler                                ]
1937*3420426cSMatt Spinler                            }
1938*3420426cSMatt Spinler                        ]
1939*3420426cSMatt Spinler                    },
1940*3420426cSMatt Spinler                    {
1941*3420426cSMatt Spinler                        // Entry valid for temps < 40
1942*3420426cSMatt Spinler                        "key": 40,
1943*3420426cSMatt Spinler                        "default_floor": 12600,
1944*3420426cSMatt Spinler                        "floor_offset_parameter": "ambient_40_altitude_offset",
1945*3420426cSMatt Spinler                        "floors": [
1946*3420426cSMatt Spinler                            {
1947*3420426cSMatt Spinler                                "parameter": "pcie_floor_index",
1948*3420426cSMatt Spinler                                "floors": [
1949*3420426cSMatt Spinler                                    { "value": 1, "floor": 15000 },
1950*3420426cSMatt Spinler                                    { "value": 2, "floor": 15500 },
1951*3420426cSMatt Spinler                                    { "value": 3, "floor": 18000 },
1952*3420426cSMatt Spinler                                    { "value": 4, "floor": 18000 },
1953*3420426cSMatt Spinler                                    { "value": 5, "floor": 18000 }
1954*3420426cSMatt Spinler                                ]
1955*3420426cSMatt Spinler                            }
1956*3420426cSMatt Spinler                        ]
1957*3420426cSMatt Spinler                    }
1958*3420426cSMatt Spinler                ]
1959*3420426cSMatt Spinler            }
1960*3420426cSMatt Spinler        ]
1961*3420426cSMatt Spinler    }
1962*3420426cSMatt Spinler]
1963