|
8 | 8 | #include <linux/pwm.h>
|
9 | 9 | #include <linux/tracepoint.h>
|
10 | 10 |
|
| 11 | +#define TP_PROTO_pwm(args...) \ |
| 12 | + TP_PROTO(struct pwm_device *pwm, args) |
| 13 | + |
| 14 | +#define TP_ARGS_pwm(args...) \ |
| 15 | + TP_ARGS(pwm, args) |
| 16 | + |
| 17 | +#define TP_STRUCT__entry_pwm(args...) \ |
| 18 | + TP_STRUCT__entry( \ |
| 19 | + __field(unsigned int, chipid) \ |
| 20 | + __field(unsigned int, hwpwm) \ |
| 21 | + args) |
| 22 | + |
| 23 | +#define TP_fast_assign_pwm(args...) \ |
| 24 | + TP_fast_assign( \ |
| 25 | + __entry->chipid = pwm->chip->id; \ |
| 26 | + __entry->hwpwm = pwm->hwpwm; \ |
| 27 | + args) |
| 28 | + |
| 29 | +#define TP_printk_pwm(fmt, args...) \ |
| 30 | + TP_printk("pwmchip%u.%u: " fmt, __entry->chipid, __entry->hwpwm, args) |
| 31 | + |
| 32 | +#define __field_pwmwf(wf) \ |
| 33 | + __field(u64, wf ## _period_length_ns) \ |
| 34 | + __field(u64, wf ## _duty_length_ns) \ |
| 35 | + __field(u64, wf ## _duty_offset_ns) \ |
| 36 | + |
| 37 | +#define fast_assign_pwmwf(wf) \ |
| 38 | + __entry->wf ## _period_length_ns = wf->period_length_ns; \ |
| 39 | + __entry->wf ## _duty_length_ns = wf->duty_length_ns; \ |
| 40 | + __entry->wf ## _duty_offset_ns = wf->duty_offset_ns |
| 41 | + |
| 42 | +#define printk_pwmwf_format(wf) \ |
| 43 | + "%lld/%lld [+%lld]" |
| 44 | + |
| 45 | +#define printk_pwmwf_formatargs(wf) \ |
| 46 | + __entry->wf ## _duty_length_ns, __entry->wf ## _period_length_ns, __entry->wf ## _duty_offset_ns |
| 47 | + |
| 48 | +TRACE_EVENT(pwm_round_waveform_tohw, |
| 49 | + |
| 50 | + TP_PROTO_pwm(const struct pwm_waveform *wf, void *wfhw, int err), |
| 51 | + |
| 52 | + TP_ARGS_pwm(wf, wfhw, err), |
| 53 | + |
| 54 | + TP_STRUCT__entry_pwm( |
| 55 | + __field_pwmwf(wf) |
| 56 | + __field(void *, wfhw) |
| 57 | + __field(int, err) |
| 58 | + ), |
| 59 | + |
| 60 | + TP_fast_assign_pwm( |
| 61 | + fast_assign_pwmwf(wf); |
| 62 | + __entry->wfhw = wfhw; |
| 63 | + __entry->err = err; |
| 64 | + ), |
| 65 | + |
| 66 | + TP_printk_pwm(printk_pwmwf_format(wf) " > %p err=%d", |
| 67 | + printk_pwmwf_formatargs(wf), __entry->wfhw, __entry->err) |
| 68 | +); |
| 69 | + |
| 70 | +TRACE_EVENT(pwm_round_waveform_fromhw, |
| 71 | + |
| 72 | + TP_PROTO_pwm(const void *wfhw, struct pwm_waveform *wf, int err), |
| 73 | + |
| 74 | + TP_ARGS_pwm(wfhw, wf, err), |
| 75 | + |
| 76 | + TP_STRUCT__entry_pwm( |
| 77 | + __field(const void *, wfhw) |
| 78 | + __field_pwmwf(wf) |
| 79 | + __field(int, err) |
| 80 | + ), |
| 81 | + |
| 82 | + TP_fast_assign_pwm( |
| 83 | + __entry->wfhw = wfhw; |
| 84 | + fast_assign_pwmwf(wf); |
| 85 | + __entry->err = err; |
| 86 | + ), |
| 87 | + |
| 88 | + TP_printk_pwm("%p > " printk_pwmwf_format(wf) " err=%d", |
| 89 | + __entry->wfhw, printk_pwmwf_formatargs(wf), __entry->err) |
| 90 | +); |
| 91 | + |
| 92 | +TRACE_EVENT(pwm_read_waveform, |
| 93 | + |
| 94 | + TP_PROTO_pwm(void *wfhw, int err), |
| 95 | + |
| 96 | + TP_ARGS_pwm(wfhw, err), |
| 97 | + |
| 98 | + TP_STRUCT__entry_pwm( |
| 99 | + __field(void *, wfhw) |
| 100 | + __field(int, err) |
| 101 | + ), |
| 102 | + |
| 103 | + TP_fast_assign_pwm( |
| 104 | + __entry->wfhw = wfhw; |
| 105 | + __entry->err = err; |
| 106 | + ), |
| 107 | + |
| 108 | + TP_printk_pwm("%p err=%d", |
| 109 | + __entry->wfhw, __entry->err) |
| 110 | +); |
| 111 | + |
| 112 | +TRACE_EVENT(pwm_write_waveform, |
| 113 | + |
| 114 | + TP_PROTO_pwm(const void *wfhw, int err), |
| 115 | + |
| 116 | + TP_ARGS_pwm(wfhw, err), |
| 117 | + |
| 118 | + TP_STRUCT__entry_pwm( |
| 119 | + __field(const void *, wfhw) |
| 120 | + __field(int, err) |
| 121 | + ), |
| 122 | + |
| 123 | + TP_fast_assign_pwm( |
| 124 | + __entry->wfhw = wfhw; |
| 125 | + __entry->err = err; |
| 126 | + ), |
| 127 | + |
| 128 | + TP_printk_pwm("%p err=%d", |
| 129 | + __entry->wfhw, __entry->err) |
| 130 | +); |
| 131 | + |
| 132 | + |
11 | 133 | DECLARE_EVENT_CLASS(pwm,
|
12 | 134 |
|
13 | 135 | TP_PROTO(struct pwm_device *pwm, const struct pwm_state *state, int err),
|
14 | 136 |
|
15 | 137 | TP_ARGS(pwm, state, err),
|
16 | 138 |
|
17 |
| - TP_STRUCT__entry( |
18 |
| - __field(unsigned int, chipid) |
19 |
| - __field(unsigned int, hwpwm) |
| 139 | + TP_STRUCT__entry_pwm( |
20 | 140 | __field(u64, period)
|
21 | 141 | __field(u64, duty_cycle)
|
22 | 142 | __field(enum pwm_polarity, polarity)
|
23 | 143 | __field(bool, enabled)
|
24 | 144 | __field(int, err)
|
25 | 145 | ),
|
26 | 146 |
|
27 |
| - TP_fast_assign( |
28 |
| - __entry->chipid = pwm->chip->id; |
29 |
| - __entry->hwpwm = pwm->hwpwm; |
| 147 | + TP_fast_assign_pwm( |
30 | 148 | __entry->period = state->period;
|
31 | 149 | __entry->duty_cycle = state->duty_cycle;
|
32 | 150 | __entry->polarity = state->polarity;
|
33 | 151 | __entry->enabled = state->enabled;
|
34 | 152 | __entry->err = err;
|
35 | 153 | ),
|
36 | 154 |
|
37 |
| - TP_printk("pwmchip%u.%u: period=%llu duty_cycle=%llu polarity=%d enabled=%d err=%d", |
38 |
| - __entry->chipid, __entry->hwpwm, __entry->period, __entry->duty_cycle, |
| 155 | + TP_printk_pwm("period=%llu duty_cycle=%llu polarity=%d enabled=%d err=%d", |
| 156 | + __entry->period, __entry->duty_cycle, |
39 | 157 | __entry->polarity, __entry->enabled, __entry->err)
|
40 | 158 |
|
41 | 159 | );
|
|
0 commit comments