* [PATCH v3 1/2] dt-bindings: net: qualcomm: Add WCN3988
2023-08-02 6:56 [PATCH v3 0/2] Add WCN3988 Bluetooth support for Fairphone 4 Luca Weiss
@ 2023-08-02 6:56 ` Luca Weiss
2023-08-02 6:56 ` [PATCH v3 2/2] Bluetooth: btqca: Add WCN3988 support Luca Weiss
2023-08-02 20:30 ` [PATCH v3 0/2] Add WCN3988 Bluetooth support for Fairphone 4 patchwork-bot+bluetooth
2 siblings, 0 replies; 4+ messages in thread
From: Luca Weiss @ 2023-08-02 6:56 UTC (permalink / raw)
To: David S. Miller, Eric Dumazet, Jakub Kicinski, Paolo Abeni,
Rob Herring, Krzysztof Kozlowski, Marcel Holtmann, Johan Hedberg,
Luiz Augusto von Dentz, Andy Gross, Bjorn Andersson,
Konrad Dybcio, Conor Dooley, Balakrishna Godavarthi, Rocky Liao
Cc: ~postmarketos/upstreaming, phone-devel, netdev, devicetree,
linux-kernel, linux-bluetooth, linux-arm-msm, Luca Weiss,
Krzysztof Kozlowski
Add the compatible for the Bluetooth part of the Qualcomm WCN3988
chipset.
Acked-by: Krzysztof Kozlowski <krzysztof.kozlowski@linaro.org>
Signed-off-by: Luca Weiss <luca.weiss@fairphone.com>
---
Documentation/devicetree/bindings/net/bluetooth/qualcomm-bluetooth.yaml | 2 ++
1 file changed, 2 insertions(+)
diff --git a/Documentation/devicetree/bindings/net/bluetooth/qualcomm-bluetooth.yaml b/Documentation/devicetree/bindings/net/bluetooth/qualcomm-bluetooth.yaml
index 56cbb42b5aea..2735c6a4f336 100644
--- a/Documentation/devicetree/bindings/net/bluetooth/qualcomm-bluetooth.yaml
+++ b/Documentation/devicetree/bindings/net/bluetooth/qualcomm-bluetooth.yaml
@@ -19,6 +19,7 @@ properties:
- qcom,qca2066-bt
- qcom,qca6174-bt
- qcom,qca9377-bt
+ - qcom,wcn3988-bt
- qcom,wcn3990-bt
- qcom,wcn3991-bt
- qcom,wcn3998-bt
@@ -111,6 +112,7 @@ allOf:
compatible:
contains:
enum:
+ - qcom,wcn3988-bt
- qcom,wcn3990-bt
- qcom,wcn3991-bt
- qcom,wcn3998-bt
--
2.41.0
^ permalink raw reply related [flat|nested] 4+ messages in thread* [PATCH v3 2/2] Bluetooth: btqca: Add WCN3988 support
2023-08-02 6:56 [PATCH v3 0/2] Add WCN3988 Bluetooth support for Fairphone 4 Luca Weiss
2023-08-02 6:56 ` [PATCH v3 1/2] dt-bindings: net: qualcomm: Add WCN3988 Luca Weiss
@ 2023-08-02 6:56 ` Luca Weiss
2023-08-02 20:30 ` [PATCH v3 0/2] Add WCN3988 Bluetooth support for Fairphone 4 patchwork-bot+bluetooth
2 siblings, 0 replies; 4+ messages in thread
From: Luca Weiss @ 2023-08-02 6:56 UTC (permalink / raw)
To: David S. Miller, Eric Dumazet, Jakub Kicinski, Paolo Abeni,
Rob Herring, Krzysztof Kozlowski, Marcel Holtmann, Johan Hedberg,
Luiz Augusto von Dentz, Andy Gross, Bjorn Andersson,
Konrad Dybcio, Conor Dooley, Balakrishna Godavarthi, Rocky Liao
Cc: ~postmarketos/upstreaming, phone-devel, netdev, devicetree,
linux-kernel, linux-bluetooth, linux-arm-msm, Luca Weiss
Add support for the Bluetooth chip codenamed APACHE which is part of
WCN3988.
The firmware for this chip has a slightly different naming scheme
compared to most others. For ROM Version 0x0200 we need to use
apbtfw10.tlv + apnv10.bin and for ROM version 0x201 apbtfw11.tlv +
apnv11.bin
Signed-off-by: Luca Weiss <luca.weiss@fairphone.com>
---
drivers/bluetooth/btqca.c | 13 +++++++++++--
drivers/bluetooth/btqca.h | 12 ++++++++++--
drivers/bluetooth/hci_qca.c | 12 ++++++++++++
3 files changed, 33 insertions(+), 4 deletions(-)
diff --git a/drivers/bluetooth/btqca.c b/drivers/bluetooth/btqca.c
index e7e58a956d15..6f2187fab55f 100644
--- a/drivers/bluetooth/btqca.c
+++ b/drivers/bluetooth/btqca.c
@@ -594,14 +594,20 @@ int qca_uart_setup(struct hci_dev *hdev, uint8_t baudrate,
/* Firmware files to download are based on ROM version.
* ROM version is derived from last two bytes of soc_ver.
*/
- rom_ver = ((soc_ver & 0x00000f00) >> 0x04) | (soc_ver & 0x0000000f);
+ if (soc_type == QCA_WCN3988)
+ rom_ver = ((soc_ver & 0x00000f00) >> 0x05) | (soc_ver & 0x0000000f);
+ else
+ rom_ver = ((soc_ver & 0x00000f00) >> 0x04) | (soc_ver & 0x0000000f);
if (soc_type == QCA_WCN6750)
qca_send_patch_config_cmd(hdev);
/* Download rampatch file */
config.type = TLV_TYPE_PATCH;
- if (qca_is_wcn399x(soc_type)) {
+ if (soc_type == QCA_WCN3988) {
+ snprintf(config.fwname, sizeof(config.fwname),
+ "qca/apbtfw%02x.tlv", rom_ver);
+ } else if (qca_is_wcn399x(soc_type)) {
snprintf(config.fwname, sizeof(config.fwname),
"qca/crbtfw%02x.tlv", rom_ver);
} else if (soc_type == QCA_QCA6390) {
@@ -636,6 +642,9 @@ int qca_uart_setup(struct hci_dev *hdev, uint8_t baudrate,
if (firmware_name)
snprintf(config.fwname, sizeof(config.fwname),
"qca/%s", firmware_name);
+ else if (soc_type == QCA_WCN3988)
+ snprintf(config.fwname, sizeof(config.fwname),
+ "qca/apnv%02x.bin", rom_ver);
else if (qca_is_wcn399x(soc_type)) {
if (le32_to_cpu(ver.soc_id) == QCA_WCN3991_SOC_ID) {
snprintf(config.fwname, sizeof(config.fwname),
diff --git a/drivers/bluetooth/btqca.h b/drivers/bluetooth/btqca.h
index b884095bcd9d..fc6cf314eb0e 100644
--- a/drivers/bluetooth/btqca.h
+++ b/drivers/bluetooth/btqca.h
@@ -142,6 +142,7 @@ enum qca_btsoc_type {
QCA_INVALID = -1,
QCA_AR3002,
QCA_ROME,
+ QCA_WCN3988,
QCA_WCN3990,
QCA_WCN3998,
QCA_WCN3991,
@@ -162,8 +163,15 @@ int qca_set_bdaddr(struct hci_dev *hdev, const bdaddr_t *bdaddr);
int qca_send_pre_shutdown_cmd(struct hci_dev *hdev);
static inline bool qca_is_wcn399x(enum qca_btsoc_type soc_type)
{
- return soc_type == QCA_WCN3990 || soc_type == QCA_WCN3991 ||
- soc_type == QCA_WCN3998;
+ switch (soc_type) {
+ case QCA_WCN3988:
+ case QCA_WCN3990:
+ case QCA_WCN3991:
+ case QCA_WCN3998:
+ return true;
+ default:
+ return false;
+ }
}
static inline bool qca_is_wcn6750(enum qca_btsoc_type soc_type)
{
diff --git a/drivers/bluetooth/hci_qca.c b/drivers/bluetooth/hci_qca.c
index 9b785c947d96..011822519602 100644
--- a/drivers/bluetooth/hci_qca.c
+++ b/drivers/bluetooth/hci_qca.c
@@ -1874,6 +1874,17 @@ static const struct hci_uart_proto qca_proto = {
.dequeue = qca_dequeue,
};
+static const struct qca_device_data qca_soc_data_wcn3988 __maybe_unused = {
+ .soc_type = QCA_WCN3988,
+ .vregs = (struct qca_vreg []) {
+ { "vddio", 15000 },
+ { "vddxo", 80000 },
+ { "vddrf", 300000 },
+ { "vddch0", 450000 },
+ },
+ .num_vregs = 4,
+};
+
static const struct qca_device_data qca_soc_data_wcn3990 __maybe_unused = {
.soc_type = QCA_WCN3990,
.vregs = (struct qca_vreg []) {
@@ -2398,6 +2409,7 @@ static const struct of_device_id qca_bluetooth_of_match[] = {
{ .compatible = "qcom,qca6174-bt" },
{ .compatible = "qcom,qca6390-bt", .data = &qca_soc_data_qca6390},
{ .compatible = "qcom,qca9377-bt" },
+ { .compatible = "qcom,wcn3988-bt", .data = &qca_soc_data_wcn3988},
{ .compatible = "qcom,wcn3990-bt", .data = &qca_soc_data_wcn3990},
{ .compatible = "qcom,wcn3991-bt", .data = &qca_soc_data_wcn3991},
{ .compatible = "qcom,wcn3998-bt", .data = &qca_soc_data_wcn3998},
--
2.41.0
^ permalink raw reply related [flat|nested] 4+ messages in thread* Re: [PATCH v3 0/2] Add WCN3988 Bluetooth support for Fairphone 4
2023-08-02 6:56 [PATCH v3 0/2] Add WCN3988 Bluetooth support for Fairphone 4 Luca Weiss
2023-08-02 6:56 ` [PATCH v3 1/2] dt-bindings: net: qualcomm: Add WCN3988 Luca Weiss
2023-08-02 6:56 ` [PATCH v3 2/2] Bluetooth: btqca: Add WCN3988 support Luca Weiss
@ 2023-08-02 20:30 ` patchwork-bot+bluetooth
2 siblings, 0 replies; 4+ messages in thread
From: patchwork-bot+bluetooth @ 2023-08-02 20:30 UTC (permalink / raw)
To: Luca Weiss
Cc: davem, edumazet, kuba, pabeni, robh+dt, krzysztof.kozlowski+dt,
marcel, johan.hedberg, luiz.dentz, agross, andersson,
konrad.dybcio, conor+dt, quic_bgodavar, quic_rjliao,
~postmarketos/upstreaming, phone-devel, netdev, devicetree,
linux-kernel, linux-bluetooth, linux-arm-msm, krzysztof.kozlowski
Hello:
This series was applied to bluetooth/bluetooth-next.git (master)
by Luiz Augusto von Dentz <luiz.von.dentz@intel.com>:
On Wed, 02 Aug 2023 08:56:27 +0200 you wrote:
> Add support in the btqca/hci_qca driver for the WCN3988 and add it to
> the sm7225 Fairphone 4 devicetree.
>
> Devicetree patches go via Qualcomm tree, the rest via their respective
> trees.
>
> --
> Previously with the RFC version I've had problems before with Bluetooth
> scanning failing like the following:
>
> [...]
Here is the summary with links:
- [v3,1/2] dt-bindings: net: qualcomm: Add WCN3988
https://git.kernel.org/bluetooth/bluetooth-next/c/d2a31b6f9701
- [v3,2/2] Bluetooth: btqca: Add WCN3988 support
https://git.kernel.org/bluetooth/bluetooth-next/c/f2e1dd87c9cd
You are awesome, thank you!
--
Deet-doot-dot, I am a bot.
https://korg.docs.kernel.org/patchwork/pwbot.html
^ permalink raw reply [flat|nested] 4+ messages in thread