Skip to content

Commit b398769

Browse files
c-maudererkartben
authored andcommitted
drivers: spi: mchp_mss: Make more universal
The driver has ignored the first RX buffer. Most likely it has been modeled for accesses to a SPI flash or similar where the first read data is not relevant. This commit makes sure that the driver can work as a universal SPI master instead. Signed-off-by: Christian Mauderer <[email protected]>
1 parent 9ee617a commit b398769

File tree

1 file changed

+4
-13
lines changed

1 file changed

+4
-13
lines changed

drivers/spi/spi_mchp_mss.c

Lines changed: 4 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -192,29 +192,20 @@ static inline void mss_spi_readwr_fifo(const struct device *dev)
192192
struct mss_spi_data *data = dev->data;
193193
struct spi_context *ctx = &data->ctx;
194194
struct mss_spi_transfer *xfer = &data->xfer;
195-
uint32_t rx_raw = 0, rd_byte_size, tr_len;
195+
uint32_t rx_raw = 0;
196196
uint32_t data8, transfer_idx = 0;
197197
int count;
198198

199-
tr_len = spi_context_longest_current_buf(ctx);
200199
count = spi_context_total_tx_len(ctx);
201-
if (ctx->rx_buf) {
202-
rd_byte_size = count - tr_len;
203-
} else {
204-
rd_byte_size = 0;
205-
}
206200
mss_spi_hw_tfsz_set(cfg, count);
207201

208202
mss_spi_enable_ints(cfg);
209-
spi_context_update_rx(ctx, 1, xfer->rx_len);
210203
while (transfer_idx < count) {
211204
if (!(mss_spi_read(cfg, MSS_SPI_REG_STATUS) & MSS_SPI_STATUS_RXFIFO_EMPTY)) {
212205
rx_raw = mss_spi_read(cfg, MSS_SPI_REG_RX_DATA);
213-
if (transfer_idx >= tr_len) {
214-
if (spi_context_rx_buf_on(ctx)) {
215-
UNALIGNED_PUT(rx_raw, (uint8_t *)ctx->rx_buf);
216-
spi_context_update_rx(ctx, 1, 1);
217-
}
206+
if (spi_context_rx_buf_on(ctx)) {
207+
UNALIGNED_PUT(rx_raw, (uint8_t *)ctx->rx_buf);
208+
spi_context_update_rx(ctx, 1, 1);
218209
}
219210
++transfer_idx;
220211
}

0 commit comments

Comments
 (0)