kernel: backport MediaTek USB Bluetooth additions
Backport commits from linux.git adding support for various MT7921 Bluetooth USB IDs. Signed-off-by: Daniel Golle <daniel@makrotopia.org>
This commit is contained in:
parent
f97fbd8a9a
commit
f755c41038
|
@ -0,0 +1,51 @@
|
|||
From 5cb03751455c299b1bf10cb48631bf359cfb11b5 Mon Sep 17 00:00:00 2001
|
||||
From: "mark-yw.chen" <mark-yw.chen@mediatek.com>
|
||||
Date: Wed, 1 Sep 2021 11:32:25 +0800
|
||||
Subject: [PATCH 1/5] Bluetooth: btusb: Support public address configuration
|
||||
for MediaTek Chip.
|
||||
|
||||
The MediaTek chip support vendor specific HCI command(0xfc1a) to
|
||||
change the public address. Add hdev->set_bdaddr handler for MediaTek
|
||||
Chip. After doing a power cycle or MediaTek Bluetooth reset, BD_ADDR
|
||||
will bring back the original one.
|
||||
|
||||
Signed-off-by: mark-yw.chen <mark-yw.chen@mediatek.com>
|
||||
Signed-off-by: Marcel Holtmann <marcel@holtmann.org>
|
||||
---
|
||||
drivers/bluetooth/btusb.c | 18 ++++++++++++++++++
|
||||
1 file changed, 18 insertions(+)
|
||||
|
||||
--- a/drivers/bluetooth/btusb.c
|
||||
+++ b/drivers/bluetooth/btusb.c
|
||||
@@ -2263,6 +2263,23 @@ struct btmtk_section_map {
|
||||
};
|
||||
} __packed;
|
||||
|
||||
+static int btusb_set_bdaddr_mtk(struct hci_dev *hdev, const bdaddr_t *bdaddr)
|
||||
+{
|
||||
+ struct sk_buff *skb;
|
||||
+ long ret;
|
||||
+
|
||||
+ skb = __hci_cmd_sync(hdev, 0xfc1a, sizeof(bdaddr), bdaddr, HCI_INIT_TIMEOUT);
|
||||
+ if (IS_ERR(skb)) {
|
||||
+ ret = PTR_ERR(skb);
|
||||
+ bt_dev_err(hdev, "changing Mediatek device address failed (%ld)",
|
||||
+ ret);
|
||||
+ return ret;
|
||||
+ }
|
||||
+ kfree_skb(skb);
|
||||
+
|
||||
+ return 0;
|
||||
+}
|
||||
+
|
||||
static void btusb_mtk_wmt_recv(struct urb *urb)
|
||||
{
|
||||
struct hci_dev *hdev = urb->context;
|
||||
@@ -3900,6 +3917,7 @@ static int btusb_probe(struct usb_interf
|
||||
hdev->shutdown = btusb_mtk_shutdown;
|
||||
hdev->manufacturer = 70;
|
||||
hdev->cmd_timeout = btusb_mtk_cmd_timeout;
|
||||
+ hdev->set_bdaddr = btusb_set_bdaddr_mtk;
|
||||
set_bit(HCI_QUIRK_NON_PERSISTENT_SETUP, &hdev->quirks);
|
||||
data->recv_acl = btusb_recv_acl_mtk;
|
||||
}
|
|
@ -0,0 +1,29 @@
|
|||
From af774a731f7b4c2a90a8476cd44045ba8d1263ba Mon Sep 17 00:00:00 2001
|
||||
From: David Yang <davidcomponentone@gmail.com>
|
||||
Date: Wed, 13 Oct 2021 08:56:33 +0800
|
||||
Subject: [PATCH 2/5] Bluetooth: btusb: Fix application of sizeof to pointer
|
||||
|
||||
The coccinelle check report:
|
||||
"./drivers/bluetooth/btusb.c:2239:36-42:
|
||||
ERROR: application of sizeof to pointer".
|
||||
Using the real size to fix it.
|
||||
|
||||
Fixes: 5a87679ffd443 ("Bluetooth: btusb: Support public address configuration for MediaTek Chip.")
|
||||
Reported-by: Zeal Robot <zealci@zte.com.cn>
|
||||
Signed-off-by: David Yang <davidcomponentone@gmail.com>
|
||||
Signed-off-by: Marcel Holtmann <marcel@holtmann.org>
|
||||
---
|
||||
drivers/bluetooth/btusb.c | 2 +-
|
||||
1 file changed, 1 insertion(+), 1 deletion(-)
|
||||
|
||||
--- a/drivers/bluetooth/btusb.c
|
||||
+++ b/drivers/bluetooth/btusb.c
|
||||
@@ -2268,7 +2268,7 @@ static int btusb_set_bdaddr_mtk(struct h
|
||||
struct sk_buff *skb;
|
||||
long ret;
|
||||
|
||||
- skb = __hci_cmd_sync(hdev, 0xfc1a, sizeof(bdaddr), bdaddr, HCI_INIT_TIMEOUT);
|
||||
+ skb = __hci_cmd_sync(hdev, 0xfc1a, 6, bdaddr, HCI_INIT_TIMEOUT);
|
||||
if (IS_ERR(skb)) {
|
||||
ret = PTR_ERR(skb);
|
||||
bt_dev_err(hdev, "changing Mediatek device address failed (%ld)",
|
|
@ -0,0 +1,70 @@
|
|||
From e57186fc02cedff191c469a26cce615371e41740 Mon Sep 17 00:00:00 2001
|
||||
From: Yake Yang <yake.yang@mediatek.com>
|
||||
Date: Wed, 23 Feb 2022 07:55:59 +0800
|
||||
Subject: [PATCH 3/5] Bluetooth: btusb: Add a new PID/VID 13d3/3567 for MT7921
|
||||
|
||||
Add VID 13D3 & PID 3567 for MediaTek MT7921 USB Bluetooth chip.
|
||||
|
||||
The information in /sys/kernel/debug/usb/devices about the Bluetooth
|
||||
device is listed as the below.
|
||||
|
||||
T: Bus=05 Lev=01 Prnt=01 Port=00 Cnt=01 Dev#= 2 Spd=480 MxCh= 0
|
||||
D: Ver= 2.10 Cls=ef(misc ) Sub=02 Prot=01 MxPS=64 #Cfgs= 1
|
||||
P: Vendor=13d3 ProdID=3567 Rev= 1.00
|
||||
S: Manufacturer=MediaTek Inc.
|
||||
S: Product=Wireless_Device
|
||||
S: SerialNumber=000000000
|
||||
C:* #Ifs= 3 Cfg#= 1 Atr=e0 MxPwr=100mA
|
||||
A: FirstIf#= 0 IfCount= 3 Cls=e0(wlcon) Sub=01 Prot=01
|
||||
I:* If#= 0 Alt= 0 #EPs= 3 Cls=e0(wlcon) Sub=01 Prot=01 Driver=btusb
|
||||
E: Ad=81(I) Atr=03(Int.) MxPS= 16 Ivl=125us
|
||||
E: Ad=82(I) Atr=02(Bulk) MxPS= 512 Ivl=0ms
|
||||
E: Ad=02(O) Atr=02(Bulk) MxPS= 512 Ivl=0ms
|
||||
I:* If#= 1 Alt= 0 #EPs= 2 Cls=e0(wlcon) Sub=01 Prot=01 Driver=btusb
|
||||
E: Ad=83(I) Atr=01(Isoc) MxPS= 0 Ivl=1ms
|
||||
E: Ad=03(O) Atr=01(Isoc) MxPS= 0 Ivl=1ms
|
||||
I: If#= 1 Alt= 1 #EPs= 2 Cls=e0(wlcon) Sub=01 Prot=01 Driver=btusb
|
||||
E: Ad=83(I) Atr=01(Isoc) MxPS= 9 Ivl=1ms
|
||||
E: Ad=03(O) Atr=01(Isoc) MxPS= 9 Ivl=1ms
|
||||
I: If#= 1 Alt= 2 #EPs= 2 Cls=e0(wlcon) Sub=01 Prot=01 Driver=btusb
|
||||
E: Ad=83(I) Atr=01(Isoc) MxPS= 17 Ivl=1ms
|
||||
E: Ad=03(O) Atr=01(Isoc) MxPS= 17 Ivl=1ms
|
||||
I: If#= 1 Alt= 3 #EPs= 2 Cls=e0(wlcon) Sub=01 Prot=01 Driver=btusb
|
||||
E: Ad=83(I) Atr=01(Isoc) MxPS= 25 Ivl=1ms
|
||||
E: Ad=03(O) Atr=01(Isoc) MxPS= 25 Ivl=1ms
|
||||
I: If#= 1 Alt= 4 #EPs= 2 Cls=e0(wlcon) Sub=01 Prot=01 Driver=btusb
|
||||
E: Ad=83(I) Atr=01(Isoc) MxPS= 33 Ivl=1ms
|
||||
E: Ad=03(O) Atr=01(Isoc) MxPS= 33 Ivl=1ms
|
||||
I: If#= 1 Alt= 5 #EPs= 2 Cls=e0(wlcon) Sub=01 Prot=01 Driver=btusb
|
||||
E: Ad=83(I) Atr=01(Isoc) MxPS= 49 Ivl=1ms
|
||||
E: Ad=03(O) Atr=01(Isoc) MxPS= 49 Ivl=1ms
|
||||
I: If#= 1 Alt= 6 #EPs= 2 Cls=e0(wlcon) Sub=01 Prot=01 Driver=btusb
|
||||
E: Ad=83(I) Atr=01(Isoc) MxPS= 63 Ivl=1ms
|
||||
E: Ad=03(O) Atr=01(Isoc) MxPS= 63 Ivl=1ms
|
||||
I:* If#= 2 Alt= 0 #EPs= 2 Cls=e0(wlcon) Sub=01 Prot=01 Driver=(none)
|
||||
E: Ad=8a(I) Atr=03(Int.) MxPS= 64 Ivl=125us
|
||||
E: Ad=0a(O) Atr=03(Int.) MxPS= 64 Ivl=125us
|
||||
I: If#= 2 Alt= 1 #EPs= 2 Cls=e0(wlcon) Sub=01 Prot=01 Driver=(none)
|
||||
E: Ad=8a(I) Atr=03(Int.) MxPS= 64 Ivl=125us
|
||||
E: Ad=0a(O) Atr=03(Int.) MxPS= 64 Ivl=125us
|
||||
|
||||
Co-developed-by: Sean Wang <sean.wang@mediatek.com>
|
||||
Signed-off-by: Sean Wang <sean.wang@mediatek.com>
|
||||
Signed-off-by: Yake Yang <yake.yang@mediatek.com>
|
||||
Signed-off-by: Marcel Holtmann <marcel@holtmann.org>
|
||||
---
|
||||
drivers/bluetooth/btusb.c | 3 +++
|
||||
1 file changed, 3 insertions(+)
|
||||
|
||||
--- a/drivers/bluetooth/btusb.c
|
||||
+++ b/drivers/bluetooth/btusb.c
|
||||
@@ -460,6 +460,9 @@ static const struct usb_device_id blackl
|
||||
{ USB_DEVICE(0x13d3, 0x3564), .driver_info = BTUSB_MEDIATEK |
|
||||
BTUSB_WIDEBAND_SPEECH |
|
||||
BTUSB_VALID_LE_STATES },
|
||||
+ { USB_DEVICE(0x13d3, 0x3567), .driver_info = BTUSB_MEDIATEK |
|
||||
+ BTUSB_WIDEBAND_SPEECH |
|
||||
+ BTUSB_VALID_LE_STATES },
|
||||
{ USB_DEVICE(0x0489, 0xe0cd), .driver_info = BTUSB_MEDIATEK |
|
||||
BTUSB_WIDEBAND_SPEECH |
|
||||
BTUSB_VALID_LE_STATES },
|
|
@ -0,0 +1,68 @@
|
|||
From e507366cd1e8e1d4eebe537c08fd142cf0b617fa Mon Sep 17 00:00:00 2001
|
||||
From: Sean Wang <sean.wang@mediatek.com>
|
||||
Date: Thu, 28 Apr 2022 02:38:39 +0800
|
||||
Subject: [PATCH 4/5] Bluetooth: btusb: Add a new PID/VID 0489/e0c8 for MT7921
|
||||
|
||||
Add VID 0489 & PID e0c8 for MediaTek MT7921 USB Bluetooth chip.
|
||||
|
||||
The information in /sys/kernel/debug/usb/devices about the Bluetooth
|
||||
device is listed as the below.
|
||||
|
||||
T: Bus=01 Lev=01 Prnt=01 Port=13 Cnt=03 Dev#= 4 Spd=480 MxCh= 0
|
||||
D: Ver= 2.10 Cls=ef(misc ) Sub=02 Prot=01 MxPS=64 #Cfgs= 1
|
||||
P: Vendor=0489 ProdID=e0c8 Rev= 1.00
|
||||
S: Manufacturer=MediaTek Inc.
|
||||
S: Product=Wireless_Device
|
||||
S: SerialNumber=000000000
|
||||
C:* #Ifs= 3 Cfg#= 1 Atr=e0 MxPwr=100mA
|
||||
A: FirstIf#= 0 IfCount= 3 Cls=e0(wlcon) Sub=01 Prot=01
|
||||
I:* If#= 0 Alt= 0 #EPs= 3 Cls=e0(wlcon) Sub=01 Prot=01 Driver=btusb
|
||||
E: Ad=81(I) Atr=03(Int.) MxPS= 16 Ivl=125us
|
||||
E: Ad=82(I) Atr=02(Bulk) MxPS= 512 Ivl=0ms
|
||||
E: Ad=02(O) Atr=02(Bulk) MxPS= 512 Ivl=0ms
|
||||
I:* If#= 1 Alt= 0 #EPs= 2 Cls=e0(wlcon) Sub=01 Prot=01 Driver=btusb
|
||||
E: Ad=83(I) Atr=01(Isoc) MxPS= 0 Ivl=1ms
|
||||
E: Ad=03(O) Atr=01(Isoc) MxPS= 0 Ivl=1ms
|
||||
I: If#= 1 Alt= 1 #EPs= 2 Cls=e0(wlcon) Sub=01 Prot=01 Driver=btusb
|
||||
E: Ad=83(I) Atr=01(Isoc) MxPS= 9 Ivl=1ms
|
||||
E: Ad=03(O) Atr=01(Isoc) MxPS= 9 Ivl=1ms
|
||||
I: If#= 1 Alt= 2 #EPs= 2 Cls=e0(wlcon) Sub=01 Prot=01 Driver=btusb
|
||||
E: Ad=83(I) Atr=01(Isoc) MxPS= 17 Ivl=1ms
|
||||
E: Ad=03(O) Atr=01(Isoc) MxPS= 17 Ivl=1ms
|
||||
I: If#= 1 Alt= 3 #EPs= 2 Cls=e0(wlcon) Sub=01 Prot=01 Driver=btusb
|
||||
E: Ad=83(I) Atr=01(Isoc) MxPS= 25 Ivl=1ms
|
||||
E: Ad=03(O) Atr=01(Isoc) MxPS= 25 Ivl=1ms
|
||||
I: If#= 1 Alt= 4 #EPs= 2 Cls=e0(wlcon) Sub=01 Prot=01 Driver=btusb
|
||||
E: Ad=83(I) Atr=01(Isoc) MxPS= 33 Ivl=1ms
|
||||
E: Ad=03(O) Atr=01(Isoc) MxPS= 33 Ivl=1ms
|
||||
I: If#= 1 Alt= 5 #EPs= 2 Cls=e0(wlcon) Sub=01 Prot=01 Driver=btusb
|
||||
E: Ad=83(I) Atr=01(Isoc) MxPS= 49 Ivl=1ms
|
||||
E: Ad=03(O) Atr=01(Isoc) MxPS= 49 Ivl=1ms
|
||||
I: If#= 1 Alt= 6 #EPs= 2 Cls=e0(wlcon) Sub=01 Prot=01 Driver=btusb
|
||||
E: Ad=83(I) Atr=01(Isoc) MxPS= 63 Ivl=1ms
|
||||
E: Ad=03(O) Atr=01(Isoc) MxPS= 63 Ivl=1ms
|
||||
I:* If#= 2 Alt= 0 #EPs= 2 Cls=e0(wlcon) Sub=01 Prot=01 Driver=(none)
|
||||
E: Ad=8a(I) Atr=03(Int.) MxPS= 64 Ivl=125us
|
||||
E: Ad=0a(O) Atr=03(Int.) MxPS= 64 Ivl=125us
|
||||
I: If#= 2 Alt= 1 #EPs= 2 Cls=e0(wlcon) Sub=01 Prot=01 Driver=(none)
|
||||
E: Ad=8a(I) Atr=03(Int.) MxPS= 512 Ivl=125us
|
||||
E: Ad=0a(O) Atr=03(Int.) MxPS= 512 Ivl=125us
|
||||
|
||||
Signed-off-by: Sean Wang <sean.wang@mediatek.com>
|
||||
Signed-off-by: Marcel Holtmann <marcel@holtmann.org>
|
||||
---
|
||||
drivers/bluetooth/btusb.c | 3 +++
|
||||
1 file changed, 3 insertions(+)
|
||||
|
||||
--- a/drivers/bluetooth/btusb.c
|
||||
+++ b/drivers/bluetooth/btusb.c
|
||||
@@ -451,6 +451,9 @@ static const struct usb_device_id blackl
|
||||
BTUSB_VALID_LE_STATES },
|
||||
|
||||
/* Additional MediaTek MT7921 Bluetooth devices */
|
||||
+ { USB_DEVICE(0x0489, 0xe0c8), .driver_info = BTUSB_MEDIATEK |
|
||||
+ BTUSB_WIDEBAND_SPEECH |
|
||||
+ BTUSB_VALID_LE_STATES },
|
||||
{ USB_DEVICE(0x04ca, 0x3802), .driver_info = BTUSB_MEDIATEK |
|
||||
BTUSB_WIDEBAND_SPEECH |
|
||||
BTUSB_VALID_LE_STATES },
|
|
@ -0,0 +1,71 @@
|
|||
From ced9d535126a81a85b022cff1e2fd8e0da46c7ae Mon Sep 17 00:00:00 2001
|
||||
From: Daniel Golle <daniel@makrotopia.org>
|
||||
Date: Fri, 9 Sep 2022 18:25:21 +0100
|
||||
Subject: [PATCH] Bluetooth: btusb: Add a new VID/PID 0e8d/0608 for MT7921
|
||||
To: linux-mediatek@lists.infradead.org,
|
||||
linux-bluetooth@vger.kernel.org
|
||||
Cc: Matthias Brugger <matthias.bgg@gmail.com>,
|
||||
Luiz Augusto von Dentz <luiz.dentz@gmail.com>,
|
||||
Johan Hedberg <johan.hedberg@gmail.com>,
|
||||
Marcel Holtmann <marcel@holtmann.org>
|
||||
|
||||
Add a new PID/VID 0e8d/0608 for MT7921K chip found on AMD RZ608 module.
|
||||
|
||||
From /sys/kernel/debug/usb/devices:
|
||||
T: Bus=01 Lev=02 Prnt=02 Port=01 Cnt=01 Dev#= 3 Spd=480 MxCh= 0
|
||||
D: Ver= 2.10 Cls=ef(misc ) Sub=02 Prot=01 MxPS=64 #Cfgs= 1
|
||||
P: Vendor=0e8d ProdID=0608 Rev= 1.00
|
||||
S: Manufacturer=MediaTek Inc.
|
||||
S: Product=Wireless_Device
|
||||
S: SerialNumber=000000000
|
||||
C:* #Ifs= 3 Cfg#= 1 Atr=e0 MxPwr=100mA
|
||||
A: FirstIf#= 0 IfCount= 3 Cls=e0(wlcon) Sub=01 Prot=01
|
||||
I:* If#= 0 Alt= 0 #EPs= 3 Cls=e0(wlcon) Sub=01 Prot=01 Driver=btusb
|
||||
E: Ad=81(I) Atr=03(Int.) MxPS= 16 Ivl=125us
|
||||
E: Ad=82(I) Atr=02(Bulk) MxPS= 512 Ivl=0ms
|
||||
E: Ad=02(O) Atr=02(Bulk) MxPS= 512 Ivl=0ms
|
||||
I:* If#= 1 Alt= 0 #EPs= 2 Cls=e0(wlcon) Sub=01 Prot=01 Driver=btusb
|
||||
E: Ad=83(I) Atr=01(Isoc) MxPS= 0 Ivl=1ms
|
||||
E: Ad=03(O) Atr=01(Isoc) MxPS= 0 Ivl=1ms
|
||||
I: If#= 1 Alt= 1 #EPs= 2 Cls=e0(wlcon) Sub=01 Prot=01 Driver=btusb
|
||||
E: Ad=83(I) Atr=01(Isoc) MxPS= 9 Ivl=1ms
|
||||
E: Ad=03(O) Atr=01(Isoc) MxPS= 9 Ivl=1ms
|
||||
I: If#= 1 Alt= 2 #EPs= 2 Cls=e0(wlcon) Sub=01 Prot=01 Driver=btusb
|
||||
E: Ad=83(I) Atr=01(Isoc) MxPS= 17 Ivl=1ms
|
||||
E: Ad=03(O) Atr=01(Isoc) MxPS= 17 Ivl=1ms
|
||||
I: If#= 1 Alt= 3 #EPs= 2 Cls=e0(wlcon) Sub=01 Prot=01 Driver=btusb
|
||||
E: Ad=83(I) Atr=01(Isoc) MxPS= 25 Ivl=1ms
|
||||
E: Ad=03(O) Atr=01(Isoc) MxPS= 25 Ivl=1ms
|
||||
I: If#= 1 Alt= 4 #EPs= 2 Cls=e0(wlcon) Sub=01 Prot=01 Driver=btusb
|
||||
E: Ad=83(I) Atr=01(Isoc) MxPS= 33 Ivl=1ms
|
||||
E: Ad=03(O) Atr=01(Isoc) MxPS= 33 Ivl=1ms
|
||||
I: If#= 1 Alt= 5 #EPs= 2 Cls=e0(wlcon) Sub=01 Prot=01 Driver=btusb
|
||||
E: Ad=83(I) Atr=01(Isoc) MxPS= 49 Ivl=1ms
|
||||
E: Ad=03(O) Atr=01(Isoc) MxPS= 49 Ivl=1ms
|
||||
I: If#= 1 Alt= 6 #EPs= 2 Cls=e0(wlcon) Sub=01 Prot=01 Driver=btusb
|
||||
E: Ad=83(I) Atr=01(Isoc) MxPS= 63 Ivl=1ms
|
||||
E: Ad=03(O) Atr=01(Isoc) MxPS= 63 Ivl=1ms
|
||||
I:* If#= 2 Alt= 0 #EPs= 2 Cls=e0(wlcon) Sub=01 Prot=01 Driver=(none)
|
||||
E: Ad=8a(I) Atr=03(Int.) MxPS= 64 Ivl=125us
|
||||
E: Ad=0a(O) Atr=03(Int.) MxPS= 64 Ivl=125us
|
||||
I: If#= 2 Alt= 1 #EPs= 2 Cls=e0(wlcon) Sub=01 Prot=01 Driver=(none)
|
||||
E: Ad=8a(I) Atr=03(Int.) MxPS= 64 Ivl=125us
|
||||
E: Ad=0a(O) Atr=03(Int.) MxPS= 64 Ivl=125us
|
||||
|
||||
Signed-off-by: Daniel Golle <daniel@makrotopia.org>
|
||||
---
|
||||
drivers/bluetooth/btusb.c | 3 +++
|
||||
1 file changed, 3 insertions(+)
|
||||
|
||||
--- a/drivers/bluetooth/btusb.c
|
||||
+++ b/drivers/bluetooth/btusb.c
|
||||
@@ -469,6 +469,9 @@ static const struct usb_device_id blackl
|
||||
{ USB_DEVICE(0x0489, 0xe0cd), .driver_info = BTUSB_MEDIATEK |
|
||||
BTUSB_WIDEBAND_SPEECH |
|
||||
BTUSB_VALID_LE_STATES },
|
||||
+ { USB_DEVICE(0x0e8d, 0x0608), .driver_info = BTUSB_MEDIATEK |
|
||||
+ BTUSB_WIDEBAND_SPEECH |
|
||||
+ BTUSB_VALID_LE_STATES },
|
||||
|
||||
/* MediaTek MT7922A Bluetooth devices */
|
||||
{ USB_DEVICE(0x0489, 0xe0d8), .driver_info = BTUSB_MEDIATEK |
|
Loading…
Reference in New Issue