linux-usb.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
* [PATCH 0/5] Remodel HD3SS3220 device nodes
@ 2020-08-04 17:48 Biju Das
  2020-08-04 17:48 ` [PATCH 1/5] dt-bindings: usb: convert ti,hd3ss3220 bindings to json-schema Biju Das
                   ` (2 more replies)
  0 siblings, 3 replies; 6+ messages in thread
From: Biju Das @ 2020-08-04 17:48 UTC (permalink / raw)
  To: Rob Herring, Heikki Krogerus, Greg Kroah-Hartman
  Cc: Biju Das, Yoshihiro Shimoda, linux-usb, devicetree,
	Geert Uytterhoeven, Chris Paterson, Biju Das,
	Prabhakar Mahadev Lad, linux-renesas-soc

Some platforms have only super speed data bus connected to HD3SS3220 device
and high speed data bus directly connected to the SoC. In such platforms
modelling connector as a child of this device is making it non complaint
with usb connector bindings. By modelling connector node as standalone
device node along with HD3SS3220 device and the SoC data bus will make it
complaint with usb connector bindings.

It is based on the below discussion threads

1) https://patchwork.kernel.org/patch/11669423/
2) https://patchwork.kernel.org/patch/11129567/


Biju Das (4):
  dt-bindings: usb: renesas,usb3-peri: Document HS and SS data bus
  usb: typec: hd3ss3220: Use OF graph API to get the connector fwnode
  arm64: dts: renesas: cat874: Move connector node out of hd3ss3220
    device
  arm64: dts: renesas: beacon-renesom-baseboard: Move connector node out
    of hd3ss3220 device

Lad Prabhakar (1):
  dt-bindings: usb: convert ti,hd3ss3220 bindings to json-schema

 .../bindings/usb/renesas,usb3-peri.yaml       | 36 +++++++--
 .../devicetree/bindings/usb/ti,hd3ss3220.txt  | 38 ---------
 .../devicetree/bindings/usb/ti,hd3ss3220.yaml | 81 +++++++++++++++++++
 .../dts/renesas/beacon-renesom-baseboard.dtsi | 67 +++++++++++----
 .../boot/dts/renesas/r8a774c0-cat874.dts      | 67 +++++++++++----
 drivers/usb/typec/hd3ss3220.c                 | 18 ++++-
 6 files changed, 225 insertions(+), 82 deletions(-)
 delete mode 100644 Documentation/devicetree/bindings/usb/ti,hd3ss3220.txt
 create mode 100644 Documentation/devicetree/bindings/usb/ti,hd3ss3220.yaml

-- 
2.17.1


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

* [PATCH 1/5] dt-bindings: usb: convert ti,hd3ss3220 bindings to json-schema
  2020-08-04 17:48 [PATCH 0/5] Remodel HD3SS3220 device nodes Biju Das
