diff options
author | Mark Brown <broonie@kernel.org> | 2019-03-04 10:32:51 -0500 |
---|---|---|
committer | Mark Brown <broonie@kernel.org> | 2019-03-04 10:32:51 -0500 |
commit | 14dbfb417bd80c96ec700c7a8414bb6f5db7ecd2 (patch) | |
tree | f79fb71b6206ef40aa34c52649053a2aaa493a3c /include/trace | |
parent | b50c6ac8b6fb3e7b5cf843afd789c8553a910254 (diff) | |
parent | 0e836c3bea7da04cd4e2ed22d8c20654d5a09273 (diff) |
Merge branch 'spi-5.1' into spi-next
Diffstat (limited to 'include/trace')
-rw-r--r-- | include/trace/events/spi.h | 31 |
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 | |||
112 | DECLARE_EVENT_CLASS(spi_transfer, | 122 | DECLARE_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 | ||
138 | DEFINE_EVENT(spi_transfer, spi_transfer_start, | 161 | DEFINE_EVENT(spi_transfer, spi_transfer_start, |