def __init__(self, fantray_index=1, fan_index=1, psu_fan=False): FanBase.__init__(self) self.is_psu_fan = psu_fan if not self.is_psu_fan: # API index is starting from 0, DellEMC platform index is starting # from 1 self.fantrayindex = fantray_index + 1 self.fanindex = fan_index + 1 self.fan_presence_reg = "fan{}_fault".format( 2 * (self.fantrayindex - 1) + (self.fanindex - 1) + 1) self.fan_status_reg = "fan{}_alarm".format( 2 * (self.fantrayindex - 1) + (self.fanindex - 1) + 1) self.get_fan_speed_reg = "fan{}_input".format( 2 * (self.fantrayindex - 1) + (self.fanindex - 1) + 1) self.get_fan_dir_reg = "fan{}_airflow".format(2 * self.fantrayindex - 1) self.fan_serialno_reg = "fan{}_serialno".format(2 * self.fantrayindex - 1) self.max_fan_speed = MAX_Z9100_FAN_SPEED else: # PSU Fan index starts from 11 self.fanindex = fan_index + 10 self.fan_presence_reg = "fan{}_fault".format(self.fanindex) self.get_fan_speed_reg = "fan{}_input".format(self.fanindex) self.get_fan_dir_reg = "fan{}_airflow".format(self.fanindex) self.max_fan_speed = MAX_Z9100_PSU_FAN_SPEED
def __init__(self, fan_index): self.index = fan_index self.config_data = {} self.fan_speed = 0 FanBase.__init__(self) # e1031 fan attributes # Single emc2305 chip located at i2c-23-4d # to control a fan module self.e1031_emc2305_chip = [ { 'device': "23-004d", 'index_map': [1, 2, 4] } ] self.fan_e1031_presence = "fan{}_prs" self.fan_e1031_direction = "fan{}_dir" self.fan_e1031_led = "fan{}_led" self.fan_e1031_led_col_map = { self.STATUS_LED_COLOR_GREEN: "green", self.STATUS_LED_COLOR_RED: "amber", self.STATUS_LED_COLOR_OFF: "off" } FanBase.__init__(self)
def __init__(self, fan_tray_index, fan_index=0, is_psu_fan=False, psu_index=0): self.fan_index = fan_index self.fan_tray_index = fan_tray_index self.is_psu_fan = is_psu_fan if self.is_psu_fan: self.psu_index = psu_index self.psu_i2c_num = PSU_I2C_MAPPING[self.psu_index]["num"] self.psu_i2c_addr = PSU_I2C_MAPPING[self.psu_index]["addr"] self.psu_hwmon_path = PSU_HWMON_PATH.format( self.psu_i2c_num, self.psu_i2c_addr) # e1031 fan attributes # Single emc2305 chip located at i2c-23-4d # to control a fan module self.emc2305_chip_mapping = [{ 'device': "23-004d", 'index_map': [1, 2, 4] }] self.fan_e1031_presence = "fan{}_prs" self.fan_e1031_direction = "fan{}_dir" self.fan_e1031_led = "fan{}_led" self.fan_e1031_led_col_map = { self.STATUS_LED_COLOR_GREEN: "green", self.STATUS_LED_COLOR_RED: "amber", self.STATUS_LED_COLOR_OFF: "off" } FanBase.__init__(self)
def __init__(self, fan_tray_index, fan_index=0, is_psu_fan=False, psu_index=0): FanBase.__init__(self) self.fan_index = fan_index self._api_helper = APIHelper() self.fan_tray_index = fan_tray_index self.is_psu_fan = is_psu_fan if self.is_psu_fan: self.psu_index = psu_index self.psu_i2c_num = PSU_I2C_MAPPING[self.psu_index]["num"] self.psu_i2c_addr = PSU_I2C_MAPPING[self.psu_index]["addr"] self.psu_hwmon_path = PSU_HWMON_PATH.format( self.psu_i2c_num, self.psu_i2c_addr) # dx010 fan attributes # Two EMC2305s located at i2c-13-4d and i2c-13-2e # to control a dual-fan module. self.emc2305_chip_mapping = [ { 'device': "13-002e", 'index_map': [2, 1, 4, 5, 3] }, { 'device': "13-004d", 'index_map': [2, 4, 5, 3, 1] } ] self.dx010_fan_gpio = [ {'base': self.__get_gpio_base()}, {'prs': 11, 'dir': 16, 'color': {'red': 31, 'green': 32}}, # 1 {'prs': 10, 'dir': 15, 'color': {'red': 29, 'green': 30}}, # 2 {'prs': 13, 'dir': 18, 'color': {'red': 35, 'green': 36}}, # 3 {'prs': 14, 'dir': 19, 'color': {'red': 37, 'green': 38}}, # 4 {'prs': 12, 'dir': 17, 'color': {'red': 33, 'green': 34}}, # 5 ]
def __init__(self, fan_index): self.index = fan_index + 1 FanBase.__init__(self) self.fantray_index = (fan_index) / self.FANS_PERTRAY + 1 self.fan_index_intray = self.index - ( (self.fantray_index - 1) * self.FANS_PERTRAY)
def __init__(self, fantray_index=1, fan_index=1, psu_fan=False, dependency=None): FanBase.__init__(self) self.is_psu_fan = psu_fan if not self.is_psu_fan: # API index is starting from 0, DellEMC platform index is # starting from 1 self.fantrayindex = fantray_index + 1 self.fanindex = fan_index + 1 self.index = (self.fantrayindex - 1) * 2 + self.fanindex self.prsnt_sensor = IpmiSensor(self.FAN_SENSOR_MAPPING[self.index]["Prsnt"], is_discrete=True) self.state_sensor = IpmiSensor(self.FAN_SENSOR_MAPPING[self.index]["State"], is_discrete=True) self.speed_sensor = IpmiSensor(self.FAN_SENSOR_MAPPING[self.index]["Speed"]) self.fru = IpmiFru(self.FAN_FRU_MAPPING[self.fantrayindex]) if self.fanindex == 1: self.max_speed_offset = FAN1_MAX_SPEED_OFFSET else: self.max_speed_offset = FAN2_MAX_SPEED_OFFSET self.fan_direction_offset = FAN_DIRECTION_OFFSET else: self.dependency = dependency self.fanindex = fan_index self.state_sensor = IpmiSensor(self.PSU_FAN_SENSOR_MAPPING[self.fanindex]["State"], is_discrete=True) self.speed_sensor = IpmiSensor(self.PSU_FAN_SENSOR_MAPPING[self.fanindex]["Speed"]) self.fru = IpmiFru(self.PSU_FRU_MAPPING[self.fanindex]) self.max_speed_offset = PSU_FAN_MAX_SPEED_OFFSET self.fan_direction_offset = PSU_FAN_DIRECTION_OFFSET #self.fan_dir_raw_cmd = "0x3a 0x0a {}".format(7+(fan_index-1)) self.max_speed = 18000
def __init__(self, fantray_index=1, fan_index=1, psu_fan=False, dependency=None): FanBase.__init__(self) self.is_psu_fan = psu_fan if not self.is_psu_fan: # API index is starting from 0, DellEMC platform index is # starting from 1 self.fantrayindex = fantray_index + 1 self.fanindex = fan_index + 1 if (self.fanindex == 1): self.max_speed_offset = FAN1_MAX_SPEED_OFFSET else: self.max_speed_offset = FAN2_MAX_SPEED_OFFSET self.fan_direction_offset = FAN_DIRECTION_OFFSET self.index = (self.fantrayindex - 1) * 2 + self.fanindex self.prsnt_sensor = IpmiSensor(self.FAN_SENSOR_MAPPING[self.index]["Prsnt"], is_discrete=True) self.state_sensor = IpmiSensor(self.FAN_SENSOR_MAPPING[self.index]["State"], is_discrete=True) self.speed_sensor = IpmiSensor(self.FAN_SENSOR_MAPPING[self.index]["Speed"]) self.fru = IpmiFru(self.FAN_FRU_MAPPING[self.fantrayindex]) else: self.dependency = dependency self.fanindex = fan_index self.state_sensor = IpmiSensor(self.PSU_FAN_SENSOR_MAPPING[self.fanindex]["State"], is_discrete=True) self.speed_sensor = IpmiSensor(self.PSU_FAN_SENSOR_MAPPING[self.fanindex]["Speed"]) self.fru = IpmiFru(self.PSU_FRU_MAPPING[self.fanindex]) self.max_speed_offset = PSU_FAN_MAX_SPEED_OFFSET self.fan_direction_offset = PSU_FAN_DIRECTION_OFFSET self.max_speed = self.fru.get_fru_data(self.max_speed_offset,2)[1] self.max_speed = self.max_speed[1] << 8 | self.max_speed[0]
def __init__(self, fan_index, is_psu_fan): self.index = fan_index + 1 self.is_psu_fan = is_psu_fan FanBase.__init__(self) base_path = "/sys/bus/i2c/devices/" if self.is_psu_fan: psu_bus_num = [10, 11] psu_pmbus_address = [58, 59] self.psu_pmbus_path = base_path + "{}-00{}".format( psu_bus_num[self.index - 1], psu_pmbus_address[self.index - 1]) # driver attribute self.psu_fan_rpm = "/psu_fan1_speed_rpm" else: self.fan_path = base_path + '1-005e' self.fantray_index = int((fan_index) / self.FANS_PERTRAY) + 1 self.fan_index_intray = self.index - ( (self.fantray_index - 1) * self.FANS_PERTRAY) self.fan_index_intray_str = 'front' if (self.fan_index_intray == 1) else 'rear' # driver attribute self.fan_present = '/fan{}_present'.format(self.fantray_index) self.fan_direction = '/fan{}_direction'.format(self.fantray_index) self.fan_speed_rpm = '/fan{}_{}_speed_rpm'.format( self.fantray_index, self.fan_index_intray_str) self.fan_speed_pwm = '/fan_pwm'
def __init__(self, fantray_index=1, fan_index=1, psu_fan=False, dependency=None): FanBase.__init__(self) self.is_psu_fan = psu_fan if not self.is_psu_fan: # API index is starting from 0, DellEMC platform index is # starting from 1 self.fantrayindex = fantray_index + 1 self.fanindex = fan_index + 1 self.index = (self.fantrayindex - 1) * 2 + self.fanindex self.prsnt_sensor = IpmiSensor( self.FAN_SENSOR_MAPPING[self.index]["Prsnt"], is_discrete=True) self.state_sensor = IpmiSensor( self.FAN_SENSOR_MAPPING[self.index]["State"], is_discrete=True) self.speed_sensor = IpmiSensor( self.FAN_SENSOR_MAPPING[self.index]["Speed"]) self.fan_dir_raw_cmd = "0x3a 0x0a {}".format(fantray_index) if self.fanindex == 1: self.max_speed = 24700 else: self.max_speed = 29700 else: self.dependency = dependency self.fanindex = fan_index self.state_sensor = IpmiSensor( self.PSU_FAN_SENSOR_MAPPING[self.fanindex]["State"], is_discrete=True) self.speed_sensor = IpmiSensor( self.PSU_FAN_SENSOR_MAPPING[self.fanindex]["Speed"]) self.fan_dir_raw_cmd = "0x3a 0x0a {}".format(7 + (fan_index - 1)) self.max_speed = 26500
def __init__(self, fan_tray_index, fan_index=0): self.fan_index = fan_index self.fan_tray_index = fan_tray_index self.fan_presence = "fan{}_present" self.fan_direction = "fan{}_direction" self.fan_fault = "fan{}_{}_fault" self.fan_speed_rpm = "fan{}_{}_speed_rpm" FanBase.__init__(self)
def __init__(self, index, drawer_index, is_psu_fan=False, psu_index=0, conf=None): FanBase.__init__(self) self.fan_index = index self.drawer_index = drawer_index self._config = conf self._api_common = Common() self._name = self.get_name() self._is_psu_fan = is_psu_fan
def __init__(self, fan_index): self.index = fan_index self.config_data = {} self.fan_speed = 0 FanBase.__init__(self) # dx010 fan attributes # Two EMC2305s located at i2c-13-4d and i2c-13-2e # to control a dual-fan module. self.dx010_emc2305_chip = [{ 'device': "13-002e", 'index_map': [4, 3, 2, 1] }, { 'device': "13-004d", 'index_map': [2, 4, 3, 1] }] self.dx010_fan_gpio = [ { 'base': self.get_gpio_base() }, { 'prs': 10, 'dir': 15, 'color': { 'red': 31, 'green': 32 } }, { 'prs': 11, 'dir': 16, 'color': { 'red': 29, 'green': 30 } }, { 'prs': 12, 'dir': 17, 'color': { 'red': 35, 'green': 36 } }, { 'prs': 13, 'dir': 18, 'color': { 'red': 37, 'green': 38 } }, ]
def __init__(self, index, is_psu_fan=False, psu_index=0, conf=None): FanBase.__init__(self) self._fan_index = index self._config = conf self._api_common = Common() self._is_psu_fan = is_psu_fan if self._is_psu_fan: self._initialize_psu_fan(psu_index) self._name = self.get_name()
def __init__(self, fan_tray_index, fan_index=0, is_psu_fan=False, psu_index=0): FanBase.__init__(self) self.fan_index = fan_index self.fan_tray_index = fan_tray_index self.is_psu_fan = is_psu_fan if self.is_psu_fan: self.psu_index = psu_index self._api_helper = APIHelper() self.index = self.fan_tray_index * 2 + self.fan_index
def __init__(self, fan_index): self.index = fan_index + 1 self.psu_path = "/sys/bus/i2c/devices/" self.psu_fan_rpm_max = 10000 self.psu_fan_rpm = "/psu_fan1_speed_rpm" if os.path.exists(self.psu_path + "9-0058"): self.psu_pmbus_mapping = { 1: "9-0058", 2: "10-0059", } else: self.psu_pmbus_mapping = { 1: "32-0058", 2: "33-0059", } FanBase.__init__(self)
def __init__(self, fan_tray_index, fan_index=0, is_psu_fan=False, psu_index=0): self._api_helper = APIHelper() self.fan_index = fan_index self.fan_tray_index = fan_tray_index self.is_psu_fan = is_psu_fan if self.is_psu_fan: self.psu_index = psu_index self.psu_i2c_num = PSU_I2C_MAPPING[self.psu_index]['num'] self.psu_i2c_addr = PSU_I2C_MAPPING[self.psu_index]['addr'] self.psu_hwmon_path = PSU_HWMON_I2C_PATH.format( self.psu_i2c_num, self.psu_i2c_addr) FanBase.__init__(self)
def __init__(self, fan_tray_index, fan_index=0, is_psu_fan=False, psu_index=0): self.fan_index = fan_index self.fan_tray_index = fan_tray_index self.is_psu_fan = is_psu_fan if self.is_psu_fan: self.psu_index = psu_index self.psu_i2c_num = PSU_I2C_MAPPING[self.psu_index]["num"] self.psu_i2c_addr = PSU_I2C_MAPPING[self.psu_index]["addr"] self.psu_hwmon_path = PSU_HWMON_I2C_PATH.format( self.psu_i2c_num, self.psu_i2c_addr) FanBase.__init__(self)
def __init__(self, fantray_index=1, fan_index=1, psu_index=1, psu_fan=False, dependency=None): FanBase.__init__(self) self._target_speed = None self.is_psu_fan = psu_fan self.is_driver_initialized = True if not self.is_psu_fan: # Fan is 1-based in DellEMC platforms self.fantray_index = fantray_index self.index = fan_index self.dependency = dependency hwmon_dir = self.I2C_DIR +\ "{}/hwmon/".format(self.FAN_DEV_MAPPING[fantray_index][fan_index][0]) hwmon_node = os.listdir(hwmon_dir)[0] self.fan_status_reg = hwmon_dir + hwmon_node +\ "/fan{}_alarm".format(self.FAN_DEV_MAPPING[fantray_index][fan_index][1]) self.get_fan_speed_reg = hwmon_dir + hwmon_node +\ "/fan{}_input".format(self.FAN_DEV_MAPPING[fantray_index][fan_index][1]) self.set_fan_speed_reg = hwmon_dir + hwmon_node +\ "/fan{}_target".format(self.FAN_DEV_MAPPING[fantray_index][fan_index][1]) self.max_fan_speed = MAX_S6000_FAN_SPEED self.thermal_level_to_speed = THERMAL_LEVEL_FAN_SPEED else: self.psu_index = psu_index self.index = 1 self.dependency = dependency self.set_fan_speed_reg = self.I2C_DIR +\ "i2c-1/1-005{}/fan1_target".format(10 - self.psu_index) hwmon_dir = self.I2C_DIR +\ "i2c-1/1-005{}/hwmon/".format(10 - self.psu_index) try: hwmon_node = os.listdir(hwmon_dir)[0] except OSError: hwmon_node = "hwmon*" self.is_driver_initialized = False self.get_fan_speed_reg = hwmon_dir + hwmon_node + '/fan1_input' self.max_fan_speed = MAX_S6000_PSU_FAN_SPEED self.thermal_level_to_speed = THERMAL_LEVEL_PSU_FAN_SPEED
def __init__(self, fan_tray_index, fan_index=0, is_psu_fan=False, psu_index=0): self.fan_index = fan_index self.fan_tray_index = fan_tray_index self.is_psu_fan = is_psu_fan self.psu_index = psu_index if self.is_psu_fan: psu_i2c_bus = PSU_HWMON_I2C_MAPPING[psu_index]["bus"] psu_i2c_addr = PSU_HWMON_I2C_MAPPING[psu_index]["addr"] self.psu_hwmon_path = PSU_I2C_PATH.format(psu_i2c_bus, psu_i2c_addr) psu_i2c_bus = PSU_CPLD_I2C_MAPPING[psu_index]["bus"] psu_i2c_addr = PSU_CPLD_I2C_MAPPING[psu_index]["addr"] self.cpld_path = PSU_I2C_PATH.format(psu_i2c_bus, psu_i2c_addr) FanBase.__init__(self)
def __init__(self, fan_index): self.fan_tray_index = fan_index self.fan_presence = "fan{}_present" self.fan_direction = "fan{}_direction" self.fan_speed_rpm = "fan{}_input" FanBase.__init__(self)
def __init__(self, fan_tray_index, fan_index=0): self.fan_index = fan_index self.fan_tray_index = fan_tray_index FanBase.__init__(self)
def __init__(self, parent, fan): FanBase.__init__(self) self._parent = parent self._target_speed = None self._fan = fan