@ 2020-08-04 17:48 ` Biju Das
  2020-08-04 17:48 ` [PATCH 2/5] dt-bindings: usb: renesas,usb3-peri: Document HS and SS data bus Biju Das
  2020-08-04 17:48 ` [PATCH 3/5] usb: typec: hd3ss3220: Use OF graph API to get the connector fwnode Biju Das
  2 siblings, 0 replies; 6+ messages in thread
From: Biju Das @ 2020-08-04 17:48 UTC (permalink / raw)
  To: Rob Herring, Greg Kroah-Hartman
  Cc: Lad Prabhakar, Yoshihiro Shimoda, Heikki Krogerus, linux-usb,
	devicetree, Geert Uytterhoeven, Chris Paterson, Biju Das,
	linux-renesas-soc, Biju Das

From: Lad Prabhakar <prabhakar.mahadev-lad.rj@bp.renesas.com>

Convert ti,hd3ss3220.txt to YAML. Updated the binding documentation
as graph bindings of this device model Super Speed (SS) data bus to
the Super Speed (SS) capable connector.

Signed-off-by: Lad Prabhakar <prabhakar.mahadev-lad.rj@bp.renesas.com>
Signed-off-by: Biju Das <biju.das.jz@bp.renesas.com>
---
Ref: https://patchwork.kernel.org/patch/11669423/
---
 .../devicetree/bindings/usb/ti,hd3ss3220.txt  | 38 ---------
 .../devicetree/bindings/usb/ti,hd3ss3220.yaml | 81 +++++++++++++++++++
 2 files changed, 81 insertions(+), 38 deletions(-)
 delete mode 100644 Documentation/devicetree/bindings/usb/ti,hd3ss3220.txt
 create mode 100644 Documentation/devicetree/bindings/usb/ti,hd3ss3220.yaml

diff --git a/Documentation/devicetree/bindings/usb/ti,hd3ss3220.txt b/Documentation/devicetree/bindings/usb/ti,hd3ss3220.txt
deleted file mode 100644
index 2bd21b22ce95..000000000000
--- a/Documentation/devicetree/bindings/usb/ti,hd3ss3220.txt
+++ /dev/null
@@ -1,38 +0,0 @@
-TI HD3SS3220 TypeC DRP Port Controller.
-
-Required properties:
- - compatible: Must be "ti,hd3ss3220".
- - reg: I2C slave address, must be 0x47 or 0x67 based on ADDR pin.
- - interrupts: An interrupt specifier.
-
-Required sub-node:
- - connector: The "usb-c-connector" attached to the hd3ss3220 chip. The
-   bindings of the connector node are specified in:
-
-	Documentation/devicetree/bindings/connector/usb-connector.yaml
-
-Example:
-hd3ss3220@47 {
-	compatible = "ti,hd3ss3220";
-	reg = <0x47>;
-	interrupt-parent = <&gpio6>;
-	interrupts = <3 IRQ_TYPE_LEVEL_LOW>;
-
-	connector {
-		compatible = "usb-c-connector";
-		label = "USB-C";
-		data-role = "dual";
-
-		ports {
-			#address-cells = <1>;
-			#size-cells = <0>;
-
-			port@1 {
-				reg = <1>;
-				hd3ss3220_ep: endpoint {
-					remote-endpoint = <&usb3_role_switch>;
-				};
-			};
-		};
-	};
-};
diff --git a/Documentation/devicetree/bindings/usb/ti,hd3ss3220.yaml b/Documentation/devicetree/bindings/usb/ti,hd3ss3220.yaml
new file mode 100644
index 000000000000..5c7c7d782a04
--- /dev/null
+++ b/Documentation/devicetree/bindings/usb/ti,hd3ss3220.yaml
@@ -0,0 +1,81 @@
+# SPDX-License-Identifier: (GPL-2.0 OR BSD-2-Clause)
+%YAML 1.2
+---
+$id: http://devicetree.org/schemas/usb/ti,hd3ss3220.yaml#
+$schema: http://devicetree.org/meta-schemas/core.yaml#
+
+title: TI HD3SS3220 TypeC DRP Port Controller
+
+maintainers:
+  - Biju Das <biju.das.jz@bp.renesas.com>
+
+description: |-
+  HD3SS3220 is a USB SuperSpeed (SS) 2:1 mux with DRP port controller. The device provides Channel
+  Configuration (CC) logic and 5V VCONN sourcing for ecosystems implementing USB Type-C. The
+  HD3SS3220 can be configured as a Downstream Facing Port (DFP), Upstream Facing Port (UFP) or a
+  Dual Role Port (DRP) making it ideal for any application.
+
+properties:
+  compatible:
+   const: ti,hd3ss3220
+
+  reg:
+    maxItems: 1
+
+  interrupts:
+    maxItems: 1
+
+  ports:
+    description: OF graph bindings (specified in bindings/graph.txt) that model
+      SS data bus to the SS capable connector.
+    type: object
+    properties:
+      port@0:
+        type: object
+        description: Super Speed (SS) capable connector.
+
+      port@1:
+        type: object
+        description: Super Speed (SS) data bus.
+
+    required:
+      - port@0
+      - port@1
+
+required:
+  - compatible
+  - reg
+  - interrupts
+
+additionalProperties: false
+
+examples:
+  - |
+    i2c0 {
+    	#address-cells = <1>;
+    	#size-cells = <0>;
+
+    	hd3ss3220@47 {
+    		compatible = "ti,hd3ss3220";
+    		reg = <0x47>;
+    		interrupt-parent = <&gpio6>;
+    		interrupts = <3>;
+
+    		ports {
+    			#address-cells = <1>;
+    			#size-cells = <0>;
+    			port@0 {
+    				reg = <0>;
+    				hd3ss3220_in_ep: endpoint {
+    					remote-endpoint = <&ss_ep>;
+    				};
+    			};
+    			port@1 {
+    				reg = <1>;
+    				hd3ss3220_out_ep: endpoint {
+    					remote-endpoint = <&usb3_role_switch>;
+    				};
+    			};
+    		};
+    	};
+    };
-- 
2.17.1


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

* [PATCH 2/5] dt-bindings: usb: renesas,usb3-peri: Document HS and SS data bus
  2020-08-04 17:48 [PATCH 0/5] Remodel HD3SS3220 device nodes Biju Das
  2020-08-04 17:48 ` [PATCH 1/5] dt-bindings: usb: convert ti,hd3ss3220 bindings to json-schema Biju Das
