]> git.dujemihanovic.xyz Git - u-boot.git/commitdiff
usb: gadget: Do not call board_usb_xxx() directly in USB gadget drivers
authorJean-Jacques Hiblot <jjhiblot@ti.com>
Thu, 29 Nov 2018 09:52:41 +0000 (10:52 +0100)
committerMarek Vasut <marex@denx.de>
Fri, 7 Dec 2018 15:31:45 +0000 (16:31 +0100)
Add 2 functions to wrap the calls to board_usb_init() and
board_usb_cleanup().
This is a preparatory work for DM support for UDC drivers (DM_USB_GADGET).

Signed-off-by: Jean-Jacques Hiblot <jjhiblot@ti.com>
Reviewed-by: Lukasz Majewski <lukma@denx.de>
cmd/fastboot.c
cmd/rockusb.c
cmd/thordown.c
cmd/usb_gadget_sdp.c
cmd/usb_mass_storage.c
common/dfu.c
drivers/usb/gadget/ether.c
include/linux/usb/gadget.h

index ae3a5f627f117a9a92a462db5a132aa599649ac5..0be83b78ac130fda28873596fcee64274913f516 100644 (file)
@@ -51,7 +51,7 @@ static int do_fastboot_usb(int argc, char *const argv[],
                return CMD_RET_FAILURE;
        }
 
