aboutsummaryrefslogtreecommitdiffstats
path: root/include/trace
diff options
context:
space:
mode:
authorMark Brown <broonie@kernel.org>2019-03-04 10:32:51 -0500
committerMark Brown <broonie@kernel.org>2019-03-04 10:32:51 -0500
commit14dbfb417bd80c96ec700c7a8414bb6f5db7ecd2 (patch)
treef79fb71b6206ef40aa34c52649053a2aaa493a3c /include/trace
parentb50c6ac8b6fb3e7b5cf843afd789c8553a910254 (diff)
parent0e836c3bea7da04cd4e2ed22d8c20654d5a09273 (diff)
Merge branch 'spi-5.1' into spi-next
Diffstat (limited to 'include/trace')
-rw-r--r--include/trace/events/spi.h31
1 files changed, 27 insertions, 4 deletions
diff --git a/include/trace/events/spi.h b/include/trace/events/spi.h
index 277bb9d25779..aef6869f563d 100644
--- a/include/trace/events/spi.h
+++ b/include/trace/events/spi.h
@@ -109,6 +109,16 @@ TRACE_EVENT(spi_message_done,
109 (unsigned)__entry->actual, (unsigned)__entry->frame) 109 (unsigned)__entry->actual, (unsigned)__entry->frame)
110); 110);
111 111
112/*
113 * consider a buffer valid if non-NULL and if it doesn't match the dummy buffer
114 * that only exist to work with controllers that have SPI_CONTROLLER_MUST_TX or
115 * SPI_CONTROLLER_MUST_RX.
116 */
117#define spi_valid_txbuf(msg, xfer) \
118 (xfer->tx_buf && xfer->tx_buf != msg->spi->controller->dummy_tx)
119#define spi_valid_rxbuf(msg, xfer) \
120 (xfer->rx_buf && xfer->rx_buf != msg->spi->controller->dummy_rx)
121
112DECLARE_EVENT_CLASS(spi_transfer, 122DECLARE_EVENT_CLASS(spi_transfer,
113 123
114 TP_PROTO(struct spi_message *msg, struct spi_transfer *xfer), 124 TP_PROTO(struct spi_message *msg, struct spi_transfer *xfer),
@@ -120,6 +130,10 @@ DECLARE_EVENT_CLASS(spi_transfer,
120 __field( int, chip_select ) 130 __field( int, chip_select )
121 __field( struct spi_transfer *, xfer ) 131 __field( struct spi_transfer *, xfer )
122 __field( int, len ) 132 __field( int, len )
133 __dynamic_array(u8, rx_buf,
134 spi_valid_rxbuf(msg, xfer) ? xfer->len : 0)
135 __dynamic_array(u8, tx_buf,
136 spi_valid_txbuf(msg, xfer) ? xfer->len : 0)
123 ), 137 ),
124 138
125 TP_fast_assign( 139 TP_fast_assign(
@@ -127,12 +141,21 @@ DECLARE_EVENT_CLASS(spi_transfer,
127 __entry->chip_select = msg->spi->chip_select; 141 __entry->chip_select = msg->spi->chip_select;
128 __entry->xfer = xfer; 142 __entry->xfer = xfer;
129 __entry->len = xfer->len; 143 __entry->len = xfer->len;
144
145 if (spi_valid_txbuf(msg, xfer))
146 memcpy(__get_dynamic_array(tx_buf),
147 xfer->tx_buf, xfer->len);
148
149 if (spi_valid_rxbuf(msg, xfer))
150 memcpy(__get_dynamic_array(rx_buf),
151 xfer->rx_buf, xfer->len);
130 ), 152 ),
131 153
132 TP_printk("spi%d.%d %p len=%d", (int)__entry->bus_num, 154 TP_printk("spi%d.%d %p len=%d tx=[%*phD] rx=[%*phD]",
133 (int)__entry->chip_select, 155 __entry->bus_num, __entry->chip_select,
134 (struct spi_message *)__entry->xfer, 156 __entry->xfer, __entry->len,
135 (int)__entry->len) 157 __get_dynamic_array_len(tx_buf), __get_dynamic_array(tx_buf),
158 __get_dynamic_array_len(rx_buf), __get_dynamic_array(rx_buf))
136); 159);
137 160
138DEFINE_EVENT(spi_transfer, spi_transfer_start, 161DEFINE_EVENT(spi_transfer, spi_transfer_start,