Skip to contentSkip to conversation

Improvements for the dwc3_generic driver

PATCH Superseded Jean-Jacques Hiblot 7 participants 25 messages Sep 25, 2018 – Nov 16, 2018

Subsystems (4)

v3 of 4 Superseded Latest is v4 →

lore
Share & tools
lore
#0 lore raw

v3 cover Improvements for the dwc3_generic driver

This series aims at bringing improvements to the dwc3_generic driver so that it can be used by most of the platforms using the dwc3 controller.

I tested this on with DRA7 and AM57x platforms for both Peripheral and Host operations. The code to enable DM USB host & dev support for those platforms will be submitted in a separate series.

Michal Simek has tested this series:
" I have tested it on zcu100 with usb stick, usb to ethernet converter and also dfu.

Enhancements:
- use separate Kconfig option for DM USB Periphal and DM USB Host. This allow platforms to keep their non-DM USB peripheral code and use the DM USB host.
- fixes the bind/probe confusion in dwc3_generic. The probe is done when the USB device is first needed.
- handles PHYs when in the peripheral mode. The code to handle the PHYs is shared with the host side
- handles clock and reset
- bind host controller to the more generic driver 'xhci-dwc3'

Changes in v3:
- fixes bug dwc3_setup_phy(): the phy arrays wasn't returned. This was visible only when the device is removed.
- Stub the DWC3 PHY operations if CONFIG_IS_ENABLED(PHY) is false. This fixes all build issues but one (evb-rk3328).
- Fix build issue with evb-rk3328 by enabling CONFIG_USB_DWC3. This has little impact on the footprint and should not break the runtime as the xhci-rockchip driver has its own probe function. Nevertheless this was !!! NOT TESTED !!! by lack of hw

Changes in v2:
- Updated commit log
- Fixed typo in thordown.c
- select DM_USB_DEV by default for zynqmp platforms

Jean-Jacques Hiblot (8):
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
configs: evb-rk3328: Enable CONFIG_USB_DWC3
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 +-
 configs/evb-rk3328_defconfig      |   1 +
 drivers/usb/Kconfig               |   6 ++
 drivers/usb/dwc3/Kconfig          |   7 +-
 drivers/usb/dwc3/core.c           |  89 +++++++++++++++-
 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      |  95 ++---------------
 include/dwc3-uboot.h              |  19 ++++
 include/linux/usb/gadget.h        |  18 ++++
 18 files changed, 367 insertions(+), 186 deletions(-)
Signature · 1 line
2.7.4
#1 lore raw

PATCH v3 1/8 usb: gadget: Do not call board_usb_xxx() directly in USB gadget drivers

Add 2 functions to wrap the calls to board_usb_init() and board_usb_cleanup().
This is a preparatory work for DM support for UDC drivers (DM_USB_DEV).

---

Changes in v3: None
Changes in v2:
- Updated commit log
- Fixed typo in thordown.c

 cmd/fastboot.c             |  4 ++--
 cmd/rockusb.c              |  4 ++--
 cmd/thordown.c             |  4 ++--
 cmd/usb_gadget_sdp.c       |  4 ++--
 cmd/usb_mass_storage.c     |  4 ++--
 common/dfu.c               |  6 +++---
 drivers/usb/gadget/ether.c | 38 +++++---------------------------------
 include/linux/usb/gadget.h | 10 ++++++++++
 8 files changed, 28 insertions(+), 46 deletions(-)
cmd/fastboot.c +2 -2
index ae3a5f6..0be83b7 100644
@@ -51,7 +51,7 @@ static int do_fastboot_usb(int argc, char *const argv[],
 		return CMD_RET_FAILURE;
 	}
 
