1 /* -----------------------------------------------------------------------------
2 * Copyright (c) 2011 Ozmo Inc
3 * Released under the GNU General Public License Version 2 (GPLv2).
4 * -----------------------------------------------------------------------------
7 #define CREATE_TRACE_POINTS
8 #include "ozeventtrace.h"
10 #define OZ_TRACE_DUMP_SKB_LEN_MAX 32
11 #define OZ_TRACE_DUMP_URB_LEN_MAX 16
14 #ifdef WANT_TRACE_DATA_FLOW
15 TRC_FLG(M)|TRC_FLG(R)|TRC_FLG(T)|
16 TRC_FLG(S)|TRC_FLG(E)|TRC_FLG(C);
21 void (*func[]) (char *fmt, va_list arg) = {
27 void oz_dump_data(char *buf, unsigned char *data, int len, int lmt)
33 *buf = (*data>>4) + '0';
35 *buf += 'A' - '9' - 1;
36 *++buf = (*data++&0xF) + '0';
38 *buf += 'A' - '9' - 1;
39 if (buf++ && !(++i%4))
46 void oz_trace_f_urb_in(struct urb *urb)
50 int endpoint = usb_pipeendpoint(urb->pipe);
52 if (usb_pipein(urb->pipe))
55 if (endpoint == 0x00 || endpoint == 0x80) {
56 i += sprintf(&buf[i], "OZ S %08X %02X %02X ",
57 (unsigned int)((uintptr_t)urb), endpoint,
58 urb->transfer_buffer_length);
60 oz_dump_data(&buf[i], urb->setup_packet, 8, 8);
63 i += sprintf(&buf[i], "OZ S %08X %02X %02X ",
64 (unsigned int)((uintptr_t)urb), endpoint,
65 urb->transfer_buffer_length);
66 if (!usb_pipein(urb->pipe)) {
67 oz_dump_data(&buf[i], (u8 *)(urb->transfer_buffer),
68 urb->transfer_buffer_length,
69 OZ_TRACE_DUMP_URB_LEN_MAX);
72 oz_dump_data(&buf[i], NULL, 0, 0);
79 void oz_trace_f_urb_out(struct urb *urb, int status)
83 int endpoint = usb_pipeendpoint(urb->pipe);
84 int length = urb->actual_length;
86 if (usb_pipeisoc(urb->pipe))
87 length = urb->transfer_buffer_length;
89 if (usb_pipein(urb->pipe))
93 printk("OZ E %08X %08X\n",
94 (unsigned int)((uintptr_t)urb), status);
96 i += sprintf(&buf[i], "OZ C %08X %02X %02X ",
97 (unsigned int)((uintptr_t)urb),
98 endpoint, urb->actual_length);
100 if (usb_pipein(urb->pipe)) {
101 oz_dump_data(&buf[i],
102 (u8 *)(urb->transfer_buffer),
104 OZ_TRACE_DUMP_URB_LEN_MAX);
106 oz_dump_data(&buf[i], NULL, 0, 0);
112 void oz_trace_f_skb(struct sk_buff *skb, char dir)
121 i += sprintf(&buf[i], "OZ %c %04X ", dir, len);
122 oz_dump_data(&buf[i], (u8 *)skb_network_header(skb),
123 len, OZ_TRACE_DUMP_SKB_LEN_MAX);
127 void oz_trace_f_dbg(void)
131 void trace_dbg_msg(int c, char *fmt, ...)
140 void trace_debug_log(char log_type, ...)
145 va_start(arg, log_type);
146 fmt = va_arg(arg, char *);
149 trace_hcd_msg_evt(fmt, arg);
152 trace_isoc_msg_evt(fmt, arg);
155 trace_info_msg_evt(fmt, arg);