diff --git a/packages/platforms/delta/x86-64/x86-64-delta-ag5648/modules/builds/dni_ag5648_psu.c b/packages/platforms/delta/x86-64/x86-64-delta-ag5648/modules/builds/dni_ag5648_psu.c index 6c7a1fa1..eae7970e 100755 --- a/packages/platforms/delta/x86-64/x86-64-delta-ag5648/modules/builds/dni_ag5648_psu.c +++ b/packages/platforms/delta/x86-64/x86-64-delta-ag5648/modules/builds/dni_ag5648_psu.c @@ -201,10 +201,9 @@ static ssize_t for_vout_data(struct device *dev, struct device_attribute \ exponent = two_complement_to_int(data->vout_mode, 5, 0x1f); mantissa = data->v_out; - - return (exponent > 0) ? sprintf(buf, "%d\n", \ - (mantissa << exponent) * multiplier) : \ - sprintf(buf, "%d\n", (mantissa << exponent) / (1 << -exponent)); + return (exponent > 0) ? sprintf(buf, "%d\n", \ + mantissa * (1 << exponent)) : \ + sprintf(buf, "%d\n", mantissa / (1 << -exponent) * multiplier); } diff --git a/packages/platforms/delta/x86-64/x86-64-delta-ag5648/onlp/builds/src/module/src/thermali.c b/packages/platforms/delta/x86-64/x86-64-delta-ag5648/onlp/builds/src/module/src/thermali.c index 7545b743..22448190 100755 --- a/packages/platforms/delta/x86-64/x86-64-delta-ag5648/onlp/builds/src/module/src/thermali.c +++ b/packages/platforms/delta/x86-64/x86-64-delta-ag5648/onlp/builds/src/module/src/thermali.c @@ -38,6 +38,12 @@ } \ } while(0) +#define dni_onlp_thermal_threshold(WARNING_DEFAULT, ERROR_DEFAULT, SHUTDOWN_DEFAULT){ \ + WARNING_DEFAULT, \ + ERROR_DEFAULT, \ + SHUTDOWN_DEFAULT, \ +} + static char* last_path[] = /* must map with onlp_thermal_id */ { "reserved", @@ -70,27 +76,27 @@ static onlp_thermal_info_t linfo[] = { }, { { ONLP_THERMAL_ID_CREATE(THERMAL_1_ON_CPU_BOARD), "Thermal sensor near CPU (U57, middle)", 0}, ONLP_THERMAL_STATUS_PRESENT, - ONLP_THERMAL_CAPS_ALL, 0, ONLP_THERMAL_THRESHOLD_INIT_DEFAULTS + ONLP_THERMAL_CAPS_ALL, 0, dni_onlp_thermal_threshold(65000,75000,80000) }, { { ONLP_THERMAL_ID_CREATE(THERMAL_2_ON_FAN_BOARD), "Thermal sensor near Middle of front vents (U291, Middle)", 0}, ONLP_THERMAL_STATUS_PRESENT, - ONLP_THERMAL_CAPS_ALL, 0, ONLP_THERMAL_THRESHOLD_INIT_DEFAULTS + ONLP_THERMAL_CAPS_ALL, 0, dni_onlp_thermal_threshold(55000,65000,70000) }, { { ONLP_THERMAL_ID_CREATE(THERMAL_3_ON_MAIN_BOARD), "Thermal sensor near Left of front vents (U290, Left)", 0}, ONLP_THERMAL_STATUS_PRESENT, - ONLP_THERMAL_CAPS_ALL, 0, ONLP_THERMAL_THRESHOLD_INIT_DEFAULTS + ONLP_THERMAL_CAPS_ALL, 0, dni_onlp_thermal_threshold(45000,55000,60000) }, { { ONLP_THERMAL_ID_CREATE(THERMAL_4_ON_MAIN_BOARD), "Thermal sensor near MAC (U288, Middle)", 0}, ONLP_THERMAL_STATUS_PRESENT, - ONLP_THERMAL_CAPS_ALL, 0, ONLP_THERMAL_THRESHOLD_INIT_DEFAULTS + ONLP_THERMAL_CAPS_ALL, 0, dni_onlp_thermal_threshold(70000,80000,85000) }, { { ONLP_THERMAL_ID_CREATE(THERMAL_5_ON_MAIN_BOARD), "Thermal sensor near Right of front vents (U289, right)", 0}, ONLP_THERMAL_STATUS_PRESENT, - ONLP_THERMAL_CAPS_ALL, 0, ONLP_THERMAL_THRESHOLD_INIT_DEFAULTS + ONLP_THERMAL_CAPS_ALL, 0, dni_onlp_thermal_threshold(50000,60000,65000) }, { { ONLP_THERMAL_ID_CREATE(THERMAL_6_ON_MAIN_BOARD), "Thermal sensor near DC fan (U334, Middle)", 0}, ONLP_THERMAL_STATUS_PRESENT, - ONLP_THERMAL_CAPS_ALL, 0, ONLP_THERMAL_THRESHOLD_INIT_DEFAULTS + ONLP_THERMAL_CAPS_ALL, 0, dni_onlp_thermal_threshold(45000,55000,60000) }, { { ONLP_THERMAL_ID_CREATE(THERMAL_1_ON_PSU1), "PSU-1 Thermal Sensor 1", ONLP_PSU_ID_CREATE(PSU1_ID)}, ONLP_THERMAL_STATUS_PRESENT, diff --git a/packages/platforms/delta/x86-64/x86-64-delta-ag5648/platform-config/r0/src/python/x86_64_delta_ag5648_r0/__init__.py b/packages/platforms/delta/x86-64/x86-64-delta-ag5648/platform-config/r0/src/python/x86_64_delta_ag5648_r0/__init__.py index 490bc6bf..336790ff 100755 --- a/packages/platforms/delta/x86-64/x86-64-delta-ag5648/platform-config/r0/src/python/x86_64_delta_ag5648_r0/__init__.py +++ b/packages/platforms/delta/x86-64/x86-64-delta-ag5648/platform-config/r0/src/python/x86_64_delta_ag5648_r0/__init__.py @@ -48,6 +48,21 @@ class OnlPlatform_x86_64_delta_ag5648_r0(OnlPlatformDelta, os.system("echo 0x04 > /sys/bus/i2c/devices/2-0039/addr") os.system("echo 0x10 > /sys/bus/i2c/devices/2-0039/data") + #set thermal Thigh & Tlow + os.system("echo 80000 > /sys/class/hwmon/hwmon5/temp1_max") + os.system("echo 70000 > /sys/class/hwmon/hwmon6/temp1_max") + os.system("echo 60000 > /sys/class/hwmon/hwmon7/temp1_max") + os.system("echo 85000 > /sys/class/hwmon/hwmon8/temp1_max") + os.system("echo 65000 > /sys/class/hwmon/hwmon9/temp1_max") + os.system("echo 60000 > /sys/class/hwmon/hwmon10/temp1_max") + + os.system("echo 75000 > /sys/class/hwmon/hwmon5/temp1_max_hyst") + os.system("echo 65000 > /sys/class/hwmon/hwmon6/temp1_max_hyst") + os.system("echo 55000 > /sys/class/hwmon/hwmon7/temp1_max_hyst") + os.system("echo 80000 > /sys/class/hwmon/hwmon8/temp1_max_hyst") + os.system("echo 60000 > /sys/class/hwmon/hwmon9/temp1_max_hyst") + os.system("echo 55000 > /sys/class/hwmon/hwmon10/temp1_max_hyst") + return True diff --git a/packages/platforms/delta/x86-64/x86-64-delta-ag9032v1/modules/builds/dni_ag9032v1_psu.c b/packages/platforms/delta/x86-64/x86-64-delta-ag9032v1/modules/builds/dni_ag9032v1_psu.c old mode 100644 new mode 100755 index acd64822..8a0da3c7 --- a/packages/platforms/delta/x86-64/x86-64-delta-ag9032v1/modules/builds/dni_ag9032v1_psu.c +++ b/packages/platforms/delta/x86-64/x86-64-delta-ag9032v1/modules/builds/dni_ag9032v1_psu.c @@ -243,10 +243,9 @@ static ssize_t for_vout_data(struct device *dev, struct device_attribute \ exponent = two_complement_to_int(data->vout_mode, 5, 0x1f); mantissa = data->v_out; - - return (exponent > 0) ? sprintf(buf, "%d\n", \ - (mantissa << exponent) * multiplier) : \ - sprintf(buf, "%d\n", (mantissa << exponent) / (1 << -exponent)); + return (exponent > 0) ? sprintf(buf, "%d\n", \ + mantissa * (1 << exponent)) : \ + sprintf(buf, "%d\n", mantissa / (1 << -exponent) * multiplier); } diff --git a/packages/platforms/delta/x86-64/x86-64-delta-ag9032v1/modules/builds/dni_emc2305.c b/packages/platforms/delta/x86-64/x86-64-delta-ag9032v1/modules/builds/dni_emc2305.c index aec0b756..77af5d55 100755 --- a/packages/platforms/delta/x86-64/x86-64-delta-ag9032v1/modules/builds/dni_emc2305.c +++ b/packages/platforms/delta/x86-64/x86-64-delta-ag9032v1/modules/builds/dni_emc2305.c @@ -32,6 +32,8 @@ static ssize_t show_pwm(struct device *dev, struct device_attribute *devattr, char *buf); static ssize_t show_fan(struct device *dev, struct device_attribute *devattr, char *buf); +static ssize_t show_fan_percentage(struct device *dev, struct device_attribute *devattr, + char *buf); static ssize_t set_fan(struct device *dev, struct device_attribute *devattr, const char *buf, size_t count); static ssize_t set_fan_percentage(struct device *dev, struct device_attribute *devattr, @@ -98,11 +100,11 @@ static SENSOR_DEVICE_ATTR(fan2_input, S_IWUSR | S_IRUGO, show_fan, set_fan, 1); static SENSOR_DEVICE_ATTR(fan3_input, S_IWUSR | S_IRUGO, show_fan, set_fan, 2); static SENSOR_DEVICE_ATTR(fan4_input, S_IWUSR | S_IRUGO, show_fan, set_fan, 3); static SENSOR_DEVICE_ATTR(fan5_input, S_IWUSR | S_IRUGO, show_fan, set_fan, 4); -static SENSOR_DEVICE_ATTR(fan1_input_percentage, S_IWUSR | S_IRUGO, show_fan, set_fan_percentage, 0); -static SENSOR_DEVICE_ATTR(fan2_input_percentage, S_IWUSR | S_IRUGO, show_fan, set_fan_percentage, 1); -static SENSOR_DEVICE_ATTR(fan3_input_percentage, S_IWUSR | S_IRUGO, show_fan, set_fan_percentage, 2); -static SENSOR_DEVICE_ATTR(fan4_input_percentage, S_IWUSR | S_IRUGO, show_fan, set_fan_percentage, 3); -static SENSOR_DEVICE_ATTR(fan5_input_percentage, S_IWUSR | S_IRUGO, show_fan, set_fan_percentage, 4); +static SENSOR_DEVICE_ATTR(fan1_input_percentage, S_IWUSR | S_IRUGO, show_fan_percentage, set_fan_percentage, 0); +static SENSOR_DEVICE_ATTR(fan2_input_percentage, S_IWUSR | S_IRUGO, show_fan_percentage, set_fan_percentage, 1); +static SENSOR_DEVICE_ATTR(fan3_input_percentage, S_IWUSR | S_IRUGO, show_fan_percentage, set_fan_percentage, 2); +static SENSOR_DEVICE_ATTR(fan4_input_percentage, S_IWUSR | S_IRUGO, show_fan_percentage, set_fan_percentage, 3); +static SENSOR_DEVICE_ATTR(fan5_input_percentage, S_IWUSR | S_IRUGO, show_fan_percentage, set_fan_percentage, 4); static SENSOR_DEVICE_ATTR(pwm1, S_IWUSR | S_IRUGO, show_pwm, set_pwm, 0); static SENSOR_DEVICE_ATTR(pwm2, S_IWUSR | S_IRUGO, show_pwm, set_pwm, 1); static SENSOR_DEVICE_ATTR(pwm3, S_IWUSR | S_IRUGO, show_pwm, set_pwm, 2); @@ -172,6 +174,29 @@ static ssize_t set_fan_percentage(struct device *dev, struct device_attribute *d return count; } +static ssize_t show_fan_percentage(struct device *dev, struct device_attribute *devattr, + char *buf) +{ + struct sensor_device_attribute *attr = to_sensor_dev_attr(devattr); + struct i2c_client *client = to_i2c_client(dev); + struct emc2305_data *data = i2c_get_clientdata(client); + int val; + int rpm; + int rpm_percentage; + + MUX_SELECT; + + mutex_lock(&data->lock); + val = i2c_smbus_read_word_swapped(client, + EMC2305_REG_FAN_TACH(attr->index)); + mutex_unlock(&data->lock); + /* Left shift 3 bits for showing correct RPM */ + val = val >> 3; + rpm = 3932160 * 2 / (val > 0 ? val : 1); + rpm_percentage = rpm / 230; + return sprintf(buf, "%d\n", rpm_percentage); +} + static ssize_t show_fan(struct device *dev, struct device_attribute *devattr, char *buf) diff --git a/packages/platforms/delta/x86-64/x86-64-delta-ag9032v1/onlp/builds/src/module/src/fani.c b/packages/platforms/delta/x86-64/x86-64-delta-ag9032v1/onlp/builds/src/module/src/fani.c index 107e3eb7..b4801ac1 100644 --- a/packages/platforms/delta/x86-64/x86-64-delta-ag9032v1/onlp/builds/src/module/src/fani.c +++ b/packages/platforms/delta/x86-64/x86-64-delta-ag9032v1/onlp/builds/src/module/src/fani.c @@ -30,7 +30,7 @@ #include #define MAX_FAN_SPEED 23000 -#define MAX_PSU_FAN_SPEED 19328 +#define MAX_PSU_FAN_SPEED 18380 typedef struct fan_path_S { @@ -60,7 +60,7 @@ static fan_path_T fan_path[] = /* must map with onlp_fan_id */ { \ { ONLP_FAN_ID_CREATE(FAN_##id##_ON_FAN_BOARD), "Chassis Fan "#id, 0 }, \ 0x0, \ - (ONLP_FAN_CAPS_SET_RPM | ONLP_FAN_CAPS_GET_RPM), \ + (ONLP_FAN_CAPS_SET_PERCENTAGE | ONLP_FAN_CAPS_GET_PERCENTAGE |ONLP_FAN_CAPS_SET_RPM | ONLP_FAN_CAPS_GET_RPM), \ 0, \ 0, \ ONLP_FAN_MODE_INVALID, \ @@ -70,7 +70,7 @@ static fan_path_T fan_path[] = /* must map with onlp_fan_id */ { \ { ONLP_FAN_ID_CREATE(FAN_##fan_id##_ON_PSU##psu_id), "Chassis PSU-"#psu_id " Fan "#fan_id, 0 }, \ 0x0, \ - (ONLP_FAN_CAPS_SET_PERCENTAGE | ONLP_FAN_CAPS_GET_RPM | ONLP_FAN_CAPS_GET_PERCENTAGE), \ + ( ONLP_FAN_CAPS_SET_PERCENTAGE |ONLP_FAN_CAPS_GET_RPM | ONLP_FAN_CAPS_GET_PERCENTAGE), \ 0, \ 0, \ ONLP_FAN_MODE_INVALID, \ @@ -316,7 +316,7 @@ onlp_fani_rpm_set(onlp_oid_t id, int rpm) case FAN_8_ON_FAN_BOARD: case FAN_9_ON_FAN_BOARD: case FAN_10_ON_FAN_BOARD: - sprintf(fullpath, "%s%s", PREFIX_PATH, fan_path[local_id].ctrl_speed); + sprintf(fullpath, "%s%s", PREFIX_PATH, fan_path[local_id].speed); break; default: return ONLP_STATUS_E_INVALID; diff --git a/packages/platforms/delta/x86-64/x86-64-delta-ag9032v1/onlp/builds/src/module/src/ledi.c b/packages/platforms/delta/x86-64/x86-64-delta-ag9032v1/onlp/builds/src/module/src/ledi.c index 2241fbff..e72f9ab5 100644 --- a/packages/platforms/delta/x86-64/x86-64-delta-ag9032v1/onlp/builds/src/module/src/ledi.c +++ b/packages/platforms/delta/x86-64/x86-64-delta-ag9032v1/onlp/builds/src/module/src/ledi.c @@ -53,17 +53,17 @@ static onlp_led_info_t linfo[] = { { ONLP_LED_ID_CREATE(LED_FRONT_SYS), "FRONT LED (SYS LED)", 0 }, ONLP_LED_STATUS_PRESENT, - ONLP_LED_CAPS_ON_OFF | ONLP_LED_CAPS_GREEN | ONLP_LED_CAPS_GREEN_BLINKING | ONLP_LED_CAPS_AUTO, + ONLP_LED_CAPS_ON_OFF | ONLP_LED_CAPS_GREEN | ONLP_LED_CAPS_GREEN_BLINKING | ONLP_LED_CAPS_RED, }, { { ONLP_LED_ID_CREATE(LED_FRONT_PWR1), "FRONT LED (PWR1 LED)", 0 }, ONLP_LED_STATUS_PRESENT, - ONLP_LED_CAPS_ON_OFF | ONLP_LED_CAPS_ORANGE | ONLP_LED_CAPS_ORANGE_BLINKING | ONLP_LED_CAPS_GREEN, + ONLP_LED_CAPS_ON_OFF | ONLP_LED_CAPS_ORANGE_BLINKING | ONLP_LED_CAPS_GREEN, }, { { ONLP_LED_ID_CREATE(LED_FRONT_PWR2), "FRONT LED (PWR2 LED)", 0 }, ONLP_LED_STATUS_PRESENT, - ONLP_LED_CAPS_ON_OFF | ONLP_LED_CAPS_ORANGE | ONLP_LED_CAPS_ORANGE_BLINKING | ONLP_LED_CAPS_GREEN, + ONLP_LED_CAPS_ON_OFF | ONLP_LED_CAPS_ORANGE_BLINKING | ONLP_LED_CAPS_GREEN, }, { { ONLP_LED_ID_CREATE(LED_REAR_FAN_TRAY_1), "FAN TRAY 1 LED", 0 }, @@ -92,34 +92,6 @@ static onlp_led_info_t linfo[] = }, }; -/* Function to check fan 1-10 speed normally*/ -static int dni_fan_speed_good() -{ - int rpm = 0, rpm1 = 0, speed_good = 0; - - rpm = dni_i2c_lock_read_attribute(NULL, FAN1_FRONT); - rpm1 = dni_i2c_lock_read_attribute(NULL, FAN1_REAR); - if(rpm != 0 && rpm != 960 && rpm1 != 0 && rpm1 != 960) - speed_good++; - rpm = dni_i2c_lock_read_attribute(NULL, FAN2_FRONT); - rpm1 = dni_i2c_lock_read_attribute(NULL, FAN2_REAR); - if(rpm != 0 && rpm != 960 && rpm1 != 0 && rpm1 != 960) - speed_good++; - rpm = dni_i2c_lock_read_attribute(NULL, FAN3_FRONT); - rpm1 = dni_i2c_lock_read_attribute(NULL, FAN3_REAR); - if(rpm != 0 && rpm != 960 && rpm1 != 0 && rpm1 != 960) - speed_good++; - rpm = dni_i2c_lock_read_attribute(NULL, FAN4_FRONT); - rpm1 = dni_i2c_lock_read_attribute(NULL, FAN4_REAR); - if(rpm != 0 && rpm != 960 && rpm1 != 0 && rpm1 != 960) - speed_good++; - rpm = dni_i2c_lock_read_attribute(NULL, FAN5_FRONT); - rpm1 = dni_i2c_lock_read_attribute(NULL, FAN5_REAR); - if(rpm != 0 && rpm != 960 && rpm1 != 0 && rpm1 != 960) - speed_good++; - return speed_good; -} - /* * This function will be called prior to any other onlp_ledi_* functions. @@ -141,6 +113,7 @@ onlp_ledi_info_get(onlp_oid_t id, onlp_led_info_t* info) /* Set front panel's mode of leds */ r_data = dni_lock_swpld_read_attribute(LED_REG); int local_id = ONLP_OID_ID_GET(id); + dev_info_t dev_info; dev_info.bus = I2C_BUS_3; dev_info.offset = 0x00; @@ -149,22 +122,29 @@ onlp_ledi_info_get(onlp_oid_t id, onlp_led_info_t* info) mux_info_t mux_info; mux_info.offset = SWPLD_PSU_FAN_I2C_MUX_REG; mux_info.flags = DEFAULT_FLAG; + switch(local_id) { case LED_FRONT_FAN: - if((r_data & 0x01) == 0x01) + if((r_data & 0x03) == 0x01) info->mode = ONLP_LED_MODE_GREEN; - else if((r_data & 0x02) == 0x02) + else if((r_data & 0x03) == 0x02) info->mode = ONLP_LED_MODE_ORANGE; + else if((r_data & 0x03) == 0x03 || (r_data & 0x03) == 0x00) + info->mode = ONLP_LED_MODE_OFF; + else + return ONLP_STATUS_E_INTERNAL; break; case LED_FRONT_SYS: - if((r_data & 0x04) == 0x04) + if((r_data & 0x0C) == 0x04) info->mode = ONLP_LED_MODE_GREEN; else if((r_data & 0x0C) == 0x0C) - info->mode = ONLP_LED_MODE_ORANGE; - else if((r_data & 0x08) == 0x08) + info->mode = ONLP_LED_MODE_RED; + else if((r_data & 0x0C) == 0x08) info->mode = ONLP_LED_MODE_GREEN_BLINKING; - else + else if((r_data & 0x0C) == 0x00) + info->mode = ONLP_LED_MODE_OFF; + else return ONLP_STATUS_E_INTERNAL; break; case LED_FRONT_PWR1: @@ -289,14 +269,12 @@ onlp_ledi_info_get(onlp_oid_t id, onlp_led_info_t* info) int onlp_ledi_set(onlp_oid_t id, int on_or_off) { - VALIDATE(id); -// int local_id = ONLP_OID_ID_GET(id); - if(on_or_off == 0) - onlp_ledi_mode_set(id, ONLP_LED_MODE_OFF); - else - onlp_ledi_mode_set(id,ONLP_LED_MODE_AUTO); + if (!on_or_off) + { + return onlp_ledi_mode_set(id, ONLP_LED_MODE_OFF); + } - return ONLP_STATUS_OK; + return ONLP_STATUS_E_UNSUPPORTED; } /* @@ -310,210 +288,165 @@ onlp_ledi_mode_set(onlp_oid_t id, onlp_led_mode_t mode) { VALIDATE(id); int local_id = ONLP_OID_ID_GET(id); - int i = 0, count = 0; - int state = 0, fantray_present = -1, rpm = 0, rpm1 = 0; - uint8_t front_panel_led_value, power_state,fan_tray_led_reg_value,fan_tray_led_reg_2_value; + uint8_t front_panel_led_value, fan_tray_led_reg_value,fan_tray_led_reg_2_value; - mux_info_t mux_info; - mux_info.offset = SWPLD_PSU_FAN_I2C_MUX_REG; - mux_info.flags = DEFAULT_FLAG; - - dev_info_t dev_info; - dev_info.bus = I2C_BUS_3; - dev_info.offset = 0x00; - dev_info.flags = DEFAULT_FLAG; - - front_panel_led_value = dni_lock_swpld_read_attribute(LED_REG); fan_tray_led_reg_value = dni_lock_swpld_read_attribute(FAN_TRAY_LED_REG); - fan_tray_led_reg_2_value = dni_lock_swpld_read_attribute(FAN_TRAY_LED_REG_2); - switch(local_id) - { - case LED_FRONT_FAN: + fan_tray_led_reg_2_value = dni_lock_swpld_read_attribute(FAN_TRAY_LED_REG_2); + switch(local_id) + { + case LED_FRONT_FAN: /* Clean the bit 1,0 */ + front_panel_led_value = dni_lock_swpld_read_attribute(LED_REG); front_panel_led_value &= ~0x3; - /* Read fan eeprom to check present. Fan tray 1-5 */ - for(i = 0; i < 5; i++) + if(mode == ONLP_LED_MODE_GREEN) { - mux_info.channel = i; - dev_info.addr = FAN_TRAY_1 + i; - fantray_present = dni_i2c_lock_read(&mux_info, &dev_info); - if( fantray_present >= 0) - count++; + front_panel_led_value |= 0x01; + dni_lock_swpld_write_attribute(LED_REG, front_panel_led_value); } - /* Set front light of FAN */ - if(count == ALL_FAN_TRAY_EXIST && dni_fan_speed_good() == FAN_SPEED_NORMALLY) - { - front_panel_led_value |= 0x01; - dni_lock_swpld_write_attribute(LED_REG, front_panel_led_value); - } - else + else if(mode == ONLP_LED_MODE_ORANGE) { front_panel_led_value |= 0x02; dni_lock_swpld_write_attribute(LED_REG, front_panel_led_value); } - - break; - case LED_FRONT_PWR1: - /* Clean bit 7,6 */ - front_panel_led_value &= ~0xC0; - /* switch CPLD to PSU 1 */ - dev_info.bus = I2C_BUS_4; - dev_info.addr = PSU_EEPROM; - mux_info.channel = 0x00; - state = dni_i2c_lock_read(&mux_info, &dev_info); - - /* Check the state of PSU 1, "state = 1, PSU exists' */ - if(state == 1) - { - power_state = dni_lock_swpld_read_attribute(CTL_REG); - /* Set the light of PSU */ - if((power_state&0x80) != 0x80) - { - /* Red */ - front_panel_led_value |= 0x80; - dni_lock_swpld_write_attribute(LED_REG, front_panel_led_value); - } - else if((power_state & 0x80) == 0x80) - { - /* Green */ - front_panel_led_value |= 0x40; - dni_lock_swpld_write_attribute(LED_REG, front_panel_led_value); - } - } else dni_lock_swpld_write_attribute(LED_REG, front_panel_led_value); break; + case LED_FRONT_PWR1: + /* Clean bit 7,6 */ + front_panel_led_value = dni_lock_swpld_read_attribute(LED_REG); + front_panel_led_value &= ~0xC0; + if(mode == ONLP_LED_MODE_GREEN) + { + /* Green */ + front_panel_led_value |= 0x40; + dni_lock_swpld_write_attribute(LED_REG, front_panel_led_value); + } + else if(mode == ONLP_LED_MODE_ORANGE_BLINKING) + { + /* BLINKING ORANGE */ + front_panel_led_value |= 0x80; + dni_lock_swpld_write_attribute(LED_REG, front_panel_led_value); + } + else if(mode == ONLP_LED_MODE_OFF) + { + front_panel_led_value &= ~0xC0; + dni_lock_swpld_write_attribute(LED_REG, front_panel_led_value); + } + else + return ONLP_STATUS_E_UNSUPPORTED; + break; case LED_FRONT_PWR2: - /* Set front light of PSU 2 */ /* Clean bit 5,4 */ + front_panel_led_value = dni_lock_swpld_read_attribute(LED_REG); front_panel_led_value &= ~0x30; - /* switch CPLD to PSU 2 */ - dev_info.bus = I2C_BUS_4; - dev_info.addr = PSU_EEPROM; - mux_info.channel = 0x20; - state = dni_i2c_lock_read(&mux_info, &dev_info); - - /* Check the state of PSU 2, "state = 1, PSU exists' */ - if(state == 1) + if(mode == ONLP_LED_MODE_GREEN) { - power_state = dni_lock_swpld_read_attribute(CTL_REG); - if((power_state & 0x40) != 0x40) - { - /* Red */ - front_panel_led_value |= 0x20; - dni_lock_swpld_write_attribute(LED_REG, front_panel_led_value); - } - else if((power_state & 0x40) == 0x40) - { - /* Green */ - front_panel_led_value |= 0x10; - dni_lock_swpld_write_attribute(LED_REG, front_panel_led_value); - } + /* Green */ + front_panel_led_value |= 0x10; + dni_lock_swpld_write_attribute(LED_REG, front_panel_led_value); + } + else if(mode == ONLP_LED_MODE_ORANGE_BLINKING) + { + /* BLINKING ORANGE */ + front_panel_led_value |= 0x20; + dni_lock_swpld_write_attribute(LED_REG, front_panel_led_value); + } + else if(mode == ONLP_LED_MODE_OFF) + { + front_panel_led_value &= ~0x30; + dni_lock_swpld_write_attribute(LED_REG, front_panel_led_value); + } + else + return ONLP_STATUS_E_UNSUPPORTED; + break; + + case LED_FRONT_SYS: + front_panel_led_value = dni_lock_swpld_read_attribute(LED_REG); + front_panel_led_value &= ~0x0C; + if(mode == ONLP_LED_MODE_GREEN_BLINKING) + { + front_panel_led_value |= 0x08; + dni_lock_swpld_write_attribute(LED_REG, front_panel_led_value); + } + else if (mode == ONLP_LED_MODE_GREEN) + { + front_panel_led_value |= 0x04; + dni_lock_swpld_write_attribute(LED_REG, front_panel_led_value); + } + else if (mode == ONLP_LED_MODE_RED) + { + front_panel_led_value |= 0x0c; + dni_lock_swpld_write_attribute(LED_REG, front_panel_led_value); } else dni_lock_swpld_write_attribute(LED_REG, front_panel_led_value); break; + case LED_REAR_FAN_TRAY_1: - /* Select fan tray 1 */ - mux_info.channel = 0x00; - dev_info.addr = FAN_TRAY_1; - fantray_present = dni_i2c_lock_read(&mux_info, &dev_info); - /* Clean bit 7,6 */ - fan_tray_led_reg_value &= ~0xC0; - rpm = dni_i2c_lock_read_attribute(NULL, FAN5_FRONT); - rpm1 = dni_i2c_lock_read_attribute(NULL, FAN5_REAR); - if(fantray_present >= 0 && rpm != 960 && rpm != 0 && rpm1 != 960 && rpm1 != 0 ) - {/* Green light */ - fan_tray_led_reg_value |= 0x40; - dni_lock_swpld_write_attribute(FAN_TRAY_LED_REG, fan_tray_led_reg_value); - } - else - {/* Red light */ + fan_tray_led_reg_value &= ~0xC0; + if(mode == ONLP_LED_MODE_GREEN) + {/* Green light */ + fan_tray_led_reg_value |= 0x40; + dni_lock_swpld_write_attribute(FAN_TRAY_LED_REG, fan_tray_led_reg_value); + } + else + {/* Red light */ fan_tray_led_reg_value |= 0x80; dni_lock_swpld_write_attribute(FAN_TRAY_LED_REG, fan_tray_led_reg_value); - } - break; + } + break; case LED_REAR_FAN_TRAY_2: - /* Select fan tray 2 */ - mux_info.channel = 0x01; - dev_info.addr = FAN_TRAY_2; - fantray_present = dni_i2c_lock_read(&mux_info, &dev_info); - /* Clean bit 5,4 */ fan_tray_led_reg_value &= ~0x30; - rpm = dni_i2c_lock_read_attribute(NULL, FAN4_FRONT); - rpm1 = dni_i2c_lock_read_attribute(NULL, FAN4_REAR); - - if(fantray_present >= 0 && rpm != 960 && rpm != 0 && rpm1 != 960 && rpm1 != 0 ) - { + if(mode == ONLP_LED_MODE_GREEN) + {/* Green light */ fan_tray_led_reg_value |= 0x10; dni_lock_swpld_write_attribute(FAN_TRAY_LED_REG, fan_tray_led_reg_value); } else - { - fan_tray_led_reg_value |= 0x20; - dni_lock_swpld_write_attribute(FAN_TRAY_LED_REG, fan_tray_led_reg_value); + {/* Red light */ + fan_tray_led_reg_value |= 0x20; + dni_lock_swpld_write_attribute(FAN_TRAY_LED_REG, fan_tray_led_reg_value); } break; case LED_REAR_FAN_TRAY_3: - /* Select fan tray 3 */ - mux_info.channel = 0x02; - dev_info.addr = FAN_TRAY_3; - fantray_present = dni_i2c_lock_read(&mux_info, &dev_info); fan_tray_led_reg_value &= ~0x0c; - /* Clean bit 3,2 */ - rpm = dni_i2c_lock_read_attribute(NULL, FAN3_FRONT); - rpm1 = dni_i2c_lock_read_attribute(NULL, FAN3_REAR); - if(fantray_present >= 0 && rpm != 960 && rpm != 0 && rpm1 != 960 && rpm1 != 0 ) - { + if(mode == ONLP_LED_MODE_GREEN) + {/* Green light */ fan_tray_led_reg_value |= 0x04; dni_lock_swpld_write_attribute(FAN_TRAY_LED_REG, fan_tray_led_reg_value); } else - { - fan_tray_led_reg_value |= 0x08; - dni_lock_swpld_write_attribute(FAN_TRAY_LED_REG, fan_tray_led_reg_value); + {/* Red light */ + fan_tray_led_reg_value |= 0x08; + dni_lock_swpld_write_attribute(FAN_TRAY_LED_REG, fan_tray_led_reg_value); } break; case LED_REAR_FAN_TRAY_4: - /* Select fan tray 4 */ - mux_info.channel = 0x03; - dev_info.addr = FAN_TRAY_4; - fantray_present = dni_i2c_lock_read(&mux_info, &dev_info); - /* Clean bit 1,0 */ fan_tray_led_reg_value &= ~0x03; - rpm = dni_i2c_lock_read_attribute(NULL, FAN2_FRONT); - rpm1 = dni_i2c_lock_read_attribute(NULL, FAN2_REAR); - if(fantray_present >= 0 && rpm != 960 && rpm !=0 && rpm1 != 960 && rpm1 != 0 ) - { + if(mode == ONLP_LED_MODE_GREEN) + {/* Green light */ fan_tray_led_reg_value |= 0x01; dni_lock_swpld_write_attribute(FAN_TRAY_LED_REG, fan_tray_led_reg_value); } else - { + {/* Red light */ fan_tray_led_reg_value |= 0x02; dni_lock_swpld_write_attribute(FAN_TRAY_LED_REG, fan_tray_led_reg_value); } break; - case LED_REAR_FAN_TRAY_5: - /* Select fan tray 5 */ - mux_info.channel = 0x04; - dev_info.addr = FAN_TRAY_5; - fantray_present = dni_i2c_lock_read(&mux_info, &dev_info); - /* Clean bit 7,6 */ - fan_tray_led_reg_2_value &= ~0xC0; - rpm = dni_i2c_lock_read_attribute(NULL, FAN1_FRONT); - rpm1 = dni_i2c_lock_read_attribute(NULL, FAN1_REAR); - if(fantray_present >= 0 && rpm != 960 && rpm != 0 && rpm1 != 960 && rpm1 !=0 ) - { + case LED_REAR_FAN_TRAY_5: + fan_tray_led_reg_2_value &= ~0xC0; + if(mode == ONLP_LED_MODE_GREEN) + {/* Green light */ fan_tray_led_reg_2_value |= 0x40; dni_lock_swpld_write_attribute(FAN_TRAY_LED_REG_2, fan_tray_led_reg_2_value); - } - else - { + } + else + {/* Red light */ fan_tray_led_reg_2_value |= 0x80; dni_lock_swpld_write_attribute(FAN_TRAY_LED_REG_2, fan_tray_led_reg_2_value); - } - break; + } + break; } return ONLP_STATUS_OK; } @@ -526,6 +459,3 @@ onlp_ledi_ioctl(onlp_oid_t id, va_list vargs) { return ONLP_STATUS_E_UNSUPPORTED; } - - - diff --git a/packages/platforms/delta/x86-64/x86-64-delta-ag9032v1/onlp/builds/src/module/src/platform_lib.c b/packages/platforms/delta/x86-64/x86-64-delta-ag9032v1/onlp/builds/src/module/src/platform_lib.c index 27f9850c..743806ad 100644 --- a/packages/platforms/delta/x86-64/x86-64-delta-ag9032v1/onlp/builds/src/module/src/platform_lib.c +++ b/packages/platforms/delta/x86-64/x86-64-delta-ag9032v1/onlp/builds/src/module/src/platform_lib.c @@ -36,6 +36,33 @@ #include #include +int dni_fan_speed_good() +{ + int rpm = 0, rpm1 = 0, speed_good = 0; + + rpm = dni_i2c_lock_read_attribute(NULL, FAN1_FRONT); + rpm1 = dni_i2c_lock_read_attribute(NULL, FAN1_REAR); + if(rpm != 0 && rpm != 960 && rpm1 != 0 && rpm1 != 960) + speed_good++; + rpm = dni_i2c_lock_read_attribute(NULL, FAN2_FRONT); + rpm1 = dni_i2c_lock_read_attribute(NULL, FAN2_REAR); + if(rpm != 0 && rpm != 960 && rpm1 != 0 && rpm1 != 960) + speed_good++; + rpm = dni_i2c_lock_read_attribute(NULL, FAN3_FRONT); + rpm1 = dni_i2c_lock_read_attribute(NULL, FAN3_REAR); + if(rpm != 0 && rpm != 960 && rpm1 != 0 && rpm1 != 960) + speed_good++; + rpm = dni_i2c_lock_read_attribute(NULL, FAN4_FRONT); + rpm1 = dni_i2c_lock_read_attribute(NULL, FAN4_REAR); + if(rpm != 0 && rpm != 960 && rpm1 != 0 && rpm1 != 960) + speed_good++; + rpm = dni_i2c_lock_read_attribute(NULL, FAN5_FRONT); + rpm1 = dni_i2c_lock_read_attribute(NULL, FAN5_REAR); + if(rpm != 0 && rpm != 960 && rpm1 != 0 && rpm1 != 960) + speed_good++; + return speed_good; +} + int dni_i2c_read_attribute_binary(char *filename, char *buffer, int buf_size, int data_len) { int fd; diff --git a/packages/platforms/delta/x86-64/x86-64-delta-ag9032v1/onlp/builds/src/module/src/platform_lib.h b/packages/platforms/delta/x86-64/x86-64-delta-ag9032v1/onlp/builds/src/module/src/platform_lib.h index ea48e364..ff9f57a4 100644 --- a/packages/platforms/delta/x86-64/x86-64-delta-ag9032v1/onlp/builds/src/module/src/platform_lib.h +++ b/packages/platforms/delta/x86-64/x86-64-delta-ag9032v1/onlp/builds/src/module/src/platform_lib.h @@ -168,6 +168,8 @@ int dni_i2c_lock_read_attribute(mux_info_t * mux_info, char * fullpath); int dni_i2c_lock_write_attribute(mux_info_t * mux_info, char * data,char * fullpath); int dni_lock_swpld_read_attribute(int addr); int dni_lock_swpld_write_attribute(int addr, int addr1); +int dni_fan_speed_good(); + typedef enum { diff --git a/packages/platforms/delta/x86-64/x86-64-delta-ag9032v1/onlp/builds/src/module/src/sysi.c b/packages/platforms/delta/x86-64/x86-64-delta-ag9032v1/onlp/builds/src/module/src/sysi.c index 2588c1a3..9d5d2d7d 100644 --- a/packages/platforms/delta/x86-64/x86-64-delta-ag9032v1/onlp/builds/src/module/src/sysi.c +++ b/packages/platforms/delta/x86-64/x86-64-delta-ag9032v1/onlp/builds/src/module/src/sysi.c @@ -210,66 +210,174 @@ onlp_sysi_platform_manage_leds(void) { /* Set front lights: fan, power supply 1, 2 */ - uint8_t addr, present_bit = 0x00, bit = 0x00; - - addr = dni_lock_swpld_read_attribute(LED_REG); - /* Turn the fan led on or off */ - if((addr & 0x3) == 0 || (addr & 0x3) == 0x3 ) - onlp_ledi_set(ONLP_LED_ID_CREATE(LED_FRONT_FAN), TURN_OFF); - else - onlp_ledi_set(ONLP_LED_ID_CREATE(LED_FRONT_FAN), TURN_ON); - - /* Set front light of PSU 1 */ - addr = dni_lock_swpld_read_attribute(LED_REG); - - if((addr & 0xC0) == 0 || (addr & 0xC0) == 0xC0 ) - onlp_ledi_set(ONLP_LED_ID_CREATE(LED_FRONT_PWR1), TURN_OFF); - else - onlp_ledi_set(ONLP_LED_ID_CREATE(LED_FRONT_PWR1), TURN_ON); - - /* Set front light of PSU 2 */ - addr = dni_lock_swpld_read_attribute(LED_REG); - if((addr & 0x30) == 0 || (addr & 0x30) == 0x30 ) - onlp_ledi_set(ONLP_LED_ID_CREATE(LED_FRONT_PWR2), TURN_OFF); - else - onlp_ledi_set(ONLP_LED_ID_CREATE(LED_FRONT_PWR2), TURN_ON); - - /* Rear light fan tray 1-5 */ - dev_info_t dev_info; - dev_info.bus = I2C_BUS_3; - dev_info.addr = FAN_IO_CTL; - dev_info.offset = 0x00; - dev_info.flags = DEFAULT_FLAG; - + int fantray_present = -1, rpm, rpm1,i=0,count=0, state; + uint8_t power_state; mux_info_t mux_info; mux_info.offset = SWPLD_PSU_FAN_I2C_MUX_REG; mux_info.flags = DEFAULT_FLAG; - mux_info.channel = 0x07; - - /* Turn on or off the fan trays' leds */ - present_bit = dni_i2c_lock_read(&mux_info, &dev_info); - if((present_bit & ((bit+1)<<4)) == 0) - onlp_ledi_set(ONLP_LED_ID_CREATE(LED_REAR_FAN_TRAY_1), TURN_OFF); - else - onlp_ledi_set(ONLP_LED_ID_CREATE(LED_REAR_FAN_TRAY_1), TURN_ON); - if((present_bit & ((bit+1)<<3)) == 0) - onlp_ledi_set(ONLP_LED_ID_CREATE(LED_REAR_FAN_TRAY_2), TURN_OFF); - else - onlp_ledi_set(ONLP_LED_ID_CREATE(LED_REAR_FAN_TRAY_2), TURN_ON); - if((present_bit & ((bit+1)<<2)) == 0) - onlp_ledi_set(ONLP_LED_ID_CREATE(LED_REAR_FAN_TRAY_3), TURN_OFF); - else - onlp_ledi_set(ONLP_LED_ID_CREATE(LED_REAR_FAN_TRAY_3), TURN_ON); - if((present_bit & ((bit+1)<<1)) == 0) - onlp_ledi_set(ONLP_LED_ID_CREATE(LED_REAR_FAN_TRAY_4), TURN_OFF); - else - onlp_ledi_set(ONLP_LED_ID_CREATE(LED_REAR_FAN_TRAY_4), TURN_ON); - if((present_bit & ((bit+1)<<0)) == 0) - onlp_ledi_set(ONLP_LED_ID_CREATE(LED_REAR_FAN_TRAY_5), TURN_OFF); + dev_info_t dev_info; + dev_info.bus = I2C_BUS_3; + dev_info.offset = 0x00; + dev_info.flags = DEFAULT_FLAG; + + + /* Fan tray 1 */ + mux_info.channel = 0x00; + dev_info.addr = FAN_TRAY_1; + fantray_present = dni_i2c_lock_read(&mux_info, &dev_info); + + rpm = dni_i2c_lock_read_attribute(NULL, FAN5_FRONT); + rpm1 = dni_i2c_lock_read_attribute(NULL, FAN5_REAR); + if(fantray_present >= 0 && rpm != 960 && rpm != 0 && rpm1 != 960 && rpm1 != 0 ) + {/* Green light */ + + onlp_ledi_mode_set(ONLP_LED_ID_CREATE(LED_REAR_FAN_TRAY_1),ONLP_LED_MODE_GREEN); + } else - onlp_ledi_set(ONLP_LED_ID_CREATE(LED_REAR_FAN_TRAY_5), TURN_ON); + {/* Red light */ + + onlp_ledi_mode_set(ONLP_LED_ID_CREATE(LED_REAR_FAN_TRAY_1),ONLP_LED_MODE_RED); + } + /* Fan tray 2 */ + mux_info.channel = 0x01; + dev_info.addr = FAN_TRAY_2; + fantray_present = dni_i2c_lock_read(&mux_info, &dev_info); + + rpm = dni_i2c_lock_read_attribute(NULL, FAN4_FRONT); + rpm1 = dni_i2c_lock_read_attribute(NULL, FAN4_REAR); + if(fantray_present >= 0 && rpm != 960 && rpm != 0 && rpm1 != 960 && rpm1 != 0 ) + {/* Green light */ + + onlp_ledi_mode_set(ONLP_LED_ID_CREATE(LED_REAR_FAN_TRAY_2),ONLP_LED_MODE_GREEN); + } + else + {/* Red light */ + + onlp_ledi_mode_set(ONLP_LED_ID_CREATE(LED_REAR_FAN_TRAY_2),ONLP_LED_MODE_RED); + } + /* Fan tray 3 */ + mux_info.channel = 0x02; + dev_info.addr = FAN_TRAY_3; + fantray_present = dni_i2c_lock_read(&mux_info, &dev_info); + + rpm = dni_i2c_lock_read_attribute(NULL, FAN3_FRONT); + rpm1 = dni_i2c_lock_read_attribute(NULL, FAN3_REAR); + if(fantray_present >= 0 && rpm != 960 && rpm != 0 && rpm1 != 960 && rpm1 != 0 ) + {/* Green light */ + + onlp_ledi_mode_set(ONLP_LED_ID_CREATE(LED_REAR_FAN_TRAY_3),ONLP_LED_MODE_GREEN); + } + else + {/* Red light */ + + onlp_ledi_mode_set(ONLP_LED_ID_CREATE(LED_REAR_FAN_TRAY_3),ONLP_LED_MODE_RED); + } + /* Fan tray 4 */ + mux_info.channel = 0x03; + dev_info.addr = FAN_TRAY_4; + fantray_present = dni_i2c_lock_read(&mux_info, &dev_info); + + rpm = dni_i2c_lock_read_attribute(NULL, FAN2_FRONT); + rpm1 = dni_i2c_lock_read_attribute(NULL, FAN2_REAR); + if(fantray_present >= 0 && rpm != 960 && rpm != 0 && rpm1 != 960 && rpm1 != 0 ) + {/* Green light */ + + onlp_ledi_mode_set(ONLP_LED_ID_CREATE(LED_REAR_FAN_TRAY_4),ONLP_LED_MODE_GREEN); + } + else + {/* Red light */ + + onlp_ledi_mode_set(ONLP_LED_ID_CREATE(LED_REAR_FAN_TRAY_4),ONLP_LED_MODE_RED); + } + /* Fan tray 5 */ + mux_info.channel = 0x04; + dev_info.addr = FAN_TRAY_5; + fantray_present = dni_i2c_lock_read(&mux_info, &dev_info); + + rpm = dni_i2c_lock_read_attribute(NULL, FAN1_FRONT); + rpm1 = dni_i2c_lock_read_attribute(NULL, FAN1_REAR); + if(fantray_present >= 0 && rpm != 960 && rpm != 0 && rpm1 != 960 && rpm1 != 0 ) + {/* Green light */ + + onlp_ledi_mode_set(ONLP_LED_ID_CREATE(LED_REAR_FAN_TRAY_5),ONLP_LED_MODE_GREEN); + } + else + {/* Red light */ + + onlp_ledi_mode_set(ONLP_LED_ID_CREATE(LED_REAR_FAN_TRAY_5),ONLP_LED_MODE_RED); + } + + /* FRONT FAN LED & SYS */ + for(i = 0; i < 5; i++) + { + mux_info.channel = i; + dev_info.addr = FAN_TRAY_1 + i; + fantray_present = dni_i2c_lock_read(&mux_info, &dev_info); + if( fantray_present >= 0) + count++; + } + /* Set front light of FAN */ + if(count == ALL_FAN_TRAY_EXIST && dni_fan_speed_good() == FAN_SPEED_NORMALLY) + { + onlp_ledi_mode_set(ONLP_LED_ID_CREATE(LED_FRONT_FAN), ONLP_LED_MODE_GREEN); + onlp_ledi_mode_set(ONLP_LED_ID_CREATE(LED_FRONT_SYS), ONLP_LED_MODE_GREEN); + } + else + { + + onlp_ledi_mode_set(ONLP_LED_ID_CREATE(LED_FRONT_FAN), ONLP_LED_MODE_ORANGE); + onlp_ledi_mode_set(ONLP_LED_ID_CREATE(LED_FRONT_SYS), ONLP_LED_MODE_RED); + } + /* Set front light of PWR1 */ + dev_info.bus = I2C_BUS_4; + dev_info.addr = PSU_EEPROM; + mux_info.channel = 0x00; + state = dni_i2c_lock_read(&mux_info, &dev_info); + + /* Check the state of PSU 1, "state = 1, PSU exists' */ + if(state == 1) + { + power_state = dni_lock_swpld_read_attribute(CTL_REG); + /* Set the light of PSU */ + if((power_state&0x80) != 0x80) + { + /* Red */ + onlp_ledi_mode_set(ONLP_LED_ID_CREATE(LED_FRONT_PWR1), ONLP_LED_MODE_ORANGE_BLINKING); + } + else if((power_state & 0x80) == 0x80) + { + /* Green */ + onlp_ledi_mode_set(ONLP_LED_ID_CREATE(LED_FRONT_PWR1), ONLP_LED_MODE_GREEN); + } + } + else + onlp_ledi_mode_set(ONLP_LED_ID_CREATE(LED_FRONT_PWR1), ONLP_LED_MODE_OFF); + /* Set front light of PWR1 */ + dev_info.bus = I2C_BUS_4; + dev_info.addr = PSU_EEPROM; + mux_info.channel = 0x20; + state = dni_i2c_lock_read(&mux_info, &dev_info); + + /* Check the state of PSU 2, "state = 1, PSU exists' */ + if(state == 1) + { + power_state = dni_lock_swpld_read_attribute(CTL_REG); + /* Set the light of PSU */ + if((power_state&0x40) != 0x40) + { + /* Red */ + onlp_ledi_mode_set(ONLP_LED_ID_CREATE(LED_FRONT_PWR2), ONLP_LED_MODE_ORANGE_BLINKING); + } + else if((power_state & 0x40) == 0x40) + { + /* Green */ + onlp_ledi_mode_set(ONLP_LED_ID_CREATE(LED_FRONT_PWR2), ONLP_LED_MODE_GREEN); + } + } + else + onlp_ledi_mode_set(ONLP_LED_ID_CREATE(LED_FRONT_PWR2), ONLP_LED_MODE_OFF); + return ONLP_STATUS_OK; } - diff --git a/packages/platforms/delta/x86-64/x86-64-delta-ag9032v1/onlp/builds/src/module/src/thermali.c b/packages/platforms/delta/x86-64/x86-64-delta-ag9032v1/onlp/builds/src/module/src/thermali.c index 1e013d6e..0e898e72 100644 --- a/packages/platforms/delta/x86-64/x86-64-delta-ag9032v1/onlp/builds/src/module/src/thermali.c +++ b/packages/platforms/delta/x86-64/x86-64-delta-ag9032v1/onlp/builds/src/module/src/thermali.c @@ -38,6 +38,12 @@ } \ } while(0) +#define dni_onlp_thermal_threshold(WARNING_DEFAULT, ERROR_DEFAULT, SHUTDOWN_DEFAULT){ \ + WARNING_DEFAULT, \ + ERROR_DEFAULT, \ + SHUTDOWN_DEFAULT, \ +} + static char* last_path[] = /* must map with onlp_thermal_id */ { "reserved", @@ -69,23 +75,23 @@ static onlp_thermal_info_t linfo[] = { }, { { ONLP_THERMAL_ID_CREATE(THERMAL_1_ON_CPU_BOARD), "CPU below side thermal sensor (U57, Below of CPU)", 0}, ONLP_THERMAL_STATUS_PRESENT, - ONLP_THERMAL_CAPS_ALL, 0, ONLP_THERMAL_THRESHOLD_INIT_DEFAULTS + ONLP_THERMAL_CAPS_ALL, 0, dni_onlp_thermal_threshold(45000,55000,60000) }, { { ONLP_THERMAL_ID_CREATE(THERMAL_2_ON_FAN_BOARD), "Wind thermal sensor (U334, Near FAN)", 0}, ONLP_THERMAL_STATUS_PRESENT, - ONLP_THERMAL_CAPS_ALL, 0, ONLP_THERMAL_THRESHOLD_INIT_DEFAULTS + ONLP_THERMAL_CAPS_ALL, 0, dni_onlp_thermal_threshold(50000,60000,65000) }, { { ONLP_THERMAL_ID_CREATE(THERMAL_3_ON_SW_BOARD), "MAC up side thermal sersor (U38, up side of MAC)", 0}, ONLP_THERMAL_STATUS_PRESENT, - ONLP_THERMAL_CAPS_ALL, 0, ONLP_THERMAL_THRESHOLD_INIT_DEFAULTS + ONLP_THERMAL_CAPS_ALL, 0, dni_onlp_thermal_threshold(65000,75000,80000) }, { { ONLP_THERMAL_ID_CREATE(THERMAL_4_ON_SW_BOARD), "MAC down side thermal sensor (U40, down side of MAC)", 0}, ONLP_THERMAL_STATUS_PRESENT, - ONLP_THERMAL_CAPS_ALL, 0, ONLP_THERMAL_THRESHOLD_INIT_DEFAULTS + ONLP_THERMAL_CAPS_ALL, 0, dni_onlp_thermal_threshold(60000,70000,75000) }, { { ONLP_THERMAL_ID_CREATE(THERMAL_5_ON_SW_BOARD), "Surroundings thermal sensor (U240, Near front panel)", 0}, ONLP_THERMAL_STATUS_PRESENT, - ONLP_THERMAL_CAPS_ALL, 0, ONLP_THERMAL_THRESHOLD_INIT_DEFAULTS + ONLP_THERMAL_CAPS_ALL, 0, dni_onlp_thermal_threshold(50000,60000,65000) }, { { ONLP_THERMAL_ID_CREATE(THERMAL_1_ON_PSU1), "PSU-1 Thermal Sensor 1", ONLP_PSU_ID_CREATE(PSU1_ID)}, ONLP_THERMAL_STATUS_PRESENT, diff --git a/packages/platforms/delta/x86-64/x86-64-delta-ag9032v1/platform-config/r0/src/python/x86_64_delta_ag9032v1_r0/__init__.py b/packages/platforms/delta/x86-64/x86-64-delta-ag9032v1/platform-config/r0/src/python/x86_64_delta_ag9032v1_r0/__init__.py index 84ef7d64..c05b40a8 100644 --- a/packages/platforms/delta/x86-64/x86-64-delta-ag9032v1/platform-config/r0/src/python/x86_64_delta_ag9032v1_r0/__init__.py +++ b/packages/platforms/delta/x86-64/x86-64-delta-ag9032v1/platform-config/r0/src/python/x86_64_delta_ag9032v1_r0/__init__.py @@ -41,8 +41,20 @@ class OnlPlatform_x86_64_delta_ag9032v1_r0(OnlPlatformDelta, self.new_i2c_device('tmp75', 0x4f, 3) #Insert sfp module - self.insmod('dni_ag9032v1_sfp') - self.new_i2c_device('dni_ag9032v1_sfp', 0x50, 5) + self.insmod('dni_ag9032v1_sfp') + self.new_i2c_device('dni_ag9032v1_sfp', 0x50, 5) + + #set thermal Thigh & Tlow + os.system("echo 60000 > /sys/class/hwmon/hwmon4/temp1_max") + os.system("echo 65000 > /sys/class/hwmon/hwmon8/temp1_max") + os.system("echo 80000 > /sys/class/hwmon/hwmon5/temp1_max") + os.system("echo 75000 > /sys/class/hwmon/hwmon6/temp1_max") + os.system("echo 65000 > /sys/class/hwmon/hwmon7/temp1_max") + os.system("echo 55000 > /sys/class/hwmon/hwmon4/temp1_max_hyst") + os.system("echo 60000 > /sys/class/hwmon/hwmon8/temp1_max_hyst") + os.system("echo 75000 > /sys/class/hwmon/hwmon5/temp1_max_hyst") + os.system("echo 70000 > /sys/class/hwmon/hwmon6/temp1_max_hyst") + os.system("echo 60000 > /sys/class/hwmon/hwmon7/temp1_max_hyst") #set front panel sys light "GREEN" os.system("echo 0x1C > /sys/bus/i2c/devices/6-0031/addr") diff --git a/packages/platforms/delta/x86-64/x86-64-delta-agc7648a/onlp/builds/src/module/src/sysi.c b/packages/platforms/delta/x86-64/x86-64-delta-agc7648a/onlp/builds/src/module/src/sysi.c index 3695fc17..22214e61 100755 --- a/packages/platforms/delta/x86-64/x86-64-delta-agc7648a/onlp/builds/src/module/src/sysi.c +++ b/packages/platforms/delta/x86-64/x86-64-delta-agc7648a/onlp/builds/src/module/src/sysi.c @@ -58,27 +58,27 @@ decide_percentage(int *percentage, int temper) { int level; - if(temper <= 25) + if(temper < 65) { - *percentage = 40; + *percentage = 50; level = 0; } - else if(temper > 25 && temper <= 40) + else if(temper >= 65 && temper <= 70) { *percentage = 60; level = 1; } - else if(temper > 40 && temper <= 55) + else if(temper > 70 && temper <= 75) { - *percentage = 80; + *percentage = 70; level = 2; } - else if(temper > 55 && temper <= 75) + else if(temper > 75 && temper <= 80) { - *percentage = 90; + *percentage = 85; level = 3; } - else if(temper > 75) + else if(temper > 80) { *percentage = 100; level = 4;