162306a36Sopenharmony_ci/* SPDX-License-Identifier: BSD-3-Clause-Clear */ 262306a36Sopenharmony_ci/* 362306a36Sopenharmony_ci * Copyright (c) 2018-2021 The Linux Foundation. All rights reserved. 462306a36Sopenharmony_ci * Copyright (c) 2021-2022 Qualcomm Innovation Center, Inc. All rights reserved. 562306a36Sopenharmony_ci */ 662306a36Sopenharmony_ci 762306a36Sopenharmony_ci#ifndef _ATH12K_DEBUG_H_ 862306a36Sopenharmony_ci#define _ATH12K_DEBUG_H_ 962306a36Sopenharmony_ci 1062306a36Sopenharmony_ci#include "trace.h" 1162306a36Sopenharmony_ci 1262306a36Sopenharmony_cienum ath12k_debug_mask { 1362306a36Sopenharmony_ci ATH12K_DBG_AHB = 0x00000001, 1462306a36Sopenharmony_ci ATH12K_DBG_WMI = 0x00000002, 1562306a36Sopenharmony_ci ATH12K_DBG_HTC = 0x00000004, 1662306a36Sopenharmony_ci ATH12K_DBG_DP_HTT = 0x00000008, 1762306a36Sopenharmony_ci ATH12K_DBG_MAC = 0x00000010, 1862306a36Sopenharmony_ci ATH12K_DBG_BOOT = 0x00000020, 1962306a36Sopenharmony_ci ATH12K_DBG_QMI = 0x00000040, 2062306a36Sopenharmony_ci ATH12K_DBG_DATA = 0x00000080, 2162306a36Sopenharmony_ci ATH12K_DBG_MGMT = 0x00000100, 2262306a36Sopenharmony_ci ATH12K_DBG_REG = 0x00000200, 2362306a36Sopenharmony_ci ATH12K_DBG_TESTMODE = 0x00000400, 2462306a36Sopenharmony_ci ATH12K_DBG_HAL = 0x00000800, 2562306a36Sopenharmony_ci ATH12K_DBG_PCI = 0x00001000, 2662306a36Sopenharmony_ci ATH12K_DBG_DP_TX = 0x00002000, 2762306a36Sopenharmony_ci ATH12K_DBG_DP_RX = 0x00004000, 2862306a36Sopenharmony_ci ATH12K_DBG_ANY = 0xffffffff, 2962306a36Sopenharmony_ci}; 3062306a36Sopenharmony_ci 3162306a36Sopenharmony_ci__printf(2, 3) void ath12k_info(struct ath12k_base *ab, const char *fmt, ...); 3262306a36Sopenharmony_ci__printf(2, 3) void ath12k_err(struct ath12k_base *ab, const char *fmt, ...); 3362306a36Sopenharmony_ci__printf(2, 3) void ath12k_warn(struct ath12k_base *ab, const char *fmt, ...); 3462306a36Sopenharmony_ci 3562306a36Sopenharmony_ciextern unsigned int ath12k_debug_mask; 3662306a36Sopenharmony_ci 3762306a36Sopenharmony_ci#ifdef CONFIG_ATH12K_DEBUG 3862306a36Sopenharmony_ci__printf(3, 4) void __ath12k_dbg(struct ath12k_base *ab, 3962306a36Sopenharmony_ci enum ath12k_debug_mask mask, 4062306a36Sopenharmony_ci const char *fmt, ...); 4162306a36Sopenharmony_civoid ath12k_dbg_dump(struct ath12k_base *ab, 4262306a36Sopenharmony_ci enum ath12k_debug_mask mask, 4362306a36Sopenharmony_ci const char *msg, const char *prefix, 4462306a36Sopenharmony_ci const void *buf, size_t len); 4562306a36Sopenharmony_ci#else /* CONFIG_ATH12K_DEBUG */ 4662306a36Sopenharmony_cistatic inline void __ath12k_dbg(struct ath12k_base *ab, 4762306a36Sopenharmony_ci enum ath12k_debug_mask dbg_mask, 4862306a36Sopenharmony_ci const char *fmt, ...) 4962306a36Sopenharmony_ci{ 5062306a36Sopenharmony_ci} 5162306a36Sopenharmony_ci 5262306a36Sopenharmony_cistatic inline void ath12k_dbg_dump(struct ath12k_base *ab, 5362306a36Sopenharmony_ci enum ath12k_debug_mask mask, 5462306a36Sopenharmony_ci const char *msg, const char *prefix, 5562306a36Sopenharmony_ci const void *buf, size_t len) 5662306a36Sopenharmony_ci{ 5762306a36Sopenharmony_ci} 5862306a36Sopenharmony_ci#endif /* CONFIG_ATH12K_DEBUG */ 5962306a36Sopenharmony_ci 6062306a36Sopenharmony_ci#define ath12k_dbg(ar, dbg_mask, fmt, ...) \ 6162306a36Sopenharmony_cido { \ 6262306a36Sopenharmony_ci typeof(dbg_mask) mask = (dbg_mask); \ 6362306a36Sopenharmony_ci if (ath12k_debug_mask & mask) \ 6462306a36Sopenharmony_ci __ath12k_dbg(ar, mask, fmt, ##__VA_ARGS__); \ 6562306a36Sopenharmony_ci} while (0) 6662306a36Sopenharmony_ci 6762306a36Sopenharmony_ci#endif /* _ATH12K_DEBUG_H_ */ 68