Skip to contentSkip to conversation

Bluetooth: Add support for RTL8821CS

PATCH Applied Chris Morgan 6 participants 12 messages Feb 28, 2023 – Mar 13, 2023

Subsystems (4)

v4 of 5 Applied 3/3 Latest is v5 →

lore
Share & tools
lore
#0 lore raw

v4 cover Bluetooth: Add support for RTL8821CS

From: Chris Morgan <[email protected]>

This patch series is to add support for the RTL8821CS Bluetooth controller found on the RTL8821CS WiFi/Bluetooth combo chip.

This has been tested with firmware version 0x75b8f098 which has been submitted by Realtek for inclusion in linux-firmware.

https://lore.kernel.org/linux-firmware/[email protected]/

Changes from V3:
- Corrected bindings so that all but the 8821 use enum, and 8821 uses items.

Changes from V2:
- Corrected devicetree documentation to change compatible from const back to enum.
- Removed "reviewed-by" from Alistair Francis as binding documentation updated with changes.

Changes from V1:
- Switched to use a fallback string for the rtl8822cs so as to not add an extra entry to the of_device_id table. The driver is capable of selecting the correct firmware blob to load.
- Updated the messages to note a new version of the firmware was tested and that Realtek has submitted this firmware upstream.
- Updated the devicetree node on the Anbernic RGxx3 series to use the fallback string of realtek,rtl8822cs-bt.

Chris Morgan (3):
dt-bindings: net: realtek-bluetooth: Add RTL8821CS
Bluetooth: hci_h5: btrtl: Add support for RTL8821CS
arm64: dts: rockchip: Update compatible for bluetooth

 .../bindings/net/realtek-bluetooth.yaml       | 24 ++++++++++++-------
 .../dts/rockchip/rk3566-anbernic-rgxx3.dtsi   |  2 +-
 drivers/bluetooth/btrtl.c                     |  8 +++++++
 3 files changed, 24 insertions(+), 10 deletions(-)
Signature · 1 line
2.34.1
#1 lore raw

PATCH v4 1/3 dt-bindings: net: realtek-bluetooth: Add RTL8821CS

From: Chris Morgan <[email protected]>

Add compatible string for RTL8821CS for existing Realtek Bluetooth driver.

---
 .../bindings/net/realtek-bluetooth.yaml       | 24 ++++++++++++-------
 1 file changed, 15 insertions(+), 9 deletions(-)
Documentation/devicetree/bindings/net/realtek-bluetooth.yaml +15 -9
index 143b5667abad..8cc2b9924680 100644
@@ -4,24 +4,30 @@
 $id: http://devicetree.org/schemas/net/realtek-bluetooth.yaml#
 $schema: http://devicetree.org/meta-schemas/core.yaml#
 
-title: RTL8723BS/RTL8723CS/RTL8822CS Bluetooth
+title: RTL8723BS/RTL8723CS/RTL8821CS/RTL8822CS Bluetooth
 
 maintainers:
   - Vasily Khoruzhick <[email protected]>
   - Alistair Francis <[email protected]>
 
 description:
-  RTL8723CS/RTL8723CS/RTL8822CS is WiFi + BT chip. WiFi part is connected over
-  SDIO, while BT is connected over serial. It speaks H5 protocol with few
-  extra commands to upload firmware and change module speed.
+  RTL8723CS/RTL8723CS/RTL8821CS/RTL8822CS is a WiFi + BT chip. WiFi part
+  is connected over SDIO, while BT is connected over serial. It speaks
+  H5 protocol with few extra commands to upload firmware and change
+  module speed.
 
 properties:
   compatible:
-    enum:
-      - realtek,rtl8723bs-bt
-      - realtek,rtl8723cs-bt
-      - realtek,rtl8723ds-bt
-      - realtek,rtl8822cs-bt
+    oneOf:
+      - enum:
+          - realtek,rtl8723bs-bt
+          - realtek,rtl8723cs-bt
+          - realtek,rtl8723ds-bt
+          - realtek,rtl8822cs-bt
+      - items:
+          - enum:
+              - realtek,rtl8821cs-bt
+          - const: realtek,rtl8822cs-bt
 
   device-wake-gpios:
     maxItems: 1