-	ret = board_usb_init(controller_index, USB_INIT_DEVICE);
+	ret = usb_gadget_initialize(controller_index);
 	if (ret) {
 		pr_err("USB init failed: %d\n", ret);
 		return CMD_RET_FAILURE;
@@ -82,7 +82,7 @@ static int do_fastboot_usb(int argc, char *const argv[],
 exit:
 	g_dnl_unregister();
 	g_dnl_clear_detach();
-	board_usb_cleanup(controller_index, USB_INIT_DEVICE);
+	usb_gadget_release(controller_index);
 
 	return ret;
 #else
cmd/rockusb.c +2 -2
index 8206643..e0c1480 100644
@@ -33,7 +33,7 @@ static int do_rockusb(cmd_tbl_t *cmdtp, int flag, int argc, char *const argv[])
 	dev_index = simple_strtoul(devnum, NULL, 0);
 	rockusb_dev_init(devtype, dev_index);
 
-	ret = board_usb_init(controller_index, USB_INIT_DEVICE);
+	ret = usb_gadget_initialize(controller_index);
 	if (ret) {
 		printf("USB init failed: %d\n", ret);
 		return CMD_RET_FAILURE;
@@ -62,7 +62,7 @@ static int do_rockusb(cmd_tbl_t *cmdtp, int flag, int argc, char *const argv[])
 exit:
 	g_dnl_unregister();
 	g_dnl_clear_detach();
-	board_usb_cleanup(controller_index, USB_INIT_DEVICE);
+	usb_gadget_release(controller_index);
 
 	return ret;
 }
cmd/thordown.c +2 -2
index 2615ada..ce3660d 100644
@@ -30,7 +30,7 @@ int do_thor_down(cmd_tbl_t *cmdtp, int flag, int argc, char * const argv[])
 		goto done;
 
 	int controller_index = simple_strtoul(usb_controller, NULL, 0);
-	ret = board_usb_init(controller_index, USB_INIT_DEVICE);
+	ret = usb_gadget_initialize(controller_index);
 	if (ret) {
 		pr_err("USB init failed: %d\n", ret);
 		ret = CMD_RET_FAILURE;
@@ -55,7 +55,7 @@ int do_thor_down(cmd_tbl_t *cmdtp, int flag, int argc, char * const argv[])
 
 exit:
 	g_dnl_unregister();
-	board_usb_cleanup(controller_index, USB_INIT_DEVICE);
+	usb_gadget_release(controller_index);
 done:
 	dfu_free_entities();
 
cmd/usb_gadget_sdp.c +2 -2
index ba1f66a..808ed97 100644
@@ -20,7 +20,7 @@ static int do_sdp(cmd_tbl_t *cmdtp, int flag, int argc, char * const argv[])
 
 	char *usb_controller = argv[1];
 	int controller_index = simple_strtoul(usb_controller, NULL, 0);
-	board_usb_init(controller_index, USB_INIT_DEVICE);
+	usb_gadget_initialize(controller_index);
 
 	g_dnl_clear_detach();
 	g_dnl_register("usb_dnl_sdp");
@@ -37,7 +37,7 @@ static int do_sdp(cmd_tbl_t *cmdtp, int flag, int argc, char * const argv[])
 
 exit:
 	g_dnl_unregister();
-	board_usb_cleanup(controller_index, USB_INIT_DEVICE);
+	usb_gadget_release(controller_index);
 
 	return ret;
 }
cmd/usb_mass_storage.c +2 -2
index 0d55114..753ae4f 100644
@@ -160,7 +160,7 @@ static int do_usb_mass_storage(cmd_tbl_t *cmdtp, int flag,
 
 	controller_index = (unsigned int)(simple_strtoul(
 				usb_controller,	NULL, 0));
-	if (board_usb_init(controller_index, USB_INIT_DEVICE)) {
+	if (usb_gadget_initialize(controller_index)) {
 		pr_err("Couldn't init USB controller.\n");
 		rc = CMD_RET_FAILURE;
 		goto cleanup_ums_init;
@@ -231,7 +231,7 @@ static int do_usb_mass_storage(cmd_tbl_t *cmdtp, int flag,
 cleanup_register:
 	g_dnl_unregister();
 cleanup_board:
-	board_usb_cleanup(controller_index, USB_INIT_DEVICE);
+	usb_gadget_release(controller_index);
 cleanup_ums_init:
 	ums_fini();
 
common/dfu.c +3 -3
index 2620d32..44d1484 100644
@@ -23,9 +23,9 @@ int run_usb_dnl_gadget(int usbctrl_index, char *usb_dnl_gadget)
 	bool dfu_reset = false;
 	int ret, i = 0;
 
-	ret = board_usb_init(usbctrl_index, USB_INIT_DEVICE);
+	ret = usb_gadget_initialize(usbctrl_index);
 	if (ret) {
-		pr_err("board usb init failed\n");
+		pr_err("usb_gadget_initialize failed\n");
 		return CMD_RET_FAILURE;
 	}
 	g_dnl_clear_detach();
@@ -84,7 +84,7 @@ int run_usb_dnl_gadget(int usbctrl_index, char *usb_dnl_gadget)
 	}
 exit:
 	g_dnl_unregister();
-	board_usb_cleanup(usbctrl_index, USB_INIT_DEVICE);
+	usb_gadget_release(usbctrl_index);
 
 	if (dfu_reset)
 		do_reset(NULL, 0, 0, NULL);
drivers/usb/gadget/ether.c +5 -33
index 8ab9b9f..1c438c3 100644
@@ -105,9 +105,6 @@ struct eth_dev {
 	struct usb_gadget	*gadget;
 	struct usb_request	*req;		/* for control responses */
 	struct usb_request	*stat_req;	/* for cdc & rndis status */
-#ifdef CONFIG_DM_USB
-	struct udevice		*usb_udev;
-#endif
 
 	u8			config;
 	struct usb_ep		*in_ep, *out_ep, *status_ep;
@@ -2341,40 +2338,17 @@ fail:
 }
 
 /*-------------------------------------------------------------------------*/
-
-#ifdef CONFIG_DM_USB
-int dm_usb_init(struct eth_dev *e_dev)
-{
-	struct udevice *dev = NULL;
-	int ret;
-
-	ret = uclass_first_device(UCLASS_USB_DEV_GENERIC, &dev);
-	if (!dev || ret) {
-		pr_err("No USB device found\n");
-		return -ENODEV;
-	}
-
-	e_dev->usb_udev = dev;
-
-	return ret;
-}
-#endif
-
 static int _usb_eth_init(struct ether_priv *priv)
 {
 	struct eth_dev *dev = &priv->ethdev;
 	struct usb_gadget *gadget;
 	unsigned long ts;
+	int ret;
 	unsigned long timeout = USB_CONNECT_TIMEOUT;
 
-#ifdef CONFIG_DM_USB
-	if (dm_usb_init(dev)) {
-		pr_err("USB ether not found\n");
-		return -ENODEV;
-	}
-#else
-	board_usb_init(0, USB_INIT_DEVICE);
-#endif
+	ret = usb_gadget_initialize(0);
+	if (ret)
+		return ret;
 
 	/* Configure default mac-addresses for the USB ethernet device */
 #ifdef CONFIG_USBNET_DEV_ADDR
@@ -2546,9 +2520,7 @@ void _usb_eth_halt(struct ether_priv *priv)
 	}
 
 	usb_gadget_unregister_driver(&priv->eth_driver);
-#ifndef CONFIG_DM_USB
-	board_usb_cleanup(0, USB_INIT_DEVICE);
-#endif
+	usb_gadget_release(0);
 }
 
 #ifndef CONFIG_DM_ETH
include/linux/usb/gadget.h +10 -0
index b824f13..40ca2d3 100644
@@ -19,6 +19,7 @@
 #define __LINUX_USB_GADGET_H
 
 #include <errno.h>
+#include <usb.h>
 #include <linux/compat.h>
 #include <linux/list.h>
 
@@ -926,4 +927,13 @@ extern void usb_ep_autoconfig_reset(struct usb_gadget *);
 
 extern int usb_gadget_handle_interrupts(int index);
 
+static inline int usb_gadget_initialize(int index)
+{
+	return board_usb_init(index, USB_INIT_DEVICE);
+}
+
+static inline int usb_gadget_release(int index)
+{
+	return board_usb_cleanup(index, USB_INIT_DEVICE);
+}
 #endif	/* __LINUX_USB_GADGET_H */
Signature · 1 line
2.7.4
#2 lore raw

PATCH v3 2/8 usb: introduce a separate config option for DM USB device

In reply to Jean-Jacques Hiblot

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

---

Changes in v3: None
Changes in v2:
- select DM_USB_DEV by default for zynqmp platforms

 arch/arm/Kconfig                | 2 ++
 drivers/usb/Kconfig             | 6 ++++++
 drivers/usb/dwc3/core.c         | 2 +-
 drivers/usb/dwc3/dwc3-generic.c | 4 +++-
 4 files changed, 12 insertions(+), 2 deletions(-)
arch/arm/Kconfig +2 -0
index 0f8dd32..cc515e3 100644
@@ -894,6 +894,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"
@@ -909,6 +910,7 @@ config ARCH_ZYNQMP
 	select SUPPORT_SPL
 	imply CMD_DM
 	imply FAT_WRITE
+	imply DM_USB_DEV
 
 config TEGRA
 	bool "NVIDIA Tegra"
drivers/usb/Kconfig +6 -0
index 4fbe172..3587ba4 100644
@@ -47,6 +47,12 @@ config DM_USB
 	  declared with the U_BOOT_USB_DEVICE() macro and will be
 	  automatically probed when found on the bus.
 
+config DM_USB_DEV
+	bool "Enable driver model for USB (Peripheral mode)"
+	depends on DM_USB
+	help
+	  Enable driver model for USB (Peripheral mode).
+
 source "drivers/usb/host/Kconfig"
 
 source "drivers/usb/dwc3/Kconfig"
drivers/usb/dwc3/core.c +1 -1
index 1ab5cee..d5ee6d9 100644
@@ -789,7 +789,7 @@ MODULE_AUTHOR("Felipe Balbi <[email protected]>");
 MODULE_LICENSE("GPL v2");
 MODULE_DESCRIPTION("DesignWare USB3 DRD Controller Driver");
 
-#ifdef CONFIG_DM_USB
+#ifdef CONFIG_DM_USB_DEV
 
 int dwc3_init(struct dwc3 *dwc)
 {
drivers/usb/dwc3/dwc3-generic.c +3 -1
index ca63eac..2c1e696 100644
@@ -21,7 +21,7 @@
 #include "gadget.h"
 #include "linux-compat.h"
 
-DECLARE_GLOBAL_DATA_PTR;
+#ifdef CONFIG_DM_USB_DEV
 
 int usb_gadget_handle_interrupts(int index)
 {
@@ -98,6 +98,8 @@ U_BOOT_DRIVER(dwc3_generic_peripheral) = {
 	.flags	= DM_FLAG_ALLOC_PRIV_DMA,
 };
 
+#endif
+
 static int dwc3_generic_bind(struct udevice *parent)
 {
 	const void *fdt = gd->fdt_blob;
Signature · 1 line
2.7.4
#3 lore raw

PATCH v3 3/8 usb: udc: implement DM versions of usb_gadget_initialize()/_release()/_handle_interrupt()

In reply to Jean-Jacques Hiblot

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.

---

Changes in v3: None
Changes in v2: None

 drivers/usb/dwc3/dwc3-generic.c   | 14 ++-----------
 drivers/usb/gadget/udc/udc-core.c | 44 ++++++++++++++++++++++++++++++++++++++-
 include/linux/usb/gadget.h        |  8 +++++++
 3 files changed, 53 insertions(+), 13 deletions(-)
drivers/usb/dwc3/dwc3-generic.c +2 -12
index 2c1e696..43e97be 100644
@@ -23,19 +23,9 @@
 
 #ifdef CONFIG_DM_USB_DEV
 
-int usb_gadget_handle_interrupts(int index)
+int dm_usb_gadget_handle_interrupts(struct udevice *dev)
 {
-	struct dwc3 *priv;
-	struct udevice *dev;
-	int ret;
-
-	ret = uclass_first_device(UCLASS_USB_DEV_GENERIC, &dev);
-	if (!dev || ret) {
-		pr_err("No USB device found\n");
-		return -ENODEV;
-	}
-
-	priv = dev_get_priv(dev);
+	struct dwc3 *priv = dev_get_priv(dev);
 
 	dwc3_gadget_uboot_handle_interrupt(priv);
 
drivers/usb/gadget/udc/udc-core.c +43 -1

53 lines not on this page · raw message

include/linux/usb/gadget.h +8 -0
index 40ca2d3..a094e31 100644
@@ -927,6 +927,12 @@ extern void usb_ep_autoconfig_reset(struct usb_gadget *);
 
 extern int usb_gadget_handle_interrupts(int index);
 
+#ifdef CONFIG_DM_USB_DEV
+int usb_gadget_initialize(int index);
+int usb_gadget_release(int index);
+int dm_usb_gadget_handle_interrupts(struct udevice *dev);
+#else
+#include <usb.h>
 static inline int usb_gadget_initialize(int index)
 {
 	return board_usb_init(index, USB_INIT_DEVICE);
@@ -936,4 +942,6 @@ static inline int usb_gadget_release(int index)
 {
 	return board_usb_cleanup(index, USB_INIT_DEVICE);
 }
+#endif
+
 #endif	/* __LINUX_USB_GADGET_H */
Signature · 1 line
2.7.4
#4 lore raw

PATCH v3 4/8 dwc3_generic: do not probe the USB device driver when it's bound

In reply to Jean-Jacques Hiblot

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

---

Changes in v3: None
Changes in v2: None

 drivers/usb/dwc3/dwc3-generic.c | 7 -------
 1 file changed, 7 deletions(-)
drivers/usb/dwc3/dwc3-generic.c +0 -7
index 43e97be..3ec0c0e 100644
@@ -71,21 +71,14 @@ static int dwc3_generic_peripheral_ofdata_to_platdata(struct udevice *dev)
 	return 0;
 }
 
-static int dwc3_generic_peripheral_bind(struct udevice *dev)
-{
-	return device_probe(dev);
-}
-
 U_BOOT_DRIVER(dwc3_generic_peripheral) = {
 	.name	= "dwc3-generic-peripheral",
 	.id	= UCLASS_USB_DEV_GENERIC,
 	.ofdata_to_platdata = dwc3_generic_peripheral_ofdata_to_platdata,
 	.probe = dwc3_generic_peripheral_probe,
 	.remove = dwc3_generic_peripheral_remove,
-	.bind = dwc3_generic_peripheral_bind,
 	.platdata_auto_alloc_size = sizeof(struct usb_platdata),
 	.priv_auto_alloc_size = sizeof(struct dwc3),
-	.flags	= DM_FLAG_ALLOC_PRIV_DMA,
 };
 
 #endif
Signature · 1 line
2.7.4
#5 lore raw

PATCH v3 5/8 dwc3: move phy operation to core.c

In reply to Jean-Jacques Hiblot

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

---

Changes in v3:
- fixes bug dwc3_setup_phy(): the phy arrays wasn't returned. This was visible only when the device is removed.
- Stub the DWC3 PHY operations if CONFIG_IS_ENABLED(PHY) is false. This fixes all build issues but one (evb-rk3328).

Changes in v2: None

 drivers/usb/dwc3/core.c      | 89 ++++++++++++++++++++++++++++++++++++++++-
 drivers/usb/dwc3/ep0.c       |  1 -
 drivers/usb/host/xhci-dwc3.c | 95 ++++----------------------------------------
 include/dwc3-uboot.h         | 19 +++++++++
 4 files changed, 113 insertions(+), 91 deletions(-)
drivers/usb/dwc3/core.c +87 -2
index d5ee6d9..325fe8c 100644
@@ -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,93 @@ MODULE_AUTHOR("Felipe Balbi <[email protected]>");
 MODULE_LICENSE("GPL v2");
 MODULE_DESCRIPTION("DesignWare USB3 DRD Controller Driver");
 
-#ifdef CONFIG_DM_USB_DEV
+#if CONFIG_IS_ENABLED(PHY) && defined(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;
+		}
+	}
+
+	*array = usb_phys;
+	*num_phys =  count;
+	return 0;
 
+phys_poweron_err:
+	for (i = count - 1; i >= 0; i--)
+		generic_phy_power_off(&usb_phys[i]);
+
+	for (i = 0; i < count; i++)
+		generic_phy_exit(&usb_phys[i]);
+
+	return ret;
+
+phys_init_err:
+	for (; i >= 0; i--)
+		generic_phy_exit(&usb_phys[i]);
+
+	return ret;
+}
+
+int dwc3_shutdown_phy(struct udevice *dev, struct phy *usb_phys, int num_phys)
+{
+	int i, ret;
+
+	for (i = 0; i < num_phys; i++) {
+		if (!generic_phy_valid(&usb_phys[i]))
+			continue;
+
+		ret = generic_phy_power_off(&usb_phys[i]);
+		ret |= generic_phy_exit(&usb_phys[i]);
+		if (ret) {
+			pr_err("Can't shutdown USB PHY%d for %s\n",
+			       i, dev->name);
+		}
+	}
+
+	return 0;
+}
+#endif
+
+#ifdef CONFIG_DM_USB_DEV
 int dwc3_init(struct dwc3 *dwc)
 {
 	int ret;
drivers/usb/dwc3/ep0.c +0 -1
index 4f68887..433e5f6 100644
@@ -19,7 +19,6 @@
 #include <linux/usb/ch9.h>
 #include <linux/usb/gadget.h>
 #include <linux/usb/composite.h>
-
 #include "core.h"
 #include "gadget.h"
 #include "io.h"
drivers/usb/host/xhci-dwc3.c +7 -88

125 lines not on this page · raw message

include/dwc3-uboot.h +19 -0
index 228ab3b..50a8c70 100644
@@ -38,4 +38,23 @@ struct dwc3_device {
 int dwc3_uboot_init(struct dwc3_device *dev);
 void dwc3_uboot_exit(int index);
 void dwc3_uboot_handle_interrupt(int index);
+
+struct phy;
+#if CONFIG_IS_ENABLED(PHY) && defined(CONFIG_DM_USB)
+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);
+#else
+static inline int dwc3_setup_phy(struct udevice *dev, struct phy **array,
+				 int *num_phys)
+{
+	return -ENOTSUPP;
+}
+
+static inline int dwc3_shutdown_phy(struct udevice *dev, struct phy *usb_phys,
+				    int num_phys)
+{
+	return -ENOTSUPP;
+}
+#endif
+
 #endif /* __DWC3_UBOOT_H_ */
Signature · 1 line
2.7.4
#6 lore raw

PATCH v3 6/8 configs: evb-rk3328: Enable CONFIG_USB_DWC3

In reply to Jean-Jacques Hiblot

This is now required because the PHY operations used by xhci-dwc3 are part of the dwc3 core.

---

Changes in v3:
- Fix build issue with evb-rk3328 by enabling CONFIG_USB_DWC3. This has little impact on the footprint and should not break the runtime as the xhci-rockchip driver has its own probe function. Nevertheless this was !!! NOT TESTED !!! by lack of hw

Changes in v2: None

 configs/evb-rk3328_defconfig | 1 +
 1 file changed, 1 insertion(+)
configs/evb-rk3328_defconfig +1 -0
index 5b3bb8e..f022163 100644
@@ -49,6 +49,7 @@ CONFIG_BAUDRATE=1500000
 CONFIG_DEBUG_UART_SHIFT=2
 CONFIG_SYSRESET=y
 CONFIG_USB=y
+CONFIG_USB_DWC3=y
 CONFIG_USB_XHCI_HCD=y
 CONFIG_USB_XHCI_DWC3=y
 CONFIG_USB_EHCI_HCD=y
Signature · 1 line
2.7.4
#7 lore raw

PATCH v3 7/8 dwc3-generic: Handle the PHYs, the clocks and the reset lines

In reply to Jean-Jacques Hiblot

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.

---

Changes in v3: None
Changes in v2: None

 drivers/usb/dwc3/Kconfig        |   7 +-
 drivers/usb/dwc3/dwc3-generic.c | 160 +++++++++++++++++++++++++++++++++-------
 2 files changed, 137 insertions(+), 30 deletions(-)
drivers/usb/dwc3/Kconfig +4 -3
index 943b763..bbd8105 100644
@@ -38,10 +38,11 @@ config USB_DWC3_OMAP
 	  Say 'Y' here if you have one such device
 
 config USB_DWC3_GENERIC
-	bool "Xilinx ZynqMP and similar Platforms"
-	depends on DM_USB && USB_DWC3
+	bool "Generic implementation of a DWC3 wrapper (aka dwc3 glue)"
+	depends on DM_USB && USB_DWC3 && MISC
 	help
-	  Some platforms can reuse this DWC3 generic implementation.
+	  Select this for Xilinx ZynqMP and similar Platforms.
+	  This wrapper supports Host and Peripheral operation modes.
 
 config USB_DWC3_UNIPHIER
 	bool "DesignWare USB3 Host Support on UniPhier Platforms"
drivers/usb/dwc3/dwc3-generic.c +133 -27

247 lines not on this page · raw message

Signature · 1 line
2.7.4
#8 lore raw

PATCH v3 8/8 dwc3-generic: Add select_dr_mode operation

In reply to Jean-Jacques Hiblot

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.

---

Changes in v3: None
Changes in v2: None

 drivers/usb/dwc3/dwc3-generic.c | 26 ++++++++++++++++++++++++++
 1 file changed, 26 insertions(+)
drivers/usb/dwc3/dwc3-generic.c +26 -0
index 2c27dbc..169188c 100644
@@ -8,6 +8,7 @@
  */
 
 #include <common.h>
+#include <asm-generic/io.h>
 #include <dm.h>
 #include <dm/device-internal.h>
 #include <dm/lists.h>
@@ -111,6 +112,12 @@ U_BOOT_DRIVER(dwc3_generic_peripheral) = {
 struct dwc3_glue_data {
 	struct clk_bulk		clks;
 	struct reset_ctl_bulk	resets;
+	fdt_addr_t regs;
+};
+
+struct dwc3_glue_ops {
+	void (*select_dr_mode)(struct udevice *dev, int index,
+			       enum usb_dr_mode mode);
 };
 
 static int dwc3_glue_bind(struct udevice *parent)
@@ -206,9 +213,14 @@ static int dwc3_glue_clk_init(struct udevice *dev,
 
 static int dwc3_glue_probe(struct udevice *dev)
 {
+	struct dwc3_glue_ops *ops = (struct dwc3_glue_ops *)dev_get_driver_data(dev);
 	struct dwc3_glue_data *glue = dev_get_platdata(dev);
+	struct udevice *child = NULL;
+	int index = 0;
 	int ret;
 
+	glue->regs = dev_read_addr(dev);
+
 	ret = dwc3_glue_clk_init(dev, glue);
 	if (ret)
 		return ret;
@@ -217,6 +229,20 @@ static int dwc3_glue_probe(struct udevice *dev)
 	if (ret)
 		return ret;
 
+	ret = device_find_first_child(dev, &child);
+	if (ret)
+		return ret;
+
+	while (child) {
+		enum usb_dr_mode dr_mode;
+
+		dr_mode = usb_get_dr_mode(dev_of_offset(child));
+		device_find_next_child(&child);
+		if (ops && ops->select_dr_mode)
+			ops->select_dr_mode(dev, index, dr_mode);
+		index++;
+	}
+
 	return 0;
 }
 
Signature · 1 line
2.7.4
#9 lore raw

v3 cover Improvements for the dwc3_generic driver

In reply to Jean-Jacques Hiblot

Dear All,

Quoted 25 lines

This series aims at bringing improvements to the dwc3_generic driver so that it can be used by most of the platforms using the dwc3 controller.

I tested this on with DRA7 and AM57x platforms for both Peripheral and Host operations. The code to enable DM USB host & dev support for those platforms will be submitted in a separate series.

Michal Simek has tested this series:
" I have tested it on zcu100 with usb stick, usb to ethernet converter and also dfu.

Enhancements:
- use separate Kconfig option for DM USB Periphal and DM USB Host. This allow platforms to keep their non-DM USB peripheral code and use the DM USB host.
- fixes the bind/probe confusion in dwc3_generic. The probe is done when the USB device is first needed.
- handles PHYs when in the peripheral mode. The code to handle the PHYs is shared with the host side
- handles clock and reset
- bind host controller to the more generic driver 'xhci-dwc3'

Quoted 9 lines

Changes in v3:
- fixes bug dwc3_setup_phy(): the phy arrays wasn't returned. This was visible only when the device is removed.
- Stub the DWC3 PHY operations if CONFIG_IS_ENABLED(PHY) is false. This fixes all build issues but one (evb-rk3328).
- Fix build issue with evb-rk3328 by enabling CONFIG_USB_DWC3. This has little impact on the footprint and should not break the runtime as the xhci-rockchip driver has its own probe function. Nevertheless this was !!! NOT TESTED !!! by lack of hw

Can somebody test this patch set on rk3328 and provide Tested-by tag?

Quoted 37 lines

Changes in v2:
- Updated commit log
- Fixed typo in thordown.c
- select DM_USB_DEV by default for zynqmp platforms

Jean-Jacques Hiblot (8):
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
configs: evb-rk3328: Enable CONFIG_USB_DWC3
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 +-
 configs/evb-rk3328_defconfig      |   1 +
 drivers/usb/Kconfig               |   6 ++
 drivers/usb/dwc3/Kconfig          |   7 +-
 drivers/usb/dwc3/core.c           |  89 +++++++++++++++-
 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      |  95 ++---------------
include/dwc3-uboot.h              |  19 ++++
include/linux/usb/gadget.h        |  18 ++++ 18 files changed, 367
Quoted 2 lines

insertions(+), 186 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/20180925/79b10720/attachment.sig>

#10 lore raw

v3 cover Improvements for the dwc3_generic driver

Quoted 37 lines · On Tue, 25 Sep 2018 13:28:14 +0200 Lukasz Majewski <[email protected]> wrote:

Dear All,

Quoted 25 lines

This series aims at bringing improvements to the dwc3_generic driver so that it can be used by most of the platforms using the dwc3 controller.

I tested this on with DRA7 and AM57x platforms for both Peripheral and Host operations. The code to enable DM USB host & dev support for those platforms will be submitted in a separate series.

Michal Simek has tested this series:
" I have tested it on zcu100 with usb stick, usb to ethernet converter and also dfu.

Enhancements:
- use separate Kconfig option for DM USB Periphal and DM USB Host. This allow platforms to keep their non-DM USB peripheral code and use the DM USB host.
- fixes the bind/probe confusion in dwc3_generic. The probe is done when the USB device is first needed.
- handles PHYs when in the peripheral mode. The code to handle the PHYs is shared with the host side
- handles clock and reset
- bind host controller to the more generic driver 'xhci-dwc3'

Quoted 9 lines

Changes in v3:
- fixes bug dwc3_setup_phy(): the phy arrays wasn't returned. This was visible only when the device is removed.
- Stub the DWC3 PHY operations if CONFIG_IS_ENABLED(PHY) is false. This fixes all build issues but one (evb-rk3328).
- Fix build issue with evb-rk3328 by enabling CONFIG_USB_DWC3. This has little impact on the footprint and should not break the runtime as the xhci-rockchip driver has its own probe function. Nevertheless this was !!! NOT TESTED !!! by lack of hw

Quoted 1 line

Can somebody test this patch set on rk3328 and provide Tested-by tag?

Anyone could test this patch series?

Thanks in advance :-)

Quoted 46 lines
Quoted 38 lines

Changes in v2:
- Updated commit log
- Fixed typo in thordown.c
- select DM_USB_DEV by default for zynqmp platforms

Jean-Jacques Hiblot (8):
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
configs: evb-rk3328: Enable CONFIG_USB_DWC3
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 +-
 configs/evb-rk3328_defconfig      |   1 +
 drivers/usb/Kconfig               |   6 ++
 drivers/usb/dwc3/Kconfig          |   7 +-
 drivers/usb/dwc3/core.c           |  89 +++++++++++++++-
 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      |  95 ++---------------
include/dwc3-uboot.h              |  19 ++++
include/linux/usb/gadget.h        |  18 ++++ 18 files changed, 367
Quoted 2 lines

insertions(+), 186 deletions(-)

Best regards,

Quoted 7 lines

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/20181001/45474b43/attachment.sig>

#11 lore raw

v3 cover Improvements for the dwc3_generic driver

Kever,

Could you test this?
I assume you have the board, as the evb-rk3328 has you listed as a maintainer...

Thanks,
Philipp.

Quoted 114 lines · Lukasz Majewski
Quoted 37 lines · On Tue, 25 Sep 2018 13:28:14 +0200 Lukasz Majewski <lukma at denx.de…

Dear All,

Quoted 25 lines

This series aims at bringing improvements to the dwc3_generic driver so that it can be used by most of the platforms using the dwc3 controller.

I tested this on with DRA7 and AM57x platforms for both Peripheral and Host operations. The code to enable DM USB host & dev support for those platforms will be submitted in a separate series.

Michal Simek has tested this series:
" I have tested it on zcu100 with usb stick, usb to ethernet converter and also dfu.

Enhancements:
- use separate Kconfig option for DM USB Periphal and DM USB Host. This allow platforms to keep their non-DM USB peripheral code and use the DM USB host.
- fixes the bind/probe confusion in dwc3_generic. The probe is done when the USB device is first needed.
- handles PHYs when in the peripheral mode. The code to handle the PHYs is shared with the host side
- handles clock and reset
- bind host controller to the more generic driver 'xhci-dwc3'

Quoted 9 lines

Changes in v3:
- fixes bug dwc3_setup_phy(): the phy arrays wasn't returned. This was visible only when the device is removed.
- Stub the DWC3 PHY operations if CONFIG_IS_ENABLED(PHY) is false. This fixes all build issues but one (evb-rk3328).
- Fix build issue with evb-rk3328 by enabling CONFIG_USB_DWC3. This has little impact on the footprint and should not break the runtime as the xhci-rockchip driver has its own probe function. Nevertheless this was !!! NOT TESTED !!! by lack of hw

Quoted 1 line

Can somebody test this patch set on rk3328 and provide Tested-by tag?

Anyone could test this patch series?

Thanks in advance :-)

Quoted 46 lines
Quoted 38 lines

Changes in v2:
- Updated commit log
- Fixed typo in thordown.c
- select DM_USB_DEV by default for zynqmp platforms

Jean-Jacques Hiblot (8):
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
configs: evb-rk3328: Enable CONFIG_USB_DWC3
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 +-
configs/evb-rk3328_defconfig      |   1 +
drivers/usb/Kconfig               |   6 ++
drivers/usb/dwc3/Kconfig          |   7 +-
drivers/usb/dwc3/core.c           |  89 +++++++++++++++-
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      |  95 ++---------------
include/dwc3-uboot.h              |  19 ++++
include/linux/usb/gadget.h        |  18 ++++ 18 files changed, 367
Quoted 2 lines

insertions(+), 186 deletions(-)

Best regards,

Quoted 7 lines

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 <mailto:[email protected]>

#12 lore raw

v3 cover Improvements for the dwc3_generic driver

Hi Philipp,

Quoted 5 lines · Philipp Tomsich

Kever,

Could you test this?
I assume you have the board, as the evb-rk3328 has you listed as a maintainer...

Sure, I can do it.
Sorry for reply late, I just come back to work from Chinese National Day holiday.

Thanks,
- Kever

Quoted 123 lines

Thanks,
Philipp.

Quoted 118 lines

On 01.10.2018, at 14:51, Lukasz Majewski <[email protected] <mailto:[email protected]>> wrote:

Quoted 38 lines · On Tue, 25 Sep 2018 13:28:14 +0200 Lukasz Majewski <lukma at denx.de…

Dear All,

Quoted 26 lines

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.

<mailto:[email protected]>>"

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'

Quoted 9 lines

Changes in v3:
- fixes bug dwc3_setup_phy(): the phy arrays wasn't returned. This was visible only when the device is removed.
- Stub the DWC3 PHY operations if CONFIG_IS_ENABLED(PHY) is false. This fixes all build issues but one (evb-rk3328).
- Fix build issue with evb-rk3328 by enabling CONFIG_USB_DWC3. This has little impact on the footprint and should not break the runtime as the xhci-rockchip driver has its own probe function. Nevertheless this was !!! NOT TESTED !!! by lack of hw

Quoted 1 line

Can somebody test this patch set on rk3328 and provide Tested-by tag?

Anyone could test this patch series?

Thanks in advance :-)

Quoted 46 lines
Quoted 31 lines

Changes in v2:
- Updated commit log
- Fixed typo in thordown.c
- select DM_USB_DEV by default for zynqmp platforms

Jean-Jacques Hiblot (8):
 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
 configs: evb-rk3328: Enable CONFIG_USB_DWC3
 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 +- configs/evb-rk3328_defconfig      |   1 + drivers/usb/Kconfig               |   6 ++ drivers/usb/dwc3/Kconfig          |   7 +- drivers/usb/dwc3/core.c           |  89 +++++++++++++++- drivers/usb/dwc3/dwc3-generic.c   | 207

Quoted 9 lines

+++++++++++++++++++++++++++++---------
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      |  95 ++--------------- include/dwc3-uboot.h              |  19 ++++ include/linux/usb/gadget.h        |  18 ++++ 18 files changed, 367 insertions(+), 186 deletions(-)

Best regards,

Quoted 8 lines

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 <mailto:[email protected]>

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 <mailto:[email protected]>

#13 lore raw

v3 cover Improvements for the dwc3_generic driver

Hi Kever,

have you been able to run the tests on evb-rk3328 ?

Thanks,

JJ

Quoted 141 lines · Kever Yang

Hi Philipp,

Quoted 5 lines · Philipp Tomsich

Kever,

Could you test this?
I assume you have the board, as the evb-rk3328 has you listed as a maintainer...

Sure, I can do it.
Sorry for reply late, I just come back to work from Chinese National Day holiday.

Thanks,
- Kever

Quoted 123 lines

Thanks,
Philipp.

Quoted 118 lines

On 01.10.2018, at 14:51, Lukasz Majewski <[email protected] <mailto:[email protected]>> wrote:

Quoted 38 lines · On Tue, 25 Sep 2018 13:28:14 +0200 Lukasz Majewski <lukma at denx.de…

Dear All,

Quoted 26 lines

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.

<mailto:[email protected]>>"

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'

Quoted 9 lines

Changes in v3:
- fixes bug dwc3_setup_phy(): the phy arrays wasn't returned. This was visible only when the device is removed.
- Stub the DWC3 PHY operations if CONFIG_IS_ENABLED(PHY) is false. This fixes all build issues but one (evb-rk3328).
- Fix build issue with evb-rk3328 by enabling CONFIG_USB_DWC3. This has little impact on the footprint and should not break the runtime as the xhci-rockchip driver has its own probe function. Nevertheless this was !!! NOT TESTED !!! by lack of hw

Quoted 1 line

Can somebody test this patch set on rk3328 and provide Tested-by tag?

Anyone could test this patch series?

Thanks in advance :-)

Quoted 46 lines
Quoted 31 lines

Changes in v2:
- Updated commit log
- Fixed typo in thordown.c
- select DM_USB_DEV by default for zynqmp platforms

Jean-Jacques Hiblot (8):
 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
 configs: evb-rk3328: Enable CONFIG_USB_DWC3
 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 +- configs/evb-rk3328_defconfig      |   1 + drivers/usb/Kconfig               |   6 ++ drivers/usb/dwc3/Kconfig          |   7 +- drivers/usb/dwc3/core.c           |  89 +++++++++++++++- drivers/usb/dwc3/dwc3-generic.c   | 207

Quoted 9 lines

+++++++++++++++++++++++++++++---------
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      |  95 ++--------------- include/dwc3-uboot.h              |  19 ++++ include/linux/usb/gadget.h        |  18 ++++ 18 files changed, 367 insertions(+), 186 deletions(-)

Best regards,

Quoted 8 lines

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 <mailto:[email protected]>

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 <mailto:[email protected]>

#14 lore raw

v3 cover Improvements for the dwc3_generic driver

In reply to Jean-Jacques Hiblot
Quoted 4 lines · Jean-Jacques Hiblot

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.

Quoted 9 lines

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.

I tested this series of patches on Khadas VIM as well as Libretech-cc
board and it resolved this issue ("USB0: "Synchronous Abort" handler,
esr 0x96000210") I had on both cards (I think on all s905x Amlogic SBC)!

Quoted 59 lines

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 v3:
- fixes bug dwc3_setup_phy(): the phy arrays wasn't returned. This was visible only when the device is removed.
- Stub the DWC3 PHY operations if CONFIG_IS_ENABLED(PHY) is false. This fixes all build issues but one (evb-rk3328).
- Fix build issue with evb-rk3328 by enabling CONFIG_USB_DWC3. This has little impact on the footprint and should not break the runtime as the xhci-rockchip driver has its own probe function. Nevertheless this was !!! NOT TESTED !!! by lack of hw

Changes in v2:
- Updated commit log
- Fixed typo in thordown.c
- select DM_USB_DEV by default for zynqmp platforms

Jean-Jacques Hiblot (8):
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
configs: evb-rk3328: Enable CONFIG_USB_DWC3
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 +-
 configs/evb-rk3328_defconfig      |   1 +
 drivers/usb/Kconfig               |   6 ++
 drivers/usb/dwc3/Kconfig          |   7 +-
 drivers/usb/dwc3/core.c           |  89 +++++++++++++++-
 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      |  95 ++---------------
 include/dwc3-uboot.h              |  19 ++++
 include/linux/usb/gadget.h        |  18 ++++
 18 files changed, 367 insertions(+), 186 deletions(-)
Signature · 15 lines
Loic Devulder <[email protected]> | ldevulder at irc
0x175A963893C85F55 | D220 DEF5 56A3 DE00 9DAA 78BA 175A 9638 93C8 5F55
Senior QA Engineer | Container & Storage Solutions Quality Assurance
team (qa-css)
SUSE LINUX GmbH, Maxfeldstr. 5, 90409 Nuernberg, Germany
GF: F. Imendörffer, J. Smithard, J. Guild, D. Upmanyu, G. Norton HRB,
21284 (AG Nuernberg)

-------------- next part --------------
A non-text attachment was scrubbed...
Name: signature.asc
Type: application/pgp-signature
Size: 488 bytes
Desc: OpenPGP digital signature
URL: <http://lists.denx.de/pipermail/u-boot/attachments/20181009/ef3f9a77/attachment.sig>
#15 lore raw

v3 cover Improvements for the dwc3_generic driver

Hi Lukasz,

gentle ping on the status on this series.

JJ

Quoted 79 lines · Loic Devulder
Quoted 12 lines · Jean-Jacques Hiblot

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.

I tested this series of patches on Khadas VIM as well as Libretech-cc
board and it resolved this issue ("USB0: "Synchronous Abort" handler,
esr 0x96000210") I had on both cards (I think on all s905x Amlogic SBC)!

Quoted 59 lines

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 v3:
- fixes bug dwc3_setup_phy(): the phy arrays wasn't returned. This was visible only when the device is removed.
- Stub the DWC3 PHY operations if CONFIG_IS_ENABLED(PHY) is false. This fixes all build issues but one (evb-rk3328).
- Fix build issue with evb-rk3328 by enabling CONFIG_USB_DWC3. This has little impact on the footprint and should not break the runtime as the xhci-rockchip driver has its own probe function. Nevertheless this was !!! NOT TESTED !!! by lack of hw

Changes in v2:
- Updated commit log
- Fixed typo in thordown.c
- select DM_USB_DEV by default for zynqmp platforms

Jean-Jacques Hiblot (8):
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
configs: evb-rk3328: Enable CONFIG_USB_DWC3
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 +-
  configs/evb-rk3328_defconfig      |   1 +
  drivers/usb/Kconfig               |   6 ++
  drivers/usb/dwc3/Kconfig          |   7 +-
  drivers/usb/dwc3/core.c           |  89 +++++++++++++++-
  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      |  95 ++---------------
  include/dwc3-uboot.h              |  19 ++++
  include/linux/usb/gadget.h        |  18 ++++
  18 files changed, 367 insertions(+), 186 deletions(-)
#16 lore raw

v3 cover Improvements for the dwc3_generic driver

Hi Jean-Jacques,

Quoted 3 lines

Hi Lukasz,

gentle ping on the status on this series.

Do we have tested by from somebody from RockChip community?

Quoted 86 lines

JJ

Quoted 80 lines · Loic Devulder
Quoted 4 lines · Jean-Jacques Hiblot

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.

Quoted 9 lines

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.

I tested this series of patches on Khadas VIM as well as Libretech-cc board and it resolved this issue ("USB0:
"Synchronous Abort" handler, esr 0x96000210") I had on both cards (I think on all s905x Amlogic SBC)!

Quoted 59 lines

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 v3:
- fixes bug dwc3_setup_phy(): the phy arrays wasn't returned. This was visible only when the device is removed.
- Stub the DWC3 PHY operations if CONFIG_IS_ENABLED(PHY) is false. This fixes all build issues but one (evb-rk3328).
- Fix build issue with evb-rk3328 by enabling CONFIG_USB_DWC3. This has little impact on the footprint and should not break the runtime as the xhci-rockchip driver has its own probe function. Nevertheless this was !!! NOT TESTED !!! by lack of hw

Changes in v2:
- Updated commit log
- Fixed typo in thordown.c
- select DM_USB_DEV by default for zynqmp platforms

Jean-Jacques Hiblot (8):
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
configs: evb-rk3328: Enable CONFIG_USB_DWC3
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 +-
  configs/evb-rk3328_defconfig      |   1 +
  drivers/usb/Kconfig               |   6 ++
  drivers/usb/dwc3/Kconfig          |   7 +-
  drivers/usb/dwc3/core.c           |  89 +++++++++++++++-
  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      |  95 ++---------------
include/dwc3-uboot.h              |  19 ++++
include/linux/usb/gadget.h        |  18 ++++ 18 files changed, 367

insertions(+), 186 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/20181022/8491e11d/attachment.sig>

#17 lore raw

v3 cover Improvements for the dwc3_generic driver

Quoted 6 lines · Lukasz Majewski

Hi Jean-Jacques,

Quoted 3 lines

Hi Lukasz,

gentle ping on the status on this series.

Do we have tested by from somebody from RockChip community?

I haven't seen anything on the ML. I pinged Kever Yang earlier today about it.

JJ

Quoted 96 lines
Quoted 84 lines

JJ

Quoted 79 lines · Loic Devulder
Quoted 4 lines · Jean-Jacques Hiblot

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.

Quoted 9 lines

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.

I tested this series of patches on Khadas VIM as well as Libretech-cc board and it resolved this issue ("USB0:
"Synchronous Abort" handler, esr 0x96000210") I had on both cards (I think on all s905x Amlogic SBC)!

Quoted 59 lines

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 v3:
- fixes bug dwc3_setup_phy(): the phy arrays wasn't returned. This was visible only when the device is removed.
- Stub the DWC3 PHY operations if CONFIG_IS_ENABLED(PHY) is false. This fixes all build issues but one (evb-rk3328).
- Fix build issue with evb-rk3328 by enabling CONFIG_USB_DWC3. This has little impact on the footprint and should not break the runtime as the xhci-rockchip driver has its own probe function. Nevertheless this was !!! NOT TESTED !!! by lack of hw

Changes in v2:
- Updated commit log
- Fixed typo in thordown.c
- select DM_USB_DEV by default for zynqmp platforms

Jean-Jacques Hiblot (8):
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
configs: evb-rk3328: Enable CONFIG_USB_DWC3
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 +-
   configs/evb-rk3328_defconfig      |   1 +
   drivers/usb/Kconfig               |   6 ++
   drivers/usb/dwc3/Kconfig          |   7 +-
   drivers/usb/dwc3/core.c           |  89 +++++++++++++++-
   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      |  95 ++---------------
include/dwc3-uboot.h              |  19 ++++
include/linux/usb/gadget.h        |  18 ++++ 18 files changed, 367

insertions(+), 186 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

#18 lore raw

v3 cover Improvements for the dwc3_generic driver

Andy, Kerver, Lin,

could you give a try to this series on evb-rk3328 please ? This has been blocked for a long time already.

Thanks,

JJ

Quoted 113 lines · Jean-Jacques Hiblot
Quoted 6 lines · Lukasz Majewski

Hi Jean-Jacques,

Quoted 3 lines

Hi Lukasz,

gentle ping on the status on this series.

Do we have tested by from somebody from RockChip community?

I haven't seen anything on the ML. I pinged Kever Yang earlier today about it.

JJ

Quoted 86 lines
Quoted 83 lines

JJ

Quoted 78 lines · Loic Devulder
Quoted 4 lines · Jean-Jacques Hiblot

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.

Quoted 8 lines

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.

I tested this series of patches on Khadas VIM as well as Libretech-cc board and it resolved this issue ("USB0:
"Synchronous Abort" handler, esr 0x96000210") I had on both cards (I think on all s905x Amlogic SBC)!

Quoted 59 lines

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 v3:
- fixes bug dwc3_setup_phy(): the phy arrays wasn't returned. This was visible only when the device is removed.
- Stub the DWC3 PHY operations if CONFIG_IS_ENABLED(PHY) is false. This fixes all build issues but one (evb-rk3328).
- Fix build issue with evb-rk3328 by enabling CONFIG_USB_DWC3. This has little impact on the footprint and should not break the runtime as the xhci-rockchip driver has its own probe function. Nevertheless this was !!! NOT TESTED !!! by lack of hw

Changes in v2:
- Updated commit log
- Fixed typo in thordown.c
- select DM_USB_DEV by default for zynqmp platforms

Jean-Jacques Hiblot (8):
    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
    configs: evb-rk3328: Enable CONFIG_USB_DWC3
    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 +- configs/evb-rk3328_defconfig      |   1 + drivers/usb/Kconfig               |   6 ++ drivers/usb/dwc3/Kconfig          |   7 +- drivers/usb/dwc3/core.c           |  89 +++++++++++++++- 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      |  95 ++--------------- include/dwc3-uboot.h              |  19 ++++ include/linux/usb/gadget.h        |  18 ++++ 18 files changed, 367 insertions(+), 186 deletions(-)

Quoted 9 lines

Best regards,

Lukasz Majewski

Signature · 3 lines
DENX Software Engineering GmbH,      Managing Director: Wolfgang Denk
HRB 165235 Munich, Office: Kirchenstr.5, D-82194 Groebenzell, Germany
Phone: (+49)-8142-66989-10 Fax: (+49)-8142-66989-80 Email: wd at denx.de

_______________________________________________
U-Boot mailing list
U-Boot at lists.denx.de
https://lists.denx.de/listinfo/u-boot

#19 lore raw

v3 cover Improvements for the dwc3_generic driver

Dear All,

Quoted 4 lines

Andy, Kerver, Lin,

could you give a try to this series on evb-rk3328 please ? This has been blocked for a long time already.

Yes, agree. Could somebody (who has this SoC) test this patch set?

Thanks in advance,
Łukasz

Quoted 121 lines

Thanks,

JJ

Quoted 115 lines · Jean-Jacques Hiblot
Quoted 6 lines · Lukasz Majewski

Hi Jean-Jacques,

Quoted 3 lines

Hi Lukasz,

gentle ping on the status on this series.

Do we have tested by from somebody from RockChip community?

I haven't seen anything on the ML. I pinged Kever Yang earlier today about it.

JJ

Quoted 87 lines
Quoted 84 lines

JJ

Quoted 79 lines · Loic Devulder
Quoted 9 lines · Jean-Jacques Hiblot

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.

Quoted 4 lines

Michal Simek has tested this series:
" I have tested it on zcu100 with usb stick, usb to ethernet converter and also dfu.

I tested this series of patches on Khadas VIM as well as Libretech-cc board and it resolved this issue ("USB0:
"Synchronous Abort" handler, esr 0x96000210") I had on both cards (I think on all s905x Amlogic SBC)!

Quoted 59 lines

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 v3:
- fixes bug dwc3_setup_phy(): the phy arrays wasn't returned. This was visible only when the device is removed.
- Stub the DWC3 PHY operations if CONFIG_IS_ENABLED(PHY) is false. This fixes all build issues but one (evb-rk3328).
- Fix build issue with evb-rk3328 by enabling CONFIG_USB_DWC3. This has little impact on the footprint and should not break the runtime as the xhci-rockchip driver has its own probe function. Nevertheless this was !!! NOT TESTED !!! by lack of hw

Changes in v2:
- Updated commit log
- Fixed typo in thordown.c
- select DM_USB_DEV by default for zynqmp platforms

Jean-Jacques Hiblot (8):
    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
    configs: evb-rk3328: Enable CONFIG_USB_DWC3
    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 +- configs/evb-rk3328_defconfig      |   1 + drivers/usb/Kconfig               |   6 ++ drivers/usb/dwc3/Kconfig          |   7 +- drivers/usb/dwc3/core.c           |  89 +++++++++++++++- 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      |  95 ++--------------- include/dwc3-uboot.h              |  19 ++++ include/linux/usb/gadget.h        |  18 ++++ 18 files changed, 367 insertions(+), 186 deletions(-)

Quoted 10 lines

Best regards,

Lukasz Majewski

Signature · 4 lines
DENX Software Engineering GmbH,      Managing Director: Wolfgang
Denk HRB 165235 Munich, Office: Kirchenstr.5, D-82194 Groebenzell,
Germany Phone: (+49)-8142-66989-10 Fax: (+49)-8142-66989-80 Email:
wd at denx.de  

_______________________________________________
U-Boot mailing list
U-Boot at lists.denx.de
https://lists.denx.de/listinfo/u-boot

Best regards,

Lukasz Majewski

--

DENX Software Engineering GmbH, Managing Director: Wolfgang Denk
HRB 165235 Munich, Office: Kirchenstr.5, D-82194 Groebenzell, Germany
Phone: (+49)-8142-66989-10 Fax: (+49)-8142-66989-80 Email: wd at denx.de -------------- next part --------------
A non-text attachment was scrubbed...
Name: not available
Type: application/pgp-signature
Size: 488 bytes
Desc: OpenPGP digital signature
URL: <http://lists.denx.de/pipermail/u-boot/attachments/20181028/66769704/attachment.sig>

#20 lore raw

v3 cover Improvements for the dwc3_generic driver

Quoted 8 lines · Lukasz Majewski

Dear All,

Quoted 4 lines

Andy, Kerver, Lin,

could you give a try to this series on evb-rk3328 please ? This has been blocked for a long time already.

Yes, agree. Could somebody (who has this SoC) test this patch set?

TBH if there is no reaction after gentle asking you should queue these patches for next u-boot version. If this patchset breaks anybody they can fix in RC phase.

Thanks,
Michal

#21 lore raw

v3 cover Improvements for the dwc3_generic driver

Hi Michal,

Quoted 5 lines · Lukasz Majewski
Quoted 4 lines

Dear All,

Quoted 2 lines

Andy, Kerver, Lin,

Quoted 8 lines
Quoted 4 lines
Quoted 2 lines

could you give a try to this series on evb-rk3328 please ? This has been blocked for a long time already.

Yes, agree. Could somebody (who has this SoC) test this patch set?

TBH if there is no reaction after gentle asking you should queue these patches for next u-boot version. If this patchset breaks anybody they can fix in RC phase.

Yes, I do agree...

I've added Tom to CC so he would know the circumstances.

Quoted 3 lines

Thanks,
Michal

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/20181101/cf9060cf/attachment.sig>

#22 lore raw

v3 cover Improvements for the dwc3_generic driver

Quoted 12 lines · Lukasz Majewski

Hi Michal,

Quoted 10 lines · Lukasz Majewski
Quoted 8 lines

Dear All,

Quoted 4 lines

Andy, Kerver, Lin,

could you give a try to this series on evb-rk3328 please ? This has been blocked for a long time already.

Yes, agree. Could somebody (who has this SoC) test this patch set?

Quoted 7 lines
Quoted 3 lines

TBH if there is no reaction after gentle asking you should queue these patches for next u-boot version. If this patchset breaks anybody they can fix in RC phase.

Yes, I do agree...

I've added Tom to CC so he would know the circumstances.

So I should expect Marek to be pulling this in, post v2018.11 right? Thanks!

Signature · 8 lines
Tom
-------------- next part --------------
A non-text attachment was scrubbed...
Name: signature.asc
Type: application/pgp-signature
Size: 819 bytes
Desc: not available
URL: <http://lists.denx.de/pipermail/u-boot/attachments/20181101/1f8771aa/attachment.sig>
#23 lore raw

v3 cover Improvements for the dwc3_generic driver

Hi Tom,

Quoted 18 lines · Lukasz Majewski
Quoted 17 lines

Hi Michal,

Quoted 14 lines · Lukasz Majewski
Quoted 9 lines

Dear All,

Quoted 4 lines

Andy, Kerver, Lin,

could you give a try to this series on evb-rk3328 please ? This has been blocked for a long time already.

Yes, agree. Could somebody (who has this SoC) test this patch set?

TBH if there is no reaction after gentle asking you should queue these patches for next u-boot version. If this patchset breaks anybody they can fix in RC phase.

Quoted 5 lines
Quoted 3 lines

Yes, I do agree...

I've added Tom to CC so he would know the circumstances.

So I should expect Marek to be pulling this in, post v2018.11 right?

Yes, I will prepare PR to Marek, and he will send PR to you.

Quoted 1 line

Thanks!

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/20181101/1650dfcc/attachment.sig>

#24 lore raw

v3 cover Improvements for the dwc3_generic driver

Quoted 14 lines · Lukasz Majewski

Hi Tom,

Quoted 12 lines · Lukasz Majewski
Quoted 11 lines

Hi Michal,

Quoted 9 lines · Lukasz Majewski
Quoted 8 lines

Dear All,

Quoted 4 lines

Andy, Kerver, Lin,

could you give a try to this series on evb-rk3328 please ? This has been blocked for a long time already.

Yes, agree. Could somebody (who has this SoC) test this patch set?

Quoted 8 lines
Quoted 7 lines
Quoted 6 lines
Quoted 3 lines

TBH if there is no reaction after gentle asking you should queue these patches for next u-boot version. If this patchset breaks anybody they can fix in RC phase.

Yes, I do agree...

I've added Tom to CC so he would know the circumstances.

So I should expect Marek to be pulling this in, post v2018.11 right?

Yes, I will prepare PR to Marek, and he will send PR to you.

Thanks Lukasz

I hope it will hit the tree soon. I have a few other series ready that rely on this one.

JJ

Quoted 14 lines
Quoted 2 lines

Thanks!

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