From bdc49a5b3626810487c451b822d883333a1f5dad Mon Sep 17 00:00:00 2001 From: roylee123 Date: Thu, 30 Nov 2017 13:32:47 +0800 Subject: [PATCH] [platform] Accton AS7712-32X: Revise kernel driver to duplicate nodes for support of lm-sensors, at fan and PSU. Update sfputil.py to to fit new SfpUtil prototype. Signed-off-by: roylee123 --- .../plugins/sfputil.py | 70 ++++++++++++++++--- .../broadcom/sonic-platform-modules-accton | 2 +- 2 files changed, 60 insertions(+), 12 deletions(-) diff --git a/device/accton/x86_64-accton_as7712_32x-r0/plugins/sfputil.py b/device/accton/x86_64-accton_as7712_32x-r0/plugins/sfputil.py index 6dc35d72bb21..c13eecfd1759 100644 --- a/device/accton/x86_64-accton_as7712_32x-r0/plugins/sfputil.py +++ b/device/accton/x86_64-accton_as7712_32x-r0/plugins/sfputil.py @@ -1,19 +1,19 @@ #!/usr/bin/env python try: - from sonic_sfp.sfputilbase import sfputilbase + from sonic_sfp.sfputilbase import SfpUtilBase except ImportError, e: raise ImportError (str(e) + "- required module not found") -class sfputil(sfputilbase): - """Platform specific sfputil class""" +class SfpUtil(SfpUtilBase): + """Platform specific SfpUtill class""" - port_start = 0 - port_end = 31 + _port_start = 0 + _port_end = 31 ports_in_block = 32 - port_to_eeprom_mapping = {} + _port_to_eeprom_mapping = {} port_to_i2c_mapping = { 9 : 18, 10 : 19, @@ -51,10 +51,58 @@ class sfputil(sfputilbase): _qsfp_ports = range(0, ports_in_block + 1) - def __init__(self, port_num): - # Override port_to_eeprom_mapping for class initialization + def __init__(self): eeprom_path = '/sys/bus/i2c/devices/{0}-0050/sfp_eeprom' - for x in range(self.port_start, self.port_end + 1): + for x in range(0, self._port_end + 1): port_eeprom_path = eeprom_path.format(self.port_to_i2c_mapping[x+1]) - self.port_to_eeprom_mapping[x] = port_eeprom_path - sfputilbase.__init__(self, port_num) + self._port_to_eeprom_mapping[x] = port_eeprom_path + SfpUtilBase.__init__(self) + + def reset(self, port_num): + return True + def set_low_power_mode(self, port_nuM, lpmode): + return True + def get_low_power_mode(self, port_num): + return True + +# def get_presence(self, port_num): +# return True + + def get_presence(self, port_num): + # Check for invalid port_num + if port_num < self._port_start or port_num > self._port_end: + return False + + path = "/sys/bus/i2c/devices/{0}-0050/sfp_is_present" + port_ps = path.format(self.port_to_i2c_mapping[port_num+1]) + + + try: + reg_file = open(port_ps) + except IOError as e: + print "Error: unable to open file: %s" % str(e) + return False + + reg_value = reg_file.readline().rstrip() + if reg_value == '1': + return True + + return False + + @property + def port_start(self): + return self._port_start + + @property + def port_end(self): + return self._port_end + + @property + def qsfp_ports(self): + return range(0, self.ports_in_block + 1) + + @property + def port_to_eeprom_mapping(self): + return self._port_to_eeprom_mapping + + diff --git a/platform/broadcom/sonic-platform-modules-accton b/platform/broadcom/sonic-platform-modules-accton index 3fbde584ba15..edfb5b2c1285 160000 --- a/platform/broadcom/sonic-platform-modules-accton +++ b/platform/broadcom/sonic-platform-modules-accton @@ -1 +1 @@ -Subproject commit 3fbde584ba15f0178dc22cb7e56f2bb8481692d4 +Subproject commit edfb5b2c1285cbfd30d8a662ab738aee53a80439