From 2d4c8a2ae6e8acb005685a0e8a6fa468aef8cb3d Mon Sep 17 00:00:00 2001 From: wadelnn Date: Fri, 9 Mar 2018 03:49:17 +0800 Subject: [PATCH] [Platform] Update switch config files for Ingrasys platforms. (#1474) * Add psuutil for S8900-54XC and S8900-64XC. * Update syseeprom to CPU EEPROM for S9130-32X, S9200-64X and S9230-64X. * Update sensors.conf for S9200-64X and S9230-64X. * Update submodule for platform/broadcom/sonic-platform-modules-ingrasys Signed-off-by: Wade He --- .../plugins/psuutil.py | 92 +++++++++++++++++++ .../plugins/psuutil.py | 92 +++++++++++++++++++ .../plugins/eeprom.py | 2 +- .../plugins/eeprom.py | 2 +- .../x86_64-ingrasys_s9200_64x-r0/sensors.conf | 2 + .../plugins/eeprom.py | 2 +- .../x86_64-ingrasys_s9230_64x-r0/sensors.conf | 11 +-- .../broadcom/sonic-platform-modules-ingrasys | 2 +- 8 files changed, 192 insertions(+), 13 deletions(-) create mode 100644 device/ingrasys/x86_64-ingrasys_s8900_54xc-r0/plugins/psuutil.py create mode 100644 device/ingrasys/x86_64-ingrasys_s8900_64xc-r0/plugins/psuutil.py diff --git a/device/ingrasys/x86_64-ingrasys_s8900_54xc-r0/plugins/psuutil.py b/device/ingrasys/x86_64-ingrasys_s8900_54xc-r0/plugins/psuutil.py new file mode 100644 index 0000000000..4f226c69ff --- /dev/null +++ b/device/ingrasys/x86_64-ingrasys_s8900_54xc-r0/plugins/psuutil.py @@ -0,0 +1,92 @@ +# +# psuutil.py +# Platform-specific PSU status interface for SONiC +# + + +import os.path + +try: + from sonic_psu.psu_base import PsuBase +except ImportError as e: + raise ImportError(str(e) + "- required module not found") + + +class PsuUtil(PsuBase): + """Platform-specific PSUutil class""" + + PSU_CPLD_DIR = "/sys/bus/i2c/devices/0-0033" + + def __init__(self): + PsuBase.__init__(self) + + + # Get sysfs attribute + def get_attr_value(self, attr_path): + + retval = 'ERR' + if (not os.path.isfile(attr_path)): + return retval + + try: + with open(attr_path, 'r') as fd: + retval = fd.read() + except Exception as error: + logging.error("Unable to open ", attr_path, " file !") + + retval = retval.rstrip('\r\n') + return retval + + def get_num_psus(self): + """ + Retrieves the number of PSUs available on the device + :return: An integer, the number of PSUs available on the device + """ + MAX_PSUS = 2 + return MAX_PSUS + + def get_psu_status(self, index): + """ + Retrieves the oprational status of power supply unit (PSU) defined + by index + :param index: An integer, index of the PSU of which to query status + :return: Boolean, True if PSU is operating properly, False if PSU is\ + faulty + """ + status = 0 + mask = [ 0x08, 0x10 ] + attr_file = 'cpld_pw_good' + attr_path = self.PSU_CPLD_DIR +'/'+ attr_file + + attr_value = self.get_attr_value(attr_path) + + if (attr_value != 'ERR'): + attr_value = int(attr_value, 16) + # Check for PSU status + if (attr_value & mask[index-1]): + status = 1 + + return status + + def get_psu_presence(self, index): + """ + Retrieves the presence status of power supply unit (PSU) defined + by index + :param index: An integer, index of the PSU of which to query status + :return: Boolean, True if PSU is plugged, False if not + """ + status = 0 + mask = [ 0x01, 0x02 ] + attr_file ='cpld_pw_abs' + attr_path = self.PSU_CPLD_DIR +'/'+ attr_file + + attr_value = self.get_attr_value(attr_path) + + if (attr_value != 'ERR'): + attr_value = int(attr_value, 16) + # Check for PSU presence + if (~attr_value & mask[index-1]): + status = 1 + + return status + diff --git a/device/ingrasys/x86_64-ingrasys_s8900_64xc-r0/plugins/psuutil.py b/device/ingrasys/x86_64-ingrasys_s8900_64xc-r0/plugins/psuutil.py new file mode 100644 index 0000000000..3af5423dae --- /dev/null +++ b/device/ingrasys/x86_64-ingrasys_s8900_64xc-r0/plugins/psuutil.py @@ -0,0 +1,92 @@ +# +# psuutil.py +# Platform-specific PSU status interface for SONiC +# + + +import os.path + +try: + from sonic_psu.psu_base import PsuBase +except ImportError as e: + raise ImportError(str(e) + "- required module not found") + + +class PsuUtil(PsuBase): + """Platform-specific PSUutil class""" + + PSU_CPLD_DIR = "/sys/bus/i2c/devices/0-0033" + + def __init__(self): + PsuBase.__init__(self) + + + # Get sysfs attribute + def get_attr_value(self, attr_path): + + retval = 'ERR' + if (not os.path.isfile(attr_path)): + return retval + + try: + with open(attr_path, 'r') as fd: + retval = fd.read() + except Exception as error: + logging.error("Unable to open ", attr_path, " file !") + + retval = retval.rstrip('\r\n') + return retval + + def get_num_psus(self): + """ + Retrieves the number of PSUs available on the device + :return: An integer, the number of PSUs available on the device + """ + MAX_PSUS = 2 + return MAX_PSUS + + def get_psu_status(self, index): + """ + Retrieves the oprational status of power supply unit (PSU) defined + by index + :param index: An integer, index of the PSU of which to query status + :return: Boolean, True if PSU is operating properly, False if PSU is\ + faulty + """ + status = 0 + mask = [ 0x04, 0x08 ] + attr_file = 'cpld_pw_good' + attr_path = self.PSU_CPLD_DIR +'/'+ attr_file + + attr_value = self.get_attr_value(attr_path) + + if (attr_value != 'ERR'): + attr_value = int(attr_value, 16) + # Check for PSU status + if (attr_value & mask[index-1]): + status = 1 + + return status + + def get_psu_presence(self, index): + """ + Retrieves the presence status of power supply unit (PSU) defined + by index + :param index: An integer, index of the PSU of which to query status + :return: Boolean, True if PSU is plugged, False if not + """ + status = 0 + mask = [ 0x01, 0x02 ] + attr_file ='cpld_pw_abs' + attr_path = self.PSU_CPLD_DIR +'/'+ attr_file + + attr_value = self.get_attr_value(attr_path) + + if (attr_value != 'ERR'): + attr_value = int(attr_value, 16) + # Check for PSU presence + if (~attr_value & mask[index-1]): + status = 1 + + return status + diff --git a/device/ingrasys/x86_64-ingrasys_s9130_32x-r0/plugins/eeprom.py b/device/ingrasys/x86_64-ingrasys_s9130_32x-r0/plugins/eeprom.py index 0f47704ed2..71ce941f1a 100644 --- a/device/ingrasys/x86_64-ingrasys_s9130_32x-r0/plugins/eeprom.py +++ b/device/ingrasys/x86_64-ingrasys_s9130_32x-r0/plugins/eeprom.py @@ -18,5 +18,5 @@ except ImportError, e: class board(eeprom_tlvinfo.TlvInfoDecoder): def __init__(self, name, path, cpld_root, ro): - self.eeprom_path = "/sys/class/i2c-adapter/i2c-0/0-0055/eeprom" + self.eeprom_path = "/sys/class/i2c-adapter/i2c-0/0-0051/eeprom" super(board, self).__init__(self.eeprom_path, 0, '', True) diff --git a/device/ingrasys/x86_64-ingrasys_s9200_64x-r0/plugins/eeprom.py b/device/ingrasys/x86_64-ingrasys_s9200_64x-r0/plugins/eeprom.py index 3d01608ef7..64ddb99554 100644 --- a/device/ingrasys/x86_64-ingrasys_s9200_64x-r0/plugins/eeprom.py +++ b/device/ingrasys/x86_64-ingrasys_s9200_64x-r0/plugins/eeprom.py @@ -19,6 +19,6 @@ class board(eeprom_tlvinfo.TlvInfoDecoder): def __init__(self, name, path, cpld_root, ro): i2c_bus = "0" - i2c_addr = "0055" + i2c_addr = "0051" self.eeprom_path = "/sys/class/i2c-adapter/i2c-" + i2c_bus + "/" + i2c_bus + "-" + i2c_addr + "/eeprom" super(board, self).__init__(self.eeprom_path, 0, '', True) diff --git a/device/ingrasys/x86_64-ingrasys_s9200_64x-r0/sensors.conf b/device/ingrasys/x86_64-ingrasys_s9200_64x-r0/sensors.conf index 065c1ebddf..361a8b7326 100644 --- a/device/ingrasys/x86_64-ingrasys_s9200_64x-r0/sensors.conf +++ b/device/ingrasys/x86_64-ingrasys_s9200_64x-r0/sensors.conf @@ -48,6 +48,8 @@ chip "w83795adg-*" ignore temp2 ignore temp3 ignore temp4 + ignore temp5 + ignore temp6 ignore intrusion0 chip "tmp75-i2c-*-4A" diff --git a/device/ingrasys/x86_64-ingrasys_s9230_64x-r0/plugins/eeprom.py b/device/ingrasys/x86_64-ingrasys_s9230_64x-r0/plugins/eeprom.py index ab398102c9..770b0cf43b 100644 --- a/device/ingrasys/x86_64-ingrasys_s9230_64x-r0/plugins/eeprom.py +++ b/device/ingrasys/x86_64-ingrasys_s9230_64x-r0/plugins/eeprom.py @@ -18,5 +18,5 @@ except ImportError, e: class board(eeprom_tlvinfo.TlvInfoDecoder): def __init__(self, name, path, cpld_root, ro): - self.eeprom_path = "/sys/class/i2c-adapter/i2c-0/0-0055/eeprom" + self.eeprom_path = "/sys/class/i2c-adapter/i2c-0/0-0051/eeprom" super(board, self).__init__(self.eeprom_path, 0, '', True) diff --git a/device/ingrasys/x86_64-ingrasys_s9230_64x-r0/sensors.conf b/device/ingrasys/x86_64-ingrasys_s9230_64x-r0/sensors.conf index b5daa9af42..84abfe8806 100644 --- a/device/ingrasys/x86_64-ingrasys_s9230_64x-r0/sensors.conf +++ b/device/ingrasys/x86_64-ingrasys_s9230_64x-r0/sensors.conf @@ -36,16 +36,12 @@ chip "w83795adg-*" ignore in18 ignore in19 label fan1 "FANTRAY 1" - #label fan2 "FANTRAY 1-B" ignore fan2 label fan3 "FANTRAY 2" - #label fan4 "FANTRAY 2-B" ignore fan4 label fan5 "FANTRAY 3" - #label fan6 "FANTRAY 3-B" ignore fan6 label fan7 "FANTRAY 4" - #label fan8 "FANTRAY 4-B" ignore fan8 ignore temp1 ignore temp2 @@ -55,15 +51,14 @@ chip "w83795adg-*" ignore temp6 ignore intrusion0 -# TODO: need to confirm the critial temp value with HW after board ready chip "tmp75-i2c-*-4A" - label temp1 "BMC board Temp" + label temp1 "BMC Board Temp" set temp1_max 50 set temp1_max_hyst 45 bus "i2c-0" "SMBus I801 adapter at f000" chip "tmp75-i2c-*-4F" - label temp1 "x86 CPU board Temp" + label temp1 "x86 CPU Board Temp" set temp1_max 50 set temp1_max_hyst 45 @@ -86,5 +81,3 @@ chip "lm75-i2c-7-4E" label temp1 "Front MAC Temp" set temp1_max 50 set temp1_max_hyst 45 - - diff --git a/platform/broadcom/sonic-platform-modules-ingrasys b/platform/broadcom/sonic-platform-modules-ingrasys index f2dc0aa6b9..f6e0fa9860 160000 --- a/platform/broadcom/sonic-platform-modules-ingrasys +++ b/platform/broadcom/sonic-platform-modules-ingrasys @@ -1 +1 @@ -Subproject commit f2dc0aa6b96ab293b4ae6ebf3a942851dd9324b7 +Subproject commit f6e0fa9860c6d1bd9274b091147d4fc06a0597c3