1 /* SPDX-License-Identifier: GPL-2.0 */ 2 #undef TRACE_SYSTEM 3 #define TRACE_SYSTEM qcom_geni_serial 4 5 #if !defined(_TRACE_QCOM_GENI_SERIAL_H) || defined(TRACE_HEADER_MULTI_READ) 6 #define _TRACE_QCOM_GENI_SERIAL_H 7 8 #include <linux/device.h> 9 #include <linux/tracepoint.h> 10 11 TRACE_EVENT(geni_serial_set_termios, 12 TP_PROTO(struct device *dev, unsigned int baud, 13 unsigned int bits_per_char, u32 tx_trans_cfg, 14 u32 tx_parity_cfg, u32 rx_trans_cfg, 15 u32 rx_parity_cfg, u32 stop_bit_len), 16 TP_ARGS(dev, baud, bits_per_char, tx_trans_cfg, tx_parity_cfg, 17 rx_trans_cfg, rx_parity_cfg, stop_bit_len), 18 19 TP_STRUCT__entry(__string(name, dev_name(dev)) 20 __field(unsigned int, baud) 21 __field(unsigned int, bits_per_char) 22 __field(u32, tx_trans_cfg) 23 __field(u32, tx_parity_cfg) 24 __field(u32, rx_trans_cfg) 25 __field(u32, rx_parity_cfg) 26 __field(u32, stop_bit_len) 27 ), 28 29 TP_fast_assign(__assign_str(name); 30 __entry->baud = baud; 31 __entry->bits_per_char = bits_per_char; 32 __entry->tx_trans_cfg = tx_trans_cfg; 33 __entry->tx_parity_cfg = tx_parity_cfg; 34 __entry->rx_trans_cfg = rx_trans_cfg; 35 __entry->rx_parity_cfg = rx_parity_cfg; 36 __entry->stop_bit_len = stop_bit_len; 37 ), 38 39 TP_printk("%s: baud=%u bpc=%u tx_trans=0x%08x tx_par=0x%08x rx_trans=0x%08x rx_par=0x%08x stop=%u", 40 __get_str(name), __entry->baud, __entry->bits_per_char, 41 __entry->tx_trans_cfg, __entry->tx_parity_cfg, 42 __entry->rx_trans_cfg, __entry->rx_parity_cfg, 43 __entry->stop_bit_len) 44 ); 45 46 TRACE_EVENT(geni_serial_clk_cfg, 47 TP_PROTO(struct device *dev, unsigned int desired_rate, 48 unsigned long clk_rate, unsigned int clk_div, 49 unsigned int clk_idx), 50 TP_ARGS(dev, desired_rate, clk_rate, clk_div, clk_idx), 51 52 TP_STRUCT__entry(__string(name, dev_name(dev)) 53 __field(unsigned int, desired_rate) 54 __field(unsigned long, clk_rate) 55 __field(unsigned int, clk_div) 56 __field(unsigned int, clk_idx) 57 ), 58 59 TP_fast_assign(__assign_str(name); 60 __entry->desired_rate = desired_rate; 61 __entry->clk_rate = clk_rate; 62 __entry->clk_div = clk_div; 63 __entry->clk_idx = clk_idx; 64 ), 65 66 TP_printk("%s: desired_rate=%u clk_rate=%lu clk_div=%u clk_idx=%u", 67 __get_str(name), __entry->desired_rate, __entry->clk_rate, 68 __entry->clk_div, __entry->clk_idx) 69 ); 70 71 TRACE_EVENT(geni_serial_irq, 72 TP_PROTO(struct device *dev, u32 m_irq, u32 s_irq, 73 u32 dma_tx, u32 dma_rx), 74 TP_ARGS(dev, m_irq, s_irq, dma_tx, dma_rx), 75 76 TP_STRUCT__entry(__string(name, dev_name(dev)) 77 __field(u32, m_irq) 78 __field(u32, s_irq) 79 __field(u32, dma_tx) 80 __field(u32, dma_rx) 81 ), 82 83 TP_fast_assign(__assign_str(name); 84 __entry->m_irq = m_irq; 85 __entry->s_irq = s_irq; 86 __entry->dma_tx = dma_tx; 87 __entry->dma_rx = dma_rx; 88 ), 89 90 TP_printk("%s: m_irq=0x%08x s_irq=0x%08x dma_tx=0x%08x dma_rx=0x%08x", 91 __get_str(name), __entry->m_irq, __entry->s_irq, 92 __entry->dma_tx, __entry->dma_rx) 93 ); 94 95 DECLARE_EVENT_CLASS(geni_serial_data, 96 TP_PROTO(struct device *dev, const u8 *buf, unsigned int len), 97 TP_ARGS(dev, buf, len), 98 99 TP_STRUCT__entry(__string(name, dev_name(dev)) 100 __field(unsigned int, len) 101 __dynamic_array(u8, data, len) 102 ), 103 104 TP_fast_assign(__assign_str(name); 105 __entry->len = len; 106 memcpy(__get_dynamic_array(data), buf, len); 107 ), 108 109 TP_printk("%s: len=%u data=%s", 110 __get_str(name), __entry->len, 111 __print_hex(__get_dynamic_array(data), __entry->len)) 112 ); 113 114 DEFINE_EVENT(geni_serial_data, geni_serial_tx_data, 115 TP_PROTO(struct device *dev, const u8 *buf, unsigned int len), 116 TP_ARGS(dev, buf, len) 117 ); 118 119 DEFINE_EVENT(geni_serial_data, geni_serial_rx_data, 120 TP_PROTO(struct device *dev, const u8 *buf, unsigned int len), 121 TP_ARGS(dev, buf, len) 122 ); 123 124 TRACE_EVENT(geni_serial_set_mctrl, 125 TP_PROTO(struct device *dev, unsigned int mctrl, 126 u32 uart_manual_rfr), 127 TP_ARGS(dev, mctrl, uart_manual_rfr), 128 129 TP_STRUCT__entry(__string(name, dev_name(dev)) 130 __field(unsigned int, mctrl) 131 __field(u32, uart_manual_rfr) 132 ), 133 134 TP_fast_assign(__assign_str(name); 135 __entry->mctrl = mctrl; 136 __entry->uart_manual_rfr = uart_manual_rfr; 137 ), 138 139 TP_printk("%s: mctrl=0x%04x uart_manual_rfr=0x%08x", 140 __get_str(name), __entry->mctrl, __entry->uart_manual_rfr) 141 ); 142 143 TRACE_EVENT(geni_serial_get_mctrl, 144 TP_PROTO(struct device *dev, unsigned int mctrl, u32 geni_ios), 145 TP_ARGS(dev, mctrl, geni_ios), 146 147 TP_STRUCT__entry(__string(name, dev_name(dev)) 148 __field(unsigned int, mctrl) 149 __field(u32, geni_ios) 150 ), 151 152 TP_fast_assign(__assign_str(name); 153 __entry->mctrl = mctrl; 154 __entry->geni_ios = geni_ios; 155 ), 156 157 TP_printk("%s: mctrl=0x%04x geni_ios=0x%08x", 158 __get_str(name), __entry->mctrl, __entry->geni_ios) 159 ); 160 161 #endif /* _TRACE_QCOM_GENI_SERIAL_H */ 162 163 /* This part must be outside protection */ 164 #include <trace/define_trace.h> 165