Typically, in burst mode, the device cannot operate at it's full spi
speed. Hence, the spi transfers for burst mode have to take this into
account. With this change we avoid a potential race with the spi core as
drivers were 'hacking' the device 'max_speed_hz' directly in the
trigger handler.
Reviewed-by: Alexandru Ardelean <ardeleanalex@gmail.com>
Signed-off-by: Nuno Sa <nuno.sa@analog.com>
Link: https://lore.kernel.org/r/20210427085454.30616-5-nuno.sa@analog.com
Signed-off-by: Jonathan Cameron <Jonathan.Cameron@huawei.com>
        adis->xfer[0].tx_buf = tx;
        adis->xfer[0].bits_per_word = 8;
        adis->xfer[0].len = 2;
+       if (adis->data->burst_max_speed_hz)
+               adis->xfer[0].speed_hz = adis->data->burst_max_speed_hz;
        adis->xfer[1].rx_buf = adis->buffer;
        adis->xfer[1].bits_per_word = 8;
        adis->xfer[1].len = burst_length;
+       if (adis->data->burst_max_speed_hz)
+               adis->xfer[1].speed_hz = adis->data->burst_max_speed_hz;
 
        spi_message_init(&adis->msg);
        spi_message_add_tail(&adis->xfer[0], &adis->msg);
 
  *                     this should be the minimum size supported by the device.
  * @burst_max_len:     Holds the maximum burst size when the device supports
  *                     more than one burst mode with different sizes
+ * @burst_max_speed_hz:        Maximum spi speed that can be used in burst mode
  */
 struct adis_data {
        unsigned int read_delay;
        unsigned int burst_reg_cmd;
        unsigned int burst_len;
        unsigned int burst_max_len;
+       unsigned int burst_max_speed_hz;
 };
 
 /**