Skip to content

Commit e8bb38f

Browse files
rdon-keyrdon
andauthored
rp2: allow SPI transmit-only without SDI (#5437)
* rp2: allow SPI transmit-only without SDI * ci: rerun --------- Co-authored-by: rdon <you@example.com>
1 parent 1b9bb14 commit e8bb38f

4 files changed

Lines changed: 9 additions & 7 deletions

File tree

src/machine/machine_rp2_2040.go

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -130,11 +130,11 @@ func (spi *SPI) validPins(config SPIConfig) error {
130130
var okSDI, okSDO, okSCK bool
131131
switch spi.Bus {
132132
case rp.SPI0:
133-
okSDI = config.SDI == 0 || config.SDI == 4 || config.SDI == 16 || config.SDI == 20
133+
okSDI = config.SDI == NoPin || config.SDI == 0 || config.SDI == 4 || config.SDI == 16 || config.SDI == 20
134134
okSDO = config.SDO == 3 || config.SDO == 7 || config.SDO == 19 || config.SDO == 23
135135
okSCK = config.SCK == 2 || config.SCK == 6 || config.SCK == 18 || config.SCK == 22
136136
case rp.SPI1:
137-
okSDI = config.SDI == 8 || config.SDI == 12 || config.SDI == 24 || config.SDI == 28
137+
okSDI = config.SDI == NoPin || config.SDI == 8 || config.SDI == 12 || config.SDI == 24 || config.SDI == 28
138138
okSDO = config.SDO == 11 || config.SDO == 15 || config.SDO == 27
139139
okSCK = config.SCK == 10 || config.SCK == 14 || config.SCK == 26
140140
}

src/machine/machine_rp2_2350a.go

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -21,11 +21,11 @@ func (spi *SPI) validPins(config SPIConfig) error {
2121
var okSDI, okSDO, okSCK bool
2222
switch spi.Bus {
2323
case rp.SPI0:
24-
okSDI = config.SDI == 0 || config.SDI == 4 || config.SDI == 16 || config.SDI == 20
24+
okSDI = config.SDI == NoPin || config.SDI == 0 || config.SDI == 4 || config.SDI == 16 || config.SDI == 20
2525
okSDO = config.SDO == 3 || config.SDO == 7 || config.SDO == 19 || config.SDO == 23
2626
okSCK = config.SCK == 2 || config.SCK == 6 || config.SCK == 18 || config.SCK == 22
2727
case rp.SPI1:
28-
okSDI = config.SDI == 8 || config.SDI == 12 || config.SDI == 24 || config.SDI == 28
28+
okSDI = config.SDI == NoPin || config.SDI == 8 || config.SDI == 12 || config.SDI == 24 || config.SDI == 28
2929
okSDO = config.SDO == 11 || config.SDO == 15 || config.SDO == 27
3030
okSCK = config.SCK == 10 || config.SCK == 14 || config.SCK == 26
3131
}

src/machine/machine_rp2_2350b.go

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -55,11 +55,11 @@ func (spi *SPI) validPins(config SPIConfig) error {
5555
var okSDI, okSDO, okSCK bool
5656
switch spi.Bus {
5757
case rp.SPI0:
58-
okSDI = config.SDI == 0 || config.SDI == 4 || config.SDI == 16 || config.SDI == 20 || config.SDI == 32 || config.SDI == 36
58+
okSDI = config.SDI == NoPin || config.SDI == 0 || config.SDI == 4 || config.SDI == 16 || config.SDI == 20 || config.SDI == 32 || config.SDI == 36
5959
okSDO = config.SDO == 3 || config.SDO == 7 || config.SDO == 19 || config.SDO == 23 || config.SDO == 35 || config.SDO == 39
6060
okSCK = config.SCK == 2 || config.SCK == 6 || config.SCK == 18 || config.SCK == 22 || config.SCK == 34 || config.SCK == 38
6161
case rp.SPI1:
62-
okSDI = config.SDI == 8 || config.SDI == 12 || config.SDI == 24 || config.SDI == 28 || config.SDI == 40 || config.SDI == 44
62+
okSDI = config.SDI == NoPin || config.SDI == 8 || config.SDI == 12 || config.SDI == 24 || config.SDI == 28 || config.SDI == 40 || config.SDI == 44
6363
okSDO = config.SDO == 11 || config.SDO == 15 || config.SDO == 27 || config.SDO == 31 || config.SDO == 43 || config.SDO == 47
6464
okSCK = config.SCK == 10 || config.SCK == 14 || config.SCK == 26 || config.SCK == 30 || config.SCK == 42 || config.SCK == 46
6565
}

src/machine/machine_rp2_spi.go

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -174,7 +174,9 @@ func (spi *SPI) Configure(config SPIConfig) error {
174174
// SPI pin configuration
175175
config.SCK.setFunc(fnSPI)
176176
config.SDO.setFunc(fnSPI)
177-
config.SDI.setFunc(fnSPI)
177+
if config.SDI != NoPin {
178+
config.SDI.setFunc(fnSPI)
179+
}
178180

179181
return spi.initSPI(config)
180182
}

0 commit comments

Comments
 (0)