@ 2020-08-04 17:48 ` Biju Das
  2020-08-04 17:48 ` [PATCH 3/5] usb: typec: hd3ss3220: Use OF graph API to get the connector fwnode Biju Das
  2 siblings, 0 replies; 6+ messages in thread
From: Biju Das @ 2020-08-04 17:48 UTC (permalink / raw)
  To: Rob Herring, Greg Kroah-Hartman
  Cc: Biju Das, Yoshihiro Shimoda, Heikki Krogerus, linux-usb,
	devicetree, Geert Uytterhoeven, Chris Paterson, Biju Das,
	Prabhakar Mahadev Lad, linux-renesas-soc

Document HS and SS data bus for the "usb-role-switch" enabled case.

Signed-off-by: Biju Das <biju.das.jz@bp.renesas.com>
Reviewed-by: Lad Prabhakar <prabhakar.mahadev-lad.rj@bp.renesas.com>
---
Ref:https://patchwork.kernel.org/patch/11669423/
---
 .../bindings/usb/renesas,usb3-peri.yaml       | 36 +++++++++++++++----
 1 file changed, 30 insertions(+), 6 deletions(-)

diff --git a/Documentation/devicetree/bindings/usb/renesas,usb3-peri.yaml b/Documentation/devicetree/bindings/usb/renesas,usb3-peri.yaml
index e3cdeab1199f..3eb964af37b8 100644
--- a/Documentation/devicetree/bindings/usb/renesas,usb3-peri.yaml
+++ b/Documentation/devicetree/bindings/usb/renesas,usb3-peri.yaml
@@ -52,11 +52,24 @@ properties:
     $ref: /schemas/types.yaml#/definitions/phandle
     description: phandle of a companion.
 
-  port:
+  ports:
     description: |
       any connector to the data bus of this controller should be modelled
       using the OF graph bindings specified, if the "usb-role-switch"
       property is used.
+    type: object
+    properties:
+      port@0:
+        type: object
+        description: High Speed (HS) data bus.
+
+      port@1:
+        type: object
+        description: Super Speed (SS) data bus.
+
+    required:
+      - port@0
+      - port@1
 
 required:
   - compatible
@@ -79,9 +92,20 @@ examples:
         companion = <&xhci0>;
         usb-role-switch;
 
-        port {
-            usb3_role_switch: endpoint {
-                remote-endpoint = <&hd3ss3220_ep>;
-            };
-        };
+    	ports {
+    		#address-cells = <1>;
+    		#size-cells = <0>;
+    		port@0 {
+    			reg = <0>;
+    			usb3_hs_ep: endpoint {
+    				remote-endpoint = <&hs_ep>;
+    			};
+    		};
+    		port@1 {
+    			reg = <1>;
+    			usb3_role_switch: endpoint {
+    				remote-endpoint = <&hd3ss3220_out_ep>;
+    			};
+    		};
+    	};
     };
-- 
2.17.1


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

