aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorFelipe Balbi <balbi@ti.com>2013-01-24 10:36:39 -0500
committerFelipe Balbi <balbi@ti.com>2013-03-18 05:16:54 -0400
commitdc9e2873b740331b186b8f315fd18bbc97108d2e (patch)
tree89c76b811385ada11d90c62c951a4f317f68ae47
parent45f596a6d776532f03135d48f10a1164006f9466 (diff)
usb: chipidea: let udc-core manage gadget->dev
By simply setting a flag, we can drop some boilerplate code. Signed-off-by: Felipe Balbi <balbi@ti.com>
-rw-r--r--drivers/usb/chipidea/udc.c13
1 files changed, 2 insertions, 11 deletions
diff --git a/drivers/usb/chipidea/udc.c b/drivers/usb/chipidea/udc.c
index f64fbea1cf20..e95e8bbde988 100644
--- a/drivers/usb/chipidea/udc.c
+++ b/drivers/usb/chipidea/udc.c
@@ -1717,11 +1717,11 @@ static int udc_start(struct ci13xxx *ci)
1717 1717
1718 INIT_LIST_HEAD(&ci->gadget.ep_list); 1718 INIT_LIST_HEAD(&ci->gadget.ep_list);
1719 1719
1720 dev_set_name(&ci->gadget.dev, "gadget");
1721 ci->gadget.dev.dma_mask = dev->dma_mask; 1720 ci->gadget.dev.dma_mask = dev->dma_mask;
1722 ci->gadget.dev.coherent_dma_mask = dev->coherent_dma_mask; 1721 ci->gadget.dev.coherent_dma_mask = dev->coherent_dma_mask;
1723 ci->gadget.dev.parent = dev; 1722 ci->gadget.dev.parent = dev;
1724 ci->gadget.dev.release = udc_release; 1723 ci->gadget.dev.release = udc_release;
1724 ci->gadget.register_my_device = true;
1725 1725
1726 /* alloc resources */ 1726 /* alloc resources */
1727 ci->qh_pool = dma_pool_create("ci13xxx_qh", dev, 1727 ci->qh_pool = dma_pool_create("ci13xxx_qh", dev,
@@ -1761,15 +1761,9 @@ static int udc_start(struct ci13xxx *ci)
1761 hw_enable_vbus_intr(ci); 1761 hw_enable_vbus_intr(ci);
1762 } 1762 }
1763 1763
1764 retval = device_register(&ci->gadget.dev);
1765 if (retval) {
1766 put_device(&ci->gadget.dev);
1767 goto put_transceiver;
1768 }
1769
1770 retval = dbg_create_files(ci->dev); 1764 retval = dbg_create_files(ci->dev);
1771 if (retval) 1765 if (retval)
1772 goto unreg_device; 1766 goto put_transceiver;
1773 1767
1774 if (!IS_ERR_OR_NULL(ci->transceiver)) { 1768 if (!IS_ERR_OR_NULL(ci->transceiver)) {
1775 retval = otg_set_peripheral(ci->transceiver->otg, 1769 retval = otg_set_peripheral(ci->transceiver->otg,
@@ -1797,8 +1791,6 @@ remove_trans:
1797 dev_err(dev, "error = %i\n", retval); 1791 dev_err(dev, "error = %i\n", retval);
1798remove_dbg: 1792remove_dbg:
1799 dbg_remove_files(ci->dev); 1793 dbg_remove_files(ci->dev);
1800unreg_device:
1801 device_unregister(&ci->gadget.dev);
1802put_transceiver: 1794put_transceiver:
1803 if (!IS_ERR_OR_NULL(ci->transceiver) && ci->global_phy) 1795 if (!IS_ERR_OR_NULL(ci->transceiver) && ci->global_phy)
1804 usb_put_phy(ci->transceiver); 1796 usb_put_phy(ci->transceiver);
@@ -1837,7 +1829,6 @@ static void udc_stop(struct ci13xxx *ci)
1837 usb_put_phy(ci->transceiver); 1829 usb_put_phy(ci->transceiver);
1838 } 1830 }
1839 dbg_remove_files(ci->dev); 1831 dbg_remove_files(ci->dev);
1840 device_unregister(&ci->gadget.dev);
1841 /* my kobject is dynamic, I swear! */ 1832 /* my kobject is dynamic, I swear! */
1842 memset(&ci->gadget, 0, sizeof(ci->gadget)); 1833 memset(&ci->gadget, 0, sizeof(ci->gadget));
1843} 1834}