From: Yanbo Li <yanbol@qca.qualcomm.com> To: <kvalo@qca.qualcomm.com> Cc: <dreamfly281@gmail.com>, <ath10k@lists.infradead.org>, <linux-wireless@vger.kernel.org> Subject: [PATCH v2] ath10k: Debugfs entry to enable/disable WLAN&Blutooth Coexist feature Date: Thu, 28 May 2015 12:19:05 -0700 [thread overview] Message-ID: <1432840745-21725-1-git-send-email-yanbol@qca.qualcomm.com> (raw) As some radio have no connection with BT modules, enable the WLAN/Bluetooth coexist(BTC) feature will has some side effect if the radio's GPIO connect with any other HW modules. Add the control switcher "btc_feature" at debugfs and set the feature as disable by default to avoid such case. To enable this feature, execute: echo 1 > /sys/kernel/debug/ieee80211/phyX/ath10k/btc_feature To disable: echo 0 > /sys/kernel/debug/ieee80211/phyX/ath10k/btc_feature Signed-off-by: Yanbo Li <yanbol@qca.qualcomm.com> diff --git a/drivers/net/wireless/ath/ath10k/core.h b/drivers/net/wireless/ath/ath10k/core.h index 70fcdc9c2758..4a84e17016c9 100644 --- a/drivers/net/wireless/ath/ath10k/core.h +++ b/drivers/net/wireless/ath/ath10k/core.h @@ -728,6 +728,8 @@ struct ath10k { u32 fw_cold_reset_counter; } stats; + bool btc_feature; + struct ath10k_thermal thermal; struct ath10k_wow wow; diff --git a/drivers/net/wireless/ath/ath10k/debug.c b/drivers/net/wireless/ath/ath10k/debug.c index 8fa606a9c4dd..820a12bc0dd8 100644 --- a/drivers/net/wireless/ath/ath10k/debug.c +++ b/drivers/net/wireless/ath/ath10k/debug.c @@ -2092,6 +2092,56 @@ static const struct file_operations fops_quiet_period = { .open = simple_open }; +static ssize_t ath10k_write_btc_feature(struct file *file, + const char __user *ubuf, + size_t count, loff_t *ppos) +{ + struct ath10k *ar = file->private_data; + char buf[32]; + size_t buf_size; + bool val; + + buf_size = min(count, (sizeof(buf) - 1)); + if (copy_from_user(buf, ubuf, buf_size)) + return -EFAULT; + + buf[buf_size] = '\0'; + if (strtobool(buf, &val) != 0) { + ath10k_warn(ar, "Wrong BTC feature setting\n"); + return -EINVAL; + } + + mutex_lock(&ar->conf_mutex); + if (val != ar->btc_feature) { + ar->btc_feature = val; + queue_work(ar->workqueue, &ar->restart_work); + } + mutex_unlock(&ar->conf_mutex); + + return count; +} + +static ssize_t ath10k_read_btc_feature(struct file *file, char __user *ubuf, + size_t count, loff_t *ppos) +{ + char buf[32]; + struct ath10k *ar = file->private_data; + int len = 0; + + mutex_lock(&ar->conf_mutex); + len = scnprintf(buf, sizeof(buf) - len, "%d\n", + ar->btc_feature); + mutex_unlock(&ar->conf_mutex); + + return simple_read_from_buffer(ubuf, count, ppos, buf, len); +} + +static const struct file_operations fops_btc_feature = { + .read = ath10k_read_btc_feature, + .write = ath10k_write_btc_feature, + .open = simple_open +}; + int ath10k_debug_create(struct ath10k *ar) { ar->debug.fw_crash_data = vzalloc(sizeof(*ar->debug.fw_crash_data)); @@ -2195,6 +2245,8 @@ int ath10k_debug_register(struct ath10k *ar) debugfs_create_file("quiet_period", S_IRUGO | S_IWUSR, ar->debug.debugfs_phy, ar, &fops_quiet_period); + debugfs_create_file("btc_feature", S_IRUGO | S_IWUSR, + ar->debug.debugfs_phy, ar, &fops_btc_feature); return 0; } diff --git a/drivers/net/wireless/ath/ath10k/wmi.c b/drivers/net/wireless/ath/ath10k/wmi.c index 0fabe689179c..e3c880230ee6 100644 --- a/drivers/net/wireless/ath/ath10k/wmi.c +++ b/drivers/net/wireless/ath/ath10k/wmi.c @@ -3933,7 +3933,8 @@ static struct sk_buff *ath10k_wmi_10_2_op_gen_init(struct ath10k *ar) cmd = (struct wmi_init_cmd_10_2 *)buf->data; features = WMI_10_2_RX_BATCH_MODE; - if (test_bit(WMI_SERVICE_COEX_GPIO, ar->wmi.svc_map)) + if (ar->btc_feature && + test_bit(WMI_SERVICE_COEX_GPIO, ar->wmi.svc_map)) features |= WMI_10_2_COEX_GPIO; cmd->resource_config.feature_mask = __cpu_to_le32(features); -- 1.9.1
WARNING: multiple messages have this Message-ID (diff)
From: Yanbo Li <yanbol@qca.qualcomm.com> To: kvalo@qca.qualcomm.com Cc: dreamfly281@gmail.com, linux-wireless@vger.kernel.org, ath10k@lists.infradead.org Subject: [PATCH v2] ath10k: Debugfs entry to enable/disable WLAN&Blutooth Coexist feature Date: Thu, 28 May 2015 12:19:05 -0700 [thread overview] Message-ID: <1432840745-21725-1-git-send-email-yanbol@qca.qualcomm.com> (raw) As some radio have no connection with BT modules, enable the WLAN/Bluetooth coexist(BTC) feature will has some side effect if the radio's GPIO connect with any other HW modules. Add the control switcher "btc_feature" at debugfs and set the feature as disable by default to avoid such case. To enable this feature, execute: echo 1 > /sys/kernel/debug/ieee80211/phyX/ath10k/btc_feature To disable: echo 0 > /sys/kernel/debug/ieee80211/phyX/ath10k/btc_feature Signed-off-by: Yanbo Li <yanbol@qca.qualcomm.com> diff --git a/drivers/net/wireless/ath/ath10k/core.h b/drivers/net/wireless/ath/ath10k/core.h index 70fcdc9c2758..4a84e17016c9 100644 --- a/drivers/net/wireless/ath/ath10k/core.h +++ b/drivers/net/wireless/ath/ath10k/core.h @@ -728,6 +728,8 @@ struct ath10k { u32 fw_cold_reset_counter; } stats; + bool btc_feature; + struct ath10k_thermal thermal; struct ath10k_wow wow; diff --git a/drivers/net/wireless/ath/ath10k/debug.c b/drivers/net/wireless/ath/ath10k/debug.c index 8fa606a9c4dd..820a12bc0dd8 100644 --- a/drivers/net/wireless/ath/ath10k/debug.c +++ b/drivers/net/wireless/ath/ath10k/debug.c @@ -2092,6 +2092,56 @@ static const struct file_operations fops_quiet_period = { .open = simple_open }; +static ssize_t ath10k_write_btc_feature(struct file *file, + const char __user *ubuf, + size_t count, loff_t *ppos) +{ + struct ath10k *ar = file->private_data; + char buf[32]; + size_t buf_size; + bool val; + + buf_size = min(count, (sizeof(buf) - 1)); + if (copy_from_user(buf, ubuf, buf_size)) + return -EFAULT; + + buf[buf_size] = '\0'; + if (strtobool(buf, &val) != 0) { + ath10k_warn(ar, "Wrong BTC feature setting\n"); + return -EINVAL; + } + + mutex_lock(&ar->conf_mutex); + if (val != ar->btc_feature) { + ar->btc_feature = val; + queue_work(ar->workqueue, &ar->restart_work); + } + mutex_unlock(&ar->conf_mutex); + + return count; +} + +static ssize_t ath10k_read_btc_feature(struct file *file, char __user *ubuf, + size_t count, loff_t *ppos) +{ + char buf[32]; + struct ath10k *ar = file->private_data; + int len = 0; + + mutex_lock(&ar->conf_mutex); + len = scnprintf(buf, sizeof(buf) - len, "%d\n", + ar->btc_feature); + mutex_unlock(&ar->conf_mutex); + + return simple_read_from_buffer(ubuf, count, ppos, buf, len); +} + +static const struct file_operations fops_btc_feature = { + .read = ath10k_read_btc_feature, + .write = ath10k_write_btc_feature, + .open = simple_open +}; + int ath10k_debug_create(struct ath10k *ar) { ar->debug.fw_crash_data = vzalloc(sizeof(*ar->debug.fw_crash_data)); @@ -2195,6 +2245,8 @@ int ath10k_debug_register(struct ath10k *ar) debugfs_create_file("quiet_period", S_IRUGO | S_IWUSR, ar->debug.debugfs_phy, ar, &fops_quiet_period); + debugfs_create_file("btc_feature", S_IRUGO | S_IWUSR, + ar->debug.debugfs_phy, ar, &fops_btc_feature); return 0; } diff --git a/drivers/net/wireless/ath/ath10k/wmi.c b/drivers/net/wireless/ath/ath10k/wmi.c index 0fabe689179c..e3c880230ee6 100644 --- a/drivers/net/wireless/ath/ath10k/wmi.c +++ b/drivers/net/wireless/ath/ath10k/wmi.c @@ -3933,7 +3933,8 @@ static struct sk_buff *ath10k_wmi_10_2_op_gen_init(struct ath10k *ar) cmd = (struct wmi_init_cmd_10_2 *)buf->data; features = WMI_10_2_RX_BATCH_MODE; - if (test_bit(WMI_SERVICE_COEX_GPIO, ar->wmi.svc_map)) + if (ar->btc_feature && + test_bit(WMI_SERVICE_COEX_GPIO, ar->wmi.svc_map)) features |= WMI_10_2_COEX_GPIO; cmd->resource_config.feature_mask = __cpu_to_le32(features); -- 1.9.1 _______________________________________________ ath10k mailing list ath10k@lists.infradead.org http://lists.infradead.org/mailman/listinfo/ath10k
next reply other threads:[~2015-05-28 19:21 UTC|newest] Thread overview: 10+ messages / expand[flat|nested] mbox.gz Atom feed top 2015-05-28 19:19 Yanbo Li [this message] 2015-05-28 19:19 ` [PATCH v2] ath10k: Debugfs entry to enable/disable WLAN&Blutooth Coexist feature Yanbo Li 2015-06-02 9:39 ` Jakub Kiciński 2015-06-02 9:39 ` Jakub Kiciński 2015-06-02 12:10 ` Kalle Valo 2015-06-02 12:10 ` Kalle Valo 2015-06-03 0:18 ` Li, Yanbo 2015-06-03 0:18 ` Li, Yanbo [not found] ` <CAFqt6zbpEfX_DPwZwzVZkcUD3uuYa=-Ujuo9PXcB+-HtM9b8tA@mail.gmail.com> 2015-06-03 9:56 ` Kalle Valo 2015-06-03 9:56 ` Kalle Valo
Reply instructions: You may reply publicly to this message via plain-text email using any one of the following methods: * Save the following mbox file, import it into your mail client, and reply-to-all from there: mbox Avoid top-posting and favor interleaved quoting: https://en.wikipedia.org/wiki/Posting_style#Interleaved_style * Reply using the --to, --cc, and --in-reply-to switches of git-send-email(1): git send-email \ --in-reply-to=1432840745-21725-1-git-send-email-yanbol@qca.qualcomm.com \ --to=yanbol@qca.qualcomm.com \ --cc=ath10k@lists.infradead.org \ --cc=dreamfly281@gmail.com \ --cc=kvalo@qca.qualcomm.com \ --cc=linux-wireless@vger.kernel.org \ /path/to/YOUR_REPLY https://kernel.org/pub/software/scm/git/docs/git-send-email.html * If your mail client supports setting the In-Reply-To header via mailto: links, try the mailto: linkBe sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes, see mirroring instructions on how to clone and mirror all data and code used by this external index.