Signature · 1 line
2.34.1
Reviewed-by on v4 1/3
#2 lore raw

Re: [PATCH 1/3 V4] dt-bindings: net: realtek-bluetooth: Add RTL8821CS

Quoted 6 lines · Chris Morgan

From: Chris Morgan <[email protected]>

Add compatible string for RTL8821CS for existing Realtek Bluetooth driver.

Best regards,
Krzysztof

_______________________________________________
Linux-rockchip mailing list
[email protected]
http://lists.infradead.org/mailman/listinfo/linux-rockchip

#3 lore raw
In reply to Chris Morgan

This is automated email and please do not reply to this email!

Dear submitter,

Thank you for submitting the patches to the linux bluetooth mailing list. This is a CI test results with your patch series:
PW Link:https://patchwork.kernel.org/project/bluetooth/list/?series=725545

---Test result---

Test Summary:

CheckPatch                    PASS      1.99 seconds
GitLint                       PASS      1.01 seconds
SubjectPrefix                 FAIL      0.63 seconds
BuildKernel                   PASS      31.21 seconds
CheckAllWarning               PASS      34.32 seconds
CheckSparse                   WARNING   39.03 seconds
CheckSmatch                   WARNING   108.48 seconds
BuildKernel32                 PASS      30.38 seconds
TestRunnerSetup               PASS      439.61 seconds
TestRunner_l2cap-tester       PASS      16.25 seconds
TestRunner_iso-tester         PASS      16.86 seconds
TestRunner_bnep-tester        PASS      5.38 seconds
TestRunner_mgmt-tester        PASS      107.78 seconds
TestRunner_rfcomm-tester      PASS      8.72 seconds
TestRunner_sco-tester         PASS      7.95 seconds
TestRunner_ioctl-tester       PASS      9.31 seconds
TestRunner_mesh-tester        PASS      6.75 seconds
TestRunner_smp-tester         PASS      7.89 seconds
TestRunner_userchan-tester    PASS      6.04 seconds
IncrementalBuild              PASS      37.58 seconds

Details
##############################
Test: SubjectPrefix - FAIL
Desc: Check subject contains "Bluetooth" prefix
Output:
"Bluetooth: " prefix is not specified in the subject
"Bluetooth: " prefix is not specified in the subject
##############################
Test: CheckSparse - WARNING
Desc: Run sparse tool with linux kernel
Output:
drivers/bluetooth/btrtl.c: note: in included file:drivers/bluetooth/btrtl.h:47:45: warning: array of flexible structures
##############################
Test: CheckSmatch - WARNING
Desc: Run smatch tool with source
Output:
drivers/bluetooth/btrtl.c: note: in included file:drivers/bluetooth/btrtl.h:47:45: warning: array of flexible structures

---
Regards,
Linux Bluetooth

Reviewed-by on v4 1/3
#4 lore raw

Re: [PATCH 1/3 V4] dt-bindings: net: realtek-bluetooth: Add RTL8821CS

In reply to Chris Morgan
Quoted 6 lines · Chris Morgan

From: Chris Morgan <[email protected]>

Add compatible string for RTL8821CS for existing Realtek Bluetooth driver.

Alistair

Quoted 52 lines

---
.../bindings/net/realtek-bluetooth.yaml | 24 ++++++++++++-------

1 file changed, 15 insertions(+), 9 deletions(-)
Documentation/devicetree/bindings/net/realtek-bluetooth.yaml +0 -0
index 143b5667abad..8cc2b9924680 100644
@@ -4,24 +4,30 @@

$id: http://devicetree.org/schemas/net/realtek-bluetooth.yaml#
$schema: http://devicetree.org/meta-schemas/core.yaml#

