[U-Boot] [PATCH v7 00/11] [RESEND] Add support for DM_USB and DM_USB_DEV for TI's DRA7 EVMs and AM57 EVMs platforms.

Resending this series after rebasing on top of latest u-boot. This series applies on top of the series "[PATCH v3 0/7] Improvements for the dwc3_generic driver"
Moving to DM_USB and DM_USB_DEV brings some benefits: - it is required to support DM_ETH and USB network adapters with the same binary. - support for USB3 on AM57x comes almost for free - removal of platform code related to USB
Tested on: - dra76 evm - AM572 evm
Changes in v7: - replace remaining if() statements with ut_assert() - Fix build issue "multiple definition of `usb_gadget_handle_interrupts'" - Fixed build issue "multiple definition of `usb_gadget_handle_interrupts'"
Changes in v6: - ti-pipe3-phy: take PLL out of IDLE in pipe3_init(). The PLL may have been put into idle by pipe3_exit() - DRA7 configs: enable DM_USB and DM_USB_DEV. Use DWC3_GENERIC in place of DWC3_OF_SIMPLE. disable non DM USB options - AM57 configs: enable DM_USB and DM_USB_DEV. Use DWC3_GENERIC in place of DWC3_OF_SIMPLE. disable non DM USB options - Supports DM USB for peripherals - Removed DTS changes that disabled USB1 on DRA7 because DM_USB_DEV is now supported
Changes in v5: - Rebased on latest u-boot - Removed patches that have already been merged
Changes in v4: - Fix word missing in commit log - Remove dependency on MISC - Renamed the commit (DM_USB is already enabled, the only missing option is for the USB2 phy driver) - Remove dependency on MISC - Remove omap specific glue layer and use dwc3-of-simple glue layer
Changes in v3: - in syscon_regmap_lookup_by_phandle(), use dev_dbg() instead of printf() - added unit test for syscon_regmap_lookup_by_phandle()
Changes in v2: - Add USB3 support to ti-pipe3-phy driver - omap-usb2-phy: Implement power_on and power_off callbacks - am57xx boards: when DM_USB is used, turn on the required USB clocks - split dts changes in 2 commits: one for binding the children of ocp2scp@4a080000, and one to disable USB1 on all DRA7 EVMs - Enable DM_USB in am57xx_evm_defconfig. USB3 (super speed) is supported.
Jean-Jacques Hiblot (9): syscon: dm: Add a new method to get a regmap from DTS phy: Add a new driver for OMAP's USB2 PHYs dwc3-generic: Add support for the TI DWC3 glue board: ti: dra7xx-evm: turn on USB clocks in late init stage dts: dra7x: make ocp2scp@4a080000 compatible with simple-bus configs: enable DM_USB and DM_USB_DEV for all DRA7 platforms configs: am57xx_evm: Enable DM_USB and DM_USB_DEV board: ti: dra7-evm: remove USB platform code board: ti: am57xx: remove USB platform code
Vignesh R (2): phy: ti-pip3-phy: Add support for USB3 PHY board; ti: am57xx: turn on USB clocks
arch/arm/dts/omap5-u-boot.dtsi | 4 + arch/sandbox/dts/test.dts | 6 +- board/ti/am57xx/board.c | 106 ++++------------------ board/ti/dra7xx/evm.c | 123 ++++--------------------- configs/am57xx_evm_defconfig | 10 +- configs/am57xx_hs_evm_defconfig | 10 +- configs/dra7xx_evm_defconfig | 8 +- configs/dra7xx_hs_evm_defconfig | 8 +- drivers/core/syscon-uclass.c | 23 +++++ drivers/phy/Kconfig | 9 ++ drivers/phy/Makefile | 1 + drivers/phy/omap-usb2-phy.c | 196 ++++++++++++++++++++++++++++++++++++++++ drivers/phy/ti-pipe3-phy.c | 32 +++++-- drivers/usb/dwc3/dwc3-generic.c | 85 +++++++++++++++++ include/syscon.h | 13 +++ test/dm/syscon.c | 29 ++++++ 16 files changed, 448 insertions(+), 215 deletions(-) create mode 100644 drivers/phy/omap-usb2-phy.c

