2from __future__
import print_function
11from .factory
import ShellFactory, ShellContext
12from .master
import MasterShell
13from click
import echo, style, secho
14from timing.core import SI534xSlave, I2CExpanderSlave, DACSlave
18from timing.common.definitions import kDesignOverlord, kDesignMaster, kDesignOuroboros, kDesignOuroborosSim, kDesignEndpoint, kDesignFanout
21from os.path
import join, expandvars, basename
31 lBoardType = self.info.boardType
33 if lBoardType != kBoardPC059:
34 raise RuntimeError(
'Mux is only available on PC059 boards')
37 for mux
in range(0,8):
38 secho(
'Scanning slot {}'.format(mux), fg=
'cyan')
40 lDevice.getNode(
'io.csr.ctrl.mux').write(mux)
46 lState = lGlobal.getNode(
'csr.stat.ep_stat').read()
47 lFDel = lGlobal.getNode(
'csr.stat.ep_fdel').read()
48 lEdge = lGlobal.getNode(
'csr.stat.ep_edge').read()
49 lGlobal.getClient().dispatch()
51 secho(
'Endpoint locked: state={}, fdel={}, edge={}'.format(hex(lState), hex(lFDel), hex(lEdge)), fg=
'blue')
53 except RuntimeError
as e:
54 secho(
'Slot {}: no lock - {}'.format(mux,e), fg=
'yellow')
58 secho(
'Locked slots {}'.format(
','.join( ( str(l)
for l
in lLocked))), fg=
'green')
60 secho(
'No slots locked', fg=
'red')
63ShellFactory.registerBoard(kDesignFanout, FanoutShell)
enableEptAndWaitForReady(self, aTimeout=0.5)