All of lore.kernel.org
 help / color / mirror / Atom feed
* [U-Boot] [PATCH v2 0/7] [RESEND] Improvements for the dwc3_generic driver
@ 2018-09-04 13:42 Jean-Jacques Hiblot
  2018-09-04 13:42 ` [U-Boot] [PATCH v2 1/7] usb: gadget: Do not call board_usb_xxx() directly in USB gadget drivers Jean-Jacques Hiblot
                   ` (8 more replies)
  0 siblings, 9 replies; 18+ messages in thread
From: Jean-Jacques Hiblot @ 2018-09-04 13:42 UTC (permalink / raw)
  To: u-boot


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.
Tested-by: Michal Simek <michal.simek@xilinx.com>"

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(-)

-- 
2.7.4

^ permalink raw reply	[flat|nested] 18+ messages in thread

* [U-Boot] [PATCH v2 1/7] usb: gadget: Do not call board_usb_xxx() directly in USB gadget drivers
  2018-09-04 13:42 [U-Boot] [PATCH v2 0/7] [RESEND] Improvements for the dwc3_generic driver Jean-Jacques Hiblot
@ 2018-09-04 13:42 ` Jean-Jacques Hiblot
  2018-09-04 13:42 ` [U-Boot] [PATCH v2 2/7] usb: introduce a separate config option for DM USB device Jean-Jacques Hiblot
                   ` (7 subsequent siblings)
  8 siblings, 0 replies; 18+ messages in thread
From: Jean-Jacques Hiblot @ 2018-09-04 13:42 UTC (permalink / raw)
  To: u-boot

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>
Reviewed-by: Lukasz Majewski <lukma@denx.de>

---

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 ae3a5f6..0be83b7 100644
--- a/cmd/fastboot.c
+++ b/cmd/fastboot.c
@@ -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
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 2615ada..ce3660d 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\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();
 
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 0d55114..753ae4f 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.\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();
 
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 */
-- 
2.7.4

^ permalink raw reply	[flat|nested] 18+ messages in thread

* [U-Boot] [PATCH v2 2/7] usb: introduce a separate config option for DM USB device
  2018-09-04 13:42 [U-Boot] [PATCH v2 0/7] [RESEND] Improvements for the dwc3_generic driver Jean-Jacques Hiblot
  2018-09-04 13:42 ` [U-Boot] [PATCH v2 1/7] usb: gadget: Do not call board_usb_xxx() directly in USB gadget drivers Jean-Jacques Hiblot
@ 2018-09-04 13:42 ` Jean-Jacques Hiblot
  2018-09-04 13:42 ` [U-Boot] [PATCH v2 3/7] usb: udc: implement DM versions of usb_gadget_initialize()/_release()/_handle_interrupt() Jean-Jacques Hiblot
                   ` (6 subsequent siblings)
  8 siblings, 0 replies; 18+ messages in thread
From: Jean-Jacques Hiblot @ 2018-09-04 13:42 UTC (permalink / raw)
  To: u-boot

Using CONFIG_DM_USB for this purpose prevents using DM_USB for host and not
for device.

Signed-off-by: Jean-Jacques Hiblot <jjhiblot@ti.com>
Reviewed-by: Lukasz Majewski <lukma@denx.de>

---

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(-)

diff --git a/arch/arm/Kconfig b/arch/arm/Kconfig
index 8a23c76..82e1a40 100644
--- a/arch/arm/Kconfig
+++ b/arch/arm/Kconfig
@@ -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"
diff --git a/drivers/usb/Kconfig b/drivers/usb/Kconfig
index 4fbe172..3587ba4 100644
--- a/drivers/usb/Kconfig
+++ b/drivers/usb/Kconfig
@@ -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"
diff --git a/drivers/usb/dwc3/core.c b/drivers/usb/dwc3/core.c
index 1ab5cee..d5ee6d9 100644
--- a/drivers/usb/dwc3/core.c
+++ b/drivers/usb/dwc3/core.c
@@ -789,7 +789,7 @@ MODULE_AUTHOR("Felipe Balbi <balbi@ti.com>");
 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)
 {
diff --git a/drivers/usb/dwc3/dwc3-generic.c b/drivers/usb/dwc3/dwc3-generic.c
index ca63eac..2c1e696 100644
--- a/drivers/usb/dwc3/dwc3-generic.c
+++ b/drivers/usb/dwc3/dwc3-generic.c
@@ -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;
-- 
2.7.4

^ permalink raw reply	[flat|nested] 18+ messages in thread

* [U-Boot] [PATCH v2 3/7] usb: udc: implement DM versions of usb_gadget_initialize()/_release()/_handle_interrupt()
  2018-09-04 13:42 [U-Boot] [PATCH v2 0/7] [RESEND] Improvements for the dwc3_generic driver Jean-Jacques Hiblot
  2018-09-04 13:42 ` [U-Boot] [PATCH v2 1/7] usb: gadget: Do not call board_usb_xxx() directly in USB gadget drivers Jean-Jacques Hiblot
  2018-09-04 13:42 ` [U-Boot] [PATCH v2 2/7] usb: introduce a separate config option for DM USB device Jean-Jacques Hiblot
@ 2018-09-04 13:42 ` Jean-Jacques Hiblot
  2018-09-04 13:42 ` [U-Boot] [PATCH v2 4/7] dwc3_generic: do not probe the USB device driver when it's bound Jean-Jacques Hiblot
                   ` (5 subsequent siblings)
  8 siblings, 0 replies; 18+ messages in thread
From: Jean-Jacques Hiblot @ 2018-09-04 13:42 UTC (permalink / raw)
  To: u-boot

When 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.