* [PATCH 3/5] usb: typec: hd3ss3220: Use OF graph API to get the connector fwnode
  2020-08-04 17:48 [PATCH 0/5] Remodel HD3SS3220 device nodes Biju Das
  2020-08-04 17:48 ` [PATCH 1/5] dt-bindings: usb: convert ti,hd3ss3220 bindings to json-schema Biju Das
  2020-08-04 17:48 ` [PATCH 2/5] dt-bindings: usb: renesas,usb3-peri: Document HS and SS data bus Biju Das
@ 2020-08-04 17:48 ` Biju Das
  2020-08-05  9:35   ` Sergei Shtylyov
  2 siblings, 1 reply; 6+ messages in thread
From: Biju Das @ 2020-08-04 17:48 UTC (permalink / raw)
  To: Heikki Krogerus
  Cc: Biju Das, Greg Kroah-Hartman, Yoshihiro Shimoda, Rob Herring,
	linux-usb, Geert Uytterhoeven, Chris Paterson, Biju Das,
	Prabhakar Mahadev Lad, linux-renesas-soc

Some platforms have only super speed data bus connected to this device
and high speed data bus directly connected to the SoC. In such platforms
modelling connector as a child of this device is making it non complaint
with usb connector bindings. By modelling connector node as standalone
device node along with this device and the SoC data bus will make it
complaint with usb connector bindings.
Update the driver to handle this model by using OF graph API to get the
connector fwnode and usb role switch class API to get role switch handle.

Signed-off-by: Biju Das <biju.das.jz@bp.renesas.com>
Reviewed-by: Lad Prabhakar <prabhakar.mahadev-lad.rj@bp.renesas.com>
---
Ref:https://patchwork.kernel.org/patch/11669423/
---
 drivers/usb/typec/hd3ss3220.c | 18 ++++++++++++++----
 1 file changed, 14 insertions(+), 4 deletions(-)

