xref: /openbmc/openbmc-test-automation/data/Palmetto.py (revision 20f38712b324e61a94e174017c487a0af4b373e1)
1 #!/usr/bin/env python3
2 
3 HOME_PATH = "./"
4 CACHE_PATH = "/var/cache/obmc/"
5 FLASH_DOWNLOAD_PATH = "/tmp"
6 GPIO_BASE = 320
7 SYSTEM_NAME = "Palmetto"
8 
9 
10 # System states
11 # state can change to next state in 2 ways:
12 # - a process emits a GotoSystemState signal with state name to goto
13 # - objects specified in EXIT_STATE_DEPEND have started
14 SYSTEM_STATES = [
15     "BASE_APPS",
16     "BMC_STARTING",
17     "BMC_READY",
18     "HOST_POWERING_ON",
19     "HOST_POWERED_ON",
20     "HOST_BOOTING",
21     "HOST_BOOTED",
22     "HOST_POWERED_OFF",
23 ]
24 
25 EXIT_STATE_DEPEND = {
26     "BASE_APPS": {
27         "/org/openbmc/sensors": 0,
28     },
29     "BMC_STARTING": {
30         "/org/openbmc/control/chassis0": 0,
31         "/org/openbmc/control/power0": 0,
32         "/org/openbmc/control/led/identify": 0,
33         "/org/openbmc/control/host0": 0,
34         "/org/openbmc/control/flash/bios": 0,
35     },
36 }
37 
38 # method will be called when state is entered
39 ENTER_STATE_CALLBACK = {
40     "HOST_POWERED_ON": {
41         "boot": {
42             "bus_name": "org.openbmc.control.Host",
43             "obj_name": "/org/openbmc/control/host0",
44             "interface_name": "org.openbmc.control.Host",
45         }
46     },
47     "BMC_READY": {
48         "setOn": {
49             "bus_name": "org.openbmc.control.led",
50             "obj_name": "/org/openbmc/control/led/identify",
51             "interface_name": "org.openbmc.Led",
52         },
53         "init": {
54             "bus_name": "org.openbmc.control.Flash",
55             "obj_name": "/org/openbmc/control/flash/bios",
56             "interface_name": "org.openbmc.Flash",
57         },
58     },
59 }
60 
61 APPS = {
62     "startup_hacks": {
63         "system_state": "BASE_APPS",
64         "start_process": True,
65         "monitor_process": False,
66         "process_name": "startup_hacks.sh",
67     },
68     "inventory": {
69         "system_state": "BMC_STARTING",
70         "start_process": True,
71         "monitor_process": True,
72         "process_name": "inventory_items.py",
73         "args": [SYSTEM_NAME],
74     },
75     "pcie_present": {
76         "system_state": "HOST_POWERED_ON",
77         "start_process": False,
78         "monitor_process": False,
79         "process_name": "pcie_slot_present.exe",
80     },
81     "virtual_sensors": {
82         "system_state": "BMC_STARTING",
83         "start_process": True,
84         "monitor_process": True,
85         "process_name": "hwmon.py",
86         "args": [SYSTEM_NAME],
87     },
88     "sensor_manager": {
89         "system_state": "BASE_APPS",
90         "start_process": True,
91         "monitor_process": True,
92         "process_name": "sensor_manager2.py",
93         "args": [SYSTEM_NAME],
94     },
95     "host_watchdog": {
96         "system_state": "BMC_STARTING",
97         "start_process": True,
98         "monitor_process": True,
99         "process_name": "host_watchdog.exe",
100     },
101     "power_control": {
102         "system_state": "BMC_STARTING",
103         "start_process": True,
104         "monitor_process": True,
105         "process_name": "power_control.exe",
106         "args": ["3000", "10"],
107     },
108     "power_button": {
109         "system_state": "BMC_STARTING",
110         "start_process": False,
111         "monitor_process": False,
112         "process_name": "button_power.exe",
113     },
114     "led_control": {
115         "system_state": "BMC_STARTING",
116         "start_process": True,
117         "monitor_process": True,
118         "process_name": "led_controller.exe",
119     },
120     "flash_control": {
121         "system_state": "BMC_STARTING",
122         "start_process": True,
123         "monitor_process": True,
124         "process_name": "flash_bios.exe",
125     },
126     "bmc_flash_control": {
127         "system_state": "BMC_STARTING",
128         "start_process": True,
129         "monitor_process": True,
130         "process_name": "bmc_update.py",
131     },
132     "download_manager": {
133         "system_state": "BMC_STARTING",
134         "start_process": True,
135         "monitor_process": True,
136         "process_name": "download_manager.py",
137         "args": [SYSTEM_NAME],
138     },
139     "host_control": {
140         "system_state": "BMC_STARTING",
141         "start_process": True,
142         "monitor_process": True,
143         "process_name": "control_host.exe",
144     },
145     "chassis_control": {
146         "system_state": "BMC_STARTING",
147         "start_process": True,
148         "monitor_process": True,
149         "process_name": "chassis_control.py",
150     },
151     "bmc_control": {
152         "system_state": "BMC_STARTING",
153         "start_process": True,
154         "monitor_process": True,
155         "process_name": "control_bmc.exe",
156     },
157 }
158 
159 CACHED_INTERFACES = {
160     "org.openbmc.InventoryItem": True,
161     "org.openbmc.control.Chassis": True,
162 }
163 INVENTORY_ROOT = "/org/openbmc/inventory"
164 
165 FRU_INSTANCES = {
166     "<inventory_root>/system": {
167         "fru_type": "SYSTEM",
168         "is_fru": True,
169     },
170     "<inventory_root>/system/chassis": {
171         "fru_type": "SYSTEM",
172         "is_fru": True,
173     },
174     "<inventory_root>/system/chassis/motherboard": {
175         "fru_type": "MAIN_PLANAR",
176         "is_fru": True,
177     },
178     "<inventory_root>/system/chassis/fan0": {
179         "fru_type": "FAN",
180         "is_fru": True,
181     },
182     "<inventory_root>/system/chassis/fan1": {
183         "fru_type": "FAN",
184         "is_fru": True,
185     },
186     "<inventory_root>/system/chassis/fan2": {
187         "fru_type": "FAN",
188         "is_fru": True,
189     },
190     "<inventory_root>/system/chassis/fan3": {
191         "fru_type": "FAN",
192         "is_fru": True,
193     },
194     "<inventory_root>/system/chassis/fan4": {
195         "fru_type": "FAN",
196         "is_fru": True,
197     },
198     "<inventory_root>/system/chassis/motherboard/bmc": {
199         "fru_type": "BMC",
200         "is_fru": False,
201         "manufacturer": "ASPEED",
202     },
203     "<inventory_root>/system/chassis/motherboard/cpu": {
204         "fru_type": "CPU",
205         "is_fru": True,
206     },
207     "<inventory_root>/system/chassis/motherboard/cpu/core0": {
208         "fru_type": "CORE",
209         "is_fru": False,
210     },
211     "<inventory_root>/system/chassis/motherboard/cpu/core1": {
212         "fru_type": "CORE",
213         "is_fru": False,
214     },
215     "<inventory_root>/system/chassis/motherboard/cpu/core2": {
216         "fru_type": "CORE",
217         "is_fru": False,
218     },
219     "<inventory_root>/system/chassis/motherboard/cpu/core3": {
220         "fru_type": "CORE",
221         "is_fru": False,
222     },
223     "<inventory_root>/system/chassis/motherboard/cpu/core4": {
224         "fru_type": "CORE",
225         "is_fru": False,
226     },
227     "<inventory_root>/system/chassis/motherboard/cpu/core5": {
228         "fru_type": "CORE",
229         "is_fru": False,
230     },
231     "<inventory_root>/system/chassis/motherboard/cpu/core6": {
232         "fru_type": "CORE",
233         "is_fru": False,
234     },
235     "<inventory_root>/system/chassis/motherboard/cpu/core7": {
236         "fru_type": "CORE",
237         "is_fru": False,
238     },
239     "<inventory_root>/system/chassis/motherboard/cpu/core8": {
240         "fru_type": "CORE",
241         "is_fru": False,
242     },
243     "<inventory_root>/system/chassis/motherboard/cpu/core9": {
244         "fru_type": "CORE",
245         "is_fru": False,
246     },
247     "<inventory_root>/system/chassis/motherboard/cpu/core10": {
248         "fru_type": "CORE",
249         "is_fru": False,
250     },
251     "<inventory_root>/system/chassis/motherboard/cpu/core11": {
252         "fru_type": "CORE",
253         "is_fru": False,
254     },
255     "<inventory_root>/system/chassis/motherboard/membuf": {
256         "fru_type": "MEMORY_BUFFER",
257         "is_fru": False,
258     },
259     "<inventory_root>/system/chassis/motherboard/dimm0": {
260         "fru_type": "DIMM",
261         "is_fru": True,
262     },
263     "<inventory_root>/system/chassis/motherboard/dimm1": {
264         "fru_type": "DIMM",
265         "is_fru": True,
266     },
267     "<inventory_root>/system/chassis/motherboard/dimm2": {
268         "fru_type": "DIMM",
269         "is_fru": True,
270     },
271     "<inventory_root>/system/chassis/motherboard/dimm3": {
272         "fru_type": "DIMM",
273         "is_fru": True,
274     },
275     "<inventory_root>/system/chassis/io_board/pcie_slot0": {
276         "fru_type": "PCIE_CARD",
277         "is_fru": True,
278     },
279     "<inventory_root>/system/chassis/io_board/pcie_slot1": {
280         "fru_type": "PCIE_CARD",
281         "is_fru": True,
282     },
283     "<inventory_root>/system/systemevent": {
284         "fru_type": "SYSTEM_EVENT",
285         "is_fru": False,
286     },
287     "<inventory_root>/system/chassis/motherboard/refclock": {
288         "fru_type": "MAIN_PLANAR",
289         "is_fru": False,
290     },
291     "<inventory_root>/system/chassis/motherboard/pcieclock": {
292         "fru_type": "MAIN_PLANAR",
293         "is_fru": False,
294     },
295     "<inventory_root>/system/chassis/motherboard/todclock": {
296         "fru_type": "MAIN_PLANAR",
297         "is_fru": False,
298     },
299     "<inventory_root>/system/chassis/motherboard/apss": {
300         "fru_type": "MAIN_PLANAR",
301         "is_fru": False,
302     },
303 }
304 
305 ID_LOOKUP = {
306     "FRU": {
307         0x0D: "<inventory_root>/system/chassis",
308         0x34: "<inventory_root>/system/chassis/motherboard",
309         0x01: "<inventory_root>/system/chassis/motherboard/cpu",
310         0x02: "<inventory_root>/system/chassis/motherboard/membuf",
311         0x03: "<inventory_root>/system/chassis/motherboard/dimm0",
312         0x04: "<inventory_root>/system/chassis/motherboard/dimm1",
313         0x05: "<inventory_root>/system/chassis/motherboard/dimm2",
314         0x06: "<inventory_root>/system/chassis/motherboard/dimm3",
315         0x35: "<inventory_root>/system",
316     },
317     "FRU_STR": {
318         "PRODUCT_15": "<inventory_root>/system",
319         "CHASSIS_2": "<inventory_root>/system/chassis",
320         "BOARD_1": "<inventory_root>/system/chassis/motherboard/cpu",
321         "BOARD_2": "<inventory_root>/system/chassis/motherboard/membuf",
322         "BOARD_14": "<inventory_root>/system/chassis/motherboard",
323         "PRODUCT_3": "<inventory_root>/system/chassis/motherboard/dimm0",
324         "PRODUCT_4": "<inventory_root>/system/chassis/motherboard/dimm1",
325         "PRODUCT_5": "<inventory_root>/system/chassis/motherboard/dimm2",
326         "PRODUCT_6": "<inventory_root>/system/chassis/motherboard/dimm3",
327     },
328     "SENSOR": {
329         0x34: "<inventory_root>/system/chassis/motherboard",
330         0x37: "<inventory_root>/system/chassis/motherboard/refclock",
331         0x38: "<inventory_root>/system/chassis/motherboard/pcieclock",
332         0x39: "<inventory_root>/system/chassis/motherboard/todclock",
333         0x3A: "<inventory_root>/system/chassis/apss",
334         0x2F: "<inventory_root>/system/chassis/motherboard/cpu",
335         0x22: "<inventory_root>/system/chassis/motherboard/cpu/core1",
336         0x23: "<inventory_root>/system/chassis/motherboard/cpu/core2",
337         0x24: "<inventory_root>/system/chassis/motherboard/cpu/core3",
338         0x25: "<inventory_root>/system/chassis/motherboard/cpu/core4",
339         0x26: "<inventory_root>/system/chassis/motherboard/cpu/core5",
340         0x27: "<inventory_root>/system/chassis/motherboard/cpu/core6",
341         0x28: "<inventory_root>/system/chassis/motherboard/cpu/core9",
342         0x29: "<inventory_root>/system/chassis/motherboard/cpu/core10",
343         0x2A: "<inventory_root>/system/chassis/motherboard/cpu/core11",
344         0x2B: "<inventory_root>/system/chassis/motherboard/cpu/core12",
345         0x2C: "<inventory_root>/system/chassis/motherboard/cpu/core13",
346         0x2D: "<inventory_root>/system/chassis/motherboard/cpu/core14",
347         0x2E: "<inventory_root>/system/chassis/motherboard/membuf",
348         0x1E: "<inventory_root>/system/chassis/motherboard/dimm0",
349         0x1F: "<inventory_root>/system/chassis/motherboard/dimm1",
350         0x20: "<inventory_root>/system/chassis/motherboard/dimm2",
351         0x21: "<inventory_root>/system/chassis/motherboard/dimm3",
352         0x09: "/org/openbmc/sensors/host/BootCount",
353         0x05: "/org/openbmc/sensors/host/BootProgress",
354         0x08: "/org/openbmc/sensors/host/cpu0/OccStatus",
355         0x32: "/org/openbmc/sensors/host/OperatingSystemStatus",
356         0x33: "/org/openbmc/sensors/host/PowerCap",
357     },
358     "GPIO_PRESENT": {
359         "SLOT0_PRESENT": "<inventory_root>/system/chassis/io_board/pcie_slot0",
360         "SLOT1_PRESENT": "<inventory_root>/system/chassis/io_board/pcie_slot1",
361     },
362 }
363 
364 GPIO_CONFIG = {}
365 GPIO_CONFIG["FSI_CLK"] = {"gpio_pin": "A4", "direction": "out"}
366 GPIO_CONFIG["FSI_DATA"] = {"gpio_pin": "A5", "direction": "out"}
367 GPIO_CONFIG["FSI_ENABLE"] = {"gpio_pin": "D0", "direction": "out"}
368 GPIO_CONFIG["POWER_PIN"] = {"gpio_pin": "E1", "direction": "out"}
369 GPIO_CONFIG["CRONUS_SEL"] = {"gpio_pin": "A6", "direction": "out"}
370 GPIO_CONFIG["PGOOD"] = {"gpio_pin": "C7", "direction": "in"}
371 GPIO_CONFIG["BMC_THROTTLE"] = {"gpio_pin": "J3", "direction": "out"}
372 GPIO_CONFIG["IDBTN"] = {"gpio_pin": "Q7", "direction": "out"}
373 GPIO_CONFIG["POWER_BUTTON"] = {"gpio_pin": "E0", "direction": "both"}
374 GPIO_CONFIG["PCIE_RESET"] = {"gpio_pin": "B5", "direction": "out"}
375 GPIO_CONFIG["USB_RESET"] = {"gpio_pin": "B6", "direction": "out"}
376 GPIO_CONFIG["SLOT0_RISER_PRESENT"] = {"gpio_pin": "N0", "direction": "in"}
377 GPIO_CONFIG["SLOT1_RISER_PRESENT"] = {"gpio_pin": "N1", "direction": "in"}
378 GPIO_CONFIG["SLOT2_RISER_PRESENT"] = {"gpio_pin": "N2", "direction": "in"}
379 GPIO_CONFIG["SLOT0_PRESENT"] = {"gpio_pin": "N3", "direction": "in"}
380 GPIO_CONFIG["SLOT1_PRESENT"] = {"gpio_pin": "N4", "direction": "in"}
381 GPIO_CONFIG["SLOT2_PRESENT"] = {"gpio_pin": "N5", "direction": "in"}
382 GPIO_CONFIG["MEZZ0_PRESENT"] = {"gpio_pin": "O0", "direction": "in"}
383 GPIO_CONFIG["MEZZ1_PRESENT"] = {"gpio_pin": "O1", "direction": "in"}
384 
385 
386 def convertGpio(name):
387     name = name.upper()
388     c = name[0:1]
389     offset = int(name[1:])
390     a = ord(c) - 65
391     base = a * 8 + GPIO_BASE
392     return base + offset
393 
394 
395 HWMON_CONFIG = {
396     "2-004c": {
397         "names": {
398             "temp1_input": {
399                 "object_path": "temperature/ambient",
400                 "poll_interval": 5000,
401                 "scale": 1000,
402                 "units": "C",
403             },
404         }
405     },
406     "3-0050": {
407         "names": {
408             "caps_curr_powercap": {
409                 "object_path": "powercap/curr_cap",
410                 "poll_interval": 10000,
411                 "scale": 1,
412                 "units": "W",
413             },
414             "caps_curr_powerreading": {
415                 "object_path": "powercap/system_power",
416                 "poll_interval": 10000,
417                 "scale": 1,
418                 "units": "W",
419             },
420             "caps_max_powercap": {
421                 "object_path": "powercap/max_cap",
422                 "poll_interval": 10000,
423                 "scale": 1,
424                 "units": "W",
425             },
426             "caps_min_powercap": {
427                 "object_path": "powercap/min_cap",
428                 "poll_interval": 10000,
429                 "scale": 1,
430                 "units": "W",
431             },
432             "caps_norm_powercap": {
433                 "object_path": "powercap/n_cap",
434                 "poll_interval": 10000,
435                 "scale": 1,
436                 "units": "W",
437             },
438             "caps_user_powerlimit": {
439                 "object_path": "powercap/user_cap",
440                 "poll_interval": 10000,
441                 "scale": 1,
442                 "units": "W",
443             },
444         }
445     },
446 }
447 
448 # Miscellaneous non-poll sensor with system specific properties.
449 # The sensor id is the same as those defined in ID_LOOKUP['SENSOR'].
450 MISC_SENSORS = {
451     0x09: {"class": "BootCountSensor"},
452     0x05: {"class": "BootProgressSensor"},
453     0x08: {
454         "class": "OccStatusSensor",
455         "os_path": "/sys/class/i2c-adapter/i2c-3/3-0050/online",
456     },
457     0x32: {"class": "OperatingSystemStatusSensor"},
458     0x33: {
459         "class": "PowerCap",
460         "os_path": "/sys/class/hwmon/hwmon1/user_powercap",
461     },
462 }
463