74 lines
2.5 KiB
Diff
74 lines
2.5 KiB
Diff
|
From 5b4fed9fc917cc2bfc5297eeab03aeba5d340618 Mon Sep 17 00:00:00 2001
|
||
|
From: =?UTF-8?q?Rafa=C5=82=20Mi=C5=82ecki?= <zajec5@gmail.com>
|
||
|
Date: Tue, 16 Jun 2015 12:33:46 +0200
|
||
|
Subject: [PATCH] USB: bcma: make helper creating platform dev more generic
|
||
|
MIME-Version: 1.0
|
||
|
Content-Type: text/plain; charset=UTF-8
|
||
|
Content-Transfer-Encoding: 8bit
|
||
|
|
||
|
Having "bool ohci" argument bounded us to two cases only and didn't
|
||
|
allow re-using this code for XHCI.
|
||
|
|
||
|
Signed-off-by: Rafał Miłecki <zajec5@gmail.com>
|
||
|
---
|
||
|
drivers/usb/host/bcma-hcd.c | 24 +++++++++++++-----------
|
||
|
1 file changed, 13 insertions(+), 11 deletions(-)
|
||
|
|
||
|
--- a/drivers/usb/host/bcma-hcd.c
|
||
|
+++ b/drivers/usb/host/bcma-hcd.c
|
||
|
@@ -249,7 +249,10 @@ static const struct usb_ehci_pdata ehci_
|
||
|
static const struct usb_ohci_pdata ohci_pdata = {
|
||
|
};
|
||
|
|
||
|
-static struct platform_device *bcma_hcd_create_pdev(struct bcma_device *dev, bool ohci, u32 addr)
|
||
|
+static struct platform_device *bcma_hcd_create_pdev(struct bcma_device *dev,
|
||
|
+ const char *name, u32 addr,
|
||
|
+ const void *data,
|
||
|
+ size_t size)
|
||
|
{
|
||
|
struct platform_device *hci_dev;
|
||
|
struct resource hci_res[2];
|
||
|
@@ -264,8 +267,7 @@ static struct platform_device *bcma_hcd_
|
||
|
hci_res[1].start = dev->irq;
|
||
|
hci_res[1].flags = IORESOURCE_IRQ;
|
||
|
|
||
|
- hci_dev = platform_device_alloc(ohci ? "ohci-platform" :
|
||
|
- "ehci-platform" , 0);
|
||
|
+ hci_dev = platform_device_alloc(name, 0);
|
||
|
if (!hci_dev)
|
||
|
return ERR_PTR(-ENOMEM);
|
||
|
|
||
|
@@ -276,12 +278,8 @@ static struct platform_device *bcma_hcd_
|
||
|
ARRAY_SIZE(hci_res));
|
||
|
if (ret)
|
||
|
goto err_alloc;
|
||
|
- if (ohci)
|
||
|
- ret = platform_device_add_data(hci_dev, &ohci_pdata,
|
||
|
- sizeof(ohci_pdata));
|
||
|
- else
|
||
|
- ret = platform_device_add_data(hci_dev, &ehci_pdata,
|
||
|
- sizeof(ehci_pdata));
|
||
|
+ if (data)
|
||
|
+ ret = platform_device_add_data(hci_dev, data, size);
|
||
|
if (ret)
|
||
|
goto err_alloc;
|
||
|
ret = platform_device_add(hci_dev);
|
||
|
@@ -334,11 +332,15 @@ static int bcma_hcd_probe(struct bcma_de
|
||
|
&& chipinfo->rev == 0)
|
||
|
ohci_addr = 0x18009000;
|
||
|
|
||
|
- usb_dev->ohci_dev = bcma_hcd_create_pdev(dev, true, ohci_addr);
|
||
|
+ usb_dev->ohci_dev = bcma_hcd_create_pdev(dev, "ohci-platform",
|
||
|
+ ohci_addr, &ohci_pdata,
|
||
|
+ sizeof(ohci_pdata));
|
||
|
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);
|
||
|
+ usb_dev->ehci_dev = bcma_hcd_create_pdev(dev, "ehci-platform",
|
||
|
+ dev->addr, &ehci_pdata,
|
||
|
+ sizeof(ehci_pdata));
|
||
|
if (IS_ERR(usb_dev->ehci_dev)) {
|
||
|
err = PTR_ERR(usb_dev->ehci_dev);
|
||
|
goto err_unregister_ohci_dev;
|