syscon_regmap_lookup_by_phandle() can be used to get the regmap of a syscon device from a reference in the DTS. It operates similarly to the linux version of the namesake function.
Signed-off-by: Jean-Jacques Hiblot jjhiblot@ti.com Reviewed-by: Simon Glass sjg@chromium.org
---
Changes in v7: - replace remaining if() statements with ut_assert()
Changes in v6: None Changes in v5: None Changes in v4: - Fix word missing in commit log
Changes in v3: - in syscon_regmap_lookup_by_phandle(), use dev_dbg() instead of printf() - added unit test for syscon_regmap_lookup_by_phandle()
Changes in v2: None
arch/sandbox/dts/test.dts | 6 ++++-- drivers/core/syscon-uclass.c | 23 +++++++++++++++++++++++ include/syscon.h | 13 +++++++++++++ test/dm/syscon.c | 29 +++++++++++++++++++++++++++++ 4 files changed, 69 insertions(+), 2 deletions(-)
diff --git a/arch/sandbox/dts/test.dts b/arch/sandbox/dts/test.dts index 024aa7c..c57f5b8 100644 --- a/arch/sandbox/dts/test.dts +++ b/arch/sandbox/dts/test.dts @@ -450,6 +450,8 @@
test4 { compatible = "denx,u-boot-probe-test"; + first-syscon = <&syscon0>; + second-sys-ctrl = <&another_system_controller>; }; };
@@ -530,12 +532,12 @@ }; };
- syscon@0 { + syscon0: syscon@0 { compatible = "sandbox,syscon0"; reg = <0x10 16>; };
- syscon@1 { + another_system_controller: syscon@1 { compatible = "sandbox,syscon1"; reg = <0x20 5 0x28 6 diff --git a/drivers/core/syscon-uclass.c b/drivers/core/syscon-uclass.c index 303e166..661cf61 100644 --- a/drivers/core/syscon-uclass.c +++ b/drivers/core/syscon-uclass.c @@ -53,6 +53,29 @@ static int syscon_pre_probe(struct udevice *dev) #endif }
+struct regmap *syscon_regmap_lookup_by_phandle(struct udevice *dev, + const char *name) +{ + struct udevice *syscon; + struct regmap *r; + int err; + + err = uclass_get_device_by_phandle(UCLASS_SYSCON, dev, + name, &syscon); + if (err) { + dev_dbg(dev, "unable to find syscon device\n"); + return ERR_PTR(err); + } + + r = syscon_get_regmap(syscon); + if (!r) { + dev_dbg(dev, "unable to find regmap\n"); + return ERR_PTR(-ENODEV); + } + + return r; +} + int syscon_get_by_driver_data(ulong driver_data, struct udevice **devp) { struct udevice *dev; diff --git a/include/syscon.h b/include/syscon.h index 2aa73e5..3df96e3 100644 --- a/include/syscon.h +++ b/include/syscon.h @@ -74,6 +74,19 @@ int syscon_get_by_driver_data(ulong driver_data, struct udevice **devp); struct regmap *syscon_get_regmap_by_driver_data(ulong driver_data);
/** + * syscon_regmap_lookup_by_phandle() - Look up a controller by a phandle + * + * This operates by looking up the given name in the device (device + * tree property) of the device using the system controller. + * + * @dev: Device using the system controller + * @name: Name of property referring to the system controller + * @return A pointer to the regmap if found, ERR_PTR(-ve) on error + */ +struct regmap *syscon_regmap_lookup_by_phandle(struct udevice *dev, + const char *name); + +/** * syscon_get_first_range() - get the first memory range from a syscon regmap * * @driver_data: Driver data value to look up diff --git a/test/dm/syscon.c b/test/dm/syscon.c index 77c7928..a294dda 100644 --- a/test/dm/syscon.c +++ b/test/dm/syscon.c @@ -6,6 +6,7 @@ #include <common.h> #include <dm.h> #include <syscon.h> +#include <regmap.h> #include <asm/test.h> #include <dm/test.h> #include <test/ut.h> @@ -43,3 +44,31 @@ static int dm_test_syscon_by_driver_data(struct unit_test_state *uts) return 0; } DM_TEST(dm_test_syscon_by_driver_data, DM_TESTF_SCAN_PDATA | DM_TESTF_SCAN_FDT); + +/* Test system controller by phandle */ +static int dm_test_syscon_by_phandle(struct unit_test_state *uts) +{ + struct udevice *dev; + struct regmap *map; + + ut_assertok(uclass_get_device_by_name(UCLASS_TEST_PROBE, "test4", + &dev)); + + ut_assertok_ptr(syscon_regmap_lookup_by_phandle(dev, "first-syscon")); + map = syscon_regmap_lookup_by_phandle(dev, "first-syscon"); + ut_assert(map); + ut_assert(!IS_ERR(map)); + ut_asserteq(1, map->range_count); + + ut_assertok_ptr(syscon_regmap_lookup_by_phandle(dev, + "second-sys-ctrl")); + map = syscon_regmap_lookup_by_phandle(dev, "second-sys-ctrl"); + ut_assert(map); + ut_assert(!IS_ERR(map)); + ut_asserteq(4, map->range_count); + + ut_assert(IS_ERR(syscon_regmap_lookup_by_phandle(dev, "not-present"))); + + return 0; +} +DM_TEST(dm_test_syscon_by_phandle, DM_TESTF_SCAN_PDATA | DM_TESTF_SCAN_FDT);

From: Vignesh R vigneshr@ti.com
Add support to handle USB3 PHYs present on AM57xx/DRA7xx SoCs. This is needed to move AM57xx to DM_USB.
Signed-off-by: Vignesh R vigneshr@ti.com
Signed-off-by: Jean-Jacques Hiblot jjhiblot@ti.com ---
Changes in v7: None Changes in v6: - ti-pipe3-phy: take PLL out of IDLE in pipe3_init(). The PLL may have been put into idle by pipe3_exit()
Changes in v5: None Changes in v4: None Changes in v3: None Changes in v2: - Add USB3 support to ti-pipe3-phy driver
drivers/phy/ti-pipe3-phy.c | 32 ++++++++++++++++++++++++-------- 1 file changed, 24 insertions(+), 8 deletions(-)
diff --git a/drivers/phy/ti-pipe3-phy.c b/drivers/phy/ti-pipe3-phy.c index b22bbaf..e7e78e3 100644 --- a/drivers/phy/ti-pipe3-phy.c +++ b/drivers/phy/ti-pipe3-phy.c @@ -141,7 +141,7 @@ static int omap_pipe3_dpll_program(struct omap_pipe3 *pipe3) omap_pipe3_writel(pipe3->pll_ctrl_base, PLL_CONFIGURATION1, val);
val = omap_pipe3_readl(pipe3->pll_ctrl_base, PLL_CONFIGURATION2); - val &= ~PLL_SELFREQDCO_MASK; + val &= ~(PLL_SELFREQDCO_MASK | PLL_IDLE); val |= dpll_params->freq << PLL_SELFREQDCO_SHIFT; omap_pipe3_writel(pipe3->pll_ctrl_base, PLL_CONFIGURATION2, val);
@@ -265,10 +265,13 @@ static int pipe3_exit(struct phy *phy) return -EBUSY; }
- val = readl(pipe3->pll_reset_reg); - writel(val | SATA_PLL_SOFT_RESET, pipe3->pll_reset_reg); - mdelay(1); - writel(val & ~SATA_PLL_SOFT_RESET, pipe3->pll_reset_reg); + if (pipe3->pll_reset_reg) { + val = readl(pipe3->pll_reset_reg); + writel(val | SATA_PLL_SOFT_RESET, pipe3->pll_reset_reg); + mdelay(1); + writel(val & ~SATA_PLL_SOFT_RESET, pipe3->pll_reset_reg); + } + return 0; }
@@ -331,9 +334,11 @@ static int pipe3_phy_probe(struct udevice *dev) if (!pipe3->power_reg) return -EINVAL;
- pipe3->pll_reset_reg = get_reg(dev, "syscon-pllreset"); - if (!pipe3->pll_reset_reg) - return -EINVAL; + if (device_is_compatible(dev, "ti,phy-pipe3-sata")) { + pipe3->pll_reset_reg = get_reg(dev, "syscon-pllreset"); + if (!pipe3->pll_reset_reg) + return -EINVAL; + }
pipe3->dpll_map = (struct pipe3_dpll_map *)dev_get_driver_data(dev);
@@ -350,8 +355,19 @@ static struct pipe3_dpll_map dpll_map_sata[] = { { }, /* Terminator */ };
+static struct pipe3_dpll_map dpll_map_usb[] = { + {12000000, {1250, 5, 4, 20, 0} }, /* 12 MHz */ + {16800000, {3125, 20, 4, 20, 0} }, /* 16.8 MHz */ + {19200000, {1172, 8, 4, 20, 65537} }, /* 19.2 MHz */ + {20000000, {1000, 7, 4, 10, 0} }, /* 20 MHz */ + {26000000, {1250, 12, 4, 20, 0} }, /* 26 MHz */ + {38400000, {3125, 47, 4, 20, 92843} }, /* 38.4 MHz */ + { }, /* Terminator */ +}; + static const struct udevice_id pipe3_phy_ids[] = { { .compatible = "ti,phy-pipe3-sata", .data = (ulong)&dpll_map_sata }, + { .compatible = "ti,omap-usb3", .data = (ulong)&dpll_map_usb}, { } };

This drivers supports the USB2 PHY found on omap5 and dra7 SOCs.
Signed-off-by: Jean-Jacques Hiblot jjhiblot@ti.com
---
Changes in v7: None Changes in v6: None Changes in v5: None Changes in v4: None Changes in v3: None Changes in v2: - omap-usb2-phy: Implement power_on and power_off callbacks
drivers/phy/Kconfig | 9 ++ drivers/phy/Makefile | 1 + drivers/phy/omap-usb2-phy.c | 196 ++++++++++++++++++++++++++++++++++++++++++++ 3 files changed, 206 insertions(+) create mode 100644 drivers/phy/omap-usb2-phy.c
diff --git a/drivers/phy/Kconfig b/drivers/phy/Kconfig index 14d82b9..3921e39 100644 --- a/drivers/phy/Kconfig +++ b/drivers/phy/Kconfig @@ -155,4 +155,13 @@ config MSM8916_USB_PHY
This PHY is found on qualcomm dragonboard410c development board.
+config OMAP_USB2_PHY + bool "Support OMAP's USB2 PHY" + depends on PHY + depends on SYSCON + help + Support for the OMAP's USB2 PHY. + + This PHY is found on OMAP devices supporting USB2. + endmenu diff --git a/drivers/phy/Makefile b/drivers/phy/Makefile index 8030d59..53dd5bd 100644 --- a/drivers/phy/Makefile +++ b/drivers/phy/Makefile @@ -17,3 +17,4 @@ obj-$(CONFIG_PHY_RCAR_GEN3) += phy-rcar-gen3.o obj-$(CONFIG_PHY_STM32_USBPHYC) += phy-stm32-usbphyc.o obj-$(CONFIG_MESON_GXL_USB_PHY) += meson-gxl-usb2.o meson-gxl-usb3.o obj-$(CONFIG_MSM8916_USB_PHY) += msm8916-usbh-phy.o +obj-$(CONFIG_OMAP_USB2_PHY) += omap-usb2-phy.o diff --git a/drivers/phy/omap-usb2-phy.c b/drivers/phy/omap-usb2-phy.c new file mode 100644 index 0000000..671539b --- /dev/null +++ b/drivers/phy/omap-usb2-phy.c @@ -0,0 +1,196 @@ +/* + * OMAP USB2 PHY LAYER + * Copyright (C) 2017 Texas Instruments Incorporated - http://www.ti.com/ + * Written by Jean-Jacques Hiblot jjhiblot@ti.com + * + * SPDX-License-Identifier: GPL-2.0+ + */ + +#include <common.h> +#include <asm/io.h> +#include <dm.h> +#include <errno.h> +#include <generic-phy.h> +#include <regmap.h> +#include <syscon.h> + +#define OMAP_USB2_CALIBRATE_FALSE_DISCONNECT BIT(0) + +#define OMAP_DEV_PHY_PD BIT(0) +#define OMAP_USB2_PHY_PD BIT(28) + +#define USB2PHY_DISCON_BYP_LATCH BIT(31) +#define USB2PHY_ANA_CONFIG1 (0x4c) + +DECLARE_GLOBAL_DATA_PTR; + +struct omap_usb2_phy { + struct regmap *pwr_regmap; + ulong flags; + void *phy_base; + u32 pwr_reg_offset; +}; + +struct usb_phy_data { + const char *label; + u8 flags; + u32 mask; + u32 power_on; + u32 power_off; +}; + +static const struct usb_phy_data omap5_usb2_data = { + .label = "omap5_usb2", + .flags = 0, + .mask = OMAP_DEV_PHY_PD, + .power_off = OMAP_DEV_PHY_PD, +}; + +static const struct usb_phy_data dra7x_usb2_data = { + .label = "dra7x_usb2", + .flags = OMAP_USB2_CALIBRATE_FALSE_DISCONNECT, + .mask = OMAP_DEV_PHY_PD, + .power_off = OMAP_DEV_PHY_PD, +}; + +static const struct usb_phy_data dra7x_usb2_phy2_data = { + .label = "dra7x_usb2_phy2", + .flags = OMAP_USB2_CALIBRATE_FALSE_DISCONNECT, + .mask = OMAP_USB2_PHY_PD, + .power_off = OMAP_USB2_PHY_PD, +}; + +static const struct udevice_id omap_usb2_id_table[] = { + { + .compatible = "ti,omap5-usb2", + .data = (ulong)&omap5_usb2_data, + }, + { + .compatible = "ti,dra7x-usb2", + .data = (ulong)&dra7x_usb2_data, + }, + { + .compatible = "ti,dra7x-usb2-phy2", + .data = (ulong)&dra7x_usb2_phy2_data, + }, + {}, +}; + +static int omap_usb_phy_power(struct phy *usb_phy, bool on) +{ + struct udevice *dev = usb_phy->dev; + const struct usb_phy_data *data; + const struct omap_usb2_phy *phy = dev_get_priv(dev); + u32 val; + int rc; + + data = (const struct usb_phy_data *)dev_get_driver_data(dev); + if (!data) + return -EINVAL; + + rc = regmap_read(phy->pwr_regmap, phy->pwr_reg_offset, &val); + if (rc) + return rc; + val &= ~data->mask; + if (on) + val |= data->power_on; + else + val |= data->power_off; + rc = regmap_write(phy->pwr_regmap, phy->pwr_reg_offset, val); + if (rc) + return rc; + + return 0; +} + +static int omap_usb2_phy_init(struct phy *usb_phy) +{ + struct udevice *dev = usb_phy->dev; + struct omap_usb2_phy *priv = dev_get_priv(dev); + u32 val; + + if (priv->flags & OMAP_USB2_CALIBRATE_FALSE_DISCONNECT) { + /* + * + * Reduce the sensitivity of internal PHY by enabling the + * DISCON_BYP_LATCH of the USB2PHY_ANA_CONFIG1 register. This + * resolves issues with certain devices which can otherwise + * be prone to false disconnects. + * + */ + val = readl(priv->phy_base + USB2PHY_ANA_CONFIG1); + val |= USB2PHY_DISCON_BYP_LATCH; + writel(val, priv->phy_base + USB2PHY_ANA_CONFIG1); + } + + return 0; +} + +static int omap_usb2_phy_power_on(struct phy *usb_phy) +{ + return omap_usb_phy_power(usb_phy, true); +} + +static int omap_usb2_phy_power_off(struct phy *usb_phy) +{ + return omap_usb_phy_power(usb_phy, false); +} + +static int omap_usb2_phy_exit(struct phy *usb_phy) +{ + return omap_usb_phy_power(usb_phy, false); +} + +struct phy_ops omap_usb2_phy_ops = { + .init = omap_usb2_phy_init, + .power_on = omap_usb2_phy_power_on, + .power_off = omap_usb2_phy_power_off, + .exit = omap_usb2_phy_exit, +}; + +int omap_usb2_phy_probe(struct udevice *dev) +{ + int rc; + struct regmap *regmap; + struct omap_usb2_phy *priv = dev_get_priv(dev); + const struct usb_phy_data *data; + u32 tmp[2]; + + data = (const struct usb_phy_data *)dev_get_driver_data(dev); + if (!data) + return -EINVAL; + + if (data->flags & OMAP_USB2_CALIBRATE_FALSE_DISCONNECT) { + u32 base = dev_read_addr(dev); + + if (base == FDT_ADDR_T_NONE) + return -EINVAL; + priv->phy_base = (void *)base; + priv->flags |= OMAP_USB2_CALIBRATE_FALSE_DISCONNECT; + } + + regmap = syscon_regmap_lookup_by_phandle(dev, "syscon-phy-power"); + if (IS_ERR(regmap)) { + printf("can't get regmap (err %ld)\n", PTR_ERR(regmap)); + return PTR_ERR(regmap); + } + priv->pwr_regmap = regmap; + + rc = dev_read_u32_array(dev, "syscon-phy-power", tmp, 2); + if (rc) { + printf("couldn't get power reg. offset (err %d)\n", rc); + return rc; + } + priv->pwr_reg_offset = tmp[1]; + + return 0; +} + +U_BOOT_DRIVER(omap_usb2_phy) = { + .name = "omap_usb2_phy", + .id = UCLASS_PHY, + .of_match = omap_usb2_id_table, + .probe = omap_usb2_phy_probe, + .ops = &omap_usb2_phy_ops, + .priv_auto_alloc_size = sizeof(struct omap_usb2_phy), +};

Signed-off-by: Jean-Jacques Hiblot jjhiblot@ti.com ---
Changes in v7: None Changes in v6: None Changes in v5: None Changes in v4: None Changes in v3: None Changes in v2: None
drivers/usb/dwc3/dwc3-generic.c | 85 +++++++++++++++++++++++++++++++++++++++++ 1 file changed, 85 insertions(+)
diff --git a/drivers/usb/dwc3/dwc3-generic.c b/drivers/usb/dwc3/dwc3-generic.c index 8f6c5a8..1a2f342 100644 --- a/drivers/usb/dwc3/dwc3-generic.c +++ b/drivers/usb/dwc3/dwc3-generic.c @@ -120,6 +120,90 @@ struct dwc3_glue_ops { enum usb_dr_mode mode); };
+void dwc3_ti_select_dr_mode(struct udevice *dev, int index, + enum usb_dr_mode mode) +{ +#define USBOTGSS_UTMI_OTG_STATUS 0x0084 +#define USBOTGSS_UTMI_OTG_OFFSET 0x0480 + +/* UTMI_OTG_STATUS REGISTER */ +#define USBOTGSS_UTMI_OTG_STATUS_SW_MODE BIT(31) +#define USBOTGSS_UTMI_OTG_STATUS_POWERPRESENT BIT(9) +#define USBOTGSS_UTMI_OTG_STATUS_TXBITSTUFFENABLE BIT(8) +#define USBOTGSS_UTMI_OTG_STATUS_IDDIG BIT(4) +#define USBOTGSS_UTMI_OTG_STATUS_SESSEND BIT(3) +#define USBOTGSS_UTMI_OTG_STATUS_SESSVALID BIT(2) +#define USBOTGSS_UTMI_OTG_STATUS_VBUSVALID BIT(1) +enum dwc3_omap_utmi_mode { + DWC3_OMAP_UTMI_MODE_UNKNOWN = 0, + DWC3_OMAP_UTMI_MODE_HW, + DWC3_OMAP_UTMI_MODE_SW, +}; + + u32 use_id_pin; + u32 host_mode; + u32 reg; + u32 utmi_mode; + u32 utmi_status_offset = USBOTGSS_UTMI_OTG_STATUS; + + struct dwc3_glue_data *glue = dev_get_platdata(dev); + void *base = map_physmem(glue->regs, 0x10000, MAP_NOCACHE); + + if (device_is_compatible(dev, "ti,am437x-dwc3")) + utmi_status_offset += USBOTGSS_UTMI_OTG_OFFSET; + + utmi_mode = dev_read_u32_default(dev, "utmi-mode", + DWC3_OMAP_UTMI_MODE_UNKNOWN); + if (utmi_mode != DWC3_OMAP_UTMI_MODE_HW) { + debug("%s: OTG is not supported. defaulting to PERIPHERAL\n", + dev->name); + mode = USB_DR_MODE_PERIPHERAL; + } + + switch (mode) { + case USB_DR_MODE_PERIPHERAL: + use_id_pin = 0; + host_mode = 0; + break; + case USB_DR_MODE_HOST: + use_id_pin = 0; + host_mode = 1; + break; + case USB_DR_MODE_OTG: + default: + use_id_pin = 1; + host_mode = 0; + break; + } + + reg = readl(base + utmi_status_offset); + + reg &= ~(USBOTGSS_UTMI_OTG_STATUS_SW_MODE); + if (!use_id_pin) + reg |= USBOTGSS_UTMI_OTG_STATUS_SW_MODE; + + writel(reg, base + utmi_status_offset); + + reg &= ~(USBOTGSS_UTMI_OTG_STATUS_SESSEND | + USBOTGSS_UTMI_OTG_STATUS_VBUSVALID | + USBOTGSS_UTMI_OTG_STATUS_IDDIG); + + reg |= USBOTGSS_UTMI_OTG_STATUS_SESSVALID | + USBOTGSS_UTMI_OTG_STATUS_POWERPRESENT; + + if (!host_mode) + reg |= USBOTGSS_UTMI_OTG_STATUS_IDDIG | + USBOTGSS_UTMI_OTG_STATUS_VBUSVALID; + + writel(reg, base + utmi_status_offset); + + unmap_physmem(base, MAP_NOCACHE); +} + +struct dwc3_glue_ops ti_ops = { + .select_dr_mode = dwc3_ti_select_dr_mode, +}; + static int dwc3_glue_bind(struct udevice *parent) { const void *fdt = gd->fdt_blob; @@ -259,6 +343,7 @@ static int dwc3_glue_remove(struct udevice *dev)
static const struct udevice_id dwc3_glue_ids[] = { { .compatible = "xlnx,zynqmp-dwc3" }, + { .compatible = "ti,dwc3", .data = (ulong)&ti_ops }, { } };

For USB ports that use the Driver Model, turn on the clocks during the late init stage.
Signed-off-by: Jean-Jacques Hiblot jjhiblot@ti.com Reviewed-by: Tom Rini trini@konsulko.com ---
Changes in v7: None Changes in v6: None Changes in v5: None Changes in v4: None Changes in v3: None Changes in v2: None
board/ti/dra7xx/evm.c | 19 +++++++++++++++++++ 1 file changed, 19 insertions(+)
diff --git a/board/ti/dra7xx/evm.c b/board/ti/dra7xx/evm.c index bbe5445..b46bda2 100644 --- a/board/ti/dra7xx/evm.c +++ b/board/ti/dra7xx/evm.c @@ -646,6 +646,19 @@ int dram_init_banksize(void) return 0; }
+#if CONFIG_IS_ENABLED(DM_USB) && CONFIG_IS_ENABLED(OF_CONTROL) +static int device_okay(const char *path) +{ + int node; + + node = fdt_path_offset(gd->fdt_blob, path); + if (node < 0) + return 0; + + return fdtdec_get_is_enabled(gd->fdt_blob, node); +} +#endif + int board_late_init(void) { #ifdef CONFIG_ENV_VARS_UBOOT_RUNTIME_CONFIG @@ -685,6 +698,12 @@ int board_late_init(void) if (board_is_dra71x_evm()) palmas_i2c_write_u8(LP873X_I2C_SLAVE_ADDR, 0x9, 0x7); #endif +#if CONFIG_IS_ENABLED(DM_USB) && CONFIG_IS_ENABLED(OF_CONTROL) + if (device_okay("/ocp/omap_dwc3_1@48880000")) + enable_usb_clocks(0); + if (device_okay("/ocp/omap_dwc3_2@488c0000")) + enable_usb_clocks(1); +#endif return 0; }

From: Vignesh R vigneshr@ti.com
Enable USB clocks in late init stage to support ports under DM_USB.
Signed-off-by: Vignesh R vigneshr@ti.com
Signed-off-by: Jean-Jacques Hiblot jjhiblot@ti.com ---
Changes in v7: None Changes in v6: None Changes in v5: None Changes in v4: None Changes in v3: None Changes in v2: - am57xx boards: when DM_USB is used, turn on the required USB clocks
board/ti/am57xx/board.c | 19 +++++++++++++++++++ 1 file changed, 19 insertions(+)
diff --git a/board/ti/am57xx/board.c b/board/ti/am57xx/board.c index 177a324..8c24d17 100644 --- a/board/ti/am57xx/board.c +++ b/board/ti/am57xx/board.c @@ -675,6 +675,19 @@ out: return; }
+#if CONFIG_IS_ENABLED(DM_USB) && CONFIG_IS_ENABLED(OF_CONTROL) +static int device_okay(const char *path) +{ + int node; + + node = fdt_path_offset(gd->fdt_blob, path); + if (node < 0) + return 0; + + return fdtdec_get_is_enabled(gd->fdt_blob, node); +} +#endif + int board_late_init(void) { setup_board_eeprom_env(); @@ -714,6 +727,12 @@ int board_late_init(void) board_ti_set_ethaddr(2); #endif
+#if CONFIG_IS_ENABLED(DM_USB) && CONFIG_IS_ENABLED(OF_CONTROL) + if (device_okay("/ocp/omap_dwc3_1@48880000")) + enable_usb_clocks(0); + if (device_okay("/ocp/omap_dwc3_2@488c0000")) + enable_usb_clocks(1); +#endif return 0; }

