All of lore.kernel.org
 help / color / mirror / Atom feed
* [PATCH 1/4] usb: misc: onboard-hub: resort by VID and PID
  2023-06-21 10:37 [PATCH 0/4] usb: misc: onboard_usb_hub: add support " Benjamin Bara
@ 2023-06-21 10:37 ` Benjamin Bara
  0 siblings, 0 replies; 9+ messages in thread
From: Benjamin Bara @ 2023-06-21 10:37 UTC (permalink / raw)
  To: Matthias Kaehlcke, Greg Kroah-Hartman, Rob Herring,
	Krzysztof Kozlowski, Conor Dooley, Benjamin Bara
  Cc: linux-usb, linux-kernel, devicetree

From: Benjamin Bara <benjamin.bara@skidata.com>

Resort the existing entries by VID and then by PID to be able to find
entries easier.

Signed-off-by: Benjamin Bara <benjamin.bara@skidata.com>
---
 drivers/usb/misc/onboard_usb_hub.c | 12 ++++++------
 drivers/usb/misc/onboard_usb_hub.h |  8 ++++----
 2 files changed, 10 insertions(+), 10 deletions(-)

diff --git a/drivers/usb/misc/onboard_usb_hub.c b/drivers/usb/misc/onboard_usb_hub.c
index 12fc6eb67c3b..94006714c273 100644
--- a/drivers/usb/misc/onboard_usb_hub.c
+++ b/drivers/usb/misc/onboard_usb_hub.c
@@ -329,10 +329,10 @@ static struct platform_driver onboard_hub_driver = {
 
 /************************** USB driver **************************/
 
-#define VENDOR_ID_GENESYS	0x05e3
 #define VENDOR_ID_MICROCHIP	0x0424
-#define VENDOR_ID_REALTEK	0x0bda
 #define VENDOR_ID_TI		0x0451
+#define VENDOR_ID_GENESYS	0x05e3
+#define VENDOR_ID_REALTEK	0x0bda
 #define VENDOR_ID_VIA		0x2109
 
 /*
@@ -407,16 +407,16 @@ static void onboard_hub_usbdev_disconnect(struct usb_device *udev)
 }
 
 static const struct usb_device_id onboard_hub_id_table[] = {
-	{ USB_DEVICE(VENDOR_ID_GENESYS, 0x0608) }, /* Genesys Logic GL850G USB 2.0 */
-	{ USB_DEVICE(VENDOR_ID_GENESYS, 0x0610) }, /* Genesys Logic GL852G USB 2.0 */
 	{ USB_DEVICE(VENDOR_ID_MICROCHIP, 0x2514) }, /* USB2514B USB 2.0 */
 	{ USB_DEVICE(VENDOR_ID_MICROCHIP, 0x2517) }, /* USB2517 USB 2.0 */
+	{ USB_DEVICE(VENDOR_ID_TI, 0x8140) }, /* TI USB8041 3.0 */
+	{ USB_DEVICE(VENDOR_ID_TI, 0x8142) }, /* TI USB8041 2.0 */
+	{ USB_DEVICE(VENDOR_ID_GENESYS, 0x0608) }, /* Genesys Logic GL850G USB 2.0 */
+	{ USB_DEVICE(VENDOR_ID_GENESYS, 0x0610) }, /* Genesys Logic GL852G USB 2.0 */
 	{ USB_DEVICE(VENDOR_ID_REALTEK, 0x0411) }, /* RTS5411 USB 3.1 */
 	{ USB_DEVICE(VENDOR_ID_REALTEK, 0x5411) }, /* RTS5411 USB 2.1 */
 	{ USB_DEVICE(VENDOR_ID_REALTEK, 0x0414) }, /* RTS5414 USB 3.2 */
 	{ USB_DEVICE(VENDOR_ID_REALTEK, 0x5414) }, /* RTS5414 USB 2.1 */
-	{ USB_DEVICE(VENDOR_ID_TI, 0x8140) }, /* TI USB8041 3.0 */
-	{ USB_DEVICE(VENDOR_ID_TI, 0x8142) }, /* TI USB8041 2.0 */
 	{ USB_DEVICE(VENDOR_ID_VIA, 0x0817) }, /* VIA VL817 3.1 */
 	{ USB_DEVICE(VENDOR_ID_VIA, 0x2817) }, /* VIA VL817 2.0 */
 	{}
diff --git a/drivers/usb/misc/onboard_usb_hub.h b/drivers/usb/misc/onboard_usb_hub.h
index aca5f50eb0da..ff8925aa6d3a 100644
--- a/drivers/usb/misc/onboard_usb_hub.h
+++ b/drivers/usb/misc/onboard_usb_hub.h
@@ -14,10 +14,6 @@ static const struct onboard_hub_pdata microchip_usb424_data = {
 	.reset_us = 1,
 };
 
-static const struct onboard_hub_pdata realtek_rts5411_data = {
-	.reset_us = 0,
-};
-
 static const struct onboard_hub_pdata ti_tusb8041_data = {
 	.reset_us = 3000,
 };
@@ -30,6 +26,10 @@ static const struct onboard_hub_pdata genesys_gl852g_data = {
 	.reset_us = 50,
 };
 
+static const struct onboard_hub_pdata realtek_rts5411_data = {
+	.reset_us = 0,
+};
+
 static const struct onboard_hub_pdata vialab_vl817_data = {
 	.reset_us = 10,
 };

-- 
2.34.1


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

* [PATCH 0/4] usb: misc: onboard_usb_hub: add support for Cypress HX3 USB 3.0 family
@ 2023-06-21 10:37 Benjamin Bara
  2023-06-21 10:38 ` [PATCH 1/4] usb: misc: onboard-hub: resort by VID and PID Benjamin Bara
                   ` (3 more replies)
  0 siblings, 4 replies; 9+ messages in thread
From: Benjamin Bara @ 2023-06-21 10:37 UTC (permalink / raw)
  To: Matthias Kaehlcke, Greg Kroah-Hartman, Rob Herring,
	Krzysztof Kozlowski, Conor Dooley, Benjamin Bara
  Cc: linux-usb, linux-kernel, devicetree

Hi!

This series adds support for the Cypress HX3 USB 3.0 family (3/4). For
now, it just contains the USB-related aspects and ignores the option to
connect it via i2c (4/4).

For a better overview, the current entries are first re-ordered by VID
and then by PID (1/4).

As the HX3 family operates with two power supplies, multiple power
supply support is implemented (2/4).

Thanks & best regards,
Benjamin

---
Benjamin Bara (4):
      usb: misc: onboard-hub: resort by VID and PID
      usb: misc: onboard-hub: support multiple power supplies
      usb: misc: onboard-hub: add support for Cypress HX3 USB 3.0 family
      dt-bindings: usb: Add binding for Cypress HX3 USB 3.0 family

 .../devicetree/bindings/usb/cypress,hx3.yaml       | 77 ++++++++++++++++++++++
 drivers/usb/misc/onboard_usb_hub.c                 | 55 +++++++++++-----
 drivers/usb/misc/onboard_usb_hub.h                 | 16 +++--
 3 files changed, 128 insertions(+), 20 deletions(-)
---
base-commit: 45a3e24f65e90a047bef86f927ebdc4c710edaa1
change-id: 20230620-hx3-cb935b4fdd76

Best regards,
-- 
Benjamin Bara <benjamin.bara@skidata.com>


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

* [PATCH 1/4] usb: misc: onboard-hub: resort by VID and PID
  2023-06-21 10:37 [PATCH 0/4] usb: misc: onboard_usb_hub: add support for Cypress HX3 USB 3.0 family Benjamin Bara
@ 2023-06-21 10:38 ` Benjamin Bara
  2023-06-21 14:05   ` Matthias Kaehlcke
  2023-06-21 15:59   ` Greg Kroah-Hartman
  2023-06-21 10:38 ` [PATCH 2/4] usb: misc: onboard-hub: support multiple power supplies Benjamin Bara
                   ` (2 subsequent siblings)
  3 siblings, 2 replies; 9+ messages in thread
