]> rtime.felk.cvut.cz Git - sojka/nv-tegra/linux-3.10.git/blob - drivers/staging/ozwpan/oztrace.c
Revert "staging: ozwpan: enable some debug trace print"
[sojka/nv-tegra/linux-3.10.git] / drivers / staging / ozwpan / oztrace.c
1 /* -----------------------------------------------------------------------------
2  * Copyright (c) 2011 Ozmo Inc
3  * Released under the GNU General Public License Version 2 (GPLv2).
4  * -----------------------------------------------------------------------------
5  */
6 #include "oztrace.h"
7 #define CREATE_TRACE_POINTS
8 #include "ozeventtrace.h"
9
10 #define OZ_TRACE_DUMP_SKB_LEN_MAX 32
11 #define OZ_TRACE_DUMP_URB_LEN_MAX 16
12
13 u32 g_debug =
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);
17 #else
18         0;
19 #endif
20
21 void (*func[]) (char *fmt, va_list arg) = {
22         trace_hcd_msg_evt,
23         trace_isoc_msg_evt,
24         trace_info_msg_evt
25 };
26
27 void oz_dump_data(char *buf, unsigned char *data, int len, int lmt)
28 {
29         int i = 0;
30         if (len > lmt)
31                 len = lmt;
32         while (len--) {
33                 *buf = (*data>>4) + '0';
34                 if (*data > (0xA0-1))
35                         *buf += 'A' - '9' - 1;
36                 *++buf = (*data++&0xF) + '0';
37                 if (*buf > '9')
38                         *buf += 'A' - '9' - 1;
39                 if (buf++ && !(++i%4))
40                         *buf++ = ' ';
41         }
42         *buf++ = '\n';
43         *buf   = 0;
44 }
45
46 void oz_trace_f_urb_in(struct urb *urb)
47 {
48         int  i = 0;
49         char buf[128*2];
50         int endpoint = usb_pipeendpoint(urb->pipe);
51
52         if (usb_pipein(urb->pipe))
53                 endpoint |= 0x80;
54
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);
59
60                 oz_dump_data(&buf[i], urb->setup_packet, 8, 8);
61
62         } else {
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);
70
71                 } else {
72                         oz_dump_data(&buf[i], NULL, 0, 0);
73                 }
74
75         }
76         printk(buf);
77 }
78
79 void oz_trace_f_urb_out(struct urb *urb, int status)
80 {
81         int  i = 0;
82         char buf[128*2];
83         int endpoint = usb_pipeendpoint(urb->pipe);
84         int length = urb->actual_length;
85
86         if (usb_pipeisoc(urb->pipe))
87                 length = urb->transfer_buffer_length;
88
89         if (usb_pipein(urb->pipe))
90                 endpoint |= 0x80;
91
92         if (status != 0) {
93                 printk("OZ E %08X %08X\n",
94                         (unsigned int)((uintptr_t)urb), status);
95         } else {
96                 i += sprintf(&buf[i], "OZ C %08X %02X %02X ",
97                         (unsigned int)((uintptr_t)urb),
98                         endpoint, urb->actual_length);
99
100                 if (usb_pipein(urb->pipe)) {
101                         oz_dump_data(&buf[i],
102                         (u8 *)(urb->transfer_buffer),
103                         urb->actual_length,
104                         OZ_TRACE_DUMP_URB_LEN_MAX);
105                 } else {
106                         oz_dump_data(&buf[i], NULL, 0, 0);
107                 }
108                 printk(buf);
109         }
110 }
111
112 void oz_trace_f_skb(struct sk_buff *skb, char dir)
113 {
114         int  i = 0;
115         char buf[128*2];
116         int len = skb->len;
117
118         if (dir == 'T')
119                 len -= 14;
120
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);
124         printk(buf);
125 }
126
127 void oz_trace_f_dbg(void)
128 {
129 }
130
131 void trace_dbg_msg(int c, char *fmt, ...)
132 {
133         va_list arg;
134
135         va_start(arg, fmt);
136         func[c](fmt, arg);
137         va_end(arg);
138 }
139
140 void trace_debug_log(char log_type, ...)
141 {
142         va_list arg;
143         char *fmt;
144
145         va_start(arg, log_type);
146         fmt = va_arg(arg, char *);
147         switch (log_type) {
148         case 'H':
149                 trace_hcd_msg_evt(fmt, arg);
150                 break;
151         case 'I':
152                 trace_isoc_msg_evt(fmt, arg);
153                 break;
154          default:
155                 trace_info_msg_evt(fmt, arg);
156                 break;
157         }
158         va_end(arg);
159 }