hc
2024-10-22 8ac6c7a54ed1b98d142dce24b11c6de6a1e239a5
kernel/include/trace/events/spi.h
....@@ -109,6 +109,16 @@
109109 (unsigned)__entry->actual, (unsigned)__entry->frame)
110110 );
111111
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
+
112122 DECLARE_EVENT_CLASS(spi_transfer,
113123
114124 TP_PROTO(struct spi_message *msg, struct spi_transfer *xfer),
....@@ -120,6 +130,12 @@
120130 __field( int, chip_select )
121131 __field( struct spi_transfer *, xfer )
122132 __field( int, len )
133
+ __dynamic_array(u8, rx_buf,
134
+ spi_valid_rxbuf(msg, xfer) ?
135
+ (xfer->len < 64 ? xfer->len : 64) : 0)
136
+ __dynamic_array(u8, tx_buf,
137
+ spi_valid_txbuf(msg, xfer) ?
138
+ (xfer->len < 64 ? xfer->len : 64) : 0)
123139 ),
124140
125141 TP_fast_assign(
....@@ -127,12 +143,21 @@
127143 __entry->chip_select = msg->spi->chip_select;
128144 __entry->xfer = xfer;
129145 __entry->len = xfer->len;
146
+
147
+ if (spi_valid_txbuf(msg, xfer))
148
+ memcpy(__get_dynamic_array(tx_buf),
149
+ xfer->tx_buf, __get_dynamic_array_len(tx_buf));
150
+
151
+ if (spi_valid_rxbuf(msg, xfer))
152
+ memcpy(__get_dynamic_array(rx_buf),
153
+ xfer->rx_buf, __get_dynamic_array_len(rx_buf));
130154 ),
131155
132
- TP_printk("spi%d.%d %p len=%d", (int)__entry->bus_num,
133
- (int)__entry->chip_select,
134
- (struct spi_message *)__entry->xfer,
135
- (int)__entry->len)
156
+ TP_printk("spi%d.%d %p len=%d tx=[%*phD] rx=[%*phD]",
157
+ __entry->bus_num, __entry->chip_select,
158
+ __entry->xfer, __entry->len,
159
+ __get_dynamic_array_len(tx_buf), __get_dynamic_array(tx_buf),
160
+ __get_dynamic_array_len(rx_buf), __get_dynamic_array(rx_buf))
136161 );
137162
138163 DEFINE_EVENT(spi_transfer, spi_transfer_start,