Improvements for the dwc3_generic driver
Subsystems (4)
v2 cover Improvements for the dwc3_generic driver
Resending this series after rebasing on top of latest u-boot.
This series aims at bringing improvements to the dwc3_generic driver so that it can be used by most of the platforms using the dwc3 controller.
I tested this on with DRA7 and AM57x platforms for both Peripheral and Host operations. The code to enable DM USB host & dev support for those platforms will be submitted in a separate series.
Michal Simek has tested this series:
" I have tested it on zcu100 with usb stick, usb to ethernet converter and also dfu.
Enhancements:
- use separate Kconfig option for DM USB Periphal and DM USB Host. This allow platforms to keep their non-DM USB peripheral code and use the DM USB host.
- fixes the bind/probe confusion in dwc3_generic. The probe is done when the USB device is first needed.
- handles PHYs when in the peripheral mode. The code to handle the PHYs is shared with the host side
- handles clock and reset
- bind host controller to the more generic driver 'xhci-dwc3'
Changes in v2:
- Updated commit log
- Fixed typo in thordown.c
- select DM_USB_DEV by default for zynqmp platforms
Jean-Jacques Hiblot (7):
usb: gadget: Do not call board_usb_xxx() directly in USB gadget
drivers
usb: introduce a separate config option for DM USB device
usb: udc: implement DM versions of
usb_gadget_initialize()/_release()/_handle_interrupt()
dwc3_generic: do not probe the USB device driver when it's bound
dwc3: move phy operation to core.c
dwc3-generic: Handle the PHYs, the clocks and the reset lines
dwc3-generic: Add select_dr_mode operation
arch/arm/Kconfig | 2 + 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/Kconfig | 6 ++ drivers/usb/dwc3/Kconfig | 7 +- drivers/usb/dwc3/core.c | 86 +++++++++++++++- drivers/usb/dwc3/dwc3-generic.c | 207 +++++++++++++++++++++++++++++--------- drivers/usb/dwc3/ep0.c | 1 - drivers/usb/gadget/ether.c | 38 +------ drivers/usb/gadget/udc/udc-core.c | 44 +++++++- drivers/usb/host/xhci-dwc3.c | 93 ++--------------- include/dwc3-uboot.h | 7 ++ include/linux/usb/gadget.h | 18 ++++ 17 files changed, 351 insertions(+), 184 deletions(-)
Signature · 1 line
2.7.4
PATCH v2 1/7 usb: gadget: Do not call board_usb_xxx() directly in USB gadget drivers
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).
---
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(-)
cmd/fastboot.c +2 -2
@@ -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
cmd/rockusb.c +2 -2
@@ -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; }
cmd/thordown.c +2 -2
@@ -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 ();
cmd/usb_gadget_sdp.c +2 -2
@@ -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; }
cmd/usb_mass_storage.c +2 -2
@@ -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 ();
common/dfu.c +3 -3
@@ -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 );
drivers/usb/gadget/ether.c +5 -33
@@ -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
include/linux/usb/gadget.h +10 -0
@@ -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 */
Signature · 1 line
2.7.4
PATCH v2 2/7 usb: introduce a separate config option for DM USB device
In reply to Jean-Jacques HiblotUsing CONFIG_DM_USB for this purpose prevents using DM_USB for host and not for device.
---
Changes in v2:
- select DM_USB_DEV by default for zynqmp platforms
arch/arm/Kconfig | 2 ++ drivers/usb/Kconfig | 6 ++++++ drivers/usb/dwc3/core.c | 2 +- drivers/usb/dwc3/dwc3-generic.c | 4 +++- 4 files changed, 12 insertions(+), 2 deletions(-)
arch/arm/Kconfig +2 -0
@@ -888,6 +888,7 @@ config ARCH_ZYNQMP_R5 select DM_SERIAL select OF_CONTROL imply CMD_DM + imply DM_USB_DEV config ARCH_ZYNQMP bool "Xilinx ZynqMP based platform"
@@ -903,6 +904,7 @@ config ARCH_ZYNQMP select SUPPORT_SPL imply CMD_DM imply FAT_WRITE + imply DM_USB_DEV config TEGRA bool "NVIDIA Tegra"
drivers/usb/Kconfig +6 -0
@@ -47,6 +47,12 @@ config DM_USB declared with the U_BOOT_USB_DEVICE() macro and will be automatically probed when found on the bus. +config DM_USB_DEV + bool "Enable driver model for USB (Peripheral mode)" + depends on DM_USB + help + Enable driver model for USB (Peripheral mode). + source "drivers/usb/host/Kconfig" source "drivers/usb/dwc3/Kconfig"
drivers/usb/dwc3/core.c +1 -1
@@ -789,7 +789,7 @@ MODULE_AUTHOR("Felipe Balbi <[email protected]>");MODULE_LICENSE ("GPL v2" );MODULE_DESCRIPTION ("DesignWare USB3 DRD Controller Driver" ); -#ifdef CONFIG_DM_USB +#ifdef CONFIG_DM_USB_DEV int dwc3_init (struct dwc3 *dwc) {
drivers/usb/dwc3/dwc3-generic.c +3 -1
@@ -21,7 +21,7 @@#include "gadget.h" #include "linux-compat.h" -DECLARE_GLOBAL_DATA_PTR ; +#ifdef CONFIG_DM_USB_DEV int usb_gadget_handle_interrupts (int index) {
@@ -98,6 +98,8 @@ U_BOOT_DRIVER(dwc3_generic_peripheral) = { .flags = DM_FLAG_ALLOC_PRIV_DMA, }; +#endif +static int dwc3_generic_bind (struct udevice *parent) {const void *fdt = gd->fdt_blob;
Signature · 1 line
2.7.4
PATCH v2 3/7 usb: udc: implement DM versions of usb_gadget_initialize()/_release()/_handle_interrupt()
In reply to Jean-Jacques HiblotWhen DM_USB_DEV the platform code for the USB device must be replaced by calls to a USB device driver.
usb_gadget_initialize() probes the USB device driver. usb_gadget_release() removes the USB device driver.
---
Changes in v2: None
drivers/usb/dwc3/dwc3-generic.c | 14 ++----------- drivers/usb/gadget/udc/udc-core.c | 44 ++++++++++++++++++++++++++++++++++++++- include/linux/usb/gadget.h | 8 +++++++ 3 files changed, 53 insertions(+), 13 deletions(-)
drivers/usb/dwc3/dwc3-generic.c +2 -12
@@ -23,19 +23,9 @@#ifdef CONFIG_DM_USB_DEV -int usb_gadget_handle_interrupts (int index) +int dm_usb_gadget_handle_interrupts (struct udevice *dev) { -struct dwc3 *priv; -struct udevice *dev; -int ret; - - ret =uclass_first_device (UCLASS_USB_DEV_GENERIC , &dev); -if (!dev || ret) { -pr_err ("No USB device found\n" ); -return -ENODEV ; - } - - priv =dev_get_priv (dev); +struct dwc3 *priv =dev_get_priv (dev);dwc3_gadget_uboot_handle_interrupt (priv);
drivers/usb/gadget/udc/udc-core.c +43 -1
53 lines not on this page · raw message
include/linux/usb/gadget.h +8 -0
@@ -927,6 +927,12 @@ extern void usb_ep_autoconfig_reset(struct usb_gadget *);extern int usb_gadget_handle_interrupts (int index); +#ifdef CONFIG_DM_USB_DEV +int usb_gadget_initialize (int index); +int usb_gadget_release (int index); +int dm_usb_gadget_handle_interrupts (struct udevice *dev); +#else +#include <usb.h> static inline int usb_gadget_initialize (int index) {return board_usb_init (index,USB_INIT_DEVICE );
@@ -936,4 +942,6 @@ static inline int usb_gadget_release(int index) {return board_usb_cleanup (index,USB_INIT_DEVICE ); } +#endif +#endif /* __LINUX_USB_GADGET_H */
Signature · 1 line
2.7.4
PATCH v2 4/7 dwc3_generic: do not probe the USB device driver when it's bound
In reply to Jean-Jacques HiblotThe driver will be probed when usb_gadget_initialize() is called.
---
Changes in v2: None
drivers/usb/dwc3/dwc3-generic.c | 7 ------- 1 file changed, 7 deletions(-)
drivers/usb/dwc3/dwc3-generic.c +0 -7
@@ -71,21 +71,14 @@ static int dwc3_generic_peripheral_ofdata_to_platdata(struct udevice *dev) return 0; } -static int dwc3_generic_peripheral_bind (struct udevice *dev) -{ -return device_probe (dev); -} -U_BOOT_DRIVER (dwc3_generic_peripheral) = { .name ="dwc3-generic-peripheral" , .id =UCLASS_USB_DEV_GENERIC , .ofdata_to_platdata = dwc3_generic_peripheral_ofdata_to_platdata, .probe = dwc3_generic_peripheral_probe, .remove = dwc3_generic_peripheral_remove, - .bind = dwc3_generic_peripheral_bind, .platdata_auto_alloc_size =sizeof (struct usb_platdata ), .priv_auto_alloc_size =sizeof (struct dwc3 ), - .flags =DM_FLAG_ALLOC_PRIV_DMA , };#endif
Signature · 1 line
2.7.4
PATCH v2 5/7 dwc3: move phy operation to core.c
In reply to Jean-Jacques HiblotThose operations can be used for peripheral operation as well as host operation.
---
Changes in v2: None
drivers/usb/dwc3/core.c | 88 ++++++++++++++++++++++++++++++++++++++++- drivers/usb/dwc3/ep0.c | 1 - drivers/usb/host/xhci-dwc3.c | 93 +++----------------------------------------- include/dwc3-uboot.h | 7 ++++ 4 files changed, 99 insertions(+), 90 deletions(-)
drivers/usb/dwc3/core.c +86 -2
@@ -19,7 +19,7 @@#include <asm/dma-mapping.h> #include <linux/ioport.h> #include <dm.h> - +#include <generic-phy.h> #include <linux/usb/ch9.h> #include <linux/usb/gadget.h>
@@ -789,8 +789,92 @@ MODULE_AUTHOR("Felipe Balbi <[email protected]>");MODULE_LICENSE ("GPL v2" );MODULE_DESCRIPTION ("DesignWare USB3 DRD Controller Driver" ); -#ifdef CONFIG_DM_USB_DEV +#ifdef CONFIG_DM_USB +int dwc3_setup_phy (struct udevice *dev,struct phy **array,int *num_phys) +{ +int i, ret, count; +struct phy *usb_phys; + +/* Return if no phy declared */ +if (!dev_read_prop (dev,"phys" ,NULL )) +return 0 ; + + count =dev_count_phandle_with_args (dev,"phys" ,"#phy-cells" ); +if (count <=0 ) +return count; + + usb_phys =devm_kcalloc (dev, count,sizeof (struct phy ), +GFP_KERNEL ); +if (!usb_phys) +return -ENOMEM ; + +for (i =0 ; i < count; i++) { + ret =generic_phy_get_by_index (dev, i, &usb_phys[i]); +if (ret && ret != -ENOENT ) { +pr_err ("Failed to get USB PHY%d for %s\n" , + i, dev->name); +return ret; + } + } + +for (i =0 ; i < count; i++) { + ret =generic_phy_init (&usb_phys[i]); +if (ret) { +pr_err ("Can't init USB PHY%d for %s\n" , + i, dev->name); + goto phys_init_err; + } + } + +for (i =0 ; i < count; i++) { + ret =generic_phy_power_on (&usb_phys[i]); +if (ret) { +pr_err ("Can't power USB PHY%d for %s\n" , + i, dev->name); + goto phys_poweron_err; + } + } + + *num_phys = count; +return 0 ; +phys_poweron_err: +for (i = count -1 ; i >=0 ; i--) +generic_phy_power_off (&usb_phys[i]); + +for (i =0 ; i < count; i++) +generic_phy_exit (&usb_phys[i]); + +return ret; + +phys_init_err: +for (; i >=0 ; i--) +generic_phy_exit (&usb_phys[i]); + +return ret; +} + +int dwc3_shutdown_phy (struct udevice *dev,struct phy *usb_phys,int num_phys) +{ +int i, ret; + +for (i =0 ; i < num_phys; i++) { +if (!generic_phy_valid (&usb_phys[i])) +continue ; + + ret =generic_phy_power_off (&usb_phys[i]); + ret |=generic_phy_exit (&usb_phys[i]); +if (ret) { +pr_err ("Can't shutdown USB PHY%d for %s\n" , + i, dev->name); + } + } + +return 0 ; +} +#endif + +#ifdef CONFIG_DM_USB_DEV int dwc3_init (struct dwc3 *dwc) {int ret;
drivers/usb/dwc3/ep0.c +0 -1
@@ -19,7 +19,6 @@#include <linux/usb/ch9.h> #include <linux/usb/gadget.h> #include <linux/usb/composite.h> -#include "core.h" #include "gadget.h" #include "io.h"
drivers/usb/host/xhci-dwc3.c +6 -87
123 lines not on this page · raw message
include/dwc3-uboot.h +7 -0
@@ -38,4 +38,11 @@ struct dwc3_device {int dwc3_uboot_init (struct dwc3_device *dev);void dwc3_uboot_exit (int index);void dwc3_uboot_handle_interrupt (int index); + +#ifdef CONFIG_DM_USB +struct phy ; +int dwc3_setup_phy (struct udevice *dev,struct phy **array,int *num_phys); +int dwc3_shutdown_phy (struct udevice *dev,struct phy *usb_phys,int num_phys); +#endif +#endif /* __DWC3_UBOOT_H_ */
Signature · 1 line
2.7.4
PATCH v2 6/7 dwc3-generic: Handle the PHYs, the clocks and the reset lines
In reply to Jean-Jacques HiblotThis make the driver more generic. At this point this driver can replace the dwc3-of-simple implementation.
Make the description in the Kconfig more generic too.
---
Changes in v2: None
drivers/usb/dwc3/Kconfig | 7 +- drivers/usb/dwc3/dwc3-generic.c | 160 +++++++++++++++++++++++++++++++++------- 2 files changed, 137 insertions(+), 30 deletions(-)
drivers/usb/dwc3/Kconfig +4 -3
@@ -38,10 +38,11 @@ config USB_DWC3_OMAP Say 'Y' here if you have one such device config USB_DWC3_GENERIC - bool "Xilinx ZynqMP and similar Platforms" - depends on DM_USB && USB_DWC3 + bool "Generic implementation of a DWC3 wrapper (aka dwc3 glue)" + depends on DM_USB && USB_DWC3 && MISC help - Some platforms can reuse this DWC3 generic implementation. + Select this for Xilinx ZynqMP and similar Platforms. + This wrapper supports Host and Peripheral operation modes. config USB_DWC3_UNIPHIER bool "DesignWare USB3 Host Support on UniPhier Platforms"
drivers/usb/dwc3/dwc3-generic.c +133 -27
247 lines not on this page · raw message
Signature · 1 line
2.7.4
PATCH v2 7/7 dwc3-generic: Add select_dr_mode operation
In reply to Jean-Jacques HiblotThe select_dr_mode operation is executed when the glue driver is probed. The role of this optional function is to configure the operating mode of the controller at the glue level.
---
Changes in v2: None
drivers/usb/dwc3/dwc3-generic.c | 26 ++++++++++++++++++++++++++ 1 file changed, 26 insertions(+)
drivers/usb/dwc3/dwc3-generic.c +26 -0
@@ -8,6 +8,7 @@*/ #include <common.h> +#include <asm-generic/io.h> #include <dm.h> #include <dm/device-internal.h> #include <dm/lists.h>
@@ -111,6 +112,12 @@ U_BOOT_DRIVER(dwc3_generic_peripheral) = {struct dwc3_glue_data {struct clk_bulk clks;struct reset_ctl_bulk resets; +fdt_addr_t regs; +}; + +struct dwc3_glue_ops { +void (*select_dr_mode)(struct udevice *dev,int index, +enum usb_dr_mode mode); };static int dwc3_glue_bind (struct udevice *parent)
@@ -206,9 +213,14 @@ static int dwc3_glue_clk_init(struct udevice *dev,static int dwc3_glue_probe (struct udevice *dev) { +struct dwc3_glue_ops *ops = (struct dwc3_glue_ops *)dev_get_driver_data (dev);struct dwc3_glue_data *glue =dev_get_platdata (dev); +struct udevice *child =NULL ; +int index =0 ;int ret; + glue->regs =dev_read_addr (dev); + ret =dwc3_glue_clk_init (dev, glue);if (ret)return ret;
@@ -217,6 +229,20 @@ static int dwc3_glue_probe(struct udevice *dev)if (ret)return ret; + ret =device_find_first_child (dev, &child); +if (ret) +return ret; + +while (child) { +enum usb_dr_mode dr_mode; + + dr_mode =usb_get_dr_mode (dev_of_offset (child)); +device_find_next_child (&child); +if (ops && ops->select_dr_mode) + ops->select_dr_mode (dev, index, dr_mode); + index++; + } +return 0 ; }
Signature · 1 line
2.7.4
v2 cover Improvements for the dwc3_generic driver
In reply to Jean-Jacques HiblotHi Marek,
Gentle ping on this series and the other for DM_USB on TI platforms.
JJ
Quoted 61 lines · Jean-Jacques Hiblot
Resending this series after rebasing on top of latest u-boot.
This series aims at bringing improvements to the
dwc3_genericdriver so that it can be used by most of the platforms using the dwc3 controller.I tested this on with DRA7 and AM57x platforms for both Peripheral and Host operations. The code to enable DM USB host & dev support for those platforms will be submitted in a separate series.
Michal Simek has tested this series:
" I have tested it on zcu100 with usb stick, usb to ethernet converter and also dfu.Tested-by Michal Simek <[email protected]>"Enhancements:
- use separateKconfigoption for DM USB Periphal and DM USB Host. This allow platforms to keep their non-DM USB peripheral code and use the DM USB host.
- fixes the bind/probe confusion indwc3_generic. The probe is done when the USB device is first needed.
- handles PHYs when in the peripheral mode. The code to handle the PHYs is shared with the host side
- handles clock and reset
- bind host controller to the more generic driver 'xhci-dwc3'Changes in v2:
- Updated commit log
- Fixed typo inthordown.c
- selectDM_USB_DEVby default for zynqmp platformsJean-Jacques Hiblot (7):
usb: gadget: Do not callboard_usb_xxx()directly in USB gadget
drivers
usb: introduce a separate config option for DM USB device
usb: udc: implement DM versions of
usb_gadget_initialize()/_release()/_handle_interrupt()
dwc3_generic: do not probe the USB device driver when it's bound
dwc3: move phy operation tocore.c
dwc3-generic: Handle the PHYs, the clocks and the reset lines
dwc3-generic: Addselect_dr_modeoperationarch/arm/Kconfig | 2 + 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/Kconfig | 6 ++ drivers/usb/dwc3/Kconfig | 7 +- drivers/usb/dwc3/core.c | 86 +++++++++++++++- drivers/usb/dwc3/dwc3-generic.c | 207 +++++++++++++++++++++++++++++--------- drivers/usb/dwc3/ep0.c | 1 - drivers/usb/gadget/ether.c | 38 +------ drivers/usb/gadget/udc/udc-core.c | 44 +++++++- drivers/usb/host/xhci-dwc3.c | 93 ++--------------- include/dwc3-uboot.h | 7 ++ include/linux/usb/gadget.h | 18 ++++ 17 files changed, 351 insertions(+), 184 deletions(-)
v2 cover Improvements for the dwc3_generic driver
In reply to Jean-Jacques HiblotHi Marek,
I haven't heard of you on this series.
It is already a resend and has been tested on 2 platforms (zcu100 and dra7/am57).
Can you please consider it for inclusion?
Thanks,
JJ
Quoted 61 lines · Jean-Jacques Hiblot
Resending this series after rebasing on top of latest u-boot.
This series aims at bringing improvements to the
dwc3_genericdriver so that it can be used by most of the platforms using the dwc3 controller.I tested this on with DRA7 and AM57x platforms for both Peripheral and Host operations. The code to enable DM USB host & dev support for those platforms will be submitted in a separate series.
Michal Simek has tested this series:
" I have tested it on zcu100 with usb stick, usb to ethernet converter and also dfu.Tested-by Michal Simek <[email protected]>"Enhancements:
- use separateKconfigoption for DM USB Periphal and DM USB Host. This allow platforms to keep their non-DM USB peripheral code and use the DM USB host.
- fixes the bind/probe confusion indwc3_generic. The probe is done when the USB device is first needed.
- handles PHYs when in the peripheral mode. The code to handle the PHYs is shared with the host side
- handles clock and reset
- bind host controller to the more generic driver 'xhci-dwc3'Changes in v2:
- Updated commit log
- Fixed typo inthordown.c
- selectDM_USB_DEVby default for zynqmp platformsJean-Jacques Hiblot (7):
usb: gadget: Do not callboard_usb_xxx()directly in USB gadget
drivers
usb: introduce a separate config option for DM USB device
usb: udc: implement DM versions of
usb_gadget_initialize()/_release()/_handle_interrupt()
dwc3_generic: do not probe the USB device driver when it's bound
dwc3: move phy operation tocore.c
dwc3-generic: Handle the PHYs, the clocks and the reset lines
dwc3-generic: Addselect_dr_modeoperationarch/arm/Kconfig | 2 + 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/Kconfig | 6 ++ drivers/usb/dwc3/Kconfig | 7 +- drivers/usb/dwc3/core.c | 86 +++++++++++++++- drivers/usb/dwc3/dwc3-generic.c | 207 +++++++++++++++++++++++++++++--------- drivers/usb/dwc3/ep0.c | 1 - drivers/usb/gadget/ether.c | 38 +------ drivers/usb/gadget/udc/udc-core.c | 44 +++++++- drivers/usb/host/xhci-dwc3.c | 93 ++--------------- include/dwc3-uboot.h | 7 ++ include/linux/usb/gadget.h | 18 ++++ 17 files changed, 351 insertions(+), 184 deletions(-)
v2 cover Improvements for the dwc3_generic driver
Hi Jean-Jacques,
Quoted 8 lines
Hi Marek,
I haven't heard of you on this series.
It is already a resend and has been tested on 2 platforms (zcu100 and dra7/am57).
Can you please consider it for inclusion?
This is not Marek to blame for the delay - I had some non open source tasks to finish (and I do apologise for this situation).
Your patches are now under build testing on travis-CI:
https://travis-ci.org/lmajewski/u-boot-dfu/builds/431388980
I will send the PR after CI finish.
Quoted 71 lines
Thanks,
JJ
Quoted 62 lines · Jean-Jacques Hiblot
Resending this series after rebasing on top of latest u-boot.
This series aims at bringing improvements to the
dwc3_genericdriver so that it can be used by most of the platforms using the dwc3 controller.I tested this on with DRA7 and AM57x platforms for both Peripheral and Host operations. The code to enable DM USB host & dev support for those platforms will be submitted in a separate series.
Michal Simek has tested this series:
" I have tested it on zcu100 with usb stick, usb to ethernet converter and also dfu.Tested-by Michal Simek <[email protected]>"Enhancements:
- use separateKconfigoption for DM USB Periphal and DM USB Host. This allow platforms to keep their non-DM USB peripheral code and use the DM USB host.
- fixes the bind/probe confusion indwc3_generic. The probe is done when the USB device is first needed.
- handles PHYs when in the peripheral mode. The code to handle the PHYs is shared with the host side
- handles clock and reset
- bind host controller to the more generic driver 'xhci-dwc3'Changes in v2:
- Updated commit log
- Fixed typo inthordown.c
- selectDM_USB_DEVby default for zynqmp platformsJean-Jacques Hiblot (7):
usb: gadget: Do not callboard_usb_xxx()directly in USB gadget
drivers
usb: introduce a separate config option for DM USB device
usb: udc: implement DM versions of
usb_gadget_initialize()/_release()/_handle_interrupt()
dwc3_generic: do not probe the USB device driver when it's bound
dwc3: move phy operation tocore.c
dwc3-generic: Handle the PHYs, the clocks and the reset lines
dwc3-generic: Addselect_dr_modeoperationarch/arm/Kconfig | 2 + 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/Kconfig | 6 ++ drivers/usb/dwc3/Kconfig | 7 +- drivers/usb/dwc3/core.c | 86 +++++++++++++++- drivers/usb/dwc3/dwc3-generic.c | 207 +++++++++++++++++++++++++++++--------- drivers/usb/dwc3/ep0.c | 1 - drivers/usb/gadget/ether.c | 38 +------ drivers/usb/gadget/udc/udc-core.c | 44 +++++++- drivers/usb/host/xhci-dwc3.c | 93 ++--------------- include/dwc3-uboot.h | 7 ++ include/linux/usb/gadget.h | 18 ++++ 17 files changed, 351insertions(+), 184 deletions(-)
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 at denx.de -------------- next part --------------
A non-text attachment was scrubbed...
Name: not available
Type: application/pgp-signature
Size: 488 bytes
Desc: OpenPGP digital signature
URL: <http://lists.denx.de/pipermail/u-boot/attachments/20180921/5e9adc94/attachment.sig>
v2 cover Improvements for the dwc3_generic driver
Quoted 4 lines · Lukasz Majewski
Hi Jean-Jacques,
Quoted 2 lines
Hi Marek,
Quoted 8 lines
Quoted 6 lines
I haven't heard of you on this series.
It is already a resend and has been tested on 2 platforms (zcu100 and dra7/am57).
Can you please consider it for inclusion?
This is not Marek to blame for the delay - I had some non open source tasks to finish (and I do apologise for this situation).
Thanks. I am not blaming anyone. I just wanted to make sure that this wasn't lost in limbo.
Quoted 87 lines
Your patches are now under build testing on travis-CI:
https://travis-ci.org/lmajewski/u-boot-dfu/builds/431388980I will send the PR after CI finish.
Quoted 69 lines
Thanks,
JJ
Quoted 62 lines · Jean-Jacques Hiblot
Resending this series after rebasing on top of latest u-boot.
This series aims at bringing improvements to the
dwc3_genericdriver so that it can be used by most of the platforms using the dwc3 controller.I tested this on with DRA7 and AM57x platforms for both Peripheral and Host operations. The code to enable DM USB host & dev support for those platforms will be submitted in a separate series.
Michal Simek has tested this series:
" I have tested it on zcu100 with usb stick, usb to ethernet converter and also dfu.Tested-by Michal Simek <[email protected]>"Enhancements:
- use separateKconfigoption for DM USB Periphal and DM USB Host. This allow platforms to keep their non-DM USB peripheral code and use the DM USB host.
- fixes the bind/probe confusion indwc3_generic. The probe is done when the USB device is first needed.
- handles PHYs when in the peripheral mode. The code to handle the PHYs is shared with the host side
- handles clock and reset
- bind host controller to the more generic driver 'xhci-dwc3'Changes in v2:
- Updated commit log
- Fixed typo inthordown.c
- selectDM_USB_DEVby default for zynqmp platformsJean-Jacques Hiblot (7):
usb: gadget: Do not callboard_usb_xxx()directly in USB gadget
drivers
usb: introduce a separate config option for DM USB device
usb: udc: implement DM versions of
usb_gadget_initialize()/_release()/_handle_interrupt()
dwc3_generic: do not probe the USB device driver when it's bound
dwc3: move phy operation tocore.c
dwc3-generic: Handle the PHYs, the clocks and the reset lines
dwc3-generic: Addselect_dr_modeoperationarch/arm/Kconfig | 2 + 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/Kconfig | 6 ++ drivers/usb/dwc3/Kconfig | 7 +- drivers/usb/dwc3/core.c | 86 +++++++++++++++- drivers/usb/dwc3/dwc3-generic.c | 207 +++++++++++++++++++++++++++++--------- drivers/usb/dwc3/ep0.c | 1 - drivers/usb/gadget/ether.c | 38 +------ drivers/usb/gadget/udc/udc-core.c | 44 +++++++- drivers/usb/host/xhci-dwc3.c | 93 ++--------------- include/dwc3-uboot.h | 7 ++ include/linux/usb/gadget.h | 18 ++++ 17 files changed, 351insertions(+), 184 deletions(-)
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 at denx.de
v2 cover Improvements for the dwc3_generic driver
Hi Jean-Jacques,
Quoted 7 lines · Lukasz Majewski
Quoted 6 lines
Hi Jean-Jacques,
Quoted 4 lines
Hi Marek,
I haven't heard of you on this series.
Quoted 7 lines
Quoted 6 lines
Quoted 4 lines
It is already a resend and has been tested on 2 platforms (zcu100 and dra7/am57).
Can you please consider it for inclusion?
This is not Marek to blame for the delay - I had some non open source tasks to finish (and I do apologise for this situation).
Thanks. I am not blaming anyone.
:-)
Could you check the build result?
https://travis-ci.org/lmajewski/u-boot-dfu/builds/431388980
I do see some issues with "Freescale ARM32/ARM64".
Quoted 92 lines
I just wanted to make sure that this
wasn't lost in limbo.Quoted 88 lines
Your patches are now under build testing on travis-CI:
https://travis-ci.org/lmajewski/u-boot-dfu/builds/431388980I will send the PR after CI finish.
Quoted 69 lines
Thanks,
JJ
Quoted 62 lines · Jean-Jacques Hiblot
Resending this series after rebasing on top of latest u-boot.
This series aims at bringing improvements to the
dwc3_genericdriver so that it can be used by most of the platforms using the dwc3 controller.I tested this on with DRA7 and AM57x platforms for both Peripheral and Host operations. The code to enable DM USB host & dev support for those platforms will be submitted in a separate series.
Michal Simek has tested this series:
" I have tested it on zcu100 with usb stick, usb to ethernet converter and also dfu.Tested-by Michal Simek <[email protected]>"Enhancements:
- use separateKconfigoption for DM USB Periphal and DM USB Host. This allow platforms to keep their non-DM USB peripheral code and use the DM USB host.
- fixes the bind/probe confusion indwc3_generic. The probe is done when the USB device is first needed.
- handles PHYs when in the peripheral mode. The code to handle the PHYs is shared with the host side
- handles clock and reset
- bind host controller to the more generic driver 'xhci-dwc3'Changes in v2:
- Updated commit log
- Fixed typo inthordown.c
- selectDM_USB_DEVby default for zynqmp platformsJean-Jacques Hiblot (7):
usb: gadget: Do not callboard_usb_xxx()directly in USB
gadget drivers
usb: introduce a separate config option for DM USB device
usb: udc: implement DM versions of
usb_gadget_initialize()/_release()/_handle_interrupt()
dwc3_generic: do not probe the USB device driver when it's
bound dwc3: move phy operation tocore.c
dwc3-generic: Handle the PHYs, the clocks and the reset lines
dwc3-generic: Addselect_dr_modeoperationarch/arm/Kconfig | 2 + 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/Kconfig | 6 ++ drivers/usb/dwc3/Kconfig | 7 +- drivers/usb/dwc3/core.c | 86 +++++++++++++++- drivers/usb/dwc3/dwc3-generic.c | 207 +++++++++++++++++++++++++++++--------- drivers/usb/dwc3/ep0.c | 1 - drivers/usb/gadget/ether.c | 38 +------ drivers/usb/gadget/udc/udc-core.c | 44 +++++++- drivers/usb/host/xhci-dwc3.c | 93 ++--------------- include/dwc3-uboot.h | 7 ++ include/linux/usb/gadget.h | 18 ++++ 17 files changed, 351insertions(+), 184 deletions(-)
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 at 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 at denx.de -------------- next part --------------
A non-text attachment was scrubbed...
Name: not available
Type: application/pgp-signature
Size: 488 bytes
Desc: OpenPGP digital signature
URL: <http://lists.denx.de/pipermail/u-boot/attachments/20180921/585553c3/attachment.sig>
v2 cover Improvements for the dwc3_generic driver
Quoted 15 lines · Lukasz Majewski
Hi Jean-Jacques,
Quoted 13 lines · Lukasz Majewski
Quoted 12 lines
Hi Jean-Jacques,
Quoted 8 lines
Hi Marek,
I haven't heard of you on this series.
It is already a resend and has been tested on 2 platforms (zcu100 and dra7/am57).
Can you please consider it for inclusion?
This is not Marek to blame for the delay - I had some non open source tasks to finish (and I do apologise for this situation).
Quoted 7 lines
Quoted 1 line
Thanks. I am not blaming anyone.
:-)
Could you check the build result?
https://travis-ci.org/lmajewski/u-boot-dfu/builds/431388980I do see some issues with "Freescale ARM32/ARM64".
I can reproduce the problem.
The root cause is that I moved the phy handling operation from the host (xhci-dwc3.c) to the core dwc3/core.c thinking that all users of the dwc3 would have the core code. Well that is not the case.
I see 2 solutions:
* move the phy code back to xhci-dwc3
* enable the core code for dwc3 (CONFIG_USB_DWC3) for the failing platforms
Any preference ?
Quoted 102 lines
Quoted 90 lines
I just wanted to make sure that this
wasn't lost in limbo.Quoted 86 lines
Your patches are now under build testing on travis-CI:
https://travis-ci.org/lmajewski/u-boot-dfu/builds/431388980I will send the PR after CI finish.
Quoted 69 lines
Thanks,
JJ
Quoted 62 lines · Jean-Jacques Hiblot
Resending this series after rebasing on top of latest u-boot.
This series aims at bringing improvements to the
dwc3_genericdriver so that it can be used by most of the platforms using the dwc3 controller.I tested this on with DRA7 and AM57x platforms for both Peripheral and Host operations. The code to enable DM USB host & dev support for those platforms will be submitted in a separate series.
Michal Simek has tested this series:
" I have tested it on zcu100 with usb stick, usb to ethernet converter and also dfu.Tested-by Michal Simek <[email protected]>"Enhancements:
- use separateKconfigoption for DM USB Periphal and DM USB Host. This allow platforms to keep their non-DM USB peripheral code and use the DM USB host.
- fixes the bind/probe confusion indwc3_generic. The probe is done when the USB device is first needed.
- handles PHYs when in the peripheral mode. The code to handle the PHYs is shared with the host side
- handles clock and reset
- bind host controller to the more generic driver 'xhci-dwc3'Changes in v2:
- Updated commit log
- Fixed typo inthordown.c
- selectDM_USB_DEVby default for zynqmp platformsJean-Jacques Hiblot (7):
usb: gadget: Do not callboard_usb_xxx()directly in USB
gadget drivers
usb: introduce a separate config option for DM USB device
usb: udc: implement DM versions of
usb_gadget_initialize()/_release()/_handle_interrupt()
dwc3_generic: do not probe the USB device driver when it's
bound dwc3: move phy operation tocore.c
dwc3-generic: Handle the PHYs, the clocks and the reset lines
dwc3-generic: Addselect_dr_modeoperation
arch/arm/Kconfig| 2 +
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/Kconfig| 6 ++
drivers/usb/dwc3/Kconfig| 7 +-
drivers/usb/dwc3/core.c| 86 +++++++++++++++-
drivers/usb/dwc3/dwc3-generic.c| 207
+++++++++++++++++++++++++++++---------drivers/usb/dwc3/ep0.c | 1 - drivers/usb/gadget/ether.c | 38 +------ drivers/usb/gadget/udc/udc-core.c | 44 +++++++- drivers/usb/host/xhci-dwc3.c | 93 ++--------------- include/dwc3-uboot.h | 7 ++ include/linux/usb/gadget.h | 18 ++++ 17 files changed, 351insertions(+), 184 deletions(-)
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 at denx.deBest 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 at denx.de
v2 cover Improvements for the dwc3_generic driver
Hi Jean-Jacques,
Quoted 19 lines · Lukasz Majewski
Quoted 18 lines
Hi Jean-Jacques,
Quoted 7 lines · Lukasz Majewski
Quoted 6 lines
Hi Jean-Jacques,
Quoted 4 lines
Hi Marek,
I haven't heard of you on this series.
Quoted 7 lines
Quoted 6 lines
Quoted 4 lines
It is already a resend and has been tested on 2 platforms (zcu100 and dra7/am57).
Can you please consider it for inclusion?
This is not Marek to blame for the delay - I had some non open source tasks to finish (and I do apologise for this situation).
Thanks. I am not blaming anyone.
:-)
Quoted 8 lines
Quoted 4 lines
Could you check the build result?
https://travis-ci.org/lmajewski/u-boot-dfu/builds/431388980I do see some issues with "Freescale ARM32/ARM64".
I can reproduce the problem.
The root cause is that I moved the phy handling operation from the host (xhci-dwc3.c) to the coredwc3/core.cthinking that all users of the dwc3 would have the core code. Well that is not the case.
Maybe a silly question - how those boards work as they do not use/include the DWC3 core?
They use xhci PHY handling code and what code on top?
Quoted 5 lines
I see 2 solutions:
* move the phy code back to xhci-dwc3
* enable the core code for dwc3 (CONFIG_USB_DWC3) for the failing platforms
Quoted 108 lines
Any preference ?
Quoted 104 lines
Quoted 91 lines
I just wanted to make sure that this
wasn't lost in limbo.Quoted 87 lines
Your patches are now under build testing on travis-CI:
https://travis-ci.org/lmajewski/u-boot-dfu/builds/431388980I will send the PR after CI finish.
Quoted 70 lines
Thanks,
JJ
Quoted 63 lines · Jean-Jacques Hiblot
Resending this series after rebasing on top of latest u-boot.
This series aims at bringing improvements to the
dwc3_genericdriver so that it can be used by most of the platforms using the dwc3 controller.I tested this on with DRA7 and AM57x platforms for both Peripheral and Host operations. The code to enable DM USB host & dev support for those platforms will be submitted in a separate series.
Michal Simek has tested this series:
" I have tested it on zcu100 with usb stick, usb to ethernet converter and also dfu.Tested-by Michal Simek <[email protected]>"Enhancements:
- use separateKconfigoption for DM USB Periphal and DM USB Host. This allow platforms to keep their non-DM USB peripheral code and use the DM USB host.
- fixes the bind/probe confusion indwc3_generic. The probe is done when the USB device is first needed.
- handles PHYs when in the peripheral mode. The code to handle the PHYs is shared with the host side
- handles clock and reset
- bind host controller to the more generic driver 'xhci-dwc3'Changes in v2:
- Updated commit log
- Fixed typo inthordown.c
- selectDM_USB_DEVby default for zynqmp platformsJean-Jacques Hiblot (7):
usb: gadget: Do not callboard_usb_xxx()directly in USB
gadget drivers
usb: introduce a separate config option for DM USB device
usb: udc: implement DM versions of
usb_gadget_initialize()/_release()/_handle_interrupt()
dwc3_generic: do not probe the USB device driver when it's
bound dwc3: move phy operation tocore.c
dwc3-generic: Handle the PHYs, the clocks and the reset
lines dwc3-generic: Addselect_dr_modeoperationarch/arm/Kconfig | 2 + 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/Kconfig | 6 ++ drivers/usb/dwc3/Kconfig | 7 +- drivers/usb/dwc3/core.c | 86 +++++++++++++++- drivers/usb/dwc3/dwc3-generic.c | 207 +++++++++++++++++++++++++++++--------- drivers/usb/dwc3/ep0.c | 1 - drivers/usb/gadget/ether.c | 38 +------ drivers/usb/gadget/udc/udc-core.c | 44 +++++++- drivers/usb/host/xhci-dwc3.c | 93 ++--------------- include/dwc3-uboot.h | 7 ++ include/linux/usb/gadget.h | 18 ++++ 17 files changed,351 insertions(+), 184 deletions(-)
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 at denx.deBest 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 at 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 at denx.de -------------- next part --------------
A non-text attachment was scrubbed...
Name: not available
Type: application/pgp-signature
Size: 488 bytes
Desc: OpenPGP digital signature
URL: <http://lists.denx.de/pipermail/u-boot/attachments/20180921/9e0026ac/attachment.sig>
v2 cover Improvements for the dwc3_generic driver
Quoted 24 lines · Lukasz Majewski
Hi Jean-Jacques,
Quoted 22 lines · Lukasz Majewski
Quoted 21 lines
Hi Jean-Jacques,
Quoted 7 lines · Lukasz Majewski
Quoted 6 lines
Hi Jean-Jacques,
Quoted 4 lines
Hi Marek,
I haven't heard of you on this series.
Quoted 7 lines
Quoted 6 lines
Quoted 4 lines
It is already a resend and has been tested on 2 platforms (zcu100 and dra7/am57).
Can you please consider it for inclusion?
This is not Marek to blame for the delay - I had some non open source tasks to finish (and I do apologise for this situation).
Thanks. I am not blaming anyone.
:-)
Could you check the build result?
https://travis-ci.org/lmajewski/u-boot-dfu/builds/431388980
I do see some issues with "Freescale ARM32/ARM64".
Quoted 6 lines
Quoted 4 lines
I can reproduce the problem.
The root cause is that I moved the phy handling operation from the host (xhci-dwc3.c) to the coredwc3/core.cthinking that all users of the dwc3 would have the core code. Well that is not the case.Maybe a silly question - how those boards work as they do not use/include the DWC3 core?
It looks like the host side of the dwc3 is mostly self-contained and that the code in dwc3/core.c is mostly used by the gadget side.
Quoted 125 lines
They use xhci PHY handling code and what code on top?
Quoted 5 lines
I see 2 solutions:
* move the phy code back to xhci-dwc3
* enable the core code for dwc3 (CONFIG_USB_DWC3) for the failing platformsQuoted 105 lines
Any preference ?
Quoted 102 lines
Quoted 90 lines
I just wanted to make sure that this
wasn't lost in limbo.Quoted 86 lines
Your patches are now under build testing on travis-CI:
https://travis-ci.org/lmajewski/u-boot-dfu/builds/431388980I will send the PR after CI finish.
Quoted 70 lines
Thanks,
JJ
Quoted 63 lines · Jean-Jacques Hiblot
Resending this series after rebasing on top of latest u-boot.
This series aims at bringing improvements to the
dwc3_genericdriver so that it can be used by most of the platforms using the dwc3 controller.I tested this on with DRA7 and AM57x platforms for both Peripheral and Host operations. The code to enable DM USB host & dev support for those platforms will be submitted in a separate series.
Michal Simek has tested this series:
" I have tested it on zcu100 with usb stick, usb to ethernet converter and also dfu.Tested-by Michal Simek <[email protected]>"Enhancements:
- use separateKconfigoption for DM USB Periphal and DM USB Host. This allow platforms to keep their non-DM USB peripheral code and use the DM USB host.
- fixes the bind/probe confusion indwc3_generic. The probe is done when the USB device is first needed.
- handles PHYs when in the peripheral mode. The code to handle the PHYs is shared with the host side
- handles clock and reset
- bind host controller to the more generic driver 'xhci-dwc3'Changes in v2:
- Updated commit log
- Fixed typo inthordown.c
- selectDM_USB_DEVby default for zynqmp platformsJean-Jacques Hiblot (7):
usb: gadget: Do not callboard_usb_xxx()directly in USB
gadget drivers
usb: introduce a separate config option for DM USB device
usb: udc: implement DM versions of
usb_gadget_initialize()/_release()/_handle_interrupt()
dwc3_generic: do not probe the USB device driver when it's
bound dwc3: move phy operation tocore.c
dwc3-generic: Handle the PHYs, the clocks and the reset
lines dwc3-generic: Addselect_dr_modeoperationarch/arm/Kconfig | 2 + 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/Kconfig | 6 ++ drivers/usb/dwc3/Kconfig | 7 +- drivers/usb/dwc3/core.c | 86 +++++++++++++++- drivers/usb/dwc3/dwc3-generic.c | 207 +++++++++++++++++++++++++++++--------- drivers/usb/dwc3/ep0.c | 1 - drivers/usb/gadget/ether.c | 38 +------ drivers/usb/gadget/udc/udc-core.c | 44 +++++++- drivers/usb/host/xhci-dwc3.c | 93 ++--------------- include/dwc3-uboot.h | 7 ++ include/linux/usb/gadget.h | 18 ++++ 17 files changed,351 insertions(+), 184 deletions(-)
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 at denx.deBest 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 at denx.deBest 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 at denx.de
v2 cover Improvements for the dwc3_generic driver
Quoted 25 lines · Jean-Jacques Hiblot
Quoted 22 lines · Lukasz Majewski
Hi Jean-Jacques,
Quoted 20 lines · Lukasz Majewski
Quoted 19 lines
Hi Jean-Jacques,
Quoted 6 lines · Lukasz Majewski
Quoted 5 lines
Hi Jean-Jacques,
Quoted 4 lines
Hi Marek,
I haven't heard of you on this series.
Quoted 7 lines
Quoted 6 lines
Quoted 4 lines
It is already a resend and has been tested on 2 platforms (zcu100 and dra7/am57).
Can you please consider it for inclusion?
This is not Marek to blame for the delay - I had some non open source tasks to finish (and I do apologise for this situation).
Thanks. I am not blaming anyone.
:-)
Could you check the build result?
https://travis-ci.org/lmajewski/u-boot-dfu/builds/431388980
I do see some issues with "Freescale ARM32/ARM64".
Quoted 9 lines
Quoted 6 lines
Quoted 4 lines
I can reproduce the problem.
The root cause is that I moved the phy handling operation from the host (xhci-dwc3.c) to the coredwc3/core.cthinking that all users of the dwc3 would have the core code. Well that is not the case.Maybe a silly question - how those boards work as they do not use/include the DWC3 core?
It looks like the host side of the dwc3 is mostly self-contained and that the code in
dwc3/core.cis mostly used by the gadget side.
It seems that the PHY code is not used by the platforms that failed to build, so it can be compiled out.
I'll send a v3 shortly.
JJ
Quoted 127 lines
Quoted 113 lines
They use xhci PHY handling code and what code on top?
Quoted 5 lines
I see 2 solutions:
* move the phy code back to xhci-dwc3
* enable the core code for dwc3 (CONFIG_USB_DWC3) for the failing platformsQuoted 102 lines
Any preference ?
Quoted 99 lines
Quoted 87 lines
I just wanted to make sure that this
wasn't lost in limbo.Quoted 85 lines
Your patches are now under build testing on travis-CI:
https://travis-ci.org/lmajewski/u-boot-dfu/builds/431388980I will send the PR after CI finish.
Quoted 70 lines
Thanks,
JJ
Quoted 63 lines · Jean-Jacques Hiblot
Resending this series after rebasing on top of latest u-boot.
This series aims at bringing improvements to the
dwc3_genericdriver so that it can be used by most of the platforms using the dwc3 controller.I tested this on with DRA7 and AM57x platforms for both Peripheral and Host operations. The code to enable DM USB host & dev support for those platforms will be submitted in a separate series.
Michal Simek has tested this series:
" I have tested it on zcu100 with usb stick, usb to ethernet converter and also dfu.Tested-by Michal Simek <[email protected]>"Enhancements:
- use separateKconfigoption for DM USB Periphal and DM USB Host. This allow platforms to keep their non-DM USB peripheral code and use the DM USB host.
- fixes the bind/probe confusion indwc3_generic. The probe is done when the USB device is first needed.
- handles PHYs when in the peripheral mode. The code to handle the PHYs is shared with the host side
- handles clock and reset
- bind host controller to the more generic driver 'xhci-dwc3'Changes in v2:
- Updated commit log
- Fixed typo inthordown.c
- selectDM_USB_DEVby default for zynqmp platformsJean-Jacques Hiblot (7):
usb: gadget: Do not callboard_usb_xxx()directly in USB gadget drivers
usb: introduce a separate config option for DM USB device
usb: udc: implement DM versions of usb_gadget_initialize()/_release()/_handle_interrupt()
dwc3_generic: do not probe the USB device driver when it's bound dwc3: move phy operation tocore.c
dwc3-generic: Handle the PHYs, the clocks and the reset lines dwc3-generic: Addselect_dr_modeoperationarch/arm/Kconfig | 2 + 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/Kconfig | 6 ++ drivers/usb/dwc3/Kconfig | 7 +- drivers/usb/dwc3/core.c | 86 +++++++++++++++- drivers/usb/dwc3/dwc3-generic.c | 207
+++++++++++++++++++++++++++++---------
drivers/usb/dwc3/ep0.c | 1 - drivers/usb/gadget/ether.c | 38 +------drivers/usb/gadget/udc/udc-core.c| 44 +++++++- drivers/usb/host/xhci-dwc3.c | 93 ++--------------- include/dwc3-uboot.h | 7 ++ include/linux/usb/gadget.h | 18 ++++ 17 files changed, 351 insertions(+), 184 deletions(-)Best regards,
Lukasz Majewski
Signature · 4 lines
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 at denx.deBest regards,
Lukasz Majewski
Signature · 4 lines
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 at denx.deQuoted 9 lines
Best regards,
Lukasz Majewski
Signature · 3 lines
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 at denx.de_______________________________________________
U-Boot mailing list
U-Boot at lists.denx.de
https://lists.denx.de/listinfo/u-boot
v2 cover Improvements for the dwc3_generic driver
Hi Jean-Jacques,
Quoted 32 lines · Jean-Jacques Hiblot
Quoted 31 lines · Lukasz Majewski
Quoted 28 lines
Hi Jean-Jacques,
Quoted 26 lines · Lukasz Majewski
Quoted 14 lines
Hi Jean-Jacques,
Quoted 13 lines · Lukasz Majewski
Quoted 12 lines
Hi Jean-Jacques,
Quoted 8 lines
Hi Marek,
I haven't heard of you on this series.
It is already a resend and has been tested on 2 platforms (zcu100 and dra7/am57).
Can you please consider it for inclusion?
This is not Marek to blame for the delay - I had some non open source tasks to finish (and I do apologise for this situation).
Quoted 6 lines
Quoted 1 line
Thanks. I am not blaming anyone.
:-)
Could you check the build result?
https://travis-ci.org/lmajewski/u-boot-dfu/builds/431388980
I do see some issues with "Freescale ARM32/ARM64".I can reproduce the problem.
The root cause is that I moved the phy handling operation from the host (xhci-dwc3.c) to the coredwc3/core.cthinking that all users of the dwc3 would have the core code. Well that is not the case.
Quoted 8 lines
Quoted 5 lines
Quoted 2 lines
Maybe a silly question - how those boards work as they do not use/include the DWC3 core?
It looks like the host side of the dwc3 is mostly self-contained and that the code in
dwc3/core.cis mostly used by the gadget side.It seems that the PHY code is not used by the platforms that failed to build, so it can be compiled out.
I'll send a v3 shortly.
Thanks :-).
Quoted 131 lines
JJ
Quoted 128 lines
Quoted 113 lines
They use xhci PHY handling code and what code on top?
Quoted 5 lines
I see 2 solutions:
* move the phy code back to xhci-dwc3
* enable the core code for dwc3 (CONFIG_USB_DWC3) for the failing platformsQuoted 102 lines
Any preference ?
Quoted 99 lines
Quoted 87 lines
I just wanted to make sure that this
wasn't lost in limbo.Quoted 85 lines
Your patches are now under build testing on travis-CI:
https://travis-ci.org/lmajewski/u-boot-dfu/builds/431388980I will send the PR after CI finish.
Quoted 70 lines
Thanks,
JJ
Quoted 63 lines · Jean-Jacques Hiblot
Resending this series after rebasing on top of latest u-boot.
This series aims at bringing improvements to the
dwc3_genericdriver so that it can be used by most of the platforms using the dwc3 controller.I tested this on with DRA7 and AM57x platforms for both Peripheral and Host operations. The code to enable DM USB host & dev support for those platforms will be submitted in a separate series.
Michal Simek has tested this series:
" I have tested it on zcu100 with usb stick, usb to ethernet converter and also dfu.Tested-by Michal Simek <[email protected]>"Enhancements:
- use separateKconfigoption for DM USB Periphal and DM USB Host. This allow platforms to keep their non-DM USB peripheral code and use the DM USB host.
- fixes the bind/probe confusion indwc3_generic. The probe is done when the USB device is first needed.
- handles PHYs when in the peripheral mode. The code to handle the PHYs is shared with the host side
- handles clock and reset
- bind host controller to the more generic driver 'xhci-dwc3'Changes in v2:
- Updated commit log
- Fixed typo inthordown.c
- selectDM_USB_DEVby default for zynqmp platformsJean-Jacques Hiblot (7):
usb: gadget: Do not callboard_usb_xxx()directly in USB gadget drivers
usb: introduce a separate config option for DM USB device usb: udc: implement DM versions of usb_gadget_initialize()/_release()/_handle_interrupt()
dwc3_generic: do not probe the USB device driver when it's bound dwc3: move phy operation tocore.c
dwc3-generic: Handle the PHYs, the clocks and the reset lines dwc3-generic: Addselect_dr_modeoperationarch/arm/Kconfig | 2 + 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/Kconfig | 6 ++ drivers/usb/dwc3/Kconfig | 7 +- drivers/usb/dwc3/core.c | 86 +++++++++++++++- drivers/usb/dwc3/dwc3-generic.c | 207
+++++++++++++++++++++++++++++---------
drivers/usb/dwc3/ep0.c | 1 - drivers/usb/gadget/ether.c | 38 +------drivers/usb/gadget/udc/udc-core.c| 44 +++++++- drivers/usb/host/xhci-dwc3.c | 93 ++--------------- include/dwc3-uboot.h | 7 ++ include/linux/usb/gadget.h | 18 ++++ 17 files changed, 351 insertions(+), 184 deletions(-)Best regards,
Lukasz Majewski
Signature · 4 lines
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 at denx.deBest regards,
Lukasz Majewski
Signature · 4 lines
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 at denx.deQuoted 10 lines
Best regards,
Lukasz Majewski
Signature · 4 lines
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 at denx.de_______________________________________________
U-Boot mailing list
U-Boot at lists.denx.de
https://lists.denx.de/listinfo/u-boot
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 at denx.de -------------- next part --------------
A non-text attachment was scrubbed...
Name: not available
Type: application/pgp-signature
Size: 488 bytes
Desc: OpenPGP digital signature
URL: <http://lists.denx.de/pipermail/u-boot/attachments/20180925/b8bce76a/attachment.sig>