Convert Xilinx ZynqMP to DM_USB with generic DWC3 glue logic driver
Subsystems (5)
v2 cover Convert Xilinx ZynqMP to DM_USB with generic DWC3 glue logic driver
Hi,
this patchset is based on unfinished series send to ML 06/13/2017 by Vignesh
"[U-Boot] [PATCH v2 00/13] driver model bring-up of dwc3 usb peripheral" We have taken some part of this to Xilinx tree and use it for a while but it is time to review it and upstream it.
The patchset has 2 patches created by Mugunthan which are a little bit fixed.
dwc3-generic driver was inspired by omap version.
And the last 3 patches just doing conversion and enable DM_USB for our platform.
Thanks,
Michal
Changes in v2:
- Retype dwc->dev in gadget.c to avoid compilation warning
- Guard udevice with __UBOOT__
- Move ifdef in core.c to avoid compilation issues for some platforms (for example edison)
- Change style to avoid correct but not nice indentation by using char *driver variable (suggested by Marek)
Michal Simek (4):
usb: dwc3: Add generic DWC3 glue logic driver
usb: xhci: zynqmp: Add support for DM_USB
arm64: zynqmp: Use DWC3 generic driver and DM_USB
usb: xhci: zynqmp: Remove support for !DM_USB
Mugunthan V N (2):
usb: dwc3: Add dwc3_init/remove with DM_USB
usb: common: add support to get maximum speed from dt
arch/arm/include/asm/arch-zynqmp/hardware.h | 3 - board/xilinx/zynqmp/zynqmp.c | 46 ----- .../xilinx_zynqmp_zc1751_xm015_dc1_defconfig | 1 + .../xilinx_zynqmp_zc1751_xm016_dc2_defconfig | 1 + .../xilinx_zynqmp_zc1751_xm017_dc3_defconfig | 1 + configs/xilinx_zynqmp_zcu100_revC_defconfig | 1 + configs/xilinx_zynqmp_zcu102_rev1_0_defconfig | 1 + configs/xilinx_zynqmp_zcu102_revA_defconfig | 1 + configs/xilinx_zynqmp_zcu102_revB_defconfig | 1 + configs/xilinx_zynqmp_zcu104_revA_defconfig | 1 + configs/xilinx_zynqmp_zcu104_revC_defconfig | 1 + configs/xilinx_zynqmp_zcu106_revA_defconfig | 1 + configs/xilinx_zynqmp_zcu111_revA_defconfig | 1 + drivers/usb/common/common.c | 29 ++++ drivers/usb/dwc3/Kconfig | 6 + drivers/usb/dwc3/Makefile | 1 + drivers/usb/dwc3/core.c | 55 ++++++ drivers/usb/dwc3/core.h | 6 + drivers/usb/dwc3/dwc3-generic.c | 157 ++++++++++++++++++ drivers/usb/dwc3/gadget.c | 2 +- drivers/usb/host/Kconfig | 1 + drivers/usb/host/xhci-zynqmp.c | 85 ++++++---- .../configs/xilinx_zynqmp_zc1751_xm015_dc1.h | 1 - .../configs/xilinx_zynqmp_zc1751_xm016_dc2.h | 2 - .../configs/xilinx_zynqmp_zc1751_xm017_dc3.h | 3 - include/configs/xilinx_zynqmp_zcu100.h | 3 - include/configs/xilinx_zynqmp_zcu102.h | 2 - include/configs/xilinx_zynqmp_zcu104.h | 2 - include/configs/xilinx_zynqmp_zcu106.h | 2 - include/configs/xilinx_zynqmp_zcu111.h | 2 - include/linux/usb/otg.h | 9 + scripts/config_whitelist.txt | 1 - 32 files changed, 330 insertions(+), 99 deletions(-) create mode 100644 drivers/usb/dwc3/dwc3-generic.c
Signature · 1 line
2.17.0
PATCH v2 1/6 usb: dwc3: Add dwc3_init/remove with DM_USB
From: Mugunthan V N <[email protected]>
The patch is preparing dwc3 core for enabling DM_USB with peripheral driver with using driver model support.
The driver will be bound by the DWC3 wrapper driver based on the dr_mode device tree entry.
(Remove dwc3-omap changes)
---
Changes in v2:
- Retype dwc->dev in gadget.c to avoid compilation warning
- Guard udevice with __UBOOT__
- Move ifdef in core.c to avoid compilation issues for some platforms (for example edison)
Origin series here: https://patchwork.ozlabs.org/patch/775108/
- Fix labels as was asked in previous review.
--- drivers/usb/dwc3/core.c | 55 +++++++++++++++++++++++++++++++++++++++ drivers/usb/dwc3/core.h | 6 +++++ drivers/usb/dwc3/gadget.c | 2 +- 3 files changed, 62 insertions(+), 1 deletion(-)
drivers/usb/dwc3/core.c +55 -0
@@ -788,3 +788,58 @@ MODULE_ALIAS("platform:dwc3");MODULE_AUTHOR ("Felipe Balbi <[email protected]>" );MODULE_LICENSE ("GPL v2" );MODULE_DESCRIPTION ("DesignWare USB3 DRD Controller Driver" ); + +#ifdef CONFIG_DM_USB + +int dwc3_init (struct dwc3 *dwc) +{ +int ret; + +dwc3_cache_hwparams (dwc); + + ret =dwc3_alloc_event_buffers (dwc,DWC3_EVENT_BUFFERS_SIZE ); +if (ret) { +dev_err (dwc->dev,"failed to allocate event buffers\n" ); +return -ENOMEM ; + } + + ret =dwc3_core_init (dwc); +if (ret) { +dev_err (dev,"failed to initialize core\n" ); + goto core_fail; + } + + ret =dwc3_event_buffers_setup (dwc); +if (ret) { +dev_err (dwc->dev,"failed to setup event buffers\n" ); + goto event_fail; + } + + ret =dwc3_core_init_mode (dwc); +if (ret) + goto mode_fail; + +return 0 ; + +mode_fail: +dwc3_event_buffers_cleanup (dwc); + +event_fail: +dwc3_core_exit (dwc); + +core_fail: +dwc3_free_event_buffers (dwc); + +return ret; +} + +void dwc3_remove (struct dwc3 *dwc) +{ +dwc3_core_exit_mode (dwc); +dwc3_event_buffers_cleanup (dwc); +dwc3_free_event_buffers (dwc); +dwc3_core_exit (dwc); +kfree (dwc->mem); +} + +#endif
drivers/usb/dwc3/core.h +6 -0
@@ -712,7 +712,11 @@ struct dwc3 {/* device lock */ spinlock_t lock; +#if defined(__UBOOT__) && defined(CONFIG_DM_USB ) +struct udevice *dev; +#else struct device *dev; +#endif struct platform_device *xhci;struct resource xhci_resources[DWC3_XHCI_RESOURCES_NUM ];
@@ -987,6 +991,8 @@ struct dwc3_gadget_ep_cmd_params {/* prototypes */ int dwc3_gadget_resize_tx_fifos (struct dwc3 *dwc); +int dwc3_init (struct dwc3 *dwc); +void dwc3_remove (struct dwc3 *dwc);#ifdef CONFIG_USB_DWC3_HOST int dwc3_host_init (struct dwc3 *dwc);
drivers/usb/dwc3/gadget.c +1 -1
@@ -2609,7 +2609,7 @@ int dwc3_gadget_init(struct dwc3 *dwc)if (ret) goto err4; - ret =usb_add_gadget_udc (dwc->dev, &dwc->gadget); + ret =usb_add_gadget_udc ((struct device *)dwc->dev, &dwc->gadget);if (ret) {dev_err (dwc->dev,"failed to register udc\n" ); goto err4;
Signature · 1 line
2.17.0
PATCH v2 1/6 usb: dwc3: Add dwc3_init/remove with DM_USB
Hi Michal,
I've been trying your series on DRA7 platforms. Thanks for the work.
I have a few comments though.
Quoted 33 lines · Michal Simek
From: Mugunthan V N <[email protected]>
The patch is preparing dwc3 core for enabling
DM_USBwith peripheral driver with using driver model support.
The driver will be bound by the DWC3 wrapper driver based on thedr_modedevice tree entry.Signed-off-by Mugunthan V N <[email protected]>(Remove dwc3-omap changes)
Signed-off-by Michal Simek <[email protected]>---
Changes in v2:
- Retypedwc->devingadget.cto avoid compilation warning
- Guard udevice with__UBOOT__
- Move ifdef incore.cto avoid compilation issues for some platforms (for example edison)Origin series here: https://patchwork.ozlabs.org/patch/775108/
- Fix labels as was asked in previous review.
--- drivers/usb/dwc3/core.c | 55 +++++++++++++++++++++++++++++++++++++++ drivers/usb/dwc3/core.h | 6 +++++ drivers/usb/dwc3/gadget.c | 2 +- 3 files changed, 62 insertions(+), 1 deletion(-)drivers/usb/dwc3/core.c +0
-0
drivers/usb/dwc3/core.c MODULE_ALIAS("platform:dwc3"); · line 792
Quoted 5 lines
drivers/usb/dwc3/core.c +2
-0@@ -788,3 +788,58 @@ MODULE_ALIAS("platform:dwc3");MODULE_AUTHOR ("Felipe Balbi <[email protected]>" );MODULE_LICENSE ("GPL v2" );MODULE_DESCRIPTION ("DesignWare USB3 DRD Controller Driver" ); + +#ifdef CONFIG_DM_USB
What about having a separate config for device ? like CONFIG_DM_USB_DEV. This would allow patforms to keep using non-DM USB device and DM USB hosts
Quoted 91 lines
drivers/usb/dwc3/core.c +53
-0+ +int dwc3_init (struct dwc3 *dwc) +{ +int ret; + +dwc3_cache_hwparams (dwc); + + ret =dwc3_alloc_event_buffers (dwc,DWC3_EVENT_BUFFERS_SIZE ); +if (ret) { +dev_err (dwc->dev,"failed to allocate event buffers\n" ); +return -ENOMEM ; + } + + ret =dwc3_core_init (dwc); +if (ret) { +dev_err (dev,"failed to initialize core\n" ); + goto core_fail; + } + + ret =dwc3_event_buffers_setup (dwc); +if (ret) { +dev_err (dwc->dev,"failed to setup event buffers\n" ); + goto event_fail; + } + + ret =dwc3_core_init_mode (dwc); +if (ret) + goto mode_fail; + +return 0 ; + +mode_fail: +dwc3_event_buffers_cleanup (dwc); + +event_fail: +dwc3_core_exit (dwc); + +core_fail: +dwc3_free_event_buffers (dwc); + +return ret; +} + +void dwc3_remove (struct dwc3 *dwc) +{ +dwc3_core_exit_mode (dwc); +dwc3_event_buffers_cleanup (dwc); +dwc3_free_event_buffers (dwc); +dwc3_core_exit (dwc); +kfree (dwc->mem); +} + +#endif drivers/usb/dwc3/core.h +6
-0@@ -712,7 +712,11 @@ struct dwc3 {/* device lock */ spinlock_t lock; +#if defined(__UBOOT__) && defined(CONFIG_DM_USB ) +struct udevice *dev; +#else struct device *dev; +#endif struct platform_device *xhci;struct resource xhci_resources[DWC3_XHCI_RESOURCES_NUM ];@@ -987,6 +991,8 @@ struct dwc3_gadget_ep_cmd_params {/* prototypes */ int dwc3_gadget_resize_tx_fifos (struct dwc3 *dwc); +int dwc3_init (struct dwc3 *dwc); +void dwc3_remove (struct dwc3 *dwc);#ifdef CONFIG_USB_DWC3_HOST int dwc3_host_init (struct dwc3 *dwc);drivers/usb/dwc3/gadget.c +1
-1@@ -2609,7 +2609,7 @@ int dwc3_gadget_init(struct dwc3 *dwc)if (ret) goto err4; - ret =usb_add_gadget_udc (dwc->dev, &dwc->gadget); + ret =usb_add_gadget_udc ((struct device *)dwc->dev, &dwc->gadget);if (ret) {dev_err (dwc->dev,"failed to register udc\n" ); goto err4;
PATCH v2 2/6 usb: common: add support to get maximum speed from dt
In reply to Michal SimekFrom: Mugunthan V N <[email protected]>
Add support to get maximum speed from dt so that usb drivers makes use of it for DT parsing.
(rebase and fix errors)
---
Changes in v2: None
drivers/usb/common/common.c | 29 +++++++++++++++++++++++++++++ include/linux/usb/otg.h | 9 +++++++++ 2 files changed, 38 insertions(+)
drivers/usb/common/common.c +29 -0
@@ -9,6 +9,7 @@#include <common.h> #include <linux/libfdt.h> #include <linux/usb/otg.h> +#include <linux/usb/ch9.h> DECLARE_GLOBAL_DATA_PTR ;
@@ -37,3 +38,31 @@ enum usb_dr_mode usb_get_dr_mode(int node)return USB_DR_MODE_UNKNOWN ; } + +static const char *const speed_names[] = { + [USB_SPEED_UNKNOWN ] ="UNKNOWN" , + [USB_SPEED_LOW ] ="low-speed" , + [USB_SPEED_FULL ] ="full-speed" , + [USB_SPEED_HIGH ] ="high-speed" , + [USB_SPEED_WIRELESS ] ="wireless" , + [USB_SPEED_SUPER ] ="super-speed" , +}; + +enum usb_device_speed usb_get_maximum_speed (int node) +{ +const void *fdt = gd->fdt_blob; +const char *max_speed; +int i; + + max_speed =fdt_getprop (fdt, node,"maximum-speed" ,NULL ); +if (!max_speed) { +pr_err ("usb maximum-speed not found\n" ); +return USB_SPEED_UNKNOWN ; + } + +for (i =0 ; i <ARRAY_SIZE (speed_names); i++) +if (!strcmp (max_speed, speed_names[i])) +return i; + +return USB_SPEED_UNKNOWN ; +}
include/linux/usb/otg.h +9 -0
@@ -25,4 +25,13 @@ enum usb_dr_mode {*/ enum usb_dr_mode usb_get_dr_mode (int node); +/** +* usb_get_maximum_speed() - Get maximum speed for given device +* @node: Node offset to the given device +* +* The function gets phy interface string from property 'maximum-speed', +* and returns the correspondig enum usb_device_speed +*/ +enum usb_device_speed usb_get_maximum_speed (int node); +#endif /* __LINUX_USB_OTG_H */
Signature · 1 line
2.17.0
PATCH v2 3/6 usb: dwc3: Add generic DWC3 glue logic driver
In reply to Michal SimekBy enabling BLK by default this is the next driver which needs to get support for DM_USB. Adding generic DWC3 glue logic which only parse nodes and read device mode. Based on it probe proper host/peripheral DWC3 drivers for it.
---
Changes in v2:
- Change style to avoid correct but not nice indentation by using char *driver variable (suggested by Marek)
drivers/usb/dwc3/Kconfig | 6 ++ drivers/usb/dwc3/Makefile | 1 + drivers/usb/dwc3/dwc3-generic.c | 157 ++++++++++++++++++++++++++++++++ 3 files changed, 164 insertions(+) create mode 100644 drivers/usb/dwc3/dwc3-generic.c
drivers/usb/dwc3/Kconfig +6 -0
@@ -37,6 +37,12 @@ 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 + help + Some platforms can reuse this DWC3 generic implementation. + config USB_DWC3_UNIPHIER bool "DesignWare USB3 Host Support on UniPhier Platforms" depends on ARCH_UNIPHIER && USB_XHCI_DWC3
drivers/usb/dwc3/Makefile +1 -0
@@ -7,6 +7,7 @@ dwc3-y := core.o obj-$(CONFIG_USB_DWC3_GADGET) += gadget.o ep0.o obj-$(CONFIG_USB_DWC3_OMAP) += dwc3-omap.o +obj-$(CONFIG_USB_DWC3_GENERIC) += dwc3-generic.o obj-$(CONFIG_USB_DWC3_UNIPHIER) += dwc3-uniphier.o obj-$(CONFIG_USB_DWC3_PHY_OMAP) += ti_usb_phy.o obj-$(CONFIG_USB_DWC3_PHY_SAMSUNG) += samsung_usb_phy.o
drivers/usb/dwc3/dwc3-generic.c new file +157 -0
157 lines not on this page · raw message
Signature · 1 line
2.17.0
PATCH v2 3/6 usb: dwc3: Add generic DWC3 glue logic driver
Quoted 129 lines · Michal Simek
By enabling BLK by default this is the next driver which needs to get support for
DM_USB. Adding generic DWC3 glue logic which only parse nodes and read device mode. Based on it probe proper host/peripheral DWC3 drivers for it.Signed-off-by Michal Simek <[email protected]>---
Changes in v2:
- Change style to avoid correct but not nice indentation by using char *driver variable (suggested by Marek)drivers/usb/dwc3/Kconfig | 6 ++ drivers/usb/dwc3/Makefile | 1 + drivers/usb/dwc3/dwc3-generic.c | 157 ++++++++++++++++++++++++++++++++ 3 files changed, 164 insertions(+)create mode 100644
drivers/usb/dwc3/dwc3-generic.cdrivers/usb/dwc3/Kconfig +6
-0@@ -37,6 +37,12 @@ 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 + help + Some platforms can reuse this DWC3 generic implementation. + config USB_DWC3_UNIPHIER bool "DesignWare USB3 Host Support on UniPhier Platforms" depends on ARCH_UNIPHIER && USB_XHCI_DWC3drivers/usb/dwc3/Makefile +1
-0@@ -7,6 +7,7 @@ dwc3-y := core.o obj-$(CONFIG_USB_DWC3_GADGET) += gadget.o ep0.o obj-$(CONFIG_USB_DWC3_OMAP) += dwc3-omap.o +obj-$(CONFIG_USB_DWC3_GENERIC) += dwc3-generic.o obj-$(CONFIG_USB_DWC3_UNIPHIER) += dwc3-uniphier.o obj-$(CONFIG_USB_DWC3_PHY_OMAP) += ti_usb_phy.o obj-$(CONFIG_USB_DWC3_PHY_SAMSUNG) += samsung_usb_phy.odrivers/usb/dwc3/dwc3-generic.c new file +76
-0@@ -0,0 +1,157 @@ +// SPDX-License-Identifier: GPL-2.0 +/* +* Generic DWC3 Glue layer +* +* Copyright (C) 2016 - 2018 Xilinx, Inc. +* +* Based on dwc3-omap.c. +*/ + +#include <common.h> +#include <dm.h> +#include <dm/device-internal.h> +#include <dm/lists.h> +#include <linux/usb/otg.h> +#include <linux/compat.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" + +DECLARE_GLOBAL_DATA_PTR ; + +int usb_gadget_handle_interrupts (int index) +{ +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); + +dwc3_gadget_uboot_handle_interrupt (priv); + +return 0 ; +} + +static int dwc3_generic_peripheral_probe (struct udevice *dev) +{ +struct dwc3 *priv =dev_get_priv (dev); + +return dwc3_init (priv); +} + +static int dwc3_generic_peripheral_remove (struct udevice *dev) +{ +struct dwc3 *priv =dev_get_priv (dev); + +dwc3_remove (priv); + +return 0 ; +} + +static int dwc3_generic_peripheral_ofdata_to_platdata (struct udevice *dev) +{ +struct dwc3 *priv =dev_get_priv (dev); +int node =dev_of_offset (dev); + + priv->regs = (void *)devfdt_get_addr (dev); + priv->regs +=DWC3_GLOBALS_REGS_START ; + + priv->maximum_speed =usb_get_maximum_speed (node); +if (priv->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 ) {
drivers/usb/dwc3/dwc3-generic.c line 86
Quoted 10 lines
drivers/usb/dwc3/dwc3-generic.c new file +10
-0+pr_err ("Invalid usb mode setup\n" ); +return -ENODEV ; + } + +return 0 ; +} + +static int dwc3_generic_peripheral_bind (struct udevice *dev) +{ +return device_probe (dev);
This is wrong place to probe the device.
What must be done is to probe the device when it is first used. I have a patch in progress for this. When it's cleaned up I'll share a repo so that you can have look and maybe pick it up.
Quoted 71 lines
drivers/usb/dwc3/dwc3-generic.c new file +71
-0+} + +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 , +}; + +static int dwc3_generic_bind (struct udevice *parent) +{ +const void *fdt = gd->fdt_blob; +int node; +int ret; + +for (node =fdt_first_subnode (fdt,dev_of_offset (parent)); node >0 ; + node =fdt_next_subnode (fdt, node)) { +const char *name =fdt_get_name (fdt, node,NULL ); +enum usb_dr_mode dr_mode; +struct udevice *dev; +const char *driver; + +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 : +debug ("%s: dr_mode: OTG or Peripheral\n" , __func__); + driver ="dwc3-generic-peripheral" ; +break ; +case USB_DR_MODE_HOST : +debug ("%s: dr_mode: HOST\n" , __func__); + driver ="dwc3-generic-host" ; +break ; +default : +debug ("%s: unsupported dr_mode\n" , __func__); +return -ENODEV ; + }; + + ret =device_bind_driver_to_node (parent, driver, name, +offset_to_ofnode (node), &dev); +if (ret) { +debug ("%s: not able to bind usb device mode\n" , + __func__); +return ret; + } + } + +return 0 ; +} + +static const struct udevice_id dwc3_generic_ids[] = { + { .compatible ="xlnx,zynqmp-dwc3" }, + { } +}; + +U_BOOT_DRIVER (dwc3_generic_wrapper) = { + .name ="dwc3-generic-wrapper" , + .id =UCLASS_MISC , + .of_match = dwc3_generic_ids, + .bind = dwc3_generic_bind, +};
PATCH v2 3/6 usb: dwc3: Add generic DWC3 glue logic driver
Quoted 137 lines · Jean-Jacques Hiblot
Quoted 134 lines · Michal Simek
By enabling BLK by default this is the next driver which needs to get support for
DM_USB. Adding generic DWC3 glue logic which only parse nodes and read device mode. Based on it probe proper host/peripheral DWC3 drivers for it.Signed-off-by Michal Simek <[email protected]>---
Changes in v2:
- Change style to avoid correct but not nice indentation by using char *driver variable (suggested by Marek)drivers/usb/dwc3/Kconfig | 6 ++ drivers/usb/dwc3/Makefile | 1 +
drivers/usb/dwc3/dwc3-generic.c| 157 ++++++++++++++++++++++++++++++++3 files changed, 164 insertions(+)create mode 100644
drivers/usb/dwc3/dwc3-generic.cdrivers/usb/dwc3/Kconfig +0
-0@@ -37,6 +37,12 @@ config USB_DWC3_OMAPSay 'Y' here if you have one such device +config
USB_DWC3_GENERIC
+ bool "Xilinx ZynqMP and similar Platforms"
+ depends onDM_USB&&USB_DWC3
+ help
+ Some platforms can reuse this DWC3 generic implementation. +
configUSB_DWC3_UNIPHIER
bool "DesignWare USB3 Host Support on UniPhier Platforms" depends onARCH_UNIPHIER&&USB_XHCI_DWC3drivers/usb/dwc3/Makefile +0
-0@@ -7,6 +7,7 @@ dwc3-y := core.oobj-$(CONFIG_USB_DWC3_GADGET) += gadget.o ep0.o obj-$(CONFIG_USB_DWC3_OMAP) += dwc3-omap.o +obj-$(CONFIG_USB_DWC3_GENERIC) += dwc3-generic.o obj-$(CONFIG_USB_DWC3_UNIPHIER) += dwc3-uniphier.o obj-$(CONFIG_USB_DWC3_PHY_OMAP) += ti_usb_phy.o obj-$(CONFIG_USB_DWC3_PHY_SAMSUNG) += samsung_usb_phy.o
drivers/usb/dwc3/dwc3-generic.c new file +61
-0@@ -0,0 +1,157 @@ +// SPDX-License-Identifier: GPL-2.0 +/* +* Generic DWC3 Glue layer +* +* Copyright (C) 2016 - 2018 Xilinx, Inc. +* +* Based on dwc3-omap.c. +*/ + +#include <common.h> +#include <dm.h> +#include <dm/device-internal.h> +#include <dm/lists.h> +#include <linux/usb/otg.h> +#include <linux/compat.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" + +DECLARE_GLOBAL_DATA_PTR ; + +int usb_gadget_handle_interrupts (int index) +{ + 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); + + dwc3_gadget_uboot_handle_interrupt(priv); + + return 0; +} + +static int dwc3_generic_peripheral_probe (struct udevice *dev) +{ + struct dwc3 *priv = dev_get_priv(dev); + + return dwc3_init(priv); +} + +static int dwc3_generic_peripheral_remove (struct udevice *dev) +{ + struct dwc3 *priv = dev_get_priv(dev); + + dwc3_remove(priv); + + return 0; +} + +static int dwc3_generic_peripheral_ofdata_to_platdata(struct udevice*dev)
drivers/usb/dwc3/dwc3-generic.c new file +21
-0+{ + struct dwc3 *priv = dev_get_priv(dev); + int node = dev_of_offset(dev); + + priv->regs = (void *)devfdt_get_addr(dev); + priv->regs += DWC3_GLOBALS_REGS_START; + + priv->maximum_speed = usb_get_maximum_speed(node); + if (priv->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) { + pr_err("Invalid usb mode setup\n"); + return -ENODEV; + } + + return 0; +}
Quoted 8 lines
drivers/usb/dwc3/dwc3-generic.c line 86
Quoted 4 lines
drivers/usb/dwc3/dwc3-generic.c new file +4
-0+ +static int dwc3_generic_peripheral_bind (struct udevice *dev) +{ + return device_probe(dev);This is wrong place to probe the device.
What must be done is to probe the device when it is first used. I have a patch in progress for this. When it's cleaned up I'll share a repo so that you can have look and maybe pick it up.
Well the series is already applied. I'll send the patch to ML in this case.
Quoted 77 lines
Quoted 62 lines
drivers/usb/dwc3/dwc3-generic.c new file +21
-0+} + +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, +}; + +static int dwc3_generic_bind (struct udevice *parent) +{ + const void *fdt = gd->fdt_blob; + int node; + int ret; + + for (node = fdt_first_subnode(fdt, dev_of_offset(parent)); nodeQuoted 1 line
0;
+ node =
fdt_next_subnode(fdt, node)) {
+ const char *name =fdt_get_name(fdt, node, NULL); + enumusb_dr_modedr_mode;
+ struct udevice *dev;
+ const char *driver;drivers/usb/dwc3/dwc3-generic.c new file +35
-0+ + 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: + debug("%s: dr_mode: OTG or Peripheral\n", __func__); + driver = "dwc3-generic-peripheral"; + break; + case USB_DR_MODE_HOST: + debug("%s: dr_mode: HOST\n", __func__); + driver = "dwc3-generic-host"; + break; + default: + debug("%s: unsupported dr_mode\n", __func__); + return -ENODEV; + }; + + ret = device_bind_driver_to_node(parent, driver, name, + offset_to_ofnode(node), &dev); + if (ret) { + debug("%s: not able to bind usb device mode\n", + __func__); + return ret; + } + } + + return 0; +} + +static const struct udevice_id dwc3_generic_ids[] = {drivers/usb/dwc3/dwc3-generic.c line 157
Quoted 10 lines
drivers/usb/dwc3/dwc3-generic.c new file +10
-0+ { .compatible = "xlnx,zynqmp-dwc3" }, + { } +}; + +U_BOOT_DRIVER (dwc3_generic_wrapper) = { + .name = "dwc3-generic-wrapper", + .id = UCLASS_MISC, + .of_match = dwc3_generic_ids, + .bind = dwc3_generic_bind, +};_______________________________________________
U-Boot mailing list
U-Boot at lists.denx.de
https://lists.denx.de/listinfo/u-boot
PATCH v2 3/6 usb: dwc3: Add generic DWC3 glue logic driver
Quoted 148 lines · Jean-Jacques Hiblot
Quoted 137 lines · Jean-Jacques Hiblot
Quoted 134 lines · Michal Simek
By enabling BLK by default this is the next driver which needs to get support for
DM_USB. Adding generic DWC3 glue logic which only parse nodes and read device mode. Based on it probe proper host/peripheral DWC3 drivers for it.Signed-off-by Michal Simek <[email protected]>---
Changes in v2:
- Change style to avoid correct but not nice indentation by using char *driver variable (suggested by Marek)drivers/usb/dwc3/Kconfig | 6 ++ drivers/usb/dwc3/Makefile | 1 +
drivers/usb/dwc3/dwc3-generic.c| 157 ++++++++++++++++++++++++++++++++3 files changed, 164 insertions(+)create mode 100644
drivers/usb/dwc3/dwc3-generic.cdrivers/usb/dwc3/Kconfig +0
-0@@ -37,6 +37,12 @@ config USB_DWC3_OMAPSay 'Y' here if you have one such device +config
USB_DWC3_GENERIC
+ bool "Xilinx ZynqMP and similar Platforms"
+ depends onDM_USB&&USB_DWC3
+ help
+ Some platforms can reuse this DWC3 generic implementation. +
configUSB_DWC3_UNIPHIER
bool "DesignWare USB3 Host Support on UniPhier Platforms" depends onARCH_UNIPHIER&&USB_XHCI_DWC3drivers/usb/dwc3/Makefile +0
-0@@ -7,6 +7,7 @@ dwc3-y := core.oobj-$(CONFIG_USB_DWC3_GADGET) += gadget.o ep0.o obj-$(CONFIG_USB_DWC3_OMAP) += dwc3-omap.o +obj-$(CONFIG_USB_DWC3_GENERIC) += dwc3-generic.o obj-$(CONFIG_USB_DWC3_UNIPHIER) += dwc3-uniphier.o obj-$(CONFIG_USB_DWC3_PHY_OMAP) += ti_usb_phy.o obj-$(CONFIG_USB_DWC3_PHY_SAMSUNG) += samsung_usb_phy.o
drivers/usb/dwc3/dwc3-generic.c new file +61
-0@@ -0,0 +1,157 @@ +// SPDX-License-Identifier: GPL-2.0 +/* +* Generic DWC3 Glue layer +* +* Copyright (C) 2016 - 2018 Xilinx, Inc. +* +* Based on dwc3-omap.c. +*/ + +#include <common.h> +#include <dm.h> +#include <dm/device-internal.h> +#include <dm/lists.h> +#include <linux/usb/otg.h> +#include <linux/compat.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" + +DECLARE_GLOBAL_DATA_PTR ; + +int usb_gadget_handle_interrupts (int index) +{ + 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); + + dwc3_gadget_uboot_handle_interrupt(priv); + + return 0; +} + +static int dwc3_generic_peripheral_probe (struct udevice *dev) +{ + struct dwc3 *priv = dev_get_priv(dev); + + return dwc3_init(priv); +} + +static int dwc3_generic_peripheral_remove (struct udevice *dev) +{ + struct dwc3 *priv = dev_get_priv(dev); + + dwc3_remove(priv); + + return 0; +} + +static int dwc3_generic_peripheral_ofdata_to_platdata(struct udevice*dev)
drivers/usb/dwc3/dwc3-generic.c new file +21
-0+{ + struct dwc3 *priv = dev_get_priv(dev); + int node = dev_of_offset(dev); + + priv->regs = (void *)devfdt_get_addr(dev); + priv->regs += DWC3_GLOBALS_REGS_START; + + priv->maximum_speed = usb_get_maximum_speed(node); + if (priv->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) { + pr_err("Invalid usb mode setup\n"); + return -ENODEV; + } + + return 0; +}Quoted 8 lines
drivers/usb/dwc3/dwc3-generic.c line 86
Quoted 4 lines
drivers/usb/dwc3/dwc3-generic.c new file +4
-0+ +static int dwc3_generic_peripheral_bind (struct udevice *dev) +{ + return device_probe(dev);This is wrong place to probe the device.
What must be done is to probe the device when it is first used. I have a patch in progress for this. When it's cleaned up I'll share a repo so that you can have look and maybe pick it up.
Quoted 1 line
Well the series is already applied. I'll send the patch to ML in this case.
Yes. Please cc me if you want to test something.
Thanks,
Michal
PATCH v2 4/6 usb: xhci: zynqmp: Add support for DM_USB
In reply to Michal SimekThe patch is adding support for DM_USB for xhci driver.
---
Changes in v2: None
drivers/usb/host/xhci-zynqmp.c | 69 ++++++++++++++++++++++++++++++++++ 1 file changed, 69 insertions(+)
drivers/usb/host/xhci-zynqmp.c +69 -0
@@ -10,6 +10,7 @@*/ #include <common.h> +#include <dm.h> #include <usb.h> #include <linux/errno.h> #include <asm/arch/hardware.h>
@@ -54,13 +55,23 @@#define USBOTGSS_IRQ_SET_1_DMADISABLECLR_EN BIT(17)struct zynqmp_xhci { +#ifdef CONFIG_DM_USB +struct usb_platdata usb_plat; +#endif +struct xhci_ctrl ctrl;struct xhci_hccr *hcd;struct dwc3 *dwc3_reg; }; +#ifdef CONFIG_DM_USB +struct zynqmp_xhci_platdata { +fdt_addr_t hcd_base; +}; +#else static struct zynqmp_xhci zynqmp_xhci;unsigned long ctr_addr[] =CONFIG_ZYNQMP_XHCI_LIST ; +#endif static int zynqmp_xhci_core_init (struct zynqmp_xhci *zynqmp_xhci) {
@@ -78,6 +89,7 @@ static int zynqmp_xhci_core_init(struct zynqmp_xhci *zynqmp_xhci)return ret; } +#ifndef CONFIG_DM_USB int xhci_hcd_init (int index,struct xhci_hccr **hccr,struct xhci_hcor **hcor) {struct zynqmp_xhci *ctx = &zynqmp_xhci;
@@ -111,6 +123,7 @@ int xhci_hcd_init(int index, struct xhci_hccr **hccr, struct xhci_hcor **hcor) return ret; } +#endif void xhci_hcd_stop (int index) {
@@ -121,3 +134,59 @@ void xhci_hcd_stop(int index)return ; } + +#ifdef CONFIG_DM_USB +static int xhci_usb_probe (struct udevice *dev) +{ +struct zynqmp_xhci_platdata *plat =dev_get_platdata (dev); +struct zynqmp_xhci *ctx =dev_get_priv (dev); +struct xhci_hcor *hcor; +int ret; + + ctx->hcd = (struct xhci_hccr *)plat->hcd_base; + ctx->dwc3_reg = (struct dwc3 *)((char *)(ctx->hcd) +DWC3_REG_OFFSET ); + + ret =zynqmp_xhci_core_init (ctx); +if (ret) { +puts ("XHCI: failed to initialize controller\n" ); +return -EINVAL ; + } + + hcor = (struct xhci_hcor *)((ulong )ctx->hcd + +HC_LENGTH (xhci_readl (&ctx->hcd->cr_capbase))); + +return xhci_register (dev, ctx->hcd, hcor); +} + +static int xhci_usb_remove (struct udevice *dev) +{ +return xhci_deregister (dev); +} + +static int xhci_usb_ofdata_to_platdata (struct udevice *dev) +{ +struct zynqmp_xhci_platdata *plat =dev_get_platdata (dev); +const void *blob = gd->fdt_blob; + +/* Get the base address for XHCI controller from the device node */ + plat->hcd_base =fdtdec_get_addr (blob,dev_of_offset (dev),"reg" ); +if (plat->hcd_base ==FDT_ADDR_T_NONE ) { +debug ("Can't get the XHCI register base address\n" ); +return -ENXIO ; + } + +return 0 ; +} + +U_BOOT_DRIVER (dwc3_generic_host) = { + .name ="dwc3-generic-host" , + .id =UCLASS_USB , + .ofdata_to_platdata = xhci_usb_ofdata_to_platdata, + .probe = xhci_usb_probe, + .remove = xhci_usb_remove, + .ops = &xhci_usb_ops, + .platdata_auto_alloc_size =sizeof (struct zynqmp_xhci_platdata ), + .priv_auto_alloc_size =sizeof (struct zynqmp_xhci ), + .flags =DM_FLAG_ALLOC_PRIV_DMA , +}; +#endif
Signature · 1 line
2.17.0
PATCH v2 5/6 arm64: zynqmp: Use DWC3 generic driver and DM_USB
In reply to Michal SimekRemove harcoded XHCI lists and detect mode, speed based on DT.
Serial-changes: 2
- Remove also XHCI macros from hardware.h
- Remove additional new line in zcu106
---
Changes in v2: None
arch/arm/include/asm/arch-zynqmp/hardware.h | 3 -- board/xilinx/zynqmp/zynqmp.c | 46 ------------------- .../xilinx_zynqmp_zc1751_xm015_dc1_defconfig | 1 + .../xilinx_zynqmp_zc1751_xm016_dc2_defconfig | 1 + .../xilinx_zynqmp_zc1751_xm017_dc3_defconfig | 1 + configs/xilinx_zynqmp_zcu100_revC_defconfig | 1 + configs/xilinx_zynqmp_zcu102_rev1_0_defconfig | 1 + configs/xilinx_zynqmp_zcu102_revA_defconfig | 1 + configs/xilinx_zynqmp_zcu102_revB_defconfig | 1 + configs/xilinx_zynqmp_zcu104_revA_defconfig | 1 + configs/xilinx_zynqmp_zcu104_revC_defconfig | 1 + configs/xilinx_zynqmp_zcu106_revA_defconfig | 1 + configs/xilinx_zynqmp_zcu111_revA_defconfig | 1 + .../configs/xilinx_zynqmp_zc1751_xm015_dc1.h | 1 - .../configs/xilinx_zynqmp_zc1751_xm016_dc2.h | 2 - .../configs/xilinx_zynqmp_zc1751_xm017_dc3.h | 3 -- include/configs/xilinx_zynqmp_zcu100.h | 3 -- include/configs/xilinx_zynqmp_zcu102.h | 2 - include/configs/xilinx_zynqmp_zcu104.h | 2 - include/configs/xilinx_zynqmp_zcu106.h | 2 - include/configs/xilinx_zynqmp_zcu111.h | 2 - 21 files changed, 11 insertions(+), 66 deletions(-)
arch/arm/include/asm/arch-zynqmp/hardware.h +0 -3
@@ -17,9 +17,6 @@#define ARASAN_NAND_BASEADDR 0xFF100000 -#define ZYNQMP_USB0_XHCI_BASEADDR 0xFE200000 -#define ZYNQMP_USB1_XHCI_BASEADDR 0xFE300000 -#define ZYNQMP_TCM_BASE_ADDR 0xFFE00000#define ZYNQMP_TCM_SIZE 0x40000
board/xilinx/zynqmp/zynqmp.c +0 -46
49 lines not on this page · raw message
configs/xilinx_zynqmp_zc1751_xm015_dc1_defconfig +1 -0
@@ -83,6 +83,7 @@ CONFIG_USB_XHCI_DWC3=y CONFIG_USB_XHCI_ZYNQMP=y CONFIG_USB_DWC3=y CONFIG_USB_DWC3_GADGET=y +CONFIG_USB_DWC3_GENERIC=y CONFIG_USB_ULPI_VIEWPORT=y CONFIG_USB_ULPI=y CONFIG_USB_STORAGE=y
configs/xilinx_zynqmp_zc1751_xm016_dc2_defconfig +1 -0
@@ -79,6 +79,7 @@ CONFIG_USB_XHCI_DWC3=y CONFIG_USB_XHCI_ZYNQMP=y CONFIG_USB_DWC3=y CONFIG_USB_DWC3_GADGET=y +CONFIG_USB_DWC3_GENERIC=y CONFIG_USB_ULPI_VIEWPORT=y CONFIG_USB_ULPI=y CONFIG_USB_STORAGE=y
configs/xilinx_zynqmp_zc1751_xm017_dc3_defconfig +1 -0
@@ -75,6 +75,7 @@ CONFIG_USB_XHCI_DWC3=y CONFIG_USB_XHCI_ZYNQMP=y CONFIG_USB_DWC3=y CONFIG_USB_DWC3_GADGET=y +CONFIG_USB_DWC3_GENERIC=y CONFIG_USB_ULPI_VIEWPORT=y CONFIG_USB_ULPI=y CONFIG_USB_STORAGE=y
configs/xilinx_zynqmp_zcu100_revC_defconfig +1 -0
@@ -73,6 +73,7 @@ CONFIG_USB_XHCI_DWC3=y CONFIG_USB_XHCI_ZYNQMP=y CONFIG_USB_DWC3=y CONFIG_USB_DWC3_GADGET=y +CONFIG_USB_DWC3_GENERIC=y CONFIG_USB_ULPI_VIEWPORT=y CONFIG_USB_ULPI=y CONFIG_USB_STORAGE=y
configs/xilinx_zynqmp_zcu102_rev1_0_defconfig +1 -0
@@ -93,6 +93,7 @@ CONFIG_USB_XHCI_DWC3=y CONFIG_USB_XHCI_ZYNQMP=y CONFIG_USB_DWC3=y CONFIG_USB_DWC3_GADGET=y +CONFIG_USB_DWC3_GENERIC=y CONFIG_USB_ULPI_VIEWPORT=y CONFIG_USB_ULPI=y CONFIG_USB_STORAGE=y
configs/xilinx_zynqmp_zcu102_revA_defconfig +1 -0
@@ -91,6 +91,7 @@ CONFIG_USB_XHCI_DWC3=y CONFIG_USB_XHCI_ZYNQMP=y CONFIG_USB_DWC3=y CONFIG_USB_DWC3_GADGET=y +CONFIG_USB_DWC3_GENERIC=y CONFIG_USB_ULPI_VIEWPORT=y CONFIG_USB_ULPI=y CONFIG_USB_STORAGE=y
configs/xilinx_zynqmp_zcu102_revB_defconfig +1 -0
@@ -91,6 +91,7 @@ CONFIG_USB_XHCI_DWC3=y CONFIG_USB_XHCI_ZYNQMP=y CONFIG_USB_DWC3=y CONFIG_USB_DWC3_GADGET=y +CONFIG_USB_DWC3_GENERIC=y CONFIG_USB_ULPI_VIEWPORT=y CONFIG_USB_ULPI=y CONFIG_USB_STORAGE=y
configs/xilinx_zynqmp_zcu104_revA_defconfig +1 -0
@@ -84,6 +84,7 @@ CONFIG_USB_XHCI_DWC3=y CONFIG_USB_XHCI_ZYNQMP=y CONFIG_USB_DWC3=y CONFIG_USB_DWC3_GADGET=y +CONFIG_USB_DWC3_GENERIC=y CONFIG_USB_ULPI_VIEWPORT=y CONFIG_USB_ULPI=y CONFIG_USB_STORAGE=y
configs/xilinx_zynqmp_zcu104_revC_defconfig +1 -0
@@ -84,6 +84,7 @@ CONFIG_USB_XHCI_DWC3=y CONFIG_USB_XHCI_ZYNQMP=y CONFIG_USB_DWC3=y CONFIG_USB_DWC3_GADGET=y +CONFIG_USB_DWC3_GENERIC=y CONFIG_USB_ULPI_VIEWPORT=y CONFIG_USB_ULPI=y CONFIG_USB_STORAGE=y
configs/xilinx_zynqmp_zcu106_revA_defconfig +1 -0
@@ -90,6 +90,7 @@ CONFIG_USB_XHCI_DWC3=y CONFIG_USB_XHCI_ZYNQMP=y CONFIG_USB_DWC3=y CONFIG_USB_DWC3_GADGET=y +CONFIG_USB_DWC3_GENERIC=y CONFIG_USB_ULPI_VIEWPORT=y CONFIG_USB_ULPI=y CONFIG_USB_STORAGE=y
configs/xilinx_zynqmp_zcu111_revA_defconfig +1 -0
@@ -84,6 +84,7 @@ CONFIG_USB_XHCI_DWC3=y CONFIG_USB_XHCI_ZYNQMP=y CONFIG_USB_DWC3=y CONFIG_USB_DWC3_GADGET=y +CONFIG_USB_DWC3_GENERIC=y CONFIG_USB_ULPI_VIEWPORT=y CONFIG_USB_ULPI=y CONFIG_USB_STORAGE=y
include/configs/xilinx_zynqmp_zc1751_xm015_dc1.h +0 -1
@@ -11,7 +11,6 @@#define CONFIG_ZYNQ_SDHCI0 #define CONFIG_ZYNQ_SDHCI1 -#define CONFIG_ZYNQMP_XHCI_LIST {ZYNQMP_USB0_XHCI_BASEADDR}#include <configs/xilinx_zynqmp.h>
include/configs/xilinx_zynqmp_zc1751_xm016_dc2.h +0 -2
@@ -9,8 +9,6 @@#ifndef __CONFIG_ZYNQMP_ZC1751_XM016_DC2_H#define __CONFIG_ZYNQMP_ZC1751_XM016_DC2_H -#define CONFIG_ZYNQMP_XHCI_LIST {ZYNQMP_USB1_XHCI_BASEADDR} -#include <configs/xilinx_zynqmp.h> #endif /* __CONFIG_ZYNQMP_ZC1751_XM016_DC2_H */
include/configs/xilinx_zynqmp_zc1751_xm017_dc3.h +0 -3
@@ -11,9 +11,6 @@#define CONFIG_ZYNQ_SDHCI1 -#define CONFIG_ZYNQMP_XHCI_LIST {ZYNQMP_USB0_XHCI_BASEADDR, \ - ZYNQMP_USB1_XHCI_BASEADDR} -#include <configs/xilinx_zynqmp.h> #endif /* __CONFIG_ZYNQMP_ZC1751_XM017_DC3_H */
include/configs/xilinx_zynqmp_zcu100.h +0 -3
@@ -24,9 +24,6 @@ {0, {{I2C_MUX_PCA9548, 0x75, 7} } }, \ } -#define CONFIG_ZYNQMP_XHCI_LIST {ZYNQMP_USB0_XHCI_BASEADDR, \ - ZYNQMP_USB1_XHCI_BASEADDR} -#define CONFIG_USB_HOST_ETHER #define CONFIG_USB_ETHER_ASIX
include/configs/xilinx_zynqmp_zcu102.h +0 -2
@@ -35,8 +35,6 @@#define CONFIG_PCA953X -#define CONFIG_ZYNQMP_XHCI_LIST {ZYNQMP_USB0_XHCI_BASEADDR} -#define CONFIG_SYS_I2C_EEPROM_ADDR_LEN 1#define CONFIG_ZYNQ_EEPROM_BUS 5#define CONFIG_ZYNQ_GEM_EEPROM_ADDR 0x54
include/configs/xilinx_zynqmp_zcu104.h +0 -2
@@ -26,8 +26,6 @@#define CONFIG_PCA953X -#define CONFIG_ZYNQMP_XHCI_LIST {ZYNQMP_USB0_XHCI_BASEADDR} -#define CONFIG_SYS_I2C_EEPROM_ADDR_LEN 1#include <configs/xilinx_zynqmp.h>
include/configs/xilinx_zynqmp_zcu106.h +0 -2
@@ -35,8 +35,6 @@#define CONFIG_PCA953X -#define CONFIG_ZYNQMP_XHCI_LIST {ZYNQMP_USB0_XHCI_BASEADDR} -#define CONFIG_SYS_I2C_EEPROM_ADDR_LEN 1#define CONFIG_ZYNQ_EEPROM_BUS 5#define CONFIG_ZYNQ_GEM_EEPROM_ADDR 0x54
include/configs/xilinx_zynqmp_zcu111.h +0 -2
@@ -38,8 +38,6 @@#define CONFIG_PCA953X -#define CONFIG_ZYNQMP_XHCI_LIST {ZYNQMP_USB0_XHCI_BASEADDR} -#define CONFIG_SYS_I2C_EEPROM_ADDR_LEN 1#define CONFIG_ZYNQ_EEPROM_BUS 5#define CONFIG_ZYNQ_GEM_EEPROM_ADDR 0x54
Signature · 1 line
2.17.0
PATCH v2 6/6 usb: xhci: zynqmp: Remove support for !DM_USB
In reply to Michal SimekSwitch to DM_USB was done and there is no need to keep !DM_USB code in tree.
---
Changes in v2: None
drivers/usb/host/Kconfig | 1 + drivers/usb/host/xhci-zynqmp.c | 46 ---------------------------------- scripts/config_whitelist.txt | 1 - 3 files changed, 1 insertion(+), 47 deletions(-)
drivers/usb/host/Kconfig +1 -0
@@ -75,6 +75,7 @@ config USB_XHCI_STI config USB_XHCI_ZYNQMP bool "Support for Xilinx ZynqMP on-chip xHCI USB controller" depends on ARCH_ZYNQMP + depends on DM_USB help Enables support for the on-chip xHCI controller on Xilinx ZynqMP SoCs.
drivers/usb/host/xhci-zynqmp.c +0 -46
76 lines not on this page · raw message
scripts/config_whitelist.txt +0 -1
@@ -4782,7 +4782,6 @@ CONFIG_ZLIB CONFIG_ZLT CONFIG_ZM7300 CONFIG_ZYNQMP_EEPROM -CONFIG_ZYNQMP_XHCI_LIST CONFIG_ZYNQ_EEPROM CONFIG_ZYNQ_EEPROM_BUS CONFIG_ZYNQ_GEM_EEPROM_ADDR
Signature · 1 line
2.17.0
Marek Vasut
Appliedv2 cover Convert Xilinx ZynqMP to DM_USB with generic DWC3 glue logic driver
In reply to Michal SimekQuoted 8 lines · Michal Simek
Hi,
this patchset is based on unfinished series send to ML 06/13/2017 by Vignesh
"[U-Boot] [PATCH v2 00/13] driver model bring-up of dwc3 usb peripheral" We have taken some part of this to Xilinx tree and use it for a while but it is time to review it and upstream it.
Quoted 5 lines
The patchset has 2 patches created by Mugunthan which are a little bit fixed.
dwc3-generic driver was inspired by omap version.
And the last 3 patches just doing conversion and enableDM_USBfor our platform.
Applied, although 4/6 had some git am problems with headers.
Signature · 2 lines
Best regards, Marek Vasut