105491d2cSKalle Valo /*
205491d2cSKalle Valo  * Copyright (c) 2012 Broadcom Corporation
305491d2cSKalle Valo  * Copyright (c) 2012 Canonical Ltd.
405491d2cSKalle Valo  *
505491d2cSKalle Valo  * Permission to use, copy, modify, and/or distribute this software for any
605491d2cSKalle Valo  * purpose with or without fee is hereby granted, provided that the above
705491d2cSKalle Valo  * copyright notice and this permission notice appear in all copies.
805491d2cSKalle Valo  *
905491d2cSKalle Valo  * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
1005491d2cSKalle Valo  * WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
1105491d2cSKalle Valo  * MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY
1205491d2cSKalle Valo  * SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
1305491d2cSKalle Valo  * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION
1405491d2cSKalle Valo  * OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN
1505491d2cSKalle Valo  * CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
1605491d2cSKalle Valo  */
1705491d2cSKalle Valo #ifndef _BRCMS_DEBUG_H_
1805491d2cSKalle Valo #define _BRCMS_DEBUG_H_
1905491d2cSKalle Valo 
2005491d2cSKalle Valo #include <linux/device.h>
2105491d2cSKalle Valo #include <linux/bcma/bcma.h>
2205491d2cSKalle Valo #include <net/cfg80211.h>
2305491d2cSKalle Valo #include <net/mac80211.h>
2405491d2cSKalle Valo #include "main.h"
2505491d2cSKalle Valo #include "mac80211_if.h"
2605491d2cSKalle Valo 
2705491d2cSKalle Valo __printf(2, 3)
2805491d2cSKalle Valo void __brcms_info(struct device *dev, const char *fmt, ...);
2905491d2cSKalle Valo __printf(2, 3)
3005491d2cSKalle Valo void __brcms_warn(struct device *dev, const char *fmt, ...);
3105491d2cSKalle Valo __printf(2, 3)
3205491d2cSKalle Valo void __brcms_err(struct device *dev, const char *fmt, ...);
3305491d2cSKalle Valo __printf(2, 3)
3405491d2cSKalle Valo void __brcms_crit(struct device *dev, const char *fmt, ...);
3505491d2cSKalle Valo 
3605491d2cSKalle Valo #if defined(CONFIG_BRCMDBG) || defined(CONFIG_BRCM_TRACING)
3705491d2cSKalle Valo __printf(4, 5)
3805491d2cSKalle Valo void __brcms_dbg(struct device *dev, u32 level, const char *func,
3905491d2cSKalle Valo 		 const char *fmt, ...);
4005491d2cSKalle Valo #else
4105491d2cSKalle Valo static inline __printf(4, 5)
__brcms_dbg(struct device * dev,u32 level,const char * func,const char * fmt,...)4205491d2cSKalle Valo void __brcms_dbg(struct device *dev, u32 level, const char *func,
4305491d2cSKalle Valo 		 const char *fmt, ...)
4405491d2cSKalle Valo {
4505491d2cSKalle Valo }
4605491d2cSKalle Valo #endif
4705491d2cSKalle Valo 
4805491d2cSKalle Valo /*
4905491d2cSKalle Valo  * Debug macros cannot be used when wlc is uninitialized. Generally
5005491d2cSKalle Valo  * this means any code that could run before brcms_c_attach() has
5105491d2cSKalle Valo  * returned successfully probably shouldn't use the following macros.
5205491d2cSKalle Valo  */
5305491d2cSKalle Valo 
5405491d2cSKalle Valo #define brcms_dbg(core, l, f, a...)	__brcms_dbg(&(core)->dev, l, __func__, f, ##a)
5505491d2cSKalle Valo #define brcms_info(core, f, a...)	__brcms_info(&(core)->dev, f, ##a)
5605491d2cSKalle Valo #define brcms_warn(core, f, a...)	__brcms_warn(&(core)->dev, f, ##a)
5705491d2cSKalle Valo #define brcms_err(core, f, a...)	__brcms_err(&(core)->dev, f, ##a)
5805491d2cSKalle Valo #define brcms_crit(core, f, a...)	__brcms_crit(&(core)->dev, f, ##a)
5905491d2cSKalle Valo 
6005491d2cSKalle Valo #define brcms_dbg_info(core, f, a...)		brcms_dbg(core, BRCM_DL_INFO, f, ##a)
6105491d2cSKalle Valo #define brcms_dbg_mac80211(core, f, a...)	brcms_dbg(core, BRCM_DL_MAC80211, f, ##a)
6205491d2cSKalle Valo #define brcms_dbg_rx(core, f, a...)		brcms_dbg(core, BRCM_DL_RX, f, ##a)
6305491d2cSKalle Valo #define brcms_dbg_tx(core, f, a...)		brcms_dbg(core, BRCM_DL_TX, f, ##a)
6405491d2cSKalle Valo #define brcms_dbg_int(core, f, a...)		brcms_dbg(core, BRCM_DL_INT, f, ##a)
6505491d2cSKalle Valo #define brcms_dbg_dma(core, f, a...)		brcms_dbg(core, BRCM_DL_DMA, f, ##a)
6605491d2cSKalle Valo #define brcms_dbg_ht(core, f, a...)		brcms_dbg(core, BRCM_DL_HT, f, ##a)
6705491d2cSKalle Valo 
6805491d2cSKalle Valo struct brcms_pub;
6905491d2cSKalle Valo void brcms_debugfs_init(void);
7005491d2cSKalle Valo void brcms_debugfs_exit(void);
719ae49980SGreg Kroah-Hartman void brcms_debugfs_attach(struct brcms_pub *drvr);
7205491d2cSKalle Valo void brcms_debugfs_detach(struct brcms_pub *drvr);
7305491d2cSKalle Valo struct dentry *brcms_debugfs_get_devdir(struct brcms_pub *drvr);
7405491d2cSKalle Valo void brcms_debugfs_create_files(struct brcms_pub *drvr);
7505491d2cSKalle Valo 
7605491d2cSKalle Valo #endif /* _BRCMS_DEBUG_H_ */
77