Skip to content

Commit bb72ab5

Browse files
committed
kasli_i2c: implement destination-aware EEPROM access for DRTIO
Signed-off-by: Florian Agbuya <[email protected]>
1 parent 8bd03f5 commit bb72ab5

File tree

1 file changed

+14
-11
lines changed

1 file changed

+14
-11
lines changed

artiq/coredevice/kasli_i2c.py

+14-11
Original file line numberDiff line numberDiff line change
@@ -25,29 +25,32 @@
2525

2626

2727
class KasliEEPROM:
28-
def __init__(self, dmgr, port, address=0xa0, busno=0,
28+
def __init__(self, dmgr, port, address=0xa0, busno=0, destination=0,
2929
core_device="core", sw0_device="i2c_switch0", sw1_device="i2c_switch1"):
3030
self.core = dmgr.get(core_device)
3131
self.sw0 = dmgr.get(sw0_device)
3232
self.sw1 = dmgr.get(sw1_device)
33-
self.busno = busno
33+
self.busno = (destination << 16) | (busno & 0xFF)
3434
self.port = port_mapping[port]
3535
self.address = address # i2c 8 bit
3636

3737
@kernel
3838
def select(self):
39-
mask = 1 << self.port
40-
if self.port < 8:
41-
self.sw0.set(self.port)
42-
self.sw1.unset()
43-
else:
44-
self.sw0.unset()
45-
self.sw1.set(self.port - 8)
39+
# Skip master-side switch operations for satellite EEPROMs
40+
if (self.busno >> 16) == 0:
41+
mask = 1 << self.port
42+
if self.port < 8:
43+
self.sw0.set(self.port)
44+
self.sw1.unset()
45+
else:
46+
self.sw0.unset()
47+
self.sw1.set(self.port - 8)
4648

4749
@kernel
4850
def deselect(self):
49-
self.sw0.unset()
50-
self.sw1.unset()
51+
if (self.busno >> 16) == 0:
52+
self.sw0.unset()
53+
self.sw1.unset()
5154

5255
@kernel
5356
def write_i32(self, addr, value):

0 commit comments

Comments
 (0)