Revert "Remove support for xpp drivers."
[dahdi/linux.git] / drivers / dahdi / xpp / dahdi_debug.h
1 #ifndef DAHDI_DEBUG_H
2 #define DAHDI_DEBUG_H
3 /*
4  * Written by Oron Peled <oron@actcom.co.il>
5  * Copyright (C) 2004-2006, Xorcom
6  *
7  * All rights reserved.
8  *
9  * This program is free software; you can redistribute it and/or modify
10  * it under the terms of the GNU General Public License as published by
11  * the Free Software Foundation; either version 2 of the License, or
12  * (at your option) any later version.
13  *
14  * This program is distributed in the hope that it will be useful,
15  * but WITHOUT ANY WARRANTY; without even the implied warranty of
16  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
17  * GNU General Public License for more details.
18  *
19  * You should have received a copy of the GNU General Public License
20  * along with this program; if not, write to the Free Software
21  * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
22  *
23  */
24
25 #include <dahdi/kernel.h>       /* for dahdi_* defs */
26
27 /* Debugging Macros */
28
29 #define PRINTK(level, category, fmt, ...) \
30         printk(KERN_ ## level "%s%s-%s: " fmt, \
31         #level, category, THIS_MODULE->name, ## __VA_ARGS__)
32
33 #define XBUS_PRINTK(level, category, xbus, fmt, ...) \
34         printk(KERN_ ## level "%s%s-%s: %s: " fmt, #level, \
35                 category, THIS_MODULE->name, (xbus)->busname, ## __VA_ARGS__)
36
37 #define XPD_PRINTK(level, category, xpd, fmt, ...) \
38         printk(KERN_ ## level "%s%s-%s: %s/%s: " fmt, #level, \
39                 category, THIS_MODULE->name, \
40                 (xpd)->xbus->busname, (xpd)->xpdname, ## __VA_ARGS__)
41
42 #define LINE_PRINTK(level, category, xpd, pos, fmt, ...) \
43         printk(KERN_ ## level "%s%s-%s: %s/%s/%d: " fmt, #level, \
44                 category, THIS_MODULE->name, \
45                 (xpd)->xbus->busname, (xpd)->xpdname, (pos), ## __VA_ARGS__)
46
47 #define PORT_PRINTK(level, category, xbus, unit, port, fmt, ...) \
48         printk(KERN_ ## level "%s%s-%s: %s UNIT=%d PORT=%d: " fmt, #level, \
49                 category, THIS_MODULE->name, \
50                 (xbus)->busname, (unit), (port), ## __VA_ARGS__)
51
52 #define DBG(bits, fmt, ...) \
53         ((void)((debug & (DBG_ ## bits)) && \
54                 PRINTK(DEBUG, "-" #bits, "%s: " fmt, \
55                 __func__, ## __VA_ARGS__)))
56 #define INFO(fmt, ...)          PRINTK(INFO, "", fmt, ## __VA_ARGS__)
57 #define NOTICE(fmt, ...)        PRINTK(NOTICE, "", fmt, ## __VA_ARGS__)
58 #define WARNING(fmt, ...)       PRINTK(WARNING, "", fmt, ## __VA_ARGS__)
59 #define ERR(fmt, ...)           PRINTK(ERR, "", fmt, ## __VA_ARGS__)
60
61 #define XBUS_DBG(bits, xbus, fmt, ...) \
62         ((void)((debug & (DBG_ ## bits)) && XBUS_PRINTK(DEBUG, "-" #bits, \
63         xbus, "%s: " fmt, __func__, ## __VA_ARGS__)))
64 #define XBUS_INFO(xbus, fmt, ...) \
65                 XBUS_PRINTK(INFO, "", xbus, fmt, ## __VA_ARGS__)
66 #define XBUS_NOTICE(xbus, fmt, ...) \
67                 XBUS_PRINTK(NOTICE, "", xbus, fmt, ## __VA_ARGS__)
68 #define XBUS_ERR(xbus, fmt, ...) \
69                 XBUS_PRINTK(ERR, "", xbus, fmt, ## __VA_ARGS__)
70
71 #define XPD_DBG(bits, xpd, fmt, ...) \
72         ((void)((debug & (DBG_ ## bits)) && XPD_PRINTK(DEBUG, "-" #bits, \
73         xpd, "%s: " fmt, __func__, ## __VA_ARGS__)))
74 #define XPD_INFO(xpd, fmt, ...) \
75                 XPD_PRINTK(INFO, "", xpd, fmt, ## __VA_ARGS__)
76 #define XPD_NOTICE(xpd, fmt, ...) \
77                 XPD_PRINTK(NOTICE, "", xpd, fmt, ## __VA_ARGS__)
78 #define XPD_WARNING(xpd, fmt, ...) \
79                 XPD_PRINTK(WARNING, "", xpd, fmt, ## __VA_ARGS__)
80 #define XPD_ERR(xpd, fmt, ...) \
81                 XPD_PRINTK(ERR, "", xpd, fmt, ## __VA_ARGS__)
82
83 #define LINE_DBG(bits, xpd, pos, fmt, ...) \
84         ((void)((debug & (DBG_ ## bits)) && LINE_PRINTK(DEBUG, "-" #bits, \
85         xpd, pos, "%s: " fmt, __func__, ## __VA_ARGS__)))
86 #define LINE_NOTICE(xpd, pos, fmt, ...) \
87                 LINE_PRINTK(NOTICE, "", xpd, pos, fmt, ## __VA_ARGS__)
88 #define LINE_ERR(xpd, pos, fmt, ...) \
89                 LINE_PRINTK(ERR, "", xpd, pos, fmt, ## __VA_ARGS__)
90
91 #define PORT_DBG(bits, xbus, unit, port, fmt, ...) \
92                 ((void)((debug & (DBG_ ## bits)) && \
93                 PORT_PRINTK(DEBUG, "-" #bits, \
94                 xbus, unit, port, "%s: " fmt, __func__, ## __VA_ARGS__)))
95 #define PORT_NOTICE(xbus, unit, port, fmt, ...) \
96                 PORT_PRINTK(NOTICE, "", xbus, unit, port, fmt, ## __VA_ARGS__)
97 #define PORT_ERR(xbus, unit, port, fmt, ...) \
98                 PORT_PRINTK(ERR, "", xbus, unit, port, fmt, ## __VA_ARGS__)
99
100 /*
101  * Bits for debug
102  */
103 #define DBG_GENERAL     BIT(0)
104 #define DBG_PCM         BIT(1)
105 #define DBG_LEDS        BIT(2)
106 #define DBG_SYNC        BIT(3)
107 #define DBG_SIGNAL      BIT(4)
108 #define DBG_PROC        BIT(5)
109 #define DBG_REGS        BIT(6)
110 #define DBG_DEVICES     BIT(7)  /* instantiation/destruction etc. */
111 #define DBG_COMMANDS    BIT(8)  /* All commands */
112 #define DBG_ANY         (~0)
113
114 void dump_poll(int debug, const char *msg, int poll);
115
116 static inline char *rxsig2str(enum dahdi_rxsig sig)
117 {
118         switch (sig) {
119         case DAHDI_RXSIG_ONHOOK:
120                 return "ONHOOK";
121         case DAHDI_RXSIG_OFFHOOK:
122                 return "OFFHOOK";
123         case DAHDI_RXSIG_START:
124                 return "START";
125         case DAHDI_RXSIG_RING:
126                 return "RING";
127         case DAHDI_RXSIG_INITIAL:
128                 return "INITIAL";
129         }
130         return "Unknown rxsig";
131 }
132
133 static inline char *txsig2str(enum dahdi_txsig sig)
134 {
135         switch (sig) {
136         case DAHDI_TXSIG_ONHOOK:
137                 return "TXSIG_ONHOOK";
138         case DAHDI_TXSIG_OFFHOOK:
139                 return "TXSIG_OFFHOOK";
140         case DAHDI_TXSIG_START:
141                 return "TXSIG_START";
142         case DAHDI_TXSIG_KEWL:
143                 return "TXSIG_KEWL";    /* Drop battery if possible */
144         case DAHDI_TXSIG_TOTAL:
145                 break;
146         }
147         return "Unknown txsig";
148 }
149
150 static inline char *event2str(int event)
151 {
152         switch (event) {
153         case DAHDI_EVENT_NONE:
154                 return "NONE";
155         case DAHDI_EVENT_ONHOOK:
156                 return "ONHOOK";
157         case DAHDI_EVENT_RINGOFFHOOK:
158                 return "RINGOFFHOOK";
159         case DAHDI_EVENT_WINKFLASH:
160                 return "WINKFLASH";
161         case DAHDI_EVENT_ALARM:
162                 return "ALARM";
163         case DAHDI_EVENT_NOALARM:
164                 return "NOALARM";
165         case DAHDI_EVENT_ABORT:
166                 return "ABORT";
167         case DAHDI_EVENT_OVERRUN:
168                 return "OVERRUN";
169         case DAHDI_EVENT_BADFCS:
170                 return "BADFCS";
171         case DAHDI_EVENT_DIALCOMPLETE:
172                 return "DIALCOMPLETE";
173         case DAHDI_EVENT_RINGERON:
174                 return "RINGERON";
175         case DAHDI_EVENT_RINGEROFF:
176                 return "RINGEROFF";
177         case DAHDI_EVENT_HOOKCOMPLETE:
178                 return "HOOKCOMPLETE";
179         case DAHDI_EVENT_BITSCHANGED:
180                 return "BITSCHANGED";
181         case DAHDI_EVENT_PULSE_START:
182                 return "PULSE_START";
183         case DAHDI_EVENT_TIMER_EXPIRED:
184                 return "TIMER_EXPIRED";
185         case DAHDI_EVENT_TIMER_PING:
186                 return "TIMER_PING";
187         case DAHDI_EVENT_POLARITY:
188                 return "POLARITY";
189         }
190         return "Unknown event";
191 }
192
193 static inline char *hookstate2str(int hookstate)
194 {
195         switch (hookstate) {
196         case DAHDI_ONHOOK:
197                 return "DAHDI_ONHOOK";
198         case DAHDI_START:
199                 return "DAHDI_START";
200         case DAHDI_OFFHOOK:
201                 return "DAHDI_OFFHOOK";
202         case DAHDI_WINK:
203                 return "DAHDI_WINK";
204         case DAHDI_FLASH:
205                 return "DAHDI_FLASH";
206         case DAHDI_RING:
207                 return "DAHDI_RING";
208         case DAHDI_RINGOFF:
209                 return "DAHDI_RINGOFF";
210         }
211         return "Unknown hookstate";
212 }
213
214 /* From dahdi-base.c */
215 static inline char *sig2str(int sig)
216 {
217         switch (sig) {
218         case DAHDI_SIG_FXSLS:
219                 return "FXSLS";
220         case DAHDI_SIG_FXSKS:
221                 return "FXSKS";
222         case DAHDI_SIG_FXSGS:
223                 return "FXSGS";
224         case DAHDI_SIG_FXOLS:
225                 return "FXOLS";
226         case DAHDI_SIG_FXOKS:
227                 return "FXOKS";
228         case DAHDI_SIG_FXOGS:
229                 return "FXOGS";
230         case DAHDI_SIG_EM:
231                 return "E&M";
232         case DAHDI_SIG_EM_E1:
233                 return "E&M-E1";
234         case DAHDI_SIG_CLEAR:
235                 return "Clear";
236         case DAHDI_SIG_HDLCRAW:
237                 return "HDLCRAW";
238         case DAHDI_SIG_HDLCFCS:
239                 return "HDLCFCS";
240         case DAHDI_SIG_HDLCNET:
241                 return "HDLCNET";
242         case DAHDI_SIG_SLAVE:
243                 return "Slave";
244         case DAHDI_SIG_CAS:
245                 return "CAS";
246         case DAHDI_SIG_DACS:
247                 return "DACS";
248         case DAHDI_SIG_DACS_RBS:
249                 return "DACS+RBS";
250         case DAHDI_SIG_SF:
251                 return "SF (ToneOnly)";
252         case DAHDI_SIG_NONE:
253                 break;
254         }
255         return "Unconfigured";
256 }
257
258 static inline char *alarmbit2str(int alarmbit)
259 {
260         /* from dahdi/kernel.h */
261         switch (1 << alarmbit) {
262         case DAHDI_ALARM_NONE:
263                 return "NONE";
264         case DAHDI_ALARM_RECOVER:
265                 return "RECOVER";
266         case DAHDI_ALARM_LOOPBACK:
267                 return "LOOPBACK";
268         case DAHDI_ALARM_YELLOW:
269                 return "YELLOW";
270         case DAHDI_ALARM_RED:
271                 return "RED";
272         case DAHDI_ALARM_BLUE:
273                 return "BLUE";
274         case DAHDI_ALARM_NOTOPEN:
275                 return "NOTOPEN";
276         }
277         return "UNKNOWN";
278 }
279
280 void alarm2str(int alarm, char *buf, int buflen);
281
282 #endif /* DAHDI_DEBUG_H */