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