162306a36Sopenharmony_ci/* SPDX-License-Identifier: GPL-2.0 OR BSD-3-Clause */ 262306a36Sopenharmony_ci/* Copyright(c) 2019-2020 Realtek Corporation 362306a36Sopenharmony_ci */ 462306a36Sopenharmony_ci 562306a36Sopenharmony_ci#ifndef __RTW89_DEBUG_H__ 662306a36Sopenharmony_ci#define __RTW89_DEBUG_H__ 762306a36Sopenharmony_ci 862306a36Sopenharmony_ci#include "core.h" 962306a36Sopenharmony_ci 1062306a36Sopenharmony_cienum rtw89_debug_mask { 1162306a36Sopenharmony_ci RTW89_DBG_TXRX = BIT(0), 1262306a36Sopenharmony_ci RTW89_DBG_RFK = BIT(1), 1362306a36Sopenharmony_ci RTW89_DBG_RFK_TRACK = BIT(2), 1462306a36Sopenharmony_ci RTW89_DBG_CFO = BIT(3), 1562306a36Sopenharmony_ci RTW89_DBG_TSSI = BIT(4), 1662306a36Sopenharmony_ci RTW89_DBG_TXPWR = BIT(5), 1762306a36Sopenharmony_ci RTW89_DBG_HCI = BIT(6), 1862306a36Sopenharmony_ci RTW89_DBG_RA = BIT(7), 1962306a36Sopenharmony_ci RTW89_DBG_REGD = BIT(8), 2062306a36Sopenharmony_ci RTW89_DBG_PHY_TRACK = BIT(9), 2162306a36Sopenharmony_ci RTW89_DBG_DIG = BIT(10), 2262306a36Sopenharmony_ci RTW89_DBG_SER = BIT(11), 2362306a36Sopenharmony_ci RTW89_DBG_FW = BIT(12), 2462306a36Sopenharmony_ci RTW89_DBG_BTC = BIT(13), 2562306a36Sopenharmony_ci RTW89_DBG_BF = BIT(14), 2662306a36Sopenharmony_ci RTW89_DBG_HW_SCAN = BIT(15), 2762306a36Sopenharmony_ci RTW89_DBG_SAR = BIT(16), 2862306a36Sopenharmony_ci RTW89_DBG_STATE = BIT(17), 2962306a36Sopenharmony_ci RTW89_DBG_WOW = BIT(18), 3062306a36Sopenharmony_ci RTW89_DBG_UL_TB = BIT(19), 3162306a36Sopenharmony_ci RTW89_DBG_CHAN = BIT(20), 3262306a36Sopenharmony_ci 3362306a36Sopenharmony_ci RTW89_DBG_UNEXP = BIT(31), 3462306a36Sopenharmony_ci}; 3562306a36Sopenharmony_ci 3662306a36Sopenharmony_cienum rtw89_debug_mac_reg_sel { 3762306a36Sopenharmony_ci RTW89_DBG_SEL_MAC_00, 3862306a36Sopenharmony_ci RTW89_DBG_SEL_MAC_30, 3962306a36Sopenharmony_ci RTW89_DBG_SEL_MAC_40, 4062306a36Sopenharmony_ci RTW89_DBG_SEL_MAC_80, 4162306a36Sopenharmony_ci RTW89_DBG_SEL_MAC_C0, 4262306a36Sopenharmony_ci RTW89_DBG_SEL_MAC_E0, 4362306a36Sopenharmony_ci RTW89_DBG_SEL_BB, 4462306a36Sopenharmony_ci RTW89_DBG_SEL_IQK, 4562306a36Sopenharmony_ci RTW89_DBG_SEL_RFC, 4662306a36Sopenharmony_ci}; 4762306a36Sopenharmony_ci 4862306a36Sopenharmony_ci#ifdef CONFIG_RTW89_DEBUGFS 4962306a36Sopenharmony_civoid rtw89_debugfs_init(struct rtw89_dev *rtwdev); 5062306a36Sopenharmony_ci#else 5162306a36Sopenharmony_cistatic inline void rtw89_debugfs_init(struct rtw89_dev *rtwdev) {} 5262306a36Sopenharmony_ci#endif 5362306a36Sopenharmony_ci 5462306a36Sopenharmony_ci#define rtw89_info(rtwdev, a...) dev_info((rtwdev)->dev, ##a) 5562306a36Sopenharmony_ci#define rtw89_warn(rtwdev, a...) dev_warn((rtwdev)->dev, ##a) 5662306a36Sopenharmony_ci#define rtw89_err(rtwdev, a...) dev_err((rtwdev)->dev, ##a) 5762306a36Sopenharmony_ci 5862306a36Sopenharmony_ci#ifdef CONFIG_RTW89_DEBUGMSG 5962306a36Sopenharmony_ciextern unsigned int rtw89_debug_mask; 6062306a36Sopenharmony_ci#define rtw89_debug(rtwdev, a...) __rtw89_debug(rtwdev, ##a) 6162306a36Sopenharmony_ci 6262306a36Sopenharmony_ci__printf(3, 4) 6362306a36Sopenharmony_civoid __rtw89_debug(struct rtw89_dev *rtwdev, 6462306a36Sopenharmony_ci enum rtw89_debug_mask mask, 6562306a36Sopenharmony_ci const char *fmt, ...); 6662306a36Sopenharmony_cistatic inline void rtw89_hex_dump(struct rtw89_dev *rtwdev, 6762306a36Sopenharmony_ci enum rtw89_debug_mask mask, 6862306a36Sopenharmony_ci const char *prefix_str, 6962306a36Sopenharmony_ci const void *buf, size_t len) 7062306a36Sopenharmony_ci{ 7162306a36Sopenharmony_ci if (!(rtw89_debug_mask & mask)) 7262306a36Sopenharmony_ci return; 7362306a36Sopenharmony_ci 7462306a36Sopenharmony_ci print_hex_dump_bytes(prefix_str, DUMP_PREFIX_OFFSET, buf, len); 7562306a36Sopenharmony_ci} 7662306a36Sopenharmony_ci#else 7762306a36Sopenharmony_cistatic inline void rtw89_debug(struct rtw89_dev *rtwdev, 7862306a36Sopenharmony_ci enum rtw89_debug_mask mask, 7962306a36Sopenharmony_ci const char *fmt, ...) {} 8062306a36Sopenharmony_cistatic inline void rtw89_hex_dump(struct rtw89_dev *rtwdev, 8162306a36Sopenharmony_ci enum rtw89_debug_mask mask, 8262306a36Sopenharmony_ci const char *prefix_str, 8362306a36Sopenharmony_ci const void *buf, size_t len) {} 8462306a36Sopenharmony_ci#endif 8562306a36Sopenharmony_ci 8662306a36Sopenharmony_ci#endif 87