Skip to contentSkip to conversation

Add support for DM_USB and DM_USB_DEV for TI's DRA7 EVMs and AM57 EVMs platforms.

PATCH Superseded Jean-Jacques Hiblot 2 participants 19 messages Nov 29, 2018

Subsystems (4)
lore
Share & tools
lore
#0 lore raw

v9 cover Add support for DM_USB and DM_USB_DEV for TI's DRA7 EVMs and AM57 EVMs platforms.

This series applies on top of the series "[PATCH v4 0/10] Improvements for the dwc3_generic driver"
The branch is also available on github:
https://github.com/jjhiblot/u-boot/tree/dm_usb_dra7_v9

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 v9
- rebased on top of latest u-boot/master
- use DM_USB_GADGET instead of DM_USB_DEV
- remove edison build fix (move to the dwc3 series)

Changes in v8:
- Fix edison build

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 at 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 at 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    |  12 ++-
 configs/am57xx_hs_evm_defconfig |  12 ++-
 configs/dra7xx_evm_defconfig    |  10 +-
 configs/dra7xx_hs_evm_defconfig |  10 +-
 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, 456 insertions(+), 215 deletions(-)
 create mode 100644 drivers/phy/omap-usb2-phy.c
Signature · 1 line
2.7.4
#1 lore raw

PATCH v9 1/11 syscon: dm: Add a new method to get a regmap from DTS

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.

---

Changes in v8: None
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(-)
arch/sandbox/dts/test.dts +4 -2
index 2c6b422..c41a7c9 100644
@@ -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 at 0 {
+	syscon0: syscon at 0 {
 		compatible = "sandbox,syscon0";
 		reg = <0x10 16>;
 	};
 
-	syscon at 1 {
+	another_system_controller: syscon at 1 {
 		compatible = "sandbox,syscon1";
 		reg = <0x20 5
 			0x28 6
drivers/core/syscon-uclass.c +23 -0
index 303e166..661cf61 100644
@@ -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;
include/syscon.h +13 -0
index 2aa73e5..3df96e3 100644
@@ -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
test/dm/syscon.c +29 -0
index 77c7928..a294dda 100644
@@ -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);
Signature · 1 line
2.7.4
#2 lore raw

PATCH v9 2/11 phy: ti-pip3-phy: Add support for USB3 PHY

In reply to Jean-Jacques Hiblot

From: Vignesh R <[email protected]>

Add support to handle USB3 PHYs present on AM57xx/DRA7xx SoCs. This is needed to move AM57xx to DM_USB.

---

Changes in v8: None
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(-)
drivers/phy/ti-pipe3-phy.c +24 -8
index b22bbaf..e7e78e3 100644
@@ -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},
 	{ }
 };
 
Signature · 1 line
2.7.4
#3 lore raw

PATCH v9 3/11 phy: Add a new driver for OMAP's USB2 PHYs

In reply to Jean-Jacques Hiblot

This drivers supports the USB2 PHY found on omap5 and dra7 SOCs.

---

Changes in v8: None
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
drivers/phy/Kconfig +9 -0
index 14d82b9..3921e39 100644
@@ -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
drivers/phy/Makefile +1 -0
index 8030d59..53dd5bd 100644
@@ -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
drivers/phy/omap-usb2-phy.c new file +196 -0

196 lines not on this page · raw message

Signature · 1 line
2.7.4
#4 lore raw

PATCH v9 4/11 dwc3-generic: Add support for the TI DWC3 glue

In reply to Jean-Jacques Hiblot

---

Changes in v8: None
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(+)
drivers/usb/dwc3/dwc3-generic.c +85 -0
index 6d9be9b..bc6bba1 100644
@@ -119,6 +119,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;
@@ -258,6 +342,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 },
 	{ }
 };
 
Signature · 1 line
2.7.4
#5 lore raw

PATCH v9 5/11 board: ti: dra7xx-evm: turn on USB clocks in late init stage

In reply to Jean-Jacques Hiblot

For USB ports that use the Driver Model, turn on the clocks during the late init stage.

---

Changes in v8: None
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(+)
board/ti/dra7xx/evm.c +19 -0
index bbe5445..b46bda2 100644
@@ -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 at 48880000"))
+		enable_usb_clocks(0);
+	if (device_okay("/ocp/omap_dwc3_2 at 488c0000"))
+		enable_usb_clocks(1);
+#endif
 	return 0;
 }
 
Signature · 1 line
2.7.4
#6 lore raw

PATCH v9 6/11 board; ti: am57xx: turn on USB clocks

In reply to Jean-Jacques Hiblot

From: Vignesh R <[email protected]>

Enable USB clocks in late init stage to support ports under DM_USB.

---

