rtw88: add a debugfs entry to enable/disable coex mechanism
Sometimes we need to stop the coex mechanism to debug, so that we can manually control the device through various outer commands. Hence, add a new debugfs coex_enable to allow us to enable/disable the coex mechanism when driver is running. To disable coex echo 0 > /sys/kernel/debug/ieee80211/phyX/rtw88/coex_enable To enable coex echo 1 > /sys/kernel/debug/ieee80211/phyX/rtw88/coex_enable To check coex dm is enabled or not cat /sys/kernel/debug/ieee80211/phyX/rtw88/coex_enable Signed-off-by: Yan-Hsuan Chuang <yhchuang@realtek.com> Signed-off-by: Kalle Valo <kvalo@codeaurora.org> Link: https://lore.kernel.org/r/20200313033008.20070-3-yhchuang@realtek.com
This commit is contained in:
parent
1fe188da9d
commit
d05550936a
@ -706,6 +706,45 @@ static int rtw_debugfs_get_coex_info(struct seq_file *m, void *v)
|
||||
return 0;
|
||||
}
|
||||
|
||||
static ssize_t rtw_debugfs_set_coex_enable(struct file *filp,
|
||||
const char __user *buffer,
|
||||
size_t count, loff_t *loff)
|
||||
{
|
||||
struct seq_file *seqpriv = (struct seq_file *)filp->private_data;
|
||||
struct rtw_debugfs_priv *debugfs_priv = seqpriv->private;
|
||||
struct rtw_dev *rtwdev = debugfs_priv->rtwdev;
|
||||
struct rtw_coex *coex = &rtwdev->coex;
|
||||
char tmp[32 + 1];
|
||||
bool enable;
|
||||
int ret;
|
||||
|
||||
rtw_debugfs_copy_from_user(tmp, sizeof(tmp), buffer, count, 1);
|
||||
|
||||
ret = kstrtobool(tmp, &enable);
|
||||
if (ret) {
|
||||
rtw_warn(rtwdev, "invalid arguments\n");
|
||||
return ret;
|
||||
}
|
||||
|
||||
mutex_lock(&rtwdev->mutex);
|
||||
coex->stop_dm = enable == 0;
|
||||
mutex_unlock(&rtwdev->mutex);
|
||||
|
||||
return count;
|
||||
}
|
||||
|
||||
static int rtw_debugfs_get_coex_enable(struct seq_file *m, void *v)
|
||||
{
|
||||
struct rtw_debugfs_priv *debugfs_priv = m->private;
|
||||
struct rtw_dev *rtwdev = debugfs_priv->rtwdev;
|
||||
struct rtw_coex *coex = &rtwdev->coex;
|
||||
|
||||
seq_printf(m, "coex mechanism %s\n",
|
||||
coex->stop_dm ? "disabled" : "enabled");
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
#define rtw_debug_impl_mac(page, addr) \
|
||||
static struct rtw_debugfs_priv rtw_debug_priv_mac_ ##page = { \
|
||||
.cb_read = rtw_debug_get_mac_page, \
|
||||
@ -796,6 +835,11 @@ 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,
|
||||
};
|
||||
@ -831,6 +875,7 @@ void rtw_debugfs_init(struct rtw_dev *rtwdev)
|
||||
rtw_debugfs_add_rw(rsvd_page);
|
||||
rtw_debugfs_add_r(phy_info);
|
||||
rtw_debugfs_add_r(coex_info);
|
||||
rtw_debugfs_add_rw(coex_enable);
|
||||
rtw_debugfs_add_r(mac_0);
|
||||
rtw_debugfs_add_r(mac_1);
|
||||
rtw_debugfs_add_r(mac_2);
|
||||
|
Loading…
x
Reference in New Issue
Block a user