diff options
author | Daniel Golle <daniel@makrotopia.org> | 2022-09-09 20:46:33 +0100 |
---|---|---|
committer | Daniel Golle <daniel@makrotopia.org> | 2022-09-09 21:08:37 +0100 |
commit | f755c4103814cc99fd2c9701ba05aaff1884fc89 (patch) | |
tree | 05386dd4f50e972bcdbcc681665ef66779f11304 /target/linux/generic/backport-5.15/821-v5.16-Bluetooth-btusb-Support-public-address-configuration.patch | |
parent | f97fbd8a9adb481d195cecbcf0b1b19322dc9709 (diff) | |
download | upstream-f755c4103814cc99fd2c9701ba05aaff1884fc89.tar.gz upstream-f755c4103814cc99fd2c9701ba05aaff1884fc89.tar.bz2 upstream-f755c4103814cc99fd2c9701ba05aaff1884fc89.zip |
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>
Diffstat (limited to 'target/linux/generic/backport-5.15/821-v5.16-Bluetooth-btusb-Support-public-address-configuration.patch')
-rw-r--r-- | target/linux/generic/backport-5.15/821-v5.16-Bluetooth-btusb-Support-public-address-configuration.patch | 51 |
1 files changed, 51 insertions, 0 deletions
diff --git a/target/linux/generic/backport-5.15/821-v5.16-Bluetooth-btusb-Support-public-address-configuration.patch b/target/linux/generic/backport-5.15/821-v5.16-Bluetooth-btusb-Support-public-address-configuration.patch new file mode 100644 index 0000000000..feaabc9d11 --- /dev/null +++ b/target/linux/generic/backport-5.15/821-v5.16-Bluetooth-btusb-Support-public-address-configuration.patch @@ -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; + } |