Signed-off-by: Jean-Jacques Hiblot <jjhiblot@ti.com>
Reviewed-by: Lukasz Majewski <lukma@denx.de>
---

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(-)

diff --git a/drivers/usb/dwc3/dwc3-generic.c b/drivers/usb/dwc3/dwc3-generic.c
index 2c1e696..43e97be 100644
--- a/drivers/usb/dwc3/dwc3-generic.c
+++ b/drivers/usb/dwc3/dwc3-generic.c
@@ -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);
 
diff --git a/drivers/usb/gadget/udc/udc-core.c b/drivers/usb/gadget/udc/udc-core.c
index f5c30dd..42c9ea9 100644
--- a/drivers/usb/gadget/udc/udc-core.c
+++ b/drivers/usb/gadget/udc/udc-core.c
@@ -18,7 +18,8 @@
 #include <asm/cache.h>
 #include <asm/dma-mapping.h>
 #include <common.h>
-
+#include <dm.h>
+#include <dm/device-internal.h>
 #include <linux/usb/ch9.h>
 #include <linux/usb/gadget.h>
 
@@ -351,3 +352,44 @@ EXPORT_SYMBOL_GPL(usb_gadget_unregister_driver);
 MODULE_DESCRIPTION("UDC Framework");
 MODULE_AUTHOR("Felipe Balbi <balbi@ti.com>");
 MODULE_LICENSE("GPL v2");
+
+#ifdef CONFIG_DM_USB_DEV
+#define MAX_UDC_DEVICES 4
+static struct udevice *dev_array[MAX_UDC_DEVICES];
+int usb_gadget_initialize(int index)
+{
+	int ret;
+	struct udevice *dev = NULL;
+
+	if (index < 0 || index >= ARRAY_SIZE(dev_array))
+		return -EINVAL;
+	if (dev_array[index])
+		return 0;
+	ret = uclass_get_device(UCLASS_USB_DEV_GENERIC, index, &dev);
+	if (!dev || ret) {
+		pr_err("No USB device found\n");
+		return -ENODEV;
+	}
+	dev_array[index] = dev;
+	return 0;
+}
+
+int usb_gadget_release(int index)
+{
+	int ret;
+
+	if (index < 0 || index >= ARRAY_SIZE(dev_array))
+		return -EINVAL;
+	ret = device_remove(dev_array[index], DM_REMOVE_NORMAL);
+	if (!ret)
+		dev_array[index] = NULL;
+	return ret;
+}
+
+int usb_gadget_handle_interrupts(int index)
+{
+	if (index < 0 || index >= ARRAY_SIZE(dev_array))
+		return -EINVAL;
+	return dm_usb_gadget_handle_interrupts(dev_array[index]);
+}
+#endif
diff --git a/include/linux/usb/gadget.h b/include/linux/usb/gadget.h
index 40ca2d3..a094e31 100644
--- a/include/linux/usb/gadget.h
+++ b/include/linux/usb/gadget.h
@@ -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 */
-- 
2.7.4

^ permalink raw reply	[flat|nested] 18+ messages in thread

* [U-Boot] [PATCH v2 4/7] dwc3_generic: do not probe the USB device driver when it's bound
  2018-09-04 13:42 [U-Boot] [PATCH v2 0/7] [RESEND] Improvements for the dwc3_generic driver Jean-Jacques Hiblot
                   ` (2 preceding siblings ...)
  2018-09-04 13:42 ` [U-Boot] [PATCH v2 3/7] usb: udc: implement DM versions of usb_gadget_initialize()/_release()/_handle_interrupt() Jean-Jacques Hiblot
@ 2018-09-04 13:42 ` Jean-Jacques Hiblot
  2018-09-04 13:42 ` [U-Boot] [PATCH v2 5/7] dwc3: move phy operation to core.c Jean-Jacques Hiblot
                   ` (4 subsequent siblings)
  8 siblings, 0 replies; 18+ messages in thread
From: Jean-Jacques Hiblot @ 2018-09-04 13:42 UTC (permalink / raw)
  To: u-boot

The driver will be probed when usb_gadget_initialize() is called.

Signed-off-by: Jean-Jacques Hiblot <jjhiblot@ti.com>
---

Changes in v2: None

 drivers/usb/dwc3/dwc3-generic.c | 7 -------
 1 file changed, 7 deletions(-)

diff --git a/drivers/usb/dwc3/dwc3-generic.c b/drivers/usb/dwc3/dwc3-generic.c
index 43e97be..3ec0c0e 100644
--- a/drivers/usb/dwc3/dwc3-generic.c
+++ b/drivers/usb/dwc3/dwc3-generic.c
@@ -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
-- 
2.7.4

^ permalink raw reply	[flat|nested] 18+ messages in thread

* [U-Boot] [PATCH v2 5/7] dwc3: move phy operation to core.c
  2018-09-04 13:42 [U-Boot] [PATCH v2 0/7] [RESEND] Improvements for the dwc3_generic driver Jean-Jacques Hiblot
                   ` (3 preceding siblings ...)
  2018-09-04 13:42 ` [U-Boot] [PATCH v2 4/7] dwc3_generic: do not probe the USB device driver when it's bound Jean-Jacques Hiblot
@ 2018-09-04 13:42 ` Jean-Jacques Hiblot
  2018-09-04 13:42 ` [U-Boot] [PATCH v2 6/7] dwc3-generic: Handle the PHYs, the clocks and the reset lines Jean-Jacques Hiblot
                   ` (3 subsequent siblings)
  8 siblings, 0 replies; 18+ messages in thread
From: Jean-Jacques Hiblot @ 2018-09-04 13:42 UTC (permalink / raw)
  To: u-boot

Those operations can be used for peripheral operation as well as host
operation.

