From f258852eb425bafb873122163090fb78f571524a Mon Sep 17 00:00:00 2001 From: cytsai0409 Date: Tue, 20 Mar 2018 11:39:07 +0800 Subject: [PATCH] [ingrasys s9100] platform driver update --- .../x86_64_ingrasys_s9100/module/src/fani.c | 75 +++++++++++++---- .../x86_64_ingrasys_s9100/module/src/ledi.c | 82 ++++++++++++++++++- .../module/src/platform_lib.c | 70 +++++++++++++++- .../module/src/platform_lib.h | 19 +++++ .../x86_64_ingrasys_s9100/module/src/psui.c | 4 +- .../x86_64_ingrasys_s9100/module/src/sysi.c | 74 ++++++++++++++--- .../x86_64_ingrasys_s9100_r0/__init__.py | 75 +++++++++++++++++ 7 files changed, 365 insertions(+), 34 deletions(-) diff --git a/packages/platforms/ingrasys/x86-64/x86-64-ingrasys-s9100/onlp/builds/src/x86_64_ingrasys_s9100/module/src/fani.c b/packages/platforms/ingrasys/x86-64/x86-64-ingrasys-s9100/onlp/builds/src/x86_64_ingrasys_s9100/module/src/fani.c index 921b3ffa..66f33b16 100755 --- a/packages/platforms/ingrasys/x86-64/x86-64-ingrasys-s9100/onlp/builds/src/x86_64_ingrasys_s9100/module/src/fani.c +++ b/packages/platforms/ingrasys/x86-64/x86-64-ingrasys-s9100/onlp/builds/src/x86_64_ingrasys_s9100/module/src/fani.c @@ -25,6 +25,7 @@ #include #include "x86_64_ingrasys_s9100_int.h" #include +#include #include "platform_lib.h" onlp_fan_info_t fan_info[] = { @@ -111,12 +112,67 @@ onlp_fani_init(void) return ONLP_STATUS_OK; } +/* get fan present status*/ +int sys_fan_present_get(onlp_fan_info_t* info, int id) +{ + int rv, fan_presence, i2c_bus, offset, fan_reg_mask; + + /* get fan presence*/ + i2c_bus = I2C_BUS_9; + switch (id) + { + case FAN_ID_FAN1: + case FAN_ID_FAN2: + offset = 0; + fan_reg_mask = FAN_1_2_PRESENT_MASK; + break; + case FAN_ID_FAN3: + case FAN_ID_FAN4: + offset = 0; + fan_reg_mask = FAN_3_4_PRESENT_MASK; + break; + case FAN_ID_FAN5: + case FAN_ID_FAN6: + offset = 1; + fan_reg_mask = FAN_5_6_PRESENT_MASK; + break; + case FAN_ID_FAN7: + case FAN_ID_FAN8: + offset = 1; + fan_reg_mask = FAN_7_8_PRESENT_MASK; + break; + default: + return ONLP_STATUS_E_INVALID; + } + + rv = onlp_i2c_readb(i2c_bus, FAN_REG, offset, ONLP_I2C_F_FORCE); + if (rv < 0) { + return ONLP_STATUS_E_INTERNAL; + } + + fan_presence = (rv & fan_reg_mask) ? 0 : 1; + + if (!fan_presence) { + info->status &= ~ONLP_FAN_STATUS_PRESENT; + } else { + info->status |= ONLP_FAN_STATUS_PRESENT; + } + + return ONLP_STATUS_OK; +} + int sys_fan_info_get(onlp_fan_info_t* info, int id) { int rv, fan_status, fan_rpm, perc_val, percentage; + int max_fan_speed = 16000; fan_status = 0; fan_rpm = 0; + + rv = sys_fan_present_get(info, id); + if (rv < 0) { + return ONLP_STATUS_E_INTERNAL; + } rv = onlp_file_read_int(&fan_status, SYS_FAN_PREFIX "fan%d_alarm", id); if (rv < 0) { @@ -157,21 +213,8 @@ sys_fan_info_get(onlp_fan_info_t* info, int id) return ONLP_STATUS_E_INTERNAL; } - /* - Get fan speed, converting driver value to percnet. - Value 128 is 50%. - Value 200 is 80%. - Value 255 is 100%. - */ - if (perc_val == 255) { - percentage = 100; - } else if (perc_val == 200) { - percentage = 80; - } else if (perc_val == 128) { - percentage = 50; - } else { - return ONLP_STATUS_E_INTERNAL; - } + percentage = (info->rpm*100)/max_fan_speed; + info->percentage = percentage; return ONLP_STATUS_OK; @@ -280,4 +323,4 @@ onlp_fani_info_get(onlp_oid_t id, onlp_fan_info_t* rv) return rc; } - \ No newline at end of file + diff --git a/packages/platforms/ingrasys/x86-64/x86-64-ingrasys-s9100/onlp/builds/src/x86_64_ingrasys_s9100/module/src/ledi.c b/packages/platforms/ingrasys/x86-64/x86-64-ingrasys-s9100/onlp/builds/src/x86_64_ingrasys_s9100/module/src/ledi.c index 306ab37b..b694ca2e 100755 --- a/packages/platforms/ingrasys/x86-64/x86-64-ingrasys-s9100/onlp/builds/src/x86_64_ingrasys_s9100/module/src/ledi.c +++ b/packages/platforms/ingrasys/x86-64/x86-64-ingrasys-s9100/onlp/builds/src/x86_64_ingrasys_s9100/module/src/ledi.c @@ -55,9 +55,36 @@ static onlp_led_info_t led_info[] = { LED_OID_PSU2, "Chassis LED 4 (PSU2 LED)", 0 }, ONLP_LED_STATUS_PRESENT, ONLP_LED_CAPS_ON_OFF | ONLP_LED_CAPS_ORANGE | ONLP_LED_CAPS_GREEN | ONLP_LED_CAPS_AUTO, + }, + { + { LED_OID_FAN_TRAY1, "Rear LED 1 (FAN TRAY1 LED)", 0 }, + ONLP_LED_STATUS_PRESENT, + ONLP_LED_CAPS_ON_OFF | ONLP_LED_CAPS_ORANGE | + ONLP_LED_CAPS_GREEN | ONLP_LED_CAPS_AUTO, + }, + { + { LED_OID_FAN_TRAY2, "Rear LED 2 (FAN TRAY2 LED)", 0 }, + ONLP_LED_STATUS_PRESENT, + ONLP_LED_CAPS_ON_OFF | ONLP_LED_CAPS_ORANGE | + ONLP_LED_CAPS_GREEN | ONLP_LED_CAPS_AUTO, + }, + { + { LED_OID_FAN_TRAY3, "Rear LED 3 (FAN TRAY3 LED)", 0 }, + ONLP_LED_STATUS_PRESENT, + ONLP_LED_CAPS_ON_OFF | ONLP_LED_CAPS_ORANGE | + ONLP_LED_CAPS_GREEN | ONLP_LED_CAPS_AUTO, + }, + { + { LED_OID_FAN_TRAY4, "Rear LED 4 (FAN TRAY4 LED)", 0 }, + ONLP_LED_STATUS_PRESENT, + ONLP_LED_CAPS_ON_OFF | ONLP_LED_CAPS_ORANGE | + ONLP_LED_CAPS_GREEN | ONLP_LED_CAPS_AUTO, } + }; +extern int sys_fan_info_get(onlp_fan_info_t* info, int id); + /* * This function will be called prior to any other onlp_ledi_* functions. */ @@ -70,13 +97,56 @@ onlp_ledi_init(void) int onlp_ledi_info_get(onlp_oid_t id, onlp_led_info_t* info) { - int led_id; + int led_id, pw_exist, pw_good, rc, psu_mask, fan_id; + onlp_fan_info_t fan_info; + memset(&fan_info, 0, sizeof(onlp_fan_info_t)); led_id = ONLP_OID_ID_GET(id); *info = led_info[led_id]; - info->status |= ONLP_LED_STATUS_ON; - info->mode |= ONLP_LED_MODE_ON; + + if (id == LED_OID_PSU1 || id == LED_OID_PSU2) { + if (id == LED_OID_PSU1) { + psu_mask = PSU1_MUX_MASK; + } else { + psu_mask = PSU2_MUX_MASK; + } + /* check psu status */ + if ((rc = psu_present_get(&pw_exist, I2C_BUS_0, psu_mask)) != ONLP_STATUS_OK) { + return ONLP_STATUS_E_INTERNAL; + } + if ((rc = psu_pwgood_get(&pw_good, I2C_BUS_0, psu_mask)) != ONLP_STATUS_OK) { + return ONLP_STATUS_E_INTERNAL; + } + /* psu not present */ + if (pw_exist != PSU_STATUS_PRESENT) { + info->status &= ~ONLP_LED_STATUS_ON; + info->mode = ONLP_LED_MODE_OFF; + } else if (pw_good != PSU_STATUS_POWER_GOOD) { + info->status |= ONLP_LED_STATUS_ON; + info->mode |= ONLP_LED_MODE_ORANGE; + } else { + info->status |= ONLP_LED_STATUS_ON; + info->mode |= ONLP_LED_MODE_GREEN; + } + } else if (id == LED_OID_FAN) { + info->status |= ONLP_LED_STATUS_ON; + info->mode |= ONLP_LED_MODE_GREEN; + for (fan_id=FAN_ID_FAN1; fan_id<=FAN_ID_FAN8; ++fan_id) { + rc = sys_fan_info_get(&fan_info, fan_id); + if (rc != ONLP_STATUS_OK || fan_info.status & ONLP_FAN_STATUS_FAILED) { + info->mode &= ~ONLP_LED_MODE_GREEN; + info->mode |= ONLP_LED_MODE_ORANGE; + break; + } + } + } else if (id == LED_OID_SYSTEM) { + info->status |= ONLP_LED_STATUS_ON; + info->mode |= ONLP_LED_MODE_GREEN; + } else { + info->status |= ONLP_LED_STATUS_ON; + info->mode |= ONLP_LED_MODE_ON; + } return ONLP_STATUS_OK; } @@ -125,6 +195,12 @@ onlp_ledi_mode_set(onlp_oid_t id, onlp_led_mode_t mode) case LED_PSU2_LED: rc = psu2_led_set(mode); break; + case LED_FAN_TRAY1: + case LED_FAN_TRAY2: + case LED_FAN_TRAY3: + case LED_FAN_TRAY4: + rc = fan_tray_led_set(id, mode); + break; default: return ONLP_STATUS_E_INTERNAL; break; diff --git a/packages/platforms/ingrasys/x86-64/x86-64-ingrasys-s9100/onlp/builds/src/x86_64_ingrasys_s9100/module/src/platform_lib.c b/packages/platforms/ingrasys/x86-64/x86-64-ingrasys-s9100/onlp/builds/src/x86_64_ingrasys_s9100/module/src/platform_lib.c index 172b7f13..43d2b965 100755 --- a/packages/platforms/ingrasys/x86-64/x86-64-ingrasys-s9100/onlp/builds/src/x86_64_ingrasys_s9100/module/src/platform_lib.c +++ b/packages/platforms/ingrasys/x86-64/x86-64-ingrasys-s9100/onlp/builds/src/x86_64_ingrasys_s9100/module/src/platform_lib.c @@ -70,8 +70,11 @@ psu_thermal_get(onlp_thermal_info_t* info, int thermal_id) if (pw_exist != PSU_STATUS_PRESENT) { info->mcelsius = 0; + info->status &= ~ONLP_THERMAL_STATUS_PRESENT; return ONLP_STATUS_OK; - } + } else { + info->status |= ONLP_THERMAL_STATUS_PRESENT; + } if ((rc = psu_pwgood_get(&pw_good, I2C_BUS_0, psu_mask)) != ONLP_STATUS_OK) { return ONLP_STATUS_E_INTERNAL; @@ -126,7 +129,10 @@ psu_fan_info_get(onlp_fan_info_t* info, int id) if (pw_exist != PSU_STATUS_PRESENT) { info->rpm = 0; + info->status &= ~ONLP_FAN_STATUS_PRESENT; return ONLP_STATUS_OK; + } else { + info->status |= ONLP_FAN_STATUS_PRESENT; } if ((rc = psu_pwgood_get(&pw_good, I2C_BUS_0, psu_mask)) != ONLP_STATUS_OK) { @@ -472,6 +478,10 @@ psu1_led_set(onlp_led_mode_t mode) rc = onlp_i2c_modifyb(I2C_BUS_9, LED_REG, LED_OFFSET, LED_PSU1_AND_MASK, LED_PSU1_YMASK, ONLP_I2C_F_FORCE); + } else if(mode == ONLP_LED_MODE_OFF) { + rc = onlp_i2c_modifyb(I2C_BUS_9, LED_REG, LED_OFFSET, + LED_PSU1_AND_MASK, LED_PSU1_OFFMASK, + ONLP_I2C_F_FORCE); } else { return ONLP_STATUS_E_INTERNAL; } @@ -495,6 +505,10 @@ psu2_led_set(onlp_led_mode_t mode) rc = onlp_i2c_modifyb(I2C_BUS_9, LED_REG, LED_OFFSET, LED_PSU2_AND_MASK, LED_PSU2_YMASK, ONLP_I2C_F_FORCE); + } else if(mode == ONLP_LED_MODE_OFF) { + rc = onlp_i2c_modifyb(I2C_BUS_9, LED_REG, LED_OFFSET, + LED_PSU2_AND_MASK, LED_PSU2_OFFMASK, + ONLP_I2C_F_FORCE); } else { return ONLP_STATUS_E_INTERNAL; } @@ -507,6 +521,60 @@ psu2_led_set(onlp_led_mode_t mode) return ONLP_STATUS_OK; } +int +fan_tray_led_set(onlp_oid_t id, onlp_led_mode_t mode) +{ + int rc, temp_id; + int fan_tray_id, offset; +char cmd[256]; +memset(cmd, 0, sizeof(cmd)); + + temp_id = ONLP_OID_ID_GET(id); + switch (temp_id) { + case 5: + fan_tray_id = 1; + offset = 2; + break; + case 6: + fan_tray_id = 2; + offset = 2; + break; + case 7: + fan_tray_id = 3; + offset = 3; + break; + case 8: + fan_tray_id = 4; + offset = 3; + break; + default: + return ONLP_STATUS_E_INTERNAL; + break; + } + if (fan_tray_id == 1 || fan_tray_id == 3) { + if (mode == ONLP_LED_MODE_GREEN) { + rc = onlp_i2c_modifyb(I2C_BUS_9, FAN_REG, offset, 0xFC, + 0x01, ONLP_I2C_F_FORCE); + } else if (mode == ONLP_LED_MODE_ORANGE) { + rc = onlp_i2c_modifyb(I2C_BUS_9, FAN_REG, offset, 0xFC, + 0x02, ONLP_I2C_F_FORCE); + } + } else if (fan_tray_id == 2 || fan_tray_id == 4) { + if (mode == ONLP_LED_MODE_GREEN) { + rc = onlp_i2c_modifyb(I2C_BUS_9, FAN_REG, offset, 0xCF, + 0x10, ONLP_I2C_F_FORCE); + } else if (mode == ONLP_LED_MODE_ORANGE) { + rc = onlp_i2c_modifyb(I2C_BUS_9, FAN_REG, offset, 0xCF, + 0x20, ONLP_I2C_F_FORCE); + } + } + if (rc < 0) { + return ONLP_STATUS_E_INTERNAL; + } + + return ONLP_STATUS_OK; +} + int sysi_platform_info_get(onlp_platform_info_t* pi) { diff --git a/packages/platforms/ingrasys/x86-64/x86-64-ingrasys-s9100/onlp/builds/src/x86_64_ingrasys_s9100/module/src/platform_lib.h b/packages/platforms/ingrasys/x86-64/x86-64-ingrasys-s9100/onlp/builds/src/x86_64_ingrasys_s9100/module/src/platform_lib.h index c06d2de9..e9f44ed6 100755 --- a/packages/platforms/ingrasys/x86-64/x86-64-ingrasys-s9100/onlp/builds/src/x86_64_ingrasys_s9100/module/src/platform_lib.h +++ b/packages/platforms/ingrasys/x86-64/x86-64-ingrasys-s9100/onlp/builds/src/x86_64_ingrasys_s9100/module/src/platform_lib.h @@ -111,9 +111,11 @@ #define LED_PSU1_AND_MASK 0xFC #define LED_PSU1_GMASK 0x01 #define LED_PSU1_YMASK 0x02 +#define LED_PSU1_OFFMASK 0x03 #define LED_PSU2_AND_MASK 0xCF #define LED_PSU2_GMASK 0x10 #define LED_PSU2_YMASK 0x20 +#define LED_PSU2_OFFMASK 0x30 /* SYS */ #define CPLD_REG 0x33 @@ -125,12 +127,23 @@ #define QSFP_PRES_OFFSET1 0x00 #define QSFP_PRES_OFFSET2 0x01 +/* FAN */ +#define FAN_REG 0x20 +#define FAN_1_2_PRESENT_MASK 0x04 +#define FAN_3_4_PRESENT_MASK 0x40 +#define FAN_5_6_PRESENT_MASK 0x04 +#define FAN_7_8_PRESENT_MASK 0x40 + /** led_oid */ typedef enum led_oid_e { LED_OID_SYSTEM = ONLP_LED_ID_CREATE(1), LED_OID_FAN = ONLP_LED_ID_CREATE(2), LED_OID_PSU1 = ONLP_LED_ID_CREATE(3), LED_OID_PSU2 = ONLP_LED_ID_CREATE(4), + LED_OID_FAN_TRAY1 = ONLP_LED_ID_CREATE(5), + LED_OID_FAN_TRAY2 = ONLP_LED_ID_CREATE(6), + LED_OID_FAN_TRAY3 = ONLP_LED_ID_CREATE(7), + LED_OID_FAN_TRAY4 = ONLP_LED_ID_CREATE(8), } led_oid_t; /** led_id */ @@ -139,6 +152,10 @@ typedef enum led_id_e { LED_FAN_LED = 2, LED_PSU1_LED = 3, LED_PSU2_LED = 4, + LED_FAN_TRAY1 = 5, + LED_FAN_TRAY2 = 6, + LED_FAN_TRAY3 = 7, + LED_FAN_TRAY4 = 8, } led_id_t; /** Thermal_oid */ @@ -241,6 +258,8 @@ int fan_led_set(onlp_led_mode_t mode); int system_led_set(onlp_led_mode_t mode); +int fan_tray_led_set(onlp_oid_t id, onlp_led_mode_t mode); + int sysi_platform_info_get(onlp_platform_info_t* pi); int qsfp_present_get(int port, int *pres_val); diff --git a/packages/platforms/ingrasys/x86-64/x86-64-ingrasys-s9100/onlp/builds/src/x86_64_ingrasys_s9100/module/src/psui.c b/packages/platforms/ingrasys/x86-64/x86-64-ingrasys-s9100/onlp/builds/src/x86_64_ingrasys_s9100/module/src/psui.c index 496bc1ea..52f0d92f 100755 --- a/packages/platforms/ingrasys/x86-64/x86-64-ingrasys-s9100/onlp/builds/src/x86_64_ingrasys_s9100/module/src/psui.c +++ b/packages/platforms/ingrasys/x86-64/x86-64-ingrasys-s9100/onlp/builds/src/x86_64_ingrasys_s9100/module/src/psui.c @@ -93,6 +93,8 @@ psu_status_info_get(int id, onlp_psu_info_t *info) if (pw_good != PSU_STATUS_POWER_GOOD) { info->status |= ONLP_PSU_STATUS_UNPLUGGED; return ONLP_STATUS_OK; + } else { + info->status &= ~ONLP_PSU_STATUS_UNPLUGGED; } /* Get power eeprom status */ @@ -147,4 +149,4 @@ onlp_psui_info_get(onlp_oid_t id, onlp_psu_info_t* info) return ONLP_STATUS_OK; -} \ No newline at end of file +} diff --git a/packages/platforms/ingrasys/x86-64/x86-64-ingrasys-s9100/onlp/builds/src/x86_64_ingrasys_s9100/module/src/sysi.c b/packages/platforms/ingrasys/x86-64/x86-64-ingrasys-s9100/onlp/builds/src/x86_64_ingrasys_s9100/module/src/sysi.c index 20c65b24..f748eb9c 100755 --- a/packages/platforms/ingrasys/x86-64/x86-64-ingrasys-s9100/onlp/builds/src/x86_64_ingrasys_s9100/module/src/sysi.c +++ b/packages/platforms/ingrasys/x86-64/x86-64-ingrasys-s9100/onlp/builds/src/x86_64_ingrasys_s9100/module/src/sysi.c @@ -197,13 +197,18 @@ _EXIT : int onlp_sysi_platform_manage_leds(void) { - int psu1_status, psu2_status, rc, i, tmp_fan_status; + int psu1_status, psu2_status, rc, i; + int fan_tray_id, sum, total = 0; static int pre_psu1_status = 0, pre_psu2_status = 0, pre_fan_status = 0; + static int pre_fan_tray_status[4] = {0}; onlp_psu_info_t psu_info; onlp_fan_info_t fan_info; + onlp_led_status_t fan_tray_status[SYS_FAN_NUM]; + memset(&psu_info, 0, sizeof(onlp_psu_info_t)); memset(&fan_info, 0, sizeof(onlp_fan_info_t)); + memset(&fan_tray_status, 0, sizeof(fan_tray_status)); uint32_t fan_arr[] = { FAN_OID_FAN1, FAN_OID_FAN2, FAN_OID_FAN3, @@ -213,6 +218,7 @@ onlp_sysi_platform_manage_leds(void) FAN_OID_FAN7, FAN_OID_FAN8, }; + /* PSU LED CTRL */ if ((rc = onlp_psui_info_get(PSU_OID_PSU1, &psu_info)) != ONLP_STATUS_OK) { goto _EXIT; @@ -220,7 +226,10 @@ onlp_sysi_platform_manage_leds(void) psu1_status = psu_info.status; if (psu1_status != pre_psu1_status) { - if(psu1_status != ONLP_PSU_STATUS_PRESENT) { + if((psu1_status & ONLP_PSU_STATUS_PRESENT) == 0) { + rc = onlp_ledi_mode_set(LED_OID_PSU1, ONLP_LED_MODE_OFF); + } + else if(psu1_status != ONLP_PSU_STATUS_PRESENT) { rc = onlp_ledi_mode_set(LED_OID_PSU1, ONLP_LED_MODE_ORANGE); } else { rc = onlp_ledi_mode_set(LED_OID_PSU1, ONLP_LED_MODE_GREEN); @@ -238,7 +247,10 @@ onlp_sysi_platform_manage_leds(void) psu2_status = psu_info.status; if( psu2_status != pre_psu2_status) { - if(psu2_status != ONLP_PSU_STATUS_PRESENT) { + if((psu2_status & ONLP_PSU_STATUS_PRESENT) == 0) { + rc = onlp_ledi_mode_set(LED_OID_PSU2, ONLP_LED_MODE_OFF); + } + else if(psu2_status != ONLP_PSU_STATUS_PRESENT) { rc = onlp_ledi_mode_set(LED_OID_PSU2, ONLP_LED_MODE_ORANGE); } else { rc = onlp_ledi_mode_set(LED_OID_PSU2, ONLP_LED_MODE_GREEN); @@ -251,29 +263,65 @@ onlp_sysi_platform_manage_leds(void) } /* FAN LED CTRL */ - tmp_fan_status = ONLP_LED_STATUS_PRESENT; + for (i=0; i ONLP_LED_STATUS_FAILED) { + rc = onlp_ledi_mode_set(fan_tray_id, ONLP_LED_MODE_ORANGE); + } else { + rc = onlp_ledi_mode_set(fan_tray_id, ONLP_LED_MODE_GREEN); + } - if(fan_info.status != ONLP_LED_STATUS_PRESENT) { - tmp_fan_status = fan_info.status; + if (rc != ONLP_STATUS_OK) { + goto _EXIT; + } + + pre_fan_tray_status[fan_tray_id - 5] = sum; + } } - } + } - if (tmp_fan_status != pre_fan_status) { - if (tmp_fan_status != ONLP_LED_STATUS_PRESENT) { - rc = onlp_ledi_mode_set(LED_OID_FAN, ONLP_LED_MODE_ORANGE); - } else { + if (total != pre_fan_status) { + if (total == (ONLP_LED_STATUS_PRESENT * 8)) { rc = onlp_ledi_mode_set(LED_OID_FAN, ONLP_LED_MODE_GREEN); + } else { + rc = onlp_ledi_mode_set(LED_OID_FAN, ONLP_LED_MODE_ORANGE); } - + if (rc != ONLP_STATUS_OK) { goto _EXIT; } + + pre_fan_status = total; } - pre_fan_status = fan_info.status; _EXIT : return rc; diff --git a/packages/platforms/ingrasys/x86-64/x86-64-ingrasys-s9100/platform-config/r0/src/python/x86_64_ingrasys_s9100_r0/__init__.py b/packages/platforms/ingrasys/x86-64/x86-64-ingrasys-s9100/platform-config/r0/src/python/x86_64_ingrasys_s9100_r0/__init__.py index cba0b0fe..3a808108 100755 --- a/packages/platforms/ingrasys/x86-64/x86-64-ingrasys-s9100/platform-config/r0/src/python/x86_64_ingrasys_s9100_r0/__init__.py +++ b/packages/platforms/ingrasys/x86-64/x86-64-ingrasys-s9100/platform-config/r0/src/python/x86_64_ingrasys_s9100_r0/__init__.py @@ -365,6 +365,38 @@ class OnlPlatform_x86_64_ingrasys_s9100_r0(OnlPlatformIngrasys): os.system("echo out > /sys/class/gpio/gpio413/direction") os.system("echo out > /sys/class/gpio/gpio414/direction") os.system("echo out > /sys/class/gpio/gpio415/direction") + os.system("echo 1 > /sys/class/gpio/gpio400/active_low") + os.system("echo 1 > /sys/class/gpio/gpio401/active_low") + os.system("echo 1 > /sys/class/gpio/gpio402/active_low") + os.system("echo 1 > /sys/class/gpio/gpio403/active_low") + os.system("echo 1 > /sys/class/gpio/gpio404/active_low") + os.system("echo 1 > /sys/class/gpio/gpio405/active_low") + os.system("echo 1 > /sys/class/gpio/gpio406/active_low") + os.system("echo 1 > /sys/class/gpio/gpio407/active_low") + os.system("echo 1 > /sys/class/gpio/gpio408/active_low") + os.system("echo 1 > /sys/class/gpio/gpio409/active_low") + os.system("echo 1 > /sys/class/gpio/gpio410/active_low") + os.system("echo 1 > /sys/class/gpio/gpio411/active_low") + os.system("echo 1 > /sys/class/gpio/gpio412/active_low") + os.system("echo 1 > /sys/class/gpio/gpio413/active_low") + os.system("echo 1 > /sys/class/gpio/gpio414/active_low") + os.system("echo 1 > /sys/class/gpio/gpio415/active_low") + os.system("echo 0 > /sys/class/gpio/gpio400/value") + os.system("echo 0 > /sys/class/gpio/gpio401/value") + os.system("echo 0 > /sys/class/gpio/gpio402/value") + os.system("echo 0 > /sys/class/gpio/gpio403/value") + os.system("echo 0 > /sys/class/gpio/gpio404/value") + os.system("echo 0 > /sys/class/gpio/gpio405/value") + os.system("echo 0 > /sys/class/gpio/gpio406/value") + os.system("echo 0 > /sys/class/gpio/gpio407/value") + os.system("echo 0 > /sys/class/gpio/gpio408/value") + os.system("echo 0 > /sys/class/gpio/gpio409/value") + os.system("echo 0 > /sys/class/gpio/gpio410/value") + os.system("echo 0 > /sys/class/gpio/gpio411/value") + os.system("echo 0 > /sys/class/gpio/gpio412/value") + os.system("echo 0 > /sys/class/gpio/gpio413/value") + os.system("echo 0 > /sys/class/gpio/gpio414/value") + os.system("echo 0 > /sys/class/gpio/gpio415/value") # initialize RST Port 16-31 self.new_i2c_device('pca9535', 0x23, 7) @@ -400,6 +432,38 @@ class OnlPlatform_x86_64_ingrasys_s9100_r0(OnlPlatformIngrasys): os.system("echo out > /sys/class/gpio/gpio397/direction") os.system("echo out > /sys/class/gpio/gpio398/direction") os.system("echo out > /sys/class/gpio/gpio399/direction") + os.system("echo 1 > /sys/class/gpio/gpio384/active_low") + os.system("echo 1 > /sys/class/gpio/gpio385/active_low") + os.system("echo 1 > /sys/class/gpio/gpio386/active_low") + os.system("echo 1 > /sys/class/gpio/gpio387/active_low") + os.system("echo 1 > /sys/class/gpio/gpio388/active_low") + os.system("echo 1 > /sys/class/gpio/gpio389/active_low") + os.system("echo 1 > /sys/class/gpio/gpio390/active_low") + os.system("echo 1 > /sys/class/gpio/gpio391/active_low") + os.system("echo 1 > /sys/class/gpio/gpio392/active_low") + os.system("echo 1 > /sys/class/gpio/gpio393/active_low") + os.system("echo 1 > /sys/class/gpio/gpio394/active_low") + os.system("echo 1 > /sys/class/gpio/gpio395/active_low") + os.system("echo 1 > /sys/class/gpio/gpio396/active_low") + os.system("echo 1 > /sys/class/gpio/gpio397/active_low") + os.system("echo 1 > /sys/class/gpio/gpio398/active_low") + os.system("echo 1 > /sys/class/gpio/gpio399/active_low") + os.system("echo 0 > /sys/class/gpio/gpio384/value") + os.system("echo 0 > /sys/class/gpio/gpio385/value") + os.system("echo 0 > /sys/class/gpio/gpio386/value") + os.system("echo 0 > /sys/class/gpio/gpio387/value") + os.system("echo 0 > /sys/class/gpio/gpio388/value") + os.system("echo 0 > /sys/class/gpio/gpio389/value") + os.system("echo 0 > /sys/class/gpio/gpio390/value") + os.system("echo 0 > /sys/class/gpio/gpio391/value") + os.system("echo 0 > /sys/class/gpio/gpio392/value") + os.system("echo 0 > /sys/class/gpio/gpio393/value") + os.system("echo 0 > /sys/class/gpio/gpio394/value") + os.system("echo 0 > /sys/class/gpio/gpio395/value") + os.system("echo 0 > /sys/class/gpio/gpio396/value") + os.system("echo 0 > /sys/class/gpio/gpio397/value") + os.system("echo 0 > /sys/class/gpio/gpio398/value") + os.system("echo 0 > /sys/class/gpio/gpio399/value") # initialize MODSEL Port 0-15 self.new_i2c_device('pca9535', 0x24, 7) @@ -491,6 +555,17 @@ class OnlPlatform_x86_64_ingrasys_s9100_r0(OnlPlatformIngrasys): os.system("i2cset -m 0x40 -y -r 9 0x22 2 0xFF") os.system("i2cset -m 0x80 -y -r 9 0x22 2 0x00") + # init CPLD LED_CLR Register (Switch Port LED) + os.system("i2cset -y 0 0x33 0x34 0x10") + + # init Fan I/O Exanpler + os.system("i2cset -y -r 9 0x20 4 0x00") + os.system("i2cset -y -r 9 0x20 5 0x00") + os.system("i2cset -y -r 9 0x20 2 0x00") + os.system("i2cset -y -r 9 0x20 3 0x00") + os.system("i2cset -y -r 9 0x20 6 0xCC") + os.system("i2cset -y -r 9 0x20 7 0xCC") + return True