162306a36Sopenharmony_ci# SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause)
262306a36Sopenharmony_ci%YAML 1.2
362306a36Sopenharmony_ci---
462306a36Sopenharmony_ci$id: http://devicetree.org/schemas/ata/rockchip,dwc-ahci.yaml#
562306a36Sopenharmony_ci$schema: http://devicetree.org/meta-schemas/core.yaml#
662306a36Sopenharmony_ci
762306a36Sopenharmony_cititle: Synopsys DWC AHCI SATA controller for Rockchip devices
862306a36Sopenharmony_ci
962306a36Sopenharmony_cimaintainers:
1062306a36Sopenharmony_ci  - Serge Semin <fancer.lancer@gmail.com>
1162306a36Sopenharmony_ci
1262306a36Sopenharmony_cidescription:
1362306a36Sopenharmony_ci  This document defines device tree bindings for the Synopsys DWC
1462306a36Sopenharmony_ci  implementation of the AHCI SATA controller found in Rockchip
1562306a36Sopenharmony_ci  devices.
1662306a36Sopenharmony_ci
1762306a36Sopenharmony_ciselect:
1862306a36Sopenharmony_ci  properties:
1962306a36Sopenharmony_ci    compatible:
2062306a36Sopenharmony_ci      contains:
2162306a36Sopenharmony_ci        enum:
2262306a36Sopenharmony_ci          - rockchip,rk3568-dwc-ahci
2362306a36Sopenharmony_ci          - rockchip,rk3588-dwc-ahci
2462306a36Sopenharmony_ci  required:
2562306a36Sopenharmony_ci    - compatible
2662306a36Sopenharmony_ci
2762306a36Sopenharmony_ciproperties:
2862306a36Sopenharmony_ci  compatible:
2962306a36Sopenharmony_ci    items:
3062306a36Sopenharmony_ci      - enum:
3162306a36Sopenharmony_ci          - rockchip,rk3568-dwc-ahci
3262306a36Sopenharmony_ci          - rockchip,rk3588-dwc-ahci
3362306a36Sopenharmony_ci      - const: snps,dwc-ahci
3462306a36Sopenharmony_ci
3562306a36Sopenharmony_ci  ports-implemented:
3662306a36Sopenharmony_ci    const: 1
3762306a36Sopenharmony_ci
3862306a36Sopenharmony_ci  sata-port@0:
3962306a36Sopenharmony_ci    $ref: /schemas/ata/snps,dwc-ahci-common.yaml#/$defs/dwc-ahci-port
4062306a36Sopenharmony_ci
4162306a36Sopenharmony_ci    properties:
4262306a36Sopenharmony_ci      reg:
4362306a36Sopenharmony_ci        const: 0
4462306a36Sopenharmony_ci
4562306a36Sopenharmony_ci    unevaluatedProperties: false
4662306a36Sopenharmony_ci
4762306a36Sopenharmony_cipatternProperties:
4862306a36Sopenharmony_ci  "^sata-port@[1-9a-e]$": false
4962306a36Sopenharmony_ci
5062306a36Sopenharmony_cirequired:
5162306a36Sopenharmony_ci  - compatible
5262306a36Sopenharmony_ci  - reg
5362306a36Sopenharmony_ci  - interrupts
5462306a36Sopenharmony_ci  - clocks
5562306a36Sopenharmony_ci  - clock-names
5662306a36Sopenharmony_ci  - ports-implemented
5762306a36Sopenharmony_ci
5862306a36Sopenharmony_ciallOf:
5962306a36Sopenharmony_ci  - $ref: snps,dwc-ahci-common.yaml#
6062306a36Sopenharmony_ci  - if:
6162306a36Sopenharmony_ci      properties:
6262306a36Sopenharmony_ci        compatible:
6362306a36Sopenharmony_ci          contains:
6462306a36Sopenharmony_ci            enum:
6562306a36Sopenharmony_ci              - rockchip,rk3588-dwc-ahci
6662306a36Sopenharmony_ci    then:
6762306a36Sopenharmony_ci      properties:
6862306a36Sopenharmony_ci        clocks:
6962306a36Sopenharmony_ci          maxItems: 5
7062306a36Sopenharmony_ci        clock-names:
7162306a36Sopenharmony_ci          items:
7262306a36Sopenharmony_ci            - const: sata
7362306a36Sopenharmony_ci            - const: pmalive
7462306a36Sopenharmony_ci            - const: rxoob
7562306a36Sopenharmony_ci            - const: ref
7662306a36Sopenharmony_ci            - const: asic
7762306a36Sopenharmony_ci  - if:
7862306a36Sopenharmony_ci      properties:
7962306a36Sopenharmony_ci        compatible:
8062306a36Sopenharmony_ci          contains:
8162306a36Sopenharmony_ci            enum:
8262306a36Sopenharmony_ci              - rockchip,rk3568-dwc-ahci
8362306a36Sopenharmony_ci    then:
8462306a36Sopenharmony_ci      properties:
8562306a36Sopenharmony_ci        clocks:
8662306a36Sopenharmony_ci          maxItems: 3
8762306a36Sopenharmony_ci        clock-names:
8862306a36Sopenharmony_ci          items:
8962306a36Sopenharmony_ci            - const: sata
9062306a36Sopenharmony_ci            - const: pmalive
9162306a36Sopenharmony_ci            - const: rxoob
9262306a36Sopenharmony_ci
9362306a36Sopenharmony_ciunevaluatedProperties: false
9462306a36Sopenharmony_ci
9562306a36Sopenharmony_ciexamples:
9662306a36Sopenharmony_ci  - |
9762306a36Sopenharmony_ci    #include <dt-bindings/clock/rockchip,rk3588-cru.h>
9862306a36Sopenharmony_ci    #include <dt-bindings/interrupt-controller/arm-gic.h>
9962306a36Sopenharmony_ci    #include <dt-bindings/ata/ahci.h>
10062306a36Sopenharmony_ci    #include <dt-bindings/phy/phy.h>
10162306a36Sopenharmony_ci
10262306a36Sopenharmony_ci    sata@fe210000 {
10362306a36Sopenharmony_ci      compatible = "rockchip,rk3588-dwc-ahci", "snps,dwc-ahci";
10462306a36Sopenharmony_ci      reg = <0xfe210000 0x1000>;
10562306a36Sopenharmony_ci      clocks = <&cru ACLK_SATA0>, <&cru CLK_PMALIVE0>,
10662306a36Sopenharmony_ci               <&cru CLK_RXOOB0>, <&cru CLK_PIPEPHY0_REF>,
10762306a36Sopenharmony_ci               <&cru CLK_PIPEPHY0_PIPE_ASIC_G>;
10862306a36Sopenharmony_ci      clock-names = "sata", "pmalive", "rxoob", "ref", "asic";
10962306a36Sopenharmony_ci      interrupts = <GIC_SPI 273 IRQ_TYPE_LEVEL_HIGH 0>;
11062306a36Sopenharmony_ci      ports-implemented = <0x1>;
11162306a36Sopenharmony_ci      #address-cells = <1>;
11262306a36Sopenharmony_ci      #size-cells = <0>;
11362306a36Sopenharmony_ci
11462306a36Sopenharmony_ci      sata-port@0 {
11562306a36Sopenharmony_ci        reg = <0>;
11662306a36Sopenharmony_ci        hba-port-cap = <HBA_PORT_FBSCP>;
11762306a36Sopenharmony_ci        phys = <&combphy0_ps PHY_TYPE_SATA>;
11862306a36Sopenharmony_ci        phy-names = "sata-phy";
11962306a36Sopenharmony_ci        snps,rx-ts-max = <32>;
12062306a36Sopenharmony_ci        snps,tx-ts-max = <32>;
12162306a36Sopenharmony_ci      };
12262306a36Sopenharmony_ci    };
12362306a36Sopenharmony_ci
12462306a36Sopenharmony_ci...
125