
Hi Stephen,
On 25 February 2015 at 16:14, Stephen Warren swarren@wwwdotorg.org wrote:
On 02/17/2015 03:29 PM, Simon Glass wrote:
At present the driver does not properly honour the requested SPI CS deactivation delay since the SPI bus is changed in the claim_bus() method.
Everything the claim_bus() method does can be done when the device is probed (setting the speed and mode) and at the start of a new transfer (where the fifo_status is already cleared). So drop this method.
Also, until the delay is complete, we should not touch the bus, so make sure that spi_cs_activate() is called before other things are done in the xfer() method.
diff --git a/drivers/spi/tegra114_spi.c b/drivers/spi/tegra114_spi.c
setbits_le32(®s->command1, SPI_CMD1_M_S | SPI_CMD1_CS_SW_HW |
(priv->mode << SPI_CMD1_MODE_SHIFT));
...
setbits_le32(&priv->regs->command1, SPI_CMD1_M_S |
SPI_CMD1_CS_SW_HW |
(priv->mode << SPI_CMD1_MODE_SHIFT) |
SPI_CMD1_CS_SW_VAL);
Is that addition of SPI_CMD1_CS_SW_VAL there relative to the old code intended?
Yes. To me it seems that we should set CS high when probing. Otherwise the bus may sit low (enabled) until we do our first activate().
Regards, Simon