mirror of
https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git
synced 2024-09-04 01:49:36 +00:00
mfd: cros ec: spi: Simplify delay handling between SPI messages
The EC SPI driver prevents SPI transfers being to rapidly by keeping track of the time the last transfer was issued via the 'last_transfer_ns' variable. Previously, if the 'last_transfer_ns' variable was zero, this indicated that no previous transfer had been sent and that no delay was needed. However, the EC SPI driver has been updated to always initialise the 'last_transfer_ns' variable during probe and therefore, it is no longer necessary to test if it is zero. Remove the code that checks if this variable is zero. Signed-off-by: Jon Hunter <jonathanh@nvidia.com> Reviewed-by: Brian Norris <briannorris@chromium.org> Reviewed-by: Douglas Anderson <dianders@chromium.org> Acked-by: Benson Leung <bleung@chromium.org> Signed-off-by: Lee Jones <lee.jones@linaro.org>
This commit is contained in:
parent
572ff4d560
commit
d501ff903b
1 changed files with 9 additions and 16 deletions
|
@ -72,8 +72,7 @@
|
||||||
* struct cros_ec_spi - information about a SPI-connected EC
|
* struct cros_ec_spi - information about a SPI-connected EC
|
||||||
*
|
*
|
||||||
* @spi: SPI device we are connected to
|
* @spi: SPI device we are connected to
|
||||||
* @last_transfer_ns: time that we last finished a transfer, or 0 if there
|
* @last_transfer_ns: time that we last finished a transfer.
|
||||||
* if no record
|
|
||||||
* @start_of_msg_delay: used to set the delay_usecs on the spi_transfer that
|
* @start_of_msg_delay: used to set the delay_usecs on the spi_transfer that
|
||||||
* is sent when we want to turn on CS at the start of a transaction.
|
* is sent when we want to turn on CS at the start of a transaction.
|
||||||
* @end_of_msg_delay: used to set the delay_usecs on the spi_transfer that
|
* @end_of_msg_delay: used to set the delay_usecs on the spi_transfer that
|
||||||
|
@ -378,18 +377,15 @@ static int cros_ec_pkt_xfer_spi(struct cros_ec_device *ec_dev,
|
||||||
u8 *rx_buf;
|
u8 *rx_buf;
|
||||||
u8 sum;
|
u8 sum;
|
||||||
int ret = 0, final_ret;
|
int ret = 0, final_ret;
|
||||||
|
unsigned long delay;
|
||||||
|
|
||||||
len = cros_ec_prepare_tx(ec_dev, ec_msg);
|
len = cros_ec_prepare_tx(ec_dev, ec_msg);
|
||||||
dev_dbg(ec_dev->dev, "prepared, len=%d\n", len);
|
dev_dbg(ec_dev->dev, "prepared, len=%d\n", len);
|
||||||
|
|
||||||
/* If it's too soon to do another transaction, wait */
|
/* If it's too soon to do another transaction, wait */
|
||||||
if (ec_spi->last_transfer_ns) {
|
delay = ktime_get_ns() - ec_spi->last_transfer_ns;
|
||||||
unsigned long delay; /* The delay completed so far */
|
if (delay < EC_SPI_RECOVERY_TIME_NS)
|
||||||
|
ndelay(EC_SPI_RECOVERY_TIME_NS - delay);
|
||||||
delay = ktime_get_ns() - ec_spi->last_transfer_ns;
|
|
||||||
if (delay < EC_SPI_RECOVERY_TIME_NS)
|
|
||||||
ndelay(EC_SPI_RECOVERY_TIME_NS - delay);
|
|
||||||
}
|
|
||||||
|
|
||||||
rx_buf = kzalloc(len, GFP_KERNEL);
|
rx_buf = kzalloc(len, GFP_KERNEL);
|
||||||
if (!rx_buf)
|
if (!rx_buf)
|
||||||
|
@ -510,18 +506,15 @@ static int cros_ec_cmd_xfer_spi(struct cros_ec_device *ec_dev,
|
||||||
u8 *rx_buf;
|
u8 *rx_buf;
|
||||||
int sum;
|
int sum;
|
||||||
int ret = 0, final_ret;
|
int ret = 0, final_ret;
|
||||||
|
unsigned long delay;
|
||||||
|
|
||||||
len = cros_ec_prepare_tx(ec_dev, ec_msg);
|
len = cros_ec_prepare_tx(ec_dev, ec_msg);
|
||||||
dev_dbg(ec_dev->dev, "prepared, len=%d\n", len);
|
dev_dbg(ec_dev->dev, "prepared, len=%d\n", len);
|
||||||
|
|
||||||
/* If it's too soon to do another transaction, wait */
|
/* If it's too soon to do another transaction, wait */
|
||||||
if (ec_spi->last_transfer_ns) {
|
delay = ktime_get_ns() - ec_spi->last_transfer_ns;
|
||||||
unsigned long delay; /* The delay completed so far */
|
if (delay < EC_SPI_RECOVERY_TIME_NS)
|
||||||
|
ndelay(EC_SPI_RECOVERY_TIME_NS - delay);
|
||||||
delay = ktime_get_ns() - ec_spi->last_transfer_ns;
|
|
||||||
if (delay < EC_SPI_RECOVERY_TIME_NS)
|
|
||||||
ndelay(EC_SPI_RECOVERY_TIME_NS - delay);
|
|
||||||
}
|
|
||||||
|
|
||||||
rx_buf = kzalloc(len, GFP_KERNEL);
|
rx_buf = kzalloc(len, GFP_KERNEL);
|
||||||
if (!rx_buf)
|
if (!rx_buf)
|
||||||
|
|
Loading…
Reference in a new issue