This is required when DM_USB is used, to bind the USB phys.
Signed-off-by: Jean-Jacques Hiblot jjhiblot@ti.com
---
Changes in v7: None Changes in v6: None Changes in v5: None Changes in v4: None Changes in v3: None Changes in v2: - split dts changes in 2 commits: one for binding the children of ocp2scp@4a080000, and one to disable USB1 on all DRA7 EVMs
arch/arm/dts/omap5-u-boot.dtsi | 4 ++++ 1 file changed, 4 insertions(+)
diff --git a/arch/arm/dts/omap5-u-boot.dtsi b/arch/arm/dts/omap5-u-boot.dtsi index bf2684c..a6a7801 100644 --- a/arch/arm/dts/omap5-u-boot.dtsi +++ b/arch/arm/dts/omap5-u-boot.dtsi @@ -15,6 +15,10 @@ ocp { u-boot,dm-spl;
+ ocp2scp@4a080000 { + compatible = "ti,omap-ocp2scp", "simple-bus"; + }; + ocp2scp@4a090000 { compatible = "ti,omap-ocp2scp", "simple-bus"; };

Signed-off-by: Jean-Jacques Hiblot jjhiblot@ti.com
---
Changes in v7: - Fix build issue "multiple definition of `usb_gadget_handle_interrupts'"
Changes in v6: - DRA7 configs: enable DM_USB and DM_USB_DEV. Use DWC3_GENERIC in place of DWC3_OF_SIMPLE. disable non DM USB options
Changes in v5: None Changes in v4: - Remove dependency on MISC - Renamed the commit (DM_USB is already enabled, the only missing option is for the USB2 phy driver)
Changes in v3: None Changes in v2: None
board/ti/dra7xx/evm.c | 3 ++- configs/dra7xx_evm_defconfig | 8 ++++---- configs/dra7xx_hs_evm_defconfig | 8 ++++---- 3 files changed, 10 insertions(+), 9 deletions(-)
diff --git a/board/ti/dra7xx/evm.c b/board/ti/dra7xx/evm.c index b46bda2..9f78adc 100644 --- a/board/ti/dra7xx/evm.c +++ b/board/ti/dra7xx/evm.c @@ -915,7 +915,8 @@ const struct mmc_platform_fixups *platform_fixups_mmc(uint32_t addr) } #endif
-#ifdef CONFIG_USB_DWC3 +#if defined(CONFIG_USB_DWC3) && \ + !(defined(CONFIG_DM_USB) && defined(CONFIG_DM_USB_DEV)) static struct dwc3_device usb_otg_ss1 = { .maximum_speed = USB_SPEED_SUPER, .base = DRA7_USB_OTG_SS1_BASE, diff --git a/configs/dra7xx_evm_defconfig b/configs/dra7xx_evm_defconfig index 27f6b5d..943ae71 100644 --- a/configs/dra7xx_evm_defconfig +++ b/configs/dra7xx_evm_defconfig @@ -56,6 +56,7 @@ CONFIG_FASTBOOT_CMD_OEM_FORMAT=y CONFIG_DM_GPIO=y CONFIG_PCF8575_GPIO=y CONFIG_DM_I2C=y +CONFIG_MISC=y CONFIG_DM_MMC=y CONFIG_MMC_IO_VOLTAGE=y CONFIG_MMC_UHS_SUPPORT=y @@ -72,6 +73,7 @@ CONFIG_PHY_GIGE=y CONFIG_MII=y CONFIG_SPL_PHY=y CONFIG_PIPE3_PHY=y +CONFIG_OMAP_USB2_PHY=y CONFIG_PMIC_PALMAS=y CONFIG_PMIC_LP873X=y CONFIG_DM_REGULATOR_FIXED=y @@ -87,14 +89,12 @@ CONFIG_TIMER=y CONFIG_OMAP_TIMER=y CONFIG_USB=y CONFIG_DM_USB=y +CONFIG_DM_USB_DEV=y CONFIG_USB_XHCI_HCD=y CONFIG_USB_XHCI_DWC3=y -CONFIG_USB_XHCI_DRA7XX_INDEX=1 CONFIG_USB_DWC3=y CONFIG_USB_DWC3_GADGET=y -CONFIG_USB_DWC3_OMAP=y -CONFIG_USB_DWC3_PHY_OMAP=y -CONFIG_OMAP_USB_PHY=y +CONFIG_USB_DWC3_GENERIC=y CONFIG_USB_STORAGE=y CONFIG_USB_GADGET=y CONFIG_USB_GADGET_MANUFACTURER="Texas Instruments" diff --git a/configs/dra7xx_hs_evm_defconfig b/configs/dra7xx_hs_evm_defconfig index 651fc4f..9137ee7 100644 --- a/configs/dra7xx_hs_evm_defconfig +++ b/configs/dra7xx_hs_evm_defconfig @@ -56,6 +56,7 @@ CONFIG_FASTBOOT_CMD_OEM_FORMAT=y CONFIG_DM_GPIO=y CONFIG_PCF8575_GPIO=y CONFIG_DM_I2C=y +CONFIG_MISC=y CONFIG_DM_MMC=y CONFIG_MMC_IO_VOLTAGE=y CONFIG_MMC_UHS_SUPPORT=y @@ -71,6 +72,7 @@ CONFIG_PHY_GIGE=y CONFIG_MII=y CONFIG_SPL_PHY=y CONFIG_PIPE3_PHY=y +CONFIG_OMAP_USB2_PHY=y CONFIG_PMIC_PALMAS=y CONFIG_PMIC_LP873X=y CONFIG_DM_REGULATOR_FIXED=y @@ -86,14 +88,12 @@ CONFIG_TIMER=y CONFIG_OMAP_TIMER=y CONFIG_USB=y CONFIG_DM_USB=y +CONFIG_DM_USB_DEV=y CONFIG_USB_XHCI_HCD=y CONFIG_USB_XHCI_DWC3=y -CONFIG_USB_XHCI_DRA7XX_INDEX=1 CONFIG_USB_DWC3=y CONFIG_USB_DWC3_GADGET=y -CONFIG_USB_DWC3_OMAP=y -CONFIG_USB_DWC3_PHY_OMAP=y -CONFIG_OMAP_USB_PHY=y +CONFIG_USB_DWC3_GENERIC=y CONFIG_USB_STORAGE=y CONFIG_USB_GADGET=y CONFIG_USB_GADGET_MANUFACTURER="Texas Instruments"

