1d8899132SKalle Valo // SPDX-License-Identifier: BSD-3-Clause-Clear
2d8899132SKalle Valo /*
3d8899132SKalle Valo * Copyright (c) 2018-2021 The Linux Foundation. All rights reserved.
4*bc3bfb63SJeff Johnson * Copyright (c) 2021-2023 Qualcomm Innovation Center, Inc. All rights reserved.
5d8899132SKalle Valo */
6d8899132SKalle Valo
7d8899132SKalle Valo #include <linux/vmalloc.h>
8d8899132SKalle Valo #include "core.h"
9d8899132SKalle Valo #include "debug.h"
10d8899132SKalle Valo
ath12k_info(struct ath12k_base * ab,const char * fmt,...)11d8899132SKalle Valo void ath12k_info(struct ath12k_base *ab, const char *fmt, ...)
12d8899132SKalle Valo {
13d8899132SKalle Valo struct va_format vaf = {
14d8899132SKalle Valo .fmt = fmt,
15d8899132SKalle Valo };
16d8899132SKalle Valo va_list args;
17d8899132SKalle Valo
18d8899132SKalle Valo va_start(args, fmt);
19d8899132SKalle Valo vaf.va = &args;
20d8899132SKalle Valo dev_info(ab->dev, "%pV", &vaf);
21d8899132SKalle Valo /* TODO: Trace the log */
22d8899132SKalle Valo va_end(args);
23d8899132SKalle Valo }
24d8899132SKalle Valo
ath12k_err(struct ath12k_base * ab,const char * fmt,...)25d8899132SKalle Valo void ath12k_err(struct ath12k_base *ab, const char *fmt, ...)
26d8899132SKalle Valo {
27d8899132SKalle Valo struct va_format vaf = {
28d8899132SKalle Valo .fmt = fmt,
29d8899132SKalle Valo };
30d8899132SKalle Valo va_list args;
31d8899132SKalle Valo
32d8899132SKalle Valo va_start(args, fmt);
33d8899132SKalle Valo vaf.va = &args;
34d8899132SKalle Valo dev_err(ab->dev, "%pV", &vaf);
35d8899132SKalle Valo /* TODO: Trace the log */
36d8899132SKalle Valo va_end(args);
37d8899132SKalle Valo }
38d8899132SKalle Valo
ath12k_warn(struct ath12k_base * ab,const char * fmt,...)39d8899132SKalle Valo void ath12k_warn(struct ath12k_base *ab, const char *fmt, ...)
40d8899132SKalle Valo {
41d8899132SKalle Valo struct va_format vaf = {
42d8899132SKalle Valo .fmt = fmt,
43d8899132SKalle Valo };
44d8899132SKalle Valo va_list args;
45d8899132SKalle Valo
46d8899132SKalle Valo va_start(args, fmt);
47d8899132SKalle Valo vaf.va = &args;
48d8899132SKalle Valo dev_warn_ratelimited(ab->dev, "%pV", &vaf);
49d8899132SKalle Valo /* TODO: Trace the log */
50d8899132SKalle Valo va_end(args);
51d8899132SKalle Valo }
52d8899132SKalle Valo
53d8899132SKalle Valo #ifdef CONFIG_ATH12K_DEBUG
54d8899132SKalle Valo
__ath12k_dbg(struct ath12k_base * ab,enum ath12k_debug_mask mask,const char * fmt,...)55d8899132SKalle Valo void __ath12k_dbg(struct ath12k_base *ab, enum ath12k_debug_mask mask,
56d8899132SKalle Valo const char *fmt, ...)
57d8899132SKalle Valo {
58d8899132SKalle Valo struct va_format vaf;
59d8899132SKalle Valo va_list args;
60d8899132SKalle Valo
61d8899132SKalle Valo va_start(args, fmt);
62d8899132SKalle Valo
63d8899132SKalle Valo vaf.fmt = fmt;
64d8899132SKalle Valo vaf.va = &args;
65d8899132SKalle Valo
66d8899132SKalle Valo if (ath12k_debug_mask & mask)
67d8899132SKalle Valo dev_dbg(ab->dev, "%pV", &vaf);
68d8899132SKalle Valo
69d8899132SKalle Valo /* TODO: trace log */
70d8899132SKalle Valo
71d8899132SKalle Valo va_end(args);
72d8899132SKalle Valo }
73d8899132SKalle Valo
ath12k_dbg_dump(struct ath12k_base * ab,enum ath12k_debug_mask mask,const char * msg,const char * prefix,const void * buf,size_t len)74d8899132SKalle Valo void ath12k_dbg_dump(struct ath12k_base *ab,
75d8899132SKalle Valo enum ath12k_debug_mask mask,
76d8899132SKalle Valo const char *msg, const char *prefix,
77d8899132SKalle Valo const void *buf, size_t len)
78d8899132SKalle Valo {
79d8899132SKalle Valo char linebuf[256];
80d8899132SKalle Valo size_t linebuflen;
81d8899132SKalle Valo const void *ptr;
82d8899132SKalle Valo
83d8899132SKalle Valo if (ath12k_debug_mask & mask) {
84d8899132SKalle Valo if (msg)
85d8899132SKalle Valo __ath12k_dbg(ab, mask, "%s\n", msg);
86d8899132SKalle Valo
87d8899132SKalle Valo for (ptr = buf; (ptr - buf) < len; ptr += 16) {
88d8899132SKalle Valo linebuflen = 0;
89d8899132SKalle Valo linebuflen += scnprintf(linebuf + linebuflen,
90d8899132SKalle Valo sizeof(linebuf) - linebuflen,
91d8899132SKalle Valo "%s%08x: ",
92d8899132SKalle Valo (prefix ? prefix : ""),
93d8899132SKalle Valo (unsigned int)(ptr - buf));
94d8899132SKalle Valo hex_dump_to_buffer(ptr, len - (ptr - buf), 16, 1,
95d8899132SKalle Valo linebuf + linebuflen,
96d8899132SKalle Valo sizeof(linebuf) - linebuflen, true);
97d8899132SKalle Valo dev_dbg(ab->dev, "%s\n", linebuf);
98d8899132SKalle Valo }
99d8899132SKalle Valo }
100d8899132SKalle Valo }
101d8899132SKalle Valo
102d8899132SKalle Valo #endif /* CONFIG_ATH12K_DEBUG */
103