1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677 |
- From 352d9e2ee85b43170388599a17cd7b219f270163 Mon Sep 17 00:00:00 2001
- From: =?UTF-8?q?Rafa=C5=82=20Mi=C5=82ecki?= <zajec5@gmail.com>
- Date: Sat, 5 Dec 2015 13:15:06 +0100
- 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 in bcma_hcd_create_pdev function limited it
- to support two cases only (OHCI and EHCI) and put too much logic in it.
- Lets make caller pass all required data. This adds few extra arguments
- to the function call but will allow us to reuse this code and handle
- more cases in the future (e.g. add XHCI support).
- Signed-off-by: Rafał Miłecki <zajec5@gmail.com>
- Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
- ---
- 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
- @@ -244,7 +244,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];
- @@ -259,8 +262,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);
-
- @@ -271,12 +273,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);
- @@ -333,11 +331,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;
|