# 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 block

maintainers:
  - Bryan O'Donoghue <bryan.odonoghue@linaro.org>

description:
  Qualcomm PMIC Type-C block

properties:
  compatible:
    enum:
      - qcom,pm8150b-typec

  connector:
    type: object
    $ref: /schemas/connector/usb-connector.yaml#
    unevaluatedProperties: false

  reg:
    description: Type-C port and pdphy SPMI register base offsets
    maxItems: 2

  interrupts:
    items:
      - description: Type-C CC attach notification, VBUS error, tCCDebounce done
      - description: Type-C VCONN powered
      - description: Type-C CC state change
      - description: Type-C VCONN over-current
      - description: Type-C VBUS state change
      - description: Type-C Attach/detach notification
      - description: Type-C Legacy cable detect
      - description: Type-C Try.Src Try.Snk state change
      - description: Power Domain Signal TX - HardReset or CableReset signal TX
      - description: Power Domain Signal RX - HardReset or CableReset signal RX
      - description: Power Domain TX complete
      - description: Power Domain RX complete
      - description: Power Domain TX fail
      - description: Power Domain TX message discard
      - description: Power Domain RX message discard
      - description: Power Domain Fast Role Swap event

  interrupt-names:
    items:
      - const: or-rid-detect-change
      - const: vpd-detect
      - const: cc-state-change
      - const: vconn-oc
      - const: vbus-change
      - const: attach-detach
      - const: legacy-cable-detect
      - const: try-snk-src-detect
      - const: sig-tx
      - const: sig-rx
      - const: msg-tx
      - const: msg-rx
      - const: msg-tx-failed
      - const: msg-tx-discarded
      - const: msg-rx-discarded
      - const: fr-swap

  vdd-vbus-supply:
    description: VBUS power supply.

  vdd-pdphy-supply:
    description: VDD regulator supply to the PDPHY.

  port:
    $ref: /schemas/graph.yaml#/properties/port
    description:
      Contains a port which produces data-role switching messages.

required:
  - compatible
  - reg
  - interrupts
  - interrupt-names
  - vdd-vbus-supply
  - vdd-pdphy-supply

additionalProperties: false

examples:
  - |
    #include <dt-bindings/interrupt-controller/arm-gic.h>
    #include <dt-bindings/usb/pd.h>

    pmic {
        #address-cells = <1>;
        #size-cells = <0>;

        pm8150b_typec: typec@1500 {
            compatible = "qcom,pm8150b-typec";
            reg = <0x1500>,
                  <0x1700>;

            interrupts = <0x2 0x15 0x00 IRQ_TYPE_EDGE_RISING>,
                         <0x2 0x15 0x01 IRQ_TYPE_EDGE_BOTH>,
                         <0x2 0x15 0x02 IRQ_TYPE_EDGE_RISING>,
                         <0x2 0x15 0x03 IRQ_TYPE_EDGE_BOTH>,
                         <0x2 0x15 0x04 IRQ_TYPE_EDGE_RISING>,
                         <0x2 0x15 0x05 IRQ_TYPE_EDGE_RISING>,
                         <0x2 0x15 0x06 IRQ_TYPE_EDGE_BOTH>,
                         <0x2 0x15 0x07 IRQ_TYPE_EDGE_RISING>,
                         <0x2 0x17 0x00 IRQ_TYPE_EDGE_RISING>,
                         <0x2 0x17 0x01 IRQ_TYPE_EDGE_RISING>,
                         <0x2 0x17 0x02 IRQ_TYPE_EDGE_RISING>,
                         <0x2 0x17 0x03 IRQ_TYPE_EDGE_RISING>,
                         <0x2 0x17 0x04 IRQ_TYPE_EDGE_RISING>,
                         <0x2 0x17 0x05 IRQ_TYPE_EDGE_RISING>,
                         <0x2 0x17 0x06 IRQ_TYPE_EDGE_RISING>,
                         <0x2 0x17 0x07 IRQ_TYPE_EDGE_RISING>;

            interrupt-names = "or-rid-detect-change",
                              "vpd-detect",
                              "cc-state-change",
                              "vconn-oc",
                              "vbus-change",
                              "attach-detach",
                              "legacy-cable-detect",
                              "try-snk-src-detect",
                              "sig-tx",
                              "sig-rx",
                              "msg-tx",
                              "msg-rx",
                              "msg-tx-failed",
                              "msg-tx-discarded",
                              "msg-rx-discarded",
                              "fr-swap";

            vdd-vbus-supply = <&pm8150b_vbus>;
            vdd-pdphy-supply = <&vreg_l2a_3p1>;

            connector {
                compatible = "usb-c-connector";

                power-role = "source";
                data-role = "dual";
                self-powered;

                source-pdos = <PDO_FIXED(5000, 3000, PDO_FIXED_DUAL_ROLE |
                               PDO_FIXED_USB_COMM | PDO_FIXED_DATA_SWAP)>;

                ports {
                    #address-cells = <1>;
                    #size-cells = <0>;

                    port@0 {
                        reg = <0>;
                        pmic_typec_mux_out: endpoint {
                            remote-endpoint = <&usb_phy_typec_mux_in>;
                        };
                    };

                    port@1 {
                        reg = <1>;
                        pmic_typec_role_switch_out: endpoint {
                            remote-endpoint = <&usb_role_switch_in>;
                        };
                    };
                };
            };
        };
    };

    usb {
        dr_mode = "otg";
        usb-role-switch;
        port {
            usb_role_switch_in: endpoint {
                remote-endpoint = <&pmic_typec_role_switch_out>;
            };
        };
    };

    usb-phy {
        orientation-switch;
        port {
            usb_phy_typec_mux_in: endpoint {
                remote-endpoint = <&pmic_typec_mux_out>;
            };
        };
    };

...
