diff options
author | Felipe Balbi <balbi@ti.com> | 2013-01-24 10:36:39 -0500 |
---|---|---|
committer | Felipe Balbi <balbi@ti.com> | 2013-03-18 05:16:54 -0400 |
commit | dc9e2873b740331b186b8f315fd18bbc97108d2e (patch) | |
tree | 89c76b811385ada11d90c62c951a4f317f68ae47 | |
parent | 45f596a6d776532f03135d48f10a1164006f9466 (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.c | 13 |
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); |
1798 | remove_dbg: | 1792 | remove_dbg: |
1799 | dbg_remove_files(ci->dev); | 1793 | dbg_remove_files(ci->dev); |
1800 | unreg_device: | ||
1801 | device_unregister(&ci->gadget.dev); | ||
1802 | put_transceiver: | 1794 | put_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 | } |