Documentation/devicetree/bindings/net/realtek-bluetooth.yaml +1 -1
-title: RTL8723BS/RTL8723CS/RTL8822CS Bluetooth
+title: RTL8723BS/RTL8723CS/RTL8821CS/RTL8822CS Bluetooth

maintainers:
- Vasily Khoruzhick <[email protected]>
- Alistair Francis <[email protected]>

description:

Documentation/devicetree/bindings/net/realtek-bluetooth.yaml +4 -3
-  RTL8723CS/RTL8723CS/RTL8822CS is WiFi + BT chip. WiFi part is connected over
-  SDIO, while BT is connected over serial. It speaks H5 protocol with few
-  extra commands to upload firmware and change module speed.
+  RTL8723CS/RTL8723CS/RTL8821CS/RTL8822CS is a WiFi + BT chip. WiFi part
+  is connected over SDIO, while BT is connected over serial. It speaks
+  H5 protocol with few extra commands to upload firmware and change
+  module speed.

properties:
compatible:

Documentation/devicetree/bindings/net/realtek-bluetooth.yaml +10 -5
-    enum:
-      - realtek,rtl8723bs-bt
-      - realtek,rtl8723cs-bt
-      - realtek,rtl8723ds-bt
-      - realtek,rtl8822cs-bt
+    oneOf:
+      - enum:
+          - realtek,rtl8723bs-bt
+          - realtek,rtl8723cs-bt
+          - realtek,rtl8723ds-bt
+          - realtek,rtl8822cs-bt
+      - items:
+          - enum:
+              - realtek,rtl8821cs-bt
+          - const: realtek,rtl8822cs-bt
 
   device-wake-gpios:
     maxItems: 1
Signature · 1 line
2.34.1

_______________________________________________
Linux-rockchip mailing list
[email protected]
http://lists.infradead.org/mailman/listinfo/linux-rockchip

#5 lore raw

PATCH v4 2/3 Bluetooth: hci_h5: btrtl: Add support for RTL8821CS

In reply to Chris Morgan

From: Chris Morgan <[email protected]>

RTL8821CS is a WiFi + Bluetooth combo chip from Realtek that provides WiFi A/B/G/N/AC over an SDIO interface and Bluetooth 4.2 over a UART interface.

Note that the firmware this was tested with was firmware version 0x75b8f098.

---
 drivers/bluetooth/btrtl.c | 8 ++++++++
 1 file changed, 8 insertions(+)
drivers/bluetooth/btrtl.c +8 -0
index 69c3fe649ca7..72947d319fa6 100644
@@ -128,6 +128,14 @@ static const struct id_table ic_id_table[] = {
 	  .fw_name  = "rtl_bt/rtl8821c_fw.bin",
 	  .cfg_name = "rtl_bt/rtl8821c_config" },
 