Signed-off-by: Jean-Jacques Hiblot <jjhiblot@ti.com>
---

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(-)

diff --git a/drivers/usb/dwc3/core.c b/drivers/usb/dwc3/core.c
index d5ee6d9..538c603 100644
--- a/drivers/usb/dwc3/core.c
+++ b/drivers/usb/dwc3/core.c
@@ -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 <balbi@ti.com>");
 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;
diff --git a/drivers/usb/dwc3/ep0.c b/drivers/usb/dwc3/ep0.c
index 4f68887..433e5f6 100644
--- a/drivers/usb/dwc3/ep0.c
+++ b/drivers/usb/dwc3/ep0.c
@@ -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"
diff --git a/drivers/usb/host/xhci-dwc3.c b/drivers/usb/host/xhci-dwc3.c
index 80754d7..052e704 100644
--- a/drivers/usb/host/xhci-dwc3.c
+++ b/drivers/usb/host/xhci-dwc3.c
@@ -12,6 +12,7 @@
 #include <fdtdec.h>
 #include <generic-phy.h>
 #include <usb.h>
+#include <dwc3-uboot.h>
 
 #include "xhci.h"
 #include <asm/io.h>
@@ -110,104 +111,20 @@ void dwc3_set_fladj(struct dwc3 *dwc3_reg, u32 val)
 }
 
 #ifdef CONFIG_DM_USB
