diff mbox series

[v10,2/4] dt-bindings: usb: Add Qualcomm PMIC type C controller dt-binding

Message ID 20201008235934.8931-3-wcheng@codeaurora.org (mailing list archive)
State New, archived
Headers show
Series Introduce PMIC based USB type C detection | expand

Commit Message

Wesley Cheng Oct. 8, 2020, 11:59 p.m. UTC
Introduce the dt-binding for enabling USB type C orientation and role
detection using the PM8150B.  The driver will be responsible for receiving
the interrupt at a state change on the CC lines, reading the
orientation/role, and communicating this information to the remote
clients, which can include a role switch node and a type C switch.

Signed-off-by: Wesley Cheng <wcheng@codeaurora.org>
---
 .../bindings/usb/qcom,pmic-typec.yaml         | 115 ++++++++++++++++++
 1 file changed, 115 insertions(+)
 create mode 100644 Documentation/devicetree/bindings/usb/qcom,pmic-typec.yaml

Comments

Rob Herring Oct. 13, 2020, 3 p.m. UTC | #1
On Thu, Oct 08, 2020 at 04:59:32PM -0700, Wesley Cheng wrote:
> Introduce the dt-binding for enabling USB type C orientation and role
> detection using the PM8150B.  The driver will be responsible for receiving
> the interrupt at a state change on the CC lines, reading the
> orientation/role, and communicating this information to the remote
> clients, which can include a role switch node and a type C switch.
> 
> Signed-off-by: Wesley Cheng <wcheng@codeaurora.org>
> ---
>  .../bindings/usb/qcom,pmic-typec.yaml         | 115 ++++++++++++++++++
>  1 file changed, 115 insertions(+)
>  create mode 100644 Documentation/devicetree/bindings/usb/qcom,pmic-typec.yaml
> 
> diff --git a/Documentation/devicetree/bindings/usb/qcom,pmic-typec.yaml b/Documentation/devicetree/bindings/usb/qcom,pmic-typec.yaml
> new file mode 100644
> index 000000000000..40e0a296f922
> --- /dev/null
> +++ b/Documentation/devicetree/bindings/usb/qcom,pmic-typec.yaml
> @@ -0,0 +1,115 @@
> +# SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause)
> +%YAML 1.2
> +---
> +$id: "http://devicetree.org/schemas/usb/qcom,pmic-typec.yaml#"
> +$schema: "http://devicetree.org/meta-schemas/core.yaml#"
> +
> +title: Qualcomm PMIC based USB type C Detection Driver
> +
> +maintainers:
> +  - Wesley Cheng <wcheng@codeaurora.org>
> +
> +description: |
> +  Qualcomm PMIC Type C Detect
> +
> +properties:
> +  compatible:
> +    enum:
> +      - qcom,pm8150b-usb-typec
> +
> +  reg:
> +    maxItems: 1
> +    description: Type C base address
> +
> +  interrupts:
> +    maxItems: 1
> +    description: CC change interrupt from PMIC
> +
> +  port:
> +    description: Remote endpoint connection to the DRD switch
> +    type: object

I don't understand what this is supposed to be. You'll have to expand 
the example or provide a block diagram of what the connections/routing 
looks like.

