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

Commit 6342eddf authored by Linux Build Service Account's avatar Linux Build Service Account Committed by Gerrit - the friendly Code Review server
Browse files

Merge "spi: spi_qsd: Prevent transfer grouping"

parents 0b72362f 97cd2243
Loading
Loading
Loading
Loading
+4 −27
Original line number Diff line number Diff line
@@ -1647,8 +1647,6 @@ static inline void write_force_cs(struct msm_spi *dd, bool set_flag)

static inline int combine_transfers(struct msm_spi *dd)
{
	struct spi_transfer *t = dd->cur_transfer;
	struct spi_transfer *nxt;
	int xfrs_grped = 1;
	dd->xfrs_delay_usec = 0;

@@ -1661,29 +1659,6 @@ static inline int combine_transfers(struct msm_spi *dd)
	if (dd->cur_transfer->rx_buf)
		dd->bam.bam_rx_len += dd->cur_transfer->len;

	while (t->transfer_list.next != &dd->cur_msg->transfers) {
		nxt = list_entry(t->transfer_list.next,
				 struct spi_transfer,
				 transfer_list);
		if (t->cs_change != nxt->cs_change)
			return xfrs_grped;
		if (t->delay_usecs) {
			dd->xfrs_delay_usec = t->delay_usecs;
			dev_dbg(dd->dev, "SPI slave requests delay per txn :%d usecs",
					t->delay_usecs);
			return xfrs_grped;
		}
		if (nxt->tx_buf)
			dd->bam.bam_tx_len += nxt->len;
		if (nxt->rx_buf)
			dd->bam.bam_rx_len += nxt->len;

		dd->cur_msg_len += nxt->len;
		xfrs_grped++;
		t = nxt;
	}

	if (1 == xfrs_grped)
	dd->xfrs_delay_usec = dd->cur_transfer->delay_usecs;

	return xfrs_grped;
@@ -1734,7 +1709,7 @@ static void msm_spi_process_message(struct msm_spi *dd)
			dd->cur_tx_transfer = dd->cur_transfer;
			dd->cur_rx_transfer = dd->cur_transfer;
			msm_spi_process_transfer(dd);
			if (dd->qup_ver && !dd->xfrs_delay_usec)
			if (dd->qup_ver && dd->cur_transfer->cs_change)
				write_force_cs(dd, 0);
			xfrs_grped--;
		}
@@ -1758,6 +1733,8 @@ static void msm_spi_process_message(struct msm_spi *dd)
		dd->num_xfrs_grped = 1;
		msm_spi_process_transfer(dd);
	}
	if (dd->qup_ver)
		write_force_cs(dd, 0);
	return;
error:
	msm_spi_free_cs_gpio(dd);