-static int xhci_dwc3_setup_phy(struct udevice *dev)
-{
-	struct xhci_dwc3_platdata *plat = dev_get_platdata(dev);
-	int i, ret, count;
-
-	/* 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;
-
-	plat->usb_phys = devm_kcalloc(dev, count, sizeof(struct phy),
-				      GFP_KERNEL);
-	if (!plat->usb_phys)
-		return -ENOMEM;
-
-	for (i = 0; i < count; i++) {
-		ret = generic_phy_get_by_index(dev, i, &plat->usb_phys[i]);
-		if (ret && ret != -ENOENT) {
-			pr_err("Failed to get USB PHY%d for %s\n",
-			       i, dev->name);
-			return ret;
-		}
-
-		++plat->num_phys;
-	}
-
-	for (i = 0; i < plat->num_phys; i++) {
-		ret = generic_phy_init(&plat->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 < plat->num_phys; i++) {
-		ret = generic_phy_power_on(&plat->usb_phys[i]);
-		if (ret) {
-			pr_err("Can't power USB PHY%d for %s\n",
-			       i, dev->name);
-			goto phys_poweron_err;
-		}
-	}
-
-	return 0;
-
-phys_poweron_err:
-	for (; i >= 0; i--)
-		generic_phy_power_off(&plat->usb_phys[i]);
-
-	for (i = 0; i < plat->num_phys; i++)
-		generic_phy_exit(&plat->usb_phys[i]);
-
-	return ret;
-
-phys_init_err:
-	for (; i >= 0; i--)
-		generic_phy_exit(&plat->usb_phys[i]);
-
-	return ret;
-}
-
-static int xhci_dwc3_shutdown_phy(struct udevice *dev)
-{
-	struct xhci_dwc3_platdata *plat = dev_get_platdata(dev);
-	int i, ret;
-
-	for (i = 0; i < plat->num_phys; i++) {
-		if (!generic_phy_valid(&plat->usb_phys[i]))
-			continue;
-
-		ret = generic_phy_power_off(&plat->usb_phys[i]);
-		ret |= generic_phy_exit(&plat->usb_phys[i]);
-		if (ret) {
-			pr_err("Can't shutdown USB PHY%d for %s\n",
-			       i, dev->name);
-		}
-	}
-
-	return 0;
-}
-
 static int xhci_dwc3_probe(struct udevice *dev)
 {
 	struct xhci_hcor *hcor;
 	struct xhci_hccr *hccr;
 	struct dwc3 *dwc3_reg;
 	enum usb_dr_mode dr_mode;
+	struct xhci_dwc3_platdata *plat = dev_get_platdata(dev);
 	int ret;
 
 	hccr = (struct xhci_hccr *)((uintptr_t)dev_read_addr(dev));
 	hcor = (struct xhci_hcor *)((uintptr_t)hccr +
 			HC_LENGTH(xhci_readl(&(hccr)->cr_capbase)));
 
-	ret = xhci_dwc3_setup_phy(dev);
+	ret = dwc3_setup_phy(dev, &plat->usb_phys, &plat->num_phys);
 	if (ret)
 		return ret;
 
@@ -227,7 +144,9 @@ static int xhci_dwc3_probe(struct udevice *dev)
 
 static int xhci_dwc3_remove(struct udevice *dev)
 {
-	xhci_dwc3_shutdown_phy(dev);
+	struct xhci_dwc3_platdata *plat = dev_get_platdata(dev);
+
+	dwc3_shutdown_phy(dev, plat->usb_phys, plat->num_phys);
 
 	return xhci_deregister(dev);
 }
diff --git a/include/dwc3-uboot.h b/include/dwc3-uboot.h
index 228ab3b..a2da081 100644
--- a/include/dwc3-uboot.h
+++ b/include/dwc3-uboot.h
@@ -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_ */
-- 
2.7.4

^ permalink raw reply	[flat|nested] 18+ messages in thread

* [U-Boot] [PATCH v2 6/7] dwc3-generic: Handle the PHYs, the clocks and the reset lines
  2018-09-04 13:42 [U-Boot] [PATCH v2 0/7] [RESEND] Improvements for the dwc3_generic driver Jean-Jacques Hiblot
                   ` (4 preceding siblings ...)
  2018-09-04 13:42 ` [U-Boot] [PATCH v2 5/7] dwc3: move phy operation to core.c Jean-Jacques Hiblot
@ 2018-09-04 13:42 ` Jean-Jacques Hiblot
  2018-09-04 13:42 ` [U-Boot] [PATCH v2 7/7] dwc3-generic: Add select_dr_mode operation Jean-Jacques Hiblot
                   ` (2 subsequent siblings)
  8 siblings, 0 replies; 18+ messages in thread
From: Jean-Jacques Hiblot @ 2018-09-04 13:42 UTC (permalink / raw)
  To: u-boot

This 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.

Signed-off-by: Jean-Jacques Hiblot <jjhiblot@ti.com>
---

Changes in v2: None

 drivers/usb/dwc3/Kconfig        |   7 +-
 drivers/usb/dwc3/dwc3-generic.c | 160 +++++++++++++++++++++++++++++++++-------
 2 files changed, 137 insertions(+), 30 deletions(-)

diff --git a/drivers/usb/dwc3/Kconfig b/drivers/usb/dwc3/Kconfig
index 943b763..bbd8105 100644
--- a/drivers/usb/dwc3/Kconfig
+++ b/drivers/usb/dwc3/Kconfig
@@ -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"
diff --git a/drivers/usb/dwc3/dwc3-generic.c b/drivers/usb/dwc3/dwc3-generic.c
index 3ec0c0e..2c27dbc 100644
--- a/drivers/usb/dwc3/dwc3-generic.c
+++ b/drivers/usb/dwc3/dwc3-generic.c
@@ -11,59 +11,86 @@
 #include <dm.h>
 #include <dm/device-internal.h>
 #include <dm/lists.h>
-#include <linux/usb/otg.h>
-#include <linux/compat.h>
+#include <dwc3-uboot.h>
 #include <linux/usb/ch9.h>
 #include <linux/usb/gadget.h>
 #include <malloc.h>
 #include <usb.h>
 #include "core.h"
 #include "gadget.h"
-#include "linux-compat.h"
+#include <reset.h>
+#include <clk.h>
 
 #ifdef CONFIG_DM_USB_DEV
 
+struct dwc3_generic_peripheral {
+	struct dwc3 dwc3;
+	struct phy *phys;
+	int num_phys;
+	fdt_addr_t base;
+};
+
 int dm_usb_gadget_handle_interrupts(struct udevice *dev)
 {
-	struct dwc3 *priv = dev_get_priv(dev);
+	struct dwc3_generic_peripheral *priv = dev_get_priv(dev);
+	struct dwc3 *dwc3 = &priv->dwc3;
 
-	dwc3_gadget_uboot_handle_interrupt(priv);
+	dwc3_gadget_uboot_handle_interrupt(dwc3);
 
 	return 0;
 }
 
 static int dwc3_generic_peripheral_probe(struct udevice *dev)
 {
-	struct dwc3 *priv = dev_get_priv(dev);
+	int rc;
+	struct dwc3_generic_peripheral *priv = dev_get_priv(dev);
+	struct dwc3 *dwc3 = &priv->dwc3;
+
+	rc = dwc3_setup_phy(dev, &priv->phys, &priv->num_phys);
+	if (rc)
+		return rc;
+
+	dwc3->regs = map_physmem(priv->base, DWC3_OTG_REGS_END, MAP_NOCACHE);
+	dwc3->regs += DWC3_GLOBALS_REGS_START;
+	dwc3->dev = dev;
+
+	rc =  dwc3_init(dwc3);
+	if (rc) {
+		unmap_physmem(dwc3->regs, MAP_NOCACHE);
+		return rc;
+	}
 
-	return dwc3_init(priv);
+	return 0;
 }
 
 static int dwc3_generic_peripheral_remove(struct udevice *dev)
 {
-	struct dwc3 *priv = dev_get_priv(dev);
+	struct dwc3_generic_peripheral *priv = dev_get_priv(dev);
+	struct dwc3 *dwc3 = &priv->dwc3;
 
-	dwc3_remove(priv);
+	dwc3_remove(dwc3);
+	dwc3_shutdown_phy(dev, priv->phys, priv->num_phys);
+	unmap_physmem(dwc3->regs, MAP_NOCACHE);
 
 	return 0;
 }
 
 static int dwc3_generic_peripheral_ofdata_to_platdata(struct udevice *dev)
 {
-	struct dwc3 *priv = dev_get_priv(dev);
+	struct dwc3_generic_peripheral *priv = dev_get_priv(dev);
+	struct dwc3 *dwc3 = &priv->dwc3;
 	int node = dev_of_offset(dev);
 
-	priv->regs = (void *)devfdt_get_addr(dev);
-	priv->regs += DWC3_GLOBALS_REGS_START;
+	priv->base = devfdt_get_addr(dev);
 
-	priv->maximum_speed = usb_get_maximum_speed(node);
-	if (priv->maximum_speed == USB_SPEED_UNKNOWN) {
+	dwc3->maximum_speed = usb_get_maximum_speed(node);
+	if (dwc3->maximum_speed == USB_SPEED_UNKNOWN) {
 		pr_err("Invalid usb maximum speed\n");
 		return -ENODEV;
 	}
 
-	priv->dr_mode = usb_get_dr_mode(node);
-	if (priv->dr_mode == USB_DR_MODE_UNKNOWN) {
+	dwc3->dr_mode = usb_get_dr_mode(node);
+	if (dwc3->dr_mode == USB_DR_MODE_UNKNOWN) {
 		pr_err("Invalid usb mode setup\n");
 		return -ENODEV;
 	}
@@ -77,13 +104,16 @@ U_BOOT_DRIVER(dwc3_generic_peripheral) = {
 	.ofdata_to_platdata = dwc3_generic_peripheral_ofdata_to_platdata,
 	.probe = dwc3_generic_peripheral_probe,
 	.remove = dwc3_generic_peripheral_remove,
-	.platdata_auto_alloc_size = sizeof(struct usb_platdata),
-	.priv_auto_alloc_size = sizeof(struct dwc3),
+	.priv_auto_alloc_size = sizeof(struct dwc3_generic_peripheral),
 };
-
 #endif
 
-static int dwc3_generic_bind(struct udevice *parent)
+struct dwc3_glue_data {
+	struct clk_bulk		clks;
+	struct reset_ctl_bulk	resets;
+};
+
+static int dwc3_glue_bind(struct udevice *parent)
 {
 	const void *fdt = gd->fdt_blob;
 	int node;
@@ -94,29 +124,32 @@ static int dwc3_generic_bind(struct udevice *parent)
 		const char *name = fdt_get_name(fdt, node, NULL);
 		enum usb_dr_mode dr_mode;
 		struct udevice *dev;
-		const char *driver;
+		const char *driver = NULL;
 
 		debug("%s: subnode name: %s\n", __func__, name);
-		if (strncmp(name, "dwc3@", 4))
-			continue;
 
 		dr_mode = usb_get_dr_mode(node);
 
 		switch (dr_mode) {
 		case USB_DR_MODE_PERIPHERAL:
 		case USB_DR_MODE_OTG:
+#ifdef CONFIG_DM_USB_DEV
 			debug("%s: dr_mode: OTG or Peripheral\n", __func__);
 			driver = "dwc3-generic-peripheral";
+#endif
 			break;
 		case USB_DR_MODE_HOST:
 			debug("%s: dr_mode: HOST\n", __func__);
-			driver = "dwc3-generic-host";
+			driver = "xhci-dwc3";
 			break;
 		default:
 			debug("%s: unsupported dr_mode\n", __func__);
 			return -ENODEV;
 		};
 
+		if (!driver)
+			continue;
+
 		ret = device_bind_driver_to_node(parent, driver, name,
 						 offset_to_ofnode(node), &dev);
 		if (ret) {
@@ -129,7 +162,76 @@ static int dwc3_generic_bind(struct udevice *parent)
 	return 0;
 }
 
-static const struct udevice_id dwc3_generic_ids[] = {
+static int dwc3_glue_reset_init(struct udevice *dev,
+				struct dwc3_glue_data *glue)
+{
+	int ret;
+
+	ret = reset_get_bulk(dev, &glue->resets);
+	if (ret == -ENOTSUPP)
+		return 0;
+	else if (ret)
+		return ret;
+
+	ret = reset_deassert_bulk(&glue->resets);
+	if (ret) {
+		reset_release_bulk(&glue->resets);
+		return ret;
+	}
+
+	return 0;
+}
+
+static int dwc3_glue_clk_init(struct udevice *dev,
+			      struct dwc3_glue_data *glue)
+{
+	int ret;
+
+	ret = clk_get_bulk(dev, &glue->clks);
+	if (ret == -ENOSYS)
+		return 0;
+	if (ret)
+		return ret;
+
+#if CONFIG_IS_ENABLED(CLK)
+	ret = clk_enable_bulk(&glue->clks);
+	if (ret) {
+		clk_release_bulk(&glue->clks);
+		return ret;
+	}
+#endif
+
+	return 0;
+}
+
+static int dwc3_glue_probe(struct udevice *dev)
+{
+	struct dwc3_glue_data *glue = dev_get_platdata(dev);
+	int ret;
+
+	ret = dwc3_glue_clk_init(dev, glue);
+	if (ret)
+		return ret;
+
+	ret = dwc3_glue_reset_init(dev, glue);
+	if (ret)
+		return ret;
+
+	return 0;
+}
+
+static int dwc3_glue_remove(struct udevice *dev)
+{
+	struct dwc3_glue_data *glue = dev_get_platdata(dev);
+
+	reset_release_bulk(&glue->resets);
+
+	clk_release_bulk(&glue->clks);
+
+	return dm_scan_fdt_dev(dev);
+}
+
+static const struct udevice_id dwc3_glue_ids[] = {
 	{ .compatible = "xlnx,zynqmp-dwc3" },
 	{ }
 };
@@ -137,6 +239,10 @@ static const struct udevice_id dwc3_generic_ids[] = {
 U_BOOT_DRIVER(dwc3_generic_wrapper) = {
 	.name	= "dwc3-generic-wrapper",
 	.id	= UCLASS_MISC,
-	.of_match = dwc3_generic_ids,
-	.bind = dwc3_generic_bind,
+	.of_match = dwc3_glue_ids,
+	.bind = dwc3_glue_bind,
+	.probe = dwc3_glue_probe,
+	.remove = dwc3_glue_remove,
+	.platdata_auto_alloc_size = sizeof(struct dwc3_glue_data),
+
 };
-- 
2.7.4

^ permalink raw reply	[flat|nested] 18+ messages in thread

* [U-Boot] [PATCH v2 7/7] dwc3-generic: Add select_dr_mode operation
  2018-09-04 13:42 [U-Boot] [PATCH v2 0/7] [RESEND] Improvements for the dwc3_generic driver Jean-Jacques Hiblot
                   ` (5 preceding siblings ...)
  2018-09-04 13:42 ` [U-Boot] [PATCH v2 6/7] dwc3-generic: Handle the PHYs, the clocks and the reset lines Jean-Jacques Hiblot
@ 2018-09-04 13:42 ` Jean-Jacques Hiblot
  2018-09-14  8:07 ` [U-Boot] [PATCH v2 0/7] [RESEND] Improvements for the dwc3_generic driver Jean-Jacques Hiblot
  2018-09-21  8:26 ` Jean-Jacques Hiblot
  8 siblings, 0 replies; 18+ messages in thread
From: Jean-Jacques Hiblot @ 2018-09-04 13:42 UTC (permalink / raw)
  To: u-boot

The 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.

Signed-off-by: Jean-Jacques Hiblot <jjhiblot@ti.com>

---

Changes in v2: None

 drivers/usb/dwc3/dwc3-generic.c | 26 ++++++++++++++++++++++++++
 1 file changed, 26 insertions(+)

diff --git a/drivers/usb/dwc3/dwc3-generic.c b/drivers/usb/dwc3/dwc3-generic.c
index 2c27dbc..169188c 100644
--- a/drivers/usb/dwc3/dwc3-generic.c
+++ b/drivers/usb/dwc3/dwc3-generic.c
@@ -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;
 }
 