From: Benjamin Bara @ 2023-06-21 10:38 UTC (permalink / raw)
  To: Matthias Kaehlcke, Greg Kroah-Hartman, Rob Herring,
	Krzysztof Kozlowski, Conor Dooley, Benjamin Bara
  Cc: linux-usb, linux-kernel, devicetree

From: Benjamin Bara <benjamin.bara@skidata.com>

Resort the existing entries by VID and then by PID to be able to find
entries easier.

Signed-off-by: Benjamin Bara <benjamin.bara@skidata.com>
---
 drivers/usb/misc/onboard_usb_hub.c | 12 ++++++------
 drivers/usb/misc/onboard_usb_hub.h |  8 ++++----
 2 files changed, 10 insertions(+), 10 deletions(-)

diff --git a/drivers/usb/misc/onboard_usb_hub.c b/drivers/usb/misc/onboard_usb_hub.c
index 12fc6eb67c3b..94006714c273 100644
--- a/drivers/usb/misc/onboard_usb_hub.c
+++ b/drivers/usb/misc/onboard_usb_hub.c
@@ -329,10 +329,10 @@ static struct platform_driver onboard_hub_driver = {
 
 /************************** USB driver **************************/
 
-#define VENDOR_ID_GENESYS	0x05e3
 #define VENDOR_ID_MICROCHIP	0x0424
-#define VENDOR_ID_REALTEK	0x0bda
 #define VENDOR_ID_TI		0x0451
+#define VENDOR_ID_GENESYS	0x05e3
+#define VENDOR_ID_REALTEK	0x0bda
 #define VENDOR_ID_VIA		0x2109
 
 /*
@@ -407,16 +407,16 @@ static void onboard_hub_usbdev_disconnect(struct usb_device *udev)
 }
 
 static const struct usb_device_id onboard_hub_id_table[] = {
-	{ USB_DEVICE(VENDOR_ID_GENESYS, 0x0608) }, /* Genesys Logic GL850G USB 2.0 */
-	{ USB_DEVICE(VENDOR_ID_GENESYS, 0x0610) }, /* Genesys Logic GL852G USB 2.0 */
 	{ USB_DEVICE(VENDOR_ID_MICROCHIP, 0x2514) }, /* USB2514B USB 2.0 */
 	{ USB_DEVICE(VENDOR_ID_MICROCHIP, 0x2517) }, /* USB2517 USB 2.0 */
+	{ USB_DEVICE(VENDOR_ID_TI, 0x8140) }, /* TI USB8041 3.0 */
+	{ USB_DEVICE(VENDOR_ID_TI, 0x8142) }, /* TI USB8041 2.0 */
+	{ USB_DEVICE(VENDOR_ID_GENESYS, 0x0608) }, /* Genesys Logic GL850G USB 2.0 */
+	{ USB_DEVICE(VENDOR_ID_GENESYS, 0x0610) }, /* Genesys Logic GL852G USB 2.0 */
 	{ USB_DEVICE(VENDOR_ID_REALTEK, 0x0411) }, /* RTS5411 USB 3.1 */
 	{ USB_DEVICE(VENDOR_ID_REALTEK, 0x5411) }, /* RTS5411 USB 2.1 */
 	{ USB_DEVICE(VENDOR_ID_REALTEK, 0x0414) }, /* RTS5414 USB 3.2 */
 	{ USB_DEVICE(VENDOR_ID_REALTEK, 0x5414) }, /* RTS5414 USB 2.1 */
-	{ USB_DEVICE(VENDOR_ID_TI, 0x8140) }, /* TI USB8041 3.0 */
-	{ USB_DEVICE(VENDOR_ID_TI, 0x8142) }, /* TI USB8041 2.0 */
 	{ USB_DEVICE(VENDOR_ID_VIA, 0x0817) }, /* VIA VL817 3.1 */
 	{ USB_DEVICE(VENDOR_ID_VIA, 0x2817) }, /* VIA VL817 2.0 */
 	{}
diff --git a/drivers/usb/misc/onboard_usb_hub.h b/drivers/usb/misc/onboard_usb_hub.h
index aca5f50eb0da..ff8925aa6d3a 100644
--- a/drivers/usb/misc/onboard_usb_hub.h
+++ b/drivers/usb/misc/onboard_usb_hub.h
@@ -14,10 +14,6 @@ static const struct onboard_hub_pdata microchip_usb424_data = {
 	.reset_us = 1,
 };
 
-static const struct onboard_hub_pdata realtek_rts5411_data = {
-	.reset_us = 0,
-};
-
 static const struct onboard_hub_pdata ti_tusb8041_data = {
 	.reset_us = 3000,
 };
@@ -30,6 +26,10 @@ static const struct onboard_hub_pdata genesys_gl852g_data = {
 	.reset_us = 50,
 };
 
+static const struct onboard_hub_pdata realtek_rts5411_data = {
+	.reset_us = 0,
+};
+
 static const struct onboard_hub_pdata vialab_vl817_data = {
 	.reset_us = 10,
 };

-- 
2.34.1


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

* [PATCH 2/4] usb: misc: onboard-hub: support multiple power supplies
  2023-06-21 10:37 [PATCH 0/4] usb: misc: onboard_usb_hub: add support for Cypress HX3 USB 3.0 family Benjamin Bara
  2023-06-21 10:38 ` [PATCH 1/4] usb: misc: onboard-hub: resort by VID and PID Benjamin Bara
@ 2023-06-21 10:38 ` Benjamin Bara
  2023-06-21 10:38 ` [PATCH 3/4] usb: misc: onboard-hub: add support for Cypress HX3 USB 3.0 family Benjamin Bara
  2023-06-21 10:38 ` [PATCH 4/4] dt-bindings: usb: Add binding " Benjamin Bara
  3 siblings, 0 replies; 9+ messages in thread
From: Benjamin Bara @ 2023-06-21 10:38 UTC (permalink / raw)
  To: Matthias Kaehlcke, Greg Kroah-Hartman, Rob Herring,
	Krzysztof Kozlowski, Conor Dooley, Benjamin Bara
  Cc: linux-usb, linux-kernel, devicetree

From: Benjamin Bara <benjamin.bara@skidata.com>

As some of the onboard hubs require multiple power supplies, provide the
environment to support them.

Signed-off-by: Benjamin Bara <benjamin.bara@skidata.com>
---
 drivers/usb/misc/onboard_usb_hub.c | 40 ++++++++++++++++++++++++++++----------
 drivers/usb/misc/onboard_usb_hub.h |  1 +
 2 files changed, 31 insertions(+), 10 deletions(-)

diff --git a/drivers/usb/misc/onboard_usb_hub.c b/drivers/usb/misc/onboard_usb_hub.c
index 94006714c273..79ba9d8a8fef 100644
--- a/drivers/usb/misc/onboard_usb_hub.c
+++ b/drivers/usb/misc/onboard_usb_hub.c
@@ -27,6 +27,12 @@
 
 #include "onboard_usb_hub.h"
 
+#define SUPPLIES_NUM_MAX 2
+static const char * const supply_names[] = {
+	"vdd",
+	"vdd2",
+};
+
 static void onboard_hub_attach_usb_driver(struct work_struct *work);
 
 static struct usb_device_driver onboard_hub_usbdev_driver;
@@ -40,7 +46,8 @@ struct usbdev_node {
 };
 
 struct onboard_hub {
-	struct regulator *vdd;
+	struct regulator_bulk_data supplies[SUPPLIES_NUM_MAX];
+	unsigned int supplies_num;
 	struct device *dev;
 	const struct onboard_hub_pdata *pdata;
 	struct gpio_desc *reset_gpio;
@@ -55,9 +62,9 @@ static int onboard_hub_power_on(struct onboard_hub *hub)
 {
 	int err;
 
-	err = regulator_enable(hub->vdd);
-	if (err) {
-		dev_err(hub->dev, "failed to enable regulator: %d\n", err);
+	err = regulator_bulk_enable(hub->supplies_num, hub->supplies);
+	if (err != 0) {
+		dev_err(hub->dev, "failed to enable supplies: %d\n", err);
 		return err;
 	}
 
@@ -75,9 +82,9 @@ static int onboard_hub_power_off(struct onboard_hub *hub)
 
 	gpiod_set_value_cansleep(hub->reset_gpio, 1);
 
-	err = regulator_disable(hub->vdd);
-	if (err) {
-		dev_err(hub->dev, "failed to disable regulator: %d\n", err);
+	err = regulator_bulk_disable(hub->supplies_num, hub->supplies);
+	if (err != 0) {
+		dev_err(hub->dev, "failed to disable supplies: %d\n", err);
 		return err;
 	}
 
@@ -232,6 +239,7 @@ static int onboard_hub_probe(struct platform_device *pdev)
 	const struct of_device_id *of_id;
 	struct device *dev = &pdev->dev;
 	struct onboard_hub *hub;
+	unsigned int i;
 	int err;
 
 	hub = devm_kzalloc(dev, sizeof(*hub), GFP_KERNEL);
@@ -246,9 +254,21 @@ static int onboard_hub_probe(struct platform_device *pdev)
 	if (!hub->pdata)
 		return -EINVAL;
 
-	hub->vdd = devm_regulator_get(dev, "vdd");
-	if (IS_ERR(hub->vdd))
-		return PTR_ERR(hub->vdd);
+	if (hub->pdata->supplies_num > SUPPLIES_NUM_MAX)
+		return dev_err_probe(dev, -EINVAL, "max %d supplies supported!\n",
+				     SUPPLIES_NUM_MAX);
+	hub->supplies_num = 1;
+	if (hub->pdata->supplies_num > 1)
+		hub->supplies_num = hub->pdata->supplies_num;
+
+	for (i = 0; i < SUPPLIES_NUM_MAX; i++)
+		hub->supplies[i].supply = supply_names[i];
+
+	err = devm_regulator_bulk_get(dev, hub->supplies_num, hub->supplies);
+	if (err) {
+		dev_err(dev, "Failed to get regulator supplies: %d\n", err);
+		return err;
+	}
 
 	hub->reset_gpio = devm_gpiod_get_optional(dev, "reset",
 						  GPIOD_OUT_HIGH);
diff --git a/drivers/usb/misc/onboard_usb_hub.h b/drivers/usb/misc/onboard_usb_hub.h
index ff8925aa6d3a..955aaaf1c31c 100644
--- a/drivers/usb/misc/onboard_usb_hub.h
+++ b/drivers/usb/misc/onboard_usb_hub.h
@@ -8,6 +8,7 @@
 
 struct onboard_hub_pdata {
 	unsigned long reset_us;		/* reset pulse width in us */
+	unsigned int supplies_num;	/* num of supplies: 0 considered as 1 */
 };
 
 static const struct onboard_hub_pdata microchip_usb424_data = {

-- 
2.34.1


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

* [PATCH 3/4] usb: misc: onboard-hub: add support for Cypress HX3 USB 3.0 family
  2023-06-21 10:37 [PATCH 0/4] usb: misc: onboard_usb_hub: add support for Cypress HX3 USB 3.0 family Benjamin Bara
  2023-06-21 10:38 ` [PATCH 1/4] usb: misc: onboard-hub: resort by VID and PID Benjamin Bara
  2023-06-21 10:38 ` [PATCH 2/4] usb: misc: onboard-hub: support multiple power supplies Benjamin Bara
@ 2023-06-21 10:38 ` Benjamin Bara
  2023-06-21 10:38 ` [PATCH 4/4] dt-bindings: usb: Add binding " Benjamin Bara
  3 siblings, 0 replies; 9+ messages in thread
From: Benjamin Bara @ 2023-06-21 10:38 UTC (permalink / raw)
  To: Matthias Kaehlcke, Greg Kroah-Hartman, Rob Herring,
	Krzysztof Kozlowski, Conor Dooley, Benjamin Bara
  Cc: linux-usb, linux-kernel, devicetree

From: Benjamin Bara <benjamin.bara@skidata.com>

The HX3 comes in different variants (up to 4 USB 3.0 ports; multi-TT),
e.g. CYUSB330x/CYUSB331x/CYUSB332x/CYUSB230x. It operates with two
different power supplies: 1V2 and 3V3.

Add the support for this hub, for controlling the reset pin and the
power supplies.

Reset time is extracted from data sheet, page 24:
"The RESETN pin can be tied to VDD_IO through an external resistor and
to ground (GND) through an external capacitor (minimum 5 ms time
constant)."
V_IH min is given at 0.7 * 3V3 (page 34), therefore use 10ms.

Also add USB PIDs for the USB 2.0 and USB 3.0 root hub.

Signed-off-by: Benjamin Bara <benjamin.bara@skidata.com>
---
 drivers/usb/misc/onboard_usb_hub.c | 3 +++
 drivers/usb/misc/onboard_usb_hub.h | 7 +++++++
 2 files changed, 10 insertions(+)

diff --git a/drivers/usb/misc/onboard_usb_hub.c b/drivers/usb/misc/onboard_usb_hub.c
index 79ba9d8a8fef..1275736637ed 100644
--- a/drivers/usb/misc/onboard_usb_hub.c
+++ b/drivers/usb/misc/onboard_usb_hub.c
@@ -351,6 +351,7 @@ static struct platform_driver onboard_hub_driver = {
 
 #define VENDOR_ID_MICROCHIP	0x0424
 #define VENDOR_ID_TI		0x0451
+#define VENDOR_ID_CYPRESS	0x04b4
 #define VENDOR_ID_GENESYS	0x05e3
 #define VENDOR_ID_REALTEK	0x0bda
 #define VENDOR_ID_VIA		0x2109
@@ -431,6 +432,8 @@ static const struct usb_device_id onboard_hub_id_table[] = {
 	{ USB_DEVICE(VENDOR_ID_MICROCHIP, 0x2517) }, /* USB2517 USB 2.0 */
 	{ USB_DEVICE(VENDOR_ID_TI, 0x8140) }, /* TI USB8041 3.0 */
 	{ USB_DEVICE(VENDOR_ID_TI, 0x8142) }, /* TI USB8041 2.0 */
+	{ USB_DEVICE(VENDOR_ID_CYPRESS, 0x6504) }, /* CYUSB33{0,1,2}x/CYUSB230x 3.0 */
+	{ USB_DEVICE(VENDOR_ID_CYPRESS, 0x6506) }, /* CYUSB33{0,1,2}x/CYUSB230x 2.0 */
 	{ USB_DEVICE(VENDOR_ID_GENESYS, 0x0608) }, /* Genesys Logic GL850G USB 2.0 */
 	{ USB_DEVICE(VENDOR_ID_GENESYS, 0x0610) }, /* Genesys Logic GL852G USB 2.0 */
 	{ USB_DEVICE(VENDOR_ID_REALTEK, 0x0411) }, /* RTS5411 USB 3.1 */
diff --git a/drivers/usb/misc/onboard_usb_hub.h b/drivers/usb/misc/onboard_usb_hub.h
index 955aaaf1c31c..551221f02cff 100644
--- a/drivers/usb/misc/onboard_usb_hub.h
+++ b/drivers/usb/misc/onboard_usb_hub.h
@@ -19,6 +19,11 @@ static const struct onboard_hub_pdata ti_tusb8041_data = {
 	.reset_us = 3000,
 };
 
+static const struct onboard_hub_pdata cypress_hx3_data = {
+	.reset_us = 10000,
+	.supplies_num = 2,
+};
+
 static const struct onboard_hub_pdata genesys_gl850g_data = {
 	.reset_us = 3,
 };
@@ -40,6 +45,8 @@ static const struct of_device_id onboard_hub_match[] = {
 	{ .compatible = "usb424,2517", .data = &microchip_usb424_data, },
 	{ .compatible = "usb451,8140", .data = &ti_tusb8041_data, },
 	{ .compatible = "usb451,8142", .data = &ti_tusb8041_data, },
+	{ .compatible = "usb4b4,6504", .data = &cypress_hx3_data, },
+	{ .compatible = "usb4b4,6506", .data = &cypress_hx3_data, },
 	{ .compatible = "usb5e3,608", .data = &genesys_gl850g_data, },
 	{ .compatible = "usb5e3,610", .data = &genesys_gl852g_data, },
 	{ .compatible = "usbbda,411", .data = &realtek_rts5411_data, },

-- 
2.34.1


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

* [PATCH 4/4] dt-bindings: usb: Add binding for Cypress HX3 USB 3.0 family
  2023-06-21 10:37 [PATCH 0/4] usb: misc: onboard_usb_hub: add support for Cypress HX3 USB 3.0 family Benjamin Bara
                   ` (2 preceding siblings ...)
  2023-06-21 10:38 ` [PATCH 3/4] usb: misc: onboard-hub: add support for Cypress HX3 USB 3.0 family Benjamin Bara
@ 2023-06-21 10:38 ` Benjamin Bara
  3 siblings, 0 replies; 9+ messages in thread
From: Benjamin Bara @ 2023-06-21 10:38 UTC (permalink / raw)
  To: Matthias Kaehlcke, Greg Kroah-Hartman, Rob Herring,
	Krzysztof Kozlowski, Conor Dooley, Benjamin Bara
  Cc: linux-usb, linux-kernel, devicetree

From: Benjamin Bara <benjamin.bara@skidata.com>

The HX3 family comes in different variants (up to 4 USB 3.0 ports;
multi-TT), e.g. CYUSB330x/CYUSB331x/CYUSB332x/CYUSB230x.

This initial version of the binding only describes USB related aspects
of the HX3 family, it does not cover the option of connecting the
controller as an i2c slave.

Signed-off-by: Benjamin Bara <benjamin.bara@skidata.com>
---
 .../devicetree/bindings/usb/cypress,hx3.yaml       | 77 ++++++++++++++++++++++
 1 file changed, 77 insertions(+)

diff --git a/Documentation/devicetree/bindings/usb/cypress,hx3.yaml b/Documentation/devicetree/bindings/usb/cypress,hx3.yaml
new file mode 100644
index 000000000000..47add0d85fb8
--- /dev/null
+++ b/Documentation/devicetree/bindings/usb/cypress,hx3.yaml
@@ -0,0 +1,77 @@
+# SPDX-License-Identifier: GPL-2.0-only or BSD-2-Clause
+%YAML 1.2
+---
+$id: http://devicetree.org/schemas/usb/cypress,hx3.yaml#
+$schema: http://devicetree.org/meta-schemas/core.yaml#
+
+title: Cypress HX3 USB 3.0 hub controller family
+
+maintainers:
+  - Benjamin Bara <benjamin.bara@skidata.com>
+
+allOf:
+  - $ref: usb-device.yaml#
+
+properties:
+  compatible:
+    enum:
+      - usb4b4,6504
+      - usb4b4,6506
+
+  reg: true
+
+  reset-gpios:
+    items:
+      - description: GPIO specifier for RESETN pin.
+
+  vdd-supply:
+    description:
+      1V2 power supply (VDD_EFUSE, AVDD12, DVDD12).
+
+  vdd2-supply:
+    description:
+      3V3 power supply (AVDD33, VDD_IO).
+
+  peer-hub:
+    $ref: /schemas/types.yaml#/definitions/phandle
+    description:
+      phandle to the peer hub on the controller.
+
+required:
+  - compatible
+  - reg
+  - peer-hub
+  - vdd-supply
+  - vdd2-supply
+
+additionalProperties: false
+
+examples:
+  - |
+    #include <dt-bindings/gpio/gpio.h>
+
+    usb {
+        dr_mode = "host";
+        #address-cells = <1>;
+        #size-cells = <0>;
+
+        /* 2.0 hub on port 1 */
+        hub_2_0: hub@1 {
+          compatible = "usb4b4,6504";
+          reg = <1>;
+          peer-hub = <&hub_3_0>;
+          reset-gpios = <&gpio1 11 GPIO_ACTIVE_LOW>;
+          vdd-supply = <&reg_1v2_usb>;
+          vdd2-supply = <&reg_3v3_usb>;
+        };
+
+        /* 3.0 hub on port 2 */
+        hub_3_0: hub@2 {
+          compatible = "usb4b4,6506";
+          reg = <2>;
+          peer-hub = <&hub_2_0>;
+          reset-gpios = <&gpio1 11 GPIO_ACTIVE_LOW>;
+          vdd-supply = <&reg_1v2_usb>;
+          vdd2-supply = <&reg_3v3_usb>;
+        };
+    };

-- 
2.34.1


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

* Re: [PATCH 1/4] usb: misc: onboard-hub: resort by VID and PID
  2023-06-21 10:38 ` [PATCH 1/4] usb: misc: onboard-hub: resort by VID and PID Benjamin Bara
@ 2023-06-21 14:05   ` Matthias Kaehlcke
  2023-06-21 15:59   ` Greg Kroah-Hartman
  1 sibling, 0 replies; 9+ messages in thread
From: Matthias Kaehlcke @ 2023-06-21 14:05 UTC (permalink / raw)
  To: Benjamin Bara
  Cc: Greg Kroah-Hartman, Rob Herring, Krzysztof Kozlowski,
	Conor Dooley, Benjamin Bara, linux-usb, linux-kernel, devicetree

On Wed, Jun 21, 2023 at 12:38:00PM +0200, Benjamin Bara wrote:
> From: Benjamin Bara <benjamin.bara@skidata.com>
> 
> Resort the existing entries by VID and then by PID to be able to find
> entries easier.

I don't think it actually makes it easier. In both the 'onboard_hub_id_table'
and the list of 'onboard_hub_pdata' the numerical VID isn't even visible
because the 'VENDOR_ID_*' constant is used, so the ordering becomes arbitrary
for a human reader, at least for the 99.9% who doesn't know all the VIDs by
heart.

For the 'VENDOR_ID_*' list one can argue in either way. My POV is that a
reader sees the name of the constant first, therefore the list should be
ordered by name. For the occasional case that a new hub model is added it
shouldn't be too hard to search the file for the VID to check if it already
exists.

> Signed-off-by: Benjamin Bara <benjamin.bara@skidata.com>
> ---
>  drivers/usb/misc/onboard_usb_hub.c | 12 ++++++------
>  drivers/usb/misc/onboard_usb_hub.h |  8 ++++----
>  2 files changed, 10 insertions(+), 10 deletions(-)
> 
> diff --git a/drivers/usb/misc/onboard_usb_hub.c b/drivers/usb/misc/onboard_usb_hub.c
> index 12fc6eb67c3b..94006714c273 100644
> --- a/drivers/usb/misc/onboard_usb_hub.c
> +++ b/drivers/usb/misc/onboard_usb_hub.c
> @@ -329,10 +329,10 @@ static struct platform_driver onboard_hub_driver = {
>  
>  /************************** USB driver **************************/
>  
> -#define VENDOR_ID_GENESYS	0x05e3
>  #define VENDOR_ID_MICROCHIP	0x0424
> -#define VENDOR_ID_REALTEK	0x0bda
>  #define VENDOR_ID_TI		0x0451
> +#define VENDOR_ID_GENESYS	0x05e3
> +#define VENDOR_ID_REALTEK	0x0bda
>  #define VENDOR_ID_VIA		0x2109
>  
>  /*
> @@ -407,16 +407,16 @@ static void onboard_hub_usbdev_disconnect(struct usb_device *udev)
>  }
>  
>  static const struct usb_device_id onboard_hub_id_table[] = {
> -	{ USB_DEVICE(VENDOR_ID_GENESYS, 0x0608) }, /* Genesys Logic GL850G USB 2.0 */
> -	{ USB_DEVICE(VENDOR_ID_GENESYS, 0x0610) }, /* Genesys Logic GL852G USB 2.0 */
>  	{ USB_DEVICE(VENDOR_ID_MICROCHIP, 0x2514) }, /* USB2514B USB 2.0 */
>  	{ USB_DEVICE(VENDOR_ID_MICROCHIP, 0x2517) }, /* USB2517 USB 2.0 */
> +	{ USB_DEVICE(VENDOR_ID_TI, 0x8140) }, /* TI USB8041 3.0 */
> +	{ USB_DEVICE(VENDOR_ID_TI, 0x8142) }, /* TI USB8041 2.0 */
> +	{ USB_DEVICE(VENDOR_ID_GENESYS, 0x0608) }, /* Genesys Logic GL850G USB 2.0 */
> +	{ USB_DEVICE(VENDOR_ID_GENESYS, 0x0610) }, /* Genesys Logic GL852G USB 2.0 */
>  	{ USB_DEVICE(VENDOR_ID_REALTEK, 0x0411) }, /* RTS5411 USB 3.1 */
>  	{ USB_DEVICE(VENDOR_ID_REALTEK, 0x5411) }, /* RTS5411 USB 2.1 */
>  	{ USB_DEVICE(VENDOR_ID_REALTEK, 0x0414) }, /* RTS5414 USB 3.2 */
>  	{ USB_DEVICE(VENDOR_ID_REALTEK, 0x5414) }, /* RTS5414 USB 2.1 */
> -	{ USB_DEVICE(VENDOR_ID_TI, 0x8140) }, /* TI USB8041 3.0 */
> -	{ USB_DEVICE(VENDOR_ID_TI, 0x8142) }, /* TI USB8041 2.0 */
>  	{ USB_DEVICE(VENDOR_ID_VIA, 0x0817) }, /* VIA VL817 3.1 */
>  	{ USB_DEVICE(VENDOR_ID_VIA, 0x2817) }, /* VIA VL817 2.0 */
>  	{}
> diff --git a/drivers/usb/misc/onboard_usb_hub.h b/drivers/usb/misc/onboard_usb_hub.h
> index aca5f50eb0da..ff8925aa6d3a 100644
> --- a/drivers/usb/misc/onboard_usb_hub.h
> +++ b/drivers/usb/misc/onboard_usb_hub.h
> @@ -14,10 +14,6 @@ static const struct onboard_hub_pdata microchip_usb424_data = {
>  	.reset_us = 1,
>  };
>  
> -static const struct onboard_hub_pdata realtek_rts5411_data = {
> -	.reset_us = 0,
> -};
> -
>  static const struct onboard_hub_pdata ti_tusb8041_data = {
>  	.reset_us = 3000,
>  };
> @@ -30,6 +26,10 @@ static const struct onboard_hub_pdata genesys_gl852g_data = {
>  	.reset_us = 50,
>  };
>  
> +static const struct onboard_hub_pdata realtek_rts5411_data = {
> +	.reset_us = 0,
> +};
> +
>  static const struct onboard_hub_pdata vialab_vl817_data = {
>  	.reset_us = 10,
>  };
> 
> -- 
> 2.34.1
> 

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

* Re: [PATCH 1/4] usb: misc: onboard-hub: resort by VID and PID
  2023-06-21 10:38 ` [PATCH 1/4] usb: misc: onboard-hub: resort by VID and PID Benjamin Bara
  2023-06-21 14:05   ` Matthias Kaehlcke
@ 2023-06-21 15:59   ` Greg Kroah-Hartman
  2023-06-21 16:05     ` Benjamin Bara
  1 sibling, 1 reply; 9+ messages in thread
From: Greg Kroah-Hartman @ 2023-06-21 15:59 UTC (permalink / raw)
  To: Benjamin Bara
  Cc: Matthias Kaehlcke, Rob Herring, Krzysztof Kozlowski, Conor Dooley,
	Benjamin Bara, linux-usb, linux-kernel, devicetree

On Wed, Jun 21, 2023 at 12:38:00PM +0200, Benjamin Bara wrote:
> From: Benjamin Bara <benjamin.bara@skidata.com>
> 
> Resort the existing entries by VID and then by PID to be able to find
> entries easier.
> 
> Signed-off-by: Benjamin Bara <benjamin.bara@skidata.com>
> ---
>  drivers/usb/misc/onboard_usb_hub.c | 12 ++++++------
>  drivers/usb/misc/onboard_usb_hub.h |  8 ++++----
>  2 files changed, 10 insertions(+), 10 deletions(-)
> 
> diff --git a/drivers/usb/misc/onboard_usb_hub.c b/drivers/usb/misc/onboard_usb_hub.c
> index 12fc6eb67c3b..94006714c273 100644
> --- a/drivers/usb/misc/onboard_usb_hub.c
> +++ b/drivers/usb/misc/onboard_usb_hub.c
> @@ -329,10 +329,10 @@ static struct platform_driver onboard_hub_driver = {
>  
>  /************************** USB driver **************************/
>  
> -#define VENDOR_ID_GENESYS	0x05e3
>  #define VENDOR_ID_MICROCHIP	0x0424
> -#define VENDOR_ID_REALTEK	0x0bda
>  #define VENDOR_ID_TI		0x0451
> +#define VENDOR_ID_GENESYS	0x05e3
> +#define VENDOR_ID_REALTEK	0x0bda
>  #define VENDOR_ID_VIA		0x2109

This is fine, but:

>  
>  /*
> @@ -407,16 +407,16 @@ static void onboard_hub_usbdev_disconnect(struct usb_device *udev)
>  }
>  
>  static const struct usb_device_id onboard_hub_id_table[] = {
> -	{ USB_DEVICE(VENDOR_ID_GENESYS, 0x0608) }, /* Genesys Logic GL850G USB 2.0 */
> -	{ USB_DEVICE(VENDOR_ID_GENESYS, 0x0610) }, /* Genesys Logic GL852G USB 2.0 */
>  	{ USB_DEVICE(VENDOR_ID_MICROCHIP, 0x2514) }, /* USB2514B USB 2.0 */
>  	{ USB_DEVICE(VENDOR_ID_MICROCHIP, 0x2517) }, /* USB2517 USB 2.0 */
> +	{ USB_DEVICE(VENDOR_ID_TI, 0x8140) }, /* TI USB8041 3.0 */
> +	{ USB_DEVICE(VENDOR_ID_TI, 0x8142) }, /* TI USB8041 2.0 */
> +	{ USB_DEVICE(VENDOR_ID_GENESYS, 0x0608) }, /* Genesys Logic GL850G USB 2.0 */
> +	{ USB_DEVICE(VENDOR_ID_GENESYS, 0x0610) }, /* Genesys Logic GL852G USB 2.0 */
>  	{ USB_DEVICE(VENDOR_ID_REALTEK, 0x0411) }, /* RTS5411 USB 3.1 */
>  	{ USB_DEVICE(VENDOR_ID_REALTEK, 0x5411) }, /* RTS5411 USB 2.1 */
>  	{ USB_DEVICE(VENDOR_ID_REALTEK, 0x0414) }, /* RTS5414 USB 3.2 */
>  	{ USB_DEVICE(VENDOR_ID_REALTEK, 0x5414) }, /* RTS5414 USB 2.1 */
> -	{ USB_DEVICE(VENDOR_ID_TI, 0x8140) }, /* TI USB8041 3.0 */
> -	{ USB_DEVICE(VENDOR_ID_TI, 0x8142) }, /* TI USB8041 2.0 */
>  	{ USB_DEVICE(VENDOR_ID_VIA, 0x0817) }, /* VIA VL817 3.1 */
>  	{ USB_DEVICE(VENDOR_ID_VIA, 0x2817) }, /* VIA VL817 2.0 */
>  	{}

This does nothing except make backports harder over time :(



> diff --git a/drivers/usb/misc/onboard_usb_hub.h b/drivers/usb/misc/onboard_usb_hub.h
> index aca5f50eb0da..ff8925aa6d3a 100644
> --- a/drivers/usb/misc/onboard_usb_hub.h
> +++ b/drivers/usb/misc/onboard_usb_hub.h
> @@ -14,10 +14,6 @@ static const struct onboard_hub_pdata microchip_usb424_data = {
>  	.reset_us = 1,
>  };
>  
> -static const struct onboard_hub_pdata realtek_rts5411_data = {
> -	.reset_us = 0,
> -};
> -
>  static const struct onboard_hub_pdata ti_tusb8041_data = {
>  	.reset_us = 3000,
>  };
> @@ -30,6 +26,10 @@ static const struct onboard_hub_pdata genesys_gl852g_data = {
>  	.reset_us = 50,
>  };
>  
> +static const struct onboard_hub_pdata realtek_rts5411_data = {
> +	.reset_us = 0,
> +};

And this also does nothing to help really, so it's not needed, sorry.

thanks,

greg k-h

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

* Re: [PATCH 1/4] usb: misc: onboard-hub: resort by VID and PID
  2023-06-21 15:59   ` Greg Kroah-Hartman
@ 2023-06-21 16:05     ` Benjamin Bara
  0 siblings, 0 replies; 9+ messages in thread
From: Benjamin Bara @ 2023-06-21 16:05 UTC (permalink / raw)
  To: gregkh
  Cc: bbara93, benjamin.bara, conor+dt, devicetree,
	krzysztof.kozlowski+dt, linux-kernel, linux-usb, mka, robh+dt

Hi,

On Wed, 21 Jun 2023 at 17:59, Greg Kroah-Hartman <gregkh@linuxfoundation.org> wrote:
> This does nothing except make backports harder over time :(
>
> And this also does nothing to help really, so it's not needed, sorry.

thanks for the feedback, I already dropped it and sent out v3[1].

Sorry for the inconvenience.

br,
Benjamin

[1] https://lore.kernel.org/lkml/20230620-hx3-v3-0-2acbc03ca949@skidata.com/

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

end of thread, other threads:[~2023-06-21 16:05 UTC | newest]

Thread overview: 9+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2023-06-21 10:37 [PATCH 0/4] usb: misc: onboard_usb_hub: add support for Cypress HX3 USB 3.0 family Benjamin Bara
2023-06-21 10:38 ` [PATCH 1/4] usb: misc: onboard-hub: resort by VID and PID Benjamin Bara
2023-06-21 14:05   ` Matthias Kaehlcke
2023-06-21 15:59   ` Greg Kroah-Hartman
2023-06-21 16:05     ` Benjamin Bara
2023-06-21 10:38 ` [PATCH 2/4] usb: misc: onboard-hub: support multiple power supplies Benjamin Bara
2023-06-21 10:38 ` [PATCH 3/4] usb: misc: onboard-hub: add support for Cypress HX3 USB 3.0 family Benjamin Bara
2023-06-21 10:38 ` [PATCH 4/4] dt-bindings: usb: Add binding " Benjamin Bara
  -- strict thread matches above, loose matches on Subject: below --
2023-06-21 10:37 [PATCH 0/4] usb: misc: onboard_usb_hub: add support " Benjamin Bara
2023-06-21 10:37 ` [PATCH 1/4] usb: misc: onboard-hub: resort by VID and PID Benjamin Bara

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.