Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit b01bce48 authored by Dilip Kota's avatar Dilip Kota
Browse files

spi: spi-geni-qcom: Calculate FIFO size as per word length



Transfer data gets packed as per the bits per word
parameter passed by SPI client.
So, consider bits per word parameter while calculating
FIFO size.

Change-Id: I08986d3b63e00c828ee0610fdaa6176159a4bb33
Signed-off-by: default avatarDilip Kota <dkota@codeaurora.org>
parent 01697ba5
Loading
Loading
Loading
Loading
+4 −2
Original line number Diff line number Diff line
@@ -917,7 +917,7 @@ static void setup_fifo_xfer(struct spi_transfer *xfer,
	u32 m_cmd = 0;
	u32 m_param = 0;
	u32 spi_tx_cfg = geni_read_reg(mas->base, SE_SPI_TRANS_CFG);
	u32 trans_len = 0;
	u32 trans_len = 0, fifo_size = 0;

	if (xfer->bits_per_word != mas->cur_word_len) {
		spi_setup_word_len(mas, mode, xfer->bits_per_word);
@@ -981,7 +981,9 @@ static void setup_fifo_xfer(struct spi_transfer *xfer,
		mas->rx_rem_bytes = xfer->len;
	}

	if (trans_len > (mas->tx_fifo_depth * mas->tx_fifo_width)) {
	fifo_size =
		(mas->tx_fifo_depth * mas->tx_fifo_width / mas->cur_word_len);
	if (trans_len > fifo_size) {
		if (mas->cur_xfer_mode != SE_DMA) {
			mas->cur_xfer_mode = SE_DMA;
			geni_se_select_mode(mas->base, mas->cur_xfer_mode);