From cb92590776f014d9546087f57ff32de1b16b6163 Mon Sep 17 00:00:00 2001 From: mwojcik Date: Mon, 3 Jun 2024 11:31:17 +0800 Subject: [PATCH] almazny: pass MOSI for all channels --- mirny.py | 10 +++++++--- 1 file changed, 7 insertions(+), 3 deletions(-) diff --git a/mirny.py b/mirny.py index 6c041de..73991b1 100644 --- a/mirny.py +++ b/mirny.py @@ -135,7 +135,7 @@ def connect(self, bus, adr, mask): ) ] - def connect_ext(self, ext, adr, mask): + def connect_ext(self, ext, adr, mask, sdi_passthrough=False): adr &= mask self._check_intersection(adr, mask) self._slaves.append((ext, adr, mask)) @@ -146,12 +146,16 @@ def connect_ext(self, ext, adr, mask): stb.ce.eq(self.bus.re), # don't glitch with &stb.o ext.sck.eq(self.ext.sck), - ext.sdi.eq(self.ext.sdi & stb.o), ext.cs.eq(stb.o), If(stb.o, self.ext.sdo.eq(ext.sdo), ), ] + # Almazny shares one SDI with 4 devices, it cannot be masked by stb + if sdi_passthrough: + self.comb += ext.sdi.eq(self.ext.sdi) + else: + self.comb += ext.sdi.eq(self.ext.sdi & stb.o), def intersection(a, b): @@ -360,7 +364,7 @@ def __init__(self, platform): ] ext = Record(ext_layout) - self.sr.connect_ext(ext, adr=i + 12, mask=mask) + self.sr.connect_ext(ext, adr=i + 12, mask=mask, sdi_passthrough=True) self.comb += [ mezz[i + 3].oe.eq(1), mezz[i + 3].o.eq(~ext.cs), # Almazny REG_LATCH