Skip to content

Commit

Permalink
Fix get_transceiver_change_event for xcvrd
Browse files Browse the repository at this point in the history
Change-Id: I5c8f8ce02bc6e0424eea91e748479351fdd5a2b7
  • Loading branch information
Zhi Yuan Carl Zhao committed Aug 23, 2018
1 parent 8f65ad9 commit 5f7f39b
Showing 1 changed file with 13 additions and 1 deletion.
14 changes: 13 additions & 1 deletion arista/components/scd.py
Original file line number Diff line number Diff line change
Expand Up @@ -12,6 +12,7 @@
from .common import PciComponent, KernelDriver, PciKernelDriver

SCD_WAIT_TIMEOUT = 5.
SYS_UIO_PATH = '/sys/class/uio'

class ScdSysfsGroup(object):
def __init__(self, objNum, typeStr, driver):
Expand Down Expand Up @@ -295,7 +296,7 @@ def clear(self):
self.reg.clearMask(self.bit)

def getFile(self):
return '/dev/uio-%s-%d-%d' % (self.reg.scd.addr, self.reg.num, self.bit)
return self.reg.scd.getUio(self.reg.num, self.bit)

class ScdInterruptRegister(object):
def __init__(self, scd, addr, num):
Expand Down Expand Up @@ -366,6 +367,7 @@ def __init__(self, addr, **kwargs):
self.resets = []
self.tweaks = []
self.xcvrs = []
self.uioMap = {}

def createPowerCycle(self, reg=0x7000, wr=0xDEAD):
powerCycle = ScdPowerCycle(self, reg=reg, wr=wr)
Expand Down Expand Up @@ -485,3 +487,13 @@ def resetOut(self):
for xcvr in self.xcvrs:
xcvr.setModuleSelect(True)

def uioMapInit(self):
for uio in os.listdir(SYS_UIO_PATH):
with open(os.path.join(SYS_UIO_PATH, uio, 'name')) as uioName:
self.uioMap[uioName.read().strip()] = uio

def getUio(self, reg, bit):
if not self.uioMap:
self.uioMapInit()
return '/dev/%s' % self.uioMap[
'uio-%s-%d-%d' % (getattr(self, 'addr'), reg, bit)]

0 comments on commit 5f7f39b

Please sign in to comment.