cores/spi_mmap: fix data if bus width > length
Details: * 32bit bus write to 8 and 16bit MSB first slot resulted in shifted data on mosi. * 32bit read from 8 and 16bit LSB first slot resulted with shifted data in fifo. Fixes 2 tests - all current tests now pass.
This commit is contained in:
parent
422b02cc16
commit
5d1fa7b6ca
|
@ -591,7 +591,7 @@ class SPIEngine(LiteXModule):
|
||||||
# MSB First.
|
# MSB First.
|
||||||
If(spi_bitorder == SPI_SLOT_BITORDER_MSB_FIRST,
|
If(spi_bitorder == SPI_SLOT_BITORDER_MSB_FIRST,
|
||||||
# TX copy/bitshift.
|
# TX copy/bitshift.
|
||||||
Case(spi_length, {
|
Case(spi.length, {
|
||||||
8 : spi.mosi[24:32].eq(sink.data[0: 8]),
|
8 : spi.mosi[24:32].eq(sink.data[0: 8]),
|
||||||
16 : spi.mosi[16:32].eq(sink.data[0:16]),
|
16 : spi.mosi[16:32].eq(sink.data[0:16]),
|
||||||
32 : spi.mosi[ 0:32].eq(sink.data[0:32]),
|
32 : spi.mosi[ 0:32].eq(sink.data[0:32]),
|
||||||
|
@ -604,7 +604,7 @@ class SPIEngine(LiteXModule):
|
||||||
# TX copy.
|
# TX copy.
|
||||||
spi.mosi.eq(sink.data[::-1]),
|
spi.mosi.eq(sink.data[::-1]),
|
||||||
# RX copy/bitshift.
|
# RX copy/bitshift.
|
||||||
Case(spi_length, {
|
Case(spi.length, {
|
||||||
8 : source.data[0: 8].eq(spi.miso[::-1][24:32]),
|
8 : source.data[0: 8].eq(spi.miso[::-1][24:32]),
|
||||||
16 : source.data[0:16].eq(spi.miso[::-1][16:32]),
|
16 : source.data[0:16].eq(spi.miso[::-1][16:32]),
|
||||||
32 : source.data[0:32].eq(spi.miso[::-1][ 0:32]),
|
32 : source.data[0:32].eq(spi.miso[::-1][ 0:32]),
|
||||||
|
|
Loading…
Reference in New Issue