> +
> +    properties:
> +      endpoint:
> +        description: Connection to the DRD switch being used
> +        type: object
> +
> +  connector:
> +    $ref: /connector/usb-connector.yaml#
> +    description: Connector type for remote endpoints
> +    type: object
> +
> +    properties:
> +      compatible:
> +        enum:
> +          - usb-c-connector
> +
> +      power-role: true
> +      data-role: true
> +
> +      ports:
> +        description: Remote endpoint connections for type C paths
> +        type: object
> +
> +        properties:
> +          port@1:
> +            description: Remote endpoints for the Super Speed path
> +            type: object
> +
> +            properties:
> +              endpoint:
> +                description: Connection to USB type C mux node
> +                type: object
> +
> +    required:
> +      - compatible
> +
> +required:
> +  - compatible
> +  - reg
> +  - interrupts
> +  - connector
> +  - port
> +
> +additionalProperties: false
> +
> +examples:
> +  - |
> +    #include <dt-bindings/interrupt-controller/irq.h>
> +    pm8150b {
> +        #address-cells = <1>;
> +        #size-cells = <0>;
> +        pm8150b_typec: usb-typec@1500 {
> +            compatible = "qcom,pm8150b-usb-typec";
> +            reg = <0x1500>;
> +            interrupts = <0x2 0x15 0x5 IRQ_TYPE_EDGE_RISING>;
> +
> +            port {
> +                usb3_role: endpoint {
> +                    remote-endpoint = <&dwc3_drd_switch>;
> +                };
> +            };
> +
> +            connector {
> +                compatible = "usb-c-connector";
> +                power-role = "dual";
> +                data-role = "dual";
> +                ports {
> +                    #address-cells = <1>;
> +                    #size-cells = <0>;
> +                    port@0 {
> +                        reg = <0>;
> +                    };
> +                    port@1 {
> +                        reg = <1>;
> +                        #address-cells = <1>;
> +                        #size-cells = <0>;
> +                        usb3_data_ss: endpoint {
> +                            remote-endpoint = <&qmp_ss_mux>;
> +                        };
> +                    };
> +                };
> +            };
> +        };
> +    };
> +...
> -- 
> The Qualcomm Innovation Center, Inc. is a member of the Code Aurora Forum,
> a Linux Foundation Collaborative Project
>
Wesley Cheng Oct. 14, 2020, 8:59 a.m. UTC | #2
On 10/13/2020 8:00 AM, Rob Herring wrote:
> On Thu, Oct 08, 2020 at 04:59:32PM -0700, Wesley Cheng wrote:
>> Introduce the dt-binding for enabling USB type C orientation and role
>> detection using the PM8150B.  The driver will be responsible for receiving
>> the interrupt at a state change on the CC lines, reading the
>> orientation/role, and communicating this information to the remote
>> clients, which can include a role switch node and a type C switch.
>>
>> Signed-off-by: Wesley Cheng <wcheng@codeaurora.org>
>> ---
>>  .../bindings/usb/qcom,pmic-typec.yaml         | 115 ++++++++++++++++++
>>  1 file changed, 115 insertions(+)
>>  create mode 100644 Documentation/devicetree/bindings/usb/qcom,pmic-typec.yaml
>>
>> diff --git a/Documentation/devicetree/bindings/usb/qcom,pmic-typec.yaml b/Documentation/devicetree/bindings/usb/qcom,pmic-typec.yaml
>> new file mode 100644
>> index 000000000000..40e0a296f922
>> --- /dev/null
>> +++ b/Documentation/devicetree/bindings/usb/qcom,pmic-typec.yaml
>> @@ -0,0 +1,115 @@
>> +# SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause)
>> +%YAML 1.2
>> +---
>> +$id: "http://devicetree.org/schemas/usb/qcom,pmic-typec.yaml#"
>> +$schema: "http://devicetree.org/meta-schemas/core.yaml#"
>> +
>> +title: Qualcomm PMIC based USB type C Detection Driver
>> +
>> +maintainers:
>> +  - Wesley Cheng <wcheng@codeaurora.org>
>> +
>> +description: |
>> +  Qualcomm PMIC Type C Detect
>> +
>> +properties:
>> +  compatible:
>> +    enum:
>> +      - qcom,pm8150b-usb-typec
>> +
>> +  reg:
>> +    maxItems: 1
>> +    description: Type C base address
>> +
>> +  interrupts:
>> +    maxItems: 1
>> +    description: CC change interrupt from PMIC
>> +
>> +  port:
>> +    description: Remote endpoint connection to the DRD switch
>> +    type: object
> 
> I don't understand what this is supposed to be. You'll have to expand 
> the example or provide a block diagram of what the connections/routing 
> looks like.
> 

Hi Rob,

