[device]: Fix celestica's seastone sfputil for lpmode and transceiver presence (#1358)

This commit is contained in:
nikos-li 2018-02-01 08:49:24 -08:00 committed by lguohan
parent 1ae86ca539
commit 23bbf80999

View File

@ -45,10 +45,54 @@ class SfpUtil(SfpUtilBase):
SfpUtilBase.__init__(self) SfpUtilBase.__init__(self)
def get_presence(self, port_num): def get_presence(self, port_num):
raise NotImplementedError # Check for invalid port_num
if port_num < self.port_start or port_num > self.port_end:
return False
try:
reg_file = open("/sys/devices/platform/dx010_cpld/qsfp_modprs", "r")
except IOError as e:
print "Error: unable to open file: %s" % str(e)
return False
content = reg_file.readline().rstrip()
# content is a string containing the hex representation of the register
reg_value = int(content, 16)
# Mask off the bit corresponding to our port
mask = (1 << port_num)
# ModPrsL is active low
if reg_value & mask == 0:
return True
return False
def get_low_power_mode(self, port_num): def get_low_power_mode(self, port_num):
raise NotImplementedError # Check for invalid port_num
if port_num < self.port_start or port_num > self.port_end:
return False
try:
reg_file = open("/sys/devices/platform/dx010_cpld/qsfp_lpmode", "r")
except IOError as e:
print "Error: unable to open file: %s" % str(e)
return False
content = reg_file.readline().rstrip()
# content is a string containing the hex representation of the register
reg_value = int(content, 16)
# Mask off the bit corresponding to our port
mask = (1 << port_num)
# LPMode is active high
if reg_value & mask == 0:
return False
return True
def set_low_power_mode(self, port_num, lpmode): def set_low_power_mode(self, port_num, lpmode):
raise NotImplementedError raise NotImplementedError