Unverified Commit 5cb4e1f3 authored by Andy Shevchenko's avatar Andy Shevchenko Committed by Mark Brown
Browse files

spi: Enable tracing of the SPI setup CS selection



It is helpful to see what state of CS signal was during one
or another SPI operation. All the same for SPI setup.

Enable tracing of the SPI setup and CS selection.

Signed-off-by: default avatarAndy Shevchenko <andriy.shevchenko@linux.intel.com>
Message-Id: <20210526195655.75691-1-andriy.shevchenko@linux.intel.com>
Signed-off-by: default avatarMark Brown <broonie@kernel.org>
parent ab053f48
Loading
Loading
Loading
Loading
+4 −0
Original line number Diff line number Diff line
@@ -804,6 +804,8 @@ static void spi_set_cs(struct spi_device *spi, bool enable, bool force)
	    (spi->controller->last_cs_mode_high == (spi->mode & SPI_CS_HIGH)))
		return;

	trace_spi_set_cs(spi, activate);

	spi->controller->last_cs_enable = enable;
	spi->controller->last_cs_mode_high = spi->mode & SPI_CS_HIGH;

@@ -3441,6 +3443,8 @@ int spi_setup(struct spi_device *spi)
		spi_set_thread_rt(spi->controller);
	}

	trace_spi_setup(spi, status);

	dev_dbg(&spi->dev, "setup mode %lu, %s%s%s%s%u bits/w, %u Hz max --> %d\n",
			spi->mode & SPI_MODE_X_MASK,
			(spi->mode & SPI_CS_HIGH) ? "cs_high, " : "",
+57 −0
Original line number Diff line number Diff line
@@ -42,6 +42,63 @@ DEFINE_EVENT(spi_controller, spi_controller_busy,

);

TRACE_EVENT(spi_setup,
	TP_PROTO(struct spi_device *spi, int status),
	TP_ARGS(spi, status),

	TP_STRUCT__entry(
		__field(int, bus_num)
		__field(int, chip_select)
		__field(unsigned long, mode)
		__field(unsigned int, bits_per_word)
		__field(unsigned int, max_speed_hz)
		__field(int, status)
	),

	TP_fast_assign(
		__entry->bus_num = spi->controller->bus_num;
		__entry->chip_select = spi->chip_select;
		__entry->mode = spi->mode;
		__entry->bits_per_word = spi->bits_per_word;
		__entry->max_speed_hz = spi->max_speed_hz;
		__entry->status = status;
	),

	TP_printk("spi%d.%d setup mode %lu, %s%s%s%s%u bits/w, %u Hz max --> %d",
		  __entry->bus_num, __entry->chip_select,
		  (__entry->mode & SPI_MODE_X_MASK),
		  (__entry->mode & SPI_CS_HIGH) ? "cs_high, " : "",
		  (__entry->mode & SPI_LSB_FIRST) ? "lsb, " : "",
		  (__entry->mode & SPI_3WIRE) ? "3wire, " : "",
		  (__entry->mode & SPI_LOOP) ? "loopback, " : "",
		  __entry->bits_per_word, __entry->max_speed_hz,
		  __entry->status)
);

TRACE_EVENT(spi_set_cs,
	TP_PROTO(struct spi_device *spi, bool enable),
	TP_ARGS(spi, enable),

	TP_STRUCT__entry(
		__field(int, bus_num)
		__field(int, chip_select)
		__field(unsigned long, mode)
		__field(bool, enable)
	),

	TP_fast_assign(
		__entry->bus_num = spi->controller->bus_num;
		__entry->chip_select = spi->chip_select;
		__entry->mode = spi->mode;
		__entry->enable = enable;
	),

	TP_printk("spi%d.%d %s%s",
		  __entry->bus_num, __entry->chip_select,
		  __entry->enable ? "activate" : "deactivate",
		  (__entry->mode & SPI_CS_HIGH) ? ", cs_high" : "")
);

DECLARE_EVENT_CLASS(spi_message,

	TP_PROTO(struct spi_message *msg),