* [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 related [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 related [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 related [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 related [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 related [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 related [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 related [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.