diff options
Diffstat (limited to 'target/linux/bcm27xx/patches-5.4/950-0879-Bluetooth-hci_bcm-Disallow-set_baudrate-for-BCM4354.patch')
-rw-r--r-- | target/linux/bcm27xx/patches-5.4/950-0879-Bluetooth-hci_bcm-Disallow-set_baudrate-for-BCM4354.patch | 115 |
1 files changed, 0 insertions, 115 deletions
diff --git a/target/linux/bcm27xx/patches-5.4/950-0879-Bluetooth-hci_bcm-Disallow-set_baudrate-for-BCM4354.patch b/target/linux/bcm27xx/patches-5.4/950-0879-Bluetooth-hci_bcm-Disallow-set_baudrate-for-BCM4354.patch deleted file mode 100644 index da8f37b3dd..0000000000 --- a/target/linux/bcm27xx/patches-5.4/950-0879-Bluetooth-hci_bcm-Disallow-set_baudrate-for-BCM4354.patch +++ /dev/null @@ -1,115 +0,0 @@ -From 4c40c6ae0510be0fc9626d1717ff4163358cbfb2 Mon Sep 17 00:00:00 2001 -From: Abhishek Pandit-Subedi <abhishekpandit@chromium.org> -Date: Tue, 26 Nov 2019 08:17:29 +0100 -Subject: [PATCH] Bluetooth: hci_bcm: Disallow set_baudrate for - BCM4354 - -commit 5d6f391073d5c1c903ac12be72c66b96b2ae93f4 upstream. - -Without updating the patchram, the BCM4354 does not support a higher -operating speed. The normal bcm_setup follows the correct order -(init_speed, patchram and then oper_speed) but the serdev driver will -set the operating speed before calling the hu->setup function. Thus, -for the BCM4354, don't set the operating speed before patchram. - -Signed-off-by: Abhishek Pandit-Subedi <abhishekpandit@chromium.org> -Signed-off-by: Marcel Holtmann <marcel@holtmann.org> -Signed-off-by: Johan Hedberg <johan.hedberg@intel.com> ---- - drivers/bluetooth/hci_bcm.c | 31 +++++++++++++++++++++++++++++-- - 1 file changed, 29 insertions(+), 2 deletions(-) - ---- a/drivers/bluetooth/hci_bcm.c -+++ b/drivers/bluetooth/hci_bcm.c -@@ -48,6 +48,14 @@ - #define BCM_NUM_SUPPLIES 2 - - /** -+ * struct bcm_device_data - device specific data -+ * @no_early_set_baudrate: Disallow set baudrate before driver setup() -+ */ -+struct bcm_device_data { -+ bool no_early_set_baudrate; -+}; -+ -+/** - * struct bcm_device - device driver resources - * @serdev_hu: HCI UART controller struct - * @list: bcm_device_list node -@@ -79,6 +87,7 @@ - * @hu: pointer to HCI UART controller struct, - * used to disable flow control during runtime suspend and system sleep - * @is_suspended: whether flow control is currently disabled -+ * @no_early_set_baudrate: don't set_baudrate before setup() - */ - struct bcm_device { - /* Must be the first member, hci_serdev.c expects this. */ -@@ -113,6 +122,7 @@ struct bcm_device { - struct hci_uart *hu; - bool is_suspended; - #endif -+ bool no_early_set_baudrate; - }; - - /* generic bcm uart resources */ -@@ -450,7 +460,13 @@ out: - if (bcm->dev) { - hci_uart_set_flow_control(hu, true); - hu->init_speed = bcm->dev->init_speed; -- hu->oper_speed = bcm->dev->oper_speed; -+ -+ /* If oper_speed is set, ldisc/serdev will set the baudrate -+ * before calling setup() -+ */ -+ if (!bcm->dev->no_early_set_baudrate) -+ hu->oper_speed = bcm->dev->oper_speed; -+ - err = bcm_gpio_set_power(bcm->dev, true); - hci_uart_set_flow_control(hu, false); - if (err) -@@ -568,6 +584,8 @@ static int bcm_setup(struct hci_uart *hu - /* Operational speed if any */ - if (hu->oper_speed) - speed = hu->oper_speed; -+ else if (bcm->dev && bcm->dev->oper_speed) -+ speed = bcm->dev->oper_speed; - else if (hu->proto->oper_speed) - speed = hu->proto->oper_speed; - else -@@ -1377,6 +1395,7 @@ static struct platform_driver bcm_driver - static int bcm_serdev_probe(struct serdev_device *serdev) - { - struct bcm_device *bcmdev; -+ const struct bcm_device_data *data; - int err; - - bcmdev = devm_kzalloc(&serdev->dev, sizeof(*bcmdev), GFP_KERNEL); -@@ -1411,6 +1430,10 @@ static int bcm_serdev_probe(struct serde - if (err) - dev_err(&serdev->dev, "Failed to power down\n"); - -+ data = device_get_match_data(bcmdev->dev); -+ if (data) -+ bcmdev->no_early_set_baudrate = data->no_early_set_baudrate; -+ - return hci_uart_register_device(&bcmdev->serdev_hu, &bcm_proto); - } - -@@ -1422,12 +1445,16 @@ static void bcm_serdev_remove(struct ser - } - - #ifdef CONFIG_OF -+static struct bcm_device_data bcm4354_device_data = { -+ .no_early_set_baudrate = true, -+}; -+ - static const struct of_device_id bcm_bluetooth_of_match[] = { - { .compatible = "brcm,bcm20702a1" }, - { .compatible = "brcm,bcm4345c5" }, - { .compatible = "brcm,bcm4330-bt" }, - { .compatible = "brcm,bcm43438-bt" }, -- { .compatible = "brcm,bcm43540-bt" }, -+ { .compatible = "brcm,bcm43540-bt", .data = &bcm4354_device_data }, - { .compatible = "brcm,bcm4335a0" }, - { }, - }; |