All of lore.kernel.org
 help / color / mirror / Atom feed
* [PATCH 0/5] usb: dwc3-uniphier: Replace the driver to use dwc3-generic
@ 2023-01-23  0:47 Kunihiko Hayashi
  2023-01-23  0:47 ` [PATCH 1/5] usb: dwc3-generic: Export glue structures and functions Kunihiko Hayashi
                   ` (4 more replies)
  0 siblings, 5 replies; 23+ messages in thread
From: Kunihiko Hayashi @ 2023-01-23  0:47 UTC (permalink / raw)
  To: Marek Vasut, Michal Simek, Sean Anderson, Angus Ainslie
  Cc: u-boot, Kunihiko Hayashi

This series exports the structures and functions from the driver source
to the header, and replaces dwc3-uniphier driver to use them.

This expects dwc3-generic to prevent more SoC-dependent codes.

Kunihiko Hayashi (5):
  usb: dwc3-generic: Export glue structures and functions
  usb: dwc3-generic: Add the size of regs property to glue structure
  usb: dwc3-generic: Add dependency on SIMPLE_BUS
  usb: dwc3-uniphier: Use dwc3-generic instead of xhci-dwc3
  uniphier_defconfig: Disable USB_XHCI_DWC3

 configs/uniphier_v7_defconfig    |  1 -
 configs/uniphier_v8_defconfig    |  1 -
 drivers/usb/dwc3/Kconfig         |  7 +--
 drivers/usb/dwc3/dwc3-generic.c  | 19 ++------
 drivers/usb/dwc3/dwc3-generic.h  | 32 +++++++++++++
 drivers/usb/dwc3/dwc3-uniphier.c | 79 ++++++++++++++++----------------
 6 files changed, 81 insertions(+), 58 deletions(-)
 create mode 100644 drivers/usb/dwc3/dwc3-generic.h

-- 
2.25.1


^ permalink raw reply	[flat|nested] 23+ messages in thread

* [PATCH 1/5] usb: dwc3-generic: Export glue structures and functions
  2023-01-23  0:47 [PATCH 0/5] usb: dwc3-uniphier: Replace the driver to use dwc3-generic Kunihiko Hayashi
@ 2023-01-23  0:47 ` Kunihiko Hayashi
  2023-01-23  1:38   ` Marek Vasut
  2023-01-23  0:47 ` [PATCH 2/5] usb: dwc3-generic: Add the size of regs property to glue structure Kunihiko Hayashi
                   ` (3 subsequent siblings)
  4 siblings, 1 reply; 23+ messages in thread
From: Kunihiko Hayashi @ 2023-01-23  0:47 UTC (permalink / raw)
  To: Marek Vasut, Michal Simek, Sean Anderson, Angus Ainslie
  Cc: u-boot, Kunihiko Hayashi

In order to allow external SoC-dependent glue drivers to use dwc3-generic
functions, push the glue structures and export the functions to a header
file.

The exported structures and functions are:

- struct dwc3_glue_data
- struct dwc3_glue_ops
- dwc3_glue_bind()
- dwc3_glue_probe()
- dwc3_glue_remove()

The SoC-dependent glue drivers can only define their own wrapper driver
and specify these functions. The drivers can also add their own compatible
strings and configure functions.

Signed-off-by: Kunihiko Hayashi <hayashi.kunihiko@socionext.com>
---
 drivers/usb/dwc3/dwc3-generic.c | 17 ++++-------------
 drivers/usb/dwc3/dwc3-generic.h | 31 +++++++++++++++++++++++++++++++
 2 files changed, 35 insertions(+), 13 deletions(-)
 create mode 100644 drivers/usb/dwc3/dwc3-generic.h

diff --git a/drivers/usb/dwc3/dwc3-generic.c b/drivers/usb/dwc3/dwc3-generic.c
index 78966718d0..1708ea14bb 100644
--- a/drivers/usb/dwc3/dwc3-generic.c
+++ b/drivers/usb/dwc3/dwc3-generic.c
@@ -28,11 +28,7 @@
 #include <usb/xhci.h>
 #include <asm/gpio.h>
 
