|
|
|
@@ -43,6 +43,62 @@ struct rtw_debugfs_priv {
|
|
|
|
|
};
|
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
struct rtw_debugfs {
|
|
|
|
|
struct rtw_debugfs_priv mac_0;
|
|
|
|
|
struct rtw_debugfs_priv mac_1;
|
|
|
|
|
struct rtw_debugfs_priv mac_2;
|
|
|
|
|
struct rtw_debugfs_priv mac_3;
|
|
|
|
|
struct rtw_debugfs_priv mac_4;
|
|
|
|
|
struct rtw_debugfs_priv mac_5;
|
|
|
|
|
struct rtw_debugfs_priv mac_6;
|
|
|
|
|
struct rtw_debugfs_priv mac_7;
|
|
|
|
|
struct rtw_debugfs_priv mac_10;
|
|
|
|
|
struct rtw_debugfs_priv mac_11;
|
|
|
|
|
struct rtw_debugfs_priv mac_12;
|
|
|
|
|
struct rtw_debugfs_priv mac_13;
|
|
|
|
|
struct rtw_debugfs_priv mac_14;
|
|
|
|
|
struct rtw_debugfs_priv mac_15;
|
|
|
|
|
struct rtw_debugfs_priv mac_16;
|
|
|
|
|
struct rtw_debugfs_priv mac_17;
|
|
|
|
|
struct rtw_debugfs_priv bb_8;
|
|
|
|
|
struct rtw_debugfs_priv bb_9;
|
|
|
|
|
struct rtw_debugfs_priv bb_a;
|
|
|
|
|
struct rtw_debugfs_priv bb_b;
|
|
|
|
|
struct rtw_debugfs_priv bb_c;
|
|
|
|
|
struct rtw_debugfs_priv bb_d;
|
|
|
|
|
struct rtw_debugfs_priv bb_e;
|
|
|
|
|
struct rtw_debugfs_priv bb_f;
|
|
|
|
|
struct rtw_debugfs_priv bb_18;
|
|
|
|
|
struct rtw_debugfs_priv bb_19;
|
|
|
|
|
struct rtw_debugfs_priv bb_1a;
|
|
|
|
|
struct rtw_debugfs_priv bb_1b;
|
|
|
|
|
struct rtw_debugfs_priv bb_1c;
|
|
|
|
|
struct rtw_debugfs_priv bb_1d;
|
|
|
|
|
struct rtw_debugfs_priv bb_1e;
|
|
|
|
|
struct rtw_debugfs_priv bb_1f;
|
|
|
|
|
struct rtw_debugfs_priv bb_2c;
|
|
|
|
|
struct rtw_debugfs_priv bb_2d;
|
|
|
|
|
struct rtw_debugfs_priv bb_40;
|
|
|
|
|
struct rtw_debugfs_priv bb_41;
|
|
|
|
|
struct rtw_debugfs_priv rf_dump;
|
|
|
|
|
struct rtw_debugfs_priv tx_pwr_tbl;
|
|
|
|
|
struct rtw_debugfs_priv write_reg;
|
|
|
|
|
struct rtw_debugfs_priv h2c;
|
|
|
|
|
struct rtw_debugfs_priv rf_write;
|
|
|
|
|
struct rtw_debugfs_priv rf_read;
|
|
|
|
|
struct rtw_debugfs_priv read_reg;
|
|
|
|
|
struct rtw_debugfs_priv fix_rate;
|
|
|
|
|
struct rtw_debugfs_priv dump_cam;
|
|
|
|
|
struct rtw_debugfs_priv rsvd_page;
|
|
|
|
|
struct rtw_debugfs_priv phy_info;
|
|
|
|
|
struct rtw_debugfs_priv coex_enable;
|
|
|
|
|
struct rtw_debugfs_priv coex_info;
|
|
|
|
|
struct rtw_debugfs_priv edcca_enable;
|
|
|
|
|
struct rtw_debugfs_priv fw_crash;
|
|
|
|
|
struct rtw_debugfs_priv force_lowest_basic_rate;
|
|
|
|
|
struct rtw_debugfs_priv dm_cap;
|
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
static const char * const rtw_dm_cap_strs[] = {
|
|
|
|
|
[RTW_DM_CAP_NA] = "NA",
|
|
|
|
|
[RTW_DM_CAP_TXGAPK] = "TXGAPK",
|
|
|
|
@@ -524,7 +580,7 @@ static int rtw_debug_get_bb_page(struct seq_file *m, void *v)
|
|
|
|
|
return 0;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
static int rtw_debug_get_rf_dump(struct seq_file *m, void *v)
|
|
|
|
|
static int rtw_debugfs_get_rf_dump(struct seq_file *m, void *v)
|
|
|
|
|
{
|
|
|
|
|
struct rtw_debugfs_priv *debugfs_priv = m->private;
|
|
|
|
|
struct rtw_dev *rtwdev = debugfs_priv->rtwdev;
|
|
|
|
@@ -1074,139 +1130,102 @@ static int rtw_debugfs_get_dm_cap(struct seq_file *m, void *v)
|
|
|
|
|
return 0;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
#define rtw_debug_impl_mac(page, addr) \
|
|
|
|
|
static struct rtw_debugfs_priv rtw_debug_priv_mac_ ##page = { \
|
|
|
|
|
#define rtw_debug_priv_mac(addr) \
|
|
|
|
|
{ \
|
|
|
|
|
.cb_read = rtw_debug_get_mac_page, \
|
|
|
|
|
.cb_data = addr, \
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
rtw_debug_impl_mac(0, 0x0000);
|
|
|
|
|
rtw_debug_impl_mac(1, 0x0100);
|
|
|
|
|
rtw_debug_impl_mac(2, 0x0200);
|
|
|
|
|
rtw_debug_impl_mac(3, 0x0300);
|
|
|
|
|
rtw_debug_impl_mac(4, 0x0400);
|
|
|
|
|
rtw_debug_impl_mac(5, 0x0500);
|
|
|
|
|
rtw_debug_impl_mac(6, 0x0600);
|
|
|
|
|
rtw_debug_impl_mac(7, 0x0700);
|
|
|
|
|
rtw_debug_impl_mac(10, 0x1000);
|
|
|
|
|
rtw_debug_impl_mac(11, 0x1100);
|
|
|
|
|
rtw_debug_impl_mac(12, 0x1200);
|
|
|
|
|
rtw_debug_impl_mac(13, 0x1300);
|
|
|
|
|
rtw_debug_impl_mac(14, 0x1400);
|
|
|
|
|
rtw_debug_impl_mac(15, 0x1500);
|
|
|
|
|
rtw_debug_impl_mac(16, 0x1600);
|
|
|
|
|
rtw_debug_impl_mac(17, 0x1700);
|
|
|
|
|
|
|
|
|
|
#define rtw_debug_impl_bb(page, addr) \
|
|
|
|
|
static struct rtw_debugfs_priv rtw_debug_priv_bb_ ##page = { \
|
|
|
|
|
#define rtw_debug_priv_bb(addr) \
|
|
|
|
|
{ \
|
|
|
|
|
.cb_read = rtw_debug_get_bb_page, \
|
|
|
|
|
.cb_data = addr, \
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
rtw_debug_impl_bb(8, 0x0800);
|
|
|
|
|
rtw_debug_impl_bb(9, 0x0900);
|
|
|
|
|
rtw_debug_impl_bb(a, 0x0a00);
|
|
|
|
|
rtw_debug_impl_bb(b, 0x0b00);
|
|
|
|
|
rtw_debug_impl_bb(c, 0x0c00);
|
|
|
|
|
rtw_debug_impl_bb(d, 0x0d00);
|
|
|
|
|
rtw_debug_impl_bb(e, 0x0e00);
|
|
|
|
|
rtw_debug_impl_bb(f, 0x0f00);
|
|
|
|
|
rtw_debug_impl_bb(18, 0x1800);
|
|
|
|
|
rtw_debug_impl_bb(19, 0x1900);
|
|
|
|
|
rtw_debug_impl_bb(1a, 0x1a00);
|
|
|
|
|
rtw_debug_impl_bb(1b, 0x1b00);
|
|
|
|
|
rtw_debug_impl_bb(1c, 0x1c00);
|
|
|
|
|
rtw_debug_impl_bb(1d, 0x1d00);
|
|
|
|
|
rtw_debug_impl_bb(1e, 0x1e00);
|
|
|
|
|
rtw_debug_impl_bb(1f, 0x1f00);
|
|
|
|
|
rtw_debug_impl_bb(2c, 0x2c00);
|
|
|
|
|
rtw_debug_impl_bb(2d, 0x2d00);
|
|
|
|
|
rtw_debug_impl_bb(40, 0x4000);
|
|
|
|
|
rtw_debug_impl_bb(41, 0x4100);
|
|
|
|
|
#define rtw_debug_priv_get(name) \
|
|
|
|
|
{ \
|
|
|
|
|
.cb_read = rtw_debugfs_get_ ##name, \
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
static struct rtw_debugfs_priv rtw_debug_priv_rf_dump = {
|
|
|
|
|
.cb_read = rtw_debug_get_rf_dump,
|
|
|
|
|
};
|
|
|
|
|
#define rtw_debug_priv_set(name) \
|
|
|
|
|
{ \
|
|
|
|
|
.cb_write = rtw_debugfs_set_ ##name, \
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
static struct rtw_debugfs_priv rtw_debug_priv_tx_pwr_tbl = {
|
|
|
|
|
.cb_read = rtw_debugfs_get_tx_pwr_tbl,
|
|
|
|
|
};
|
|
|
|
|
#define rtw_debug_priv_set_and_get(name) \
|
|
|
|
|
{ \
|
|
|
|
|
.cb_write = rtw_debugfs_set_ ##name, \
|
|
|
|
|
.cb_read = rtw_debugfs_get_ ##name, \
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
static struct rtw_debugfs_priv rtw_debug_priv_write_reg = {
|
|
|
|
|
.cb_write = rtw_debugfs_set_write_reg,
|
|
|
|
|
};
|
|
|
|
|
#define rtw_debug_priv_set_single_and_get(name) \
|
|
|
|
|
{ \
|
|
|
|
|
.cb_write = rtw_debugfs_set_single_input, \
|
|
|
|
|
.cb_read = rtw_debugfs_get_ ##name, \
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
static struct rtw_debugfs_priv rtw_debug_priv_h2c = {
|
|
|
|
|
.cb_write = rtw_debugfs_set_h2c,
|
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
static struct rtw_debugfs_priv rtw_debug_priv_rf_write = {
|
|
|
|
|
.cb_write = rtw_debugfs_set_rf_write,
|
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
static struct rtw_debugfs_priv rtw_debug_priv_rf_read = {
|
|
|
|
|
.cb_write = rtw_debugfs_set_rf_read,
|
|
|
|
|
.cb_read = rtw_debugfs_get_rf_read,
|
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
static struct rtw_debugfs_priv rtw_debug_priv_read_reg = {
|
|
|
|
|
.cb_write = rtw_debugfs_set_read_reg,
|
|
|
|
|
.cb_read = rtw_debugfs_get_read_reg,
|
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
static struct rtw_debugfs_priv rtw_debug_priv_fix_rate = {
|
|
|
|
|
.cb_write = rtw_debugfs_set_fix_rate,
|
|
|
|
|
.cb_read = rtw_debugfs_get_fix_rate,
|
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
static struct rtw_debugfs_priv rtw_debug_priv_dump_cam = {
|
|
|
|
|
.cb_write = rtw_debugfs_set_single_input,
|
|
|
|
|
.cb_read = rtw_debugfs_get_dump_cam,
|
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
static struct rtw_debugfs_priv rtw_debug_priv_rsvd_page = {
|
|
|
|
|
.cb_write = rtw_debugfs_set_rsvd_page,
|
|
|
|
|
.cb_read = rtw_debugfs_get_rsvd_page,
|
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
static struct rtw_debugfs_priv rtw_debug_priv_phy_info = {
|
|
|
|
|
.cb_read = rtw_debugfs_get_phy_info,
|
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
static struct rtw_debugfs_priv rtw_debug_priv_coex_enable = {
|
|
|
|
|
.cb_write = rtw_debugfs_set_coex_enable,
|
|
|
|
|
.cb_read = rtw_debugfs_get_coex_enable,
|
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
static struct rtw_debugfs_priv rtw_debug_priv_coex_info = {
|
|
|
|
|
.cb_read = rtw_debugfs_get_coex_info,
|
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
static struct rtw_debugfs_priv rtw_debug_priv_edcca_enable = {
|
|
|
|
|
.cb_write = rtw_debugfs_set_edcca_enable,
|
|
|
|
|
.cb_read = rtw_debugfs_get_edcca_enable,
|
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
static struct rtw_debugfs_priv rtw_debug_priv_fw_crash = {
|
|
|
|
|
.cb_write = rtw_debugfs_set_fw_crash,
|
|
|
|
|
.cb_read = rtw_debugfs_get_fw_crash,
|
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
static struct rtw_debugfs_priv rtw_debug_priv_force_lowest_basic_rate = {
|
|
|
|
|
.cb_write = rtw_debugfs_set_force_lowest_basic_rate,
|
|
|
|
|
.cb_read = rtw_debugfs_get_force_lowest_basic_rate,
|
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
static struct rtw_debugfs_priv rtw_debug_priv_dm_cap = {
|
|
|
|
|
.cb_write = rtw_debugfs_set_dm_cap,
|
|
|
|
|
.cb_read = rtw_debugfs_get_dm_cap,
|
|
|
|
|
static const struct rtw_debugfs rtw_debugfs_templ = {
|
|
|
|
|
.mac_0 = rtw_debug_priv_mac(0x0000),
|
|
|
|
|
.mac_1 = rtw_debug_priv_mac(0x0100),
|
|
|
|
|
.mac_2 = rtw_debug_priv_mac(0x0200),
|
|
|
|
|
.mac_3 = rtw_debug_priv_mac(0x0300),
|
|
|
|
|
.mac_4 = rtw_debug_priv_mac(0x0400),
|
|
|
|
|
.mac_5 = rtw_debug_priv_mac(0x0500),
|
|
|
|
|
.mac_6 = rtw_debug_priv_mac(0x0600),
|
|
|
|
|
.mac_7 = rtw_debug_priv_mac(0x0700),
|
|
|
|
|
.mac_10 = rtw_debug_priv_mac(0x1000),
|
|
|
|
|
.mac_11 = rtw_debug_priv_mac(0x1100),
|
|
|
|
|
.mac_12 = rtw_debug_priv_mac(0x1200),
|
|
|
|
|
.mac_13 = rtw_debug_priv_mac(0x1300),
|
|
|
|
|
.mac_14 = rtw_debug_priv_mac(0x1400),
|
|
|
|
|
.mac_15 = rtw_debug_priv_mac(0x1500),
|
|
|
|
|
.mac_16 = rtw_debug_priv_mac(0x1600),
|
|
|
|
|
.mac_17 = rtw_debug_priv_mac(0x1700),
|
|
|
|
|
.bb_8 = rtw_debug_priv_bb(0x0800),
|
|
|
|
|
.bb_9 = rtw_debug_priv_bb(0x0900),
|
|
|
|
|
.bb_a = rtw_debug_priv_bb(0x0a00),
|
|
|
|
|
.bb_b = rtw_debug_priv_bb(0x0b00),
|
|
|
|
|
.bb_c = rtw_debug_priv_bb(0x0c00),
|
|
|
|
|
.bb_d = rtw_debug_priv_bb(0x0d00),
|
|
|
|
|
.bb_e = rtw_debug_priv_bb(0x0e00),
|
|
|
|
|
.bb_f = rtw_debug_priv_bb(0x0f00),
|
|
|
|
|
.bb_18 = rtw_debug_priv_bb(0x1800),
|
|
|
|
|
.bb_19 = rtw_debug_priv_bb(0x1900),
|
|
|
|
|
.bb_1a = rtw_debug_priv_bb(0x1a00),
|
|
|
|
|
.bb_1b = rtw_debug_priv_bb(0x1b00),
|
|
|
|
|
.bb_1c = rtw_debug_priv_bb(0x1c00),
|
|
|
|
|
.bb_1d = rtw_debug_priv_bb(0x1d00),
|
|
|
|
|
.bb_1e = rtw_debug_priv_bb(0x1e00),
|
|
|
|
|
.bb_1f = rtw_debug_priv_bb(0x1f00),
|
|
|
|
|
.bb_2c = rtw_debug_priv_bb(0x2c00),
|
|
|
|
|
.bb_2d = rtw_debug_priv_bb(0x2d00),
|
|
|
|
|
.bb_40 = rtw_debug_priv_bb(0x4000),
|
|
|
|
|
.bb_41 = rtw_debug_priv_bb(0x4100),
|
|
|
|
|
.rf_dump = rtw_debug_priv_get(rf_dump),
|
|
|
|
|
.tx_pwr_tbl = rtw_debug_priv_get(tx_pwr_tbl),
|
|
|
|
|
.write_reg = rtw_debug_priv_set(write_reg),
|
|
|
|
|
.h2c = rtw_debug_priv_set(h2c),
|
|
|
|
|
.rf_write = rtw_debug_priv_set(rf_write),
|
|
|
|
|
.rf_read = rtw_debug_priv_set_and_get(rf_read),
|
|
|
|
|
.read_reg = rtw_debug_priv_set_and_get(read_reg),
|
|
|
|
|
.fix_rate = rtw_debug_priv_set_and_get(fix_rate),
|
|
|
|
|
.dump_cam = rtw_debug_priv_set_single_and_get(dump_cam),
|
|
|
|
|
.rsvd_page = rtw_debug_priv_set_and_get(rsvd_page),
|
|
|
|
|
.phy_info = rtw_debug_priv_get(phy_info),
|
|
|
|
|
.coex_enable = rtw_debug_priv_set_and_get(coex_enable),
|
|
|
|
|
.coex_info = rtw_debug_priv_get(coex_info),
|
|
|
|
|
.edcca_enable = rtw_debug_priv_set_and_get(edcca_enable),
|
|
|
|
|
.fw_crash = rtw_debug_priv_set_and_get(fw_crash),
|
|
|
|
|
.force_lowest_basic_rate = rtw_debug_priv_set_and_get(force_lowest_basic_rate),
|
|
|
|
|
.dm_cap = rtw_debug_priv_set_and_get(dm_cap),
|
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
#define rtw_debugfs_add_core(name, mode, fopname, parent) \
|
|
|
|
|
do { \
|
|
|
|
|
rtw_debug_priv_ ##name.rtwdev = rtwdev; \
|
|
|
|
|
struct rtw_debugfs_priv *priv = &rtwdev->debugfs->name; \
|
|
|
|
|
priv->rtwdev = rtwdev; \
|
|
|
|
|
if (IS_ERR(debugfs_create_file(#name, mode, \
|
|
|
|
|
parent, &rtw_debug_priv_ ##name,\
|
|
|
|
|
parent, priv, \
|
|
|
|
|
&file_ops_ ##fopname))) \
|
|
|
|
|
pr_debug("Unable to initialize debugfs:%s\n", \
|
|
|
|
|
#name); \
|
|
|
|
@@ -1219,12 +1238,9 @@ static struct rtw_debugfs_priv rtw_debug_priv_dm_cap = {
|
|
|
|
|
#define rtw_debugfs_add_r(name) \
|
|
|
|
|
rtw_debugfs_add_core(name, S_IFREG | 0444, single_r, debugfs_topdir)
|
|
|
|
|
|
|
|
|
|
void rtw_debugfs_init(struct rtw_dev *rtwdev)
|
|
|
|
|
static
|
|
|
|
|
void rtw_debugfs_add_basic(struct rtw_dev *rtwdev, struct dentry *debugfs_topdir)
|
|
|
|
|
{
|
|
|
|
|
struct dentry *debugfs_topdir;
|
|
|
|
|
|
|
|
|
|
debugfs_topdir = debugfs_create_dir("rtw88",
|
|
|
|
|
rtwdev->hw->wiphy->debugfsdir);
|
|
|
|
|
rtw_debugfs_add_w(write_reg);
|
|
|
|
|
rtw_debugfs_add_rw(read_reg);
|
|
|
|
|
rtw_debugfs_add_w(rf_write);
|
|
|
|
@@ -1236,6 +1252,17 @@ void rtw_debugfs_init(struct rtw_dev *rtwdev)
|
|
|
|
|
rtw_debugfs_add_r(coex_info);
|
|
|
|
|
rtw_debugfs_add_rw(coex_enable);
|
|
|
|
|
rtw_debugfs_add_w(h2c);
|
|
|
|
|
rtw_debugfs_add_r(rf_dump);
|
|
|
|
|
rtw_debugfs_add_r(tx_pwr_tbl);
|
|
|
|
|
rtw_debugfs_add_rw(edcca_enable);
|
|
|
|
|
rtw_debugfs_add_rw(fw_crash);
|
|
|
|
|
rtw_debugfs_add_rw(force_lowest_basic_rate);
|
|
|
|
|
rtw_debugfs_add_rw(dm_cap);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
static
|
|
|
|
|
void rtw_debugfs_add_sec0(struct rtw_dev *rtwdev, struct dentry *debugfs_topdir)
|
|
|
|
|
{
|
|
|
|
|
rtw_debugfs_add_r(mac_0);
|
|
|
|
|
rtw_debugfs_add_r(mac_1);
|
|
|
|
|
rtw_debugfs_add_r(mac_2);
|
|
|
|
@@ -1252,6 +1279,11 @@ void rtw_debugfs_init(struct rtw_dev *rtwdev)
|
|
|
|
|
rtw_debugfs_add_r(bb_d);
|
|
|
|
|
rtw_debugfs_add_r(bb_e);
|
|
|
|
|
rtw_debugfs_add_r(bb_f);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
static
|
|
|
|
|
void rtw_debugfs_add_sec1(struct rtw_dev *rtwdev, struct dentry *debugfs_topdir)
|
|
|
|
|
{
|
|
|
|
|
rtw_debugfs_add_r(mac_10);
|
|
|
|
|
rtw_debugfs_add_r(mac_11);
|
|
|
|
|
rtw_debugfs_add_r(mac_12);
|
|
|
|
@@ -1274,14 +1306,29 @@ void rtw_debugfs_init(struct rtw_dev *rtwdev)
|
|
|
|
|
rtw_debugfs_add_r(bb_40);
|
|
|
|
|
rtw_debugfs_add_r(bb_41);
|
|
|
|
|
}
|
|
|
|
|
rtw_debugfs_add_r(rf_dump);
|
|
|
|
|
rtw_debugfs_add_r(tx_pwr_tbl);
|
|
|
|
|
rtw_debugfs_add_rw(edcca_enable);
|
|
|
|
|
rtw_debugfs_add_rw(fw_crash);
|
|
|
|
|
rtw_debugfs_add_rw(force_lowest_basic_rate);
|
|
|
|
|
rtw_debugfs_add_rw(dm_cap);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
void rtw_debugfs_init(struct rtw_dev *rtwdev)
|
|
|
|
|
{
|
|
|
|
|
struct dentry *debugfs_topdir;
|
|
|
|
|
|
|
|
|
|
rtwdev->debugfs = kmemdup(&rtw_debugfs_templ, sizeof(rtw_debugfs_templ),
|
|
|
|
|
GFP_KERNEL);
|
|
|
|
|
if (!rtwdev->debugfs)
|
|
|
|
|
return;
|
|
|
|
|
|
|
|
|
|
debugfs_topdir = debugfs_create_dir("rtw88",
|
|
|
|
|
rtwdev->hw->wiphy->debugfsdir);
|
|
|
|
|
|
|
|
|
|
rtw_debugfs_add_basic(rtwdev, debugfs_topdir);
|
|
|
|
|
rtw_debugfs_add_sec0(rtwdev, debugfs_topdir);
|
|
|
|
|
rtw_debugfs_add_sec1(rtwdev, debugfs_topdir);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
void rtw_debugfs_deinit(struct rtw_dev *rtwdev)
|
|
|
|
|
{
|
|
|
|
|
kfree(rtwdev->debugfs);
|
|
|
|
|
}
|
|
|
|
|
#endif /* CONFIG_RTW88_DEBUGFS */
|
|
|
|
|
|
|
|
|
|
#ifdef CONFIG_RTW88_DEBUG
|
|
|
|
|