Enable DM_USB and DM_USB_DEV for AM57xx based boards.
Signed-off-by: Vignesh R vigneshr@ti.com Signed-off-by: Jean-Jacques Hiblot jjhiblot@ti.com
---
Changes in v7: - Fixed build issue "multiple definition of `usb_gadget_handle_interrupts'"
Changes in v6: - AM57 configs: enable DM_USB and DM_USB_DEV. Use DWC3_GENERIC in place of DWC3_OF_SIMPLE. disable non DM USB options
Changes in v5: - Rebased on latest u-boot - Removed patches that have already been merged
Changes in v4: - Remove dependency on MISC - Remove omap specific glue layer and use dwc3-of-simple glue layer
Changes in v3: None Changes in v2: - Enable DM_USB in am57xx_evm_defconfig. USB3 (super speed) is supported.
board/ti/am57xx/board.c | 5 ++--- configs/am57xx_evm_defconfig | 10 +++++++--- configs/am57xx_hs_evm_defconfig | 10 +++++++--- 3 files changed, 16 insertions(+), 9 deletions(-)
diff --git a/board/ti/am57xx/board.c b/board/ti/am57xx/board.c index 8c24d17..ffe2a54 100644 --- a/board/ti/am57xx/board.c +++ b/board/ti/am57xx/board.c @@ -883,7 +883,8 @@ int spl_start_uboot(void) } #endif
-#ifdef CONFIG_USB_DWC3 +#if defined(CONFIG_USB_DWC3) && \ + !(defined(CONFIG_DM_USB) && defined(CONFIG_DM_USB_DEV)) static struct dwc3_device usb_otg_ss2 = { .maximum_speed = USB_SPEED_HIGH, .base = DRA7_USB_OTG_SS2_BASE, @@ -912,9 +913,7 @@ int usb_gadget_handle_interrupts(int index)
return 0; } -#endif /* CONFIG_USB_DWC3 */
-#if defined(CONFIG_USB_DWC3) || defined(CONFIG_USB_XHCI_OMAP) int board_usb_init(int index, enum usb_init_type init) { enable_usb_clocks(index); diff --git a/configs/am57xx_evm_defconfig b/configs/am57xx_evm_defconfig index 5242ab6..038c3ba 100644 --- a/configs/am57xx_evm_defconfig +++ b/configs/am57xx_evm_defconfig @@ -50,6 +50,7 @@ CONFIG_FASTBOOT_FLASH_MMC_DEV=1 CONFIG_FASTBOOT_CMD_OEM_FORMAT=y CONFIG_DM_GPIO=y CONFIG_DM_I2C=y +CONFIG_MISC=y CONFIG_DM_MMC=y CONFIG_MMC_OMAP_HS=y CONFIG_DM_SPI_FLASH=y @@ -61,6 +62,9 @@ CONFIG_PHY_MICREL_KSZ90X1=y CONFIG_DM_ETH=y CONFIG_DRIVER_TI_CPSW=y CONFIG_MII=y +CONFIG_PHY=y +CONFIG_PIPE3_PHY=y +CONFIG_OMAP_USB2_PHY=y CONFIG_DM_PMIC=y CONFIG_PMIC_PALMAS=y CONFIG_DM_REGULATOR=y @@ -70,13 +74,13 @@ CONFIG_SPI=y CONFIG_DM_SPI=y CONFIG_TI_QSPI=y CONFIG_USB=y +CONFIG_DM_USB=y +CONFIG_DM_USB_DEV=y CONFIG_USB_XHCI_HCD=y CONFIG_USB_XHCI_DWC3=y CONFIG_USB_DWC3=y CONFIG_USB_DWC3_GADGET=y -CONFIG_USB_DWC3_OMAP=y -CONFIG_USB_DWC3_PHY_OMAP=y -CONFIG_OMAP_USB_PHY=y +CONFIG_USB_DWC3_GENERIC=y CONFIG_USB_STORAGE=y CONFIG_USB_GADGET=y CONFIG_USB_GADGET_MANUFACTURER="Texas Instruments" diff --git a/configs/am57xx_hs_evm_defconfig b/configs/am57xx_hs_evm_defconfig index be4aa0f..a3eedca 100644 --- a/configs/am57xx_hs_evm_defconfig +++ b/configs/am57xx_hs_evm_defconfig @@ -53,6 +53,7 @@ CONFIG_FASTBOOT_FLASH_MMC_DEV=1 CONFIG_FASTBOOT_CMD_OEM_FORMAT=y CONFIG_DM_GPIO=y CONFIG_DM_I2C=y +CONFIG_MISC=y CONFIG_DM_MMC=y CONFIG_MMC_OMAP_HS=y CONFIG_DM_SPI_FLASH=y @@ -64,6 +65,9 @@ CONFIG_PHY_MICREL_KSZ90X1=y CONFIG_DM_ETH=y CONFIG_DRIVER_TI_CPSW=y CONFIG_MII=y +CONFIG_PHY=y +CONFIG_PIPE3_PHY=y +CONFIG_OMAP_USB2_PHY=y CONFIG_DM_PMIC=y CONFIG_PMIC_PALMAS=y CONFIG_DM_REGULATOR=y @@ -73,13 +77,13 @@ CONFIG_SPI=y CONFIG_DM_SPI=y CONFIG_TI_QSPI=y CONFIG_USB=y +CONFIG_DM_USB=y +CONFIG_DM_USB_DEV=y CONFIG_USB_XHCI_HCD=y CONFIG_USB_XHCI_DWC3=y CONFIG_USB_DWC3=y CONFIG_USB_DWC3_GADGET=y -CONFIG_USB_DWC3_OMAP=y -CONFIG_USB_DWC3_PHY_OMAP=y -CONFIG_OMAP_USB_PHY=y +CONFIG_USB_DWC3_GENERIC=y CONFIG_USB_STORAGE=y CONFIG_USB_GADGET=y CONFIG_USB_GADGET_MANUFACTURER="Texas Instruments"

