#!/usr/bin/env python3 HOME_PATH = "./" CACHE_PATH = "/var/cache/obmc/" FLASH_DOWNLOAD_PATH = "/tmp" GPIO_BASE = 320 SYSTEM_NAME = "Palmetto" # 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/led/identify": 0, "/org/openbmc/control/host0": 0, "/org/openbmc/control/flash/bios": 0, }, } # method will be called when state is entered ENTER_STATE_CALLBACK = { "HOST_POWERED_ON": { "boot": { "bus_name": "org.openbmc.control.Host", "obj_name": "/org/openbmc/control/host0", "interface_name": "org.openbmc.control.Host", } }, "BMC_READY": { "setOn": { "bus_name": "org.openbmc.control.led", "obj_name": "/org/openbmc/control/led/identify", "interface_name": "org.openbmc.Led", }, "init": { "bus_name": "org.openbmc.control.Flash", "obj_name": "/org/openbmc/control/flash/bios", "interface_name": "org.openbmc.Flash", }, }, } APPS = { "startup_hacks": { "system_state": "BASE_APPS", "start_process": True, "monitor_process": False, "process_name": "startup_hacks.sh", }, "inventory": { "system_state": "BMC_STARTING", "start_process": True, "monitor_process": True, "process_name": "inventory_items.py", "args": [SYSTEM_NAME], }, "pcie_present": { "system_state": "HOST_POWERED_ON", "start_process": False, "monitor_process": False, "process_name": "pcie_slot_present.exe", }, "virtual_sensors": { "system_state": "BMC_STARTING", "start_process": True, "monitor_process": True, "process_name": "hwmon.py", "args": [SYSTEM_NAME], }, "sensor_manager": { "system_state": "BASE_APPS", "start_process": True, "monitor_process": True, "process_name": "sensor_manager2.py", "args": [SYSTEM_NAME], }, "host_watchdog": { "system_state": "BMC_STARTING", "start_process": True, "monitor_process": True, "process_name": "host_watchdog.exe", }, "power_control": { "system_state": "BMC_STARTING", "start_process": True, "monitor_process": True, "process_name": "power_control.exe", "args": ["3000", "10"], }, "power_button": { "system_state": "BMC_STARTING", "start_process": False, "monitor_process": False, "process_name": "button_power.exe", }, "led_control": { "system_state": "BMC_STARTING", "start_process": True, "monitor_process": True, "process_name": "led_controller.exe", }, "flash_control": { "system_state": "BMC_STARTING", "start_process": True, "monitor_process": True, "process_name": "flash_bios.exe", }, "bmc_flash_control": { "system_state": "BMC_STARTING", "start_process": True, "monitor_process": True, "process_name": "bmc_update.py", }, "download_manager": { "system_state": "BMC_STARTING", "start_process": True, "monitor_process": True, "process_name": "download_manager.py", "args": [SYSTEM_NAME], }, "host_control": { "system_state": "BMC_STARTING", "start_process": True, "monitor_process": True, "process_name": "control_host.exe", }, "chassis_control": { "system_state": "BMC_STARTING", "start_process": True, "monitor_process": True, "process_name": "chassis_control.py", }, "bmc_control": { "system_state": "BMC_STARTING", "start_process": True, "monitor_process": True, "process_name": "control_bmc.exe", }, } CACHED_INTERFACES = { "org.openbmc.InventoryItem": True, "org.openbmc.control.Chassis": True, } INVENTORY_ROOT = "/org/openbmc/inventory" FRU_INSTANCES = { "/system": { "fru_type": "SYSTEM", "is_fru": True, }, "/system/chassis": { "fru_type": "SYSTEM", "is_fru": True, }, "/system/chassis/motherboard": { "fru_type": "MAIN_PLANAR", "is_fru": True, }, "/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/fan4": { "fru_type": "FAN", "is_fru": True, }, "/system/chassis/motherboard/bmc": { "fru_type": "BMC", "is_fru": False, "manufacturer": "ASPEED", }, "/system/chassis/motherboard/cpu": { "fru_type": "CPU", "is_fru": True, }, "/system/chassis/motherboard/cpu/core0": { "fru_type": "CORE", "is_fru": False, }, "/system/chassis/motherboard/cpu/core1": { "fru_type": "CORE", "is_fru": False, }, "/system/chassis/motherboard/cpu/core2": { "fru_type": "CORE", "is_fru": False, }, "/system/chassis/motherboard/cpu/core3": { "fru_type": "CORE", "is_fru": False, }, "/system/chassis/motherboard/cpu/core4": { "fru_type": "CORE", "is_fru": False, }, "/system/chassis/motherboard/cpu/core5": { "fru_type": "CORE", "is_fru": False, }, "/system/chassis/motherboard/cpu/core6": { "fru_type": "CORE", "is_fru": False, }, "/system/chassis/motherboard/cpu/core7": { "fru_type": "CORE", "is_fru": False, }, "/system/chassis/motherboard/cpu/core8": { "fru_type": "CORE", "is_fru": False, }, "/system/chassis/motherboard/cpu/core9": { "fru_type": "CORE", "is_fru": False, }, "/system/chassis/motherboard/cpu/core10": { "fru_type": "CORE", "is_fru": False, }, "/system/chassis/motherboard/cpu/core11": { "fru_type": "CORE", "is_fru": False, }, "/system/chassis/motherboard/membuf": { "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/io_board/pcie_slot0": { "fru_type": "PCIE_CARD", "is_fru": True, }, "/system/chassis/io_board/pcie_slot1": { "fru_type": "PCIE_CARD", "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, }, } ID_LOOKUP = { "FRU": { 0x0D: "/system/chassis", 0x34: "/system/chassis/motherboard", 0x01: "/system/chassis/motherboard/cpu", 0x02: "/system/chassis/motherboard/membuf", 0x03: "/system/chassis/motherboard/dimm0", 0x04: "/system/chassis/motherboard/dimm1", 0x05: "/system/chassis/motherboard/dimm2", 0x06: "/system/chassis/motherboard/dimm3", 0x35: "/system", }, "FRU_STR": { "PRODUCT_15": "/system", "CHASSIS_2": "/system/chassis", "BOARD_1": "/system/chassis/motherboard/cpu", "BOARD_2": "/system/chassis/motherboard/membuf", "BOARD_14": "/system/chassis/motherboard", "PRODUCT_3": "/system/chassis/motherboard/dimm0", "PRODUCT_4": "/system/chassis/motherboard/dimm1", "PRODUCT_5": "/system/chassis/motherboard/dimm2", "PRODUCT_6": "/system/chassis/motherboard/dimm3", }, "SENSOR": { 0x34: "/system/chassis/motherboard", 0x37: "/system/chassis/motherboard/refclock", 0x38: "/system/chassis/motherboard/pcieclock", 0x39: "/system/chassis/motherboard/todclock", 0x3A: "/system/chassis/apss", 0x2F: "/system/chassis/motherboard/cpu", 0x22: "/system/chassis/motherboard/cpu/core1", 0x23: "/system/chassis/motherboard/cpu/core2", 0x24: "/system/chassis/motherboard/cpu/core3", 0x25: "/system/chassis/motherboard/cpu/core4", 0x26: "/system/chassis/motherboard/cpu/core5", 0x27: "/system/chassis/motherboard/cpu/core6", 0x28: "/system/chassis/motherboard/cpu/core9", 0x29: "/system/chassis/motherboard/cpu/core10", 0x2A: "/system/chassis/motherboard/cpu/core11", 0x2B: "/system/chassis/motherboard/cpu/core12", 0x2C: "/system/chassis/motherboard/cpu/core13", 0x2D: "/system/chassis/motherboard/cpu/core14", 0x2E: "/system/chassis/motherboard/membuf", 0x1E: "/system/chassis/motherboard/dimm0", 0x1F: "/system/chassis/motherboard/dimm1", 0x20: "/system/chassis/motherboard/dimm2", 0x21: "/system/chassis/motherboard/dimm3", 0x09: "/org/openbmc/sensors/host/BootCount", 0x05: "/org/openbmc/sensors/host/BootProgress", 0x08: "/org/openbmc/sensors/host/cpu0/OccStatus", 0x32: "/org/openbmc/sensors/host/OperatingSystemStatus", 0x33: "/org/openbmc/sensors/host/PowerCap", }, "GPIO_PRESENT": { "SLOT0_PRESENT": "/system/chassis/io_board/pcie_slot0", "SLOT1_PRESENT": "/system/chassis/io_board/pcie_slot1", }, } GPIO_CONFIG = {} GPIO_CONFIG["FSI_CLK"] = {"gpio_pin": "A4", "direction": "out"} GPIO_CONFIG["FSI_DATA"] = {"gpio_pin": "A5", "direction": "out"} GPIO_CONFIG["FSI_ENABLE"] = {"gpio_pin": "D0", "direction": "out"} GPIO_CONFIG["POWER_PIN"] = {"gpio_pin": "E1", "direction": "out"} GPIO_CONFIG["CRONUS_SEL"] = {"gpio_pin": "A6", "direction": "out"} GPIO_CONFIG["PGOOD"] = {"gpio_pin": "C7", "direction": "in"} GPIO_CONFIG["BMC_THROTTLE"] = {"gpio_pin": "J3", "direction": "out"} GPIO_CONFIG["IDBTN"] = {"gpio_pin": "Q7", "direction": "out"} GPIO_CONFIG["POWER_BUTTON"] = {"gpio_pin": "E0", "direction": "both"} GPIO_CONFIG["PCIE_RESET"] = {"gpio_pin": "B5", "direction": "out"} GPIO_CONFIG["USB_RESET"] = {"gpio_pin": "B6", "direction": "out"} GPIO_CONFIG["SLOT0_RISER_PRESENT"] = {"gpio_pin": "N0", "direction": "in"} GPIO_CONFIG["SLOT1_RISER_PRESENT"] = {"gpio_pin": "N1", "direction": "in"} GPIO_CONFIG["SLOT2_RISER_PRESENT"] = {"gpio_pin": "N2", "direction": "in"} GPIO_CONFIG["SLOT0_PRESENT"] = {"gpio_pin": "N3", "direction": "in"} GPIO_CONFIG["SLOT1_PRESENT"] = {"gpio_pin": "N4", "direction": "in"} GPIO_CONFIG["SLOT2_PRESENT"] = {"gpio_pin": "N5", "direction": "in"} GPIO_CONFIG["MEZZ0_PRESENT"] = {"gpio_pin": "O0", "direction": "in"} GPIO_CONFIG["MEZZ1_PRESENT"] = {"gpio_pin": "O1", "direction": "in"} def convertGpio(name): name = name.upper() c = name[0:1] offset = int(name[1:]) a = ord(c) - 65 base = a * 8 + GPIO_BASE return base + offset HWMON_CONFIG = { "2-004c": { "names": { "temp1_input": { "object_path": "temperature/ambient", "poll_interval": 5000, "scale": 1000, "units": "C", }, } }, "3-0050": { "names": { "caps_curr_powercap": { "object_path": "powercap/curr_cap", "poll_interval": 10000, "scale": 1, "units": "W", }, "caps_curr_powerreading": { "object_path": "powercap/system_power", "poll_interval": 10000, "scale": 1, "units": "W", }, "caps_max_powercap": { "object_path": "powercap/max_cap", "poll_interval": 10000, "scale": 1, "units": "W", }, "caps_min_powercap": { "object_path": "powercap/min_cap", "poll_interval": 10000, "scale": 1, "units": "W", }, "caps_norm_powercap": { "object_path": "powercap/n_cap", "poll_interval": 10000, "scale": 1, "units": "W", }, "caps_user_powerlimit": { "object_path": "powercap/user_cap", "poll_interval": 10000, "scale": 1, "units": "W", }, } }, } # Miscellaneous non-poll sensor with system specific properties. # The sensor id is the same as those defined in ID_LOOKUP['SENSOR']. MISC_SENSORS = { 0x09: {"class": "BootCountSensor"}, 0x05: {"class": "BootProgressSensor"}, 0x08: { "class": "OccStatusSensor", "os_path": "/sys/class/i2c-adapter/i2c-3/3-0050/online", }, 0x32: {"class": "OperatingSystemStatusSensor"}, 0x33: { "class": "PowerCap", "os_path": "/sys/class/hwmon/hwmon1/user_powercap", }, }