-- 
2.7.4

^ permalink raw reply	[flat|nested] 18+ messages in thread

* [U-Boot] [PATCH v2 0/7] [RESEND] Improvements for the dwc3_generic driver
  2018-09-04 13:42 [U-Boot] [PATCH v2 0/7] [RESEND] Improvements for the dwc3_generic driver Jean-Jacques Hiblot
                   ` (6 preceding siblings ...)
  2018-09-04 13:42 ` [U-Boot] [PATCH v2 7/7] dwc3-generic: Add select_dr_mode operation Jean-Jacques Hiblot
@ 2018-09-14  8:07 ` Jean-Jacques Hiblot
  2018-09-21  8:26 ` Jean-Jacques Hiblot
  8 siblings, 0 replies; 18+ messages in thread
From: Jean-Jacques Hiblot @ 2018-09-14  8:07 UTC (permalink / raw)
  To: u-boot

Hi Marek,

Gentle ping on this series and the other for DM_USB on TI platforms.

JJ


On 04/09/2018 15:42, Jean-Jacques Hiblot wrote:
> 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.
> Tested-by: Michal Simek <michal.simek@xilinx.com>"
>
> 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(-)
>

^ permalink raw reply	[flat|nested] 18+ messages in thread

* [U-Boot] [PATCH v2 0/7] [RESEND] Improvements for the dwc3_generic driver
  2018-09-04 13:42 [U-Boot] [PATCH v2 0/7] [RESEND] Improvements for the dwc3_generic driver Jean-Jacques Hiblot
                   ` (7 preceding siblings ...)
  2018-09-14  8:07 ` [U-Boot] [PATCH v2 0/7] [RESEND] Improvements for the dwc3_generic driver Jean-Jacques Hiblot
