# SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause)
%YAML 1.2
---
$id: http://devicetree.org/schemas/phy/fsl,mxs-usbphy.yaml#
$schema: http://devicetree.org/meta-schemas/core.yaml#

title: Freescale MXS USB Phy Device

maintainers:
  - Xu Yang <xu.yang_2@nxp.com>

properties:
  compatible:
    oneOf:
      - enum:
          - fsl,imx23-usbphy
          - fsl,imx7ulp-usbphy
          - fsl,vf610-usbphy
      - items:
          - enum:
              - fsl,imx28-usbphy
              - fsl,imx6ul-usbphy
              - fsl,imx6sl-usbphy
              - fsl,imx6sx-usbphy
              - fsl,imx6q-usbphy
          - const: fsl,imx23-usbphy
      - items:
          - const: fsl,imx6sll-usbphy
          - const: fsl,imx6ul-usbphy
          - const: fsl,imx23-usbphy
      - items:
          - enum:
              - fsl,imx8dxl-usbphy
              - fsl,imx8qm-usbphy
              - fsl,imx8ulp-usbphy
          - const: fsl,imx7ulp-usbphy

  reg:
    maxItems: 1

  interrupts:
    maxItems: 1

  clocks:
    maxItems: 1

  '#phy-cells':
    const: 0

  power-domains:
    maxItems: 1

  fsl,anatop:
    description:
      phandle for anatop register, it is only for imx6 SoC series.
    $ref: /schemas/types.yaml#/definitions/phandle

  phy-3p0-supply:
    description:
      One of USB PHY's power supply. Can be used to keep a good signal
      quality.

  fsl,tx-cal-45-dn-ohms:
    description:
      Resistance (in ohms) of switchable high-speed trimming resistor
      connected in parallel with the 45 ohm resistor that terminates
      the DN output signal.
    minimum: 35
    maximum: 54
    default: 45

  fsl,tx-cal-45-dp-ohms:
    description:
      Resistance (in ohms) of switchable high-speed trimming resistor
      connected in parallel with the 45 ohm resistor that terminates
      the DP output signal.
    minimum: 35
    maximum: 54
    default: 45

  fsl,tx-d-cal:
    description:
      Current trimming value (as a percentage) of the 17.78 mA TX
      reference current.
    $ref: /schemas/types.yaml#/definitions/uint32
    minimum: 79
    maximum: 119
    default: 100

required:
  - compatible
  - reg
  - clocks

allOf:
  - if:
      properties:
        compatible:
          oneOf:
            - enum:
                - fsl,imx6q-usbphy
                - fsl,imx6sl-usbphy
                - fsl,imx6sx-usbphy
                - fsl,imx6sll-usbphy
                - fsl,vf610-usbphy
            - items:
                - const: fsl,imx6ul-usbphy
                - const: fsl,imx23-usbphy
    then:
      required:
        - fsl,anatop

additionalProperties: false

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

    usbphy1: usb-phy@20c9000 {
        compatible = "fsl,imx6q-usbphy", "fsl,imx23-usbphy";
        reg = <0x020c9000 0x1000>;
        clocks = <&clks IMX6QDL_CLK_USBPHY1>;
        interrupts = <GIC_SPI 44 IRQ_TYPE_LEVEL_HIGH>;
        fsl,anatop = <&anatop>;
    };

...
