1d5c65159SKalle Valo // SPDX-License-Identifier: BSD-3-Clause-Clear 2d5c65159SKalle Valo /* 3d5c65159SKalle Valo * Copyright (c) 2018-2019 The Linux Foundation. All rights reserved. 4d5c65159SKalle Valo */ 5d5c65159SKalle Valo 6d5c65159SKalle Valo #include <linux/vmalloc.h> 7d5c65159SKalle Valo #include "core.h" 8d5c65159SKalle Valo #include "debug.h" 971fbc847SSriram R 10d5c65159SKalle Valo void ath11k_info(struct ath11k_base *ab, const char *fmt, ...) 11d5c65159SKalle Valo { 12d5c65159SKalle Valo struct va_format vaf = { 13d5c65159SKalle Valo .fmt = fmt, 14d5c65159SKalle Valo }; 15d5c65159SKalle Valo va_list args; 16d5c65159SKalle Valo 17d5c65159SKalle Valo va_start(args, fmt); 18d5c65159SKalle Valo vaf.va = &args; 19d5c65159SKalle Valo dev_info(ab->dev, "%pV", &vaf); 20d5c65159SKalle Valo /* TODO: Trace the log */ 21d5c65159SKalle Valo va_end(args); 22d5c65159SKalle Valo } 236e0355afSGovind Singh EXPORT_SYMBOL(ath11k_info); 24d5c65159SKalle Valo 25d5c65159SKalle Valo void ath11k_err(struct ath11k_base *ab, const char *fmt, ...) 26d5c65159SKalle Valo { 27d5c65159SKalle Valo struct va_format vaf = { 28d5c65159SKalle Valo .fmt = fmt, 29d5c65159SKalle Valo }; 30d5c65159SKalle Valo va_list args; 31d5c65159SKalle Valo 32d5c65159SKalle Valo va_start(args, fmt); 33d5c65159SKalle Valo vaf.va = &args; 34d5c65159SKalle Valo dev_err(ab->dev, "%pV", &vaf); 35d5c65159SKalle Valo /* TODO: Trace the log */ 36d5c65159SKalle Valo va_end(args); 37d5c65159SKalle Valo } 386e0355afSGovind Singh EXPORT_SYMBOL(ath11k_err); 39d5c65159SKalle Valo 40d5c65159SKalle Valo void ath11k_warn(struct ath11k_base *ab, const char *fmt, ...) 41d5c65159SKalle Valo { 42d5c65159SKalle Valo struct va_format vaf = { 43d5c65159SKalle Valo .fmt = fmt, 44d5c65159SKalle Valo }; 45d5c65159SKalle Valo va_list args; 46d5c65159SKalle Valo 47d5c65159SKalle Valo va_start(args, fmt); 48d5c65159SKalle Valo vaf.va = &args; 49d5c65159SKalle Valo dev_warn_ratelimited(ab->dev, "%pV", &vaf); 50d5c65159SKalle Valo /* TODO: Trace the log */ 51d5c65159SKalle Valo va_end(args); 52d5c65159SKalle Valo } 536e0355afSGovind Singh EXPORT_SYMBOL(ath11k_warn); 54d5c65159SKalle Valo 55d5c65159SKalle Valo #ifdef CONFIG_ATH11K_DEBUG 56*da3a9d3cSKalle Valo 57d5c65159SKalle Valo void __ath11k_dbg(struct ath11k_base *ab, enum ath11k_debug_mask mask, 58d5c65159SKalle Valo const char *fmt, ...) 59d5c65159SKalle Valo { 60d5c65159SKalle Valo struct va_format vaf; 61d5c65159SKalle Valo va_list args; 62d5c65159SKalle Valo 63d5c65159SKalle Valo va_start(args, fmt); 64d5c65159SKalle Valo 65d5c65159SKalle Valo vaf.fmt = fmt; 66d5c65159SKalle Valo vaf.va = &args; 67d5c65159SKalle Valo 68d5c65159SKalle Valo if (ath11k_debug_mask & mask) 69d5c65159SKalle Valo dev_printk(KERN_DEBUG, ab->dev, "%pV", &vaf); 70d5c65159SKalle Valo 71d5c65159SKalle Valo /* TODO: trace log */ 72d5c65159SKalle Valo 73d5c65159SKalle Valo va_end(args); 74d5c65159SKalle Valo } 756e0355afSGovind Singh EXPORT_SYMBOL(__ath11k_dbg); 76d5c65159SKalle Valo 77d5c65159SKalle Valo void ath11k_dbg_dump(struct ath11k_base *ab, 78d5c65159SKalle Valo enum ath11k_debug_mask mask, 79d5c65159SKalle Valo const char *msg, const char *prefix, 80d5c65159SKalle Valo const void *buf, size_t len) 81d5c65159SKalle Valo { 82d5c65159SKalle Valo char linebuf[256]; 83d5c65159SKalle Valo size_t linebuflen; 84d5c65159SKalle Valo const void *ptr; 85d5c65159SKalle Valo 86d5c65159SKalle Valo if (ath11k_debug_mask & mask) { 87d5c65159SKalle Valo if (msg) 88d5c65159SKalle Valo __ath11k_dbg(ab, mask, "%s\n", msg); 89d5c65159SKalle Valo 90d5c65159SKalle Valo for (ptr = buf; (ptr - buf) < len; ptr += 16) { 91d5c65159SKalle Valo linebuflen = 0; 92d5c65159SKalle Valo linebuflen += scnprintf(linebuf + linebuflen, 93d5c65159SKalle Valo sizeof(linebuf) - linebuflen, 94d5c65159SKalle Valo "%s%08x: ", 95d5c65159SKalle Valo (prefix ? prefix : ""), 96d5c65159SKalle Valo (unsigned int)(ptr - buf)); 97d5c65159SKalle Valo hex_dump_to_buffer(ptr, len - (ptr - buf), 16, 1, 98d5c65159SKalle Valo linebuf + linebuflen, 99d5c65159SKalle Valo sizeof(linebuf) - linebuflen, true); 100d5c65159SKalle Valo dev_printk(KERN_DEBUG, ab->dev, "%s\n", linebuf); 101d5c65159SKalle Valo } 102d5c65159SKalle Valo } 103d5c65159SKalle Valo } 1046e0355afSGovind Singh EXPORT_SYMBOL(ath11k_dbg_dump); 105d5c65159SKalle Valo 106*da3a9d3cSKalle Valo #endif /* CONFIG_ATH11K_DEBUG */ 107