1b2441318SGreg Kroah-Hartman /* SPDX-License-Identifier: GPL-2.0 */
2dd3f92deSKalle Valo /**
3dd3f92deSKalle Valo   * This header file contains global constant/enum definitions,
4dd3f92deSKalle Valo   * global variable declaration.
5dd3f92deSKalle Valo   */
6dd3f92deSKalle Valo #ifndef _LBS_DEB_DEFS_H_
7dd3f92deSKalle Valo #define _LBS_DEB_DEFS_H_
8dd3f92deSKalle Valo 
9dd3f92deSKalle Valo #ifndef DRV_NAME
10dd3f92deSKalle Valo #define DRV_NAME "libertas_tf"
11dd3f92deSKalle Valo #endif
12dd3f92deSKalle Valo 
13dd3f92deSKalle Valo #include <linux/spinlock.h>
14dd3f92deSKalle Valo 
15dd3f92deSKalle Valo #ifdef CONFIG_LIBERTAS_THINFIRM_DEBUG
16dd3f92deSKalle Valo #define DEBUG
17dd3f92deSKalle Valo #define PROC_DEBUG
18dd3f92deSKalle Valo #endif
19dd3f92deSKalle Valo 
20dd3f92deSKalle Valo #define LBTF_DEB_ENTER	0x00000001
21dd3f92deSKalle Valo #define LBTF_DEB_LEAVE	0x00000002
22dd3f92deSKalle Valo #define LBTF_DEB_MAIN	0x00000004
23dd3f92deSKalle Valo #define LBTF_DEB_NET	0x00000008
24dd3f92deSKalle Valo #define LBTF_DEB_MESH	0x00000010
25dd3f92deSKalle Valo #define LBTF_DEB_WEXT	0x00000020
26dd3f92deSKalle Valo #define LBTF_DEB_IOCTL	0x00000040
27dd3f92deSKalle Valo #define LBTF_DEB_SCAN	0x00000080
28dd3f92deSKalle Valo #define LBTF_DEB_ASSOC	0x00000100
29dd3f92deSKalle Valo #define LBTF_DEB_JOIN	0x00000200
30dd3f92deSKalle Valo #define LBTF_DEB_11D	0x00000400
31dd3f92deSKalle Valo #define LBTF_DEB_DEBUGFS	0x00000800
32dd3f92deSKalle Valo #define LBTF_DEB_ETHTOOL	0x00001000
33dd3f92deSKalle Valo #define LBTF_DEB_HOST	0x00002000
34dd3f92deSKalle Valo #define LBTF_DEB_CMD	0x00004000
35dd3f92deSKalle Valo #define LBTF_DEB_RX	0x00008000
36dd3f92deSKalle Valo #define LBTF_DEB_TX	0x00010000
37dd3f92deSKalle Valo #define LBTF_DEB_USB	0x00020000
38dd3f92deSKalle Valo #define LBTF_DEB_CS	0x00040000
39dd3f92deSKalle Valo #define LBTF_DEB_FW	0x00080000
40dd3f92deSKalle Valo #define LBTF_DEB_THREAD	0x00100000
41dd3f92deSKalle Valo #define LBTF_DEB_HEX	0x00200000
42dd3f92deSKalle Valo #define LBTF_DEB_SDIO	0x00400000
43dd3f92deSKalle Valo #define LBTF_DEB_MACOPS	0x00800000
44dd3f92deSKalle Valo 
45dd3f92deSKalle Valo extern unsigned int lbtf_debug;
46dd3f92deSKalle Valo 
47dd3f92deSKalle Valo 
48dd3f92deSKalle Valo #ifdef DEBUG
49dd3f92deSKalle Valo #define LBTF_DEB_LL(grp, grpnam, fmt, args...) \
50dd3f92deSKalle Valo do { if ((lbtf_debug & (grp)) == (grp)) \
518faee701SSebastian Andrzej Siewior   printk(KERN_DEBUG DRV_NAME grpnam ": " fmt, ## args); } while (0)
52dd3f92deSKalle Valo #else
53dd3f92deSKalle Valo #define LBTF_DEB_LL(grp, grpnam, fmt, args...) do {} while (0)
54dd3f92deSKalle Valo #endif
55dd3f92deSKalle Valo 
56dd3f92deSKalle Valo #define lbtf_deb_enter(grp) \
57dd3f92deSKalle Valo   LBTF_DEB_LL(grp | LBTF_DEB_ENTER, " enter", "%s()\n", __func__);
58dd3f92deSKalle Valo #define lbtf_deb_enter_args(grp, fmt, args...) \
59dd3f92deSKalle Valo   LBTF_DEB_LL(grp | LBTF_DEB_ENTER, " enter", "%s(" fmt ")\n", __func__, ## args);
60dd3f92deSKalle Valo #define lbtf_deb_leave(grp) \
61dd3f92deSKalle Valo   LBTF_DEB_LL(grp | LBTF_DEB_LEAVE, " leave", "%s()\n", __func__);
62dd3f92deSKalle Valo #define lbtf_deb_leave_args(grp, fmt, args...) \
63dd3f92deSKalle Valo   LBTF_DEB_LL(grp | LBTF_DEB_LEAVE, " leave", "%s(), " fmt "\n", \
64dd3f92deSKalle Valo   __func__, ##args);
65dd3f92deSKalle Valo #define lbtf_deb_main(fmt, args...)      LBTF_DEB_LL(LBTF_DEB_MAIN, " main", fmt, ##args)
66dd3f92deSKalle Valo #define lbtf_deb_net(fmt, args...)       LBTF_DEB_LL(LBTF_DEB_NET, " net", fmt, ##args)
67dd3f92deSKalle Valo #define lbtf_deb_mesh(fmt, args...)      LBTF_DEB_LL(LBTF_DEB_MESH, " mesh", fmt, ##args)
68dd3f92deSKalle Valo #define lbtf_deb_wext(fmt, args...)      LBTF_DEB_LL(LBTF_DEB_WEXT, " wext", fmt, ##args)
69dd3f92deSKalle Valo #define lbtf_deb_ioctl(fmt, args...)     LBTF_DEB_LL(LBTF_DEB_IOCTL, " ioctl", fmt, ##args)
70dd3f92deSKalle Valo #define lbtf_deb_scan(fmt, args...)      LBTF_DEB_LL(LBTF_DEB_SCAN, " scan", fmt, ##args)
71dd3f92deSKalle Valo #define lbtf_deb_assoc(fmt, args...)     LBTF_DEB_LL(LBTF_DEB_ASSOC, " assoc", fmt, ##args)
72dd3f92deSKalle Valo #define lbtf_deb_join(fmt, args...)      LBTF_DEB_LL(LBTF_DEB_JOIN, " join", fmt, ##args)
73dd3f92deSKalle Valo #define lbtf_deb_11d(fmt, args...)       LBTF_DEB_LL(LBTF_DEB_11D, " 11d", fmt, ##args)
74dd3f92deSKalle Valo #define lbtf_deb_debugfs(fmt, args...)   LBTF_DEB_LL(LBTF_DEB_DEBUGFS, " debugfs", fmt, ##args)
75dd3f92deSKalle Valo #define lbtf_deb_ethtool(fmt, args...)   LBTF_DEB_LL(LBTF_DEB_ETHTOOL, " ethtool", fmt, ##args)
76dd3f92deSKalle Valo #define lbtf_deb_host(fmt, args...)      LBTF_DEB_LL(LBTF_DEB_HOST, " host", fmt, ##args)
77dd3f92deSKalle Valo #define lbtf_deb_cmd(fmt, args...)       LBTF_DEB_LL(LBTF_DEB_CMD, " cmd", fmt, ##args)
78dd3f92deSKalle Valo #define lbtf_deb_rx(fmt, args...)        LBTF_DEB_LL(LBTF_DEB_RX, " rx", fmt, ##args)
79dd3f92deSKalle Valo #define lbtf_deb_tx(fmt, args...)        LBTF_DEB_LL(LBTF_DEB_TX, " tx", fmt, ##args)
80dd3f92deSKalle Valo #define lbtf_deb_fw(fmt, args...)        LBTF_DEB_LL(LBTF_DEB_FW, " fw", fmt, ##args)
81dd3f92deSKalle Valo #define lbtf_deb_usb(fmt, args...)       LBTF_DEB_LL(LBTF_DEB_USB, " usb", fmt, ##args)
82dd3f92deSKalle Valo #define lbtf_deb_usbd(dev, fmt, args...) LBTF_DEB_LL(LBTF_DEB_USB, " usbd", "%s:" fmt, dev_name(dev), ##args)
83dd3f92deSKalle Valo #define lbtf_deb_cs(fmt, args...)        LBTF_DEB_LL(LBTF_DEB_CS, " cs", fmt, ##args)
84dd3f92deSKalle Valo #define lbtf_deb_thread(fmt, args...)    LBTF_DEB_LL(LBTF_DEB_THREAD, " thread", fmt, ##args)
85dd3f92deSKalle Valo #define lbtf_deb_sdio(fmt, args...)      LBTF_DEB_LL(LBTF_DEB_SDIO, " thread", fmt, ##args)
86dd3f92deSKalle Valo #define lbtf_deb_macops(fmt, args...)      LBTF_DEB_LL(LBTF_DEB_MACOPS, " thread", fmt, ##args)
87dd3f92deSKalle Valo 
88dd3f92deSKalle Valo #ifdef DEBUG
lbtf_deb_hex(unsigned int grp,const char * prompt,u8 * buf,int len)89dd3f92deSKalle Valo static inline void lbtf_deb_hex(unsigned int grp, const char *prompt, u8 *buf, int len)
90dd3f92deSKalle Valo {
91dd3f92deSKalle Valo 	char newprompt[32];
92dd3f92deSKalle Valo 
93dd3f92deSKalle Valo 	if (len &&
94dd3f92deSKalle Valo 	    (lbtf_debug & LBTF_DEB_HEX) &&
95dd3f92deSKalle Valo 	    (lbtf_debug & grp))	{
96dd3f92deSKalle Valo 		snprintf(newprompt, sizeof(newprompt), DRV_NAME " %s: ", prompt);
97dd3f92deSKalle Valo 		print_hex_dump_bytes(prompt, DUMP_PREFIX_NONE, buf, len);
98dd3f92deSKalle Valo 	}
99dd3f92deSKalle Valo }
100dd3f92deSKalle Valo #else
101dd3f92deSKalle Valo #define lbtf_deb_hex(grp, prompt, buf, len)	do {} while (0)
102dd3f92deSKalle Valo #endif
103dd3f92deSKalle Valo 
104dd3f92deSKalle Valo #endif
105