+	/* 8821CS */
+	{ IC_INFO(RTL_ROM_LMP_8821A, 0xc, 0x8, HCI_UART),
+	  .config_needed = true,
+	  .has_rom_version = true,
+	  .has_msft_ext = true,
+	  .fw_name  = "rtl_bt/rtl8821cs_fw.bin",
+	  .cfg_name = "rtl_bt/rtl8821cs_config" },
+
 	/* 8761A */
 	{ IC_INFO(RTL_ROM_LMP_8761A, 0xa, 0x6, HCI_USB),
 	  .config_needed = false,
Signature · 1 line
2.34.1
#6 lore raw

Re: [PATCH 2/3 V4] Bluetooth: hci_h5: btrtl: Add support for RTL8821CS

I shudder to bring this up now, but I'm encountering a new bug and might have to withdraw this.

I'm receiving errors in dmesg of the following, and I can't seem to figure out the root cause:
Bluetooth: hci0: Out-of-order packet arrived

Any thoughts on what might cause it?
Thank you.

Quoted 35 lines · Chris Morgan

From: Chris Morgan <[email protected]>

RTL8821CS is a WiFi + Bluetooth combo chip from Realtek that provides WiFi A/B/G/N/AC over an SDIO interface and Bluetooth 4.2 over a UART interface.

Note that the firmware this was tested with was firmware version 0x75b8f098.

---
 drivers/bluetooth/btrtl.c | 8 ++++++++
 1 file changed, 8 insertions(+)
drivers/bluetooth/btrtl.c +8 -1
index 69c3fe649ca7..72947d319fa6 100644
@@ -128,6 +128,14 @@ static const struct id_table ic_id_table[] = {
          .fw_name  = "rtl_bt/rtl8821c_fw.bin",
          .cfg_name = "rtl_bt/rtl8821c_config" },
 
+       /* 8821CS */
+       { IC_INFO(RTL_ROM_LMP_8821A, 0xc, 0x8, HCI_UART),
+         .config_needed = true,
+         .has_rom_version = true,
+         .has_msft_ext = true,
+         .fw_name  = "rtl_bt/rtl8821cs_fw.bin",
+         .cfg_name = "rtl_bt/rtl8821cs_config" },
+
        /* 8761A */
        { IC_INFO(RTL_ROM_LMP_8761A, 0xa, 0x6, HCI_USB),
          .config_needed = false,
--
Quoted 2 lines

2.34.1

_______________________________________________
Linux-rockchip mailing list
[email protected]
http://lists.infradead.org/mailman/listinfo/linux-rockchip

#7 lore raw

Re: [PATCH 2/3 V4] Bluetooth: hci_h5: btrtl: Add support for RTL8821CS

I found the fix, simply put changing the compatible from realtek,rtl8822cs-bt to realtek,rtl8732bs-bt fixes it (because it sets the "H5_INFO_WAKEUP_DISABLE" flag). Is it too late for a V5, or should I submit this as a fix to the devicetree and devicetree documentation?

Thank you.

Quoted 49 lines · Chris Morgan

I shudder to bring this up now, but I'm encountering a new bug and might have to withdraw this.

I'm receiving errors in dmesg of the following, and I can't seem to figure out the root cause:
Bluetooth: hci0: Out-of-order packet arrived

Any thoughts on what might cause it?
Thank you.

Quoted 37 lines · Chris Morgan

From: Chris Morgan <[email protected]>

RTL8821CS is a WiFi + Bluetooth combo chip from Realtek that provides WiFi A/B/G/N/AC over an SDIO interface and Bluetooth 4.2 over a UART interface.

Note that the firmware this was tested with was firmware version 0x75b8f098.

---
 drivers/bluetooth/btrtl.c | 8 ++++++++
 1 file changed, 8 insertions(+)
drivers/bluetooth/btrtl.c +8 -1
index 69c3fe649ca7..72947d319fa6 100644
@@ -128,6 +128,14 @@ static const struct id_table ic_id_table[] = {
          .fw_name  = "rtl_bt/rtl8821c_fw.bin",
          .cfg_name = "rtl_bt/rtl8821c_config" },
 
+       /* 8821CS */
+       { IC_INFO(RTL_ROM_LMP_8821A, 0xc, 0x8, HCI_UART),
+         .config_needed = true,
+         .has_rom_version = true,
+         .has_msft_ext = true,
+         .fw_name  = "rtl_bt/rtl8821cs_fw.bin",
+         .cfg_name = "rtl_bt/rtl8821cs_config" },
+
        /* 8761A */
        { IC_INFO(RTL_ROM_LMP_8761A, 0xa, 0x6, HCI_USB),
          .config_needed = false,
--

2.34.1

#8 lore raw

Re: [PATCH 2/3 V4] Bluetooth: hci_h5: btrtl: Add support for RTL8821CS

Quoted 5 lines · Chris Morgan

I found the fix, simply put changing the compatible from realtek,rtl8822cs-bt to realtek,rtl8732bs-bt fixes it (because it sets the "H5_INFO_WAKEUP_DISABLE" flag). Is it too late for a V5, or should I submit this as a fix to the devicetree and devicetree documentation?

But is it actually compatible with rtl8723bs-bt though? I think you may need to add an entry for 8821cs to rtl_bluetooth_of_match in hci_h5.c

Quoted 38 lines

Thank you.

Quoted 35 lines · Chris Morgan

I shudder to bring this up now, but I'm encountering a new bug and might have to withdraw this.

I'm receiving errors in dmesg of the following, and I can't seem to figure out the root cause:
Bluetooth: hci0: Out-of-order packet arrived

Any thoughts on what might cause it?
Thank you.

Quoted 23 lines · Chris Morgan

From: Chris Morgan <[email protected]>

RTL8821CS is a WiFi + Bluetooth combo chip from Realtek that provides WiFi A/B/G/N/AC over an SDIO interface and Bluetooth 4.2 over a UART interface.

Note that the firmware this was tested with was firmware version 0x75b8f098.

---
 drivers/bluetooth/btrtl.c | 8 ++++++++
 1 file changed, 8 insertions(+)
drivers/bluetooth/btrtl.c +0 -0
index 69c3fe649ca7..72947d319fa6 100644
@@ -128,6 +128,14 @@ static const struct id_table ic_id_table[] = {
          .fw_name  = "rtl_bt/rtl8821c_fw.bin",
          .cfg_name = "rtl_bt/rtl8821c_config" },
 
Quoted 14 lines
Quoted 6 lines
Quoted 6 lines
drivers/bluetooth/btrtl.c +6 -0
+       /* 8821CS */
+       { IC_INFO(RTL_ROM_LMP_8821A, 0xc, 0x8, HCI_UART),
+         .config_needed = true,
+         .has_rom_version = true,
+         .has_msft_ext = true,
+         .fw_name  = "rtl_bt/rtl8821cs_fw.bin",
Quoted 8 lines
Quoted 8 lines
drivers/bluetooth/btrtl.c +2 -1
+         .cfg_name = "rtl_bt/rtl8821cs_config" },
+
        /* 8761A */
        { IC_INFO(RTL_ROM_LMP_8761A, 0xa, 0x6, HCI_USB),
          .config_needed = false,
--

2.34.1

_______________________________________________
Linux-rockchip mailing list
[email protected]
http://lists.infradead.org/mailman/listinfo/linux-rockchip

#9 lore raw

Re: [PATCH 2/3 V4] Bluetooth: hci_h5: btrtl: Add support for RTL8821CS

Quoted 10 lines · Vasily Khoruzhick
Quoted 5 lines · Chris Morgan

I found the fix, simply put changing the compatible from realtek,rtl8822cs-bt to realtek,rtl8732bs-bt fixes it (because it sets the "H5_INFO_WAKEUP_DISABLE" flag). Is it too late for a V5, or should I submit this as a fix to the devicetree and devicetree documentation?

But is it actually compatible with rtl8723bs-bt though? I think you may need to add an entry for 8821cs to rtl_bluetooth_of_match in hci_h5.c

The compatible string would be an exact copy of what is present for rtl8723bs-bt. Previously I was advised by the devicetree team to just use a fallback string rather than add a duplicate entry to the driver, so that's what I did. The driver itself can detect the difference between the 8821cs and 8723bs and load the appropriate firmware.

Technically the rtl8822cs-bt also works as long as you only want to "test" the driver and not use it. It's the power management stuff that causes it to fail roughly 9 out of every 10 times you try to use it for more than simple pairing (I tested 3 different controllers with the new compatible string for a total of 7 tests and it works consistently now).

If you're okay with the compatible string change, I'll update it and resubmit this as a V5. It shouldn't require a change to the driver, only the binding.

Thank you.

Quoted 53 lines
Quoted 53 lines

Thank you.

Quoted 49 lines · Chris Morgan

I shudder to bring this up now, but I'm encountering a new bug and might have to withdraw this.

I'm receiving errors in dmesg of the following, and I can't seem to figure out the root cause:
Bluetooth: hci0: Out-of-order packet arrived

Any thoughts on what might cause it?
Thank you.

Quoted 37 lines · Chris Morgan

From: Chris Morgan <[email protected]>

RTL8821CS is a WiFi + Bluetooth combo chip from Realtek that provides WiFi A/B/G/N/AC over an SDIO interface and Bluetooth 4.2 over a UART interface.

Note that the firmware this was tested with was firmware version 0x75b8f098.

---
 drivers/bluetooth/btrtl.c | 8 ++++++++
 1 file changed, 8 insertions(+)
drivers/bluetooth/btrtl.c +8 -1
index 69c3fe649ca7..72947d319fa6 100644
@@ -128,6 +128,14 @@ static const struct id_table ic_id_table[] = {
          .fw_name  = "rtl_bt/rtl8821c_fw.bin",
          .cfg_name = "rtl_bt/rtl8821c_config" },
 
+       /* 8821CS */
+       { IC_INFO(RTL_ROM_LMP_8821A, 0xc, 0x8, HCI_UART),
+         .config_needed = true,
+         .has_rom_version = true,
+         .has_msft_ext = true,
+         .fw_name  = "rtl_bt/rtl8821cs_fw.bin",
+         .cfg_name = "rtl_bt/rtl8821cs_config" },
+
        /* 8761A */
        { IC_INFO(RTL_ROM_LMP_8761A, 0xa, 0x6, HCI_USB),
          .config_needed = false,
--

2.34.1

#10 lore raw

PATCH v4 3/3 arm64: dts: rockchip: Update compatible for bluetooth

In reply to Chris Morgan

From: Chris Morgan <[email protected]>

Update the compatible for the Realtek RTL8821CS bluetooth node.

---
 arch/arm64/boot/dts/rockchip/rk3566-anbernic-rgxx3.dtsi | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)
arch/arm64/boot/dts/rockchip/rk3566-anbernic-rgxx3.dtsi +1 -1
index 41262a69d33e..8fadd8afb190 100644
@@ -716,7 +716,7 @@ &uart1 {
 	status = "okay";
 
 	bluetooth {
-		compatible = "realtek,rtl8821cs-bt";
+		compatible = "realtek,rtl8821cs-bt", "realtek,rtl8822cs-bt";
 		device-wake-gpios = <&gpio4 4 GPIO_ACTIVE_HIGH>;
 		enable-gpios = <&gpio4 3 GPIO_ACTIVE_HIGH>;
 		host-wake-gpios = <&gpio4 5 GPIO_ACTIVE_HIGH>;
Signature · 1 line
2.34.1
#11 lore raw
In reply to Chris Morgan
This series was applied to bluetooth/bluetooth-next.git (master) by Luiz Augusto von Dentz <[email protected]>:

Hello:

This series was applied to bluetooth/bluetooth-next.git (master) by Luiz Augusto von Dentz <[email protected]>:

Quoted 9 lines · On Tue, 28 Feb 2023 09:22:02 -0600 you wrote:

From: Chris Morgan <[email protected]>

This patch series is to add support for the RTL8821CS Bluetooth controller found on the RTL8821CS WiFi/Bluetooth combo chip.

This has been tested with firmware version 0x75b8f098 which has been submitted by Realtek for inclusion in linux-firmware.

[...]

Here is the summary with links:
- [1/3,V4] dt-bindings: net: realtek-bluetooth: Add RTL8821CS

    https://git.kernel.org/bluetooth/bluetooth-next/c/b564bad5b54d
  - [2/3,V4] Bluetooth: hci_h5: btrtl: Add support for RTL8821CS
    https://git.kernel.org/bluetooth/bluetooth-next/c/8b449db459d9
  - [3/3,V4] arm64: dts: rockchip: Update compatible for bluetooth
    https://git.kernel.org/bluetooth/bluetooth-next/c/d305437d4d2a

You are awesome, thank you!

Signature · 2 lines
Deet-doot-dot, I am a bot.
https://korg.docs.kernel.org/patchwork/pwbot.html