-struct dwc3_glue_data {
-	struct clk_bulk		clks;
-	struct reset_ctl_bulk	resets;
-	fdt_addr_t regs;
-};
+#include "dwc3-generic.h"
 
 struct dwc3_generic_plat {
 	fdt_addr_t base;
@@ -258,11 +254,6 @@ U_BOOT_DRIVER(dwc3_generic_host) = {
 };
 #endif
 
-struct dwc3_glue_ops {
-	void (*glue_configure)(struct udevice *dev, int index,
-			       enum usb_dr_mode mode);
-};
-
 void dwc3_imx8mp_glue_configure(struct udevice *dev, int index,
 				enum usb_dr_mode mode)
 {
@@ -398,7 +389,7 @@ struct dwc3_glue_ops ti_ops = {
 	.glue_configure = dwc3_ti_glue_configure,
 };
 
-static int dwc3_glue_bind(struct udevice *parent)
+int dwc3_glue_bind(struct udevice *parent)
 {
 	ofnode node;
 	int ret;
@@ -493,7 +484,7 @@ static int dwc3_glue_clk_init(struct udevice *dev,
 	return 0;
 }
 
-static int dwc3_glue_probe(struct udevice *dev)
+int dwc3_glue_probe(struct udevice *dev)
 {
 	struct dwc3_glue_ops *ops = (struct dwc3_glue_ops *)dev_get_driver_data(dev);
 	struct dwc3_glue_data *glue = dev_get_plat(dev);
@@ -553,7 +544,7 @@ static int dwc3_glue_probe(struct udevice *dev)
 	return 0;
 }
 
-static int dwc3_glue_remove(struct udevice *dev)
+int dwc3_glue_remove(struct udevice *dev)
 {
 	struct dwc3_glue_data *glue = dev_get_plat(dev);
 
diff --git a/drivers/usb/dwc3/dwc3-generic.h b/drivers/usb/dwc3/dwc3-generic.h
new file mode 100644
index 0000000000..c7925ce4ae
--- /dev/null
+++ b/drivers/usb/dwc3/dwc3-generic.h
@@ -0,0 +1,31 @@
+/* SPDX-License-Identifier: GPL-2.0 */
+/**
+ * dwc3-generic.h - Generic DWC3 Glue layer header
+ *
+ * Copyright (C) 2016 - 2018 Xilinx, Inc.
+ * Copyright (C) 2023 Socionext Inc.
+ */
+
+#ifndef __DRIVERS_USB_DWC3_GENERIC_H
+#define __DRIVERS_USB_DWC3_GENERIC_H
+
+#include <clk.h>
+#include <reset.h>
+#include <dwc3-uboot.h>
+
+struct dwc3_glue_data {
+	struct clk_bulk		clks;
+	struct reset_ctl_bulk	resets;
+	fdt_addr_t regs;
+};
+
+struct dwc3_glue_ops {
+	void (*glue_configure)(struct udevice *dev, int index,
+			       enum usb_dr_mode mode);
+};
+
+int dwc3_glue_bind(struct udevice *parent);
+int dwc3_glue_probe(struct udevice *dev);
+int dwc3_glue_remove(struct udevice *dev);
+
+#endif
-- 
2.25.1


^ permalink raw reply related	[flat|nested] 23+ messages in thread

* [PATCH 2/5] usb: dwc3-generic: Add the size of regs property to glue structure
  2023-01-23  0:47 [PATCH 0/5] usb: dwc3-uniphier: Replace the driver to use dwc3-generic Kunihiko Hayashi
  2023-01-23  0:47 ` [PATCH 1/5] usb: dwc3-generic: Export glue structures and functions Kunihiko Hayashi
@ 2023-01-23  0:47 ` Kunihiko Hayashi
  2023-01-23  1:38   ` Marek Vasut
  2023-01-23  0:47 ` [PATCH 3/5] usb: dwc3-generic: Add dependency on SIMPLE_BUS Kunihiko Hayashi
                   ` (2 subsequent siblings)
  4 siblings, 1 reply; 23+ messages in thread
From: Kunihiko Hayashi @ 2023-01-23  0:47 UTC (permalink / raw)
  To: Marek Vasut, Michal Simek, Sean Anderson, Angus Ainslie
  Cc: u-boot, Kunihiko Hayashi

Add the size of regs property to the glue structure to correctly
specify the register region to map.

Signed-off-by: Kunihiko Hayashi <hayashi.kunihiko@socionext.com>
---
 drivers/usb/dwc3/dwc3-generic.c | 2 +-
 drivers/usb/dwc3/dwc3-generic.h | 1 +
 2 files changed, 2 insertions(+), 1 deletion(-)

diff --git a/drivers/usb/dwc3/dwc3-generic.c b/drivers/usb/dwc3/dwc3-generic.c
index 1708ea14bb..7ad26c454d 100644
--- a/drivers/usb/dwc3/dwc3-generic.c
+++ b/drivers/usb/dwc3/dwc3-generic.c
@@ -505,7 +505,7 @@ int dwc3_glue_probe(struct udevice *dev)
 		phy.dev = NULL;
 	}
 
-	glue->regs = dev_read_addr(dev);
+	glue->regs = dev_read_addr_size_index(dev, 0, &glue->size);
 
 	ret = dwc3_glue_clk_init(dev, glue);
 	if (ret)
diff --git a/drivers/usb/dwc3/dwc3-generic.h b/drivers/usb/dwc3/dwc3-generic.h
index c7925ce4ae..f1823a01f4 100644
--- a/drivers/usb/dwc3/dwc3-generic.h
+++ b/drivers/usb/dwc3/dwc3-generic.h
@@ -17,6 +17,7 @@ struct dwc3_glue_data {
 	struct clk_bulk		clks;
 	struct reset_ctl_bulk	resets;
 	fdt_addr_t regs;
+	fdt_size_t size;
 };
 
 struct dwc3_glue_ops {
-- 
2.25.1


^ permalink raw reply related	[flat|nested] 23+ messages in thread

* [PATCH 3/5] usb: dwc3-generic: Add dependency on SIMPLE_BUS
  2023-01-23  0:47 [PATCH 0/5] usb: dwc3-uniphier: Replace the driver to use dwc3-generic Kunihiko Hayashi
  2023-01-23  0:47 ` [PATCH 1/5] usb: dwc3-generic: Export glue structures and functions Kunihiko Hayashi
  2023-01-23  0:47 ` [PATCH 2/5] usb: dwc3-generic: Add the size of regs property to glue structure Kunihiko Hayashi
@ 2023-01-23  0:47 ` Kunihiko Hayashi
  2023-01-23  1:42   ` Marek Vasut
  2023-01-23  0:47 ` [PATCH 4/5] usb: dwc3-uniphier: Use dwc3-generic instead of xhci-dwc3 Kunihiko Hayashi
  2023-01-23  0:47 ` [PATCH 5/5] uniphier_defconfig: Disable USB_XHCI_DWC3 Kunihiko Hayashi
  4 siblings, 1 reply; 23+ messages in thread
From: Kunihiko Hayashi @ 2023-01-23  0:47 UTC (permalink / raw)
  To: Marek Vasut, Michal Simek, Sean Anderson, Angus Ainslie
  Cc: u-boot, Kunihiko Hayashi

The glue driver doesn't do or offer actively anything, SIMPLE_BUS is
more preferable to represent the driver.

Signed-off-by: Kunihiko Hayashi <hayashi.kunihiko@socionext.com>
---
 drivers/usb/dwc3/Kconfig | 4 ++--
 1 file changed, 2 insertions(+), 2 deletions(-)

diff --git a/drivers/usb/dwc3/Kconfig b/drivers/usb/dwc3/Kconfig
index f010291d02..dadaa083e7 100644
--- a/drivers/usb/dwc3/Kconfig
+++ b/drivers/usb/dwc3/Kconfig
@@ -25,14 +25,14 @@ config USB_DWC3_OMAP
 
 config USB_DWC3_GENERIC
 	bool "Generic implementation of a DWC3 wrapper (aka dwc3 glue)"
-	depends on DM_USB && USB_DWC3 && MISC
+	depends on DM_USB && USB_DWC3 && (MISC || SIMPLE_BUS)
 	help
 	  Select this for Xilinx ZynqMP and similar Platforms.
 	  This wrapper supports Host and Peripheral operation modes.
 
 config SPL_USB_DWC3_GENERIC
 	bool "Generic implementation of a DWC3 wrapper (aka dwc3 glue) for the SPL"
-	depends on SPL_DM_USB && USB_DWC3 && SPL_MISC
+	depends on SPL_DM_USB && USB_DWC3 && (SPL_MISC || SPL_SIMPLE_BUS)
 	help
 	  Select this for Xilinx ZynqMP and similar Platforms.
 	  This wrapper supports Host and Peripheral operation modes.
-- 
2.25.1


^ permalink raw reply related	[flat|nested] 23+ messages in thread

* [PATCH 4/5] usb: dwc3-uniphier: Use dwc3-generic instead of xhci-dwc3
  2023-01-23  0:47 [PATCH 0/5] usb: dwc3-uniphier: Replace the driver to use dwc3-generic Kunihiko Hayashi
                   ` (2 preceding siblings ...)
  2023-01-23  0:47 ` [PATCH 3/5] usb: dwc3-generic: Add dependency on SIMPLE_BUS Kunihiko Hayashi
@ 2023-01-23  0:47 ` Kunihiko Hayashi
  2023-01-23  1:44   ` Marek Vasut
  2023-01-23  0:47 ` [PATCH 5/5] uniphier_defconfig: Disable USB_XHCI_DWC3 Kunihiko Hayashi
  4 siblings, 1 reply; 23+ messages in thread
From: Kunihiko Hayashi @ 2023-01-23  0:47 UTC (permalink / raw)
  To: Marek Vasut, Michal Simek, Sean Anderson, Angus Ainslie
  Cc: u-boot, Kunihiko Hayashi

dwc3-uniphier depends on xhci-dwc3 framework, however, it is preferable
to use dwc3-generic.

This driver calls the exported dwc3-generic functions and redefine
the SoC-dependent operations to fit dwc3-generic.

Signed-off-by: Kunihiko Hayashi <hayashi.kunihiko@socionext.com>
---
 drivers/usb/dwc3/Kconfig         |  3 +-
 drivers/usb/dwc3/dwc3-uniphier.c | 79 ++++++++++++++++----------------
 2 files changed, 42 insertions(+), 40 deletions(-)

diff --git a/drivers/usb/dwc3/Kconfig b/drivers/usb/dwc3/Kconfig
index dadaa083e7..dbd14b1e90 100644
--- a/drivers/usb/dwc3/Kconfig
+++ b/drivers/usb/dwc3/Kconfig
@@ -55,7 +55,8 @@ config USB_DWC3_MESON_GXL
 
 config USB_DWC3_UNIPHIER
 	bool "DesignWare USB3 Host Support on UniPhier Platforms"
-	depends on ARCH_UNIPHIER && USB_XHCI_DWC3
+	depends on ARCH_UNIPHIER && USB_DWC3
+	select USB_DWC3_GENERIC
 	help
 	  Support of USB2/3 functionality in Socionext UniPhier platforms.
 	  Say 'Y' here if you have one such device.
diff --git a/drivers/usb/dwc3/dwc3-uniphier.c b/drivers/usb/dwc3/dwc3-uniphier.c
index 54b52dcd66..175a97c5e4 100644
--- a/drivers/usb/dwc3/dwc3-uniphier.c
+++ b/drivers/usb/dwc3/dwc3-uniphier.c
@@ -4,14 +4,16 @@
  *
  * Copyright (C) 2016-2017 Socionext Inc.
  *   Author: Masahiro Yamada <yamada.masahiro@socionext.com>
+ *   Author: Kunihiko Hayashi <hayashi.kunihiko@socionext.com>
  */
 
 #include <dm.h>
-#include <dm/device_compat.h>
 #include <linux/bitops.h>
-#include <linux/errno.h>
-#include <linux/io.h>
-#include <linux/sizes.h>
+#include <linux/usb/gadget.h>
+
+#include "core.h"
+#include "gadget.h"
+#include "dwc3-generic.h"
 
 #define UNIPHIER_PRO4_DWC3_RESET	0x40
 #define   UNIPHIER_PRO4_DWC3_RESET_XIOMMU	BIT(5)
@@ -27,8 +29,11 @@
 #define UNIPHIER_PXS2_DWC3_RESET	0x00
 #define   UNIPHIER_PXS2_DWC3_RESET_XLINK	BIT(15)
 
-static int uniphier_pro4_dwc3_init(void __iomem *regs)
+static void uniphier_pro4_dwc3_init(struct udevice *dev, int index,
+				    enum usb_dr_mode mode)
 {
+	struct dwc3_glue_data *glue = dev_get_plat(dev);
+	void *regs = map_physmem(glue->regs, glue->size, MAP_NOCACHE);
 	u32 tmp;
 
 	tmp = readl(regs + UNIPHIER_PRO4_DWC3_RESET);
@@ -36,11 +41,14 @@ static int uniphier_pro4_dwc3_init(void __iomem *regs)
 	tmp |= UNIPHIER_PRO4_DWC3_RESET_XIOMMU | UNIPHIER_PRO4_DWC3_RESET_XLINK;
 	writel(tmp, regs + UNIPHIER_PRO4_DWC3_RESET);
 
-	return 0;
+	unmap_physmem(regs, MAP_NOCACHE);
 }
 
-static int uniphier_pro5_dwc3_init(void __iomem *regs)
+static void uniphier_pro5_dwc3_init(struct udevice *dev, int index,
+				    enum usb_dr_mode mode)
 {
+	struct dwc3_glue_data *glue = dev_get_plat(dev);
+	void *regs = map_physmem(glue->regs, glue->size, MAP_NOCACHE);
 	u32 tmp;
 
 	tmp = readl(regs + UNIPHIER_PRO5_DWC3_RESET);
@@ -49,72 +57,65 @@ static int uniphier_pro5_dwc3_init(void __iomem *regs)
 	tmp |= UNIPHIER_PRO5_DWC3_RESET_XLINK | UNIPHIER_PRO5_DWC3_RESET_XIOMMU;
 	writel(tmp, regs + UNIPHIER_PRO5_DWC3_RESET);
 
-	return 0;
+	unmap_physmem(regs, MAP_NOCACHE);
 }
 
-static int uniphier_pxs2_dwc3_init(void __iomem *regs)
+static void uniphier_pxs2_dwc3_init(struct udevice *dev, int index,
+				    enum usb_dr_mode mode)
 {
+	struct dwc3_glue_data *glue = dev_get_plat(dev);
+	void *regs = map_physmem(glue->regs, glue->size, MAP_NOCACHE);
 	u32 tmp;
 
 	tmp = readl(regs + UNIPHIER_PXS2_DWC3_RESET);
 	tmp |= UNIPHIER_PXS2_DWC3_RESET_XLINK;
 	writel(tmp, regs + UNIPHIER_PXS2_DWC3_RESET);
 
-	return 0;
+	unmap_physmem(regs, MAP_NOCACHE);
 }
 
-static int uniphier_dwc3_probe(struct udevice *dev)
-{
-	fdt_addr_t base;
-	void __iomem *regs;
-	int (*init)(void __iomem *regs);
-	int ret;
-
-	base = dev_read_addr(dev);
-	if (base == FDT_ADDR_T_NONE)
-		return -EINVAL;
-
-	regs = ioremap(base, SZ_32K);
-	if (!regs)
-		return -ENOMEM;
-
-	init = (typeof(init))dev_get_driver_data(dev);
-	ret = init(regs);
-	if (ret)
-		dev_err(dev, "failed to init glue layer\n");
+struct dwc3_glue_ops uniphier_pro4_dwc3_ops = {
+	.glue_configure = uniphier_pro4_dwc3_init,
+};
 
-	iounmap(regs);
+struct dwc3_glue_ops uniphier_pro5_dwc3_ops = {
+	.glue_configure = uniphier_pro5_dwc3_init,
+};
 
-	return ret;
-}
+struct dwc3_glue_ops uniphier_pxs2_dwc3_ops = {
+	.glue_configure = uniphier_pxs2_dwc3_init,
+};
 
 static const struct udevice_id uniphier_dwc3_match[] = {
 	{
 		.compatible = "socionext,uniphier-pro4-dwc3",
-		.data = (ulong)uniphier_pro4_dwc3_init,
+		.data = (ulong)&uniphier_pro4_dwc3_ops,
 	},
 	{
 		.compatible = "socionext,uniphier-pro5-dwc3",
-		.data = (ulong)uniphier_pro5_dwc3_init,
+		.data = (ulong)&uniphier_pro5_dwc3_ops,
 	},
 	{
 		.compatible = "socionext,uniphier-pxs2-dwc3",
-		.data = (ulong)uniphier_pxs2_dwc3_init,
+		.data = (ulong)&uniphier_pxs2_dwc3_ops,
 	},
 	{
 		.compatible = "socionext,uniphier-ld20-dwc3",
-		.data = (ulong)uniphier_pxs2_dwc3_init,
+		.data = (ulong)&uniphier_pxs2_dwc3_ops,
 	},
 	{
 		.compatible = "socionext,uniphier-pxs3-dwc3",
-		.data = (ulong)uniphier_pxs2_dwc3_init,
+		.data = (ulong)&uniphier_pxs2_dwc3_ops,
 	},
 	{ /* sentinel */ }
 };
 
-U_BOOT_DRIVER(usb_xhci) = {
+U_BOOT_DRIVER(dwc3_uniphier_wrapper) = {
 	.name = "uniphier-dwc3",
 	.id = UCLASS_SIMPLE_BUS,
 	.of_match = uniphier_dwc3_match,
-	.probe = uniphier_dwc3_probe,
+	.bind = dwc3_glue_bind,
+	.probe = dwc3_glue_probe,
+	.remove = dwc3_glue_remove,
+	.plat_auto = sizeof(struct dwc3_glue_data),
 };
-- 
2.25.1


^ permalink raw reply related	[flat|nested] 23+ messages in thread

* [PATCH 5/5] uniphier_defconfig: Disable USB_XHCI_DWC3
  2023-01-23  0:47 [PATCH 0/5] usb: dwc3-uniphier: Replace the driver to use dwc3-generic Kunihiko Hayashi
                   ` (3 preceding siblings ...)
  2023-01-23  0:47 ` [PATCH 4/5] usb: dwc3-uniphier: Use dwc3-generic instead of xhci-dwc3 Kunihiko Hayashi
@ 2023-01-23  0:47 ` Kunihiko Hayashi
  2023-01-23  1:44   ` Marek Vasut
  4 siblings, 1 reply; 23+ messages in thread
From: Kunihiko Hayashi @ 2023-01-23  0:47 UTC (permalink / raw)
  To: Marek Vasut, Michal Simek, Sean Anderson, Angus Ainslie
  Cc: u-boot, Kunihiko Hayashi

Replacing with dwc3-generic, no need USB_XHCI_DWC3 anymore.

Signed-off-by: Kunihiko Hayashi <hayashi.kunihiko@socionext.com>
---
 configs/uniphier_v7_defconfig | 1 -
 configs/uniphier_v8_defconfig | 1 -
 2 files changed, 2 deletions(-)

diff --git a/configs/uniphier_v7_defconfig b/configs/uniphier_v7_defconfig
index d626968c76..03feb04b93 100644
--- a/configs/uniphier_v7_defconfig
+++ b/configs/uniphier_v7_defconfig
@@ -82,7 +82,6 @@ CONFIG_DM_SPI=y
 CONFIG_UNIPHIER_SPI=y
 CONFIG_USB=y
 CONFIG_USB_XHCI_HCD=y
-CONFIG_USB_XHCI_DWC3=y
 CONFIG_USB_EHCI_HCD=y
 CONFIG_USB_EHCI_GENERIC=y
 CONFIG_USB_DWC3=y
diff --git a/configs/uniphier_v8_defconfig b/configs/uniphier_v8_defconfig
index 6a0e2666cf..ed58b5746e 100644
--- a/configs/uniphier_v8_defconfig
+++ b/configs/uniphier_v8_defconfig
@@ -71,7 +71,6 @@ CONFIG_SYSRESET=y
 CONFIG_SYSRESET_PSCI=y
 CONFIG_USB=y
 CONFIG_USB_XHCI_HCD=y
-CONFIG_USB_XHCI_DWC3=y
 CONFIG_USB_EHCI_HCD=y
 CONFIG_USB_EHCI_GENERIC=y
 CONFIG_USB_DWC3=y
-- 
2.25.1


^ permalink raw reply related	[flat|nested] 23+ messages in thread

* Re: [PATCH 1/5] usb: dwc3-generic: Export glue structures and functions
  2023-01-23  0:47 ` [PATCH 1/5] usb: dwc3-generic: Export glue structures and functions Kunihiko Hayashi
@ 2023-01-23  1:38   ` Marek Vasut
  0 siblings, 0 replies; 23+ messages in thread
From: Marek Vasut @ 2023-01-23  1:38 UTC (permalink / raw)
  To: Kunihiko Hayashi, Michal Simek, Sean Anderson, Angus Ainslie; +Cc: u-boot

On 1/23/23 01:47, Kunihiko Hayashi wrote:
> In order to allow external SoC-dependent glue drivers to use dwc3-generic
> functions, push the glue structures and export the functions to a header
> file.
> 
> The exported structures and functions are:
> 
> - struct dwc3_glue_data
> - struct dwc3_glue_ops
> - dwc3_glue_bind()
> - dwc3_glue_probe()
> - dwc3_glue_remove()
> 
> The SoC-dependent glue drivers can only define their own wrapper driver
> and specify these functions. The drivers can also add their own compatible
> strings and configure functions.
> 
> Signed-off-by: Kunihiko Hayashi <hayashi.kunihiko@socionext.com>

Reviewed-by: Marek Vasut <marex@denx.de>

^ permalink raw reply	[flat|nested] 23+ messages in thread

* Re: [PATCH 2/5] usb: dwc3-generic: Add the size of regs property to glue structure
  2023-01-23  0:47 ` [PATCH 2/5] usb: dwc3-generic: Add the size of regs property to glue structure Kunihiko Hayashi
@ 2023-01-23  1:38   ` Marek Vasut
  0 siblings, 0 replies; 23+ messages in thread
From: Marek Vasut @ 2023-01-23  1:38 UTC (permalink / raw)
  To: Kunihiko Hayashi, Michal Simek, Sean Anderson, Angus Ainslie; +Cc: u-boot

On 1/23/23 01:47, Kunihiko Hayashi wrote:
> Add the size of regs property to the glue structure to correctly
> specify the register region to map.
> 
> Signed-off-by: Kunihiko Hayashi <hayashi.kunihiko@socionext.com>

Reviewed-by: Marek Vasut <marex@denx.de>

^ permalink raw reply	[flat|nested] 23+ messages in thread

* Re: [PATCH 3/5] usb: dwc3-generic: Add dependency on SIMPLE_BUS
  2023-01-23  0:47 ` [PATCH 3/5] usb: dwc3-generic: Add dependency on SIMPLE_BUS Kunihiko Hayashi
@ 2023-01-23  1:42   ` Marek Vasut
  2023-01-23  3:08     ` Kunihiko Hayashi
  0 siblings, 1 reply; 23+ messages in thread
From: Marek Vasut @ 2023-01-23  1:42 UTC (permalink / raw)
  To: Kunihiko Hayashi, Michal Simek, Sean Anderson, Angus Ainslie; +Cc: u-boot

On 1/23/23 01:47, Kunihiko Hayashi wrote:
> The glue driver doesn't do or offer actively anything, SIMPLE_BUS is
> more preferable to represent the driver.
> 
> Signed-off-by: Kunihiko Hayashi <hayashi.kunihiko@socionext.com>
> ---
>   drivers/usb/dwc3/Kconfig | 4 ++--
>   1 file changed, 2 insertions(+), 2 deletions(-)
> 
> diff --git a/drivers/usb/dwc3/Kconfig b/drivers/usb/dwc3/Kconfig
> index f010291d02..dadaa083e7 100644
> --- a/drivers/usb/dwc3/Kconfig
> +++ b/drivers/usb/dwc3/Kconfig
> @@ -25,14 +25,14 @@ config USB_DWC3_OMAP
>   
>   config USB_DWC3_GENERIC
>   	bool "Generic implementation of a DWC3 wrapper (aka dwc3 glue)"
> -	depends on DM_USB && USB_DWC3 && MISC
> +	depends on DM_USB && USB_DWC3 && (MISC || SIMPLE_BUS)

I'm afraid I don't understand why this change is needed for all variants 
of DWC3.

Is this needed for socionext dwc3 variant to handle the simple-mfd in 
e.g. arch/arm/dts/uniphier-pxs3.dtsi :

614 usb-glue@65b00000 {
615     compatible = "socionext,uniphier-pxs3-dwc3-glue",
616              "simple-mfd";

?

^ permalink raw reply	[flat|nested] 23+ messages in thread

* Re: [PATCH 4/5] usb: dwc3-uniphier: Use dwc3-generic instead of xhci-dwc3
  2023-01-23  0:47 ` [PATCH 4/5] usb: dwc3-uniphier: Use dwc3-generic instead of xhci-dwc3 Kunihiko Hayashi
@ 2023-01-23  1:44   ` Marek Vasut
  0 siblings, 0 replies; 23+ messages in thread
From: Marek Vasut @ 2023-01-23  1:44 UTC (permalink / raw)
  To: Kunihiko Hayashi, Michal Simek, Sean Anderson, Angus Ainslie; +Cc: u-boot

On 1/23/23 01:47, Kunihiko Hayashi wrote:
> dwc3-uniphier depends on xhci-dwc3 framework, however, it is preferable
> to use dwc3-generic.
> 
> This driver calls the exported dwc3-generic functions and redefine
> the SoC-dependent operations to fit dwc3-generic.
> 
> Signed-off-by: Kunihiko Hayashi <hayashi.kunihiko@socionext.com>

Reviewed-by: Marek Vasut <marex@denx.de>

^ permalink raw reply	[flat|nested] 23+ messages in thread

* Re: [PATCH 5/5] uniphier_defconfig: Disable USB_XHCI_DWC3
  2023-01-23  0:47 ` [PATCH 5/5] uniphier_defconfig: Disable USB_XHCI_DWC3 Kunihiko Hayashi
@ 2023-01-23  1:44   ` Marek Vasut
  0 siblings, 0 replies; 23+ messages in thread
From: Marek Vasut @ 2023-01-23  1:44 UTC (permalink / raw)
  To: Kunihiko Hayashi, Michal Simek, Sean Anderson, Angus Ainslie; +Cc: u-boot

On 1/23/23 01:47, Kunihiko Hayashi wrote:
> Replacing with dwc3-generic, no need USB_XHCI_DWC3 anymore.
> 
> Signed-off-by: Kunihiko Hayashi <hayashi.kunihiko@socionext.com>

Reviewed-by: Marek Vasut <marex@denx.de>

^ permalink raw reply	[flat|nested] 23+ messages in thread

* Re: [PATCH 3/5] usb: dwc3-generic: Add dependency on SIMPLE_BUS
  2023-01-23  1:42   ` Marek Vasut
@ 2023-01-23  3:08     ` Kunihiko Hayashi
  2023-01-23  3:37       ` Marek Vasut
  0 siblings, 1 reply; 23+ messages in thread
From: Kunihiko Hayashi @ 2023-01-23  3:08 UTC (permalink / raw)
  To: Marek Vasut; +Cc: Michal Simek, Sean Anderson, Angus Ainslie, u-boot

Hi Marek,

Thank you for reviewing.

On 2023/01/23 10:42, Marek Vasut wrote:
> On 1/23/23 01:47, Kunihiko Hayashi wrote:
>> The glue driver doesn't do or offer actively anything, SIMPLE_BUS is
>> more preferable to represent the driver.
>>
>> Signed-off-by: Kunihiko Hayashi <hayashi.kunihiko@socionext.com>
>> ---
>>    drivers/usb/dwc3/Kconfig | 4 ++--
>>    1 file changed, 2 insertions(+), 2 deletions(-)
>>
>> diff --git a/drivers/usb/dwc3/Kconfig b/drivers/usb/dwc3/Kconfig
>> index f010291d02..dadaa083e7 100644
>> --- a/drivers/usb/dwc3/Kconfig
>> +++ b/drivers/usb/dwc3/Kconfig
>> @@ -25,14 +25,14 @@ config USB_DWC3_OMAP
>>    
>>    config USB_DWC3_GENERIC
>>    	bool "Generic implementation of a DWC3 wrapper (aka dwc3 glue)"
>> -	depends on DM_USB && USB_DWC3 && MISC
>> +	depends on DM_USB && USB_DWC3 && (MISC || SIMPLE_BUS)
> 
> I'm afraid I don't understand why this change is needed for all variants
> of DWC3.

Although dwc3-generic is declared as UCLASS_NOP, the similar glue driver
dwc3-meson-glx is declared as UCLASS_SIMPLE_BUS.

> Is this needed for socionext dwc3 variant to handle the simple-mfd in
> e.g. arch/arm/dts/uniphier-pxs3.dtsi :
> 
> 614 usb-glue@65b00000 {
> 615     compatible = "socionext,uniphier-pxs3-dwc3-glue",
> 616              "simple-mfd";
> 
> ?

In case of U-Boot, the glue driver is probed by:

     /* FIXME: U-Boot own node */
     usb@65b00000 {
             compatible = "socionext,uniphier-pxs3-dwc3";

And dwc3-uniphier is also declared as UCLASS_SIMPLE_BUS.
Even if using "simple-mfd", this is included in drivers/core/simple-bus.c
which is declared as UCLASS_SIMPLE_BUS.

Thank you,

---
Best Regards
Kunihiko Hayashi

^ permalink raw reply	[flat|nested] 23+ messages in thread

* Re: [PATCH 3/5] usb: dwc3-generic: Add dependency on SIMPLE_BUS
  2023-01-23  3:08     ` Kunihiko Hayashi
@ 2023-01-23  3:37       ` Marek Vasut
  2023-01-23  5:01         ` Kunihiko Hayashi
  0 siblings, 1 reply; 23+ messages in thread
From: Marek Vasut @ 2023-01-23  3:37 UTC (permalink / raw)
  To: Kunihiko Hayashi; +Cc: Michal Simek, Sean Anderson, Angus Ainslie, u-boot

On 1/23/23 04:08, Kunihiko Hayashi wrote:

Hello Hayashi-san,

>>> diff --git a/drivers/usb/dwc3/Kconfig b/drivers/usb/dwc3/Kconfig
>>> index f010291d02..dadaa083e7 100644
>>> --- a/drivers/usb/dwc3/Kconfig
>>> +++ b/drivers/usb/dwc3/Kconfig
>>> @@ -25,14 +25,14 @@ config USB_DWC3_OMAP
>>>    config USB_DWC3_GENERIC
>>>        bool "Generic implementation of a DWC3 wrapper (aka dwc3 glue)"
>>> -    depends on DM_USB && USB_DWC3 && MISC
>>> +    depends on DM_USB && USB_DWC3 && (MISC || SIMPLE_BUS)
>>
>> I'm afraid I don't understand why this change is needed for all variants
>> of DWC3.
> 
> Although dwc3-generic is declared as UCLASS_NOP, the similar glue driver
> dwc3-meson-glx is declared as UCLASS_SIMPLE_BUS.

I think here it makes sense, because "amlogic,meson-axg-usb-ctrl" 
behaves like a bus with subnodes:

arch/arm/dts/meson-axg.dtsi:
  227 usb: usb@ffe09080 {
  228     compatible = "amlogic,meson-axg-usb-ctrl";
  229     reg = <0x0 0xffe09080 0x0 0x20>;
...
  244     dwc2: usb@ff400000 {
  245         compatible = "amlogic,meson-g12a-usb", "snps,dwc2";
  246         reg = <0x0 0xff400000 0x0 0x40000>;
...
  255     };
  256
  257     dwc3: usb@ff500000 {
  258         compatible = "snps,dwc3";
  259         reg = <0x0 0xff500000 0x0 0x100000>;
...
  264     };
  265 };

arch/arm/dts/meson-gxl.dtsi
  17 usb: usb@d0078080 {
  18     compatible = "amlogic,meson-gxl-usb-ctrl";
  19     reg = <0x0 0xd0078080 0x0 0x20>;
...
  34     dwc2: usb@c9100000 {
  35         compatible = "amlogic,meson-g12a-usb", "snps,dwc2";
  36         reg = <0x0 0xc9100000 0x0 0x40000>;
...
  45     };
  46
  47     dwc3: usb@c9000000 {
  48         compatible = "snps,dwc3";
  49         reg = <0x0 0xc9000000 0x0 0x100000>;
...
  54     };
  55 };

On the other hand, the PXS2 controller for example is not a bus:

arch/arm/dts/uniphier-pxs2.dtsi:
596 _usb0: usb@65a00000 {
597     compatible = "socionext,uniphier-dwc3", "snps,dwc3";
598     status = "disabled";
599     reg = <0x65a00000 0xcd00>;
...
610 };

>> Is this needed for socionext dwc3 variant to handle the simple-mfd in
>> e.g. arch/arm/dts/uniphier-pxs3.dtsi :
>>
>> 614 usb-glue@65b00000 {
>> 615     compatible = "socionext,uniphier-pxs3-dwc3-glue",
>> 616              "simple-mfd";
>>
>> ?
> 
> In case of U-Boot, the glue driver is probed by:
> 
>      /* FIXME: U-Boot own node */
>      usb@65b00000 {
>              compatible = "socionext,uniphier-pxs3-dwc3";
> 
> And dwc3-uniphier is also declared as UCLASS_SIMPLE_BUS.
> Even if using "simple-mfd", this is included in drivers/core/simple-bus.c
> which is declared as UCLASS_SIMPLE_BUS.

If I understand this correctly, node compatible with 
"socionext,uniphier-pxs3-dwc3-glue" is not used at all , right ?

The generic driver binds to node compatible with 
"socionext,uniphier-dwc3" , right ?

That means, there is nothing which would be a bus, and so the 
dwc3-uniphier.c can be switched from UCLASS_SIMPLE_BUS to UCLASS_NOP , 
is that correct ?

[...]

^ permalink raw reply	[flat|nested] 23+ messages in thread

* Re: [PATCH 3/5] usb: dwc3-generic: Add dependency on SIMPLE_BUS
  2023-01-23  3:37       ` Marek Vasut
@ 2023-01-23  5:01         ` Kunihiko Hayashi
  2023-01-23 15:49           ` Marek Vasut
  0 siblings, 1 reply; 23+ messages in thread
From: Kunihiko Hayashi @ 2023-01-23  5:01 UTC (permalink / raw)
  To: Marek Vasut; +Cc: Michal Simek, Sean Anderson, Angus Ainslie, u-boot

Hi Marek,

On 2023/01/23 12:37, Marek Vasut wrote:
> On 1/23/23 04:08, Kunihiko Hayashi wrote:
> 
> Hello Hayashi-san,
> 
>>>> diff --git a/drivers/usb/dwc3/Kconfig b/drivers/usb/dwc3/Kconfig
>>>> index f010291d02..dadaa083e7 100644
>>>> --- a/drivers/usb/dwc3/Kconfig
>>>> +++ b/drivers/usb/dwc3/Kconfig
>>>> @@ -25,14 +25,14 @@ config USB_DWC3_OMAP
>>>>     config USB_DWC3_GENERIC
>>>>         bool "Generic implementation of a DWC3 wrapper (aka dwc3 glue)"
>>>> -    depends on DM_USB && USB_DWC3 && MISC
>>>> +    depends on DM_USB && USB_DWC3 && (MISC || SIMPLE_BUS)
>>>
>>> I'm afraid I don't understand why this change is needed for all variants
>>> of DWC3.
>>
>> Although dwc3-generic is declared as UCLASS_NOP, the similar glue driver
>> dwc3-meson-glx is declared as UCLASS_SIMPLE_BUS.
> 
> I think here it makes sense, because "amlogic,meson-axg-usb-ctrl"
> behaves like a bus with subnodes:
> 
> arch/arm/dts/meson-axg.dtsi:
>    227 usb: usb@ffe09080 {
>    228     compatible = "amlogic,meson-axg-usb-ctrl";
>    229     reg = <0x0 0xffe09080 0x0 0x20>;
> ...
>    244     dwc2: usb@ff400000 {
>    245         compatible = "amlogic,meson-g12a-usb", "snps,dwc2";
>    246         reg = <0x0 0xff400000 0x0 0x40000>;
> ...
>    255     };
>    256
>    257     dwc3: usb@ff500000 {
>    258         compatible = "snps,dwc3";
>    259         reg = <0x0 0xff500000 0x0 0x100000>;
> ...
>    264     };
>    265 };
> 
> arch/arm/dts/meson-gxl.dtsi
>    17 usb: usb@d0078080 {
>    18     compatible = "amlogic,meson-gxl-usb-ctrl";
>    19     reg = <0x0 0xd0078080 0x0 0x20>;
> ...
>    34     dwc2: usb@c9100000 {
>    35         compatible = "amlogic,meson-g12a-usb", "snps,dwc2";
>    36         reg = <0x0 0xc9100000 0x0 0x40000>;
> ...
>    45     };
>    46
>    47     dwc3: usb@c9000000 {
>    48         compatible = "snps,dwc3";
>    49         reg = <0x0 0xc9000000 0x0 0x100000>;
> ...
>    54     };
>    55 };
> 
> On the other hand, the PXS2 controller for example is not a bus:
> 
> arch/arm/dts/uniphier-pxs2.dtsi:
> 596 _usb0: usb@65a00000 {
> 597     compatible = "socionext,uniphier-dwc3", "snps,dwc3";
> 598     status = "disabled";
> 599     reg = <0x65a00000 0xcd00>;
> ...
> 610 };

I understand. However, this node isn't used in u-boot.
(see below for details)

>>> Is this needed for socionext dwc3 variant to handle the simple-mfd in
>>> e.g. arch/arm/dts/uniphier-pxs3.dtsi :
>>>
>>> 614 usb-glue@65b00000 {
>>> 615     compatible = "socionext,uniphier-pxs3-dwc3-glue",
>>> 616              "simple-mfd";
>>>
>>> ?
>>
>> In case of U-Boot, the glue driver is probed by:
>>
>>       /* FIXME: U-Boot own node */
>>       usb@65b00000 {
>>               compatible = "socionext,uniphier-pxs3-dwc3";
>>
>> And dwc3-uniphier is also declared as UCLASS_SIMPLE_BUS.
>> Even if using "simple-mfd", this is included in drivers/core/simple-bus.c
>> which is declared as UCLASS_SIMPLE_BUS.
> 
> If I understand this correctly, node compatible with
> "socionext,uniphier-pxs3-dwc3-glue" is not used at all , right ?

Yes.
Original uniphier devicetree has the following usb nodes.

     usb@65a00000 {
         compatible = "snps,dwc3";
     };
     usb-glue@65b00000 {
         compatible = "socionext,uniphier-pxs3-dwc3-glue", "simple-mfd";
     };

However, U-Boot dwc3-generic needs to put dwc3 node under the glue node.
Due to this restriction, there is another usb node dedicated to u-boot.

     /* FIXME: U-Boot own node */
     usb@65b00000 { /* glue */
         compatible = "socionext,uniphier-pxs3-dwc3";

         dwc3@65a00000 {
             compatible = "snps,dwc3";
         };
     };

So instead of "socionext,uniphier-pxs3-dwc3-glue", the glue driver
uses "socionext,uniphier-pxs3-dwc3" in U-Boot.

> The generic driver binds to node compatible with
> "socionext,uniphier-dwc3" , right ?

No, the generic driver binds "socionext,uniphier-pxs3-dwc3".

> That means, there is nothing which would be a bus, and so the
> dwc3-uniphier.c can be switched from UCLASS_SIMPLE_BUS to UCLASS_NOP ,
> is that correct ?

There is still the issue of different usb node between Original and u-boot,
however, the glue driver can be switched to UCLASS_NOP.

Thank you,

---
Best Regards
Kunihiko Hayashi

^ permalink raw reply	[flat|nested] 23+ messages in thread

* Re: [PATCH 3/5] usb: dwc3-generic: Add dependency on SIMPLE_BUS
  2023-01-23  5:01         ` Kunihiko Hayashi
@ 2023-01-23 15:49           ` Marek Vasut
  2023-01-24  2:53             ` Kunihiko Hayashi
  0 siblings, 1 reply; 23+ messages in thread
From: Marek Vasut @ 2023-01-23 15:49 UTC (permalink / raw)
  To: Kunihiko Hayashi; +Cc: Michal Simek, Sean Anderson, Angus Ainslie, u-boot

On 1/23/23 06:01, Kunihiko Hayashi wrote:
> Hi Marek,

Hello Hayashi-san,

[...]

>> On the other hand, the PXS2 controller for example is not a bus:
>>
>> arch/arm/dts/uniphier-pxs2.dtsi:
>> 596 _usb0: usb@65a00000 {
>> 597     compatible = "socionext,uniphier-dwc3", "snps,dwc3";
>> 598     status = "disabled";
>> 599     reg = <0x65a00000 0xcd00>;
>> ...
>> 610 };
> 
> I understand. However, this node isn't used in u-boot.
> (see below for details)
> 
>>>> Is this needed for socionext dwc3 variant to handle the simple-mfd in
>>>> e.g. arch/arm/dts/uniphier-pxs3.dtsi :
>>>>
>>>> 614 usb-glue@65b00000 {
>>>> 615     compatible = "socionext,uniphier-pxs3-dwc3-glue",
>>>> 616              "simple-mfd";
>>>>
>>>> ?
>>>
>>> In case of U-Boot, the glue driver is probed by:
>>>
>>>       /* FIXME: U-Boot own node */
>>>       usb@65b00000 {
>>>               compatible = "socionext,uniphier-pxs3-dwc3";
>>>
>>> And dwc3-uniphier is also declared as UCLASS_SIMPLE_BUS.
>>> Even if using "simple-mfd", this is included in 
>>> drivers/core/simple-bus.c
>>> which is declared as UCLASS_SIMPLE_BUS.
>>
>> If I understand this correctly, node compatible with
>> "socionext,uniphier-pxs3-dwc3-glue" is not used at all , right ?
> 
> Yes.
> Original uniphier devicetree has the following usb nodes.
> 
>      usb@65a00000 {
>          compatible = "snps,dwc3";
>      };
>      usb-glue@65b00000 {
>          compatible = "socionext,uniphier-pxs3-dwc3-glue", "simple-mfd";
>      };
> 
> However, U-Boot dwc3-generic needs to put dwc3 node under the glue node.

Have a look at arch/arm/dts/imx8mq.dtsi which does not use any glue 
node, the snps,dwc3 compatible node is directly placed on the soc@0 bus:

1417
1418         usb_dwc3_0: usb@38100000 {
1419             compatible = "fsl,imx8mq-dwc3", "snps,dwc3";
1420             reg = <0x38100000 0x10000>;
1421             clocks = <&clk IMX8MQ_CLK_USB1_CTRL_ROOT>,

> Due to this restriction, there is another usb node dedicated to u-boot.
> 
>      /* FIXME: U-Boot own node */
>      usb@65b00000 { /* glue */
>          compatible = "socionext,uniphier-pxs3-dwc3";
> 
>          dwc3@65a00000 {
>              compatible = "snps,dwc3";
>          };
>      };
> 
> So instead of "socionext,uniphier-pxs3-dwc3-glue", the glue driver
> uses "socionext,uniphier-pxs3-dwc3" in U-Boot.

Can we use the same method as imx8mq.dtsi uses, to avoid this special 
node workaround ?

>> The generic driver binds to node compatible with
>> "socionext,uniphier-dwc3" , right ?
> 
> No, the generic driver binds "socionext,uniphier-pxs3-dwc3".
> 
>> That means, there is nothing which would be a bus, and so the
>> dwc3-uniphier.c can be switched from UCLASS_SIMPLE_BUS to UCLASS_NOP ,
>> is that correct ?
> 
> There is still the issue of different usb node between Original and u-boot,
> however, the glue driver can be switched to UCLASS_NOP.

Understood, thank you for the clarification.

^ permalink raw reply	[flat|nested] 23+ messages in thread

* Re: [PATCH 3/5] usb: dwc3-generic: Add dependency on SIMPLE_BUS
  2023-01-23 15:49           ` Marek Vasut
@ 2023-01-24  2:53             ` Kunihiko Hayashi
  2023-01-25  1:38               ` Marek Vasut
  0 siblings, 1 reply; 23+ messages in thread
From: Kunihiko Hayashi @ 2023-01-24  2:53 UTC (permalink / raw)
  To: Marek Vasut; +Cc: Michal Simek, Sean Anderson, Angus Ainslie, u-boot

Hi Marek,

On 2023/01/24 0:49, Marek Vasut wrote:
> On 1/23/23 06:01, Kunihiko Hayashi wrote:
>> Hi Marek,
> 
> Hello Hayashi-san,
> 
> [...]
> 
>>> On the other hand, the PXS2 controller for example is not a bus:
>>>
>>> arch/arm/dts/uniphier-pxs2.dtsi:
>>> 596 _usb0: usb@65a00000 {
>>> 597     compatible = "socionext,uniphier-dwc3", "snps,dwc3";
>>> 598     status = "disabled";
>>> 599     reg = <0x65a00000 0xcd00>;
>>> ...
>>> 610 };
>>
>> I understand. However, this node isn't used in u-boot.
>> (see below for details)
>>
>>>>> Is this needed for socionext dwc3 variant to handle the simple-mfd in
>>>>> e.g. arch/arm/dts/uniphier-pxs3.dtsi :
>>>>>
>>>>> 614 usb-glue@65b00000 {
>>>>> 615     compatible = "socionext,uniphier-pxs3-dwc3-glue",
>>>>> 616              "simple-mfd";
>>>>>
>>>>> ?
>>>>
>>>> In case of U-Boot, the glue driver is probed by:
>>>>
>>>>        /* FIXME: U-Boot own node */
>>>>        usb@65b00000 {
>>>>                compatible = "socionext,uniphier-pxs3-dwc3";
>>>>
>>>> And dwc3-uniphier is also declared as UCLASS_SIMPLE_BUS.
>>>> Even if using "simple-mfd", this is included in
>>>> drivers/core/simple-bus.c
>>>> which is declared as UCLASS_SIMPLE_BUS.
>>>
>>> If I understand this correctly, node compatible with
>>> "socionext,uniphier-pxs3-dwc3-glue" is not used at all , right ?
>>
>> Yes.
>> Original uniphier devicetree has the following usb nodes.
>>
>>       usb@65a00000 {
>>           compatible = "snps,dwc3";
>>       };
>>       usb-glue@65b00000 {
>>           compatible = "socionext,uniphier-pxs3-dwc3-glue", "simple-mfd";
>>       };
>>
>> However, U-Boot dwc3-generic needs to put dwc3 node under the glue node.
> 
> Have a look at arch/arm/dts/imx8mq.dtsi which does not use any glue
> node, the snps,dwc3 compatible node is directly placed on the soc@0 bus:
> 
> 1417
> 1418         usb_dwc3_0: usb@38100000 {
> 1419             compatible = "fsl,imx8mq-dwc3", "snps,dwc3";
> 1420             reg = <0x38100000 0x10000>;
> 1421             clocks = <&clk IMX8MQ_CLK_USB1_CTRL_ROOT>,
> 
>> Due to this restriction, there is another usb node dedicated to u-boot.
>>
>>       /* FIXME: U-Boot own node */
>>       usb@65b00000 { /* glue */
>>           compatible = "socionext,uniphier-pxs3-dwc3";
>>
>>           dwc3@65a00000 {
>>               compatible = "snps,dwc3";
>>           };
>>       };
>>
>> So instead of "socionext,uniphier-pxs3-dwc3-glue", the glue driver
>> uses "socionext,uniphier-pxs3-dwc3" in U-Boot.
> 
> Can we use the same method as imx8mq.dtsi uses, to avoid this special
> node workaround ?

Umm, it's curious. It seems imx8mq doesn't have any glue registers and defines
dwc3 core registers directly.

On the other hand, "fsl,imx8mq-dwc3" is included in dwc3-generic.c, though,
dwc3_glue_bind() calls the driver that the child node shows.

     ofnode_for_each_subnode(node, dev_ofnode(parent)) {
         ...
         device_bind_driver_to_node(parent, driver, name,
                                    node, &dev);
         ...
     }

Maybe the child node expects the driver that "snps,dwc3" indicates.

If we use the same method as imx8mq.dtsi, I think there is no way to probe
the driver for "snps,dwc3" in dwc3-generic.c.

BTW, xchi-dwc3.c can handle "snps,dwc3", but it seems this doesn't use
usb/dwc3/ functions (so I'm confusing it).

>>> The generic driver binds to node compatible with
>>> "socionext,uniphier-dwc3" , right ?
>>
>> No, the generic driver binds "socionext,uniphier-pxs3-dwc3".
>>
>>> That means, there is nothing which would be a bus, and so the
>>> dwc3-uniphier.c can be switched from UCLASS_SIMPLE_BUS to UCLASS_NOP ,
>>> is that correct ?
>>
>> There is still the issue of different usb node between Original and
>> u-boot,
>> however, the glue driver can be switched to UCLASS_NOP.
> 
> Understood, thank you for the clarification.

Thank you,

---
Best Regards
Kunihiko Hayashi

^ permalink raw reply	[flat|nested] 23+ messages in thread

* Re: [PATCH 3/5] usb: dwc3-generic: Add dependency on SIMPLE_BUS
  2023-01-24  2:53             ` Kunihiko Hayashi
@ 2023-01-25  1:38               ` Marek Vasut
  2023-01-25  8:40                 ` Kunihiko Hayashi
  0 siblings, 1 reply; 23+ messages in thread
From: Marek Vasut @ 2023-01-25  1:38 UTC (permalink / raw)
  To: Kunihiko Hayashi; +Cc: Michal Simek, Sean Anderson, Angus Ainslie, u-boot

On 1/24/23 03:53, Kunihiko Hayashi wrote:
> Hi Marek,

Hello Hayashi-san,

> On 2023/01/24 0:49, Marek Vasut wrote:
>> On 1/23/23 06:01, Kunihiko Hayashi wrote:
>>> Hi Marek,
>>
>> Hello Hayashi-san,
>>
>> [...]
>>
>>>> On the other hand, the PXS2 controller for example is not a bus:
>>>>
>>>> arch/arm/dts/uniphier-pxs2.dtsi:
>>>> 596 _usb0: usb@65a00000 {
>>>> 597     compatible = "socionext,uniphier-dwc3", "snps,dwc3";
>>>> 598     status = "disabled";
>>>> 599     reg = <0x65a00000 0xcd00>;
>>>> ...
>>>> 610 };
>>>
>>> I understand. However, this node isn't used in u-boot.
>>> (see below for details)
>>>
>>>>>> Is this needed for socionext dwc3 variant to handle the simple-mfd in
>>>>>> e.g. arch/arm/dts/uniphier-pxs3.dtsi :
>>>>>>
>>>>>> 614 usb-glue@65b00000 {
>>>>>> 615     compatible = "socionext,uniphier-pxs3-dwc3-glue",
>>>>>> 616              "simple-mfd";
>>>>>>
>>>>>> ?
>>>>>
>>>>> In case of U-Boot, the glue driver is probed by:
>>>>>
>>>>>        /* FIXME: U-Boot own node */
>>>>>        usb@65b00000 {
>>>>>                compatible = "socionext,uniphier-pxs3-dwc3";
>>>>>
>>>>> And dwc3-uniphier is also declared as UCLASS_SIMPLE_BUS.
>>>>> Even if using "simple-mfd", this is included in
>>>>> drivers/core/simple-bus.c
>>>>> which is declared as UCLASS_SIMPLE_BUS.
>>>>
>>>> If I understand this correctly, node compatible with
>>>> "socionext,uniphier-pxs3-dwc3-glue" is not used at all , right ?
>>>
>>> Yes.
>>> Original uniphier devicetree has the following usb nodes.
>>>
>>>       usb@65a00000 {
>>>           compatible = "snps,dwc3";
>>>       };
>>>       usb-glue@65b00000 {
>>>           compatible = "socionext,uniphier-pxs3-dwc3-glue", 
>>> "simple-mfd";
>>>       };
>>>
>>> However, U-Boot dwc3-generic needs to put dwc3 node under the glue node.
>>
>> Have a look at arch/arm/dts/imx8mq.dtsi which does not use any glue
>> node, the snps,dwc3 compatible node is directly placed on the soc@0 bus:
>>
>> 1417
>> 1418         usb_dwc3_0: usb@38100000 {
>> 1419             compatible = "fsl,imx8mq-dwc3", "snps,dwc3";
>> 1420             reg = <0x38100000 0x10000>;
>> 1421             clocks = <&clk IMX8MQ_CLK_USB1_CTRL_ROOT>,
>>
>>> Due to this restriction, there is another usb node dedicated to u-boot.
>>>
>>>       /* FIXME: U-Boot own node */
>>>       usb@65b00000 { /* glue */
>>>           compatible = "socionext,uniphier-pxs3-dwc3";
>>>
>>>           dwc3@65a00000 {
>>>               compatible = "snps,dwc3";
>>>           };
>>>       };
>>>
>>> So instead of "socionext,uniphier-pxs3-dwc3-glue", the glue driver
>>> uses "socionext,uniphier-pxs3-dwc3" in U-Boot.
>>
>> Can we use the same method as imx8mq.dtsi uses, to avoid this special
>> node workaround ?
> 
> Umm, it's curious. It seems imx8mq doesn't have any glue registers and 
> defines
> dwc3 core registers directly.
> 
> On the other hand, "fsl,imx8mq-dwc3" is included in dwc3-generic.c, though,
> dwc3_glue_bind() calls the driver that the child node shows.
> 
>      ofnode_for_each_subnode(node, dev_ofnode(parent)) {
>          ...
>          device_bind_driver_to_node(parent, driver, name,
>                                     node, &dev);
>          ...
>      }
> 
> Maybe the child node expects the driver that "snps,dwc3" indicates.
> 
> If we use the same method as imx8mq.dtsi, I think there is no way to probe
> the driver for "snps,dwc3" in dwc3-generic.c.
> 
> BTW, xchi-dwc3.c can handle "snps,dwc3", but it seems this doesn't use
> usb/dwc3/ functions (so I'm confusing it).

Let's try the following, please have a look at this change:

https://source.denx.de/u-boot/custodians/u-boot-usb/-/commit/028ad9536e501986f4e19d27f462f81a9ea70bad

The change is difficult to read, use 'git show -w' to ignore space 
changes, that might help.

The idea is that the dwc3-generic.c (or dwc3-uniphier.c , placement does 
not really matter) binds to "socionext,uniphier-pxs3-dwc3-glue" 
compatible first.

Then, the dwc3_glue_ops is extended with a new callback 
glue_get_ctrl_dev, which returns the pointer to controller DT node (the 
node compatible with "socionext,uniphier-dwc3"). This is used in 
dwc3_glue_bind(), which either uses the current implementation with a 
loop over all subnodes and tries to find the controller subnode, OR, 
calls the glue_get_ctrl_dev callback, obtains controller device node 
pointer that way, and runs the inner loop of dwc3_glue_bind() (now 
dwc3_glue_bind_common()) only on that pointer.

In either case, the dwc3-generic driver is bound to the controller. You 
might need to re-use this trick in dwc3_glue_probe() too.

This should allow you to get rid of the custom DT node too.

Does this work ?

^ permalink raw reply	[flat|nested] 23+ messages in thread

* Re: [PATCH 3/5] usb: dwc3-generic: Add dependency on SIMPLE_BUS
  2023-01-25  1:38               ` Marek Vasut
@ 2023-01-25  8:40                 ` Kunihiko Hayashi
  2023-01-25 13:03                   ` Marek Vasut
  0 siblings, 1 reply; 23+ messages in thread
From: Kunihiko Hayashi @ 2023-01-25  8:40 UTC (permalink / raw)
  To: Marek Vasut; +Cc: Michal Simek, Sean Anderson, Angus Ainslie, u-boot

Hi Marek,

On 2023/01/25 10:38, Marek Vasut wrote:
> On 1/24/23 03:53, Kunihiko Hayashi wrote:
>> Hi Marek,
> 
> Hello Hayashi-san,
> 
>> On 2023/01/24 0:49, Marek Vasut wrote:
>>> On 1/23/23 06:01, Kunihiko Hayashi wrote:
>>>> Hi Marek,
>>>
>>> Hello Hayashi-san,
>>>
>>> [...]
>>>
>>>>> On the other hand, the PXS2 controller for example is not a bus:
>>>>>
>>>>> arch/arm/dts/uniphier-pxs2.dtsi:
>>>>> 596 _usb0: usb@65a00000 {
>>>>> 597     compatible = "socionext,uniphier-dwc3", "snps,dwc3";
>>>>> 598     status = "disabled";
>>>>> 599     reg = <0x65a00000 0xcd00>;
>>>>> ...
>>>>> 610 };
>>>>
>>>> I understand. However, this node isn't used in u-boot.
>>>> (see below for details)
>>>>
>>>>>>> Is this needed for socionext dwc3 variant to handle the simple-mfd in
>>>>>>> e.g. arch/arm/dts/uniphier-pxs3.dtsi :
>>>>>>>
>>>>>>> 614 usb-glue@65b00000 {
>>>>>>> 615     compatible = "socionext,uniphier-pxs3-dwc3-glue",
>>>>>>> 616              "simple-mfd";
>>>>>>>
>>>>>>> ?
>>>>>>
>>>>>> In case of U-Boot, the glue driver is probed by:
>>>>>>
>>>>>>         /* FIXME: U-Boot own node */
>>>>>>         usb@65b00000 {
>>>>>>                 compatible = "socionext,uniphier-pxs3-dwc3";
>>>>>>
>>>>>> And dwc3-uniphier is also declared as UCLASS_SIMPLE_BUS.
>>>>>> Even if using "simple-mfd", this is included in
>>>>>> drivers/core/simple-bus.c
>>>>>> which is declared as UCLASS_SIMPLE_BUS.
>>>>>
>>>>> If I understand this correctly, node compatible with
>>>>> "socionext,uniphier-pxs3-dwc3-glue" is not used at all , right ?
>>>>
>>>> Yes.
>>>> Original uniphier devicetree has the following usb nodes.
>>>>
>>>>        usb@65a00000 {
>>>>            compatible = "snps,dwc3";
>>>>        };
>>>>        usb-glue@65b00000 {
>>>>            compatible = "socionext,uniphier-pxs3-dwc3-glue",
>>>> "simple-mfd";
>>>>        };
>>>>
>>>> However, U-Boot dwc3-generic needs to put dwc3 node under the glue node.
>>>
>>> Have a look at arch/arm/dts/imx8mq.dtsi which does not use any glue
>>> node, the snps,dwc3 compatible node is directly placed on the soc@0 bus:
>>>
>>> 1417
>>> 1418         usb_dwc3_0: usb@38100000 {
>>> 1419             compatible = "fsl,imx8mq-dwc3", "snps,dwc3";
>>> 1420             reg = <0x38100000 0x10000>;
>>> 1421             clocks = <&clk IMX8MQ_CLK_USB1_CTRL_ROOT>,
>>>
>>>> Due to this restriction, there is another usb node dedicated to u-boot.
>>>>
>>>>        /* FIXME: U-Boot own node */
>>>>        usb@65b00000 { /* glue */
>>>>            compatible = "socionext,uniphier-pxs3-dwc3";
>>>>
>>>>            dwc3@65a00000 {
>>>>                compatible = "snps,dwc3";
>>>>            };
>>>>        };
>>>>
>>>> So instead of "socionext,uniphier-pxs3-dwc3-glue", the glue driver
>>>> uses "socionext,uniphier-pxs3-dwc3" in U-Boot.
>>>
>>> Can we use the same method as imx8mq.dtsi uses, to avoid this special
>>> node workaround ?
>>
>> Umm, it's curious. It seems imx8mq doesn't have any glue registers and
>> defines
>> dwc3 core registers directly.
>>
>> On the other hand, "fsl,imx8mq-dwc3" is included in dwc3-generic.c,
>> though,
>> dwc3_glue_bind() calls the driver that the child node shows.
>>
>>       ofnode_for_each_subnode(node, dev_ofnode(parent)) {
>>           ...
>>           device_bind_driver_to_node(parent, driver, name,
>>                                      node, &dev);
>>           ...
>>       }
>>
>> Maybe the child node expects the driver that "snps,dwc3" indicates.
>>
>> If we use the same method as imx8mq.dtsi, I think there is no way to probe
>> the driver for "snps,dwc3" in dwc3-generic.c.
>>
>> BTW, xchi-dwc3.c can handle "snps,dwc3", but it seems this doesn't use
>> usb/dwc3/ functions (so I'm confusing it).
> 
> Let's try the following, please have a look at this change:
> 
> https://source.denx.de/u-boot/custodians/u-boot-usb/-/commit/028ad9536e501986f4e19d27f462f81a9ea70bad
> 
> The change is difficult to read, use 'git show -w' to ignore space
> changes, that might help.

Thanks a lot for your work!

> The idea is that the dwc3-generic.c (or dwc3-uniphier.c , placement does
> not really matter) binds to "socionext,uniphier-pxs3-dwc3-glue"
> compatible first.
> 
> Then, the dwc3_glue_ops is extended with a new callback
> glue_get_ctrl_dev, which returns the pointer to controller DT node (the
> node compatible with "socionext,uniphier-dwc3"). This is used in
> dwc3_glue_bind(), which either uses the current implementation with a
> loop over all subnodes and tries to find the controller subnode, OR,
> calls the glue_get_ctrl_dev callback, obtains controller device node
> pointer that way, and runs the inner loop of dwc3_glue_bind() (now
> dwc3_glue_bind_common()) only on that pointer.

I understand your patch adds trying to call "glue_get_ctrl_dev" to get
controller device node before finding subnode,

> In either case, the dwc3-generic driver is bound to the controller. You
> might need to re-use this trick in dwc3_glue_probe() too.
> 
> This should allow you to get rid of the custom DT node too.
> 
> Does this work ?

I'll try this soon.

Thank you,

---
Best Regards
Kunihiko Hayashi

^ permalink raw reply	[flat|nested] 23+ messages in thread

* Re: [PATCH 3/5] usb: dwc3-generic: Add dependency on SIMPLE_BUS
  2023-01-25  8:40                 ` Kunihiko Hayashi
@ 2023-01-25 13:03                   ` Marek Vasut
  2023-01-30  5:52                     ` Kunihiko Hayashi
  0 siblings, 1 reply; 23+ messages in thread
From: Marek Vasut @ 2023-01-25 13:03 UTC (permalink / raw)
  To: Kunihiko Hayashi; +Cc: Michal Simek, Sean Anderson, Angus Ainslie, u-boot

On 1/25/23 09:40, Kunihiko Hayashi wrote:
> Hi Marek,

Hello Hayashi-san,

[...]

>> The idea is that the dwc3-generic.c (or dwc3-uniphier.c , placement does
>> not really matter) binds to "socionext,uniphier-pxs3-dwc3-glue"
>> compatible first.
>>
>> Then, the dwc3_glue_ops is extended with a new callback
>> glue_get_ctrl_dev, which returns the pointer to controller DT node (the
>> node compatible with "socionext,uniphier-dwc3"). This is used in
>> dwc3_glue_bind(), which either uses the current implementation with a
>> loop over all subnodes and tries to find the controller subnode, OR,
>> calls the glue_get_ctrl_dev callback, obtains controller device node
>> pointer that way, and runs the inner loop of dwc3_glue_bind() (now
>> dwc3_glue_bind_common()) only on that pointer.
> 
> I understand your patch adds trying to call "glue_get_ctrl_dev" to get
> controller device node before finding subnode,

Yes. Feel free to adjust the patch so it fits uniphier better of course.

>> In either case, the dwc3-generic driver is bound to the controller. You
>> might need to re-use this trick in dwc3_glue_probe() too.
>>
>> This should allow you to get rid of the custom DT node too.
>>
>> Does this work ?
> 
> I'll try this soon.

Thank you !

^ permalink raw reply	[flat|nested] 23+ messages in thread

* Re: [PATCH 3/5] usb: dwc3-generic: Add dependency on SIMPLE_BUS
  2023-01-25 13:03                   ` Marek Vasut
@ 2023-01-30  5:52                     ` Kunihiko Hayashi
  2023-01-30 22:50                       ` Marek Vasut
  0 siblings, 1 reply; 23+ messages in thread
From: Kunihiko Hayashi @ 2023-01-30  5:52 UTC (permalink / raw)
  To: Marek Vasut; +Cc: Michal Simek, Sean Anderson, Angus Ainslie, u-boot

Hi Marek,

Sorry for late reply.
I was stuck in some pitfalls.

On 2023/01/25 22:03, Marek Vasut wrote:
> On 1/25/23 09:40, Kunihiko Hayashi wrote:
>> Hi Marek,
> 
> Hello Hayashi-san,
> 
> [...]
> 
>>> The idea is that the dwc3-generic.c (or dwc3-uniphier.c , placement does
>>> not really matter) binds to "socionext,uniphier-pxs3-dwc3-glue"
>>> compatible first.
>>>
>>> Then, the dwc3_glue_ops is extended with a new callback
>>> glue_get_ctrl_dev, which returns the pointer to controller DT node (the
>>> node compatible with "socionext,uniphier-dwc3"). This is used in
>>> dwc3_glue_bind(), which either uses the current implementation with a
>>> loop over all subnodes and tries to find the controller subnode, OR,
>>> calls the glue_get_ctrl_dev callback, obtains controller device node
>>> pointer that way, and runs the inner loop of dwc3_glue_bind() (now
>>> dwc3_glue_bind_common()) only on that pointer.
>>
>> I understand your patch adds trying to call "glue_get_ctrl_dev" to get
>> controller device node before finding subnode,
> 
> Yes. Feel free to adjust the patch so it fits uniphier better of course.
> 
>>> In either case, the dwc3-generic driver is bound to the controller. You
>>> might need to re-use this trick in dwc3_glue_probe() too.
>>>
>>> This should allow you to get rid of the custom DT node too.
>>>
>>> Does this work ?
>>
>> I'll try this soon.
> 
> Thank you !

I've successfully enabled the regular usb node using your suggested
patch [1] and your earlier submitted patch [2].

[1] 
https://source.denx.de/u-boot/custodians/u-boot-usb/-/commit/028ad9536e501986f4e19d27f462f81a9ea70bad
   - Change 2nd argument type from "udevice *" to "ofnode"
     because glue_get_ctrl_dev() can give only "ofnode" structure from
     the device node.
   - Move soc-dependent stuffs to dwc3-uniphier.c.

[2] https://patchwork.ozlabs.org/project/uboot/patch/20221215223822.137739-1-marex@denx.de/
   - correspond to "for top level generic node with no subnode"

However, the uniphier usb3 glue node has more child nodes (not for
the controller), so I need to add more patches to enable more clocks
that the child nodes have.

I should send new patches as v2 series, though, how do you treat
your patches [1] and [2]?

Thank you,

---
Best Regards
Kunihiko Hayashi

^ permalink raw reply	[flat|nested] 23+ messages in thread

* Re: [PATCH 3/5] usb: dwc3-generic: Add dependency on SIMPLE_BUS
  2023-01-30  5:52                     ` Kunihiko Hayashi
@ 2023-01-30 22:50                       ` Marek Vasut
  2023-01-31  0:27                         ` Kunihiko Hayashi
  0 siblings, 1 reply; 23+ messages in thread
From: Marek Vasut @ 2023-01-30 22:50 UTC (permalink / raw)
  To: Kunihiko Hayashi; +Cc: Michal Simek, Sean Anderson, Angus Ainslie, u-boot

On 1/30/23 06:52, Kunihiko Hayashi wrote:
> Hi Marek,

Hello Hayashi-san,

> Sorry for late reply.
> I was stuck in some pitfalls.

No worries, the MW closed today, but rc2 should be still OK to land 
these patches.

[...]

> I've successfully enabled the regular usb node using your suggested
> patch [1] and your earlier submitted patch [2].
> 
> [1] 
> https://source.denx.de/u-boot/custodians/u-boot-usb/-/commit/028ad9536e501986f4e19d27f462f81a9ea70bad
>    - Change 2nd argument type from "udevice *" to "ofnode"
>      because glue_get_ctrl_dev() can give only "ofnode" structure from
>      the device node.
>    - Move soc-dependent stuffs to dwc3-uniphier.c.

Please integrate this patch into your series, feel free to change it as 
needed too.

> [2] 
> https://patchwork.ozlabs.org/project/uboot/patch/20221215223822.137739-1-marex@denx.de/
>    - correspond to "for top level generic node with no subnode"

Could you provide AB/RB on this one if this looks OK? Then I would apply 
it to usb tree .

> However, the uniphier usb3 glue node has more child nodes (not for
> the controller), so I need to add more patches to enable more clocks
> that the child nodes have.
> 
> I should send new patches as v2 series, though, how do you treat
> your patches [1] and [2]?

Yes please, send V2. Regarding [1] and [2], see above.

Thank you

^ permalink raw reply	[flat|nested] 23+ messages in thread

* Re: [PATCH 3/5] usb: dwc3-generic: Add dependency on SIMPLE_BUS
  2023-01-30 22:50                       ` Marek Vasut
@ 2023-01-31  0:27                         ` Kunihiko Hayashi
  2023-01-31  8:11                           ` Marek Vasut
  0 siblings, 1 reply; 23+ messages in thread
From: Kunihiko Hayashi @ 2023-01-31  0:27 UTC (permalink / raw)
  To: Marek Vasut; +Cc: Michal Simek, Sean Anderson, Angus Ainslie, u-boot

Hi Marek,

On 2023/01/31 7:50, Marek Vasut wrote:
> On 1/30/23 06:52, Kunihiko Hayashi wrote:
>> Hi Marek,
> 
> Hello Hayashi-san,
> 
>> Sorry for late reply.
>> I was stuck in some pitfalls.
> 
> No worries, the MW closed today, but rc2 should be still OK to land
> these patches.

Thank you for caring.

> [...]
> 
>> I've successfully enabled the regular usb node using your suggested
>> patch [1] and your earlier submitted patch [2].
>>
>> [1]
>> https://source.denx.de/u-boot/custodians/u-boot-usb/-/commit/028ad9536e501986f4e19d27f462f81a9ea70bad
>>     - Change 2nd argument type from "udevice *" to "ofnode"
>>       because glue_get_ctrl_dev() can give only "ofnode" structure from
>>       the device node.
>>     - Move soc-dependent stuffs to dwc3-uniphier.c.
> 
> Please integrate this patch into your series, feel free to change it as
> needed too.

OK, I'll make the commit log.
You're the original author of this patch, what about your tag?

>> [2]
>> https://patchwork.ozlabs.org/project/uboot/patch/20221215223822.137739-1-marex@denx.de/
>>     - correspond to "for top level generic node with no subnode"
> 
> Could you provide AB/RB on this one if this looks OK? Then I would apply
> it to usb tree .

This looks good to me. The dwc3-uniphier uses this for the reference clock in the
top level generic node. I'll provide my tag.

>> However, the uniphier usb3 glue node has more child nodes (not for
>> the controller), so I need to add more patches to enable more clocks
>> that the child nodes have.
>>
>> I should send new patches as v2 series, though, how do you treat
>> your patches [1] and [2]?
> 
> Yes please, send V2. Regarding [1] and [2], see above.

OK, I'll clean up and make the series soon.

Thank you,

---
Best Regards
Kunihiko Hayashi

^ permalink raw reply	[flat|nested] 23+ messages in thread

* Re: [PATCH 3/5] usb: dwc3-generic: Add dependency on SIMPLE_BUS
  2023-01-31  0:27                         ` Kunihiko Hayashi
@ 2023-01-31  8:11                           ` Marek Vasut
  0 siblings, 0 replies; 23+ messages in thread
From: Marek Vasut @ 2023-01-31  8:11 UTC (permalink / raw)
  To: Kunihiko Hayashi; +Cc: Michal Simek, Sean Anderson, Angus Ainslie, u-boot

On 1/31/23 01:27, Kunihiko Hayashi wrote:
> Hi Marek,

Hello Hayashi-san,

> On 2023/01/31 7:50, Marek Vasut wrote:
>> On 1/30/23 06:52, Kunihiko Hayashi wrote:
>>> Hi Marek,
>>
>> Hello Hayashi-san,
>>
>>> Sorry for late reply.
>>> I was stuck in some pitfalls.
>>
>> No worries, the MW closed today, but rc2 should be still OK to land
>> these patches.
> 
> Thank you for caring.
> 
>> [...]
>>
>>> I've successfully enabled the regular usb node using your suggested
>>> patch [1] and your earlier submitted patch [2].
>>>
>>> [1]
>>> https://source.denx.de/u-boot/custodians/u-boot-usb/-/commit/028ad9536e501986f4e19d27f462f81a9ea70bad
>>>     - Change 2nd argument type from "udevice *" to "ofnode"
>>>       because glue_get_ctrl_dev() can give only "ofnode" structure from
>>>       the device node.
>>>     - Move soc-dependent stuffs to dwc3-uniphier.c.
>>
>> Please integrate this patch into your series, feel free to change it as
>> needed too.
> 
> OK, I'll make the commit log.
> You're the original author of this patch, what about your tag?

Since the patch needs heavy changes anyway, maybe some 'Suggested-by: 
Marek' would be best, or no tag at all ?

>>> [2]
>>> https://patchwork.ozlabs.org/project/uboot/patch/20221215223822.137739-1-marex@denx.de/
>>>     - correspond to "for top level generic node with no subnode"
>>
>> Could you provide AB/RB on this one if this looks OK? Then I would apply
>> it to usb tree .
> 
> This looks good to me. The dwc3-uniphier uses this for the reference 
> clock in the
> top level generic node. I'll provide my tag.

Thank you

>>> However, the uniphier usb3 glue node has more child nodes (not for
>>> the controller), so I need to add more patches to enable more clocks
>>> that the child nodes have.
>>>
>>> I should send new patches as v2 series, though, how do you treat
>>> your patches [1] and [2]?
>>
>> Yes please, send V2. Regarding [1] and [2], see above.
> 
> OK, I'll clean up and make the series soon.

Thank you

^ permalink raw reply	[flat|nested] 23+ messages in thread

end of thread, other threads:[~2023-01-31  8:11 UTC | newest]

Thread overview: 23+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2023-01-23  0:47 [PATCH 0/5] usb: dwc3-uniphier: Replace the driver to use dwc3-generic Kunihiko Hayashi
2023-01-23  0:47 ` [PATCH 1/5] usb: dwc3-generic: Export glue structures and functions Kunihiko Hayashi
2023-01-23  1:38   ` Marek Vasut
2023-01-23  0:47 ` [PATCH 2/5] usb: dwc3-generic: Add the size of regs property to glue structure Kunihiko Hayashi
2023-01-23  1:38   ` Marek Vasut
2023-01-23  0:47 ` [PATCH 3/5] usb: dwc3-generic: Add dependency on SIMPLE_BUS Kunihiko Hayashi
2023-01-23  1:42   ` Marek Vasut
2023-01-23  3:08     ` Kunihiko Hayashi
2023-01-23  3:37       ` Marek Vasut
2023-01-23  5:01         ` Kunihiko Hayashi
2023-01-23 15:49           ` Marek Vasut
2023-01-24  2:53             ` Kunihiko Hayashi
2023-01-25  1:38               ` Marek Vasut
2023-01-25  8:40                 ` Kunihiko Hayashi
2023-01-25 13:03                   ` Marek Vasut
2023-01-30  5:52                     ` Kunihiko Hayashi
2023-01-30 22:50                       ` Marek Vasut
2023-01-31  0:27                         ` Kunihiko Hayashi
2023-01-31  8:11                           ` Marek Vasut
2023-01-23  0:47 ` [PATCH 4/5] usb: dwc3-uniphier: Use dwc3-generic instead of xhci-dwc3 Kunihiko Hayashi
2023-01-23  1:44   ` Marek Vasut
2023-01-23  0:47 ` [PATCH 5/5] uniphier_defconfig: Disable USB_XHCI_DWC3 Kunihiko Hayashi
2023-01-23  1:44   ` Marek Vasut

This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.