123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172 |
- /*
- * iwmc3200top - Intel Wireless MultiCom 3200 Top Driver
- * drivers/misc/iwmc3200top/log.h
- *
- * Copyright (C) 2009 Intel Corporation. All rights reserved.
- *
- * This program is free software; you can redistribute it and/or
- * modify it under the terms of the GNU General Public License version
- * 2 as published by the Free Software Foundation.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
- * 02110-1301, USA.
- *
- *
- * Author Name: Maxim Grabarnik <maxim.grabarnink@intel.com>
- * -
- *
- */
- #ifndef __LOG_H__
- #define __LOG_H__
- /* log severity:
- * The log levels here match FW log levels
- * so values need to stay as is */
- #define LOG_SEV_CRITICAL 0
- #define LOG_SEV_ERROR 1
- #define LOG_SEV_WARNING 2
- #define LOG_SEV_INFO 3
- #define LOG_SEV_INFOEX 4
- /* Log levels not defined for FW */
- #define LOG_SEV_TRACE 5
- #define LOG_SEV_DUMP 6
- #define LOG_SEV_FW_FILTER_ALL \
- (BIT(LOG_SEV_CRITICAL) | \
- BIT(LOG_SEV_ERROR) | \
- BIT(LOG_SEV_WARNING) | \
- BIT(LOG_SEV_INFO) | \
- BIT(LOG_SEV_INFOEX))
- #define LOG_SEV_FILTER_ALL \
- (BIT(LOG_SEV_CRITICAL) | \
- BIT(LOG_SEV_ERROR) | \
- BIT(LOG_SEV_WARNING) | \
- BIT(LOG_SEV_INFO) | \
- BIT(LOG_SEV_INFOEX) | \
- BIT(LOG_SEV_TRACE) | \
- BIT(LOG_SEV_DUMP))
- /* log source */
- #define LOG_SRC_INIT 0
- #define LOG_SRC_DEBUGFS 1
- #define LOG_SRC_FW_DOWNLOAD 2
- #define LOG_SRC_FW_MSG 3
- #define LOG_SRC_TST 4
- #define LOG_SRC_IRQ 5
- #define LOG_SRC_MAX 6
- #define LOG_SRC_ALL 0xFF
- /**
- * Default intitialization runtime log level
- */
- #ifndef LOG_SEV_FILTER_RUNTIME
- #define LOG_SEV_FILTER_RUNTIME \
- (BIT(LOG_SEV_CRITICAL) | \
- BIT(LOG_SEV_ERROR) | \
- BIT(LOG_SEV_WARNING))
- #endif
- #ifndef FW_LOG_SEV_FILTER_RUNTIME
- #define FW_LOG_SEV_FILTER_RUNTIME LOG_SEV_FILTER_ALL
- #endif
- #ifdef CONFIG_IWMC3200TOP_DEBUG
- /**
- * Log macros
- */
- #define priv2dev(priv) (&(priv->func)->dev)
- #define LOG_CRITICAL(priv, src, fmt, args...) \
- do { \
- if (iwmct_logdefs[LOG_SRC_ ## src] & BIT(LOG_SEV_CRITICAL)) \
- dev_crit(priv2dev(priv), "%s %d: " fmt, \
- __func__, __LINE__, ##args); \
- } while (0)
- #define LOG_ERROR(priv, src, fmt, args...) \
- do { \
- if (iwmct_logdefs[LOG_SRC_ ## src] & BIT(LOG_SEV_ERROR)) \
- dev_err(priv2dev(priv), "%s %d: " fmt, \
- __func__, __LINE__, ##args); \
- } while (0)
- #define LOG_WARNING(priv, src, fmt, args...) \
- do { \
- if (iwmct_logdefs[LOG_SRC_ ## src] & BIT(LOG_SEV_WARNING)) \
- dev_warn(priv2dev(priv), "%s %d: " fmt, \
- __func__, __LINE__, ##args); \
- } while (0)
- #define LOG_INFO(priv, src, fmt, args...) \
- do { \
- if (iwmct_logdefs[LOG_SRC_ ## src] & BIT(LOG_SEV_INFO)) \
- dev_info(priv2dev(priv), "%s %d: " fmt, \
- __func__, __LINE__, ##args); \
- } while (0)
- #define LOG_TRACE(priv, src, fmt, args...) \
- do { \
- if (iwmct_logdefs[LOG_SRC_ ## src] & BIT(LOG_SEV_TRACE)) \
- dev_dbg(priv2dev(priv), "%s %d: " fmt, \
- __func__, __LINE__, ##args); \
- } while (0)
- #define LOG_HEXDUMP(src, ptr, len) \
- do { \
- if (iwmct_logdefs[LOG_SRC_ ## src] & BIT(LOG_SEV_DUMP)) \
- print_hex_dump(KERN_DEBUG, "", DUMP_PREFIX_NONE, \
- 16, 1, ptr, len, false); \
- } while (0)
- void iwmct_log_top_message(struct iwmct_priv *priv, u8 *buf, int len);
- extern u8 iwmct_logdefs[];
- int iwmct_log_set_filter(u8 src, u8 logmask);
- int iwmct_log_set_fw_filter(u8 src, u8 logmask);
- ssize_t show_iwmct_log_level(struct device *d,
- struct device_attribute *attr, char *buf);
- ssize_t store_iwmct_log_level(struct device *d,
- struct device_attribute *attr,
- const char *buf, size_t count);
- ssize_t show_iwmct_log_level_fw(struct device *d,
- struct device_attribute *attr, char *buf);
- ssize_t store_iwmct_log_level_fw(struct device *d,
- struct device_attribute *attr,
- const char *buf, size_t count);
- #else
- #define LOG_CRITICAL(priv, src, fmt, args...)
- #define LOG_ERROR(priv, src, fmt, args...)
- #define LOG_WARNING(priv, src, fmt, args...)
- #define LOG_INFO(priv, src, fmt, args...)
- #define LOG_TRACE(priv, src, fmt, args...)
- #define LOG_HEXDUMP(src, ptr, len)
- static inline void iwmct_log_top_message(struct iwmct_priv *priv,
- u8 *buf, int len) {}
- static inline int iwmct_log_set_filter(u8 src, u8 logmask) { return 0; }
- static inline int iwmct_log_set_fw_filter(u8 src, u8 logmask) { return 0; }
- #endif /* CONFIG_IWMC3200TOP_DEBUG */
- int log_get_filter_str(char *buf, int size);
- int log_get_fw_filter_str(char *buf, int size);
- #endif /* __LOG_H__ */
|