diff --git a/drivers/usb/typec/hd3ss3220.c b/drivers/usb/typec/hd3ss3220.c
index 323dfa8160ab..f633ec15b1a1 100644
--- a/drivers/usb/typec/hd3ss3220.c
+++ b/drivers/usb/typec/hd3ss3220.c
@@ -155,7 +155,7 @@ static int hd3ss3220_probe(struct i2c_client *client,
 {
 	struct typec_capability typec_cap = { };
 	struct hd3ss3220 *hd3ss3220;
-	struct fwnode_handle *connector;
+	struct fwnode_handle *connector, *ep;
 	int ret;
 	unsigned int data;
 
@@ -173,11 +173,21 @@ static int hd3ss3220_probe(struct i2c_client *client,
 
 	hd3ss3220_set_source_pref(hd3ss3220,
 				  HD3SS3220_REG_GEN_CTRL_SRC_PREF_DRP_DEFAULT);
+	/* For backward compatibility check the connector child node first */
 	connector = device_get_named_child_node(hd3ss3220->dev, "connector");
-	if (!connector)
-		return -ENODEV;
+	if (connector) {
+		hd3ss3220->role_sw = fwnode_usb_role_switch_get(connector);
+	} else {
+		ep = fwnode_graph_get_next_endpoint(dev_fwnode(hd3ss3220->dev), NULL);
+		if (!ep)
+			return -ENODEV;
+		connector = fwnode_graph_get_remote_port_parent(ep);
+		fwnode_handle_put(ep);
+		if (!connector)
+			return -ENODEV;
+		hd3ss3220->role_sw = usb_role_switch_get(hd3ss3220->dev);
+	}
 
-	hd3ss3220->role_sw = fwnode_usb_role_switch_get(connector);
 	if (IS_ERR(hd3ss3220->role_sw)) {
 		ret = PTR_ERR(hd3ss3220->role_sw);
 		goto err_put_fwnode;
-- 
2.17.1


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

* Re: [PATCH 3/5] usb: typec: hd3ss3220: Use OF graph API to get the connector fwnode
  2020-08-04 17:48 ` [PATCH 3/5] usb: typec: hd3ss3220: Use OF graph API to get the connector fwnode Biju Das
@ 2020-08-05  9:35   ` Sergei Shtylyov
  2020-08-05 10:16     ` Biju Das
  0 siblings, 1 reply; 6+ messages in thread
From: Sergei Shtylyov @ 2020-08-05  9:35 UTC (permalink / raw)
  To: Biju Das, Heikki Krogerus
  Cc: Greg Kroah-Hartman, Yoshihiro Shimoda, Rob Herring, linux-usb,
	Geert Uytterhoeven, Chris Paterson, Biju Das,
	Prabhakar Mahadev Lad, linux-renesas-soc

Hello!

On 04.08.2020 20:48, Biju Das wrote:

> Some platforms have only super speed data bus connected to this device
> and high speed data bus directly connected to the SoC. In such platforms
> modelling connector as a child of this device is making it non complaint

    Compliant? Complaint is when you complain. :-)

> with usb connector bindings. By modelling connector node as standalone
> device node along with this device and the SoC data bus will make it
> complaint with usb connector bindings.

    Ditto.

> Update the driver to handle this model by using OF graph API to get the
> connector fwnode and usb role switch class API to get role switch handle.
> 
> Signed-off-by: Biju Das <biju.das.jz@bp.renesas.com>
> Reviewed-by: Lad Prabhakar <prabhakar.mahadev-lad.rj@bp.renesas.com>
> ---
> Ref:https://patchwork.kernel.org/patch/11669423/
[...]

MBR, Sergei

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

* RE: [PATCH 3/5] usb: typec: hd3ss3220: Use OF graph API to get the connector fwnode
  2020-08-05  9:35   ` Sergei Shtylyov
@ 2020-08-05 10:16     ` Biju Das
  0 siblings, 0 replies; 6+ messages in thread
From: Biju Das @ 2020-08-05 10:16 UTC (permalink / raw)
  To: Sergei Shtylyov, Heikki Krogerus
  Cc: Greg Kroah-Hartman, Yoshihiro Shimoda, Rob Herring, linux-usb,
	Geert Uytterhoeven, Chris Paterson, Biju Das,
	Prabhakar Mahadev Lad, linux-renesas-soc

Hi Sergei,

Thanks for the feedback.

> Subject: Re: [PATCH 3/5] usb: typec: hd3ss3220: Use OF graph API to get the
> connector fwnode
>
> Hello!
>
> On 04.08.2020 20:48, Biju Das wrote:
>
> > Some platforms have only super speed data bus connected to this device
> > and high speed data bus directly connected to the SoC. In such
> > platforms modelling connector as a child of this device is making it
> > non complaint
>
>     Compliant? Complaint is when you complain. :-)

Will fix this.

> > with usb connector bindings. By modelling connector node as standalone
> > device node along with this device and the SoC data bus will make it
> > complaint with usb connector bindings.
>
>     Ditto.

Yep, Will fix this.

Regards,
Biju


Renesas Electronics Europe GmbH, Geschaeftsfuehrer/President: Carsten Jauch, Sitz der Gesellschaft/Registered office: Duesseldorf, Arcadiastrasse 10, 40472 Duesseldorf, Germany, Handelsregister/Commercial Register: Duesseldorf, HRB 3708 USt-IDNr./Tax identification no.: DE 119353406 WEEE-Reg.-Nr./WEEE reg. no.: DE 14978647

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

end of thread, other threads:[~2020-08-05 20:16 UTC | newest]

Thread overview: 6+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2020-08-04 17:48 [PATCH 0/5] Remodel HD3SS3220 device nodes Biju Das
2020-08-04 17:48 ` [PATCH 1/5] dt-bindings: usb: convert ti,hd3ss3220 bindings to json-schema Biju Das
2020-08-04 17:48 ` [PATCH 2/5] dt-bindings: usb: renesas,usb3-peri: Document HS and SS data bus Biju Das
2020-08-04 17:48 ` [PATCH 3/5] usb: typec: hd3ss3220: Use OF graph API to get the connector fwnode Biju Das
2020-08-05  9:35   ` Sergei Shtylyov
2020-08-05 10:16     ` Biju Das

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).