The "port" node is going to be the connection to the usb role switch
device, which will be listening for the USB type C port change events.
(i.e handling USB role events, etc...)  In previous patches, this was
part of the connector node, which may not have made much sense, as the
connector model is used to describe the HW connections within a design.
 The role switch endpoint is more of a SW interaction between drivers,
thus the motivation to remove it from the connector node.

I think the current usb-connector design is OK as it is, since the only
component essentially involved in the SS path is the SS MUX that we've
been discussing, and this is true among designs that are supporting SSUSB.


Thanks

Regards,
Wesley Cheng
Konrad Dybcio Dec. 13, 2022, 2:05 p.m. UTC | #3
On 9.10.2020 01:59, Wesley Cheng wrote:
> Introduce the dt-binding for enabling USB type C orientation and role
> detection using the PM8150B.  The driver will be responsible for receiving
> the interrupt at a state change on the CC lines, reading the
> orientation/role, and communicating this information to the remote
> clients, which can include a role switch node and a type C switch.
> 
> Signed-off-by: Wesley Cheng <wcheng@codeaurora.org>
> ---
Hi all, sorry for playing archeology, but it looks like the driver
was merged 2 years ago and this binding has been omitted..

Konrad
>  .../bindings/usb/qcom,pmic-typec.yaml         | 115 ++++++++++++++++++
>  1 file changed, 115 insertions(+)
>  create mode 100644 Documentation/devicetree/bindings/usb/qcom,pmic-typec.yaml
> 
> diff --git a/Documentation/devicetree/bindings/usb/qcom,pmic-typec.yaml b/Documentation/devicetree/bindings/usb/qcom,pmic-typec.yaml
> new file mode 100644
> index 000000000000..40e0a296f922
> --- /dev/null
> +++ b/Documentation/devicetree/bindings/usb/qcom,pmic-typec.yaml
> @@ -0,0 +1,115 @@
> +# SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause)
> +%YAML 1.2
> +---
> +$id: "http://devicetree.org/schemas/usb/qcom,pmic-typec.yaml#"
> +$schema: "http://devicetree.org/meta-schemas/core.yaml#"
> +
> +title: Qualcomm PMIC based USB type C Detection Driver
> +
> +maintainers:
> +  - Wesley Cheng <wcheng@codeaurora.org>
> +
> +description: |
> +  Qualcomm PMIC Type C Detect
> +
> +properties:
> +  compatible:
> +    enum:
> +      - qcom,pm8150b-usb-typec
> +
> +  reg:
> +    maxItems: 1
> +    description: Type C base address
> +
> +  interrupts:
> +    maxItems: 1
> +    description: CC change interrupt from PMIC
> +
> +  port:
> +    description: Remote endpoint connection to the DRD switch
> +    type: object
> +
> +    properties:
> +      endpoint:
> +        description: Connection to the DRD switch being used
> +        type: object
> +
> +  connector:
> +    $ref: /connector/usb-connector.yaml#
> +    description: Connector type for remote endpoints
> +    type: object
> +
> +    properties:
> +      compatible:
> +        enum:
> +          - usb-c-connector
> +
> +      power-role: true
> +      data-role: true
> +
> +      ports:
> +        description: Remote endpoint connections for type C paths
> +        type: object
> +
> +        properties:
> +          port@1:
> +            description: Remote endpoints for the Super Speed path
> +            type: object
> +
> +            properties:
> +              endpoint:
> +                description: Connection to USB type C mux node
> +                type: object
> +
> +    required:
> +      - compatible
> +
> +required:
> +  - compatible
> +  - reg
> +  - interrupts
> +  - connector
> +  - port
> +
> +additionalProperties: false
> +
> +examples:
> +  - |
> +    #include <dt-bindings/interrupt-controller/irq.h>
> +    pm8150b {
> +        #address-cells = <1>;
> +        #size-cells = <0>;
> +        pm8150b_typec: usb-typec@1500 {
> +            compatible = "qcom,pm8150b-usb-typec";
> +            reg = <0x1500>;
> +            interrupts = <0x2 0x15 0x5 IRQ_TYPE_EDGE_RISING>;
> +
> +            port {
> +                usb3_role: endpoint {
> +                    remote-endpoint = <&dwc3_drd_switch>;
> +                };
> +            };
> +
> +            connector {
> +                compatible = "usb-c-connector";
> +                power-role = "dual";
> +                data-role = "dual";
> +                ports {
> +                    #address-cells = <1>;
> +                    #size-cells = <0>;
> +                    port@0 {
> +                        reg = <0>;
> +                    };
> +                    port@1 {
> +                        reg = <1>;
> +                        #address-cells = <1>;
> +                        #size-cells = <0>;
> +                        usb3_data_ss: endpoint {
> +                            remote-endpoint = <&qmp_ss_mux>;
> +                        };
> +                    };
> +                };
> +            };
> +        };
> +    };
> +...
diff mbox series

