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: Gerhard Sittig <gsi@denx.de> Signed-off-by: Mark Brown <broonie@linaro.org>
This commit is contained in:
parent
38dbfb59d1
commit
0b73aa63c1
1 changed files with 3 additions and 3 deletions
|
@ -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);
|
||||
}
|
||||
}
|
||||
|
||||
|
|
Loading…
Reference in a new issue