-       ret = board_usb_init(controller_index, USB_INIT_DEVICE);
+       ret = usb_gadget_initialize(controller_index);
        if (ret) {
                pr_err("USB init failed: %d\n", ret);
                return CMD_RET_FAILURE;
@@ -82,7 +82,7 @@ static int do_fastboot_usb(int argc, char *const argv[],
 exit:
        g_dnl_unregister();
        g_dnl_clear_detach();
-       board_usb_cleanup(controller_index, USB_INIT_DEVICE);
+       usb_gadget_release(controller_index);
 
        return ret;
 #else
index 8206643b272c70b77402284afbf59c625f593b9e..e0c1480d6d43705ce6cde47543db98414670fea4 100644 (file)
@@ -33,7 +33,7 @@ static int do_rockusb(cmd_tbl_t *cmdtp, int flag, int argc, char *const argv[])
        dev_index = simple_strtoul(devnum, NULL, 0);
        rockusb_dev_init(devtype, dev_index);
 
-       ret = board_usb_init(controller_index, USB_INIT_DEVICE);
+       ret = usb_gadget_initialize(controller_index);
        if (ret) {
                printf("USB init failed: %d\n", ret);
                return CMD_RET_FAILURE;
@@ -62,7 +62,7 @@ static int do_rockusb(cmd_tbl_t *cmdtp, int flag, int argc, char *const argv[])
 exit:
        g_dnl_unregister();
        g_dnl_clear_detach();
-       board_usb_cleanup(controller_index, USB_INIT_DEVICE);
+       usb_gadget_release(controller_index);
 
        return ret;
 }
index 2615adad750a6d24db099b026a579664fa65c6b0..ce3660d174791b378c8e4b16a849a9c9b2fdc04e 100644 (file)
@@ -30,7 +30,7 @@ int do_thor_down(cmd_tbl_t *cmdtp, int flag, int argc, char * const argv[])
                goto done;
 
        int controller_index = simple_strtoul(usb_controller, NULL, 0);
-       ret = board_usb_init(controller_index, USB_INIT_DEVICE);
+       ret = usb_gadget_initialize(controller_index);
        if (ret) {
                pr_err("USB init failed: %d\n", ret);
                ret = CMD_RET_FAILURE;
@@ -55,7 +55,7 @@ int do_thor_down(cmd_tbl_t *cmdtp, int flag, int argc, char * const argv[])
 
 exit:
        g_dnl_unregister();
-       board_usb_cleanup(controller_index, USB_INIT_DEVICE);
+       usb_gadget_release(controller_index);
 done:
        dfu_free_entities();
 
index ba1f66a5de5cde869cbe5d4f89799611a3851fb1..808ed974fa7537a367f3b8d5567fe1d0988f6224 100644 (file)
@@ -20,7 +20,7 @@ static int do_sdp(cmd_tbl_t *cmdtp, int flag, int argc, char * const argv[])
 
        char *usb_controller = argv[1];
        int controller_index = simple_strtoul(usb_controller, NULL, 0);
-       board_usb_init(controller_index, USB_INIT_DEVICE);
+       usb_gadget_initialize(controller_index);
 
        g_dnl_clear_detach();
        g_dnl_register("usb_dnl_sdp");
@@ -37,7 +37,7 @@ static int do_sdp(cmd_tbl_t *cmdtp, int flag, int argc, char * const argv[])
 
 exit:
        g_dnl_unregister();
-       board_usb_cleanup(controller_index, USB_INIT_DEVICE);
+       usb_gadget_release(controller_index);
 
        return ret;
 }
index 0d551141e0dd2a191d035a0653dab1697129e4a7..753ae4f42a7a0bd3671032f14ddfb61a82205a71 100644 (file)
@@ -160,7 +160,7 @@ static int do_usb_mass_storage(cmd_tbl_t *cmdtp, int flag,
 
        controller_index = (unsigned int)(simple_strtoul(
                                usb_controller, NULL, 0));
-       if (board_usb_init(controller_index, USB_INIT_DEVICE)) {
+       if (usb_gadget_initialize(controller_index)) {
                pr_err("Couldn't init USB controller.\n");
                rc = CMD_RET_FAILURE;
                goto cleanup_ums_init;
@@ -231,7 +231,7 @@ static int do_usb_mass_storage(cmd_tbl_t *cmdtp, int flag,
 cleanup_register:
        g_dnl_unregister();
 cleanup_board:
-       board_usb_cleanup(controller_index, USB_INIT_DEVICE);
+       usb_gadget_release(controller_index);
 cleanup_ums_init:
        ums_fini();
 
index 2620d3238b1613b7fa367d1f84160f93625e11b4..44d1484d3d277f5b17c4dce7c36d90ce78de6c51 100644 (file)
@@ -23,9 +23,9 @@ int run_usb_dnl_gadget(int usbctrl_index, char *usb_dnl_gadget)
        bool dfu_reset = false;
        int ret, i = 0;
 
-       ret = board_usb_init(usbctrl_index, USB_INIT_DEVICE);
+       ret = usb_gadget_initialize(usbctrl_index);
        if (ret) {
-               pr_err("board usb init failed\n");
+               pr_err("usb_gadget_initialize failed\n");
                return CMD_RET_FAILURE;
        }
        g_dnl_clear_detach();
@@ -84,7 +84,7 @@ int run_usb_dnl_gadget(int usbctrl_index, char *usb_dnl_gadget)
        }
 exit:
        g_dnl_unregister();
-       board_usb_cleanup(usbctrl_index, USB_INIT_DEVICE);
+       usb_gadget_release(usbctrl_index);
 
        if (dfu_reset)
                do_reset(NULL, 0, 0, NULL);
index 193583b437ce74b300211fc8a3545d0b56a57b78..5a9ffd71204a9de94d24f914a6227851b3bc90c1 100644 (file)
@@ -100,9 +100,6 @@ struct eth_dev {
        struct usb_gadget       *gadget;
        struct usb_request      *req;           /* for control responses */
        struct usb_request      *stat_req;      /* for cdc & rndis status */
-#if CONFIG_IS_ENABLED(DM_USB)
-       struct udevice          *usb_udev;
-#endif
 
        u8                      config;
        struct usb_ep           *in_ep, *out_ep, *status_ep;
@@ -2336,40 +2333,17 @@ fail:
 }
 
 /*-------------------------------------------------------------------------*/
-
-#if CONFIG_IS_ENABLED(DM_USB)
-int dm_usb_init(struct eth_dev *e_dev)
-{
-       struct udevice *dev = NULL;
-       int ret;
-
-       ret = uclass_first_device(UCLASS_USB_DEV_GENERIC, &dev);
-       if (!dev || ret) {
-               pr_err("No USB device found\n");
-               return -ENODEV;
-       }
-
-       e_dev->usb_udev = dev;
-
-       return ret;
-}
-#endif
-
 static int _usb_eth_init(struct ether_priv *priv)
 {
        struct eth_dev *dev = &priv->ethdev;
        struct usb_gadget *gadget;
        unsigned long ts;
+       int ret;
        unsigned long timeout = USB_CONNECT_TIMEOUT;
 
-#if CONFIG_IS_ENABLED(DM_USB)
-       if (dm_usb_init(dev)) {
-               pr_err("USB ether not found\n");
-               return -ENODEV;
-       }
-#else
-       board_usb_init(0, USB_INIT_DEVICE);
-#endif
+       ret = usb_gadget_initialize(0);
+       if (ret)
+               return ret;
 
        /* Configure default mac-addresses for the USB ethernet device */
 #ifdef CONFIG_USBNET_DEV_ADDR
@@ -2541,9 +2515,7 @@ void _usb_eth_halt(struct ether_priv *priv)
        }
 
        usb_gadget_unregister_driver(&priv->eth_driver);
-#if !CONFIG_IS_ENABLED(DM_USB)
-       board_usb_cleanup(0, USB_INIT_DEVICE);
-#endif
+       usb_gadget_release(0);
 }
 
 #ifndef CONFIG_DM_ETH
index b824f13477bf11a1877549a63d4cb1f8223b11ec..40ca2d3468c973ab26f446cbba5889d8e6b8bd90 100644 (file)
@@ -19,6 +19,7 @@
 #define __LINUX_USB_GADGET_H
 
 #include <errno.h>
+#include <usb.h>
 #include <linux/compat.h>
 #include <linux/list.h>
 
@@ -926,4 +927,13 @@ extern void usb_ep_autoconfig_reset(struct usb_gadget *);
 
 extern int usb_gadget_handle_interrupts(int index);
 
+static inline int usb_gadget_initialize(int index)
+{
+       return board_usb_init(index, USB_INIT_DEVICE);
+}
+
+static inline int usb_gadget_release(int index)
+{
+       return board_usb_cleanup(index, USB_INIT_DEVICE);
+}
 #endif /* __LINUX_USB_GADGET_H */