Signed-off-by: Jean-Jacques Hiblot jjhiblot@ti.com ---
Changes in v7: None Changes in v6: None Changes in v5: None Changes in v4: None Changes in v3: None Changes in v2: None
board/ti/dra7xx/evm.c | 105 -------------------------------------------------- 1 file changed, 105 deletions(-)
diff --git a/board/ti/dra7xx/evm.c b/board/ti/dra7xx/evm.c index 9f78adc..d69641e 100644 --- a/board/ti/dra7xx/evm.c +++ b/board/ti/dra7xx/evm.c @@ -915,111 +915,6 @@ const struct mmc_platform_fixups *platform_fixups_mmc(uint32_t addr) } #endif
-#if defined(CONFIG_USB_DWC3) && \ - !(defined(CONFIG_DM_USB) && defined(CONFIG_DM_USB_DEV)) -static struct dwc3_device usb_otg_ss1 = { - .maximum_speed = USB_SPEED_SUPER, - .base = DRA7_USB_OTG_SS1_BASE, - .tx_fifo_resize = false, - .index = 0, -}; - -static struct dwc3_omap_device usb_otg_ss1_glue = { - .base = (void *)DRA7_USB_OTG_SS1_GLUE_BASE, - .utmi_mode = DWC3_OMAP_UTMI_MODE_SW, - .index = 0, -}; - -static struct ti_usb_phy_device usb_phy1_device = { - .pll_ctrl_base = (void *)DRA7_USB3_PHY1_PLL_CTRL, - .usb2_phy_power = (void *)DRA7_USB2_PHY1_POWER, - .usb3_phy_power = (void *)DRA7_USB3_PHY1_POWER, - .index = 0, -}; - -static struct dwc3_device usb_otg_ss2 = { - .maximum_speed = USB_SPEED_SUPER, - .base = DRA7_USB_OTG_SS2_BASE, - .tx_fifo_resize = false, - .index = 1, -}; - -static struct dwc3_omap_device usb_otg_ss2_glue = { - .base = (void *)DRA7_USB_OTG_SS2_GLUE_BASE, - .utmi_mode = DWC3_OMAP_UTMI_MODE_SW, - .index = 1, -}; - -static struct ti_usb_phy_device usb_phy2_device = { - .usb2_phy_power = (void *)DRA7_USB2_PHY2_POWER, - .index = 1, -}; - -int board_usb_init(int index, enum usb_init_type init) -{ - enable_usb_clocks(index); - switch (index) { - case 0: - if (init == USB_INIT_DEVICE) { - usb_otg_ss1.dr_mode = USB_DR_MODE_PERIPHERAL; - usb_otg_ss1_glue.vbus_id_status = OMAP_DWC3_VBUS_VALID; - } else { - usb_otg_ss1.dr_mode = USB_DR_MODE_HOST; - usb_otg_ss1_glue.vbus_id_status = OMAP_DWC3_ID_GROUND; - } - - ti_usb_phy_uboot_init(&usb_phy1_device); - dwc3_omap_uboot_init(&usb_otg_ss1_glue); - dwc3_uboot_init(&usb_otg_ss1); - break; - case 1: - if (init == USB_INIT_DEVICE) { - usb_otg_ss2.dr_mode = USB_DR_MODE_PERIPHERAL; - usb_otg_ss2_glue.vbus_id_status = OMAP_DWC3_VBUS_VALID; - } else { - usb_otg_ss2.dr_mode = USB_DR_MODE_HOST; - usb_otg_ss2_glue.vbus_id_status = OMAP_DWC3_ID_GROUND; - } - - ti_usb_phy_uboot_init(&usb_phy2_device); - dwc3_omap_uboot_init(&usb_otg_ss2_glue); - dwc3_uboot_init(&usb_otg_ss2); - break; - default: - printf("Invalid Controller Index\n"); - } - - return 0; -} - -int board_usb_cleanup(int index, enum usb_init_type init) -{ - switch (index) { - case 0: - case 1: - ti_usb_phy_uboot_exit(index); - dwc3_uboot_exit(index); - dwc3_omap_uboot_exit(index); - break; - default: - printf("Invalid Controller Index\n"); - } - disable_usb_clocks(index); - return 0; -} - -int usb_gadget_handle_interrupts(int index) -{ - u32 status; - - status = dwc3_omap_uboot_interrupt_status(index); - if (status) - dwc3_uboot_handle_interrupt(index); - - return 0; -} -#endif - #if defined(CONFIG_SPL_BUILD) && defined(CONFIG_SPL_OS_BOOT) int spl_start_uboot(void) {

Signed-off-by: Jean-Jacques Hiblot jjhiblot@ti.com
---
Changes in v7: None Changes in v6: - Supports DM USB for peripherals - Removed DTS changes that disabled USB1 on DRA7 because DM_USB_DEV is now supported
Changes in v5: None Changes in v4: None Changes in v3: None Changes in v2: None
board/ti/am57xx/board.c | 86 ------------------------------------------------- 1 file changed, 86 deletions(-)
diff --git a/board/ti/am57xx/board.c b/board/ti/am57xx/board.c index ffe2a54..8dfb2ee 100644 --- a/board/ti/am57xx/board.c +++ b/board/ti/am57xx/board.c @@ -883,92 +883,6 @@ int spl_start_uboot(void) } #endif
-#if defined(CONFIG_USB_DWC3) && \ - !(defined(CONFIG_DM_USB) && defined(CONFIG_DM_USB_DEV)) -static struct dwc3_device usb_otg_ss2 = { - .maximum_speed = USB_SPEED_HIGH, - .base = DRA7_USB_OTG_SS2_BASE, - .tx_fifo_resize = false, - .index = 1, -}; - -static struct dwc3_omap_device usb_otg_ss2_glue = { - .base = (void *)DRA7_USB_OTG_SS2_GLUE_BASE, - .utmi_mode = DWC3_OMAP_UTMI_MODE_SW, - .index = 1, -}; - -static struct ti_usb_phy_device usb_phy2_device = { - .usb2_phy_power = (void *)DRA7_USB2_PHY2_POWER, - .index = 1, -}; - -int usb_gadget_handle_interrupts(int index) -{ - u32 status; - - status = dwc3_omap_uboot_interrupt_status(index); - if (status) - dwc3_uboot_handle_interrupt(index); - - return 0; -} - -int board_usb_init(int index, enum usb_init_type init) -{ - enable_usb_clocks(index); - switch (index) { - case 0: - if (init == USB_INIT_DEVICE) { - printf("port %d can't be used as device\n", index); - disable_usb_clocks(index); - return -EINVAL; - } - break; - case 1: - if (init == USB_INIT_DEVICE) { -#ifdef CONFIG_USB_DWC3 - usb_otg_ss2.dr_mode = USB_DR_MODE_PERIPHERAL; - usb_otg_ss2_glue.vbus_id_status = OMAP_DWC3_VBUS_VALID; - ti_usb_phy_uboot_init(&usb_phy2_device); - dwc3_omap_uboot_init(&usb_otg_ss2_glue); - dwc3_uboot_init(&usb_otg_ss2); -#endif - } else { - printf("port %d can't be used as host\n", index); - disable_usb_clocks(index); - return -EINVAL; - } - - break; - default: - printf("Invalid Controller Index\n"); - } - - return 0; -} - -int board_usb_cleanup(int index, enum usb_init_type init) -{ -#ifdef CONFIG_USB_DWC3 - switch (index) { - case 0: - case 1: - if (init == USB_INIT_DEVICE) { - ti_usb_phy_uboot_exit(index); - dwc3_uboot_exit(index); - dwc3_omap_uboot_exit(index); - } - break; - default: - printf("Invalid Controller Index\n"); - } -#endif - disable_usb_clocks(index); - return 0; -} -#endif /* defined(CONFIG_USB_DWC3) || defined(CONFIG_USB_XHCI_OMAP) */ - #ifdef CONFIG_DRIVER_TI_CPSW
/* Delay value to add to calibrated value */

Hi Jean-Jacques,
Resending this series after rebasing on top of latest u-boot. This series applies on top of the series "[PATCH v3 0/7] Improvements for the dwc3_generic driver"
Moving to DM_USB and DM_USB_DEV brings some benefits:
- it is required to support DM_ETH and USB network adapters with the
same binary.
- support for USB3 on AM57x comes almost for free
- removal of platform code related to USB
Tested on:
- dra76 evm
- AM572 evm
I've tried to merge and test your patches: SHA1: 0c4b382f9041f9f2f00246c8a0ece90dae5451be https://github.com/lmajewski/u-boot-dfu/commits/testing
The results from Travis-CI: https://travis-ci.org/lmajewski/u-boot-dfu/jobs/456736504
It breaks for e.g. OMAP.
Could you check this problem and resubmit patches?
Thanks in advance, Łukasz
Changes in v7:
- replace remaining if() statements with ut_assert()
- Fix build issue "multiple definition of
`usb_gadget_handle_interrupts'"
- Fixed build issue "multiple definition of
`usb_gadget_handle_interrupts'"
Changes in v6:
- ti-pipe3-phy: take PLL out of IDLE in pipe3_init(). The PLL may have been put into idle by pipe3_exit()
- DRA7 configs: enable DM_USB and DM_USB_DEV. Use DWC3_GENERIC in
place of DWC3_OF_SIMPLE. disable non DM USB options
- AM57 configs: enable DM_USB and DM_USB_DEV. Use DWC3_GENERIC in
place of DWC3_OF_SIMPLE. disable non DM USB options
- Supports DM USB for peripherals
- Removed DTS changes that disabled USB1 on DRA7 because DM_USB_DEV is now supported
Changes in v5:
- Rebased on latest u-boot
- Removed patches that have already been merged
Changes in v4:
- Fix word missing in commit log
- Remove dependency on MISC
- Renamed the commit (DM_USB is already enabled, the only missing
option is for the USB2 phy driver)
- Remove dependency on MISC
- Remove omap specific glue layer and use dwc3-of-simple glue layer
Changes in v3:
- in syscon_regmap_lookup_by_phandle(), use dev_dbg() instead of
printf()
- added unit test for syscon_regmap_lookup_by_phandle()
Changes in v2:
- Add USB3 support to ti-pipe3-phy driver
- omap-usb2-phy: Implement power_on and power_off callbacks
- am57xx boards: when DM_USB is used, turn on the required USB clocks
- split dts changes in 2 commits: one for binding the children of ocp2scp@4a080000, and one to disable USB1 on all DRA7 EVMs
- Enable DM_USB in am57xx_evm_defconfig. USB3 (super speed) is
supported.
Jean-Jacques Hiblot (9): syscon: dm: Add a new method to get a regmap from DTS phy: Add a new driver for OMAP's USB2 PHYs dwc3-generic: Add support for the TI DWC3 glue board: ti: dra7xx-evm: turn on USB clocks in late init stage dts: dra7x: make ocp2scp@4a080000 compatible with simple-bus configs: enable DM_USB and DM_USB_DEV for all DRA7 platforms configs: am57xx_evm: Enable DM_USB and DM_USB_DEV board: ti: dra7-evm: remove USB platform code board: ti: am57xx: remove USB platform code
Vignesh R (2): phy: ti-pip3-phy: Add support for USB3 PHY board; ti: am57xx: turn on USB clocks
arch/arm/dts/omap5-u-boot.dtsi | 4 + arch/sandbox/dts/test.dts | 6 +- board/ti/am57xx/board.c | 106 ++++------------------ board/ti/dra7xx/evm.c | 123 ++++--------------------- configs/am57xx_evm_defconfig | 10 +- configs/am57xx_hs_evm_defconfig | 10 +- configs/dra7xx_evm_defconfig | 8 +- configs/dra7xx_hs_evm_defconfig | 8 +- drivers/core/syscon-uclass.c | 23 +++++ drivers/phy/Kconfig | 9 ++ drivers/phy/Makefile | 1 + drivers/phy/omap-usb2-phy.c | 196 ++++++++++++++++++++++++++++++++++++++++ drivers/phy/ti-pipe3-phy.c | 32 +++++-- drivers/usb/dwc3/dwc3-generic.c | 85 +++++++++++++++++ include/syscon.h | 13 +++ test/dm/syscon.c | 29 ++++++ 16 files changed, 448 insertions(+), 215 deletions(-) create mode 100644 drivers/phy/omap-usb2-phy.c
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-59 Fax: (+49)-8142-66989-80 Email: lukma@denx.de

