1#! /usr/bin/python 2 3HOME_PATH = './' 4GPIO_BASE = 320 5SYSTEM_NAME = "Witherspoon" 6 7 8# System states 9# state can change to next state in 2 ways: 10# - a process emits a GotoSystemState signal with state name to goto 11# - objects specified in EXIT_STATE_DEPEND have started 12SYSTEM_STATES = [ 13 'BASE_APPS', 14 'BMC_STARTING', 15 'BMC_READY', 16 'HOST_POWERING_ON', 17 'HOST_POWERED_ON', 18 'HOST_BOOTING', 19 'HOST_BOOTED', 20 'HOST_POWERED_OFF', 21] 22 23EXIT_STATE_DEPEND = { 24 'BASE_APPS': { 25 '/org/openbmc/sensors': 0, 26 }, 27 'BMC_STARTING': { 28 '/org/openbmc/control/chassis0': 0, 29 '/org/openbmc/control/power0': 0, 30 '/org/openbmc/control/host0': 0, 31 '/org/openbmc/control/flash/bios': 0, 32 }, 33} 34 35# method will be called when state is entered 36ENTER_STATE_CALLBACK = { 37 'HOST_POWERED_ON': { 38 'boot': { 39 'bus_name': 'org.openbmc.control.Host', 40 'obj_name': '/org/openbmc/control/host0', 41 'interface_name': 'org.openbmc.control.Host', 42 }, 43 }, 44 'HOST_POWERED_OFF': { 45 'setOff': { 46 'bus_name': 'org.openbmc.control.led', 47 'obj_name': '/org/openbmc/control/led/identify', 48 'interface_name': 'org.openbmc.Led', 49 } 50 }, 51 'BMC_READY': { 52 'setOn': { 53 'bus_name': 'org.openbmc.control.led', 54 'obj_name': '/org/openbmc/control/led/beep', 55 'interface_name': 'org.openbmc.Led', 56 }, 57 'init': { 58 'bus_name': 'org.openbmc.control.Flash', 59 'obj_name': '/org/openbmc/control/flash/bios', 60 'interface_name': 'org.openbmc.Flash', 61 } 62 } 63} 64 65APPS = { 66 'startup_hacks': { 67 'system_state': 'BASE_APPS', 68 'start_process': True, 69 'monitor_process': False, 70 'process_name': 'startup_hacks.sh', 71 }, 72 'inventory': { 73 'system_state': 'BMC_STARTING', 74 'start_process': True, 75 'monitor_process': True, 76 'process_name': 'inventory_items.py', 77 'args': [SYSTEM_NAME] 78 }, 79 'hwmon': { 80 'system_state': 'BMC_STARTING', 81 'start_process': True, 82 'monitor_process': True, 83 'process_name': 'hwmon.py', 84 'args': [SYSTEM_NAME] 85 }, 86 'sensor_manager': { 87 'system_state': 'BASE_APPS', 88 'start_process': True, 89 'monitor_process': True, 90 'process_name': 'sensor_manager2.py', 91 'args': [SYSTEM_NAME] 92 }, 93 'host_watchdog': { 94 'system_state': 'BMC_STARTING', 95 'start_process': True, 96 'monitor_process': True, 97 'process_name': 'host_watchdog.exe', 98 }, 99 'power_control': { 100 'system_state': 'BMC_STARTING', 101 'start_process': True, 102 'monitor_process': True, 103 'process_name': 'power_control.exe', 104 'args': ['3000', '10'] 105 }, 106 'power_button': { 107 'system_state': 'BMC_STARTING', 108 'start_process': True, 109 'monitor_process': True, 110 'process_name': 'button_power.exe', 111 }, 112 'reset_button': { 113 'system_state': 'BMC_STARTING', 114 'start_process': True, 115 'monitor_process': True, 116 'process_name': 'button_reset.exe', 117 }, 118 'host_checkstop': { 119 'system_state': 'BMC_STARTING', 120 'start_process': True, 121 'monitor_process': True, 122 'process_name': 'host_checkstop.exe', 123 }, 124 'led_control': { 125 'system_state': 'BMC_STARTING', 126 'start_process': True, 127 'monitor_process': True, 128 'process_name': 'led_controller.exe', 129 }, 130 'flash_control': { 131 'system_state': 'BMC_STARTING', 132 'start_process': True, 133 'monitor_process': True, 134 'process_name': 'flash_bios.exe', 135 }, 136 'bmc_flash_control': { 137 'system_state': 'BMC_STARTING', 138 'start_process': True, 139 'monitor_process': True, 140 'process_name': 'bmc_update.py', 141 }, 142 'download_manager': { 143 'system_state': 'BMC_STARTING', 144 'start_process': True, 145 'monitor_process': True, 146 'process_name': 'download_manager.py', 147 'args': [SYSTEM_NAME] 148 }, 149 'host_control': { 150 'system_state': 'BMC_STARTING', 151 'start_process': True, 152 'monitor_process': True, 153 'process_name': 'control_host.exe', 154 }, 155 'chassis_control': { 156 'system_state': 'BMC_STARTING', 157 'start_process': True, 158 'monitor_process': True, 159 'process_name': 'chassis_control.py', 160 }, 161 'restore': { 162 'system_state': 'BMC_READY', 163 'start_process': True, 164 'monitor_process': False, 165 'process_name': 'discover_system_state.py', 166 }, 167 'bmc_control': { 168 'system_state': 'BMC_STARTING', 169 'start_process': True, 170 'monitor_process': True, 171 'process_name': 'control_bmc.exe', 172 }, 173} 174 175CACHED_INTERFACES = { 176 "org.openbmc.InventoryItem": True, 177 "org.openbmc.control.Chassis": True, 178} 179 180INVENTORY_ROOT = '/org/openbmc/inventory' 181 182FRU_INSTANCES = { 183 '<inventory_root>/system': {'fru_type': 'SYSTEM', 'is_fru': True, 'present': "True"}, 184 '<inventory_root>/system/bios': {'fru_type': 'SYSTEM', 'is_fru': True, 'present': "True"}, 185 '<inventory_root>/system/misc': {'fru_type': 'SYSTEM', 'is_fru': False, }, 186 187 '<inventory_root>/system/chassis': {'fru_type': 'SYSTEM', 'is_fru': True, 'present': "True"}, 188 189 '<inventory_root>/system/chassis/motherboard': {'fru_type': 'MAIN_PLANAR', 'is_fru': True, }, 190 191 '<inventory_root>/system/systemevent': {'fru_type': 'SYSTEM_EVENT', 'is_fru': False, }, 192 '<inventory_root>/system/chassis/motherboard/refclock': {'fru_type': 'MAIN_PLANAR', 'is_fru': False, }, 193 '<inventory_root>/system/chassis/motherboard/pcieclock': {'fru_type': 'MAIN_PLANAR', 'is_fru': False, }, 194 '<inventory_root>/system/chassis/motherboard/todclock': {'fru_type': 'MAIN_PLANAR', 'is_fru': False, }, 195 '<inventory_root>/system/chassis/motherboard/apss': {'fru_type': 'MAIN_PLANAR', 'is_fru': False, }, 196 197 '<inventory_root>/system/chassis/fan0': {'fru_type': 'FAN', 'is_fru': True, }, 198 '<inventory_root>/system/chassis/fan1': {'fru_type': 'FAN', 'is_fru': True, }, 199 '<inventory_root>/system/chassis/fan2': {'fru_type': 'FAN', 'is_fru': True, }, 200 '<inventory_root>/system/chassis/fan3': {'fru_type': 'FAN', 'is_fru': True, }, 201 202 '<inventory_root>/system/chassis/motherboard/bmc': {'fru_type': 'BMC', 'is_fru': False, 'manufacturer': 'ASPEED'}, 203 204 '<inventory_root>/system/chassis/motherboard/cpu0': {'fru_type': 'CPU', 'is_fru': True, }, 205 '<inventory_root>/system/chassis/motherboard/cpu1': {'fru_type': 'CPU', 'is_fru': True, }, 206 207 '<inventory_root>/system/chassis/motherboard/cpu0/core0': {'fru_type': 'CORE', 'is_fru': False, }, 208 '<inventory_root>/system/chassis/motherboard/cpu0/core1': {'fru_type': 'CORE', 'is_fru': False, }, 209 '<inventory_root>/system/chassis/motherboard/cpu0/core2': {'fru_type': 'CORE', 'is_fru': False, }, 210 '<inventory_root>/system/chassis/motherboard/cpu0/core3': {'fru_type': 'CORE', 'is_fru': False, }, 211 '<inventory_root>/system/chassis/motherboard/cpu0/core4': {'fru_type': 'CORE', 'is_fru': False, }, 212 '<inventory_root>/system/chassis/motherboard/cpu0/core5': {'fru_type': 'CORE', 'is_fru': False, }, 213 '<inventory_root>/system/chassis/motherboard/cpu0/core6': {'fru_type': 'CORE', 'is_fru': False, }, 214 '<inventory_root>/system/chassis/motherboard/cpu0/core7': {'fru_type': 'CORE', 'is_fru': False, }, 215 '<inventory_root>/system/chassis/motherboard/cpu0/core8': {'fru_type': 'CORE', 'is_fru': False, }, 216 '<inventory_root>/system/chassis/motherboard/cpu0/core9': {'fru_type': 'CORE', 'is_fru': False, }, 217 '<inventory_root>/system/chassis/motherboard/cpu0/core10': {'fru_type': 'CORE', 'is_fru': False, }, 218 '<inventory_root>/system/chassis/motherboard/cpu0/core11': {'fru_type': 'CORE', 'is_fru': False, }, 219 220 '<inventory_root>/system/chassis/motherboard/cpu1/core0': {'fru_type': 'CORE', 'is_fru': False, }, 221 '<inventory_root>/system/chassis/motherboard/cpu1/core1': {'fru_type': 'CORE', 'is_fru': False, }, 222 '<inventory_root>/system/chassis/motherboard/cpu1/core2': {'fru_type': 'CORE', 'is_fru': False, }, 223 '<inventory_root>/system/chassis/motherboard/cpu1/core3': {'fru_type': 'CORE', 'is_fru': False, }, 224 '<inventory_root>/system/chassis/motherboard/cpu1/core4': {'fru_type': 'CORE', 'is_fru': False, }, 225 '<inventory_root>/system/chassis/motherboard/cpu1/core5': {'fru_type': 'CORE', 'is_fru': False, }, 226 '<inventory_root>/system/chassis/motherboard/cpu1/core6': {'fru_type': 'CORE', 'is_fru': False, }, 227 '<inventory_root>/system/chassis/motherboard/cpu1/core7': {'fru_type': 'CORE', 'is_fru': False, }, 228 '<inventory_root>/system/chassis/motherboard/cpu1/core8': {'fru_type': 'CORE', 'is_fru': False, }, 229 '<inventory_root>/system/chassis/motherboard/cpu1/core9': {'fru_type': 'CORE', 'is_fru': False, }, 230 '<inventory_root>/system/chassis/motherboard/cpu1/core10': {'fru_type': 'CORE', 'is_fru': False, }, 231 '<inventory_root>/system/chassis/motherboard/cpu1/core11': {'fru_type': 'CORE', 'is_fru': False, }, 232 233 '<inventory_root>/system/chassis/motherboard/membuf0': {'fru_type': 'MEMORY_BUFFER', 'is_fru': False, }, 234 '<inventory_root>/system/chassis/motherboard/membuf1': {'fru_type': 'MEMORY_BUFFER', 'is_fru': False, }, 235 '<inventory_root>/system/chassis/motherboard/membuf2': {'fru_type': 'MEMORY_BUFFER', 'is_fru': False, }, 236 '<inventory_root>/system/chassis/motherboard/membuf3': {'fru_type': 'MEMORY_BUFFER', 'is_fru': False, }, 237 '<inventory_root>/system/chassis/motherboard/membuf4': {'fru_type': 'MEMORY_BUFFER', 'is_fru': False, }, 238 '<inventory_root>/system/chassis/motherboard/membuf5': {'fru_type': 'MEMORY_BUFFER', 'is_fru': False, }, 239 '<inventory_root>/system/chassis/motherboard/membuf6': {'fru_type': 'MEMORY_BUFFER', 'is_fru': False, }, 240 '<inventory_root>/system/chassis/motherboard/membuf7': {'fru_type': 'MEMORY_BUFFER', 'is_fru': False, }, 241 242 '<inventory_root>/system/chassis/motherboard/dimm0': {'fru_type': 'DIMM', 'is_fru': True, }, 243 '<inventory_root>/system/chassis/motherboard/dimm1': {'fru_type': 'DIMM', 'is_fru': True, }, 244 '<inventory_root>/system/chassis/motherboard/dimm2': {'fru_type': 'DIMM', 'is_fru': True, }, 245 '<inventory_root>/system/chassis/motherboard/dimm3': {'fru_type': 'DIMM', 'is_fru': True, }, 246 '<inventory_root>/system/chassis/motherboard/dimm4': {'fru_type': 'DIMM', 'is_fru': True, }, 247 '<inventory_root>/system/chassis/motherboard/dimm5': {'fru_type': 'DIMM', 'is_fru': True, }, 248 '<inventory_root>/system/chassis/motherboard/dimm6': {'fru_type': 'DIMM', 'is_fru': True, }, 249 '<inventory_root>/system/chassis/motherboard/dimm7': {'fru_type': 'DIMM', 'is_fru': True, }, 250 '<inventory_root>/system/chassis/motherboard/dimm8': {'fru_type': 'DIMM', 'is_fru': True, }, 251 '<inventory_root>/system/chassis/motherboard/dimm9': {'fru_type': 'DIMM', 'is_fru': True, }, 252 '<inventory_root>/system/chassis/motherboard/dimm10': {'fru_type': 'DIMM', 'is_fru': True, }, 253 '<inventory_root>/system/chassis/motherboard/dimm11': {'fru_type': 'DIMM', 'is_fru': True, }, 254 '<inventory_root>/system/chassis/motherboard/dimm12': {'fru_type': 'DIMM', 'is_fru': True, }, 255 '<inventory_root>/system/chassis/motherboard/dimm13': {'fru_type': 'DIMM', 'is_fru': True, }, 256 '<inventory_root>/system/chassis/motherboard/dimm14': {'fru_type': 'DIMM', 'is_fru': True, }, 257 '<inventory_root>/system/chassis/motherboard/dimm15': {'fru_type': 'DIMM', 'is_fru': True, }, 258 '<inventory_root>/system/chassis/motherboard/dimm16': {'fru_type': 'DIMM', 'is_fru': True, }, 259 '<inventory_root>/system/chassis/motherboard/dimm17': {'fru_type': 'DIMM', 'is_fru': True, }, 260 '<inventory_root>/system/chassis/motherboard/dimm18': {'fru_type': 'DIMM', 'is_fru': True, }, 261 '<inventory_root>/system/chassis/motherboard/dimm19': {'fru_type': 'DIMM', 'is_fru': True, }, 262 '<inventory_root>/system/chassis/motherboard/dimm20': {'fru_type': 'DIMM', 'is_fru': True, }, 263 '<inventory_root>/system/chassis/motherboard/dimm21': {'fru_type': 'DIMM', 'is_fru': True, }, 264 '<inventory_root>/system/chassis/motherboard/dimm22': {'fru_type': 'DIMM', 'is_fru': True, }, 265 '<inventory_root>/system/chassis/motherboard/dimm23': {'fru_type': 'DIMM', 'is_fru': True, }, 266 '<inventory_root>/system/chassis/motherboard/dimm24': {'fru_type': 'DIMM', 'is_fru': True, }, 267 '<inventory_root>/system/chassis/motherboard/dimm25': {'fru_type': 'DIMM', 'is_fru': True, }, 268 '<inventory_root>/system/chassis/motherboard/dimm26': {'fru_type': 'DIMM', 'is_fru': True, }, 269 '<inventory_root>/system/chassis/motherboard/dimm27': {'fru_type': 'DIMM', 'is_fru': True, }, 270 '<inventory_root>/system/chassis/motherboard/dimm28': {'fru_type': 'DIMM', 'is_fru': True, }, 271 '<inventory_root>/system/chassis/motherboard/dimm29': {'fru_type': 'DIMM', 'is_fru': True, }, 272 '<inventory_root>/system/chassis/motherboard/dimm30': {'fru_type': 'DIMM', 'is_fru': True, }, 273 '<inventory_root>/system/chassis/motherboard/dimm31': {'fru_type': 'DIMM', 'is_fru': True, }, 274} 275 276ID_LOOKUP = { 277 'FRU': { 278 0x01: '<inventory_root>/system/chassis/motherboard/cpu0', 279 0x02: '<inventory_root>/system/chassis/motherboard/cpu1', 280 0x03: '<inventory_root>/system/chassis/motherboard', 281 0x04: '<inventory_root>/system/chassis/motherboard/membuf0', 282 0x05: '<inventory_root>/system/chassis/motherboard/membuf1', 283 0x06: '<inventory_root>/system/chassis/motherboard/membuf2', 284 0x07: '<inventory_root>/system/chassis/motherboard/membuf3', 285 0x08: '<inventory_root>/system/chassis/motherboard/membuf4', 286 0x09: '<inventory_root>/system/chassis/motherboard/membuf5', 287 0x0c: '<inventory_root>/system/chassis/motherboard/dimm0', 288 0x0d: '<inventory_root>/system/chassis/motherboard/dimm1', 289 0x0e: '<inventory_root>/system/chassis/motherboard/dimm2', 290 0x0f: '<inventory_root>/system/chassis/motherboard/dimm3', 291 0x10: '<inventory_root>/system/chassis/motherboard/dimm4', 292 0x11: '<inventory_root>/system/chassis/motherboard/dimm5', 293 0x12: '<inventory_root>/system/chassis/motherboard/dimm6', 294 0x13: '<inventory_root>/system/chassis/motherboard/dimm7', 295 0x14: '<inventory_root>/system/chassis/motherboard/dimm8', 296 0x15: '<inventory_root>/system/chassis/motherboard/dimm9', 297 0x16: '<inventory_root>/system/chassis/motherboard/dimm10', 298 0x17: '<inventory_root>/system/chassis/motherboard/dimm11', 299 0x18: '<inventory_root>/system/chassis/motherboard/dimm12', 300 0x19: '<inventory_root>/system/chassis/motherboard/dimm13', 301 0x1a: '<inventory_root>/system/chassis/motherboard/dimm14', 302 0x1b: '<inventory_root>/system/chassis/motherboard/dimm15', 303 0x1c: '<inventory_root>/system/chassis/motherboard/dimm16', 304 0x1d: '<inventory_root>/system/chassis/motherboard/dimm17', 305 0x1e: '<inventory_root>/system/chassis/motherboard/dimm18', 306 0x1f: '<inventory_root>/system/chassis/motherboard/dimm19', 307 0x20: '<inventory_root>/system/chassis/motherboard/dimm20', 308 0x21: '<inventory_root>/system/chassis/motherboard/dimm21', 309 0x22: '<inventory_root>/system/chassis/motherboard/dimm22', 310 0x23: '<inventory_root>/system/chassis/motherboard/dimm23', 311 0x24: '<inventory_root>/system/chassis/motherboard/dimm24', 312 0x25: '<inventory_root>/system/chassis/motherboard/dimm25', 313 0x26: '<inventory_root>/system/chassis/motherboard/dimm26', 314 0x27: '<inventory_root>/system/chassis/motherboard/dimm27', 315 0x28: '<inventory_root>/system/chassis/motherboard/dimm28', 316 0x29: '<inventory_root>/system/chassis/motherboard/dimm29', 317 0x2a: '<inventory_root>/system/chassis/motherboard/dimm30', 318 0x2b: '<inventory_root>/system/chassis/motherboard/dimm31', 319 }, 320 'FRU_STR': { 321 'PRODUCT_0': '<inventory_root>/system/bios', 322 'BOARD_1': '<inventory_root>/system/chassis/motherboard/cpu0', 323 'BOARD_2': '<inventory_root>/system/chassis/motherboard/cpu1', 324 'CHASSIS_3': '<inventory_root>/system/chassis/motherboard', 325 'BOARD_3': '<inventory_root>/system/misc', 326 'BOARD_4': '<inventory_root>/system/chassis/motherboard/membuf0', 327 'BOARD_5': '<inventory_root>/system/chassis/motherboard/membuf1', 328 'BOARD_6': '<inventory_root>/system/chassis/motherboard/membuf2', 329 'BOARD_7': '<inventory_root>/system/chassis/motherboard/membuf3', 330 'BOARD_8': '<inventory_root>/system/chassis/motherboard/membuf4', 331 'BOARD_9': '<inventory_root>/system/chassis/motherboard/membuf5', 332 'BOARD_10': '<inventory_root>/system/chassis/motherboard/membuf6', 333 'BOARD_11': '<inventory_root>/system/chassis/motherboard/membuf7', 334 'PRODUCT_12': '<inventory_root>/system/chassis/motherboard/dimm0', 335 'PRODUCT_13': '<inventory_root>/system/chassis/motherboard/dimm1', 336 'PRODUCT_14': '<inventory_root>/system/chassis/motherboard/dimm2', 337 'PRODUCT_15': '<inventory_root>/system/chassis/motherboard/dimm3', 338 'PRODUCT_16': '<inventory_root>/system/chassis/motherboard/dimm4', 339 'PRODUCT_17': '<inventory_root>/system/chassis/motherboard/dimm5', 340 'PRODUCT_18': '<inventory_root>/system/chassis/motherboard/dimm6', 341 'PRODUCT_19': '<inventory_root>/system/chassis/motherboard/dimm7', 342 'PRODUCT_20': '<inventory_root>/system/chassis/motherboard/dimm8', 343 'PRODUCT_21': '<inventory_root>/system/chassis/motherboard/dimm9', 344 'PRODUCT_22': '<inventory_root>/system/chassis/motherboard/dimm10', 345 'PRODUCT_23': '<inventory_root>/system/chassis/motherboard/dimm11', 346 'PRODUCT_24': '<inventory_root>/system/chassis/motherboard/dimm12', 347 'PRODUCT_25': '<inventory_root>/system/chassis/motherboard/dimm13', 348 'PRODUCT_26': '<inventory_root>/system/chassis/motherboard/dimm14', 349 'PRODUCT_27': '<inventory_root>/system/chassis/motherboard/dimm15', 350 'PRODUCT_28': '<inventory_root>/system/chassis/motherboard/dimm16', 351 'PRODUCT_29': '<inventory_root>/system/chassis/motherboard/dimm17', 352 'PRODUCT_30': '<inventory_root>/system/chassis/motherboard/dimm18', 353 'PRODUCT_31': '<inventory_root>/system/chassis/motherboard/dimm19', 354 'PRODUCT_32': '<inventory_root>/system/chassis/motherboard/dimm20', 355 'PRODUCT_33': '<inventory_root>/system/chassis/motherboard/dimm21', 356 'PRODUCT_34': '<inventory_root>/system/chassis/motherboard/dimm22', 357 'PRODUCT_35': '<inventory_root>/system/chassis/motherboard/dimm23', 358 'PRODUCT_36': '<inventory_root>/system/chassis/motherboard/dimm24', 359 'PRODUCT_37': '<inventory_root>/system/chassis/motherboard/dimm25', 360 'PRODUCT_38': '<inventory_root>/system/chassis/motherboard/dimm26', 361 'PRODUCT_39': '<inventory_root>/system/chassis/motherboard/dimm27', 362 'PRODUCT_40': '<inventory_root>/system/chassis/motherboard/dimm28', 363 'PRODUCT_41': '<inventory_root>/system/chassis/motherboard/dimm29', 364 'PRODUCT_42': '<inventory_root>/system/chassis/motherboard/dimm30', 365 'PRODUCT_43': '<inventory_root>/system/chassis/motherboard/dimm31', 366 'PRODUCT_47': '<inventory_root>/system/misc', 367 }, 368 'SENSOR': { 369 0x04: '/org/openbmc/sensors/host/HostStatus', 370 0x03: '/org/openbmc/sensors/host/BootProgress', 371 0xfc: '/org/openbmc/sensors/host/cpu0/OccStatus', 372 0xfd: '/org/openbmc/sensors/host/cpu1/OccStatus', 373 0x5a: '<inventory_root>/system/chassis/motherboard/cpu0', 374 0xa4: '<inventory_root>/system/chassis/motherboard/cpu1', 375 0x1e: '<inventory_root>/system/chassis/motherboard/dimm3', 376 0x1f: '<inventory_root>/system/chassis/motherboard/dimm2', 377 0x20: '<inventory_root>/system/chassis/motherboard/dimm1', 378 0x21: '<inventory_root>/system/chassis/motherboard/dimm0', 379 0x22: '<inventory_root>/system/chassis/motherboard/dimm7', 380 0x23: '<inventory_root>/system/chassis/motherboard/dimm6', 381 0x24: '<inventory_root>/system/chassis/motherboard/dimm5', 382 0x25: '<inventory_root>/system/chassis/motherboard/dimm4', 383 0x26: '<inventory_root>/system/chassis/motherboard/dimm11', 384 0x27: '<inventory_root>/system/chassis/motherboard/dimm10', 385 0x28: '<inventory_root>/system/chassis/motherboard/dimm9', 386 0x29: '<inventory_root>/system/chassis/motherboard/dimm8', 387 0x2a: '<inventory_root>/system/chassis/motherboard/dimm15', 388 0x2b: '<inventory_root>/system/chassis/motherboard/dimm14', 389 0x2c: '<inventory_root>/system/chassis/motherboard/dimm13', 390 0x2d: '<inventory_root>/system/chassis/motherboard/dimm12', 391 0x2e: '<inventory_root>/system/chassis/motherboard/dimm19', 392 0x2f: '<inventory_root>/system/chassis/motherboard/dimm18', 393 0x30: '<inventory_root>/system/chassis/motherboard/dimm17', 394 0x31: '<inventory_root>/system/chassis/motherboard/dimm16', 395 0x32: '<inventory_root>/system/chassis/motherboard/dimm23', 396 0x33: '<inventory_root>/system/chassis/motherboard/dimm22', 397 0x34: '<inventory_root>/system/chassis/motherboard/dimm21', 398 0x35: '<inventory_root>/system/chassis/motherboard/dimm20', 399 0x36: '<inventory_root>/system/chassis/motherboard/dimm27', 400 0x37: '<inventory_root>/system/chassis/motherboard/dimm26', 401 0x38: '<inventory_root>/system/chassis/motherboard/dimm25', 402 0x39: '<inventory_root>/system/chassis/motherboard/dimm24', 403 0x3a: '<inventory_root>/system/chassis/motherboard/dimm31', 404 0x3b: '<inventory_root>/system/chassis/motherboard/dimm30', 405 0x3c: '<inventory_root>/system/chassis/motherboard/dimm29', 406 0x3d: '<inventory_root>/system/chassis/motherboard/dimm28', 407 0x3e: '<inventory_root>/system/chassis/motherboard/cpu0/core0', 408 0x3f: '<inventory_root>/system/chassis/motherboard/cpu0/core1', 409 0x40: '<inventory_root>/system/chassis/motherboard/cpu0/core2', 410 0x41: '<inventory_root>/system/chassis/motherboard/cpu0/core3', 411 0x42: '<inventory_root>/system/chassis/motherboard/cpu0/core4', 412 0x43: '<inventory_root>/system/chassis/motherboard/cpu0/core5', 413 0x44: '<inventory_root>/system/chassis/motherboard/cpu0/core6', 414 0x45: '<inventory_root>/system/chassis/motherboard/cpu0/core7', 415 0x46: '<inventory_root>/system/chassis/motherboard/cpu0/core8', 416 0x47: '<inventory_root>/system/chassis/motherboard/cpu0/core9', 417 0x48: '<inventory_root>/system/chassis/motherboard/cpu0/core10', 418 0x49: '<inventory_root>/system/chassis/motherboard/cpu0/core11', 419 0x4a: '<inventory_root>/system/chassis/motherboard/cpu1/core0', 420 0x4b: '<inventory_root>/system/chassis/motherboard/cpu1/core1', 421 0x4c: '<inventory_root>/system/chassis/motherboard/cpu1/core2', 422 0x4d: '<inventory_root>/system/chassis/motherboard/cpu1/core3', 423 0x4e: '<inventory_root>/system/chassis/motherboard/cpu1/core4', 424 0x4f: '<inventory_root>/system/chassis/motherboard/cpu1/core5', 425 0x50: '<inventory_root>/system/chassis/motherboard/cpu1/core6', 426 0x51: '<inventory_root>/system/chassis/motherboard/cpu1/core7', 427 0x52: '<inventory_root>/system/chassis/motherboard/cpu1/core8', 428 0x53: '<inventory_root>/system/chassis/motherboard/cpu1/core9', 429 0x54: '<inventory_root>/system/chassis/motherboard/cpu1/core10', 430 0x55: '<inventory_root>/system/chassis/motherboard/cpu1/core11', 431 0x56: '<inventory_root>/system/chassis/motherboard/membuf0', 432 0x57: '<inventory_root>/system/chassis/motherboard/membuf1', 433 0x58: '<inventory_root>/system/chassis/motherboard/membuf2', 434 0x59: '<inventory_root>/system/chassis/motherboard/membuf3', 435 0x5a: '<inventory_root>/system/chassis/motherboard/membuf4', 436 0x5b: '<inventory_root>/system/chassis/motherboard/membuf5', 437 0x5c: '<inventory_root>/system/chassis/motherboard/membuf6', 438 0x5d: '<inventory_root>/system/chassis/motherboard/membuf7', 439 0x07: '/org/openbmc/sensors/host/BootCount', 440 0x60: '<inventory_root>/system/chassis/motherboard', 441 0x61: '<inventory_root>/system/systemevent', 442 0x62: '<inventory_root>/system/powerlimit', 443 0x63: '<inventory_root>/system/chassis/motherboard/refclock', 444 0x64: '<inventory_root>/system/chassis/motherboard/pcieclock', 445 0xb1: '<inventory_root>/system/chassis/motherboard/todclock', 446 0xb2: '<inventory_root>/system/chassis/motherboard/apss', 447 0xb3: '/org/openbmc/sensors/host/powercap', 448 0x02: '/org/openbmc/sensors/host/OperatingSystemStatus', 449 0xb6: '<inventory_root>/system/chassis/motherboard/pcielink', 450 0xD8: '/org/openbmc/sensors/host/PowerSupplyRedundancy', 451 0xb4: '/org/openbmc/sensors/host/PowerSupplyDerating', 452 0xda: '/org/openbmc/sensors/host/TurboAllowed', 453 }, 454 'GPIO_PRESENT': {} 455} 456 457GPIO_CONFIG = {} 458GPIO_CONFIG['BMC_POWER_UP'] = \ 459 {'gpio_pin': 'D1', 'direction': 'out'} 460GPIO_CONFIG['SYS_PWROK_BUFF'] = \ 461 {'gpio_pin': 'D2', 'direction': 'in'} 462GPIO_CONFIG['BMC_WD_CLEAR_PULSE_N'] = \ 463 {'gpio_pin': 'N5', 'direction': 'out'} 464GPIO_CONFIG['CHECKSTOP'] = \ 465 {'gpio_pin': 'J2', 'direction': 'falling'} 466 467# witherspoon: not connect 468# GPIO_CONFIG['CM1_OE_R_N'] = \ 469# {'gpio_pin': 'A2', 'direction': 'out'} 470 471GPIO_CONFIG['BMC_CP0_RESET_N'] = \ 472 {'gpio_pin': 'A1', 'direction': 'out'} 473 474# witherspoon: No centaur 475# GPIO_CONFIG['BMC_CFAM_RESET_N_R'] = \ 476# {'gpio_pin': 'J2', 'direction': 'out'} 477 478 479# FIXME: reset pcie switch, looks like BMC_VS1_PERST_N , see workbook fig.46 480# GPIO_CONFIG['PEX8718_DEVICES_RESET_N'] = \ 481# {'gpio_pin': 'B7', 'direction': 'out'} 482GPIO_CONFIG['BMC_VS1_PERST_N'] = \ 483 {'gpio_pin': 'B7', 'direction': 'out'} 484 485# FIXME: reset pcie slots, looks like BMC_CP0_PERST_ENABLE_R, see workbook fig.46 486# firestone: gpiog1, gpiog2 487# GPIO_CONFIG['CP0_DEVICES_RESET_N'] = \ 488# {'gpio_pin': 'B1', 'direction': 'out'} 489# FIXME: G2 for Firestone.. Witherspoon: no 490# GPIO_CONFIG['CP1_DEVICES_RESET_N'] = \ 491# {'gpio_pin': 'A1', 'direction': 'out'} 492GPIO_CONFIG['BMC_CP0_PERST_ENABLE_R'] = \ 493 {'gpio_pin': 'A3', 'direction': 'out'} 494 495# FIXME: witherspoon: SOFT_FSI_CLK: AA0, SOFT_FSI_DAT: E0, see workbook fig.44 496GPIO_CONFIG['FSI_DATA'] = \ 497 {'gpio_pin': 'E0', 'direction': 'out'} 498GPIO_CONFIG['FSI_CLK'] = \ 499 {'gpio_pin': 'AA0', 'direction': 'out'} 500GPIO_CONFIG['FSI_ENABLE'] = \ 501 {'gpio_pin': 'D0', 'direction': 'out'} 502 503# FIXME: both witherspoon and garrison, gpioa6 is FSI_JMFG0_PRSNT_N 504GPIO_CONFIG['CRONUS_SEL'] = \ 505 {'gpio_pin': 'A6', 'direction': 'out'} 506 507# FIXME: ?? firestone gpioj3 is NC 508# GPIO_CONFIG['BMC_THROTTLE'] = \ 509# {'gpio_pin': 'J3', 'direction': 'out'} 510 511# FIXME: ?? witherspoon: FP_ID_BTN_N_R, firestone: PD_BMC_IDBTN_IN_OUT_N - it is not connected 512GPIO_CONFIG['IDBTN'] = \ 513 {'gpio_pin': 'Q7', 'direction': 'out'} 514 515# FIXME: witherspoon: FP_PWR_BTN_N, firstone: NC_BMC_PWBTN_IN_N gpioe0 - not connected 516GPIO_CONFIG['POWER_BUTTON'] = \ 517 {'gpio_pin': 'I3', 'direction': 'both'} 518# witherspoon: BMC_NMIBTN_IN_N, firestone: BMC_NMIBTN_IN_N 519GPIO_CONFIG['RESET_BUTTON'] = \ 520 {'gpio_pin': 'J1', 'direction': 'both'} 521 522GPIO_CONFIG['PS0_PRES_N'] = \ 523 {'gpio_pin': 'P7', 'direction': 'in'} 524GPIO_CONFIG['PS1_PRES_N'] = \ 525 {'gpio_pin': 'N0', 'direction': 'in'} 526# witherspoon: CARD_PRES_N 527GPIO_CONFIG['CARD_PRES_N'] = \ 528 {'gpio_pin': 'I0', 'direction': 'in'} 529 530 531def convertGpio(name): 532 name = name.upper() 533 c = name[0:1] 534 offset = int(name[1:]) 535 a = ord(c)-65 536 base = a*8+GPIO_BASE 537 return base+offset 538 539 540HWMON_CONFIG = { 541 '4-0050': { 542 'names': { 543 'caps_curr_powercap': {'object_path': 'powercap/curr_cap', 'poll_interval': 10000, 'scale': 1, 'units': 'W'}, 544 'caps_curr_powerreading': {'object_path': 'powercap/system_power', 'poll_interval': 10000, 'scale': 1, 'units': 'W'}, 545 'caps_max_powercap': {'object_path': 'powercap/max_cap', 'poll_interval': 10000, 'scale': 1, 'units': 'W'}, 546 'caps_min_powercap': {'object_path': 'powercap/min_cap', 'poll_interval': 10000, 'scale': 1, 'units': 'W'}, 547 'caps_norm_powercap': {'object_path': 'powercap/n_cap', 'poll_interval': 10000, 'scale': 1, 'units': 'W'}, 548 'caps_user_powerlimit': {'object_path': 'powercap/user_cap', 'poll_interval': 10000, 'scale': 1, 'units': 'W'}, 549 }, 550 'labels': { 551 '176': {'object_path': 'temperature/cpu0/core0', 'poll_interval': 5000, 'scale': -3, 'units': 'C', 552 'critical_upper': 100, 'critical_lower': -100, 'warning_upper': 90, 'warning_lower': -99, 'emergency_enabled': True}, 553 '177': {'object_path': 'temperature/cpu0/core1', 'poll_interval': 5000, 'scale': -3, 'units': 'C', 554 'critical_upper': 100, 'critical_lower': -100, 'warning_upper': 90, 'warning_lower': -99, 'emergency_enabled': True}, 555 '178': {'object_path': 'temperature/cpu0/core2', 'poll_interval': 5000, 'scale': -3, 'units': 'C', 556 'critical_upper': 100, 'critical_lower': -100, 'warning_upper': 90, 'warning_lower': -99, 'emergency_enabled': True}, 557 '179': {'object_path': 'temperature/cpu0/core3', 'poll_interval': 5000, 'scale': -3, 'units': 'C', 558 'critical_upper': 100, 'critical_lower': -100, 'warning_upper': 90, 'warning_lower': -99, 'emergency_enabled': True}, 559 '180': {'object_path': 'temperature/cpu0/core4', 'poll_interval': 5000, 'scale': -3, 'units': 'C', 560 'critical_upper': 100, 'critical_lower': -100, 'warning_upper': 90, 'warning_lower': -99, 'emergency_enabled': True}, 561 '181': {'object_path': 'temperature/cpu0/core5', 'poll_interval': 5000, 'scale': -3, 'units': 'C', 562 'critical_upper': 100, 'critical_lower': -100, 'warning_upper': 90, 'warning_lower': -99, 'emergency_enabled': True}, 563 '182': {'object_path': 'temperature/cpu0/core6', 'poll_interval': 5000, 'scale': -3, 'units': 'C', 564 'critical_upper': 100, 'critical_lower': -100, 'warning_upper': 90, 'warning_lower': -99, 'emergency_enabled': True}, 565 '183': {'object_path': 'temperature/cpu0/core7', 'poll_interval': 5000, 'scale': -3, 'units': 'C', 566 'critical_upper': 100, 'critical_lower': -100, 'warning_upper': 90, 'warning_lower': -99, 'emergency_enabled': True}, 567 '184': {'object_path': 'temperature/cpu0/core8', 'poll_interval': 5000, 'scale': -3, 'units': 'C', 568 'critical_upper': 100, 'critical_lower': -100, 'warning_upper': 90, 'warning_lower': -99, 'emergency_enabled': True}, 569 '185': {'object_path': 'temperature/cpu0/core9', 'poll_interval': 5000, 'scale': -3, 'units': 'C', 570 'critical_upper': 100, 'critical_lower': -100, 'warning_upper': 90, 'warning_lower': -99, 'emergency_enabled': True}, 571 '186': {'object_path': 'temperature/cpu0/core10', 'poll_interval': 5000, 'scale': -3, 'units': 'C', 572 'critical_upper': 100, 'critical_lower': -100, 'warning_upper': 90, 'warning_lower': -99, 'emergency_enabled': True}, 573 '187': {'object_path': 'temperature/cpu0/core11', 'poll_interval': 5000, 'scale': -3, 'units': 'C', 574 'critical_upper': 100, 'critical_lower': -100, 'warning_upper': 90, 'warning_lower': -99, 'emergency_enabled': True}, 575 '102': {'object_path': 'temperature/dimm0', 'poll_interval': 5000, 'scale': -3, 'units': 'C'}, 576 '103': {'object_path': 'temperature/dimm1', 'poll_interval': 5000, 'scale': -3, 'units': 'C'}, 577 '104': {'object_path': 'temperature/dimm2', 'poll_interval': 5000, 'scale': -3, 'units': 'C'}, 578 '105': {'object_path': 'temperature/dimm3', 'poll_interval': 5000, 'scale': -3, 'units': 'C'}, 579 '106': {'object_path': 'temperature/dimm4', 'poll_interval': 5000, 'scale': -3, 'units': 'C'}, 580 '107': {'object_path': 'temperature/dimm5', 'poll_interval': 5000, 'scale': -3, 'units': 'C'}, 581 '108': {'object_path': 'temperature/dimm6', 'poll_interval': 5000, 'scale': -3, 'units': 'C'}, 582 '109': {'object_path': 'temperature/dimm7', 'poll_interval': 5000, 'scale': -3, 'units': 'C'}, 583 '110': {'object_path': 'temperature/dimm8', 'poll_interval': 5000, 'scale': -3, 'units': 'C'}, 584 '111': {'object_path': 'temperature/dimm9', 'poll_interval': 5000, 'scale': -3, 'units': 'C'}, 585 '112': {'object_path': 'temperature/dimm10', 'poll_interval': 5000, 'scale': -3, 'units': 'C'}, 586 '113': {'object_path': 'temperature/dimm11', 'poll_interval': 5000, 'scale': -3, 'units': 'C'}, 587 '114': {'object_path': 'temperature/dimm12', 'poll_interval': 5000, 'scale': -3, 'units': 'C'}, 588 '115': {'object_path': 'temperature/dimm13', 'poll_interval': 5000, 'scale': -3, 'units': 'C'}, 589 '116': {'object_path': 'temperature/dimm14', 'poll_interval': 5000, 'scale': -3, 'units': 'C'}, 590 '117': {'object_path': 'temperature/dimm15', 'poll_interval': 5000, 'scale': -3, 'units': 'C'}, 591 '94': {'object_path': 'temperature/membuf0', 'poll_interval': 5000, 'scale': -3, 'units': 'C'}, 592 '95': {'object_path': 'temperature/membuf1', 'poll_interval': 5000, 'scale': -3, 'units': 'C'}, 593 '96': {'object_path': 'temperature/membuf2', 'poll_interval': 5000, 'scale': -3, 'units': 'C'}, 594 '97': {'object_path': 'temperature/membuf3', 'poll_interval': 5000, 'scale': -3, 'units': 'C'}, 595 } 596 }, 597 '5-0050': { 598 'labels': { 599 '188': {'object_path': 'temperature/cpu1/core0', 'poll_interval': 5000, 'scale': -3, 'units': 'C', 600 'critical_upper': 100, 'critical_lower': -100, 'warning_upper': 90, 'warning_lower': -99, 'emergency_enabled': True}, 601 '189': {'object_path': 'temperature/cpu1/core1', 'poll_interval': 5000, 'scale': -3, 'units': 'C', 602 'critical_upper': 100, 'critical_lower': -100, 'warning_upper': 90, 'warning_lower': -99, 'emergency_enabled': True}, 603 '190': {'object_path': 'temperature/cpu1/core2', 'poll_interval': 5000, 'scale': -3, 'units': 'C', 604 'critical_upper': 100, 'critical_lower': -100, 'warning_upper': 90, 'warning_lower': -99, 'emergency_enabled': True}, 605 '191': {'object_path': 'temperature/cpu1/core3', 'poll_interval': 5000, 'scale': -3, 'units': 'C', 606 'critical_upper': 100, 'critical_lower': -100, 'warning_upper': 90, 'warning_lower': -99, 'emergency_enabled': True}, 607 '192': {'object_path': 'temperature/cpu1/core4', 'poll_interval': 5000, 'scale': -3, 'units': 'C', 608 'critical_upper': 100, 'critical_lower': -100, 'warning_upper': 90, 'warning_lower': -99, 'emergency_enabled': True}, 609 '193': {'object_path': 'temperature/cpu1/core5', 'poll_interval': 5000, 'scale': -3, 'units': 'C', 610 'critical_upper': 100, 'critical_lower': -100, 'warning_upper': 90, 'warning_lower': -99, 'emergency_enabled': True}, 611 '194': {'object_path': 'temperature/cpu1/core6', 'poll_interval': 5000, 'scale': -3, 'units': 'C', 612 'critical_upper': 100, 'critical_lower': -100, 'warning_upper': 90, 'warning_lower': -99, 'emergency_enabled': True}, 613 '195': {'object_path': 'temperature/cpu1/core7', 'poll_interval': 5000, 'scale': -3, 'units': 'C', 614 'critical_upper': 100, 'critical_lower': -100, 'warning_upper': 90, 'warning_lower': -99, 'emergency_enabled': True}, 615 '196': {'object_path': 'temperature/cpu1/core8', 'poll_interval': 5000, 'scale': -3, 'units': 'C', 616 'critical_upper': 100, 'critical_lower': -100, 'warning_upper': 90, 'warning_lower': -99, 'emergency_enabled': True}, 617 '197': {'object_path': 'temperature/cpu1/core9', 'poll_interval': 5000, 'scale': -3, 'units': 'C', 618 'critical_upper': 100, 'critical_lower': -100, 'warning_upper': 90, 'warning_lower': -99, 'emergency_enabled': True}, 619 '198': {'object_path': 'temperature/cpu1/core10', 'poll_interval': 5000, 'scale': -3, 'units': 'C', 620 'critical_upper': 100, 'critical_lower': -100, 'warning_upper': 90, 'warning_lower': -99, 'emergency_enabled': True}, 621 '199': {'object_path': 'temperature/cpu1/core11', 'poll_interval': 5000, 'scale': -3, 'units': 'C', 622 'critical_upper': 100, 'critical_lower': -100, 'warning_upper': 90, 'warning_lower': -99, 'emergency_enabled': True}, 623 '118': {'object_path': 'temperature/dimm16', 'poll_interval': 5000, 'scale': -3, 'units': 'C'}, 624 '119': {'object_path': 'temperature/dimm17', 'poll_interval': 5000, 'scale': -3, 'units': 'C'}, 625 '120': {'object_path': 'temperature/dimm18', 'poll_interval': 5000, 'scale': -3, 'units': 'C'}, 626 '121': {'object_path': 'temperature/dimm19', 'poll_interval': 5000, 'scale': -3, 'units': 'C'}, 627 '122': {'object_path': 'temperature/dimm20', 'poll_interval': 5000, 'scale': -3, 'units': 'C'}, 628 '123': {'object_path': 'temperature/dimm21', 'poll_interval': 5000, 'scale': -3, 'units': 'C'}, 629 '124': {'object_path': 'temperature/dimm22', 'poll_interval': 5000, 'scale': -3, 'units': 'C'}, 630 '125': {'object_path': 'temperature/dimm23', 'poll_interval': 5000, 'scale': -3, 'units': 'C'}, 631 '126': {'object_path': 'temperature/dimm24', 'poll_interval': 5000, 'scale': -3, 'units': 'C'}, 632 '127': {'object_path': 'temperature/dimm25', 'poll_interval': 5000, 'scale': -3, 'units': 'C'}, 633 '128': {'object_path': 'temperature/dimm26', 'poll_interval': 5000, 'scale': -3, 'units': 'C'}, 634 '129': {'object_path': 'temperature/dimm27', 'poll_interval': 5000, 'scale': -3, 'units': 'C'}, 635 '130': {'object_path': 'temperature/dimm28', 'poll_interval': 5000, 'scale': -3, 'units': 'C'}, 636 '131': {'object_path': 'temperature/dimm29', 'poll_interval': 5000, 'scale': -3, 'units': 'C'}, 637 '132': {'object_path': 'temperature/dimm30', 'poll_interval': 5000, 'scale': -3, 'units': 'C'}, 638 '133': {'object_path': 'temperature/dimm31', 'poll_interval': 5000, 'scale': -3, 'units': 'C'}, 639 '98': {'object_path': 'temperature/membuf4', 'poll_interval': 5000, 'scale': -3, 'units': 'C'}, 640 '99': {'object_path': 'temperature/membuf5', 'poll_interval': 5000, 'scale': -3, 'units': 'C'}, 641 '100': {'object_path': 'temperature/membuf6', 'poll_interval': 5000, 'scale': -3, 'units': 'C'}, 642 '101': {'object_path': 'temperature/membuf7', 'poll_interval': 5000, 'scale': -3, 'units': 'C'}, 643 } 644 }, 645} 646 647# Miscellaneous non-poll sensor with system specific properties. 648# The sensor id is the same as those defined in ID_LOOKUP['SENSOR']. 649MISC_SENSORS = { 650 0x5f: {'class': 'BootCountSensor'}, 651 0x05: {'class': 'BootProgressSensor'}, 652 0x08: {'class': 'OccStatusSensor', 653 'os_path': '/sys/class/i2c-adapter/i2c-3/3-0050/online'}, 654 0x09: {'class': 'OccStatusSensor', 655 'os_path': '/sys/class/i2c-adapter/i2c-3/3-0051/online'}, 656 0xb5: {'class': 'OperatingSystemStatusSensor'}, 657 0xb3: {'class': 'PowerCap', 658 'os_path': '/sys/class/hwmon/hwmon3/user_powercap'}, 659} 660