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.tikhomirov@samsung.com> Signed-off-by: Sebastian Andrzej Siewior <bigeasy@linutronix.de> Signed-off-by: Felipe Balbi <balbi@ti.com>
This commit is contained in:
Родитель
6f115e45a0
Коммит
124dafde8f
|
@ -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;
|
||||
|
|
|
@ -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 */
|
||||
|
|
|
@ -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);
|
||||
|
||||
|
|
|
@ -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;
|
||||
}
|
||||
|
||||
|
|
|
@ -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);
|
||||
|
|
Загрузка…
Ссылка в новой задаче