Commit d0555093 authored by Yan-Hsuan Chuang's avatar Yan-Hsuan Chuang Committed by Kalle Valo

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: default avatarYan-Hsuan Chuang <yhchuang@realtek.com>
Signed-off-by: default avatarKalle Valo <kvalo@codeaurora.org>
Link: https://lore.kernel.org/r/20200313033008.20070-3-yhchuang@realtek.com
parent 1fe188da
...@@ -706,6 +706,45 @@ static int rtw_debugfs_get_coex_info(struct seq_file *m, void *v) ...@@ -706,6 +706,45 @@ static int rtw_debugfs_get_coex_info(struct seq_file *m, void *v)
return 0; 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) \ #define rtw_debug_impl_mac(page, addr) \
static struct rtw_debugfs_priv rtw_debug_priv_mac_ ##page = { \ static struct rtw_debugfs_priv rtw_debug_priv_mac_ ##page = { \
.cb_read = rtw_debug_get_mac_page, \ .cb_read = rtw_debug_get_mac_page, \
...@@ -796,6 +835,11 @@ static struct rtw_debugfs_priv rtw_debug_priv_phy_info = { ...@@ -796,6 +835,11 @@ static struct rtw_debugfs_priv rtw_debug_priv_phy_info = {
.cb_read = rtw_debugfs_get_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 = { static struct rtw_debugfs_priv rtw_debug_priv_coex_info = {
.cb_read = rtw_debugfs_get_coex_info, .cb_read = rtw_debugfs_get_coex_info,
}; };
...@@ -831,6 +875,7 @@ void rtw_debugfs_init(struct rtw_dev *rtwdev) ...@@ -831,6 +875,7 @@ void rtw_debugfs_init(struct rtw_dev *rtwdev)
rtw_debugfs_add_rw(rsvd_page); rtw_debugfs_add_rw(rsvd_page);
rtw_debugfs_add_r(phy_info); rtw_debugfs_add_r(phy_info);
rtw_debugfs_add_r(coex_info); rtw_debugfs_add_r(coex_info);
rtw_debugfs_add_rw(coex_enable);
rtw_debugfs_add_r(mac_0); rtw_debugfs_add_r(mac_0);
rtw_debugfs_add_r(mac_1); rtw_debugfs_add_r(mac_1);
rtw_debugfs_add_r(mac_2); rtw_debugfs_add_r(mac_2);
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment