On Mon, Oct 15, 2012 at 06:57:53PM +0530, Kishon Vijay Abraham I wrote:
> This patch series adds dt support to dwc3 core and fixes few minor
> stuff in dwc3-omap glue to get dwc3 working.
> 
> While at that it also uses *of_platform* to create the child device
> (dwc3-core) and fixes to use runtime API's to enable clock and write
> to SYSCONFIG register.
> 
> Changes from v3:
> * rebased to latest commit in balbi's tree
> * Fixed few typos in the commit log
> * Added *extern* keyword for dwc3_omap_mailbox function declaration
> 
> Changes from v2:
> * Fixed Sergei comment to use of_property_read_u32 insted of of_get_property
> 
> Changes from v1:
> * made device_for_each_child() as a seperate patch
> * made all other minor fixes wrt typos and function renames
> 
> This patch series is developed on:
> git://git.kernel.org/pub/scm/linux/kernel/git/balbi/usb.git dwc3

please rebase on my dwc3 branch. Because of commit belo, patches 1 and 2
won't apply:

commit 124dafde8f8174caf5cef1c3eaba001657d66f4f
Author: Sebastian Andrzej Siewior <bige...@linutronix.de>
Date:   Mon Oct 29 18:09:53 2012 +0100

    usb: dwc3: remove custom unique id handling
    
    The lockless implementation of the unique id is quite impressive (:P)
    but dirver's core can handle it, we can remove it and make our code a
    little smaller.
    
    Cc: Anton Tikhomirov <av.tikhomi...@samsung.com>
    Signed-off-by: Sebastian Andrzej Siewior <bige...@linutronix.de>
    Signed-off-by: Felipe Balbi <ba...@ti.com>

diff --git a/drivers/usb/dwc3/core.c b/drivers/usb/dwc3/core.c
index b923183..d8d327a 100644
--- a/drivers/usb/dwc3/core.c
+++ b/drivers/usb/dwc3/core.c
@@ -66,45 +66,6 @@ MODULE_PARM_DESC(maximum_speed, "Maximum supported speed.");
 
 /* -------------------------------------------------------------------------- 
*/
 
-#define DWC3_DEVS_POSSIBLE     32
-
-static DECLARE_BITMAP(dwc3_devs, DWC3_DEVS_POSSIBLE);
-
-int dwc3_get_device_id(void)
-{
-       int             id;
-
-again:
-       id = find_first_zero_bit(dwc3_devs, DWC3_DEVS_POSSIBLE);
-       if (id < DWC3_DEVS_POSSIBLE) {
-               int old;
-
-               old = test_and_set_bit(id, dwc3_devs);
-               if (old)
-                       goto again;
-       } else {
-               pr_err("dwc3: no space for new device\n");
-               id = -ENOMEM;
-       }
-
-       return id;
-}
-EXPORT_SYMBOL_GPL(dwc3_get_device_id);
-
-void dwc3_put_device_id(int id)
-{
-       int                     ret;
-
-       if (id < 0)
-               return;
-
-       ret = test_bit(id, dwc3_devs);
-       WARN(!ret, "dwc3: ID %d not in use\n", id);
-       smp_mb__before_clear_bit();
-       clear_bit(id, dwc3_devs);
-}
-EXPORT_SYMBOL_GPL(dwc3_put_device_id);
-
 void dwc3_set_mode(struct dwc3 *dwc, u32 mode)
 {
        u32 reg;
diff --git a/drivers/usb/dwc3/core.h b/drivers/usb/dwc3/core.h
index 243affc..4999563 100644
--- a/drivers/usb/dwc3/core.h
+++ b/drivers/usb/dwc3/core.h
@@ -868,7 +868,4 @@ void dwc3_host_exit(struct dwc3 *dwc);
 int dwc3_gadget_init(struct dwc3 *dwc);
 void dwc3_gadget_exit(struct dwc3 *dwc);
 
-extern int dwc3_get_device_id(void);
-extern void dwc3_put_device_id(int id);
-
 #endif /* __DRIVERS_USB_DWC3_CORE_H */
diff --git a/drivers/usb/dwc3/dwc3-exynos.c b/drivers/usb/dwc3/dwc3-exynos.c
index ca65978..586f105 100644
--- a/drivers/usb/dwc3/dwc3-exynos.c
+++ b/drivers/usb/dwc3/dwc3-exynos.c
@@ -94,7 +94,6 @@ static int __devinit dwc3_exynos_probe(struct platform_device 
*pdev)
        struct dwc3_exynos      *exynos;
        struct clk              *clk;
 
-       int                     devid;
        int                     ret = -ENOMEM;
 
        exynos = kzalloc(sizeof(*exynos), GFP_KERNEL);
@@ -105,20 +104,16 @@ static int __devinit dwc3_exynos_probe(struct 
platform_device *pdev)
 
        platform_set_drvdata(pdev, exynos);
 
-       devid = dwc3_get_device_id();
-       if (devid < 0)
-               goto err1;
-
        ret = dwc3_exynos_register_phys(exynos);
        if (ret) {
                dev_err(&pdev->dev, "couldn't register PHYs\n");
                goto err1;
        }
 
-       dwc3 = platform_device_alloc("dwc3", devid);
+       dwc3 = platform_device_alloc("dwc3", PLATFORM_DEVID_AUTO);
        if (!dwc3) {
                dev_err(&pdev->dev, "couldn't allocate dwc3 device\n");
-               goto err2;
+               goto err1;
        }
 
        clk = clk_get(&pdev->dev, "usbdrd30");
@@ -170,8 +165,6 @@ err4:
        clk_put(clk);
 err3:
        platform_device_put(dwc3);
-err2:
-       dwc3_put_device_id(devid);
 err1:
        kfree(exynos);
 err0:
@@ -187,8 +180,6 @@ static int __devexit dwc3_exynos_remove(struct 
platform_device *pdev)
        platform_device_unregister(exynos->usb2_phy);
        platform_device_unregister(exynos->usb3_phy);
 
-       dwc3_put_device_id(exynos->dwc3->id);
-
        if (pdata && pdata->phy_exit)
                pdata->phy_exit(pdev, pdata->phy_type);
 
diff --git a/drivers/usb/dwc3/dwc3-omap.c b/drivers/usb/dwc3/dwc3-omap.c
index ee57a10..900d435 100644
--- a/drivers/usb/dwc3/dwc3-omap.c
+++ b/drivers/usb/dwc3/dwc3-omap.c
@@ -272,7 +272,6 @@ static int __devinit dwc3_omap_probe(struct platform_device 
*pdev)
        struct resource         *res;
        struct device           *dev = &pdev->dev;
 
-       int                     devid;
        int                     size;
        int                     ret = -ENOMEM;
        int                     irq;
@@ -315,14 +314,10 @@ static int __devinit dwc3_omap_probe(struct 
platform_device *pdev)
                return ret;
        }
 
