@@ -40,7 +40,10 @@ def __init__(self, pads, dummy=15, div=2, with_bitbang=True, endianness="big", d
40
40
"""
41
41
adr_width = 32 - log2_int (dw // 8 )
42
42
self .bus = bus = wishbone .Interface (data_width = dw , adr_width = adr_width )
43
- spi_width = len (pads .dq )
43
+ if hasattr (pads , "dq" ):
44
+ spi_width = len (pads .dq )
45
+ else :
46
+ spi_width = 1
44
47
if with_bitbang :
45
48
self .bitbang = CSRStorage (4 )
46
49
self .miso = CSRStatus ()
@@ -62,8 +65,16 @@ def __init__(self, pads, dummy=15, div=2, with_bitbang=True, endianness="big", d
62
65
63
66
pads .cs_n .reset = 1
64
67
65
- dq = TSTriple (spi_width )
66
- self .specials .dq = dq .get_tristate (pads .dq )
68
+ if spi_width > 1 :
69
+ dq = TSTriple (spi_width )
70
+ self .specials .dq = dq .get_tristate (pads .dq )
71
+ else :
72
+ class TripleMock :
73
+ def __init__ (self ):
74
+ self .i = pads .miso
75
+ self .o = pads .mosi
76
+ self .oe = Signal ()
77
+ dq = TripleMock ()
67
78
68
79
sr = Signal (max (cmd_width , addr_width , dw ))
69
80
if endianness == "big" :
@@ -88,7 +99,8 @@ def __init__(self, pads, dummy=15, div=2, with_bitbang=True, endianness="big", d
88
99
dq .oe .eq (1 )
89
100
),
90
101
If (self .bitbang .storage [1 ],
91
- self .miso .status .eq (dq .i [1 ])
102
+ self .miso .status .eq (dq .i ) if spi_width == 1 \
103
+ else self .miso .status .eq (dq .i [1 ])
92
104
)
93
105
]
94
106
if spi_width > 1 :
0 commit comments