forked from Ivasoft/openwrt
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
This commit is contained in:
@@ -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
|
||||
|
||||
Reference in New Issue
Block a user