Hi Lukasz,
On 19/11/2018 09:11, Lukasz Majewski wrote:
Hi Jean-Jacques,
Resending this series after rebasing on top of latest u-boot. This series applies on top of the series "[PATCH v3 0/7] Improvements for the dwc3_generic driver"
Moving to DM_USB and DM_USB_DEV brings some benefits:
- it is required to support DM_ETH and USB network adapters with the
same binary.
- support for USB3 on AM57x comes almost for free
- removal of platform code related to USB
Tested on:
- dra76 evm
- AM572 evm
I've tried to merge and test your patches: SHA1: 0c4b382f9041f9f2f00246c8a0ece90dae5451be https://github.com/lmajewski/u-boot-dfu/commits/testing
The results from Travis-CI: https://travis-ci.org/lmajewski/u-boot-dfu/jobs/456736504
It breaks for e.g. OMAP.
Thanks for testing it.
This series applies on top of the series "[PATCH v3 0/7] Improvements for the dwc3_generic driver". This is required to set the direction of PHY (peripheral or host).
This is the reason why it fails to build properly.
JJ
Could you check this problem and resubmit patches?
Thanks in advance, Łukasz
Changes in v7:
- replace remaining if() statements with ut_assert()
- Fix build issue "multiple definition of
`usb_gadget_handle_interrupts'"
- Fixed build issue "multiple definition of
`usb_gadget_handle_interrupts'"
Changes in v6:
- ti-pipe3-phy: take PLL out of IDLE in pipe3_init(). The PLL may have been put into idle by pipe3_exit()
- DRA7 configs: enable DM_USB and DM_USB_DEV. Use DWC3_GENERIC in
place of DWC3_OF_SIMPLE. disable non DM USB options
- AM57 configs: enable DM_USB and DM_USB_DEV. Use DWC3_GENERIC in
place of DWC3_OF_SIMPLE. disable non DM USB options
- Supports DM USB for peripherals
- Removed DTS changes that disabled USB1 on DRA7 because DM_USB_DEV is now supported
Changes in v5:
- Rebased on latest u-boot
- Removed patches that have already been merged
Changes in v4:
- Fix word missing in commit log
- Remove dependency on MISC
- Renamed the commit (DM_USB is already enabled, the only missing
option is for the USB2 phy driver)
- Remove dependency on MISC
- Remove omap specific glue layer and use dwc3-of-simple glue layer
Changes in v3:
- in syscon_regmap_lookup_by_phandle(), use dev_dbg() instead of
printf()
- added unit test for syscon_regmap_lookup_by_phandle()
Changes in v2:
- Add USB3 support to ti-pipe3-phy driver
- omap-usb2-phy: Implement power_on and power_off callbacks
- am57xx boards: when DM_USB is used, turn on the required USB clocks
- split dts changes in 2 commits: one for binding the children of ocp2scp@4a080000, and one to disable USB1 on all DRA7 EVMs
- Enable DM_USB in am57xx_evm_defconfig. USB3 (super speed) is
supported.
Jean-Jacques Hiblot (9): syscon: dm: Add a new method to get a regmap from DTS phy: Add a new driver for OMAP's USB2 PHYs dwc3-generic: Add support for the TI DWC3 glue board: ti: dra7xx-evm: turn on USB clocks in late init stage dts: dra7x: make ocp2scp@4a080000 compatible with simple-bus configs: enable DM_USB and DM_USB_DEV for all DRA7 platforms configs: am57xx_evm: Enable DM_USB and DM_USB_DEV board: ti: dra7-evm: remove USB platform code board: ti: am57xx: remove USB platform code
Vignesh R (2): phy: ti-pip3-phy: Add support for USB3 PHY board; ti: am57xx: turn on USB clocks
arch/arm/dts/omap5-u-boot.dtsi | 4 + arch/sandbox/dts/test.dts | 6 +- board/ti/am57xx/board.c | 106 ++++------------------ board/ti/dra7xx/evm.c | 123 ++++--------------------- configs/am57xx_evm_defconfig | 10 +- configs/am57xx_hs_evm_defconfig | 10 +- configs/dra7xx_evm_defconfig | 8 +- configs/dra7xx_hs_evm_defconfig | 8 +- drivers/core/syscon-uclass.c | 23 +++++ drivers/phy/Kconfig | 9 ++ drivers/phy/Makefile | 1 + drivers/phy/omap-usb2-phy.c | 196 ++++++++++++++++++++++++++++++++++++++++ drivers/phy/ti-pipe3-phy.c | 32 +++++-- drivers/usb/dwc3/dwc3-generic.c | 85 +++++++++++++++++ include/syscon.h | 13 +++ test/dm/syscon.c | 29 ++++++ 16 files changed, 448 insertions(+), 215 deletions(-) create mode 100644 drivers/phy/omap-usb2-phy.c
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-59 Fax: (+49)-8142-66989-80 Email: lukma@denx.de

Hi Jean-Jacques,
Hi Lukasz,
On 19/11/2018 09:11, Lukasz Majewski wrote:
Hi Jean-Jacques,
Resending this series after rebasing on top of latest u-boot. This series applies on top of the series "[PATCH v3 0/7] Improvements for the dwc3_generic driver"
Moving to DM_USB and DM_USB_DEV brings some benefits:
- it is required to support DM_ETH and USB network adapters with
the same binary.
- support for USB3 on AM57x comes almost for free
- removal of platform code related to USB
Tested on:
- dra76 evm
- AM572 evm
I've tried to merge and test your patches: SHA1: 0c4b382f9041f9f2f00246c8a0ece90dae5451be https://github.com/lmajewski/u-boot-dfu/commits/testing
The results from Travis-CI: https://travis-ci.org/lmajewski/u-boot-dfu/jobs/456736504
It breaks for e.g. OMAP.
Thanks for testing it.
This series applies on top of the series "[PATCH v3 0/7] Improvements for the dwc3_generic driver". This is required to set the direction of PHY (peripheral or host).
Ach... Ok. I will re-test it. Thanks for the hint.
This is the reason why it fails to build properly.
JJ
Could you check this problem and resubmit patches?
Thanks in advance, Łukasz
Changes in v7:
- replace remaining if() statements with ut_assert()
- Fix build issue "multiple definition of
`usb_gadget_handle_interrupts'"
- Fixed build issue "multiple definition of
`usb_gadget_handle_interrupts'"
Changes in v6:
- ti-pipe3-phy: take PLL out of IDLE in pipe3_init(). The PLL may
have been put into idle by pipe3_exit()
- DRA7 configs: enable DM_USB and DM_USB_DEV. Use DWC3_GENERIC in
place of DWC3_OF_SIMPLE. disable non DM USB options
- AM57 configs: enable DM_USB and DM_USB_DEV. Use DWC3_GENERIC in
place of DWC3_OF_SIMPLE. disable non DM USB options
- Supports DM USB for peripherals
- Removed DTS changes that disabled USB1 on DRA7 because
DM_USB_DEV is now supported
Changes in v5:
- Rebased on latest u-boot
- Removed patches that have already been merged
Changes in v4:
- Fix word missing in commit log
- Remove dependency on MISC
- Renamed the commit (DM_USB is already enabled, the only missing
option is for the USB2 phy driver)
- Remove dependency on MISC
- Remove omap specific glue layer and use dwc3-of-simple glue layer
Changes in v3:
- in syscon_regmap_lookup_by_phandle(), use dev_dbg() instead of
printf()
- added unit test for syscon_regmap_lookup_by_phandle()
Changes in v2:
- Add USB3 support to ti-pipe3-phy driver
- omap-usb2-phy: Implement power_on and power_off callbacks
- am57xx boards: when DM_USB is used, turn on the required USB
clocks
- split dts changes in 2 commits: one for binding the children of ocp2scp@4a080000, and one to disable USB1 on all DRA7 EVMs
- Enable DM_USB in am57xx_evm_defconfig. USB3 (super speed) is
supported.
Jean-Jacques Hiblot (9): syscon: dm: Add a new method to get a regmap from DTS phy: Add a new driver for OMAP's USB2 PHYs dwc3-generic: Add support for the TI DWC3 glue board: ti: dra7xx-evm: turn on USB clocks in late init stage dts: dra7x: make ocp2scp@4a080000 compatible with simple-bus configs: enable DM_USB and DM_USB_DEV for all DRA7 platforms configs: am57xx_evm: Enable DM_USB and DM_USB_DEV board: ti: dra7-evm: remove USB platform code board: ti: am57xx: remove USB platform code
Vignesh R (2): phy: ti-pip3-phy: Add support for USB3 PHY board; ti: am57xx: turn on USB clocks
arch/arm/dts/omap5-u-boot.dtsi | 4 + arch/sandbox/dts/test.dts | 6 +- board/ti/am57xx/board.c | 106 ++++------------------ board/ti/dra7xx/evm.c | 123 ++++--------------------- configs/am57xx_evm_defconfig | 10 +- configs/am57xx_hs_evm_defconfig | 10 +- configs/dra7xx_evm_defconfig | 8 +- configs/dra7xx_hs_evm_defconfig | 8 +- drivers/core/syscon-uclass.c | 23 +++++ drivers/phy/Kconfig | 9 ++ drivers/phy/Makefile | 1 + drivers/phy/omap-usb2-phy.c | 196 ++++++++++++++++++++++++++++++++++++++++ drivers/phy/ti-pipe3-phy.c | 32 +++++-- drivers/usb/dwc3/dwc3-generic.c | 85 +++++++++++++++++ include/syscon.h | 13 +++ test/dm/syscon.c | 29 ++++++ 16 files changed, 448 insertions(+), 215 deletions(-) create mode 100644 drivers/phy/omap-usb2-phy.c
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-59 Fax: (+49)-8142-66989-80 Email: lukma@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-59 Fax: (+49)-8142-66989-80 Email: lukma@denx.de