@ 2018-09-21  8:26 ` Jean-Jacques Hiblot
  2018-09-21  8:50   ` Lukasz Majewski
  8 siblings, 1 reply; 18+ messages in thread
From: Jean-Jacques Hiblot @ 2018-09-21  8:26 UTC (permalink / raw)
  To: u-boot

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?

Thanks,

JJ



On 04/09/2018 15:42, Jean-Jacques Hiblot wrote:
> 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.
> Tested-by: Michal Simek <michal.simek@xilinx.com>"
>
> 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(-)
>

^ permalink raw reply	[flat|nested] 18+ messages in thread

* [U-Boot] [PATCH v2 0/7] [RESEND] Improvements for the dwc3_generic driver
  2018-09-21  8:26 ` Jean-Jacques Hiblot
@ 2018-09-21  8:50   ` Lukasz Majewski
  2018-09-21  8:54     ` Jean-Jacques Hiblot
  0 siblings, 1 reply; 18+ messages in thread
From: Lukasz Majewski @ 2018-09-21  8:50 UTC (permalink / raw)
  To: u-boot

Hi Jean-Jacques,

> 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.

> 
> Thanks,
> 
> JJ
> 
> 
> 
> On 04/09/2018 15:42, Jean-Jacques Hiblot wrote:
> > 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.
> > Tested-by: Michal Simek <michal.simek@xilinx.com>"
> >
> > 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(-) 
> 




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>

^ permalink raw reply	[flat|nested] 18+ messages in thread

* [U-Boot] [PATCH v2 0/7] [RESEND] Improvements for the dwc3_generic driver
  2018-09-21  8:50   ` Lukasz Majewski
@ 2018-09-21  8:54     ` Jean-Jacques Hiblot
  2018-09-21  9:24       ` Lukasz Majewski
  0 siblings, 1 reply; 18+ messages in thread
From: Jean-Jacques Hiblot @ 2018-09-21  8:54 UTC (permalink / raw)
  To: u-boot



On 21/09/2018 10:50, Lukasz Majewski wrote:
> Hi Jean-Jacques,
>
>> 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).
Thanks. I am not blaming anyone. I just wanted to make sure that this 
wasn't lost in limbo.

>
> 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.
>
>> Thanks,
>>
>> JJ
>>
>>
>>
>> On 04/09/2018 15:42, Jean-Jacques Hiblot wrote:
>>> 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.
>>> Tested-by: Michal Simek <michal.simek@xilinx.com>"
>>>
>>> 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(-)
>
>
>
> 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

^ permalink raw reply	[flat|nested] 18+ messages in thread

