1 /* 2 * This file is part of wl12xx 3 * 4 * Copyright (C) 2011 Texas Instruments. All rights reserved. 5 * Copyright (C) 2008-2009 Nokia Corporation 6 * 7 * Contact: Luciano Coelho <coelho@ti.com> 8 * 9 * This program is free software; you can redistribute it and/or 10 * modify it under the terms of the GNU General Public License 11 * version 2 as published by the Free Software Foundation. 12 * 13 * This program is distributed in the hope that it will be useful, but 14 * WITHOUT ANY WARRANTY; without even the implied warranty of 15 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU 16 * General Public License for more details. 17 * 18 * You should have received a copy of the GNU General Public License 19 * along with this program; if not, write to the Free Software 20 * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 21 * 02110-1301 USA 22 * 23 */ 24 25 #ifndef __DEBUG_H__ 26 #define __DEBUG_H__ 27 28 #include <linux/bitops.h> 29 #include <linux/printk.h> 30 31 #define DRIVER_NAME "wl12xx" 32 #define DRIVER_PREFIX DRIVER_NAME ": " 33 34 enum { 35 DEBUG_NONE = 0, 36 DEBUG_IRQ = BIT(0), 37 DEBUG_SPI = BIT(1), 38 DEBUG_BOOT = BIT(2), 39 DEBUG_MAILBOX = BIT(3), 40 DEBUG_TESTMODE = BIT(4), 41 DEBUG_EVENT = BIT(5), 42 DEBUG_TX = BIT(6), 43 DEBUG_RX = BIT(7), 44 DEBUG_SCAN = BIT(8), 45 DEBUG_CRYPT = BIT(9), 46 DEBUG_PSM = BIT(10), 47 DEBUG_MAC80211 = BIT(11), 48 DEBUG_CMD = BIT(12), 49 DEBUG_ACX = BIT(13), 50 DEBUG_SDIO = BIT(14), 51 DEBUG_FILTERS = BIT(15), 52 DEBUG_ADHOC = BIT(16), 53 DEBUG_AP = BIT(17), 54 DEBUG_PROBE = BIT(18), 55 DEBUG_IO = BIT(19), 56 DEBUG_MASTER = (DEBUG_ADHOC | DEBUG_AP), 57 DEBUG_ALL = ~0, 58 }; 59 60 extern u32 wl12xx_debug_level; 61 62 #define DEBUG_DUMP_LIMIT 1024 63 64 #define wl1271_error(fmt, arg...) \ 65 pr_err(DRIVER_PREFIX "ERROR " fmt "\n", ##arg) 66 67 #define wl1271_warning(fmt, arg...) \ 68 pr_warning(DRIVER_PREFIX "WARNING " fmt "\n", ##arg) 69 70 #define wl1271_notice(fmt, arg...) \ 71 pr_info(DRIVER_PREFIX fmt "\n", ##arg) 72 73 #define wl1271_info(fmt, arg...) \ 74 pr_info(DRIVER_PREFIX fmt "\n", ##arg) 75 76 #define wl1271_debug(level, fmt, arg...) \ 77 do { \ 78 if (level & wl12xx_debug_level) \ 79 pr_debug(DRIVER_PREFIX fmt "\n", ##arg); \ 80 } while (0) 81 82 /* TODO: use pr_debug_hex_dump when it becomes available */ 83 #define wl1271_dump(level, prefix, buf, len) \ 84 do { \ 85 if (level & wl12xx_debug_level) \ 86 print_hex_dump(KERN_DEBUG, DRIVER_PREFIX prefix, \ 87 DUMP_PREFIX_OFFSET, 16, 1, \ 88 buf, \ 89 min_t(size_t, len, DEBUG_DUMP_LIMIT), \ 90 0); \ 91 } while (0) 92 93 #define wl1271_dump_ascii(level, prefix, buf, len) \ 94 do { \ 95 if (level & wl12xx_debug_level) \ 96 print_hex_dump(KERN_DEBUG, DRIVER_PREFIX prefix, \ 97 DUMP_PREFIX_OFFSET, 16, 1, \ 98 buf, \ 99 min_t(size_t, len, DEBUG_DUMP_LIMIT), \ 100 true); \ 101 } while (0) 102 103 #endif /* __DEBUG_H__ */ 104