1 /* SPDX-License-Identifier: GPL-2.0 */
2 /*
3  * Trace events in pm8001 driver.
4  *
5  * Copyright 2020 Google LLC
6  * Author: Akshat Jain <akshatzen@google.com>
7  */
8 
9 #undef TRACE_SYSTEM
10 #define TRACE_SYSTEM pm80xx
11 
12 #if !defined(_TRACE_PM80XX_H) || defined(TRACE_HEADER_MULTI_READ)
13 #define _TRACE_PM80XX_H
14 
15 #include <linux/tracepoint.h>
16 #include "pm8001_sas.h"
17 
18 TRACE_EVENT(pm80xx_request_issue,
19 	    TP_PROTO(u32 id, u32 phy_id, u32 htag, u32 ctlr_opcode,
20 		     u16 ata_opcode, int running_req),
21 
22 	    TP_ARGS(id, phy_id, htag, ctlr_opcode, ata_opcode, running_req),
23 
24 	    TP_STRUCT__entry(
25 		    __field(u32, id)
26 		    __field(u32, phy_id)
27 		    __field(u32, htag)
28 		    __field(u32, ctlr_opcode)
29 		    __field(u16,  ata_opcode)
30 		    __field(int, running_req)
31 		    ),
32 
33 	    TP_fast_assign(
34 		    __entry->id = id;
35 		    __entry->phy_id = phy_id;
36 		    __entry->htag = htag;
37 		    __entry->ctlr_opcode = ctlr_opcode;
38 		    __entry->ata_opcode = ata_opcode;
39 		    __entry->running_req = running_req;
40 		    ),
41 
42 	    TP_printk("ctlr_id = %u phy_id = %u htag = %#x, ctlr_opcode = %#x ata_opcode = %#x running_req = %d",
43 		    __entry->id, __entry->phy_id, __entry->htag,
44 		    __entry->ctlr_opcode, __entry->ata_opcode,
45 		    __entry->running_req)
46 );
47 
48 TRACE_EVENT(pm80xx_request_complete,
49 	    TP_PROTO(u32 id, u32 phy_id, u32 htag, u32 ctlr_opcode,
50 		     u16 ata_opcode, int running_req),
51 
52 	    TP_ARGS(id, phy_id, htag, ctlr_opcode, ata_opcode, running_req),
53 
54 	    TP_STRUCT__entry(
55 		    __field(u32, id)
56 		    __field(u32, phy_id)
57 		    __field(u32, htag)
58 		    __field(u32, ctlr_opcode)
59 		    __field(u16,  ata_opcode)
60 		    __field(int, running_req)
61 		    ),
62 
63 	    TP_fast_assign(
64 		    __entry->id = id;
65 		    __entry->phy_id = phy_id;
66 		    __entry->htag = htag;
67 		    __entry->ctlr_opcode = ctlr_opcode;
68 		    __entry->ata_opcode = ata_opcode;
69 		    __entry->running_req = running_req;
70 		    ),
71 
72 	    TP_printk("ctlr_id = %u phy_id = %u htag = %#x, ctlr_opcode = %#x ata_opcode = %#x running_req = %d",
73 		    __entry->id, __entry->phy_id, __entry->htag,
74 		    __entry->ctlr_opcode, __entry->ata_opcode,
75 		    __entry->running_req)
76 );
77 
78 TRACE_EVENT(pm80xx_mpi_build_cmd,
79 	    TP_PROTO(u32 id, u32 opc, u32 htag, u32 qi, u32 pi, u32 ci),
80 
81 	    TP_ARGS(id, opc, htag, qi, pi, ci),
82 
83 	    TP_STRUCT__entry(
84 		    __field(u32, id)
85 		    __field(u32, opc)
86 		    __field(u32, htag)
87 		    __field(u32, qi)
88 		    __field(u32, pi)
89 		    __field(u32, ci)
90 		    ),
91 
92 	    TP_fast_assign(
93 		    __entry->id = id;
94 		    __entry->opc = opc;
95 		    __entry->htag = htag;
96 		    __entry->qi = qi;
97 		    __entry->pi = pi;
98 		    __entry->ci = ci;
99 		    ),
100 
101 	    TP_printk("ctlr_id = %u opc = %#x htag = %#x QI = %u PI = %u CI = %u",
102 		    __entry->id, __entry->opc, __entry->htag, __entry->qi,
103 		    __entry->pi, __entry->ci)
104 );
105 
106 #endif /* _TRACE_PM80XX_H_ */
107 
108 #undef TRACE_INCLUDE_PATH
109 #undef TRACE_INCLUDE_FILE
110 #define TRACE_INCLUDE_PATH .
111 #define TRACE_INCLUDE_FILE pm80xx_tracepoints
112 
113 #include <trace/define_trace.h>
114