162306a36Sopenharmony_ci# SPDX-License-Identifier: (GPL-2.0 OR BSD-2-Clause)
262306a36Sopenharmony_ci%YAML 1.2
362306a36Sopenharmony_ci---
462306a36Sopenharmony_ci$id: http://devicetree.org/schemas/phy/brcm,sata-phy.yaml#
562306a36Sopenharmony_ci$schema: http://devicetree.org/meta-schemas/core.yaml#
662306a36Sopenharmony_ci
762306a36Sopenharmony_cititle: Broadcom SATA3 PHY
862306a36Sopenharmony_ci
962306a36Sopenharmony_cimaintainers:
1062306a36Sopenharmony_ci  - Florian Fainelli <f.fainelli@gmail.com>
1162306a36Sopenharmony_ci
1262306a36Sopenharmony_ciproperties:
1362306a36Sopenharmony_ci  $nodename:
1462306a36Sopenharmony_ci    pattern: "^sata[-|_]phy(@.*)?$"
1562306a36Sopenharmony_ci
1662306a36Sopenharmony_ci  compatible:
1762306a36Sopenharmony_ci    oneOf:
1862306a36Sopenharmony_ci      - items:
1962306a36Sopenharmony_ci          - enum:
2062306a36Sopenharmony_ci              - brcm,bcm7216-sata-phy
2162306a36Sopenharmony_ci              - brcm,bcm7425-sata-phy
2262306a36Sopenharmony_ci              - brcm,bcm7445-sata-phy
2362306a36Sopenharmony_ci              - brcm,bcm63138-sata-phy
2462306a36Sopenharmony_ci          - const: brcm,phy-sata3
2562306a36Sopenharmony_ci      - items:
2662306a36Sopenharmony_ci          - const: brcm,iproc-nsp-sata-phy
2762306a36Sopenharmony_ci      - items:
2862306a36Sopenharmony_ci          - const: brcm,iproc-ns2-sata-phy
2962306a36Sopenharmony_ci      - items:
3062306a36Sopenharmony_ci          - const: brcm,iproc-sr-sata-phy
3162306a36Sopenharmony_ci
3262306a36Sopenharmony_ci  reg:
3362306a36Sopenharmony_ci    minItems: 1
3462306a36Sopenharmony_ci    maxItems: 2
3562306a36Sopenharmony_ci
3662306a36Sopenharmony_ci  reg-names:
3762306a36Sopenharmony_ci    minItems: 1
3862306a36Sopenharmony_ci    items:
3962306a36Sopenharmony_ci      - const: phy
4062306a36Sopenharmony_ci      - const: phy-ctrl
4162306a36Sopenharmony_ci
4262306a36Sopenharmony_ci  "#address-cells":
4362306a36Sopenharmony_ci    const: 1
4462306a36Sopenharmony_ci
4562306a36Sopenharmony_ci  "#size-cells":
4662306a36Sopenharmony_ci    const: 0
4762306a36Sopenharmony_ci
4862306a36Sopenharmony_cipatternProperties:
4962306a36Sopenharmony_ci  "^sata-phy@[0-9]+$":
5062306a36Sopenharmony_ci    type: object
5162306a36Sopenharmony_ci    description: |
5262306a36Sopenharmony_ci      Each port's PHY should be represented as a sub-node.
5362306a36Sopenharmony_ci
5462306a36Sopenharmony_ci    properties:
5562306a36Sopenharmony_ci      reg:
5662306a36Sopenharmony_ci        description: The SATA PHY port number
5762306a36Sopenharmony_ci        maxItems: 1
5862306a36Sopenharmony_ci
5962306a36Sopenharmony_ci      "#phy-cells":
6062306a36Sopenharmony_ci        const: 0
6162306a36Sopenharmony_ci
6262306a36Sopenharmony_ci      "brcm,enable-ssc":
6362306a36Sopenharmony_ci        $ref: /schemas/types.yaml#/definitions/flag
6462306a36Sopenharmony_ci        description: |
6562306a36Sopenharmony_ci          Use spread spectrum clocking (SSC) on this port
6662306a36Sopenharmony_ci          This property is not applicable for "brcm,iproc-ns2-sata-phy",
6762306a36Sopenharmony_ci          "brcm,iproc-nsp-sata-phy" and "brcm,iproc-sr-sata-phy".
6862306a36Sopenharmony_ci
6962306a36Sopenharmony_ci      "brcm,rxaeq-mode":
7062306a36Sopenharmony_ci        $ref: /schemas/types.yaml#/definitions/string
7162306a36Sopenharmony_ci        description:
7262306a36Sopenharmony_ci          String that indicates the desired RX equalizer mode.
7362306a36Sopenharmony_ci        enum:
7462306a36Sopenharmony_ci          - off
7562306a36Sopenharmony_ci          - auto
7662306a36Sopenharmony_ci          - manual
7762306a36Sopenharmony_ci
7862306a36Sopenharmony_ci      "brcm,rxaeq-value":
7962306a36Sopenharmony_ci        $ref: /schemas/types.yaml#/definitions/uint32
8062306a36Sopenharmony_ci        description: |
8162306a36Sopenharmony_ci            When 'brcm,rxaeq-mode' is set to "manual", provides the RX
8262306a36Sopenharmony_ci            equalizer value that should be used.
8362306a36Sopenharmony_ci        minimum: 0
8462306a36Sopenharmony_ci        maximum: 63
8562306a36Sopenharmony_ci
8662306a36Sopenharmony_ci      "brcm,tx-amplitude-millivolt":
8762306a36Sopenharmony_ci        description: |
8862306a36Sopenharmony_ci            Transmit amplitude voltage in millivolt.
8962306a36Sopenharmony_ci        $ref: /schemas/types.yaml#/definitions/uint32
9062306a36Sopenharmony_ci        enum: [400, 500, 600, 800]
9162306a36Sopenharmony_ci
9262306a36Sopenharmony_ci    required:
9362306a36Sopenharmony_ci      - reg
9462306a36Sopenharmony_ci      - "#phy-cells"
9562306a36Sopenharmony_ci
9662306a36Sopenharmony_ci    additionalProperties: false
9762306a36Sopenharmony_ci
9862306a36Sopenharmony_ciif:
9962306a36Sopenharmony_ci  properties:
10062306a36Sopenharmony_ci    compatible:
10162306a36Sopenharmony_ci      const: brcm,iproc-ns2-sata-phy
10262306a36Sopenharmony_cithen:
10362306a36Sopenharmony_ci  properties:
10462306a36Sopenharmony_ci    reg:
10562306a36Sopenharmony_ci      minItems: 2
10662306a36Sopenharmony_ci
10762306a36Sopenharmony_ci    reg-names:
10862306a36Sopenharmony_ci      minItems: 2
10962306a36Sopenharmony_cielse:
11062306a36Sopenharmony_ci  properties:
11162306a36Sopenharmony_ci    reg:
11262306a36Sopenharmony_ci      maxItems: 1
11362306a36Sopenharmony_ci
11462306a36Sopenharmony_ci    reg-names:
11562306a36Sopenharmony_ci      maxItems: 1
11662306a36Sopenharmony_ci
11762306a36Sopenharmony_cirequired:
11862306a36Sopenharmony_ci  - compatible
11962306a36Sopenharmony_ci  - "#address-cells"
12062306a36Sopenharmony_ci  - "#size-cells"
12162306a36Sopenharmony_ci  - reg
12262306a36Sopenharmony_ci  - reg-names
12362306a36Sopenharmony_ci
12462306a36Sopenharmony_ciadditionalProperties: false
12562306a36Sopenharmony_ci
12662306a36Sopenharmony_ciexamples:
12762306a36Sopenharmony_ci  - |
12862306a36Sopenharmony_ci    sata_phy@f0458100 {
12962306a36Sopenharmony_ci        compatible = "brcm,bcm7445-sata-phy", "brcm,phy-sata3";
13062306a36Sopenharmony_ci        reg = <0xf0458100 0x1e00>;
13162306a36Sopenharmony_ci        reg-names = "phy";
13262306a36Sopenharmony_ci        #address-cells = <1>;
13362306a36Sopenharmony_ci        #size-cells = <0>;
13462306a36Sopenharmony_ci
13562306a36Sopenharmony_ci        sata-phy@0 {
13662306a36Sopenharmony_ci                reg = <0>;
13762306a36Sopenharmony_ci                #phy-cells = <0>;
13862306a36Sopenharmony_ci        };
13962306a36Sopenharmony_ci
14062306a36Sopenharmony_ci        sata-phy@1 {
14162306a36Sopenharmony_ci                reg = <1>;
14262306a36Sopenharmony_ci                #phy-cells = <0>;
14362306a36Sopenharmony_ci        };
14462306a36Sopenharmony_ci    };
145