Message ID | 1527597407-27991-2-git-send-email-jjhiblot@ti.com |
---|---|
State | Superseded |
Delegated to: | Marek Vasut |
Headers | show |
Series | Improvements for the dwc3_generic driver | expand |
Hi Jean-Jacques, > 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_DEV). > > Signed-off-by: Jean-Jacques Hiblot <jjhiblot@ti.com> > > --- > > Changes in v2: > - Updated commit log > - Fixed typo in thordown.c > > cmd/fastboot.c | 4 ++-- > cmd/rockusb.c | 4 ++-- > cmd/thordown.c | 4 ++-- > cmd/usb_gadget_sdp.c | 4 ++-- > cmd/usb_mass_storage.c | 4 ++-- > common/dfu.c | 6 +++--- > drivers/usb/gadget/ether.c | 38 > +++++--------------------------------- include/linux/usb/gadget.h | > 10 ++++++++++ 8 files changed, 28 insertions(+), 46 deletions(-) > > diff --git a/cmd/fastboot.c b/cmd/fastboot.c > index a5ec5f4..93f97fd 100644 > --- a/cmd/fastboot.c > +++ b/cmd/fastboot.c > @@ -24,7 +24,7 @@ static int do_fastboot(cmd_tbl_t *cmdtp, int flag, > int argc, char *const argv[]) usb_controller = argv[1]; > 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", ret); > return CMD_RET_FAILURE; > @@ -55,7 +55,7 @@ static int do_fastboot(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; > } > diff --git a/cmd/rockusb.c b/cmd/rockusb.c > index 8206643..e0c1480 100644 > --- a/cmd/rockusb.c > +++ b/cmd/rockusb.c > @@ -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; > } > diff --git a/cmd/thordown.c b/cmd/thordown.c > index e297de2..05f308a 100644 > --- a/cmd/thordown.c > +++ b/cmd/thordown.c > @@ -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", 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(); > > diff --git a/cmd/usb_gadget_sdp.c b/cmd/usb_gadget_sdp.c > index ba1f66a..808ed97 100644 > --- a/cmd/usb_gadget_sdp.c > +++ b/cmd/usb_gadget_sdp.c > @@ -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; > } > diff --git a/cmd/usb_mass_storage.c b/cmd/usb_mass_storage.c > index 89b9ddf..7c6d0c6 100644 > --- a/cmd/usb_mass_storage.c > +++ b/cmd/usb_mass_storage.c > @@ -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."); > 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(); > > diff --git a/common/dfu.c b/common/dfu.c > index 2620d32..44d1484 100644 > --- a/common/dfu.c > +++ b/common/dfu.c > @@ -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); > diff --git a/drivers/usb/gadget/ether.c b/drivers/usb/gadget/ether.c > index 8ab9b9f..1c438c3 100644 > --- a/drivers/usb/gadget/ether.c > +++ b/drivers/usb/gadget/ether.c > @@ -105,9 +105,6 @@ struct eth_dev { > struct usb_gadget *gadget; > struct usb_request *req; /* for > control responses */ struct usb_request *stat_req; /* > for cdc & rndis status */ -#ifdef CONFIG_DM_USB > - struct udevice *usb_udev; > -#endif > > u8 config; > struct usb_ep *in_ep, *out_ep, *status_ep; > @@ -2341,40 +2338,17 @@ fail: > } > > /*-------------------------------------------------------------------------*/ > - > -#ifdef CONFIG_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; > > -#ifdef CONFIG_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 > @@ -2546,9 +2520,7 @@ void _usb_eth_halt(struct ether_priv *priv) > } > > usb_gadget_unregister_driver(&priv->eth_driver); > -#ifndef CONFIG_DM_USB > - board_usb_cleanup(0, USB_INIT_DEVICE); > -#endif > + usb_gadget_release(0); > } > > #ifndef CONFIG_DM_ETH > diff --git a/include/linux/usb/gadget.h b/include/linux/usb/gadget.h > index b824f13..40ca2d3 100644 > --- a/include/linux/usb/gadget.h > +++ b/include/linux/usb/gadget.h > @@ -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 */ Reviewed-by: Lukasz Majewski <lukma@denx.de> Best regards, Lukasz Majewski -- DENX Software Engineering GmbH, Managing Director: Wolfgang Denk HRB 165235 Munich, Office: Kirchenstr.5, D-82194 Groebenzell, Germany Phone: (+49)-8142-66989-10 Fax: (+49)-8142-66989-80 Email: wd@denx.de
diff --git a/cmd/fastboot.c b/cmd/fastboot.c index a5ec5f4..93f97fd 100644 --- a/cmd/fastboot.c +++ b/cmd/fastboot.c @@ -24,7 +24,7 @@ static int do_fastboot(cmd_tbl_t *cmdtp, int flag, int argc, char *const argv[]) usb_controller = argv[1]; 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", ret); return CMD_RET_FAILURE; @@ -55,7 +55,7 @@ static int do_fastboot(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; } diff --git a/cmd/rockusb.c b/cmd/rockusb.c index 8206643..e0c1480 100644 --- a/cmd/rockusb.c +++ b/cmd/rockusb.c @@ -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; } diff --git a/cmd/thordown.c b/cmd/thordown.c index e297de2..05f308a 100644 --- a/cmd/thordown.c +++ b/cmd/thordown.c @@ -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", 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(); diff --git a/cmd/usb_gadget_sdp.c b/cmd/usb_gadget_sdp.c index ba1f66a..808ed97 100644 --- a/cmd/usb_gadget_sdp.c +++ b/cmd/usb_gadget_sdp.c @@ -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; } diff --git a/cmd/usb_mass_storage.c b/cmd/usb_mass_storage.c index 89b9ddf..7c6d0c6 100644 --- a/cmd/usb_mass_storage.c +++ b/cmd/usb_mass_storage.c @@ -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."); 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(); diff --git a/common/dfu.c b/common/dfu.c index 2620d32..44d1484 100644 --- a/common/dfu.c +++ b/common/dfu.c @@ -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); diff --git a/drivers/usb/gadget/ether.c b/drivers/usb/gadget/ether.c index 8ab9b9f..1c438c3 100644 --- a/drivers/usb/gadget/ether.c +++ b/drivers/usb/gadget/ether.c @@ -105,9 +105,6 @@ struct eth_dev { struct usb_gadget *gadget; struct usb_request *req; /* for control responses */ struct usb_request *stat_req; /* for cdc & rndis status */ -#ifdef CONFIG_DM_USB - struct udevice *usb_udev; -#endif u8 config; struct usb_ep *in_ep, *out_ep, *status_ep; @@ -2341,40 +2338,17 @@ fail: } /*-------------------------------------------------------------------------*/ - -#ifdef CONFIG_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; -#ifdef CONFIG_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 @@ -2546,9 +2520,7 @@ void _usb_eth_halt(struct ether_priv *priv) } usb_gadget_unregister_driver(&priv->eth_driver); -#ifndef CONFIG_DM_USB - board_usb_cleanup(0, USB_INIT_DEVICE); -#endif + usb_gadget_release(0); } #ifndef CONFIG_DM_ETH diff --git a/include/linux/usb/gadget.h b/include/linux/usb/gadget.h index b824f13..40ca2d3 100644 --- a/include/linux/usb/gadget.h +++ b/include/linux/usb/gadget.h @@ -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 */
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_DEV). Signed-off-by: Jean-Jacques Hiblot <jjhiblot@ti.com> --- Changes in v2: - Updated commit log - Fixed typo in thordown.c cmd/fastboot.c | 4 ++-- cmd/rockusb.c | 4 ++-- cmd/thordown.c | 4 ++-- cmd/usb_gadget_sdp.c | 4 ++-- cmd/usb_mass_storage.c | 4 ++-- common/dfu.c | 6 +++--- drivers/usb/gadget/ether.c | 38 +++++--------------------------------- include/linux/usb/gadget.h | 10 ++++++++++ 8 files changed, 28 insertions(+), 46 deletions(-)