162306a36Sopenharmony_ci# SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause)
262306a36Sopenharmony_ci# Copyright (c) 2020 MediaTek
362306a36Sopenharmony_ci%YAML 1.2
462306a36Sopenharmony_ci---
562306a36Sopenharmony_ci$id: http://devicetree.org/schemas/phy/mediatek,xsphy.yaml#
662306a36Sopenharmony_ci$schema: http://devicetree.org/meta-schemas/core.yaml#
762306a36Sopenharmony_ci
862306a36Sopenharmony_cititle: MediaTek XS-PHY Controller
962306a36Sopenharmony_ci
1062306a36Sopenharmony_cimaintainers:
1162306a36Sopenharmony_ci  - Chunfeng Yun <chunfeng.yun@mediatek.com>
1262306a36Sopenharmony_ci
1362306a36Sopenharmony_cidescription: |
1462306a36Sopenharmony_ci  The XS-PHY controller supports physical layer functionality for USB3.1
1562306a36Sopenharmony_ci  GEN2 controller on MediaTek SoCs.
1662306a36Sopenharmony_ci
1762306a36Sopenharmony_ci  Banks layout of xsphy
1862306a36Sopenharmony_ci  ----------------------------------
1962306a36Sopenharmony_ci  port        offset    bank
2062306a36Sopenharmony_ci  u2 port0    0x0000    MISC
2162306a36Sopenharmony_ci              0x0100    FMREG
2262306a36Sopenharmony_ci              0x0300    U2PHY_COM
2362306a36Sopenharmony_ci  u2 port1    0x1000    MISC
2462306a36Sopenharmony_ci              0x1100    FMREG
2562306a36Sopenharmony_ci              0x1300    U2PHY_COM
2662306a36Sopenharmony_ci  u2 port2    0x2000    MISC
2762306a36Sopenharmony_ci              ...
2862306a36Sopenharmony_ci  u31 common  0x3000    DIG_GLB
2962306a36Sopenharmony_ci              0x3100    PHYA_GLB
3062306a36Sopenharmony_ci  u31 port0   0x3400    DIG_LN_TOP
3162306a36Sopenharmony_ci              0x3500    DIG_LN_TX0
3262306a36Sopenharmony_ci              0x3600    DIG_LN_RX0
3362306a36Sopenharmony_ci              0x3700    DIG_LN_DAIF
3462306a36Sopenharmony_ci              0x3800    PHYA_LN
3562306a36Sopenharmony_ci  u31 port1   0x3a00    DIG_LN_TOP
3662306a36Sopenharmony_ci              0x3b00    DIG_LN_TX0
3762306a36Sopenharmony_ci              0x3c00    DIG_LN_RX0
3862306a36Sopenharmony_ci              0x3d00    DIG_LN_DAIF
3962306a36Sopenharmony_ci              0x3e00    PHYA_LN
4062306a36Sopenharmony_ci              ...
4162306a36Sopenharmony_ci  DIG_GLB & PHYA_GLB are shared by U31 ports.
4262306a36Sopenharmony_ci
4362306a36Sopenharmony_ciproperties:
4462306a36Sopenharmony_ci  $nodename:
4562306a36Sopenharmony_ci    pattern: "^xs-phy@[0-9a-f]+$"
4662306a36Sopenharmony_ci
4762306a36Sopenharmony_ci  compatible:
4862306a36Sopenharmony_ci    items:
4962306a36Sopenharmony_ci      - enum:
5062306a36Sopenharmony_ci          - mediatek,mt3611-xsphy
5162306a36Sopenharmony_ci          - mediatek,mt3612-xsphy
5262306a36Sopenharmony_ci      - const: mediatek,xsphy
5362306a36Sopenharmony_ci
5462306a36Sopenharmony_ci  reg:
5562306a36Sopenharmony_ci    description:
5662306a36Sopenharmony_ci      Register shared by multiple U3 ports, exclude port's private register,
5762306a36Sopenharmony_ci      if only U2 ports provided, shouldn't use the property.
5862306a36Sopenharmony_ci    maxItems: 1
5962306a36Sopenharmony_ci
6062306a36Sopenharmony_ci  "#address-cells":
6162306a36Sopenharmony_ci    enum: [1, 2]
6262306a36Sopenharmony_ci
6362306a36Sopenharmony_ci  "#size-cells":
6462306a36Sopenharmony_ci    enum: [1, 2]
6562306a36Sopenharmony_ci
6662306a36Sopenharmony_ci  ranges: true
6762306a36Sopenharmony_ci
6862306a36Sopenharmony_ci  mediatek,src-ref-clk-mhz:
6962306a36Sopenharmony_ci    description:
7062306a36Sopenharmony_ci      Frequency of reference clock for slew rate calibrate
7162306a36Sopenharmony_ci    default: 26
7262306a36Sopenharmony_ci
7362306a36Sopenharmony_ci  mediatek,src-coef:
7462306a36Sopenharmony_ci    description:
7562306a36Sopenharmony_ci      Coefficient for slew rate calibrate, depends on SoC process
7662306a36Sopenharmony_ci    $ref: /schemas/types.yaml#/definitions/uint32
7762306a36Sopenharmony_ci    default: 17
7862306a36Sopenharmony_ci
7962306a36Sopenharmony_ci# Required child node:
8062306a36Sopenharmony_cipatternProperties:
8162306a36Sopenharmony_ci  "^usb-phy@[0-9a-f]+$":
8262306a36Sopenharmony_ci    type: object
8362306a36Sopenharmony_ci    description:
8462306a36Sopenharmony_ci      A sub-node is required for each port the controller provides.
8562306a36Sopenharmony_ci      Address range information including the usual 'reg' property
8662306a36Sopenharmony_ci      is used inside these nodes to describe the controller's topology.
8762306a36Sopenharmony_ci
8862306a36Sopenharmony_ci    properties:
8962306a36Sopenharmony_ci      reg:
9062306a36Sopenharmony_ci        maxItems: 1
9162306a36Sopenharmony_ci
9262306a36Sopenharmony_ci      clocks:
9362306a36Sopenharmony_ci        items:
9462306a36Sopenharmony_ci          - description: Reference clock, (HS is 48Mhz, SS/P is 24~27Mhz)
9562306a36Sopenharmony_ci
9662306a36Sopenharmony_ci      clock-names:
9762306a36Sopenharmony_ci        items:
9862306a36Sopenharmony_ci          - const: ref
9962306a36Sopenharmony_ci
10062306a36Sopenharmony_ci      "#phy-cells":
10162306a36Sopenharmony_ci        const: 1
10262306a36Sopenharmony_ci        description: |
10362306a36Sopenharmony_ci          The cells contain the following arguments.
10462306a36Sopenharmony_ci
10562306a36Sopenharmony_ci          - description: The PHY type
10662306a36Sopenharmony_ci              enum:
10762306a36Sopenharmony_ci                - PHY_TYPE_USB2
10862306a36Sopenharmony_ci                - PHY_TYPE_USB3
10962306a36Sopenharmony_ci
11062306a36Sopenharmony_ci      # The following optional vendor properties are only for debug or HQA test
11162306a36Sopenharmony_ci      mediatek,eye-src:
11262306a36Sopenharmony_ci        description:
11362306a36Sopenharmony_ci          The value of slew rate calibrate (U2 phy)
11462306a36Sopenharmony_ci        $ref: /schemas/types.yaml#/definitions/uint32
11562306a36Sopenharmony_ci        minimum: 1
11662306a36Sopenharmony_ci        maximum: 7
11762306a36Sopenharmony_ci
11862306a36Sopenharmony_ci      mediatek,eye-vrt:
11962306a36Sopenharmony_ci        description:
12062306a36Sopenharmony_ci          The selection of VRT reference voltage (U2 phy)
12162306a36Sopenharmony_ci        $ref: /schemas/types.yaml#/definitions/uint32
12262306a36Sopenharmony_ci        minimum: 1
12362306a36Sopenharmony_ci        maximum: 7
12462306a36Sopenharmony_ci
12562306a36Sopenharmony_ci      mediatek,eye-term:
12662306a36Sopenharmony_ci        description:
12762306a36Sopenharmony_ci          The selection of HS_TX TERM reference voltage (U2 phy)
12862306a36Sopenharmony_ci        $ref: /schemas/types.yaml#/definitions/uint32
12962306a36Sopenharmony_ci        minimum: 1
13062306a36Sopenharmony_ci        maximum: 7
13162306a36Sopenharmony_ci
13262306a36Sopenharmony_ci      mediatek,efuse-intr:
13362306a36Sopenharmony_ci        description:
13462306a36Sopenharmony_ci          The selection of Internal Resistor (U2/U3 phy)
13562306a36Sopenharmony_ci        $ref: /schemas/types.yaml#/definitions/uint32
13662306a36Sopenharmony_ci        minimum: 1
13762306a36Sopenharmony_ci        maximum: 63
13862306a36Sopenharmony_ci
13962306a36Sopenharmony_ci      mediatek,efuse-tx-imp:
14062306a36Sopenharmony_ci        description:
14162306a36Sopenharmony_ci          The selection of TX Impedance (U3 phy)
14262306a36Sopenharmony_ci        $ref: /schemas/types.yaml#/definitions/uint32
14362306a36Sopenharmony_ci        minimum: 1
14462306a36Sopenharmony_ci        maximum: 31
14562306a36Sopenharmony_ci
14662306a36Sopenharmony_ci      mediatek,efuse-rx-imp:
14762306a36Sopenharmony_ci        description:
14862306a36Sopenharmony_ci          The selection of RX Impedance (U3 phy)
14962306a36Sopenharmony_ci        $ref: /schemas/types.yaml#/definitions/uint32
15062306a36Sopenharmony_ci        minimum: 1
15162306a36Sopenharmony_ci        maximum: 31
15262306a36Sopenharmony_ci
15362306a36Sopenharmony_ci    required:
15462306a36Sopenharmony_ci      - reg
15562306a36Sopenharmony_ci      - clocks
15662306a36Sopenharmony_ci      - clock-names
15762306a36Sopenharmony_ci      - "#phy-cells"
15862306a36Sopenharmony_ci
15962306a36Sopenharmony_ci    additionalProperties: false
16062306a36Sopenharmony_ci
16162306a36Sopenharmony_cirequired:
16262306a36Sopenharmony_ci  - compatible
16362306a36Sopenharmony_ci  - "#address-cells"
16462306a36Sopenharmony_ci  - "#size-cells"
16562306a36Sopenharmony_ci  - ranges
16662306a36Sopenharmony_ci
16762306a36Sopenharmony_ciadditionalProperties: false
16862306a36Sopenharmony_ci
16962306a36Sopenharmony_ciexamples:
17062306a36Sopenharmony_ci  - |
17162306a36Sopenharmony_ci    #include <dt-bindings/phy/phy.h>
17262306a36Sopenharmony_ci
17362306a36Sopenharmony_ci    u3phy: xs-phy@11c40000 {
17462306a36Sopenharmony_ci        compatible = "mediatek,mt3611-xsphy", "mediatek,xsphy";
17562306a36Sopenharmony_ci        reg = <0x11c43000 0x0200>;
17662306a36Sopenharmony_ci        mediatek,src-ref-clk-mhz = <26>;
17762306a36Sopenharmony_ci        mediatek,src-coef = <17>;
17862306a36Sopenharmony_ci        #address-cells = <1>;
17962306a36Sopenharmony_ci        #size-cells = <1>;
18062306a36Sopenharmony_ci        ranges;
18162306a36Sopenharmony_ci
18262306a36Sopenharmony_ci        u2port0: usb-phy@11c40000 {
18362306a36Sopenharmony_ci            reg = <0x11c40000 0x0400>;
18462306a36Sopenharmony_ci            clocks = <&clk48m>;
18562306a36Sopenharmony_ci            clock-names = "ref";
18662306a36Sopenharmony_ci            mediatek,eye-src = <4>;
18762306a36Sopenharmony_ci            #phy-cells = <1>;
18862306a36Sopenharmony_ci        };
18962306a36Sopenharmony_ci
19062306a36Sopenharmony_ci        u3port0: usb-phy@11c43000 {
19162306a36Sopenharmony_ci            reg = <0x11c43400 0x0500>;
19262306a36Sopenharmony_ci            clocks = <&clk26m>;
19362306a36Sopenharmony_ci            clock-names = "ref";
19462306a36Sopenharmony_ci            mediatek,efuse-intr = <28>;
19562306a36Sopenharmony_ci            #phy-cells = <1>;
19662306a36Sopenharmony_ci        };
19762306a36Sopenharmony_ci    };
19862306a36Sopenharmony_ci
19962306a36Sopenharmony_ci...
200