-       devid = dwc3_get_device_id();
-       if (devid < 0)
-               return -ENODEV;
-
-       dwc3 = platform_device_alloc("dwc3", devid);
+       dwc3 = platform_device_alloc("dwc3", PLATFORM_DEVID_AUTO);
        if (!dwc3) {
                dev_err(dev, "couldn't allocate dwc3 device\n");
-               goto err1;
+               return -ENOMEM;
        }
 
        context = devm_kzalloc(dev, resource_size(res), GFP_KERNEL);
@@ -423,10 +418,6 @@ static int __devinit dwc3_omap_probe(struct 
platform_device *pdev)
 
 err2:
        platform_device_put(dwc3);
-
-err1:
-       dwc3_put_device_id(devid);
-
        return ret;
 }
 
@@ -437,9 +428,6 @@ static int __devexit dwc3_omap_remove(struct 
platform_device *pdev)
        platform_device_unregister(omap->dwc3);
        platform_device_unregister(omap->usb2_phy);
        platform_device_unregister(omap->usb3_phy);
-
-       dwc3_put_device_id(omap->dwc3->id);
-
        return 0;
 }
 
diff --git a/drivers/usb/dwc3/dwc3-pci.c b/drivers/usb/dwc3/dwc3-pci.c
index 94f550e..1396259 100644
--- a/drivers/usb/dwc3/dwc3-pci.c
+++ b/drivers/usb/dwc3/dwc3-pci.c
@@ -119,7 +119,6 @@ static int __devinit dwc3_pci_probe(struct pci_dev *pci,
        struct platform_device  *dwc3;
        struct dwc3_pci         *glue;
        int                     ret = -ENOMEM;
-       int                     devid;
        struct device           *dev = &pci->dev;
 
        glue = devm_kzalloc(dev, sizeof(*glue), GFP_KERNEL);
@@ -145,13 +144,7 @@ static int __devinit dwc3_pci_probe(struct pci_dev *pci,
                return ret;
        }
 
-       devid = dwc3_get_device_id();
-       if (devid < 0) {
-               ret = -ENOMEM;
-               goto err1;
-       }
-
-       dwc3 = platform_device_alloc("dwc3", devid);
+       dwc3 = platform_device_alloc("dwc3", PLATFORM_DEVID_AUTO);
        if (!dwc3) {
                dev_err(dev, "couldn't allocate dwc3 device\n");
                ret = -ENOMEM;
@@ -172,7 +165,7 @@ static int __devinit dwc3_pci_probe(struct pci_dev *pci,
        ret = platform_device_add_resources(dwc3, res, ARRAY_SIZE(res));
        if (ret) {
                dev_err(dev, "couldn't add resources to dwc3 device\n");
-               goto err2;
+               goto err1;
        }
 
        pci_set_drvdata(pci, glue);
@@ -195,10 +188,6 @@ static int __devinit dwc3_pci_probe(struct pci_dev *pci,
 err3:
        pci_set_drvdata(pci, NULL);
        platform_device_put(dwc3);
-
-err2:
-       dwc3_put_device_id(devid);
-
 err1:
        pci_disable_device(pci);
 
@@ -211,7 +200,6 @@ static void __devexit dwc3_pci_remove(struct pci_dev *pci)
 
        platform_device_unregister(glue->usb2_phy);
        platform_device_unregister(glue->usb3_phy);
-       dwc3_put_device_id(glue->dwc3->id);
        platform_device_unregister(glue->dwc3);
        pci_set_drvdata(pci, NULL);
        pci_disable_device(pci);

-- 
balbi

Attachment: signature.asc
Description: Digital signature

Reply via email to