spi: core: allow reporting the effectivly used speed_hz for a transfer
authorMartin Sperl <kernel@martin.sperl.org>
Sat, 23 Feb 2019 08:49:49 +0000 (08:49 +0000)
committerMark Brown <broonie@kernel.org>
Mon, 13 May 2019 12:11:36 +0000 (13:11 +0100)
Provide a means for the spi bus driver to report the effectively used
spi clock frequency used for each spi_transfer.

Signed-off-by: Martin Sperl <kernel@martin.sperl.org>
Signed-off-by: Mark Brown <broonie@kernel.org>
drivers/spi/spi.c
include/linux/spi/spi.h

index cfa3c3d..e9bf0c2 100644 (file)
@@ -3126,6 +3126,7 @@ static int __spi_validate(struct spi_device *spi, struct spi_message *message)
         */
        message->frame_length = 0;
        list_for_each_entry(xfer, &message->transfers, transfer_list) {
+               xfer->effective_speed_hz = 0;
                message->frame_length += xfer->len;
                if (!xfer->bits_per_word)
                        xfer->bits_per_word = spi->bits_per_word;
index f55b202..d0c5ba7 100644 (file)
@@ -745,6 +745,9 @@ extern void spi_res_release(struct spi_controller *ctlr,
  *     (set by bits_per_word) transmission.
  * @word_delay: clock cycles to inter word delay after each word size
  *     (set by bits_per_word) transmission.
+ * @effective_speed_hz: the effective SCK-speed that was used to
+ *      transfer this transfer. Set to 0 if the spi bus driver does
+ *      not support it.
  * @transfer_list: transfers are sequenced through @spi_message.transfers
  * @tx_sg: Scatterlist for transmit, currently not for client use
  * @rx_sg: Scatterlist for receive, currently not for client use
@@ -835,6 +838,8 @@ struct spi_transfer {
        u32             speed_hz;
        u16             word_delay;
 
+       u32             effective_speed_hz;
+
        struct list_head transfer_list;
 };