mirror of
https://github.com/torvalds/linux.git
synced 2024-11-21 19:46:16 +00:00
spi: axi-spi-engine: Emit trace events for spi transfers
As this spi host controller driver implements the .transfer_one_message() callback, it has to care about these traces it-self. With the transfers being compiled it's difficult to determine where handling of one transfer ends and the next begins, so just generate the start events in batch before the hardware fifo is fed and the end events when their completion triggered. Signed-off-by: Uwe Kleine-König <u.kleine-koenig@baylibre.com> Reviewed-by: David Lechner <dlechner@baylibre.com> Link: https://patch.msgid.link/20241031111646.747692-2-u.kleine-koenig@baylibre.com Signed-off-by: Mark Brown <broonie@kernel.org>
This commit is contained in:
parent
8a9c132389
commit
e36eba413b
@ -15,6 +15,7 @@
|
||||
#include <linux/overflow.h>
|
||||
#include <linux/platform_device.h>
|
||||
#include <linux/spi/spi.h>
|
||||
#include <trace/events/spi.h>
|
||||
|
||||
#define SPI_ENGINE_REG_RESET 0x40
|
||||
|
||||
@ -590,6 +591,13 @@ static int spi_engine_transfer_one_message(struct spi_controller *host,
|
||||
|
||||
reinit_completion(&spi_engine->msg_complete);
|
||||
|
||||
if (trace_spi_transfer_start_enabled()) {
|
||||
struct spi_transfer *xfer;
|
||||
|
||||
list_for_each_entry(xfer, &msg->transfers, transfer_list)
|
||||
trace_spi_transfer_start(msg, xfer);
|
||||
}
|
||||
|
||||
spin_lock_irqsave(&spi_engine->lock, flags);
|
||||
|
||||
if (spi_engine_write_cmd_fifo(spi_engine, msg))
|
||||
@ -617,6 +625,13 @@ static int spi_engine_transfer_one_message(struct spi_controller *host,
|
||||
msg->status = -ETIMEDOUT;
|
||||
}
|
||||
|
||||
if (trace_spi_transfer_stop_enabled()) {
|
||||
struct spi_transfer *xfer;
|
||||
|
||||
list_for_each_entry(xfer, &msg->transfers, transfer_list)
|
||||
trace_spi_transfer_stop(msg, xfer);
|
||||
}
|
||||
|
||||
spi_finalize_current_message(host);
|
||||
|
||||
return msg->status;
|
||||
|
Loading…
Reference in New Issue
Block a user