162306a36Sopenharmony_ci# SPDX-License-Identifier: GPL-2.0
262306a36Sopenharmony_ci%YAML 1.2
362306a36Sopenharmony_ci---
462306a36Sopenharmony_ci$id: http://devicetree.org/schemas/phy/rockchip,inno-usb2phy.yaml#
562306a36Sopenharmony_ci$schema: http://devicetree.org/meta-schemas/core.yaml#
662306a36Sopenharmony_ci
762306a36Sopenharmony_cititle: Rockchip USB2.0 phy with inno IP block
862306a36Sopenharmony_ci
962306a36Sopenharmony_cimaintainers:
1062306a36Sopenharmony_ci  - Heiko Stuebner <heiko@sntech.de>
1162306a36Sopenharmony_ci
1262306a36Sopenharmony_ciproperties:
1362306a36Sopenharmony_ci  compatible:
1462306a36Sopenharmony_ci    enum:
1562306a36Sopenharmony_ci      - rockchip,px30-usb2phy
1662306a36Sopenharmony_ci      - rockchip,rk3128-usb2phy
1762306a36Sopenharmony_ci      - rockchip,rk3228-usb2phy
1862306a36Sopenharmony_ci      - rockchip,rk3308-usb2phy
1962306a36Sopenharmony_ci      - rockchip,rk3328-usb2phy
2062306a36Sopenharmony_ci      - rockchip,rk3366-usb2phy
2162306a36Sopenharmony_ci      - rockchip,rk3399-usb2phy
2262306a36Sopenharmony_ci      - rockchip,rk3568-usb2phy
2362306a36Sopenharmony_ci      - rockchip,rk3588-usb2phy
2462306a36Sopenharmony_ci      - rockchip,rv1108-usb2phy
2562306a36Sopenharmony_ci
2662306a36Sopenharmony_ci  reg:
2762306a36Sopenharmony_ci    maxItems: 1
2862306a36Sopenharmony_ci
2962306a36Sopenharmony_ci  clock-output-names:
3062306a36Sopenharmony_ci    description:
3162306a36Sopenharmony_ci      The usb 480m output clock name.
3262306a36Sopenharmony_ci
3362306a36Sopenharmony_ci  "#clock-cells":
3462306a36Sopenharmony_ci    const: 0
3562306a36Sopenharmony_ci
3662306a36Sopenharmony_ci  clocks:
3762306a36Sopenharmony_ci    maxItems: 1
3862306a36Sopenharmony_ci
3962306a36Sopenharmony_ci  clock-names:
4062306a36Sopenharmony_ci    const: phyclk
4162306a36Sopenharmony_ci
4262306a36Sopenharmony_ci  assigned-clocks:
4362306a36Sopenharmony_ci    description:
4462306a36Sopenharmony_ci      Phandle of the usb 480m clock.
4562306a36Sopenharmony_ci
4662306a36Sopenharmony_ci  assigned-clock-parents:
4762306a36Sopenharmony_ci    description:
4862306a36Sopenharmony_ci      Parent of the usb 480m clock.
4962306a36Sopenharmony_ci      Select between usb-phy output 480m and xin24m.
5062306a36Sopenharmony_ci      Refer to clk/clock-bindings.txt for generic clock consumer properties.
5162306a36Sopenharmony_ci
5262306a36Sopenharmony_ci  extcon:
5362306a36Sopenharmony_ci    description:
5462306a36Sopenharmony_ci      Phandle to the extcon device providing the cable state for the otg phy.
5562306a36Sopenharmony_ci
5662306a36Sopenharmony_ci  interrupts:
5762306a36Sopenharmony_ci    description: Muxed interrupt for both ports
5862306a36Sopenharmony_ci    maxItems: 1
5962306a36Sopenharmony_ci
6062306a36Sopenharmony_ci  resets:
6162306a36Sopenharmony_ci    maxItems: 2
6262306a36Sopenharmony_ci
6362306a36Sopenharmony_ci  reset-names:
6462306a36Sopenharmony_ci    items:
6562306a36Sopenharmony_ci      - const: phy
6662306a36Sopenharmony_ci      - const: apb
6762306a36Sopenharmony_ci
6862306a36Sopenharmony_ci  rockchip,usbgrf:
6962306a36Sopenharmony_ci    $ref: /schemas/types.yaml#/definitions/phandle
7062306a36Sopenharmony_ci    description:
7162306a36Sopenharmony_ci      Phandle to the syscon managing the 'usb general register files'.
7262306a36Sopenharmony_ci      When set the driver will request its phandle as one companion-grf
7362306a36Sopenharmony_ci      for some special SoCs (e.g rv1108).
7462306a36Sopenharmony_ci
7562306a36Sopenharmony_ci  host-port:
7662306a36Sopenharmony_ci    type: object
7762306a36Sopenharmony_ci    additionalProperties: false
7862306a36Sopenharmony_ci
7962306a36Sopenharmony_ci    properties:
8062306a36Sopenharmony_ci      "#phy-cells":
8162306a36Sopenharmony_ci        const: 0
8262306a36Sopenharmony_ci
8362306a36Sopenharmony_ci      interrupts:
8462306a36Sopenharmony_ci        description: host linestate interrupt
8562306a36Sopenharmony_ci        maxItems: 1
8662306a36Sopenharmony_ci
8762306a36Sopenharmony_ci      interrupt-names:
8862306a36Sopenharmony_ci        const: linestate
8962306a36Sopenharmony_ci
9062306a36Sopenharmony_ci      phy-supply:
9162306a36Sopenharmony_ci        description:
9262306a36Sopenharmony_ci          Phandle to a regulator that provides power to VBUS.
9362306a36Sopenharmony_ci          See ./phy-bindings.txt for details.
9462306a36Sopenharmony_ci
9562306a36Sopenharmony_ci    required:
9662306a36Sopenharmony_ci      - "#phy-cells"
9762306a36Sopenharmony_ci
9862306a36Sopenharmony_ci  otg-port:
9962306a36Sopenharmony_ci    type: object
10062306a36Sopenharmony_ci    additionalProperties: false
10162306a36Sopenharmony_ci
10262306a36Sopenharmony_ci    properties:
10362306a36Sopenharmony_ci      "#phy-cells":
10462306a36Sopenharmony_ci        const: 0
10562306a36Sopenharmony_ci
10662306a36Sopenharmony_ci      interrupts:
10762306a36Sopenharmony_ci        minItems: 1
10862306a36Sopenharmony_ci        maxItems: 3
10962306a36Sopenharmony_ci
11062306a36Sopenharmony_ci      interrupt-names:
11162306a36Sopenharmony_ci        oneOf:
11262306a36Sopenharmony_ci          - const: linestate
11362306a36Sopenharmony_ci          - const: otg-mux
11462306a36Sopenharmony_ci          - items:
11562306a36Sopenharmony_ci              - const: otg-bvalid
11662306a36Sopenharmony_ci              - const: otg-id
11762306a36Sopenharmony_ci              - const: linestate
11862306a36Sopenharmony_ci
11962306a36Sopenharmony_ci      phy-supply:
12062306a36Sopenharmony_ci        description:
12162306a36Sopenharmony_ci          Phandle to a regulator that provides power to VBUS.
12262306a36Sopenharmony_ci          See ./phy-bindings.txt for details.
12362306a36Sopenharmony_ci
12462306a36Sopenharmony_ci    required:
12562306a36Sopenharmony_ci      - "#phy-cells"
12662306a36Sopenharmony_ci
12762306a36Sopenharmony_cirequired:
12862306a36Sopenharmony_ci  - compatible
12962306a36Sopenharmony_ci  - reg
13062306a36Sopenharmony_ci  - clock-output-names
13162306a36Sopenharmony_ci  - "#clock-cells"
13262306a36Sopenharmony_ci
13362306a36Sopenharmony_cianyOf:
13462306a36Sopenharmony_ci  - required:
13562306a36Sopenharmony_ci      - otg-port
13662306a36Sopenharmony_ci  - required:
13762306a36Sopenharmony_ci      - host-port
13862306a36Sopenharmony_ci
13962306a36Sopenharmony_ciallOf:
14062306a36Sopenharmony_ci  - if:
14162306a36Sopenharmony_ci      properties:
14262306a36Sopenharmony_ci        compatible:
14362306a36Sopenharmony_ci          contains:
14462306a36Sopenharmony_ci            enum:
14562306a36Sopenharmony_ci              - rockchip,rk3568-usb2phy
14662306a36Sopenharmony_ci              - rockchip,rk3588-usb2phy
14762306a36Sopenharmony_ci
14862306a36Sopenharmony_ci    then:
14962306a36Sopenharmony_ci      properties:
15062306a36Sopenharmony_ci        host-port:
15162306a36Sopenharmony_ci          properties:
15262306a36Sopenharmony_ci            interrupts: false
15362306a36Sopenharmony_ci
15462306a36Sopenharmony_ci        otg-port:
15562306a36Sopenharmony_ci          properties:
15662306a36Sopenharmony_ci            interrupts: false
15762306a36Sopenharmony_ci
15862306a36Sopenharmony_ci      required:
15962306a36Sopenharmony_ci        - interrupts
16062306a36Sopenharmony_ci
16162306a36Sopenharmony_ci    else:
16262306a36Sopenharmony_ci      properties:
16362306a36Sopenharmony_ci        interrupts: false
16462306a36Sopenharmony_ci
16562306a36Sopenharmony_ci        host-port:
16662306a36Sopenharmony_ci          required:
16762306a36Sopenharmony_ci            - interrupts
16862306a36Sopenharmony_ci            - interrupt-names
16962306a36Sopenharmony_ci
17062306a36Sopenharmony_ci        otg-port:
17162306a36Sopenharmony_ci          required:
17262306a36Sopenharmony_ci            - interrupts
17362306a36Sopenharmony_ci            - interrupt-names
17462306a36Sopenharmony_ci
17562306a36Sopenharmony_ciadditionalProperties: false
17662306a36Sopenharmony_ci
17762306a36Sopenharmony_ciexamples:
17862306a36Sopenharmony_ci  - |
17962306a36Sopenharmony_ci    #include <dt-bindings/clock/rk3399-cru.h>
18062306a36Sopenharmony_ci    #include <dt-bindings/interrupt-controller/arm-gic.h>
18162306a36Sopenharmony_ci    #include <dt-bindings/interrupt-controller/irq.h>
18262306a36Sopenharmony_ci    u2phy0: usb2phy@e450 {
18362306a36Sopenharmony_ci      compatible = "rockchip,rk3399-usb2phy";
18462306a36Sopenharmony_ci      reg = <0xe450 0x10>;
18562306a36Sopenharmony_ci      clocks = <&cru SCLK_USB2PHY0_REF>;
18662306a36Sopenharmony_ci      clock-names = "phyclk";
18762306a36Sopenharmony_ci      clock-output-names = "clk_usbphy0_480m";
18862306a36Sopenharmony_ci      #clock-cells = <0>;
18962306a36Sopenharmony_ci
19062306a36Sopenharmony_ci      u2phy0_host: host-port {
19162306a36Sopenharmony_ci        interrupts = <GIC_SPI 27 IRQ_TYPE_LEVEL_HIGH 0>;
19262306a36Sopenharmony_ci        interrupt-names = "linestate";
19362306a36Sopenharmony_ci        #phy-cells = <0>;
19462306a36Sopenharmony_ci      };
19562306a36Sopenharmony_ci
19662306a36Sopenharmony_ci      u2phy0_otg: otg-port {
19762306a36Sopenharmony_ci        interrupts = <GIC_SPI 103 IRQ_TYPE_LEVEL_HIGH 0>,
19862306a36Sopenharmony_ci                     <GIC_SPI 104 IRQ_TYPE_LEVEL_HIGH 0>,
19962306a36Sopenharmony_ci                     <GIC_SPI 106 IRQ_TYPE_LEVEL_HIGH 0>;
20062306a36Sopenharmony_ci        interrupt-names = "otg-bvalid", "otg-id", "linestate";
20162306a36Sopenharmony_ci        #phy-cells = <0>;
20262306a36Sopenharmony_ci      };
20362306a36Sopenharmony_ci    };
204