1 /* SPDX-License-Identifier: GPL-2.0-only */ 2 /* 3 * This file is part of wl12xx 4 * 5 * Copyright (C) 2011 Texas Instruments. All rights reserved. 6 * Copyright (C) 2008-2009 Nokia Corporation 7 * 8 * Contact: Luciano Coelho <coelho@ti.com> 9 */ 10 11 #ifndef __DEBUG_H__ 12 #define __DEBUG_H__ 13 14 #include <linux/bitops.h> 15 #include <linux/printk.h> 16 17 #define DRIVER_NAME "wlcore" 18 #define DRIVER_PREFIX DRIVER_NAME ": " 19 20 enum { 21 DEBUG_NONE = 0, 22 DEBUG_IRQ = BIT(0), 23 DEBUG_SPI = BIT(1), 24 DEBUG_BOOT = BIT(2), 25 DEBUG_MAILBOX = BIT(3), 26 DEBUG_TESTMODE = BIT(4), 27 DEBUG_EVENT = BIT(5), 28 DEBUG_TX = BIT(6), 29 DEBUG_RX = BIT(7), 30 DEBUG_SCAN = BIT(8), 31 DEBUG_CRYPT = BIT(9), 32 DEBUG_PSM = BIT(10), 33 DEBUG_MAC80211 = BIT(11), 34 DEBUG_CMD = BIT(12), 35 DEBUG_ACX = BIT(13), 36 DEBUG_SDIO = BIT(14), 37 DEBUG_FILTERS = BIT(15), 38 DEBUG_ADHOC = BIT(16), 39 DEBUG_AP = BIT(17), 40 DEBUG_PROBE = BIT(18), 41 DEBUG_IO = BIT(19), 42 DEBUG_MASTER = (DEBUG_ADHOC | DEBUG_AP), 43 DEBUG_ALL = ~0, 44 }; 45 46 extern u32 wl12xx_debug_level; 47 48 #define DEBUG_DUMP_LIMIT 1024 49 50 #define wl1271_error(fmt, arg...) \ 51 pr_err(DRIVER_PREFIX "ERROR " fmt "\n", ##arg) 52 53 #define wl1271_warning(fmt, arg...) \ 54 pr_warn(DRIVER_PREFIX "WARNING " fmt "\n", ##arg) 55 56 #define wl1271_notice(fmt, arg...) \ 57 pr_info(DRIVER_PREFIX fmt "\n", ##arg) 58 59 #define wl1271_info(fmt, arg...) \ 60 pr_info(DRIVER_PREFIX fmt "\n", ##arg) 61 62 /* define the debug macro differently if dynamic debug is supported */ 63 #if defined(CONFIG_DYNAMIC_DEBUG) 64 #define wl1271_debug(level, fmt, arg...) \ 65 do { \ 66 if (unlikely(level & wl12xx_debug_level)) \ 67 dynamic_pr_debug(DRIVER_PREFIX fmt "\n", ##arg); \ 68 } while (0) 69 #else 70 #define wl1271_debug(level, fmt, arg...) \ 71 do { \ 72 if (unlikely(level & wl12xx_debug_level)) \ 73 printk(KERN_DEBUG pr_fmt(DRIVER_PREFIX fmt "\n"), \ 74 ##arg); \ 75 } while (0) 76 #endif 77 78 #define wl1271_dump(level, prefix, buf, len) \ 79 do { \ 80 if (level & wl12xx_debug_level) \ 81 print_hex_dump_debug(DRIVER_PREFIX prefix, \ 82 DUMP_PREFIX_OFFSET, 16, 1, \ 83 buf, \ 84 min_t(size_t, len, DEBUG_DUMP_LIMIT), \ 85 0); \ 86 } while (0) 87 88 #define wl1271_dump_ascii(level, prefix, buf, len) \ 89 do { \ 90 if (level & wl12xx_debug_level) \ 91 print_hex_dump_debug(DRIVER_PREFIX prefix, \ 92 DUMP_PREFIX_OFFSET, 16, 1, \ 93 buf, \ 94 min_t(size_t, len, DEBUG_DUMP_LIMIT), \ 95 true); \ 96 } while (0) 97 98 #endif /* __DEBUG_H__ */ 99