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

Commit 0b73aa63 authored by Mark Brown's avatar Mark Brown
Browse files

spi: Fix handling of cs_change in core implementation



The core implementation of cs_change didn't follow the documentation
which says that cs_change in the middle of the transfer means to briefly
deassert chip select, instead it followed buggy drivers which change the
polarity of chip select.  Use a delay of 10us between deassert and
reassert simply from pulling numbers out of a hat.

Reported-by: default avatarGerhard Sittig <gsi@denx.de>
Signed-off-by: default avatarMark Brown <broonie@linaro.org>
parent 38dbfb59
Loading
Loading
Loading
Loading
+3 −3
Original line number Diff line number Diff line
@@ -591,7 +591,6 @@ static int spi_transfer_one_message(struct spi_master *master,
				    struct spi_message *msg)
{
	struct spi_transfer *xfer;
	bool cur_cs = true;
	bool keep_cs = false;
	int ret = 0;

@@ -627,8 +626,9 @@ static int spi_transfer_one_message(struct spi_master *master,
					 &msg->transfers)) {
				keep_cs = true;
			} else {
				cur_cs = !cur_cs;
				spi_set_cs(msg->spi, cur_cs);
				spi_set_cs(msg->spi, false);
				udelay(10);
				spi_set_cs(msg->spi, true);
			}
		}