Skip to content

Commit 3bd95ce

Browse files
committedAug 31, 2017
spi: fix handling of half-duplex+multi-bus combination
1 parent 166a437 commit 3bd95ce

File tree

1 file changed

+5
-5
lines changed

1 file changed

+5
-5
lines changed
 

Diff for: ‎misoc/cores/spi.py

+5-5
Original file line numberDiff line numberDiff line change
@@ -315,6 +315,8 @@ def __init__(self, pads, data_width=32, clock_width=8, bits_width=6):
315315
]
316316
offset += len(pads.cs_n)
317317

318+
miso_r = 0
319+
mosi_t_i_r = 0
318320
for pads in pads_list:
319321
clk_t = TSTriple()
320322
self.specials += clk_t.get_tristate(pads.clk)
@@ -330,9 +332,7 @@ def __init__(self, pads, data_width=32, clock_width=8, bits_width=6):
330332
(spi.oe | ~self._half_duplex.storage)),
331333
mosi_t.o.eq(spi.reg.o),
332334
]
335+
miso_r |= getattr(pads, "miso", 0)
336+
mosi_t_i_r |= mosi_t.i
333337

334-
if all(hasattr(pads, "miso") for pads in pads_list):
335-
miso = reduce(or_, [pads.miso for pads in pads_list])
336-
else:
337-
miso = mosi_t.i
338-
self.comb += spi.reg.i.eq(Mux(self._half_duplex.storage, mosi_t.i, miso))
338+
self.comb += spi.reg.i.eq(Mux(self._half_duplex.storage, mosi_t_i_r, miso_r))

0 commit comments

Comments
 (0)
Please sign in to comment.