mirror of
https://mirrors.bfsu.edu.cn/git/linux.git
synced 2024-12-15 06:55:13 +08:00
staging: greybus: spilib: use 'spi_delay_to_ns' for getting xfer delay
The intent is the removal of the 'delay_usecs' field from the spi_transfer struct, as there is a 'delay' field that does the same thing. The spi_delay_to_ns() can be used to get the transfer delay. It works by using the 'delay_usecs' field first (if it is non-zero), and finally uses the 'delay' field. Since the 'delay_usecs' field is going away, this change makes use of the spi_delay_to_ns() function. This also means dividing the return value of the function by 1000, to convert it to microseconds. To prevent any potential faults when converting to microseconds and since the result of spi_delay_to_ns() is int, the delay is being computed in 32 bits and then clamped between 0 & U16_MAX. Signed-off-by: Alexandru Ardelean <aardelean@deviqon.com> Acked-by: Viresh Kumar <viresh.kumar@linaro.org> Acked-by: Rui Miguel Silva <rmfrfs@gmail.com> Acked-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org> Link: https://lore.kernel.org/r/20210308145502.1075689-7-aardelean@deviqon.com Signed-off-by: Mark Brown <broonie@kernel.org>
This commit is contained in:
parent
7ca660f821
commit
33a23423ca
@ -245,6 +245,7 @@ static struct gb_operation *gb_spi_operation_create(struct gb_spilib *spi,
|
||||
/* Fill in the transfers array */
|
||||
xfer = spi->first_xfer;
|
||||
while (msg->state != GB_SPI_STATE_OP_DONE) {
|
||||
int xfer_delay;
|
||||
if (xfer == spi->last_xfer)
|
||||
xfer_len = spi->last_xfer_size;
|
||||
else
|
||||
@ -259,7 +260,9 @@ static struct gb_operation *gb_spi_operation_create(struct gb_spilib *spi,
|
||||
|
||||
gb_xfer->speed_hz = cpu_to_le32(xfer->speed_hz);
|
||||
gb_xfer->len = cpu_to_le32(xfer_len);
|
||||
gb_xfer->delay_usecs = cpu_to_le16(xfer->delay_usecs);
|
||||
xfer_delay = spi_delay_to_ns(&xfer->delay, xfer) / 1000;
|
||||
xfer_delay = clamp_t(u16, xfer_delay, 0, U16_MAX);
|
||||
gb_xfer->delay_usecs = cpu_to_le16(xfer_delay);
|
||||
gb_xfer->cs_change = xfer->cs_change;
|
||||
gb_xfer->bits_per_word = xfer->bits_per_word;
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user