* [RFC/PATCH 23/32] usb: gadget: r8a66597-udc: let udc-core manage gadget->dev
From: Felipe Balbi @ 2013-01-24 15:46 UTC (permalink / raw)
To: Linux USB Mailing List
Cc: kgene.kim, eric.y.miao, kuninori.morimoto.gx, alexander.shishkin,
gregkh, yoshihiro.shimoda.uh, nicolas.ferre, linux-geode,
haojian.zhuang, Linux OMAP Mailing List, linux-samsung-soc,
Felipe Balbi, ben-linux, dahlmann.thomas, linux, linuxppc-dev,
linux-arm-kernel
In-Reply-To: <1359042370-4358-1-git-send-email-balbi@ti.com>
By simply setting a flag, we can drop some
boilerplate code.
Signed-off-by: Felipe Balbi <balbi@ti.com>
---
drivers/usb/gadget/r8a66597-udc.c | 12 ++----------
1 file changed, 2 insertions(+), 10 deletions(-)
diff --git a/drivers/usb/gadget/r8a66597-udc.c b/drivers/usb/gadget/r8a66597-udc.c
index 5a80751..40ef4bd 100644
--- a/drivers/usb/gadget/r8a66597-udc.c
+++ b/drivers/usb/gadget/r8a66597-udc.c
@@ -1837,7 +1837,6 @@ static int __exit r8a66597_remove(struct platform_device *pdev)
clk_put(r8a66597->clk);
}
- device_unregister(&r8a66597->gadget.dev);
kfree(r8a66597);
return 0;
}
@@ -1915,17 +1914,12 @@ static int __init r8a66597_probe(struct platform_device *pdev)
r8a66597->irq_sense_low = irq_trigger == IRQF_TRIGGER_LOW;
r8a66597->gadget.ops = &r8a66597_gadget_ops;
- dev_set_name(&r8a66597->gadget.dev, "gadget");
r8a66597->gadget.max_speed = USB_SPEED_HIGH;
r8a66597->gadget.dev.parent = &pdev->dev;
r8a66597->gadget.dev.dma_mask = pdev->dev.dma_mask;
r8a66597->gadget.dev.release = pdev->dev.release;
r8a66597->gadget.name = udc_name;
- ret = device_register(&r8a66597->gadget.dev);
- if (ret < 0) {
- dev_err(&pdev->dev, "device_register failed\n");
- goto clean_up;
- }
+ r8a66597->gadget.register_my_device = true;
init_timer(&r8a66597->timer);
r8a66597->timer.function = r8a66597_timer;
@@ -1939,7 +1933,7 @@ static int __init r8a66597_probe(struct platform_device *pdev)
dev_err(&pdev->dev, "cannot get clock \"%s\"\n",
clk_name);
ret = PTR_ERR(r8a66597->clk);
- goto clean_up_dev;
+ goto clean_up;
}
clk_enable(r8a66597->clk);
}
@@ -2007,8 +2001,6 @@ clean_up2:
clk_disable(r8a66597->clk);
clk_put(r8a66597->clk);
}
-clean_up_dev:
- device_unregister(&r8a66597->gadget.dev);
clean_up:
if (r8a66597) {
if (r8a66597->sudmac_reg)
--
1.8.1.rc1.5.g7e0651a
^ permalink raw reply related
* [RFC/PATCH 22/32] usb: gadget: pch_udc: let udc-core manage gadget->dev
From: Felipe Balbi @ 2013-01-24 15:46 UTC (permalink / raw)
To: Linux USB Mailing List
Cc: kgene.kim, eric.y.miao, kuninori.morimoto.gx, alexander.shishkin,
gregkh, yoshihiro.shimoda.uh, nicolas.ferre, linux-geode,
haojian.zhuang, Linux OMAP Mailing List, linux-samsung-soc,
Felipe Balbi, ben-linux, dahlmann.thomas, linux, linuxppc-dev,
linux-arm-kernel
In-Reply-To: <1359042370-4358-1-git-send-email-balbi@ti.com>
By simply setting a flag, we can drop some
boilerplate code.
Signed-off-by: Felipe Balbi <balbi@ti.com>
---
drivers/usb/gadget/pch_udc.c | 10 +---------
1 file changed, 1 insertion(+), 9 deletions(-)
diff --git a/drivers/usb/gadget/pch_udc.c b/drivers/usb/gadget/pch_udc.c
index a787a8e..7032145 100644
--- a/drivers/usb/gadget/pch_udc.c
+++ b/drivers/usb/gadget/pch_udc.c
@@ -358,7 +358,6 @@ struct pch_udc_dev {
prot_stall:1,
irq_registered:1,
mem_region:1,
- registered:1,
suspended:1,
connected:1,
vbus_session:1,
@@ -3078,8 +3077,6 @@ static void pch_udc_remove(struct pci_dev *pdev)
pci_resource_len(pdev, PCH_UDC_PCI_BAR));
if (dev->active)
pci_disable_device(pdev);
- if (dev->registered)
- device_unregister(&dev->gadget.dev);
kfree(dev);
pci_set_drvdata(pdev, NULL);
}
@@ -3196,17 +3193,12 @@ static int pch_udc_probe(struct pci_dev *pdev,
if (retval)
goto finished;
- dev_set_name(&dev->gadget.dev, "gadget");
dev->gadget.dev.parent = &pdev->dev;
dev->gadget.dev.dma_mask = pdev->dev.dma_mask;
dev->gadget.dev.release = gadget_release;
dev->gadget.name = KBUILD_MODNAME;
dev->gadget.max_speed = USB_SPEED_HIGH;
-
- retval = device_register(&dev->gadget.dev);
- if (retval)
- goto finished;
- dev->registered = 1;
+ dev->gadget.register_my_device = true;
/* Put the device in disconnected state till a driver is bound */
pch_udc_set_disconnect(dev);
--
1.8.1.rc1.5.g7e0651a
^ permalink raw reply related
* [RFC/PATCH 21/32] usb: gadget: net2280: let udc-core manage gadget->dev
From: Felipe Balbi @ 2013-01-24 15:45 UTC (permalink / raw)
To: Linux USB Mailing List
Cc: kgene.kim, eric.y.miao, kuninori.morimoto.gx, alexander.shishkin,
gregkh, yoshihiro.shimoda.uh, nicolas.ferre, linux-geode,
haojian.zhuang, Linux OMAP Mailing List, linux-samsung-soc,
Felipe Balbi, ben-linux, dahlmann.thomas, linux, linuxppc-dev,
linux-arm-kernel
In-Reply-To: <1359042370-4358-1-git-send-email-balbi@ti.com>
By simply setting a flag, we can drop some
boilerplate code.
Signed-off-by: Felipe Balbi <balbi@ti.com>
---
drivers/usb/gadget/net2280.c | 5 +----
1 file changed, 1 insertion(+), 4 deletions(-)
diff --git a/drivers/usb/gadget/net2280.c b/drivers/usb/gadget/net2280.c
index 708c0b5..630f715 100644
--- a/drivers/usb/gadget/net2280.c
+++ b/drivers/usb/gadget/net2280.c
@@ -2667,7 +2667,6 @@ static void net2280_remove (struct pci_dev *pdev)
pci_resource_len (pdev, 0));
if (dev->enabled)
pci_disable_device (pdev);
- device_unregister (&dev->gadget.dev);
device_remove_file (&pdev->dev, &dev_attr_registers);
pci_set_drvdata (pdev, NULL);
@@ -2699,11 +2698,11 @@ static int net2280_probe (struct pci_dev *pdev, const struct pci_device_id *id)
dev->gadget.max_speed = USB_SPEED_HIGH;
/* the "gadget" abstracts/virtualizes the controller */
- dev_set_name(&dev->gadget.dev, "gadget");
dev->gadget.dev.parent = &pdev->dev;
dev->gadget.dev.dma_mask = pdev->dev.dma_mask;
dev->gadget.dev.release = gadget_release;
dev->gadget.name = driver_name;
+ dev->gadget.register_my_device = true;
/* now all the pci goodies ... */
if (pci_enable_device (pdev) < 0) {
@@ -2811,8 +2810,6 @@ static int net2280_probe (struct pci_dev *pdev, const struct pci_device_id *id)
use_dma
? (use_dma_chaining ? "chaining" : "enabled")
: "disabled");
- retval = device_register (&dev->gadget.dev);
- if (retval) goto done;
retval = device_create_file (&pdev->dev, &dev_attr_registers);
if (retval) goto done;
--
1.8.1.rc1.5.g7e0651a
^ permalink raw reply related
* [RFC/PATCH 19/32] usb: gadget: mv_udc_core: let udc-core manage gadget->dev
From: Felipe Balbi @ 2013-01-24 15:45 UTC (permalink / raw)
To: Linux USB Mailing List
Cc: kgene.kim, eric.y.miao, kuninori.morimoto.gx, alexander.shishkin,
gregkh, yoshihiro.shimoda.uh, nicolas.ferre, linux-geode,
haojian.zhuang, Linux OMAP Mailing List, linux-samsung-soc,
Felipe Balbi, ben-linux, dahlmann.thomas, linux, linuxppc-dev,
linux-arm-kernel
In-Reply-To: <1359042370-4358-1-git-send-email-balbi@ti.com>
By simply setting a flag, we can drop some
boilerplate code.
Signed-off-by: Felipe Balbi <balbi@ti.com>
---
drivers/usb/gadget/mv_udc_core.c | 12 ++----------
1 file changed, 2 insertions(+), 10 deletions(-)
diff --git a/drivers/usb/gadget/mv_udc_core.c b/drivers/usb/gadget/mv_udc_core.c
index 67d72f9..60741af 100644
--- a/drivers/usb/gadget/mv_udc_core.c
+++ b/drivers/usb/gadget/mv_udc_core.c
@@ -2138,8 +2138,6 @@ static int mv_udc_remove(struct platform_device *pdev)
mv_udc_disable(udc);
- device_unregister(&udc->gadget.dev);
-
/* free dev, wait for the release() finished */
wait_for_completion(udc->done);
@@ -2311,15 +2309,11 @@ static int mv_udc_probe(struct platform_device *pdev)
udc->gadget.max_speed = USB_SPEED_HIGH; /* support dual speed */
/* the "gadget" abstracts/virtualizes the controller */
- dev_set_name(&udc->gadget.dev, "gadget");
udc->gadget.dev.parent = &pdev->dev;
udc->gadget.dev.dma_mask = pdev->dev.dma_mask;
udc->gadget.dev.release = gadget_release;
udc->gadget.name = driver_name; /* gadget name */
-
- retval = device_register(&udc->gadget.dev);
- if (retval)
- goto err_destroy_dma;
+ udc->gadget.register_my_device = true;
eps_init(udc);
@@ -2342,7 +2336,7 @@ static int mv_udc_probe(struct platform_device *pdev)
if (!udc->qwork) {
dev_err(&pdev->dev, "cannot create workqueue\n");
retval = -ENOMEM;
- goto err_unregister;
+ goto err_destroy_dma;
}
INIT_WORK(&udc->vbus_work, mv_udc_vbus_work);
@@ -2370,8 +2364,6 @@ static int mv_udc_probe(struct platform_device *pdev)
err_create_workqueue:
destroy_workqueue(udc->qwork);
-err_unregister:
- device_unregister(&udc->gadget.dev);
err_destroy_dma:
dma_pool_destroy(udc->dtd_pool);
err_free_dma:
--
1.8.1.rc1.5.g7e0651a
^ permalink raw reply related
* [RFC/PATCH 17/32] usb: gadget: mv_u3d_core: let udc-core manage gadget->dev
From: Felipe Balbi @ 2013-01-24 15:45 UTC (permalink / raw)
To: Linux USB Mailing List
Cc: kgene.kim, eric.y.miao, kuninori.morimoto.gx, alexander.shishkin,
gregkh, yoshihiro.shimoda.uh, nicolas.ferre, linux-geode,
haojian.zhuang, Linux OMAP Mailing List, linux-samsung-soc,
Felipe Balbi, ben-linux, dahlmann.thomas, linux, linuxppc-dev,
linux-arm-kernel
In-Reply-To: <1359042370-4358-1-git-send-email-balbi@ti.com>
By simply setting a flag, we can drop some
boilerplate code.
Signed-off-by: Felipe Balbi <balbi@ti.com>
---
drivers/usb/gadget/mv_u3d_core.c | 10 +---------
1 file changed, 1 insertion(+), 9 deletions(-)
diff --git a/drivers/usb/gadget/mv_u3d_core.c b/drivers/usb/gadget/mv_u3d_core.c
index b5cea27..565addc 100644
--- a/drivers/usb/gadget/mv_u3d_core.c
+++ b/drivers/usb/gadget/mv_u3d_core.c
@@ -1792,8 +1792,6 @@ static int mv_u3d_remove(struct platform_device *dev)
clk_put(u3d->clk);
- device_unregister(&u3d->gadget.dev);
-
platform_set_drvdata(dev, NULL);
kfree(u3d);
@@ -1957,15 +1955,11 @@ static int mv_u3d_probe(struct platform_device *dev)
u3d->gadget.speed = USB_SPEED_UNKNOWN; /* speed */
/* the "gadget" abstracts/virtualizes the controller */
- dev_set_name(&u3d->gadget.dev, "gadget");
u3d->gadget.dev.parent = &dev->dev;
u3d->gadget.dev.dma_mask = dev->dev.dma_mask;
u3d->gadget.dev.release = mv_u3d_gadget_release;
u3d->gadget.name = driver_name; /* gadget name */
-
- retval = device_register(&u3d->gadget.dev);
- if (retval)
- goto err_register_gadget_device;
+ u3d->gadget.register_my_device = true;
mv_u3d_eps_init(u3d);
@@ -1991,8 +1985,6 @@ static int mv_u3d_probe(struct platform_device *dev)
return 0;
err_unregister:
- device_unregister(&u3d->gadget.dev);
-err_register_gadget_device:
free_irq(u3d->irq, &dev->dev);
err_request_irq:
err_get_irq:
--
1.8.1.rc1.5.g7e0651a
^ permalink raw reply related
* [RFC/PATCH 16/32] usb: gadget: m66592-udc: let udc-core manage gadget->dev
From: Felipe Balbi @ 2013-01-24 15:45 UTC (permalink / raw)
To: Linux USB Mailing List
Cc: kgene.kim, eric.y.miao, kuninori.morimoto.gx, alexander.shishkin,
gregkh, yoshihiro.shimoda.uh, nicolas.ferre, linux-geode,
haojian.zhuang, Linux OMAP Mailing List, linux-samsung-soc,
Felipe Balbi, ben-linux, dahlmann.thomas, linux, linuxppc-dev,
linux-arm-kernel
In-Reply-To: <1359042370-4358-1-git-send-email-balbi@ti.com>
By simply setting a flag, we can drop some
boilerplate code.
Signed-off-by: Felipe Balbi <balbi@ti.com>
---
drivers/usb/gadget/m66592-udc.c | 13 +------------
1 file changed, 1 insertion(+), 12 deletions(-)
diff --git a/drivers/usb/gadget/m66592-udc.c b/drivers/usb/gadget/m66592-udc.c
index 0a35db1..c5d1b39 100644
--- a/drivers/usb/gadget/m66592-udc.c
+++ b/drivers/usb/gadget/m66592-udc.c
@@ -1538,7 +1538,6 @@ static int __exit m66592_remove(struct platform_device *pdev)
struct m66592 *m66592 = dev_get_drvdata(&pdev->dev);
usb_del_gadget_udc(&m66592->gadget);
- device_del(&m66592->gadget.dev);
del_timer_sync(&m66592->timer);
iounmap(m66592->reg);
@@ -1608,13 +1607,12 @@ static int __init m66592_probe(struct platform_device *pdev)
dev_set_drvdata(&pdev->dev, m66592);
m66592->gadget.ops = &m66592_gadget_ops;
- device_initialize(&m66592->gadget.dev);
- dev_set_name(&m66592->gadget.dev, "gadget");
m66592->gadget.max_speed = USB_SPEED_HIGH;
m66592->gadget.dev.parent = &pdev->dev;
m66592->gadget.dev.dma_mask = pdev->dev.dma_mask;
m66592->gadget.dev.release = pdev->dev.release;
m66592->gadget.name = udc_name;
+ m66592->gadget.register_my_device = true;
init_timer(&m66592->timer);
m66592->timer.function = m66592_timer;
@@ -1674,12 +1672,6 @@ static int __init m66592_probe(struct platform_device *pdev)
init_controller(m66592);
- ret = device_add(&m66592->gadget.dev);
- if (ret) {
- pr_err("device_add error (%d)\n", ret);
- goto err_device_add;
- }
-
ret = usb_add_gadget_udc(&pdev->dev, &m66592->gadget);
if (ret)
goto err_add_udc;
@@ -1688,9 +1680,6 @@ static int __init m66592_probe(struct platform_device *pdev)
return 0;
err_add_udc:
- device_del(&m66592->gadget.dev);
-
-err_device_add:
m66592_free_request(&m66592->ep[0].ep, m66592->ep0_req);
clean_up3:
--
1.8.1.rc1.5.g7e0651a
^ permalink raw reply related
* [RFC/PATCH 18/32] usb: gadget: mv_u3d_core: fix a compile warning
From: Felipe Balbi @ 2013-01-24 15:45 UTC (permalink / raw)
To: Linux USB Mailing List
Cc: kgene.kim, eric.y.miao, kuninori.morimoto.gx, alexander.shishkin,
gregkh, yoshihiro.shimoda.uh, nicolas.ferre, linux-geode,
haojian.zhuang, Linux OMAP Mailing List, linux-samsung-soc,
Felipe Balbi, ben-linux, dahlmann.thomas, linux, linuxppc-dev,
linux-arm-kernel
In-Reply-To: <1359042370-4358-1-git-send-email-balbi@ti.com>
Fix the following compile warning:
mv_u3d_core.c:1766:12: warning: 'mv_u3d_remove' \
defined but not used [-Wunused-function]
Signed-off-by: Felipe Balbi <balbi@ti.com>
---
drivers/usb/gadget/mv_u3d_core.c | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/drivers/usb/gadget/mv_u3d_core.c b/drivers/usb/gadget/mv_u3d_core.c
index 565addc..734ade1 100644
--- a/drivers/usb/gadget/mv_u3d_core.c
+++ b/drivers/usb/gadget/mv_u3d_core.c
@@ -2072,7 +2072,7 @@ static void mv_u3d_shutdown(struct platform_device *dev)
static struct platform_driver mv_u3d_driver = {
.probe = mv_u3d_probe,
- .remove = __exit_p(mv_u3d_remove),
+ .remove = mv_u3d_remove,
.shutdown = mv_u3d_shutdown,
.driver = {
.owner = THIS_MODULE,
--
1.8.1.rc1.5.g7e0651a
^ permalink raw reply related
* [RFC/PATCH 13/32] usb: gadget: goku_udc: let udc-core manage gadget->dev
From: Felipe Balbi @ 2013-01-24 15:45 UTC (permalink / raw)
To: Linux USB Mailing List
Cc: kgene.kim, eric.y.miao, kuninori.morimoto.gx, alexander.shishkin,
gregkh, yoshihiro.shimoda.uh, nicolas.ferre, linux-geode,
haojian.zhuang, Linux OMAP Mailing List, linux-samsung-soc,
Felipe Balbi, ben-linux, dahlmann.thomas, linux, linuxppc-dev,
linux-arm-kernel
In-Reply-To: <1359042370-4358-1-git-send-email-balbi@ti.com>
By simply setting a flag, we can drop some
boilerplate code.
Signed-off-by: Felipe Balbi <balbi@ti.com>
---
drivers/usb/gadget/goku_udc.c | 10 +---------
drivers/usb/gadget/goku_udc.h | 3 +--
2 files changed, 2 insertions(+), 11 deletions(-)
diff --git a/drivers/usb/gadget/goku_udc.c b/drivers/usb/gadget/goku_udc.c
index 85742d4..b4ea2cf 100644
--- a/drivers/usb/gadget/goku_udc.c
+++ b/drivers/usb/gadget/goku_udc.c
@@ -1716,8 +1716,6 @@ static void goku_remove(struct pci_dev *pdev)
pci_resource_len (pdev, 0));
if (dev->enabled)
pci_disable_device(pdev);
- if (dev->registered)
- device_unregister(&dev->gadget.dev);
pci_set_drvdata(pdev, NULL);
dev->regs = NULL;
@@ -1756,11 +1754,11 @@ static int goku_probe(struct pci_dev *pdev, const struct pci_device_id *id)
dev->gadget.max_speed = USB_SPEED_FULL;
/* the "gadget" abstracts/virtualizes the controller */
- dev_set_name(&dev->gadget.dev, "gadget");
dev->gadget.dev.parent = &pdev->dev;
dev->gadget.dev.dma_mask = pdev->dev.dma_mask;
dev->gadget.dev.release = gadget_release;
dev->gadget.name = driver_name;
+ dev->gadget.register_my_device = true;
/* now all the pci goodies ... */
retval = pci_enable_device(pdev);
@@ -1810,12 +1808,6 @@ static int goku_probe(struct pci_dev *pdev, const struct pci_device_id *id)
create_proc_read_entry(proc_node_name, 0, NULL, udc_proc_read, dev);
#endif
- retval = device_register(&dev->gadget.dev);
- if (retval) {
- put_device(&dev->gadget.dev);
- goto err;
- }
- dev->registered = 1;
retval = usb_add_gadget_udc(&pdev->dev, &dev->gadget);
if (retval)
goto err;
diff --git a/drivers/usb/gadget/goku_udc.h b/drivers/usb/gadget/goku_udc.h
index b4470d2..86d2ada 100644
--- a/drivers/usb/gadget/goku_udc.h
+++ b/drivers/usb/gadget/goku_udc.h
@@ -250,8 +250,7 @@ struct goku_udc {
got_region:1,
req_config:1,
configured:1,
- enabled:1,
- registered:1;
+ enabled:1;
/* pci state used to access those endpoints */
struct pci_dev *pdev;
--
1.8.1.rc1.5.g7e0651a
^ permalink raw reply related
* [RFC/PATCH 15/32] usb: gadget: lpc32xx_udc: let udc-core manage gadget->dev
From: Felipe Balbi @ 2013-01-24 15:45 UTC (permalink / raw)
To: Linux USB Mailing List
Cc: kgene.kim, eric.y.miao, kuninori.morimoto.gx, alexander.shishkin,
gregkh, yoshihiro.shimoda.uh, nicolas.ferre, linux-geode,
haojian.zhuang, Linux OMAP Mailing List, linux-samsung-soc,
Felipe Balbi, ben-linux, dahlmann.thomas, linux, linuxppc-dev,
linux-arm-kernel
In-Reply-To: <1359042370-4358-1-git-send-email-balbi@ti.com>
By simply setting a flag, we can drop some
boilerplate code.
Signed-off-by: Felipe Balbi <balbi@ti.com>
---
drivers/usb/gadget/lpc32xx_udc.c | 11 +----------
1 file changed, 1 insertion(+), 10 deletions(-)
diff --git a/drivers/usb/gadget/lpc32xx_udc.c b/drivers/usb/gadget/lpc32xx_udc.c
index dd1c9b1..077e021 100644
--- a/drivers/usb/gadget/lpc32xx_udc.c
+++ b/drivers/usb/gadget/lpc32xx_udc.c
@@ -3090,6 +3090,7 @@ static int __init lpc32xx_udc_probe(struct platform_device *pdev)
/* init software state */
udc->gadget.dev.parent = dev;
+ udc->gadget.register_my_device = true;
udc->pdev = pdev;
udc->dev = &pdev->dev;
udc->enabled = 0;
@@ -3248,12 +3249,6 @@ static int __init lpc32xx_udc_probe(struct platform_device *pdev)
udc_disable(udc);
udc_reinit(udc);
- retval = device_register(&udc->gadget.dev);
- if (retval < 0) {
- dev_err(udc->dev, "Device registration failure\n");
- goto dev_register_fail;
- }
-
/* Request IRQs - low and high priority USB device IRQs are routed to
* the same handler, while the DMA interrupt is routed elsewhere */
retval = request_irq(udc->udp_irq[IRQ_USB_LP], lpc32xx_usb_lp_irq,
@@ -3320,8 +3315,6 @@ irq_dev_fail:
irq_hp_fail:
free_irq(udc->udp_irq[IRQ_USB_LP], udc);
irq_lp_fail:
- device_unregister(&udc->gadget.dev);
-dev_register_fail:
dma_pool_destroy(udc->dd_cache);
dma_alloc_fail:
dma_free_coherent(&pdev->dev, UDCA_BUFF_SIZE,
@@ -3376,8 +3369,6 @@ static int lpc32xx_udc_remove(struct platform_device *pdev)
free_irq(udc->udp_irq[IRQ_USB_HP], udc);
free_irq(udc->udp_irq[IRQ_USB_LP], udc);
- device_unregister(&udc->gadget.dev);
-
clk_disable(udc->usb_otg_clk);
clk_put(udc->usb_otg_clk);
clk_disable(udc->usb_slv_clk);
--
1.8.1.rc1.5.g7e0651a
^ permalink raw reply related
* [RFC/PATCH 14/32] usb: gadget: imx_udc: let udc-core manage gadget->dev
From: Felipe Balbi @ 2013-01-24 15:45 UTC (permalink / raw)
To: Linux USB Mailing List
Cc: kgene.kim, eric.y.miao, kuninori.morimoto.gx, alexander.shishkin,
gregkh, yoshihiro.shimoda.uh, nicolas.ferre, linux-geode,
haojian.zhuang, Linux OMAP Mailing List, linux-samsung-soc,
Felipe Balbi, ben-linux, dahlmann.thomas, linux, linuxppc-dev,
linux-arm-kernel
In-Reply-To: <1359042370-4358-1-git-send-email-balbi@ti.com>
By simply setting a flag, we can drop some
boilerplate code.
Signed-off-by: Felipe Balbi <balbi@ti.com>
---
drivers/usb/gadget/imx_udc.c | 13 +------------
1 file changed, 1 insertion(+), 12 deletions(-)
diff --git a/drivers/usb/gadget/imx_udc.c b/drivers/usb/gadget/imx_udc.c
index a0eb857..c8b5da3 100644
--- a/drivers/usb/gadget/imx_udc.c
+++ b/drivers/usb/gadget/imx_udc.c
@@ -1341,20 +1341,12 @@ static int imx_udc_start(struct usb_gadget *gadget,
imx_usb->driver = driver;
imx_usb->gadget.dev.driver = &driver->driver;
- retval = device_add(&imx_usb->gadget.dev);
- if (retval)
- goto fail;
-
D_INI(imx_usb->dev, "<%s> registered gadget driver '%s'\n",
__func__, driver->driver.name);
imx_udc_enable(imx_usb);
return 0;
-fail:
- imx_usb->driver = NULL;
- imx_usb->gadget.dev.driver = NULL;
- return retval;
}
static int imx_udc_stop(struct usb_gadget *gadget,
@@ -1370,8 +1362,6 @@ static int imx_udc_stop(struct usb_gadget *gadget,
imx_usb->gadget.dev.driver = NULL;
imx_usb->driver = NULL;
- device_del(&imx_usb->gadget.dev);
-
D_INI(imx_usb->dev, "<%s> unregistered gadget driver '%s'\n",
__func__, driver->driver.name);
@@ -1472,8 +1462,7 @@ static int __init imx_udc_probe(struct platform_device *pdev)
imx_usb->clk = clk;
imx_usb->dev = &pdev->dev;
- device_initialize(&imx_usb->gadget.dev);
-
+ imx_usb->gadget.register_my_device = true;
imx_usb->gadget.dev.parent = &pdev->dev;
imx_usb->gadget.dev.dma_mask = pdev->dev.dma_mask;
--
1.8.1.rc1.5.g7e0651a
^ permalink raw reply related
* [RFC/PATCH 12/32] usb: gadget: fusb300_udc: let udc-core manage gadget->dev
From: Felipe Balbi @ 2013-01-24 15:45 UTC (permalink / raw)
To: Linux USB Mailing List
Cc: kgene.kim, eric.y.miao, kuninori.morimoto.gx, alexander.shishkin,
gregkh, yoshihiro.shimoda.uh, nicolas.ferre, linux-geode,
haojian.zhuang, Linux OMAP Mailing List, linux-samsung-soc,
Felipe Balbi, ben-linux, dahlmann.thomas, linux, linuxppc-dev,
linux-arm-kernel
In-Reply-To: <1359042370-4358-1-git-send-email-balbi@ti.com>
By simply setting a flag, we can drop some
boilerplate code.
Signed-off-by: Felipe Balbi <balbi@ti.com>
---
drivers/usb/gadget/fusb300_udc.c | 14 +-------------
1 file changed, 1 insertion(+), 13 deletions(-)
diff --git a/drivers/usb/gadget/fusb300_udc.c b/drivers/usb/gadget/fusb300_udc.c
index 8c2372f..798a25b 100644
--- a/drivers/usb/gadget/fusb300_udc.c
+++ b/drivers/usb/gadget/fusb300_udc.c
@@ -1422,15 +1422,12 @@ static int __init fusb300_probe(struct platform_device *pdev)
fusb300->gadget.ops = &fusb300_gadget_ops;
- device_initialize(&fusb300->gadget.dev);
-
- dev_set_name(&fusb300->gadget.dev, "gadget");
-
fusb300->gadget.max_speed = USB_SPEED_HIGH;
fusb300->gadget.dev.parent = &pdev->dev;
fusb300->gadget.dev.dma_mask = pdev->dev.dma_mask;
fusb300->gadget.dev.release = pdev->dev.release;
fusb300->gadget.name = udc_name;
+ fusb300->gadget.register_my_device = true;
fusb300->reg = reg;
ret = request_irq(ires->start, fusb300_irq, IRQF_SHARED,
@@ -1478,19 +1475,10 @@ static int __init fusb300_probe(struct platform_device *pdev)
if (ret)
goto err_add_udc;
- ret = device_add(&fusb300->gadget.dev);
- if (ret) {
- pr_err("device_add error (%d)\n", ret);
- goto err_add_device;
- }
-
dev_info(&pdev->dev, "version %s\n", DRIVER_VERSION);
return 0;
-err_add_device:
- usb_del_gadget_udc(&fusb300->gadget);
-
err_add_udc:
fusb300_free_request(&fusb300->ep[0]->ep, fusb300->ep0_req);
--
1.8.1.rc1.5.g7e0651a
^ permalink raw reply related
* [RFC/PATCH 10/32] usb: gadget: fsl_qe_udc: let udc-core manage gadget->dev
From: Felipe Balbi @ 2013-01-24 15:45 UTC (permalink / raw)
To: Linux USB Mailing List
Cc: kgene.kim, eric.y.miao, kuninori.morimoto.gx, alexander.shishkin,
gregkh, yoshihiro.shimoda.uh, nicolas.ferre, linux-geode,
haojian.zhuang, Linux OMAP Mailing List, linux-samsung-soc,
Felipe Balbi, ben-linux, dahlmann.thomas, linux, linuxppc-dev,
linux-arm-kernel
In-Reply-To: <1359042370-4358-1-git-send-email-balbi@ti.com>
By simply setting a flag, we can drop some
boilerplate code.
Signed-off-by: Felipe Balbi <balbi@ti.com>
---
drivers/usb/gadget/fsl_qe_udc.c | 15 ++-------------
1 file changed, 2 insertions(+), 13 deletions(-)
diff --git a/drivers/usb/gadget/fsl_qe_udc.c b/drivers/usb/gadget/fsl_qe_udc.c
index ec50f18..08c8432 100644
--- a/drivers/usb/gadget/fsl_qe_udc.c
+++ b/drivers/usb/gadget/fsl_qe_udc.c
@@ -2523,13 +2523,9 @@ static int qe_udc_probe(struct platform_device *ofdev)
/* name: Identifies the controller hardware type. */
udc->gadget.name = driver_name;
-
- device_initialize(&udc->gadget.dev);
-
- dev_set_name(&udc->gadget.dev, "gadget");
-
udc->gadget.dev.release = qe_udc_release;
udc->gadget.dev.parent = &ofdev->dev;
+ udc->gadget.register_my_device = true;
/* initialize qe_ep struct */
for (i = 0; i < USB_MAX_ENDPOINTS ; i++) {
@@ -2592,13 +2588,9 @@ static int qe_udc_probe(struct platform_device *ofdev)
goto err5;
}
- ret = device_add(&udc->gadget.dev);
- if (ret)
- goto err6;
-
ret = usb_add_gadget_udc(&ofdev->dev, &udc->gadget);
if (ret)
- goto err7;
+ goto err6;
dev_set_drvdata(&ofdev->dev, udc);
dev_info(udc->dev,
@@ -2606,8 +2598,6 @@ static int qe_udc_probe(struct platform_device *ofdev)
(udc->soc_type == PORT_QE) ? "QE" : "CPM");
return 0;
-err7:
- device_unregister(&udc->gadget.dev);
err6:
free_irq(udc->usb_irq, udc);
err5:
@@ -2702,7 +2692,6 @@ static int qe_udc_remove(struct platform_device *ofdev)
iounmap(udc->usb_regs);
- device_unregister(&udc->gadget.dev);
/* wait for release() of gadget.dev to free udc */
wait_for_completion(&done);
--
1.8.1.rc1.5.g7e0651a
^ permalink raw reply related
* [RFC/PATCH 07/32] usb: gadget: atmel_usba_udc: let udc-core manage gadget->dev
From: Felipe Balbi @ 2013-01-24 15:45 UTC (permalink / raw)
To: Linux USB Mailing List
Cc: kgene.kim, eric.y.miao, kuninori.morimoto.gx, alexander.shishkin,
gregkh, yoshihiro.shimoda.uh, nicolas.ferre, linux-geode,
haojian.zhuang, Linux OMAP Mailing List, linux-samsung-soc,
Felipe Balbi, ben-linux, dahlmann.thomas, linux, linuxppc-dev,
linux-arm-kernel
In-Reply-To: <1359042370-4358-1-git-send-email-balbi@ti.com>
By simply setting a flag, we can drop some
boilerplate code.
Signed-off-by: Felipe Balbi <balbi@ti.com>
---
drivers/usb/gadget/atmel_usba_udc.c | 13 +------------
1 file changed, 1 insertion(+), 12 deletions(-)
diff --git a/drivers/usb/gadget/atmel_usba_udc.c b/drivers/usb/gadget/atmel_usba_udc.c
index a7aed84..f0f9423 100644
--- a/drivers/usb/gadget/atmel_usba_udc.c
+++ b/drivers/usb/gadget/atmel_usba_udc.c
@@ -1900,9 +1900,9 @@ static int __init usba_udc_probe(struct platform_device *pdev)
dev_info(&pdev->dev, "FIFO at 0x%08lx mapped at %p\n",
(unsigned long)fifo->start, udc->fifo);
- device_initialize(&udc->gadget.dev);
udc->gadget.dev.parent = &pdev->dev;
udc->gadget.dev.dma_mask = pdev->dev.dma_mask;
+ udc->gadget.register_my_device = true;
platform_set_drvdata(pdev, udc);
@@ -1962,12 +1962,6 @@ static int __init usba_udc_probe(struct platform_device *pdev)
}
udc->irq = irq;
- ret = device_add(&udc->gadget.dev);
- if (ret) {
- dev_dbg(&pdev->dev, "Could not add gadget: %d\n", ret);
- goto err_device_add;
- }
-
if (gpio_is_valid(pdata->vbus_pin)) {
if (!gpio_request(pdata->vbus_pin, "atmel_usba_udc")) {
udc->vbus_pin = pdata->vbus_pin;
@@ -2007,9 +2001,6 @@ err_add_udc:
gpio_free(udc->vbus_pin);
}
- device_unregister(&udc->gadget.dev);
-
-err_device_add:
free_irq(irq, udc);
err_request_irq:
kfree(usba_ep);
@@ -2053,8 +2044,6 @@ static int __exit usba_udc_remove(struct platform_device *pdev)
clk_put(udc->hclk);
clk_put(udc->pclk);
- device_unregister(&udc->gadget.dev);
-
return 0;
}
--
1.8.1.rc1.5.g7e0651a
^ permalink raw reply related
* [RFC/PATCH 11/32] usb: gadget: fsl_udc_core: let udc-core manage gadget->dev
From: Felipe Balbi @ 2013-01-24 15:45 UTC (permalink / raw)
To: Linux USB Mailing List
Cc: kgene.kim, eric.y.miao, kuninori.morimoto.gx, alexander.shishkin,
gregkh, yoshihiro.shimoda.uh, nicolas.ferre, linux-geode,
haojian.zhuang, Linux OMAP Mailing List, linux-samsung-soc,
Felipe Balbi, ben-linux, dahlmann.thomas, linux, linuxppc-dev,
linux-arm-kernel
In-Reply-To: <1359042370-4358-1-git-send-email-balbi@ti.com>
By simply setting a flag, we can drop some
boilerplate code.
Signed-off-by: Felipe Balbi <balbi@ti.com>
---
drivers/usb/gadget/fsl_udc_core.c | 9 ++-------
1 file changed, 2 insertions(+), 7 deletions(-)
diff --git a/drivers/usb/gadget/fsl_udc_core.c b/drivers/usb/gadget/fsl_udc_core.c
index 49642d4..b78b734 100644
--- a/drivers/usb/gadget/fsl_udc_core.c
+++ b/drivers/usb/gadget/fsl_udc_core.c
@@ -2526,9 +2526,7 @@ static int __init fsl_udc_probe(struct platform_device *pdev)
udc_controller->gadget.dev.release = fsl_udc_release;
udc_controller->gadget.dev.parent = &pdev->dev;
udc_controller->gadget.dev.of_node = pdev->dev.of_node;
- ret = device_register(&udc_controller->gadget.dev);
- if (ret < 0)
- goto err_free_irq;
+ udc_controller->gadget.register_my_device = true;
if (!IS_ERR_OR_NULL(udc_controller->transceiver))
udc_controller->gadget.is_otg = 1;
@@ -2561,7 +2559,7 @@ static int __init fsl_udc_probe(struct platform_device *pdev)
DTD_ALIGNMENT, UDC_DMA_BOUNDARY);
if (udc_controller->td_pool == NULL) {
ret = -ENOMEM;
- goto err_unregister;
+ goto err_free_irq;
}
ret = usb_add_gadget_udc(&pdev->dev, &udc_controller->gadget);
@@ -2573,8 +2571,6 @@ static int __init fsl_udc_probe(struct platform_device *pdev)
err_del_udc:
dma_pool_destroy(udc_controller->td_pool);
-err_unregister:
- device_unregister(&udc_controller->gadget.dev);
err_free_irq:
free_irq(udc_controller->irq, udc_controller);
err_iounmap:
@@ -2624,7 +2620,6 @@ static int __exit fsl_udc_remove(struct platform_device *pdev)
if (pdata->operating_mode == FSL_USB2_DR_DEVICE)
release_mem_region(res->start, resource_size(res));
- device_unregister(&udc_controller->gadget.dev);
/* free udc --wait for the release() finished */
wait_for_completion(&done);
--
1.8.1.rc1.5.g7e0651a
^ permalink raw reply related
* [RFC/PATCH 09/32] usb: gadget: dummy_hcd: let udc-core manage gadget->dev
From: Felipe Balbi @ 2013-01-24 15:45 UTC (permalink / raw)
To: Linux USB Mailing List
Cc: kgene.kim, eric.y.miao, kuninori.morimoto.gx, alexander.shishkin,
gregkh, yoshihiro.shimoda.uh, nicolas.ferre, linux-geode,
haojian.zhuang, Linux OMAP Mailing List, linux-samsung-soc,
Felipe Balbi, ben-linux, dahlmann.thomas, linux, linuxppc-dev,
linux-arm-kernel
In-Reply-To: <1359042370-4358-1-git-send-email-balbi@ti.com>
By simply setting a flag, we can drop some
boilerplate code.
Signed-off-by: Felipe Balbi <balbi@ti.com>
---
drivers/usb/gadget/dummy_hcd.c | 10 +---------
1 file changed, 1 insertion(+), 9 deletions(-)
diff --git a/drivers/usb/gadget/dummy_hcd.c b/drivers/usb/gadget/dummy_hcd.c
index 95d584d..8155d4a 100644
--- a/drivers/usb/gadget/dummy_hcd.c
+++ b/drivers/usb/gadget/dummy_hcd.c
@@ -982,16 +982,10 @@ static int dummy_udc_probe(struct platform_device *pdev)
dum->gadget.name = gadget_name;
dum->gadget.ops = &dummy_ops;
dum->gadget.max_speed = USB_SPEED_SUPER;
+ dum->gadget.register_my_device = true;
- dev_set_name(&dum->gadget.dev, "gadget");
dum->gadget.dev.parent = &pdev->dev;
dum->gadget.dev.release = dummy_gadget_release;
- rc = device_register(&dum->gadget.dev);
- if (rc < 0) {
- put_device(&dum->gadget.dev);
- return rc;
- }
-
init_dummy_udc_hw(dum);
rc = usb_add_gadget_udc(&pdev->dev, &dum->gadget);
@@ -1007,7 +1001,6 @@ static int dummy_udc_probe(struct platform_device *pdev)
err_dev:
usb_del_gadget_udc(&dum->gadget);
err_udc:
- device_unregister(&dum->gadget.dev);
return rc;
}
@@ -1018,7 +1011,6 @@ static int dummy_udc_remove(struct platform_device *pdev)
usb_del_gadget_udc(&dum->gadget);
platform_set_drvdata(pdev, NULL);
device_remove_file(&dum->gadget.dev, &dev_attr_function);
- device_unregister(&dum->gadget.dev);
return 0;
}
--
1.8.1.rc1.5.g7e0651a
^ permalink raw reply related
* [RFC/PATCH 00/32] usb: refactor gadget->dev registration
From: Felipe Balbi @ 2013-01-24 15:45 UTC (permalink / raw)
To: Linux USB Mailing List
Cc: kgene.kim, eric.y.miao, kuninori.morimoto.gx, alexander.shishkin,
gregkh, yoshihiro.shimoda.uh, nicolas.ferre, linux-geode,
haojian.zhuang, Linux OMAP Mailing List, linux-samsung-soc,
Felipe Balbi, ben-linux, dahlmann.thomas, linux, linuxppc-dev,
linux-arm-kernel
Hi folks,
Please comment on this series as I need help testing it
on all UDC controllers so we can send it for v3.10 merge
window.
NOTE: I will queue this series for v3.10 merge window, so
make sure to test and comment.
cheers
Felipe Balbi (32):
usb: gadget: udc-core: allow udc class register gadget device
usb: dwc3: gadget: let udc-core manage gadget->dev
usb: musb: gadget: let udc-core manage gadget-dev
usb: gadget: omap_udc: let udc-core manage gadget->dev
usb: gadget: amd5536udc: let udc-core manage gadget->dev
usb: gadget: at91_udc: let udc-core manage gadget->dev
usb: gadget: atmel_usba_udc: let udc-core manage gadget->dev
usb: gadget: bcm63xx_udc: let udc-core manage gadget->dev
usb: gadget: dummy_hcd: let udc-core manage gadget->dev
usb: gadget: fsl_qe_udc: let udc-core manage gadget->dev
usb: gadget: fsl_udc_core: let udc-core manage gadget->dev
usb: gadget: fusb300_udc: let udc-core manage gadget->dev
usb: gadget: goku_udc: let udc-core manage gadget->dev
usb: gadget: imx_udc: let udc-core manage gadget->dev
usb: gadget: lpc32xx_udc: let udc-core manage gadget->dev
usb: gadget: m66592-udc: let udc-core manage gadget->dev
usb: gadget: mv_u3d_core: let udc-core manage gadget->dev
usb: gadget: mv_u3d_core: fix a compile warning
usb: gadget: mv_udc_core: let udc-core manage gadget->dev
usb: gadget: net2272: let udc-core manage gadget->dev
usb: gadget: net2280: let udc-core manage gadget->dev
usb: gadget: pch_udc: let udc-core manage gadget->dev
usb: gadget: r8a66597-udc: let udc-core manage gadget->dev
usb: gadget: s3c-hsotg: let udc-core manage gadget->dev
usb: gadget: s3c-hsudc: let udc-core manage gadget->dev
usb: gadget: s3c2410_udc: let udc-core manage gadget->dev
usb: renesas_usbhs: gadget: let udc-core manage gadget->dev
usb: gadget: pxa25x_udc: let udc-core manage gadget->dev
usb: gadget: pxa27x_udc: let udc-core manage gadget->dev
usb: chipidea: register debugging syfs on our device
usb: chipidea: let udc-core manage gadget->dev
usb: gadget: drop now unnecessary flag
drivers/usb/chipidea/udc.c | 18 ++++--------------
drivers/usb/dwc3/gadget.c | 16 +---------------
drivers/usb/gadget/amd5536udc.c | 8 --------
drivers/usb/gadget/at91_udc.c | 12 +-----------
drivers/usb/gadget/atmel_usba_udc.c | 12 ------------
drivers/usb/gadget/bcm63xx_udc.c | 6 ------
drivers/usb/gadget/dummy_hcd.c | 9 ---------
drivers/usb/gadget/fsl_qe_udc.c | 14 +-------------
drivers/usb/gadget/fsl_udc_core.c | 8 +-------
drivers/usb/gadget/fusb300_udc.c | 13 -------------
drivers/usb/gadget/goku_udc.c | 9 ---------
drivers/usb/gadget/goku_udc.h | 3 +--
drivers/usb/gadget/imx_udc.c | 12 ------------
drivers/usb/gadget/lpc32xx_udc.c | 10 ----------
drivers/usb/gadget/m66592-udc.c | 12 ------------
drivers/usb/gadget/mv_u3d_core.c | 11 +----------
drivers/usb/gadget/mv_udc_core.c | 11 +----------
drivers/usb/gadget/net2272.c | 9 +--------
drivers/usb/gadget/net2280.c | 4 ----
drivers/usb/gadget/omap_udc.c | 11 +++--------
drivers/usb/gadget/pch_udc.c | 9 ---------
drivers/usb/gadget/pxa25x_udc.c | 9 ---------
drivers/usb/gadget/pxa27x_udc.c | 8 --------
drivers/usb/gadget/r8a66597-udc.c | 11 +----------
drivers/usb/gadget/s3c-hsotg.c | 13 -------------
drivers/usb/gadget/s3c-hsudc.c | 10 ----------
drivers/usb/gadget/s3c2410_udc.c | 9 ---------
drivers/usb/gadget/udc-core.c | 20 ++++++++++++++++----
drivers/usb/musb/musb_gadget.c | 9 ---------
drivers/usb/renesas_usbhs/mod_gadget.c | 10 +---------
30 files changed, 33 insertions(+), 283 deletions(-)
--
1.8.1.rc1.5.g7e0651a
^ permalink raw reply
* [RFC/PATCH 05/32] usb: gadget: amd5536udc: let udc-core manage gadget->dev
From: Felipe Balbi @ 2013-01-24 15:45 UTC (permalink / raw)
To: Linux USB Mailing List
Cc: kgene.kim, eric.y.miao, kuninori.morimoto.gx, alexander.shishkin,
gregkh, yoshihiro.shimoda.uh, nicolas.ferre, linux-geode,
haojian.zhuang, Linux OMAP Mailing List, linux-samsung-soc,
Felipe Balbi, ben-linux, dahlmann.thomas, linux, linuxppc-dev,
linux-arm-kernel
In-Reply-To: <1359042370-4358-1-git-send-email-balbi@ti.com>
By simply setting a flag, we drop some boilerplate
code.
Signed-off-by: Felipe Balbi <balbi@ti.com>
---
drivers/usb/gadget/amd5536udc.c | 9 +--------
1 file changed, 1 insertion(+), 8 deletions(-)
diff --git a/drivers/usb/gadget/amd5536udc.c b/drivers/usb/gadget/amd5536udc.c
index 3dac001..1827d4c 100644
--- a/drivers/usb/gadget/amd5536udc.c
+++ b/drivers/usb/gadget/amd5536udc.c
@@ -3080,7 +3080,6 @@ static void udc_pci_remove(struct pci_dev *pdev)
if (dev->active)
pci_disable_device(pdev);
- device_unregister(&dev->gadget.dev);
pci_set_drvdata(pdev, NULL);
udc_remove(dev);
@@ -3276,6 +3275,7 @@ static int udc_probe(struct udc *dev)
dev->gadget.dev.release = gadget_release;
dev->gadget.name = name;
dev->gadget.max_speed = USB_SPEED_HIGH;
+ dev->gadget.register_my_device = true;
/* init registers, interrupts, ... */
startup_registers(dev);
@@ -3301,13 +3301,6 @@ static int udc_probe(struct udc *dev)
if (retval)
goto finished;
- retval = device_register(&dev->gadget.dev);
- if (retval) {
- usb_del_gadget_udc(&dev->gadget);
- put_device(&dev->gadget.dev);
- goto finished;
- }
-
/* timer init */
init_timer(&udc_timer);
udc_timer.function = udc_timer_function;
--
1.8.1.rc1.5.g7e0651a
^ permalink raw reply related
* [RFC/PATCH 02/32] usb: dwc3: gadget: let udc-core manage gadget->dev
From: Felipe Balbi @ 2013-01-24 15:45 UTC (permalink / raw)
To: Linux USB Mailing List
Cc: kgene.kim, eric.y.miao, kuninori.morimoto.gx, alexander.shishkin,
gregkh, yoshihiro.shimoda.uh, nicolas.ferre, linux-geode,
haojian.zhuang, Linux OMAP Mailing List, linux-samsung-soc,
Felipe Balbi, ben-linux, dahlmann.thomas, linux, linuxppc-dev,
linux-arm-kernel
In-Reply-To: <1359042370-4358-1-git-send-email-balbi@ti.com>
We don't need to register that device ourselves
if we simply set gadget->register_my_device.
Signed-off-by: Felipe Balbi <balbi@ti.com>
---
drivers/usb/dwc3/gadget.c | 17 ++---------------
1 file changed, 2 insertions(+), 15 deletions(-)
diff --git a/drivers/usb/dwc3/gadget.c b/drivers/usb/dwc3/gadget.c
index 2e43b33..7002cf6 100644
--- a/drivers/usb/dwc3/gadget.c
+++ b/drivers/usb/dwc3/gadget.c
@@ -2412,8 +2412,6 @@ int dwc3_gadget_init(struct dwc3 *dwc)
goto err3;
}
- dev_set_name(&dwc->gadget.dev, "gadget");
-
dwc->gadget.ops = &dwc3_gadget_ops;
dwc->gadget.max_speed = USB_SPEED_SUPER;
dwc->gadget.speed = USB_SPEED_UNKNOWN;
@@ -2425,6 +2423,7 @@ int dwc3_gadget_init(struct dwc3 *dwc)
dwc->gadget.dev.dma_parms = dwc->dev->dma_parms;
dwc->gadget.dev.dma_mask = dwc->dev->dma_mask;
dwc->gadget.dev.release = dwc3_gadget_release;
+ dwc->gadget.register_my_device = true;
dwc->gadget.name = "dwc3-gadget";
/*
@@ -2480,24 +2479,14 @@ int dwc3_gadget_init(struct dwc3 *dwc)
dwc3_gadget_usb3_phy_suspend(dwc, false);
}
- ret = device_register(&dwc->gadget.dev);
- if (ret) {
- dev_err(dwc->dev, "failed to register gadget device\n");
- put_device(&dwc->gadget.dev);
- goto err6;
- }
-
ret = usb_add_gadget_udc(dwc->dev, &dwc->gadget);
if (ret) {
dev_err(dwc->dev, "failed to register udc\n");
- goto err7;
+ goto err6;
}
return 0;
-err7:
- device_unregister(&dwc->gadget.dev);
-
err6:
dwc3_writel(dwc->regs, DWC3_DEVTEN, 0x00);
free_irq(irq, dwc);
@@ -2546,6 +2535,4 @@ void dwc3_gadget_exit(struct dwc3 *dwc)
dma_free_coherent(dwc->dev, sizeof(*dwc->ctrl_req),
dwc->ctrl_req, dwc->ctrl_req_addr);
-
- device_unregister(&dwc->gadget.dev);
}
--
1.8.1.rc1.5.g7e0651a
^ permalink raw reply related
* [RFC/PATCH 06/32] usb: gadget: at91_udc: let udc-core manage gadget->dev
From: Felipe Balbi @ 2013-01-24 15:45 UTC (permalink / raw)
To: Linux USB Mailing List
Cc: kgene.kim, eric.y.miao, kuninori.morimoto.gx, alexander.shishkin,
gregkh, yoshihiro.shimoda.uh, nicolas.ferre, linux-geode,
haojian.zhuang, Linux OMAP Mailing List, linux-samsung-soc,
Felipe Balbi, ben-linux, dahlmann.thomas, linux, linuxppc-dev,
linux-arm-kernel
In-Reply-To: <1359042370-4358-1-git-send-email-balbi@ti.com>
By simply setting a flag, we can remove some
boilerplate code.
Signed-off-by: Felipe Balbi <balbi@ti.com>
---
drivers/usb/gadget/at91_udc.c | 13 ++-----------
1 file changed, 2 insertions(+), 11 deletions(-)
diff --git a/drivers/usb/gadget/at91_udc.c b/drivers/usb/gadget/at91_udc.c
index 10f45fa..177b56d 100644
--- a/drivers/usb/gadget/at91_udc.c
+++ b/drivers/usb/gadget/at91_udc.c
@@ -1726,6 +1726,7 @@ static int at91udc_probe(struct platform_device *pdev)
/* init software state */
udc = &controller;
+ udc->gadget.register_my_device = true;
udc->gadget.dev.parent = dev;
if (pdev->dev.of_node)
at91udc_of_init(udc, pdev->dev.of_node);
@@ -1780,13 +1781,7 @@ static int at91udc_probe(struct platform_device *pdev)
DBG("clocks missing\n");
retval = -ENODEV;
/* NOTE: we "know" here that refcounts on these are NOPs */
- goto fail0b;
- }
-
- retval = device_register(&udc->gadget.dev);
- if (retval < 0) {
- put_device(&udc->gadget.dev);
- goto fail0b;
+ goto fail1;
}
/* don't do anything until we have both gadget driver and VBUS */
@@ -1857,8 +1852,6 @@ fail3:
fail2:
free_irq(udc->udp_irq, udc);
fail1:
- device_unregister(&udc->gadget.dev);
-fail0b:
iounmap(udc->udp_baseaddr);
fail0a:
if (cpu_is_at91rm9200())
@@ -1892,8 +1885,6 @@ static int __exit at91udc_remove(struct platform_device *pdev)
gpio_free(udc->board.vbus_pin);
}
free_irq(udc->udp_irq, udc);
- device_unregister(&udc->gadget.dev);
-
iounmap(udc->udp_baseaddr);
if (cpu_is_at91rm9200())
--
1.8.1.rc1.5.g7e0651a
^ permalink raw reply related
* [RFC/PATCH 08/32] usb: gadget: bcm63xx_udc: let udc-core manage gadget->dev
From: Felipe Balbi @ 2013-01-24 15:45 UTC (permalink / raw)
To: Linux USB Mailing List
Cc: kgene.kim, eric.y.miao, kuninori.morimoto.gx, alexander.shishkin,
gregkh, yoshihiro.shimoda.uh, nicolas.ferre, linux-geode,
haojian.zhuang, Linux OMAP Mailing List, linux-samsung-soc,
Felipe Balbi, ben-linux, dahlmann.thomas, linux, linuxppc-dev,
linux-arm-kernel
In-Reply-To: <1359042370-4358-1-git-send-email-balbi@ti.com>
By simply setting a flag, we can drop some
boilerplate code.
Signed-off-by: Felipe Balbi <balbi@ti.com>
---
drivers/usb/gadget/bcm63xx_udc.c | 7 +------
1 file changed, 1 insertion(+), 6 deletions(-)
diff --git a/drivers/usb/gadget/bcm63xx_udc.c b/drivers/usb/gadget/bcm63xx_udc.c
index 47a4993..10b0475 100644
--- a/drivers/usb/gadget/bcm63xx_udc.c
+++ b/drivers/usb/gadget/bcm63xx_udc.c
@@ -2367,13 +2367,13 @@ static int bcm63xx_udc_probe(struct platform_device *pdev)
spin_lock_init(&udc->lock);
INIT_WORK(&udc->ep0_wq, bcm63xx_ep0_process);
- dev_set_name(&udc->gadget.dev, "gadget");
udc->gadget.ops = &bcm63xx_udc_ops;
udc->gadget.name = dev_name(dev);
udc->gadget.dev.parent = dev;
udc->gadget.dev.release = bcm63xx_udc_gadget_release;
udc->gadget.dev.dma_mask = dev->dma_mask;
+ udc->gadget.register_my_device = true;
if (!pd->use_fullspeed && !use_fullspeed)
udc->gadget.max_speed = USB_SPEED_HIGH;
@@ -2413,10 +2413,6 @@ static int bcm63xx_udc_probe(struct platform_device *pdev)
}
}
- rc = device_register(&udc->gadget.dev);
- if (rc)
- goto out_uninit;
-
bcm63xx_udc_init_debugfs(udc);
rc = usb_add_gadget_udc(dev, &udc->gadget);
if (!rc)
@@ -2439,7 +2435,6 @@ static int bcm63xx_udc_remove(struct platform_device *pdev)
bcm63xx_udc_cleanup_debugfs(udc);
usb_del_gadget_udc(&udc->gadget);
- device_unregister(&udc->gadget.dev);
BUG_ON(udc->driver);
platform_set_drvdata(pdev, NULL);
--
1.8.1.rc1.5.g7e0651a
^ permalink raw reply related
* [RFC/PATCH 04/32] usb: gadget: omap_udc: let udc-core manage gadget->dev
From: Felipe Balbi @ 2013-01-24 15:45 UTC (permalink / raw)
To: Linux USB Mailing List
Cc: kgene.kim, eric.y.miao, kuninori.morimoto.gx, alexander.shishkin,
gregkh, yoshihiro.shimoda.uh, nicolas.ferre, linux-geode,
haojian.zhuang, Linux OMAP Mailing List, linux-samsung-soc,
Felipe Balbi, ben-linux, dahlmann.thomas, linux, linuxppc-dev,
linux-arm-kernel
In-Reply-To: <1359042370-4358-1-git-send-email-balbi@ti.com>
By simply setting a flag, we drop some boilerplate
code.
Signed-off-by: Felipe Balbi <balbi@ti.com>
---
drivers/usb/gadget/omap_udc.c | 12 ++++--------
1 file changed, 4 insertions(+), 8 deletions(-)
diff --git a/drivers/usb/gadget/omap_udc.c b/drivers/usb/gadget/omap_udc.c
index d0c87b1..234e82b 100644
--- a/drivers/usb/gadget/omap_udc.c
+++ b/drivers/usb/gadget/omap_udc.c
@@ -2631,10 +2631,9 @@ omap_udc_setup(struct platform_device *odev, struct usb_phy *xceiv)
udc->gadget.max_speed = USB_SPEED_FULL;
udc->gadget.name = driver_name;
- device_initialize(&udc->gadget.dev);
- dev_set_name(&udc->gadget.dev, "gadget");
udc->gadget.dev.release = omap_udc_release;
udc->gadget.dev.parent = &odev->dev;
+ udc->gadget.register_my_device = true;
if (use_dma)
udc->gadget.dev.dma_mask = odev->dev.dma_mask;
@@ -2911,14 +2910,12 @@ bad_on_1710:
}
create_proc_file();
- status = device_add(&udc->gadget.dev);
+ status = usb_add_gadget_udc(&pdev->dev, &udc->gadget);
if (status)
goto cleanup4;
- status = usb_add_gadget_udc(&pdev->dev, &udc->gadget);
- if (!status)
- return status;
- /* If fail, fall through */
+ return 0;
+
cleanup4:
remove_proc_file();
@@ -2989,7 +2986,6 @@ static int omap_udc_remove(struct platform_device *pdev)
release_mem_region(pdev->resource[0].start,
pdev->resource[0].end - pdev->resource[0].start + 1);
- device_unregister(&udc->gadget.dev);
wait_for_completion(&done);
return 0;
--
1.8.1.rc1.5.g7e0651a
^ permalink raw reply related
* [RFC/PATCH 03/32] usb: musb: gadget: let udc-core manage gadget-dev
From: Felipe Balbi @ 2013-01-24 15:45 UTC (permalink / raw)
To: Linux USB Mailing List
Cc: kgene.kim, eric.y.miao, kuninori.morimoto.gx, alexander.shishkin,
gregkh, yoshihiro.shimoda.uh, nicolas.ferre, linux-geode,
haojian.zhuang, Linux OMAP Mailing List, linux-samsung-soc,
Felipe Balbi, ben-linux, dahlmann.thomas, linux, linuxppc-dev,
linux-arm-kernel
In-Reply-To: <1359042370-4358-1-git-send-email-balbi@ti.com>
By simply setting a flag, we can delete a little
boilerplate code.
Signed-off-by: Felipe Balbi <balbi@ti.com>
---
drivers/usb/musb/musb_gadget.c | 10 +---------
1 file changed, 1 insertion(+), 9 deletions(-)
diff --git a/drivers/usb/musb/musb_gadget.c b/drivers/usb/musb/musb_gadget.c
index 8767874..1c4a8e8 100644
--- a/drivers/usb/musb/musb_gadget.c
+++ b/drivers/usb/musb/musb_gadget.c
@@ -1871,12 +1871,11 @@ int musb_gadget_setup(struct musb *musb)
musb->g.speed = USB_SPEED_UNKNOWN;
/* this "gadget" abstracts/virtualizes the controller */
- dev_set_name(&musb->g.dev, "gadget");
musb->g.dev.parent = musb->controller;
musb->g.dev.dma_mask = musb->controller->dma_mask;
musb->g.dev.release = musb_gadget_release;
musb->g.name = musb_driver_name;
-
+ musb->g.register_my_device = true;
musb->g.is_otg = 1;
musb_g_init_endpoints(musb);
@@ -1884,11 +1883,6 @@ int musb_gadget_setup(struct musb *musb)
musb->is_active = 0;
musb_platform_try_idle(musb, 0);
- status = device_register(&musb->g.dev);
- if (status != 0) {
- put_device(&musb->g.dev);
- return status;
- }
status = usb_add_gadget_udc(musb->controller, &musb->g);
if (status)
goto err;
@@ -1903,8 +1897,6 @@ err:
void musb_gadget_cleanup(struct musb *musb)
{
usb_del_gadget_udc(&musb->g);
- if (musb->g.dev.parent)
- device_unregister(&musb->g.dev);
}
/*
--
1.8.1.rc1.5.g7e0651a
^ permalink raw reply related
* [RFC/PATCH 01/32] usb: gadget: udc-core: allow udc class register gadget device
From: Felipe Balbi @ 2013-01-24 15:45 UTC (permalink / raw)
To: Linux USB Mailing List
Cc: kgene.kim, eric.y.miao, kuninori.morimoto.gx, alexander.shishkin,
gregkh, yoshihiro.shimoda.uh, nicolas.ferre, linux-geode,
haojian.zhuang, Linux OMAP Mailing List, linux-samsung-soc,
Felipe Balbi, ben-linux, dahlmann.thomas, linux, linuxppc-dev,
linux-arm-kernel
In-Reply-To: <1359042370-4358-1-git-send-email-balbi@ti.com>
Currently all UDC drivers are calling
device_register() before calling
usb_add_gadget_udc(). In order to avoid
code duplication, we can allow udc-core.c
register that device.
However that would become a really large patch,
so to cope with the meanwhile and allow us
to write bite-sized patches, we're adding
a flag which will be set by UDC driver once
it removes the code for registering the
gadget device.
Once all are converted, the new flag will
be removed.
Signed-off-by: Felipe Balbi <balbi@ti.com>
---
drivers/usb/gadget/udc-core.c | 23 +++++++++++++++++++----
include/linux/usb/gadget.h | 4 ++++
2 files changed, 23 insertions(+), 4 deletions(-)
diff --git a/drivers/usb/gadget/udc-core.c b/drivers/usb/gadget/udc-core.c
index 2a9cd36..9195054 100644
--- a/drivers/usb/gadget/udc-core.c
+++ b/drivers/usb/gadget/udc-core.c
@@ -173,6 +173,14 @@ int usb_add_gadget_udc(struct device *parent, struct usb_gadget *gadget)
if (!udc)
goto err1;
+ if (gadget->register_my_device) {
+ dev_set_name(&gadget->dev, "gadget");
+
+ ret = device_register(&gadget->dev);
+ if (ret)
+ goto err2;
+ }
+
device_initialize(&udc->dev);
udc->dev.release = usb_udc_release;
udc->dev.class = udc_class;
@@ -180,7 +188,7 @@ int usb_add_gadget_udc(struct device *parent, struct usb_gadget *gadget)
udc->dev.parent = parent;
ret = dev_set_name(&udc->dev, "%s", kobject_name(&parent->kobj));
if (ret)
- goto err2;
+ goto err3;
udc->gadget = gadget;
@@ -189,18 +197,22 @@ int usb_add_gadget_udc(struct device *parent, struct usb_gadget *gadget)
ret = device_add(&udc->dev);
if (ret)
- goto err3;
+ goto err4;
mutex_unlock(&udc_lock);
return 0;
-err3:
+
+err4:
list_del(&udc->list);
mutex_unlock(&udc_lock);
-err2:
+err3:
put_device(&udc->dev);
+err2:
+ if (gadget->register_my_device)
+ put_device(&gadget->dev);
err1:
return ret;
}
@@ -254,6 +266,9 @@ found:
kobject_uevent(&udc->dev.kobj, KOBJ_REMOVE);
device_unregister(&udc->dev);
+
+ if (gadget->register_my_device)
+ device_unregister(&gadget->dev);
}
EXPORT_SYMBOL_GPL(usb_del_gadget_udc);
diff --git a/include/linux/usb/gadget.h b/include/linux/usb/gadget.h
index 2e297e8..fcd9ef8 100644
--- a/include/linux/usb/gadget.h
+++ b/include/linux/usb/gadget.h
@@ -494,6 +494,9 @@ struct usb_gadget_ops {
* only supports HNP on a different root port.
* @b_hnp_enable: OTG device feature flag, indicating that the A-Host
* enabled HNP support.
+ * @register_my_device: Flag telling udc-core that UDC driver didn't
+ * register the gadget device to the driver model. Temporary until
+ * all UDC drivers are fixed up properly.
* @name: Identifies the controller hardware type. Used in diagnostics
* and sometimes configuration.
* @dev: Driver model state for this abstract device.
@@ -531,6 +534,7 @@ struct usb_gadget {
unsigned b_hnp_enable:1;
unsigned a_hnp_support:1;
unsigned a_alt_hnp_support:1;
+ unsigned register_my_device:1;
const char *name;
struct device dev;
unsigned out_epnum;
--
1.8.1.rc1.5.g7e0651a
^ permalink raw reply related
* Re: [PATCH 3/8] mm: use vm_unmapped_area() on frv architecture
From: David Howells @ 2013-01-24 14:13 UTC (permalink / raw)
To: Michel Lespinasse
Cc: Fenghua Yu, Tony Luck, linux-ia64, linux-parisc, Helge Deller,
James E.J. Bottomley, linux-kernel, dhowells, linux-mm,
Paul Mackerras, linux-alpha, Ivan Kokshaysky, Matt Turner,
linuxppc-dev, Andrew Morton, Richard Henderson
In-Reply-To: <1358990991-21316-4-git-send-email-walken@google.com>
Michel Lespinasse <walken@google.com> wrote:
> Update the frv arch_get_unmapped_area function to make use of
> vm_unmapped_area() instead of implementing a brute force search.
>
> Signed-off-by: Michel Lespinasse <walken@google.com>
> Acked-by: Rik van Riel <riel@redhat.com>
Acked-by: David Howells <dhowells@redhat.com>
^ permalink raw reply
* Re: Freescale P2020 CPU Freeze over PCIe abort signal
From: siva kumar @ 2013-01-24 11:53 UTC (permalink / raw)
To: Scott Wood; +Cc: linuxppc-dev
In-Reply-To: <1358977222.9710.7@snotra>
[-- Attachment #1: Type: text/plain, Size: 684 bytes --]
Thank you Scott for the reply.
May I know did u got out of this issue and can i get some brief on what
changes they had suggested.
Thanks,
Siva
On Thu, Jan 24, 2013 at 3:10 AM, Scott Wood <scottwood@freescale.com> wrote:
> On 01/23/2013 11:41:26 AM, siva kumar wrote:
>
>> Hi ,
>>
>> Is there any update on this , am getting in to the same state .
>> https://lists.ozlabs.org/**pipermail/linuxppc-dev/2010-**
>> October/086680.html<https://lists.ozlabs.org/pipermail/linuxppc-dev/2010-October/086680.html>
>>
>
> Eran's initial comment of "This should probably go to the Freescale
> support" seems right. You can reach Freescale support at
> support@freescale.com.
>
> -Scott
>
[-- Attachment #2: Type: text/html, Size: 1303 bytes --]
^ permalink raw reply
page: next (older) | prev (newer) | latest
- recent:[subjects (threaded)|topics (new)|topics (active)]
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox