-
Notifications
You must be signed in to change notification settings - Fork 1.4k
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
[device/dx010] configuration port index start from 1 #1927
Changes from 1 commit
5bf5985
f77edc7
8f165e5
6c4e282
79838d5
5db2123
File filter
Filter by extension
Conversations
Jump to
Diff view
Diff view
There are no files selected for viewing
Original file line number | Diff line number | Diff line change |
---|---|---|
|
@@ -41,9 +41,9 @@ def __init__(self): | |
|
||
for x in range(self.PORT_START, self.PORT_END + 1): | ||
if self.port_start == 1: | ||
self.port_to_eeprom_mapping[x] = eeprom_path.format( (x-1) + 26 ) | ||
self.port_to_eeprom_mapping[x] = eeprom_path.format((x - 1) + 26) | ||
else: | ||
self.port_to_eeprom_mapping[x] = eeprom_path.format( x + 26 ) | ||
self.port_to_eeprom_mapping[x] = eeprom_path.format(x + 26) | ||
SfpUtilBase.__init__(self) | ||
|
||
def get_presence(self, port_num): | ||
|
@@ -52,7 +52,8 @@ def get_presence(self, port_num): | |
return False | ||
|
||
try: | ||
reg_file = open("/sys/devices/platform/dx010_cpld/qsfp_modprs", "r") | ||
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 | ||
|
@@ -62,12 +63,12 @@ def get_presence(self, port_num): | |
# content is a string containing the hex representation of the register | ||
reg_value = int(content, 16) | ||
|
||
# Determind if port_num start from 1 or 0 | ||
# Determind if port_num start from 1 or 0 | ||
if self.port_start == 1: | ||
bit_index = port_num - 1 | ||
else: | ||
bit_index = port_num | ||
|
||
# Mask off the bit corresponding to our port | ||
mask = (1 << bit_index) | ||
|
||
|
@@ -83,7 +84,8 @@ def get_low_power_mode(self, port_num): | |
return False | ||
|
||
try: | ||
reg_file = open("/sys/devices/platform/dx010_cpld/qsfp_lpmode", "r") | ||
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 | ||
|
@@ -100,7 +102,7 @@ def get_low_power_mode(self, port_num): | |
bit_index = port_num | ||
|
||
# Mask off the bit corresponding to our port | ||
mask = (1 << port_num) | ||
mask = (1 << bit_index) | ||
|
||
# LPMode is active high | ||
if reg_value & mask == 0: | ||
|
@@ -109,7 +111,95 @@ def get_low_power_mode(self, port_num): | |
return True | ||
|
||
def set_low_power_mode(self, port_num, lpmode): | ||
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+") | ||
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. Please merge above 2 lines into one. There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. Fixed in 5db2123 |
||
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) | ||
|
||
# Determind if port_num start from 1 or 0 | ||
if self.port_start == 1: | ||
bit_index = port_num - 1 | ||
else: | ||
bit_index = port_num | ||
|
||
# Mask off the bit corresponding to our port | ||
mask = (1 << bit_index) | ||
|
||
# LPMode is active high; set or clear the bit accordingly | ||
if lpmode is True: | ||
reg_value = reg_value | mask | ||
else: | ||
reg_value = reg_value & ~mask | ||
|
||
# Convert our register value back to a hex string and write back | ||
content = hex(reg_value).strip('L') | ||
|
||
reg_file.seek(0) | ||
reg_file.write(content) | ||
reg_file.close() | ||
|
||
return True | ||
|
||
def reset(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_reset", "r+") | ||
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. Please merge above 2 lines into one. There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. Fixed in 5db2123 |
||
except IOError as e: | ||
print "Error: unable to open file: %s" % str(e) | ||
return False | ||
|
||
content = reg_file.readline().rstrip() | ||
|
||
# File content is a string containing the hex representation of the | ||
# register | ||
reg_value = int(content, 16) | ||
|
||
# Determind if port_num start from 1 or 0 | ||
if self.port_start == 1: | ||
bit_index = port_num - 1 | ||
else: | ||
bit_index = port_num | ||
|
||
# Mask off the bit corresponding to our port | ||
mask = (1 << bit_index) | ||
|
||
# ResetL is active low | ||
reg_value = reg_value & ~mask | ||
|
||
# Convert our register value back to a hex string and write back | ||
reg_file.seek(0) | ||
reg_file.write(hex(reg_value).rstrip('L')) | ||
reg_file.close() | ||
|
||
# Sleep 1 second to allow it to settle | ||
time.sleep(1) | ||
|
||
# Flip the bit back high and write back to the register to take port | ||
# out of reset | ||
try: | ||
reg_file = open("/sys/devices/platform/dx010_cpld/qsfp_reset", "w") | ||
except IOError as e: | ||
print "Error: unable to open file: %s" % str(e) | ||
return False | ||
|
||
reg_value = reg_value | mask | ||
reg_file.seek(0) | ||
reg_file.write(hex(reg_value).rstrip('L')) | ||
reg_file.close() | ||
|
||
return True |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Can you remove above link break?
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Fixed in 5db2123