Hi,
Hi Jean-Jacques,
Resending this series after rebasing on top of latest u-boot. This series applies on top of the series "[PATCH v3 0/7] Improvements for the dwc3_generic driver"
Moving to DM_USB and DM_USB_DEV brings some benefits:
- it is required to support DM_ETH and USB network adapters with the
same binary.
- support for USB3 on AM57x comes almost for free
- removal of platform code related to USB
Tested on:
- dra76 evm
- AM572 evm
I've tried to merge and test your patches: SHA1: 0c4b382f9041f9f2f00246c8a0ece90dae5451be https://github.com/lmajewski/u-boot-dfu/commits/testing
The updated repository is the same as above (SHA1 is of course different)
The results from Travis-CI: https://travis-ci.org/lmajewski/u-boot-dfu/jobs/456736504
https://travis-ci.org/lmajewski/u-boot-dfu/builds/457229385
The "buildman" rockchip build breaks after applying your patches.
https://travis-ci.org/lmajewski/u-boot-dfu/jobs/457229443
It breaks for e.g. OMAP.
Could you check this problem and resubmit patches?
Am I missing any more patches? Or maybe you have a Travis-CI "clean" branch/repo somewhere so I could use it ?
Thanks in advance, Łukasz
Changes in v7:
- replace remaining if() statements with ut_assert()
- Fix build issue "multiple definition of
`usb_gadget_handle_interrupts'"
- Fixed build issue "multiple definition of
`usb_gadget_handle_interrupts'"
Changes in v6:
- ti-pipe3-phy: take PLL out of IDLE in pipe3_init(). The PLL may
have been put into idle by pipe3_exit()
- DRA7 configs: enable DM_USB and DM_USB_DEV. Use DWC3_GENERIC in
place of DWC3_OF_SIMPLE. disable non DM USB options
- AM57 configs: enable DM_USB and DM_USB_DEV. Use DWC3_GENERIC in
place of DWC3_OF_SIMPLE. disable non DM USB options
- Supports DM USB for peripherals
- Removed DTS changes that disabled USB1 on DRA7 because DM_USB_DEV
is now supported
Changes in v5:
- Rebased on latest u-boot
- Removed patches that have already been merged
Changes in v4:
- Fix word missing in commit log
- Remove dependency on MISC
- Renamed the commit (DM_USB is already enabled, the only missing
option is for the USB2 phy driver)
- Remove dependency on MISC
- Remove omap specific glue layer and use dwc3-of-simple glue layer
Changes in v3:
- in syscon_regmap_lookup_by_phandle(), use dev_dbg() instead of
printf()
- added unit test for syscon_regmap_lookup_by_phandle()
Changes in v2:
- Add USB3 support to ti-pipe3-phy driver
- omap-usb2-phy: Implement power_on and power_off callbacks
- am57xx boards: when DM_USB is used, turn on the required USB
clocks
- split dts changes in 2 commits: one for binding the children of ocp2scp@4a080000, and one to disable USB1 on all DRA7 EVMs
- Enable DM_USB in am57xx_evm_defconfig. USB3 (super speed) is
supported.
Jean-Jacques Hiblot (9): syscon: dm: Add a new method to get a regmap from DTS phy: Add a new driver for OMAP's USB2 PHYs dwc3-generic: Add support for the TI DWC3 glue board: ti: dra7xx-evm: turn on USB clocks in late init stage dts: dra7x: make ocp2scp@4a080000 compatible with simple-bus configs: enable DM_USB and DM_USB_DEV for all DRA7 platforms configs: am57xx_evm: Enable DM_USB and DM_USB_DEV board: ti: dra7-evm: remove USB platform code board: ti: am57xx: remove USB platform code
Vignesh R (2): phy: ti-pip3-phy: Add support for USB3 PHY board; ti: am57xx: turn on USB clocks
arch/arm/dts/omap5-u-boot.dtsi | 4 + arch/sandbox/dts/test.dts | 6 +- board/ti/am57xx/board.c | 106 ++++------------------ board/ti/dra7xx/evm.c | 123 ++++--------------------- configs/am57xx_evm_defconfig | 10 +- configs/am57xx_hs_evm_defconfig | 10 +- configs/dra7xx_evm_defconfig | 8 +- configs/dra7xx_hs_evm_defconfig | 8 +- drivers/core/syscon-uclass.c | 23 +++++ drivers/phy/Kconfig | 9 ++ drivers/phy/Makefile | 1 + drivers/phy/omap-usb2-phy.c | 196 ++++++++++++++++++++++++++++++++++++++++ drivers/phy/ti-pipe3-phy.c | 32 +++++-- drivers/usb/dwc3/dwc3-generic.c | 85 +++++++++++++++++ include/syscon.h | 13 +++ test/dm/syscon.c | 29 ++++++ 16 files changed, 448 insertions(+), 215 deletions(-) create mode 100644 drivers/phy/omap-usb2-phy.c
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-59 Fax: (+49)-8142-66989-80 Email: lukma@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-59 Fax: (+49)-8142-66989-80 Email: lukma@denx.de

On 20/11/2018 12:38, Lukasz Majewski wrote:
Hi,
Hi Jean-Jacques,
Resending this series after rebasing on top of latest u-boot. This series applies on top of the series "[PATCH v3 0/7] Improvements for the dwc3_generic driver"
Moving to DM_USB and DM_USB_DEV brings some benefits:
- it is required to support DM_ETH and USB network adapters with the
same binary.
- support for USB3 on AM57x comes almost for free
- removal of platform code related to USB
Tested on:
- dra76 evm
- AM572 evm
I've tried to merge and test your patches: SHA1: 0c4b382f9041f9f2f00246c8a0ece90dae5451be https://github.com/lmajewski/u-boot-dfu/commits/testing
The updated repository is the same as above (SHA1 is of course different)
The results from Travis-CI: https://travis-ci.org/lmajewski/u-boot-dfu/jobs/456736504
https://travis-ci.org/lmajewski/u-boot-dfu/builds/457229385
The "buildman" rockchip build breaks after applying your patches.
https://travis-ci.org/lmajewski/u-boot-dfu/jobs/457229443
It breaks for e.g. OMAP.
Could you check this problem and resubmit patches?
Am I missing any more patches? Or maybe you have a Travis-CI "clean" branch/repo somewhere so I could use it ?
The error is legit. It must have been caused by a recent change.
It fails because CONFIG_TPL_LOGLEVEL is not set....
It means that dev_dbg(), and dev_... printout functions cannot be used within the TPL. I'm surprised that it hasn't been seen before.
A simple fix is to add a definition for TPL_LOG_LEVEL in the Kconfig
diff --git a/common/Kconfig b/common/Kconfig index d7300c2..949dba4 100644 --- a/common/Kconfig +++ b/common/Kconfig @@ -290,6 +290,10 @@ config SPL_LOGLEVEL int default LOGLEVEL
+config TPL_LOGLEVEL + int + default LOGLEVEL +
There is a patch from Simon that does that and much more '[PATCH v3 01/21] spl: Add support for logging in SPL and TPL'. Can you try with this patch ?
Thanks in advance, Łukasz
Changes in v7:
- replace remaining if() statements with ut_assert()
- Fix build issue "multiple definition of
`usb_gadget_handle_interrupts'"
- Fixed build issue "multiple definition of
`usb_gadget_handle_interrupts'"
Changes in v6:
- ti-pipe3-phy: take PLL out of IDLE in pipe3_init(). The PLL may
have been put into idle by pipe3_exit()
- DRA7 configs: enable DM_USB and DM_USB_DEV. Use DWC3_GENERIC in
place of DWC3_OF_SIMPLE. disable non DM USB options
- AM57 configs: enable DM_USB and DM_USB_DEV. Use DWC3_GENERIC in
place of DWC3_OF_SIMPLE. disable non DM USB options
- Supports DM USB for peripherals
- Removed DTS changes that disabled USB1 on DRA7 because DM_USB_DEV
is now supported
Changes in v5:
- Rebased on latest u-boot
- Removed patches that have already been merged
Changes in v4:
- Fix word missing in commit log
- Remove dependency on MISC
- Renamed the commit (DM_USB is already enabled, the only missing
option is for the USB2 phy driver)
- Remove dependency on MISC
- Remove omap specific glue layer and use dwc3-of-simple glue layer
Changes in v3:
- in syscon_regmap_lookup_by_phandle(), use dev_dbg() instead of
printf()
- added unit test for syscon_regmap_lookup_by_phandle()
Changes in v2:
- Add USB3 support to ti-pipe3-phy driver
- omap-usb2-phy: Implement power_on and power_off callbacks
- am57xx boards: when DM_USB is used, turn on the required USB
clocks
- split dts changes in 2 commits: one for binding the children of ocp2scp@4a080000, and one to disable USB1 on all DRA7 EVMs
- Enable DM_USB in am57xx_evm_defconfig. USB3 (super speed) is
supported.
Jean-Jacques Hiblot (9): syscon: dm: Add a new method to get a regmap from DTS phy: Add a new driver for OMAP's USB2 PHYs dwc3-generic: Add support for the TI DWC3 glue board: ti: dra7xx-evm: turn on USB clocks in late init stage dts: dra7x: make ocp2scp@4a080000 compatible with simple-bus configs: enable DM_USB and DM_USB_DEV for all DRA7 platforms configs: am57xx_evm: Enable DM_USB and DM_USB_DEV board: ti: dra7-evm: remove USB platform code board: ti: am57xx: remove USB platform code
Vignesh R (2): phy: ti-pip3-phy: Add support for USB3 PHY board; ti: am57xx: turn on USB clocks
arch/arm/dts/omap5-u-boot.dtsi | 4 + arch/sandbox/dts/test.dts | 6 +- board/ti/am57xx/board.c | 106 ++++------------------ board/ti/dra7xx/evm.c | 123 ++++--------------------- configs/am57xx_evm_defconfig | 10 +- configs/am57xx_hs_evm_defconfig | 10 +- configs/dra7xx_evm_defconfig | 8 +- configs/dra7xx_hs_evm_defconfig | 8 +- drivers/core/syscon-uclass.c | 23 +++++ drivers/phy/Kconfig | 9 ++ drivers/phy/Makefile | 1 + drivers/phy/omap-usb2-phy.c | 196 ++++++++++++++++++++++++++++++++++++++++ drivers/phy/ti-pipe3-phy.c | 32 +++++-- drivers/usb/dwc3/dwc3-generic.c | 85 +++++++++++++++++ include/syscon.h | 13 +++ test/dm/syscon.c | 29 ++++++ 16 files changed, 448 insertions(+), 215 deletions(-) create mode 100644 drivers/phy/omap-usb2-phy.c
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-59 Fax: (+49)-8142-66989-80 Email: lukma@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-59 Fax: (+49)-8142-66989-80 Email: lukma@denx.de