Changes in v8: None
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(+)
board/ti/am57xx/board.c +19 -0
index 177a324..8c24d17 100644
@@ -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 at 48880000"))
+		enable_usb_clocks(0);
+	if (device_okay("/ocp/omap_dwc3_2 at 488c0000"))
+		enable_usb_clocks(1);
+#endif
 	return 0;
 }
 
Signature · 1 line
2.7.4
#7 lore raw

PATCH v9 6/11 board; ti: am57xx: turn on USB clocks

Quoted 7 lines · Jean-Jacques Hiblot

From: Vignesh R <[email protected]>

Enable USB clocks in late init stage to support ports under DM_USB.

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

PATCH v9 7/11 dts: dra7x: make ocp2scp@4a080000 compatible with simple-bus

In reply to Jean-Jacques Hiblot

This is required when DM_USB is used, to bind the USB phys.

---

Changes in v8: None
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 at 4a080000, and one to disable USB1 on all DRA7 EVMs

 arch/arm/dts/omap5-u-boot.dtsi | 4 ++++
 1 file changed, 4 insertions(+)
arch/arm/dts/omap5-u-boot.dtsi +4 -0
index bf2684c..a6a7801 100644
@@ -15,6 +15,10 @@
 	ocp {
 		u-boot,dm-spl;
 
+		ocp2scp at 4a080000 {
+			compatible = "ti,omap-ocp2scp", "simple-bus";
+		};
+
 		ocp2scp at 4a090000 {
 			compatible = "ti,omap-ocp2scp", "simple-bus";
 		};
Signature · 1 line
2.7.4
#9 lore raw

PATCH v9 7/11 dts: dra7x: make ocp2scp@4a080000 compatible with simple-bus

Quoted 4 lines · Jean-Jacques Hiblot

This is required when DM_USB is used, to bind the USB phys.

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

PATCH v9 8/11 configs: enable DM_USB and DM_USB_DEV for all DRA7 platforms

In reply to Jean-Jacques Hiblot

---

Changes in v8: None
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           |  2 +-
 configs/dra7xx_evm_defconfig    | 10 ++++++----
 configs/dra7xx_hs_evm_defconfig | 10 ++++++----
 3 files changed, 13 insertions(+), 9 deletions(-)
board/ti/dra7xx/evm.c +1 -1
index b46bda2..0ddca29 100644
@@ -915,7 +915,7 @@ const struct mmc_platform_fixups *platform_fixups_mmc(uint32_t addr)
 }
 #endif
 
-#ifdef CONFIG_USB_DWC3
+#if defined(CONFIG_USB_DWC3) && !CONFIG_IS_ENABLED(DM_USB)
 static struct dwc3_device usb_otg_ss1 = {
 	.maximum_speed = USB_SPEED_SUPER,
 	.base = DRA7_USB_OTG_SS1_BASE,
configs/dra7xx_evm_defconfig +6 -4
index 27f6b5d..1d9509c 100644
@@ -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,14 @@ CONFIG_TIMER=y
 CONFIG_OMAP_TIMER=y
 CONFIG_USB=y
 CONFIG_DM_USB=y
+CONFIG_SPL_DM_USB=y
+CONFIG_DM_USB_GADGET=y
+CONFIG_SPL_DM_USB_GADGET=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"
configs/dra7xx_hs_evm_defconfig +6 -4
index 651fc4f..f3be339 100644
@@ -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,14 @@ CONFIG_TIMER=y
 CONFIG_OMAP_TIMER=y
 CONFIG_USB=y
 CONFIG_DM_USB=y
+CONFIG_SPL_DM_USB=y
+CONFIG_DM_USB_GADGET=y
+CONFIG_SPL_DM_USB_GADGET=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"
Signature · 1 line
2.7.4
#11 lore raw

PATCH v9 8/11 configs: enable DM_USB and DM_USB_DEV for all DRA7 platforms

Quoted 2 lines · Jean-Jacques Hiblot
Signature · 8 lines
Tom
-------------- next part --------------
A non-text attachment was scrubbed...
Name: signature.asc
Type: application/pgp-signature
Size: 819 bytes
Desc: not available
URL: <http://lists.denx.de/pipermail/u-boot/attachments/20181129/66101064/attachment.sig>
#12 lore raw

PATCH v9 9/11 configs: am57xx_evm: Enable DM_USB and DM_USB_DEV

In reply to Jean-Jacques Hiblot

Enable DM_USB and DM_USB_DEV for AM57xx based boards.

---

Changes in v8: None
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         |  4 +---
 configs/am57xx_evm_defconfig    | 12 +++++++++---
 configs/am57xx_hs_evm_defconfig | 12 +++++++++---
 3 files changed, 19 insertions(+), 9 deletions(-)
board/ti/am57xx/board.c +1 -3
index 8c24d17..bed2eb3 100644
@@ -883,7 +883,7 @@ int spl_start_uboot(void)
 }
 #endif
 