Patch

diff --git a/Documentation/devicetree/bindings/usb/qcom,pmic-typec.yaml b/Documentation/devicetree/bindings/usb/qcom,pmic-typec.yaml
new file mode 100644
index 000000000000..40e0a296f922
--- /dev/null
+++ b/Documentation/devicetree/bindings/usb/qcom,pmic-typec.yaml
@@ -0,0 +1,115 @@ 
+# SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause)
+%YAML 1.2
+---
+$id: "http://devicetree.org/schemas/usb/qcom,pmic-typec.yaml#"
+$schema: "http://devicetree.org/meta-schemas/core.yaml#"
+
+title: Qualcomm PMIC based USB type C Detection Driver
+
+maintainers:
+  - Wesley Cheng <wcheng@codeaurora.org>
+
+description: |
+  Qualcomm PMIC Type C Detect
+
+properties:
+  compatible:
+    enum:
+      - qcom,pm8150b-usb-typec
+
+  reg:
+    maxItems: 1
+    description: Type C base address
+
+  interrupts:
+    maxItems: 1
+    description: CC change interrupt from PMIC
+
+  port:
+    description: Remote endpoint connection to the DRD switch
+    type: object
+
+    properties:
+      endpoint:
+        description: Connection to the DRD switch being used
+        type: object
+
+  connector:
+    $ref: /connector/usb-connector.yaml#
+    description: Connector type for remote endpoints
+    type: object
+
+    properties:
+      compatible:
+        enum:
+          - usb-c-connector
+
+      power-role: true
+      data-role: true
+
+      ports:
+        description: Remote endpoint connections for type C paths
+        type: object
+
+        properties:
+          port@1:
+            description: Remote endpoints for the Super Speed path
+            type: object
+
+            properties:
+              endpoint:
+                description: Connection to USB type C mux node
+                type: object
+
+    required:
+      - compatible
+
+required:
+  - compatible
+  - reg
+  - interrupts
+  - connector
+  - port
+
+additionalProperties: false
+
+examples:
+  - |
+    #include <dt-bindings/interrupt-controller/irq.h>
+    pm8150b {
+        #address-cells = <1>;
+        #size-cells = <0>;
+        pm8150b_typec: usb-typec@1500 {
+            compatible = "qcom,pm8150b-usb-typec";
+            reg = <0x1500>;
+            interrupts = <0x2 0x15 0x5 IRQ_TYPE_EDGE_RISING>;
+
+            port {
+                usb3_role: endpoint {
+                    remote-endpoint = <&dwc3_drd_switch>;
+                };
+            };
+
+            connector {
+                compatible = "usb-c-connector";
+                power-role = "dual";
+                data-role = "dual";
+                ports {
+                    #address-cells = <1>;
+                    #size-cells = <0>;
+                    port@0 {
+                        reg = <0>;
+                    };
+                    port@1 {
+                        reg = <1>;
+                        #address-cells = <1>;
+                        #size-cells = <0>;
+                        usb3_data_ss: endpoint {
+                            remote-endpoint = <&qmp_ss_mux>;
+                        };
+                    };
+                };
+            };
+        };
+    };
+...