* [U-Boot] [PATCH v2 0/7] [RESEND] Improvements for the dwc3_generic driver
  2018-09-21  8:54     ` Jean-Jacques Hiblot
@ 2018-09-21  9:24       ` Lukasz Majewski
  2018-09-21 10:18         ` Jean-Jacques Hiblot
  0 siblings, 1 reply; 18+ messages in thread
From: Lukasz Majewski @ 2018-09-21  9:24 UTC (permalink / raw)
  To: u-boot

Hi Jean-Jacques,

> On 21/09/2018 10:50, Lukasz Majewski wrote:
> > Hi Jean-Jacques,
> >  
> >> 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).  
> 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 just wanted to make sure that this 
> wasn't lost in limbo.
> 
> >
> > 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.
> >  
> >> Thanks,
> >>
> >> JJ
> >>
> >>
> >>
> >> On 04/09/2018 15:42, Jean-Jacques Hiblot wrote:  
> >>> 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.
> >>> Tested-by: Michal Simek <michal.simek@xilinx.com>"
> >>>
> >>> 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(-)  
> >
> >
> >
> > 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>

^ permalink raw reply	[flat|nested] 18+ messages in thread

* [U-Boot] [PATCH v2 0/7] [RESEND] Improvements for the dwc3_generic driver
  2018-09-21  9:24       ` Lukasz Majewski
@ 2018-09-21 10:18         ` Jean-Jacques Hiblot
  2018-09-21 10:43           ` Lukasz Majewski
  0 siblings, 1 reply; 18+ messages in thread
From: Jean-Jacques Hiblot @ 2018-09-21 10:18 UTC (permalink / raw)
  To: u-boot



On 21/09/2018 11:24, Lukasz Majewski wrote:
> Hi Jean-Jacques,
>
>> On 21/09/2018 10:50, Lukasz Majewski wrote:
>>> Hi Jean-Jacques,
>>>   
>>>> 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).
>> 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 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 ?


>
>> I just wanted to make sure that this
>> wasn't lost in limbo.
>>
>>> 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.
>>>   
>>>> Thanks,
>>>>
>>>> JJ
>>>>
>>>>
>>>>
>>>> On 04/09/2018 15:42, Jean-Jacques Hiblot wrote:
>>>>> 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.
>>>>> Tested-by: Michal Simek <michal.simek@xilinx.com>"
>>>>>
>>>>> 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(-)
>>>
>>>
>>> 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

^ permalink raw reply	[flat|nested] 18+ messages in thread

* [U-Boot] [PATCH v2 0/7] [RESEND] Improvements for the dwc3_generic driver
  2018-09-21 10:18         ` Jean-Jacques Hiblot
@ 2018-09-21 10:43           ` Lukasz Majewski
  2018-09-21 13:02             ` Jean-Jacques Hiblot
  0 siblings, 1 reply; 18+ messages in thread
From: Lukasz Majewski @ 2018-09-21 10:43 UTC (permalink / raw)
  To: u-boot

Hi Jean-Jacques,

> On 21/09/2018 11:24, Lukasz Majewski wrote:
> > Hi Jean-Jacques,
> >  
> >> On 21/09/2018 10:50, Lukasz Majewski wrote:  
> >>> Hi Jean-Jacques,
> >>>     
> >>>> 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).  
> >> 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 core dwc3/core.c thinking 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?

> 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 ?
> 
> 
> >  
> >> I just wanted to make sure that this
> >> wasn't lost in limbo.
> >>  
> >>> 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.
> >>>     
> >>>> Thanks,
> >>>>
> >>>> JJ
> >>>>
> >>>>
> >>>>
> >>>> On 04/09/2018 15:42, Jean-Jacques Hiblot wrote:  
> >>>>> 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.
> >>>>> Tested-by: Michal Simek <michal.simek@xilinx.com>"
> >>>>>
> >>>>> 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(-)  
> >>>
> >>>
> >>> 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  
> 




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>

^ permalink raw reply	[flat|nested] 18+ messages in thread

* [U-Boot] [PATCH v2 0/7] [RESEND] Improvements for the dwc3_generic driver
  2018-09-21 10:43           ` Lukasz Majewski
@ 2018-09-21 13:02             ` Jean-Jacques Hiblot
  2018-09-24 15:38               ` Jean-Jacques Hiblot
  0 siblings, 1 reply; 18+ messages in thread
From: Jean-Jacques Hiblot @ 2018-09-21 13:02 UTC (permalink / raw)
  To: u-boot



On 21/09/2018 12:43, Lukasz Majewski wrote:
> Hi Jean-Jacques,
>
>> On 21/09/2018 11:24, Lukasz Majewski wrote:
>>> Hi Jean-Jacques,
>>>   
>>>> On 21/09/2018 10:50, Lukasz Majewski wrote:
>>>>> Hi Jean-Jacques,
>>>>>      
>>>>>> 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).
>>>> 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 core dwc3/core.c thinking 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.

>
> They use xhci PHY handling code and what code on top?
>
>> 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 ?
>>
>>
>>>   
>>>> I just wanted to make sure that this
>>>> wasn't lost in limbo.
>>>>   
>>>>> 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.
>>>>>      
>>>>>> Thanks,
>>>>>>
>>>>>> JJ
>>>>>>
>>>>>>
>>>>>>
>>>>>> On 04/09/2018 15:42, Jean-Jacques Hiblot wrote:
>>>>>>> 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.
>>>>>>> Tested-by: Michal Simek <michal.simek@xilinx.com>"
>>>>>>>
>>>>>>> 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(-)
>>>>>
>>>>> 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
>
>
>
> 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

^ permalink raw reply	[flat|nested] 18+ messages in thread

