aboutsummaryrefslogtreecommitdiffstats
path: root/target/linux/bcm53xx/patches-3.18/182-USB-bcma-use-devm_kzalloc.patch
diff options
context:
space:
mode:
authorRafał Miłecki <zajec5@gmail.com>2015-06-16 08:28:46 +0000
committerRafał Miłecki <zajec5@gmail.com>2015-06-16 08:28:46 +0000
commit351a2ec15fa0855b2dc29dfbb62113f71e4e6a76 (patch)
tree28a8489608bf9f5eb77be1a478cbc997d8b3e1d4 /target/linux/bcm53xx/patches-3.18/182-USB-bcma-use-devm_kzalloc.patch
parenta7780603923fddec225c9f4b0990fede4c2695a9 (diff)
downloadupstream-351a2ec15fa0855b2dc29dfbb62113f71e4e6a76.tar.gz
upstream-351a2ec15fa0855b2dc29dfbb62113f71e4e6a76.tar.bz2
upstream-351a2ec15fa0855b2dc29dfbb62113f71e4e6a76.zip
bcm53xx: use USB patches sent upstream by Hauke
This stabilizes USB support. The old patch was handling initialization in a different order that was causing some problems with few USB 3.0 devices. Some weren't detected, some were working unstable, sometimes USB 3.0 could hang the whole controller. A still known issue (but not a regression) is controller hang triggered by connecting USB 1.1 device when not having OHCI controller enabled (kmod-usb-ohci). Signed-off-by: Rafał Miłecki <zajec5@gmail.com> SVN-Revision: 45997
Diffstat (limited to 'target/linux/bcm53xx/patches-3.18/182-USB-bcma-use-devm_kzalloc.patch')
-rw-r--r--target/linux/bcm53xx/patches-3.18/182-USB-bcma-use-devm_kzalloc.patch52
1 files changed, 52 insertions, 0 deletions
diff --git a/target/linux/bcm53xx/patches-3.18/182-USB-bcma-use-devm_kzalloc.patch b/target/linux/bcm53xx/patches-3.18/182-USB-bcma-use-devm_kzalloc.patch
new file mode 100644
index 0000000000..32a17653de
--- /dev/null
+++ b/target/linux/bcm53xx/patches-3.18/182-USB-bcma-use-devm_kzalloc.patch
@@ -0,0 +1,52 @@
+From 93724affb195149df6f7630901d878f6e273fa02 Mon Sep 17 00:00:00 2001
+From: Hauke Mehrtens <hauke@hauke-m.de>
+Date: Thu, 11 Jun 2015 22:57:37 +0200
+Subject: [PATCH] USB: bcma: use devm_kzalloc
+
+Instead of manually handling the frees use devm. There was also a free
+missing in the unregister call which is not needed with devm.
+
+Signed-off-by: Hauke Mehrtens <hauke@hauke-m.de>
+---
+ drivers/usb/host/bcma-hcd.c | 11 ++++-------
+ 1 file changed, 4 insertions(+), 7 deletions(-)
+
+diff --git a/drivers/usb/host/bcma-hcd.c b/drivers/usb/host/bcma-hcd.c
+index 853bf9d..d7ea50d 100644
+--- a/drivers/usb/host/bcma-hcd.c
++++ b/drivers/usb/host/bcma-hcd.c
+@@ -225,7 +225,8 @@ static int bcma_hcd_probe(struct bcma_device *dev)
+ if (dma_set_mask_and_coherent(dev->dma_dev, DMA_BIT_MASK(32)))
+ return -EOPNOTSUPP;
+
+- usb_dev = kzalloc(sizeof(struct bcma_hcd_device), GFP_KERNEL);
++ usb_dev = devm_kzalloc(&dev->dev, sizeof(struct bcma_hcd_device),
++ GFP_KERNEL);
+ if (!usb_dev)
+ return -ENOMEM;
+
+@@ -239,10 +240,8 @@ static int bcma_hcd_probe(struct bcma_device *dev)
+ ohci_addr = 0x18009000;
+
+ usb_dev->ohci_dev = bcma_hcd_create_pdev(dev, true, ohci_addr);
+- if (IS_ERR(usb_dev->ohci_dev)) {
+- err = PTR_ERR(usb_dev->ohci_dev);
+- goto err_free_usb_dev;
+- }
++ if (IS_ERR(usb_dev->ohci_dev))
++ return PTR_ERR(usb_dev->ohci_dev);
+
+ usb_dev->ehci_dev = bcma_hcd_create_pdev(dev, false, dev->addr);
+ if (IS_ERR(usb_dev->ehci_dev)) {
+@@ -255,8 +254,6 @@ static int bcma_hcd_probe(struct bcma_device *dev)
+
+ err_unregister_ohci_dev:
+ platform_device_unregister(usb_dev->ohci_dev);
+-err_free_usb_dev:
+- kfree(usb_dev);
+ return err;
+ }
+
+--
+1.8.4.5
+