#! /usr/bin/python # System states # state can change to next state in 2 ways: # - a process emits a GotoSystemState signal with state name to goto # - objects specified in EXIT_STATE_DEPEND have started SYSTEM_STATES = [ 'BASE_APPS', 'BMC_STARTING', 'BMC_READY', 'HOST_POWERING_ON', 'HOST_POWERED_ON', 'HOST_BOOTING', 'HOST_BOOTED', 'HOST_POWERED_OFF', ] EXIT_STATE_DEPEND = { 'BASE_APPS': { '/org/openbmc/sensors': 0, }, 'BMC_STARTING': { '/org/openbmc/control/chassis0': 0, '/org/openbmc/control/power0': 0, '/org/openbmc/control/flash/bios': 0, }, } FRU_INSTANCES = { '/system': {'fru_type': 'SYSTEM', 'is_fru': True, 'present': "True"}, '/system/bios': {'fru_type': 'SYSTEM', 'is_fru': True, 'present': "True"}, '/system/misc': {'fru_type': 'SYSTEM', 'is_fru': False, }, '/system/chassis': {'fru_type': 'SYSTEM', 'is_fru': True, 'present': "True"}, '/system/chassis/motherboard': {'fru_type': 'MAIN_PLANAR', 'is_fru': True, }, '/system/systemevent': {'fru_type': 'SYSTEM_EVENT', 'is_fru': False, }, '/system/chassis/motherboard/refclock': {'fru_type': 'MAIN_PLANAR', 'is_fru': False, }, '/system/chassis/motherboard/pcieclock': {'fru_type': 'MAIN_PLANAR', 'is_fru': False, }, '/system/chassis/motherboard/todclock': {'fru_type': 'MAIN_PLANAR', 'is_fru': False, }, '/system/chassis/motherboard/apss': {'fru_type': 'MAIN_PLANAR', 'is_fru': False, }, '/system/chassis/fan0': {'fru_type': 'FAN', 'is_fru': True, }, '/system/chassis/fan1': {'fru_type': 'FAN', 'is_fru': True, }, '/system/chassis/fan2': {'fru_type': 'FAN', 'is_fru': True, }, '/system/chassis/fan3': {'fru_type': 'FAN', 'is_fru': True, }, '/system/chassis/motherboard/bmc': {'fru_type': 'BMC', 'is_fru': False, 'manufacturer': 'ASPEED'}, '/system/chassis/motherboard/cpu0': {'fru_type': 'CPU', 'is_fru': True, }, '/system/chassis/motherboard/cpu1': {'fru_type': 'CPU', 'is_fru': True, }, '/system/chassis/motherboard/cpu0/core0': {'fru_type': 'CORE', 'is_fru': False, }, '/system/chassis/motherboard/cpu0/core1': {'fru_type': 'CORE', 'is_fru': False, }, '/system/chassis/motherboard/cpu0/core2': {'fru_type': 'CORE', 'is_fru': False, }, '/system/chassis/motherboard/cpu0/core3': {'fru_type': 'CORE', 'is_fru': False, }, '/system/chassis/motherboard/cpu0/core4': {'fru_type': 'CORE', 'is_fru': False, }, '/system/chassis/motherboard/cpu0/core5': {'fru_type': 'CORE', 'is_fru': False, }, '/system/chassis/motherboard/cpu0/core6': {'fru_type': 'CORE', 'is_fru': False, }, '/system/chassis/motherboard/cpu0/core7': {'fru_type': 'CORE', 'is_fru': False, }, '/system/chassis/motherboard/cpu0/core8': {'fru_type': 'CORE', 'is_fru': False, }, '/system/chassis/motherboard/cpu0/core9': {'fru_type': 'CORE', 'is_fru': False, }, '/system/chassis/motherboard/cpu0/core10': {'fru_type': 'CORE', 'is_fru': False, }, '/system/chassis/motherboard/cpu0/core11': {'fru_type': 'CORE', 'is_fru': False, }, '/system/chassis/motherboard/cpu1/core0': {'fru_type': 'CORE', 'is_fru': False, }, '/system/chassis/motherboard/cpu1/core1': {'fru_type': 'CORE', 'is_fru': False, }, '/system/chassis/motherboard/cpu1/core2': {'fru_type': 'CORE', 'is_fru': False, }, '/system/chassis/motherboard/cpu1/core3': {'fru_type': 'CORE', 'is_fru': False, }, '/system/chassis/motherboard/cpu1/core4': {'fru_type': 'CORE', 'is_fru': False, }, '/system/chassis/motherboard/cpu1/core5': {'fru_type': 'CORE', 'is_fru': False, }, '/system/chassis/motherboard/cpu1/core6': {'fru_type': 'CORE', 'is_fru': False, }, '/system/chassis/motherboard/cpu1/core7': {'fru_type': 'CORE', 'is_fru': False, }, '/system/chassis/motherboard/cpu1/core8': {'fru_type': 'CORE', 'is_fru': False, }, '/system/chassis/motherboard/cpu1/core9': {'fru_type': 'CORE', 'is_fru': False, }, '/system/chassis/motherboard/cpu1/core10': {'fru_type': 'CORE', 'is_fru': False, }, '/system/chassis/motherboard/cpu1/core11': {'fru_type': 'CORE', 'is_fru': False, }, '/system/chassis/motherboard/membuf0': {'fru_type': 'MEMORY_BUFFER', 'is_fru': False, }, '/system/chassis/motherboard/membuf1': {'fru_type': 'MEMORY_BUFFER', 'is_fru': False, }, '/system/chassis/motherboard/membuf2': {'fru_type': 'MEMORY_BUFFER', 'is_fru': False, }, '/system/chassis/motherboard/membuf3': {'fru_type': 'MEMORY_BUFFER', 'is_fru': False, }, '/system/chassis/motherboard/membuf4': {'fru_type': 'MEMORY_BUFFER', 'is_fru': False, }, '/system/chassis/motherboard/membuf5': {'fru_type': 'MEMORY_BUFFER', 'is_fru': False, }, '/system/chassis/motherboard/membuf6': {'fru_type': 'MEMORY_BUFFER', 'is_fru': False, }, '/system/chassis/motherboard/membuf7': {'fru_type': 'MEMORY_BUFFER', 'is_fru': False, }, '/system/chassis/motherboard/dimm0': {'fru_type': 'DIMM', 'is_fru': True, }, '/system/chassis/motherboard/dimm1': {'fru_type': 'DIMM', 'is_fru': True, }, '/system/chassis/motherboard/dimm2': {'fru_type': 'DIMM', 'is_fru': True, }, '/system/chassis/motherboard/dimm3': {'fru_type': 'DIMM', 'is_fru': True, }, '/system/chassis/motherboard/dimm4': {'fru_type': 'DIMM', 'is_fru': True, }, '/system/chassis/motherboard/dimm5': {'fru_type': 'DIMM', 'is_fru': True, }, '/system/chassis/motherboard/dimm6': {'fru_type': 'DIMM', 'is_fru': True, }, '/system/chassis/motherboard/dimm7': {'fru_type': 'DIMM', 'is_fru': True, }, '/system/chassis/motherboard/dimm8': {'fru_type': 'DIMM', 'is_fru': True, }, '/system/chassis/motherboard/dimm9': {'fru_type': 'DIMM', 'is_fru': True, }, '/system/chassis/motherboard/dimm10': {'fru_type': 'DIMM', 'is_fru': True, }, '/system/chassis/motherboard/dimm11': {'fru_type': 'DIMM', 'is_fru': True, }, '/system/chassis/motherboard/dimm12': {'fru_type': 'DIMM', 'is_fru': True, }, '/system/chassis/motherboard/dimm13': {'fru_type': 'DIMM', 'is_fru': True, }, '/system/chassis/motherboard/dimm14': {'fru_type': 'DIMM', 'is_fru': True, }, '/system/chassis/motherboard/dimm15': {'fru_type': 'DIMM', 'is_fru': True, }, '/system/chassis/motherboard/dimm16': {'fru_type': 'DIMM', 'is_fru': True, }, '/system/chassis/motherboard/dimm17': {'fru_type': 'DIMM', 'is_fru': True, }, '/system/chassis/motherboard/dimm18': {'fru_type': 'DIMM', 'is_fru': True, }, '/system/chassis/motherboard/dimm19': {'fru_type': 'DIMM', 'is_fru': True, }, '/system/chassis/motherboard/dimm20': {'fru_type': 'DIMM', 'is_fru': True, }, '/system/chassis/motherboard/dimm21': {'fru_type': 'DIMM', 'is_fru': True, }, '/system/chassis/motherboard/dimm22': {'fru_type': 'DIMM', 'is_fru': True, }, '/system/chassis/motherboard/dimm23': {'fru_type': 'DIMM', 'is_fru': True, }, '/system/chassis/motherboard/dimm24': {'fru_type': 'DIMM', 'is_fru': True, }, '/system/chassis/motherboard/dimm25': {'fru_type': 'DIMM', 'is_fru': True, }, '/system/chassis/motherboard/dimm26': {'fru_type': 'DIMM', 'is_fru': True, }, '/system/chassis/motherboard/dimm27': {'fru_type': 'DIMM', 'is_fru': True, }, '/system/chassis/motherboard/dimm28': {'fru_type': 'DIMM', 'is_fru': True, }, '/system/chassis/motherboard/dimm29': {'fru_type': 'DIMM', 'is_fru': True, }, '/system/chassis/motherboard/dimm30': {'fru_type': 'DIMM', 'is_fru': True, }, '/system/chassis/motherboard/dimm31': {'fru_type': 'DIMM', 'is_fru': True, }, } ID_LOOKUP = { 'FRU': { 0x01: '/system/chassis/motherboard/cpu0', 0x02: '/system/chassis/motherboard/cpu1', 0x03: '/system/chassis/motherboard', 0x04: '/system/chassis/motherboard/membuf0', 0x05: '/system/chassis/motherboard/membuf1', 0x06: '/system/chassis/motherboard/membuf2', 0x07: '/system/chassis/motherboard/membuf3', 0x08: '/system/chassis/motherboard/membuf4', 0x09: '/system/chassis/motherboard/membuf5', 0x0c: '/system/chassis/motherboard/dimm0', 0x0d: '/system/chassis/motherboard/dimm1', 0x0e: '/system/chassis/motherboard/dimm2', 0x0f: '/system/chassis/motherboard/dimm3', 0x10: '/system/chassis/motherboard/dimm4', 0x11: '/system/chassis/motherboard/dimm5', 0x12: '/system/chassis/motherboard/dimm6', 0x13: '/system/chassis/motherboard/dimm7', 0x14: '/system/chassis/motherboard/dimm8', 0x15: '/system/chassis/motherboard/dimm9', 0x16: '/system/chassis/motherboard/dimm10', 0x17: '/system/chassis/motherboard/dimm11', 0x18: '/system/chassis/motherboard/dimm12', 0x19: '/system/chassis/motherboard/dimm13', 0x1a: '/system/chassis/motherboard/dimm14', 0x1b: '/system/chassis/motherboard/dimm15', 0x1c: '/system/chassis/motherboard/dimm16', 0x1d: '/system/chassis/motherboard/dimm17', 0x1e: '/system/chassis/motherboard/dimm18', 0x1f: '/system/chassis/motherboard/dimm19', 0x20: '/system/chassis/motherboard/dimm20', 0x21: '/system/chassis/motherboard/dimm21', 0x22: '/system/chassis/motherboard/dimm22', 0x23: '/system/chassis/motherboard/dimm23', 0x24: '/system/chassis/motherboard/dimm24', 0x25: '/system/chassis/motherboard/dimm25', 0x26: '/system/chassis/motherboard/dimm26', 0x27: '/system/chassis/motherboard/dimm27', 0x28: '/system/chassis/motherboard/dimm28', 0x29: '/system/chassis/motherboard/dimm29', 0x2a: '/system/chassis/motherboard/dimm30', 0x2b: '/system/chassis/motherboard/dimm31', }, 'FRU_STR': { 'PRODUCT_0': '/system/bios', 'BOARD_1': '/system/chassis/motherboard/cpu0', 'BOARD_2': '/system/chassis/motherboard/cpu1', 'CHASSIS_3': '/system/chassis/motherboard', 'BOARD_3': '/system/misc', 'BOARD_4': '/system/chassis/motherboard/membuf0', 'BOARD_5': '/system/chassis/motherboard/membuf1', 'BOARD_6': '/system/chassis/motherboard/membuf2', 'BOARD_7': '/system/chassis/motherboard/membuf3', 'BOARD_8': '/system/chassis/motherboard/membuf4', 'BOARD_9': '/system/chassis/motherboard/membuf5', 'BOARD_10': '/system/chassis/motherboard/membuf6', 'BOARD_11': '/system/chassis/motherboard/membuf7', 'PRODUCT_12': '/system/chassis/motherboard/dimm0', 'PRODUCT_13': '/system/chassis/motherboard/dimm1', 'PRODUCT_14': '/system/chassis/motherboard/dimm2', 'PRODUCT_15': '/system/chassis/motherboard/dimm3', 'PRODUCT_16': '/system/chassis/motherboard/dimm4', 'PRODUCT_17': '/system/chassis/motherboard/dimm5', 'PRODUCT_18': '/system/chassis/motherboard/dimm6', 'PRODUCT_19': '/system/chassis/motherboard/dimm7', 'PRODUCT_20': '/system/chassis/motherboard/dimm8', 'PRODUCT_21': '/system/chassis/motherboard/dimm9', 'PRODUCT_22': '/system/chassis/motherboard/dimm10', 'PRODUCT_23': '/system/chassis/motherboard/dimm11', 'PRODUCT_24': '/system/chassis/motherboard/dimm12', 'PRODUCT_25': '/system/chassis/motherboard/dimm13', 'PRODUCT_26': '/system/chassis/motherboard/dimm14', 'PRODUCT_27': '/system/chassis/motherboard/dimm15', 'PRODUCT_28': '/system/chassis/motherboard/dimm16', 'PRODUCT_29': '/system/chassis/motherboard/dimm17', 'PRODUCT_30': '/system/chassis/motherboard/dimm18', 'PRODUCT_31': '/system/chassis/motherboard/dimm19', 'PRODUCT_32': '/system/chassis/motherboard/dimm20', 'PRODUCT_33': '/system/chassis/motherboard/dimm21', 'PRODUCT_34': '/system/chassis/motherboard/dimm22', 'PRODUCT_35': '/system/chassis/motherboard/dimm23', 'PRODUCT_36': '/system/chassis/motherboard/dimm24', 'PRODUCT_37': '/system/chassis/motherboard/dimm25', 'PRODUCT_38': '/system/chassis/motherboard/dimm26', 'PRODUCT_39': '/system/chassis/motherboard/dimm27', 'PRODUCT_40': '/system/chassis/motherboard/dimm28', 'PRODUCT_41': '/system/chassis/motherboard/dimm29', 'PRODUCT_42': '/system/chassis/motherboard/dimm30', 'PRODUCT_43': '/system/chassis/motherboard/dimm31', 'PRODUCT_47': '/system/misc', }, 'SENSOR': { 0x02: '/org/openbmc/sensors/host/HostStatus', 0x03: '/org/openbmc/sensors/host/BootProgress', 0x5a: '/system/chassis/motherboard/cpu0', 0xa4: '/system/chassis/motherboard/cpu1', 0x1e: '/system/chassis/motherboard/dimm3', 0x1f: '/system/chassis/motherboard/dimm2', 0x20: '/system/chassis/motherboard/dimm1', 0x21: '/system/chassis/motherboard/dimm0', 0x22: '/system/chassis/motherboard/dimm7', 0x23: '/system/chassis/motherboard/dimm6', 0x24: '/system/chassis/motherboard/dimm5', 0x25: '/system/chassis/motherboard/dimm4', 0x26: '/system/chassis/motherboard/dimm11', 0x27: '/system/chassis/motherboard/dimm10', 0x28: '/system/chassis/motherboard/dimm9', 0x29: '/system/chassis/motherboard/dimm8', 0x2a: '/system/chassis/motherboard/dimm15', 0x2b: '/system/chassis/motherboard/dimm14', 0x2c: '/system/chassis/motherboard/dimm13', 0x2d: '/system/chassis/motherboard/dimm12', 0x2e: '/system/chassis/motherboard/dimm19', 0x2f: '/system/chassis/motherboard/dimm18', 0x30: '/system/chassis/motherboard/dimm17', 0x31: '/system/chassis/motherboard/dimm16', 0x32: '/system/chassis/motherboard/dimm23', 0x33: '/system/chassis/motherboard/dimm22', 0x34: '/system/chassis/motherboard/dimm21', 0x35: '/system/chassis/motherboard/dimm20', 0x36: '/system/chassis/motherboard/dimm27', 0x37: '/system/chassis/motherboard/dimm26', 0x38: '/system/chassis/motherboard/dimm25', 0x39: '/system/chassis/motherboard/dimm24', 0x3a: '/system/chassis/motherboard/dimm31', 0x3b: '/system/chassis/motherboard/dimm30', 0x3c: '/system/chassis/motherboard/dimm29', 0x3d: '/system/chassis/motherboard/dimm28', 0x3e: '/system/chassis/motherboard/cpu0/core0', 0x3f: '/system/chassis/motherboard/cpu0/core1', 0x40: '/system/chassis/motherboard/cpu0/core2', 0x41: '/system/chassis/motherboard/cpu0/core3', 0x42: '/system/chassis/motherboard/cpu0/core4', 0x43: '/system/chassis/motherboard/cpu0/core5', 0x44: '/system/chassis/motherboard/cpu0/core6', 0x45: '/system/chassis/motherboard/cpu0/core7', 0x46: '/system/chassis/motherboard/cpu0/core8', 0x47: '/system/chassis/motherboard/cpu0/core9', 0x48: '/system/chassis/motherboard/cpu0/core10', 0x49: '/system/chassis/motherboard/cpu0/core11', 0x4a: '/system/chassis/motherboard/cpu1/core0', 0x4b: '/system/chassis/motherboard/cpu1/core1', 0x4c: '/system/chassis/motherboard/cpu1/core2', 0x4d: '/system/chassis/motherboard/cpu1/core3', 0x4e: '/system/chassis/motherboard/cpu1/core4', 0x4f: '/system/chassis/motherboard/cpu1/core5', 0x50: '/system/chassis/motherboard/cpu1/core6', 0x51: '/system/chassis/motherboard/cpu1/core7', 0x52: '/system/chassis/motherboard/cpu1/core8', 0x53: '/system/chassis/motherboard/cpu1/core9', 0x54: '/system/chassis/motherboard/cpu1/core10', 0x55: '/system/chassis/motherboard/cpu1/core11', 0x56: '/system/chassis/motherboard/membuf0', 0x57: '/system/chassis/motherboard/membuf1', 0x58: '/system/chassis/motherboard/membuf2', 0x59: '/system/chassis/motherboard/membuf3', 0x5a: '/system/chassis/motherboard/membuf4', 0x5b: '/system/chassis/motherboard/membuf5', 0x5c: '/system/chassis/motherboard/membuf6', 0x5d: '/system/chassis/motherboard/membuf7', 0x07: '/org/openbmc/sensors/host/BootCount', 0x0c: '/system/chassis/motherboard', 0x01: '/system/systemevent', 0x08: '/system/powerlimit', 0x0d: '/system/chassis/motherboard/refclock', 0x0e: '/system/chassis/motherboard/pcieclock', 0x0f: '/system/chassis/motherboard/todclock', 0x10: '/system/chassis/motherboard/apss', 0x02: '/org/openbmc/sensors/host/OperatingSystemStatus', 0x04: '/system/chassis/motherboard/pcielink', 0x0b: '/xyz/openbmc_project/sensors/chassis/PowerSupplyRedundancy', 0xda: '/org/openbmc/sensors/host/TurboAllowed', 0xD8: '/org/openbmc/sensors/host/PowerSupplyDerating', }, 'GPIO_PRESENT': {} } GPIO_CONFIG = {} GPIO_CONFIG['BMC_POWER_UP'] = \ {'gpio_pin': 'D1', 'direction': 'out'} GPIO_CONFIG['SOFTWARE_PGOOD'] = \ {'gpio_pin': 'R1', 'direction': 'out'} GPIO_CONFIG['SYS_PWROK_BUFF'] = \ {'gpio_pin': 'D2', 'direction': 'in'} # PV_CP_MD_JTAG_ATTENTION_N GPIO_CONFIG['CHECKSTOP'] = \ {'gpio_pin': 'J2', 'direction': 'falling'} GPIO_CONFIG['BMC_CP0_RESET_N'] = \ {'gpio_pin': 'A1', 'direction': 'out'} # pcie switch reset GPIO_CONFIG['BMC_VS1_PERST_N'] = \ {'gpio_pin': 'B7', 'direction': 'out'} # pcie slots reset - not connected? GPIO_CONFIG['BMC_CP0_PERST_ENABLE_R'] = \ {'gpio_pin': 'A3', 'direction': 'out'} # SOFT_FSI_DAT GPIO_CONFIG['FSI_DATA'] = \ {'gpio_pin': 'E0', 'direction': 'out'} # SOFT_FSI_CLK GPIO_CONFIG['FSI_CLK'] = \ {'gpio_pin': 'AA0', 'direction': 'out'} # BMC_FSI_IN_ENA GPIO_CONFIG['FSI_ENABLE'] = \ {'gpio_pin': 'D0', 'direction': 'out'} # FSI_JMFG0_PRSNT_N GPIO_CONFIG['CRONUS_SEL'] = \ {'gpio_pin': 'A6', 'direction': 'out'} # FP_PWR_BTN_N GPIO_CONFIG['POWER_BUTTON'] = \ {'gpio_pin': 'I3', 'direction': 'both'} # BMC_NMIBTN_IN_N GPIO_CONFIG['RESET_BUTTON'] = \ {'gpio_pin': 'J1', 'direction': 'both'} # FIXME: needed for Witherspoon? # Tracked by openbmc/openbmc#814 # FP_ID_BTN_N GPIO_CONFIG['IDBTN'] = \ {'gpio_pin': 'Q7', 'direction': 'out'} # TODO openbmc/openbmc#2288 - Determine if any pci resets needed GPIO_CONFIGS = { 'power_config': { 'power_good_in': 'SYS_PWROK_BUFF', 'power_up_outs': [ ('SOFTWARE_PGOOD', True), ('BMC_POWER_UP', True), ], 'reset_outs': [ ('BMC_CP0_RESET_N', False), ], }, 'hostctl_config': { 'fsi_data': 'FSI_DATA', 'fsi_clk': 'FSI_CLK', 'fsi_enable': 'FSI_ENABLE', 'cronus_sel': 'CRONUS_SEL', 'optionals': [ ], }, } # Miscellaneous non-poll sensor with system specific properties. # The sensor id is the same as those defined in ID_LOOKUP['SENSOR']. MISC_SENSORS = { 0x07: {'class': 'BootCountSensor'}, 0x03: {'class': 'BootProgressSensor'}, 0x02: {'class': 'OperatingSystemStatusSensor'}, # Garrison value is used, Not in P9 XML yet. 0x0b: {'class': 'PowerSupplyRedundancySensor'}, 0xda: {'class': 'TurboAllowedSensor'}, 0xD8: {'class': 'PowerSupplyDeratingSensor'}, } # vim: tabstop=8 expandtab shiftwidth=4 softtabstop=4