-#ifdef CONFIG_USB_DWC3
+#if defined(CONFIG_USB_DWC3) && !CONFIG_IS_ENABLED(DM_USB)
 static struct dwc3_device usb_otg_ss2 = {
 	.maximum_speed = USB_SPEED_HIGH,
 	.base = DRA7_USB_OTG_SS2_BASE,
@@ -912,9 +912,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);
configs/am57xx_evm_defconfig +9 -3
index 5242ab6..32a95ea 100644
@@ -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,15 @@ CONFIG_SPI=y
 CONFIG_DM_SPI=y
 CONFIG_TI_QSPI=y
 CONFIG_USB=y
+CONFIG_DM_USB=y
+CONFIG_SPL_DM_USB=y
+CONFIG_DM_USB_GADGET=y
+CONFIG_SPL_DM_USB_GADGET=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"
configs/am57xx_hs_evm_defconfig +9 -3
index be4aa0f..6a05738 100644
@@ -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,15 @@ CONFIG_SPI=y
 CONFIG_DM_SPI=y
 CONFIG_TI_QSPI=y
 CONFIG_USB=y
+CONFIG_DM_USB=y
+CONFIG_SPL_DM_USB=y
+CONFIG_DM_USB_GADGET=y
+CONFIG_SPL_DM_USB_GADGET=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"
Signature · 1 line
2.7.4
#13 lore raw

PATCH v9 9/11 configs: am57xx_evm: Enable DM_USB and DM_USB_DEV

Quoted 5 lines · Jean-Jacques Hiblot

Enable DM_USB and DM_USB_DEV for AM57xx based boards.

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

PATCH v9 10/11 board: ti: dra7-evm: remove USB platform code

In reply to Jean-Jacques Hiblot

---

Changes in v8: None
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 | 104 --------------------------------------------------
 1 file changed, 104 deletions(-)
board/ti/dra7xx/evm.c +0 -104
index 0ddca29..d69641e 100644
@@ -915,110 +915,6 @@ const struct mmc_platform_fixups *platform_fixups_mmc(uint32_t addr)
 }
 #endif
 
-#if defined(CONFIG_USB_DWC3) && !CONFIG_IS_ENABLED(DM_USB)
-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)
 {
Signature · 1 line
2.7.4
#15 lore raw

PATCH v9 10/11 board: ti: dra7-evm: remove USB platform code

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

PATCH v9 11/11 board: ti: am57xx: remove USB platform code

In reply to Jean-Jacques Hiblot

---

Changes in v8:
- Fix edison build

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 | 85 -------------------------------------------------
 1 file changed, 85 deletions(-)
board/ti/am57xx/board.c +0 -85
index bed2eb3..8dfb2ee 100644
@@ -883,91 +883,6 @@ int spl_start_uboot(void)
 }
 #endif
 
-#if defined(CONFIG_USB_DWC3) && !CONFIG_IS_ENABLED(DM_USB)
-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 */
Signature · 1 line
2.7.4
#17 lore raw

PATCH v9 11/11 board: ti: am57xx: remove USB platform code

Quoted 2 lines · Jean-Jacques Hiblot
Signature · 8 lines
Tom
-------------- next part --------------
A non-text attachment was scrubbed...
Name: signature.asc
Type: application/pgp-signature
Size: 819 bytes
Desc: not available
URL: <http://lists.denx.de/pipermail/u-boot/attachments/20181129/def59564/attachment.sig>
#18 lore raw

v9 cover Add support for DM_USB and DM_USB_DEV for TI's DRA7 EVMs and AM57 EVMs platforms.

In reply to Jean-Jacques Hiblot

I forgot to mention that there is travis running on :
https://travis-ci.org/jjhiblot/u-boot/builds/461182699

An earlier travis iteration (v9 was rebased on u-boot-usb:master at the time, not u-boot/master) is available here:
https://travis-ci.org/jjhiblot/u-boot/builds/460701054.

JJ

Quoted 97 lines · Jean-Jacques Hiblot

This series applies on top of the series "[PATCH v4 0/10] Improvements for the dwc3_generic driver"
The branch is also available on github:
https://github.com/jjhiblot/u-boot/tree/dm_usb_dra7_v9

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 v9
- rebased on top of latest u-boot/master
- use DM_USB_GADGET instead of DM_USB_DEV
- remove edison build fix (move to the dwc3 series)

Changes in v8:
- Fix edison build

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 at 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 at 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    |  12 ++-
  configs/am57xx_hs_evm_defconfig |  12 ++-
  configs/dra7xx_evm_defconfig    |  10 +-
  configs/dra7xx_hs_evm_defconfig |  10 +-
  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, 456 insertions(+), 215 deletions(-)

create mode 100644 drivers/phy/omap-usb2-phy.c