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 |
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 >
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
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 --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>; + }; + }; + }; + }; + }; + }; +...
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