Hi,
Hi,
Hi Jean-Jacques,
Resending this series after rebasing on top of latest u-boot. This series applies on top of the series "[PATCH v3 0/7] Improvements for the dwc3_generic driver"
Moving to DM_USB and DM_USB_DEV brings some benefits:
- it is required to support DM_ETH and USB network adapters with
the same binary.
- support for USB3 on AM57x comes almost for free
- removal of platform code related to USB
Tested on:
- dra76 evm
- AM572 evm
I've tried to merge and test your patches: SHA1: 0c4b382f9041f9f2f00246c8a0ece90dae5451be https://github.com/lmajewski/u-boot-dfu/commits/testing
The updated repository is the same as above (SHA1 is of course different)
The results from Travis-CI: https://travis-ci.org/lmajewski/u-boot-dfu/jobs/456736504
https://travis-ci.org/lmajewski/u-boot-dfu/builds/457229385
The "buildman" rockchip build breaks after applying your patches.
The repo: https://github.com/lmajewski/u-boot-dfu/commits/testing
Some build breaks: https://travis-ci.org/lmajewski/u-boot-dfu/builds/457845111 https://travis-ci.org/lmajewski/u-boot-dfu/jobs/457845133
Please apply your patch series to newest u-boot's master.
In the commit message please state all needed dependencies (or provide link to e.g. github repository so I can fetch it).
It breaks for e.g. OMAP.
Could you check this problem and resubmit patches?
Am I missing any more patches? Or maybe you have a Travis-CI "clean" branch/repo somewhere so I could use it ?
Thanks in advance, Łukasz
Changes in v7:
- replace remaining if() statements with ut_assert()
- Fix build issue "multiple definition of
`usb_gadget_handle_interrupts'"
- Fixed build issue "multiple definition of
`usb_gadget_handle_interrupts'"
Changes in v6:
- ti-pipe3-phy: take PLL out of IDLE in pipe3_init(). The PLL may
have been put into idle by pipe3_exit()
- DRA7 configs: enable DM_USB and DM_USB_DEV. Use DWC3_GENERIC in
place of DWC3_OF_SIMPLE. disable non DM USB options
- AM57 configs: enable DM_USB and DM_USB_DEV. Use DWC3_GENERIC in
place of DWC3_OF_SIMPLE. disable non DM USB options
- Supports DM USB for peripherals
- Removed DTS changes that disabled USB1 on DRA7 because
DM_USB_DEV is now supported
Changes in v5:
- Rebased on latest u-boot
- Removed patches that have already been merged
Changes in v4:
- Fix word missing in commit log
- Remove dependency on MISC
- Renamed the commit (DM_USB is already enabled, the only missing
option is for the USB2 phy driver)
- Remove dependency on MISC
- Remove omap specific glue layer and use dwc3-of-simple glue
layer
Changes in v3:
- in syscon_regmap_lookup_by_phandle(), use dev_dbg() instead of
printf()
- added unit test for syscon_regmap_lookup_by_phandle()
Changes in v2:
- Add USB3 support to ti-pipe3-phy driver
- omap-usb2-phy: Implement power_on and power_off callbacks
- am57xx boards: when DM_USB is used, turn on the required USB
clocks
- split dts changes in 2 commits: one for binding the children of ocp2scp@4a080000, and one to disable USB1 on all DRA7 EVMs
- Enable DM_USB in am57xx_evm_defconfig. USB3 (super speed) is
supported.
Jean-Jacques Hiblot (9): syscon: dm: Add a new method to get a regmap from DTS phy: Add a new driver for OMAP's USB2 PHYs dwc3-generic: Add support for the TI DWC3 glue board: ti: dra7xx-evm: turn on USB clocks in late init stage dts: dra7x: make ocp2scp@4a080000 compatible with simple-bus configs: enable DM_USB and DM_USB_DEV for all DRA7 platforms configs: am57xx_evm: Enable DM_USB and DM_USB_DEV board: ti: dra7-evm: remove USB platform code board: ti: am57xx: remove USB platform code
Vignesh R (2): phy: ti-pip3-phy: Add support for USB3 PHY board; ti: am57xx: turn on USB clocks
arch/arm/dts/omap5-u-boot.dtsi | 4 + arch/sandbox/dts/test.dts | 6 +- board/ti/am57xx/board.c | 106 ++++------------------ board/ti/dra7xx/evm.c | 123 ++++--------------------- configs/am57xx_evm_defconfig | 10 +- configs/am57xx_hs_evm_defconfig | 10 +- configs/dra7xx_evm_defconfig | 8 +- configs/dra7xx_hs_evm_defconfig | 8 +- drivers/core/syscon-uclass.c | 23 +++++ drivers/phy/Kconfig | 9 ++ drivers/phy/Makefile | 1 + drivers/phy/omap-usb2-phy.c | 196 ++++++++++++++++++++++++++++++++++++++++ drivers/phy/ti-pipe3-phy.c | 32 +++++-- drivers/usb/dwc3/dwc3-generic.c | 85 +++++++++++++++++ include/syscon.h | 13 +++ test/dm/syscon.c | 29 ++++++ 16 files changed, 448 insertions(+), 215 deletions(-) create mode 100644 drivers/phy/omap-usb2-phy.c
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-59 Fax: (+49)-8142-66989-80 Email: lukma@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-59 Fax: (+49)-8142-66989-80 Email: lukma@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-59 Fax: (+49)-8142-66989-80 Email: lukma@denx.de

Hi Lukasz,
On 21/11/2018 12:01, Lukasz Majewski wrote:
Hi,
Hi,
Hi Jean-Jacques,
Resending this series after rebasing on top of latest u-boot. This series applies on top of the series "[PATCH v3 0/7] Improvements for the dwc3_generic driver"
Moving to DM_USB and DM_USB_DEV brings some benefits:
- it is required to support DM_ETH and USB network adapters with
the same binary.
- support for USB3 on AM57x comes almost for free
- removal of platform code related to USB
Tested on:
- dra76 evm
- AM572 evm
I've tried to merge and test your patches: SHA1: 0c4b382f9041f9f2f00246c8a0ece90dae5451be https://github.com/lmajewski/u-boot-dfu/commits/testing
The updated repository is the same as above (SHA1 is of course different)
The results from Travis-CI: https://travis-ci.org/lmajewski/u-boot-dfu/jobs/456736504
https://travis-ci.org/lmajewski/u-boot-dfu/builds/457229385
The "buildman" rockchip build breaks after applying your patches.
The repo: https://github.com/lmajewski/u-boot-dfu/commits/testing
Some build breaks: https://travis-ci.org/lmajewski/u-boot-dfu/builds/457845111 https://travis-ci.org/lmajewski/u-boot-dfu/jobs/457845133
Please apply your patch series to newest u-boot's master.
already rebased on latest.
In the commit message please state all needed dependencies (or provide link to e.g. github repository so I can fetch it).
I pushed a new branch to github: https://github.com/jjhiblot/u-boot.git%C2%A0 dm_usb_dra7_v8
Only difference with v7 is rebasing on top of u-boot master and includes a fix for the Edison build.
Regarding the failing tests:
sandbox x86: The edison_defconfig is not strictly related to this series, but I found the error and it is part of the v8.
PXA (non toradex): This is not related to this series. It looks more like a test setup issue.
JJ
It breaks for e.g. OMAP.
Could you check this problem and resubmit patches?
Am I missing any more patches? Or maybe you have a Travis-CI "clean" branch/repo somewhere so I could use it ?
Thanks in advance, Łukasz
Changes in v7:
- replace remaining if() statements with ut_assert()
- Fix build issue "multiple definition of
`usb_gadget_handle_interrupts'"
- Fixed build issue "multiple definition of
`usb_gadget_handle_interrupts'"
Changes in v6:
- ti-pipe3-phy: take PLL out of IDLE in pipe3_init(). The PLL may
have been put into idle by pipe3_exit()
- DRA7 configs: enable DM_USB and DM_USB_DEV. Use DWC3_GENERIC in
place of DWC3_OF_SIMPLE. disable non DM USB options
- AM57 configs: enable DM_USB and DM_USB_DEV. Use DWC3_GENERIC in
place of DWC3_OF_SIMPLE. disable non DM USB options
- Supports DM USB for peripherals
- Removed DTS changes that disabled USB1 on DRA7 because
DM_USB_DEV is now supported
Changes in v5:
- Rebased on latest u-boot
- Removed patches that have already been merged
Changes in v4:
- Fix word missing in commit log
- Remove dependency on MISC
- Renamed the commit (DM_USB is already enabled, the only missing
option is for the USB2 phy driver)
- Remove dependency on MISC
- Remove omap specific glue layer and use dwc3-of-simple glue
layer
Changes in v3:
- in syscon_regmap_lookup_by_phandle(), use dev_dbg() instead of
printf()
- added unit test for syscon_regmap_lookup_by_phandle()
Changes in v2:
- Add USB3 support to ti-pipe3-phy driver
- omap-usb2-phy: Implement power_on and power_off callbacks
- am57xx boards: when DM_USB is used, turn on the required USB
clocks
- split dts changes in 2 commits: one for binding the children of ocp2scp@4a080000, and one to disable USB1 on all DRA7 EVMs
- Enable DM_USB in am57xx_evm_defconfig. USB3 (super speed) is
supported.
Jean-Jacques Hiblot (9): syscon: dm: Add a new method to get a regmap from DTS phy: Add a new driver for OMAP's USB2 PHYs dwc3-generic: Add support for the TI DWC3 glue board: ti: dra7xx-evm: turn on USB clocks in late init stage dts: dra7x: make ocp2scp@4a080000 compatible with simple-bus configs: enable DM_USB and DM_USB_DEV for all DRA7 platforms configs: am57xx_evm: Enable DM_USB and DM_USB_DEV board: ti: dra7-evm: remove USB platform code board: ti: am57xx: remove USB platform code
Vignesh R (2): phy: ti-pip3-phy: Add support for USB3 PHY board; ti: am57xx: turn on USB clocks
arch/arm/dts/omap5-u-boot.dtsi | 4 + arch/sandbox/dts/test.dts | 6 +- board/ti/am57xx/board.c | 106 ++++------------------ board/ti/dra7xx/evm.c | 123 ++++--------------------- configs/am57xx_evm_defconfig | 10 +- configs/am57xx_hs_evm_defconfig | 10 +- configs/dra7xx_evm_defconfig | 8 +- configs/dra7xx_hs_evm_defconfig | 8 +- drivers/core/syscon-uclass.c | 23 +++++ drivers/phy/Kconfig | 9 ++ drivers/phy/Makefile | 1 + drivers/phy/omap-usb2-phy.c | 196 ++++++++++++++++++++++++++++++++++++++++ drivers/phy/ti-pipe3-phy.c | 32 +++++-- drivers/usb/dwc3/dwc3-generic.c | 85 +++++++++++++++++ include/syscon.h | 13 +++ test/dm/syscon.c | 29 ++++++ 16 files changed, 448 insertions(+), 215 deletions(-) create mode 100644 drivers/phy/omap-usb2-phy.c
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-59 Fax: (+49)-8142-66989-80 Email: lukma@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-59 Fax: (+49)-8142-66989-80 Email: lukma@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-59 Fax: (+49)-8142-66989-80 Email: lukma@denx.de
participants (2)
-
Jean-Jacques Hiblot
-
Lukasz Majewski