* [U-Boot] [PATCH v2 0/7] [RESEND] Improvements for the dwc3_generic driver
  2018-09-21 13:02             ` Jean-Jacques Hiblot
@ 2018-09-24 15:38               ` Jean-Jacques Hiblot
  2018-09-25  7:35                 ` Lukasz Majewski
  0 siblings, 1 reply; 18+ messages in thread
From: Jean-Jacques Hiblot @ 2018-09-24 15:38 UTC (permalink / raw)
  To: u-boot



On 21/09/2018 15:02, Jean-Jacques Hiblot wrote:
>
>
> On 21/09/2018 12:43, Lukasz Majewski wrote:
>> Hi Jean-Jacques,
>>
>>> On 21/09/2018 11:24, Lukasz Majewski wrote:
>>>> Hi Jean-Jacques,
>>>>> On 21/09/2018 10:50, Lukasz Majewski wrote:
>>>>>> Hi Jean-Jacques,
>>>>>>> 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).
>>>>> 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 core dwc3/core.c thinking 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.
>
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

>>
>> They use xhci PHY handling code and what code on top?
>>
>>> 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 ?
>>>
>>>
>>>>> I just wanted to make sure that this
>>>>> wasn't lost in limbo.
>>>>>> 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.
>>>>>>> Thanks,
>>>>>>>
>>>>>>> JJ
>>>>>>>
>>>>>>>
>>>>>>>
>>>>>>> On 04/09/2018 15:42, Jean-Jacques Hiblot wrote:
>>>>>>>> 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.
>>>>>>>> Tested-by: Michal Simek <michal.simek@xilinx.com>"
>>>>>>>>
>>>>>>>> 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(-)
>>>>>>
>>>>>> 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
>>
>>
>>
>> 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
>
> _______________________________________________
> U-Boot mailing list
> U-Boot at lists.denx.de
> https://lists.denx.de/listinfo/u-boot

^ permalink raw reply	[flat|nested] 18+ messages in thread

* [U-Boot] [PATCH v2 0/7] [RESEND] Improvements for the dwc3_generic driver
  2018-09-24 15:38               ` Jean-Jacques Hiblot
@ 2018-09-25  7:35                 ` Lukasz Majewski
  0 siblings, 0 replies; 18+ messages in thread
From: Lukasz Majewski @ 2018-09-25  7:35 UTC (permalink / raw)
  To: u-boot

Hi Jean-Jacques,

> On 21/09/2018 15:02, Jean-Jacques Hiblot wrote:
> >
> >
> > On 21/09/2018 12:43, Lukasz Majewski wrote:  
> >> Hi Jean-Jacques,
> >>  
> >>> On 21/09/2018 11:24, Lukasz Majewski wrote:  
> >>>> Hi Jean-Jacques,  
> >>>>> On 21/09/2018 10:50, Lukasz Majewski wrote:  
> >>>>>> Hi Jean-Jacques,  
> >>>>>>> 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).  
> >>>>> 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 core dwc3/core.c thinking 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.
> >  
> 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 :-).

> JJ
> 
> >>
> >> They use xhci PHY handling code and what code on top?
> >>  
> >>> 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 ?
> >>>
> >>>  
> >>>>> I just wanted to make sure that this
> >>>>> wasn't lost in limbo.  
> >>>>>> 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.  
> >>>>>>> Thanks,
> >>>>>>>
> >>>>>>> JJ
> >>>>>>>
> >>>>>>>
> >>>>>>>
> >>>>>>> On 04/09/2018 15:42, Jean-Jacques Hiblot wrote:  
> >>>>>>>> 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.
> >>>>>>>> Tested-by: Michal Simek <michal.simek@xilinx.com>"
> >>>>>>>>
> >>>>>>>> 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(-)  
> >>>>>>
> >>>>>> 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  
> >>
> >>
> >>
> >> 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  
> >
> > _______________________________________________
> > 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>

^ permalink raw reply	[flat|nested] 18+ messages in thread

end of thread, other threads:[~2018-09-25  7:35 UTC | newest]

Thread overview: 18+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2018-09-04 13:42 [U-Boot] [PATCH v2 0/7] [RESEND] Improvements for the dwc3_generic driver Jean-Jacques Hiblot
2018-09-04 13:42 ` [U-Boot] [PATCH v2 1/7] usb: gadget: Do not call board_usb_xxx() directly in USB gadget drivers Jean-Jacques Hiblot
2018-09-04 13:42 ` [U-Boot] [PATCH v2 2/7] usb: introduce a separate config option for DM USB device Jean-Jacques Hiblot
2018-09-04 13:42 ` [U-Boot] [PATCH v2 3/7] usb: udc: implement DM versions of usb_gadget_initialize()/_release()/_handle_interrupt() Jean-Jacques Hiblot
2018-09-04 13:42 ` [U-Boot] [PATCH v2 4/7] dwc3_generic: do not probe the USB device driver when it's bound Jean-Jacques Hiblot
2018-09-04 13:42 ` [U-Boot] [PATCH v2 5/7] dwc3: move phy operation to core.c Jean-Jacques Hiblot
2018-09-04 13:42 ` [U-Boot] [PATCH v2 6/7] dwc3-generic: Handle the PHYs, the clocks and the reset lines Jean-Jacques Hiblot
2018-09-04 13:42 ` [U-Boot] [PATCH v2 7/7] dwc3-generic: Add select_dr_mode operation Jean-Jacques Hiblot
2018-09-14  8:07 ` [U-Boot] [PATCH v2 0/7] [RESEND] Improvements for the dwc3_generic driver Jean-Jacques Hiblot
2018-09-21  8:26 ` Jean-Jacques Hiblot
2018-09-21  8:50   ` Lukasz Majewski
2018-09-21  8:54     ` Jean-Jacques Hiblot
2018-09-21  9:24       ` Lukasz Majewski
2018-09-21 10:18         ` Jean-Jacques Hiblot
2018-09-21 10:43           ` Lukasz Majewski
2018-09-21 13:02             ` Jean-Jacques Hiblot
2018-09-24 15:38               ` Jean-Jacques Hiblot
2018-09-25  7:35                 ` Lukasz Majewski

This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.