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/ahci-common.yaml#
562306a36Sopenharmony_ci$schema: http://devicetree.org/meta-schemas/core.yaml#
662306a36Sopenharmony_ci
762306a36Sopenharmony_cititle: Common Properties for Serial ATA AHCI controllers
862306a36Sopenharmony_ci
962306a36Sopenharmony_cimaintainers:
1062306a36Sopenharmony_ci  - Hans de Goede <hdegoede@redhat.com>
1162306a36Sopenharmony_ci  - Damien Le Moal <dlemoal@kernel.org>
1262306a36Sopenharmony_ci
1362306a36Sopenharmony_cidescription:
1462306a36Sopenharmony_ci  This document defines device tree properties for a common AHCI SATA
1562306a36Sopenharmony_ci  controller implementation. It's hardware interface is supposed to
1662306a36Sopenharmony_ci  conform to the technical standard defined by Intel (see Serial ATA
1762306a36Sopenharmony_ci  Advanced Host Controller Interface specification for details). The
1862306a36Sopenharmony_ci  document doesn't constitute a DT-node binding by itself but merely
1962306a36Sopenharmony_ci  defines a set of common properties for the AHCI-compatible devices.
2062306a36Sopenharmony_ci
2162306a36Sopenharmony_ciselect: false
2262306a36Sopenharmony_ci
2362306a36Sopenharmony_ciallOf:
2462306a36Sopenharmony_ci  - $ref: sata-common.yaml#
2562306a36Sopenharmony_ci
2662306a36Sopenharmony_ciproperties:
2762306a36Sopenharmony_ci  reg:
2862306a36Sopenharmony_ci    description:
2962306a36Sopenharmony_ci      Generic AHCI registers space conforming to the Serial ATA AHCI
3062306a36Sopenharmony_ci      specification.
3162306a36Sopenharmony_ci
3262306a36Sopenharmony_ci  reg-names:
3362306a36Sopenharmony_ci    description: CSR space IDs
3462306a36Sopenharmony_ci    contains:
3562306a36Sopenharmony_ci      const: ahci
3662306a36Sopenharmony_ci
3762306a36Sopenharmony_ci  interrupts:
3862306a36Sopenharmony_ci    description:
3962306a36Sopenharmony_ci      Generic AHCI state change interrupt. Can be implemented either as a
4062306a36Sopenharmony_ci      single line attached to the controller or as a set of the signals
4162306a36Sopenharmony_ci      indicating the particular port events.
4262306a36Sopenharmony_ci    minItems: 1
4362306a36Sopenharmony_ci    maxItems: 32
4462306a36Sopenharmony_ci
4562306a36Sopenharmony_ci  ahci-supply:
4662306a36Sopenharmony_ci    description: Power regulator for AHCI controller
4762306a36Sopenharmony_ci
4862306a36Sopenharmony_ci  target-supply:
4962306a36Sopenharmony_ci    description: Power regulator for SATA target device
5062306a36Sopenharmony_ci
5162306a36Sopenharmony_ci  phy-supply:
5262306a36Sopenharmony_ci    description: Power regulator for SATA PHY
5362306a36Sopenharmony_ci
5462306a36Sopenharmony_ci  phys:
5562306a36Sopenharmony_ci    description: Reference to the SATA PHY node
5662306a36Sopenharmony_ci    maxItems: 1
5762306a36Sopenharmony_ci
5862306a36Sopenharmony_ci  phy-names:
5962306a36Sopenharmony_ci    const: sata-phy
6062306a36Sopenharmony_ci
6162306a36Sopenharmony_ci  hba-cap:
6262306a36Sopenharmony_ci    $ref: /schemas/types.yaml#/definitions/uint32
6362306a36Sopenharmony_ci    description:
6462306a36Sopenharmony_ci      Bitfield of the HBA generic platform capabilities like Staggered
6562306a36Sopenharmony_ci      Spin-up or Mechanical Presence Switch support. It can be used to
6662306a36Sopenharmony_ci      appropriately initialize the HWinit fields of the HBA CAP register
6762306a36Sopenharmony_ci      in case if the system firmware hasn't done it.
6862306a36Sopenharmony_ci
6962306a36Sopenharmony_ci  ports-implemented:
7062306a36Sopenharmony_ci    $ref: /schemas/types.yaml#/definitions/uint32
7162306a36Sopenharmony_ci    description:
7262306a36Sopenharmony_ci      Mask that indicates which ports the HBA supports. Useful if PI is not
7362306a36Sopenharmony_ci      programmed by the BIOS, which is true for some embedded SoC's.
7462306a36Sopenharmony_ci
7562306a36Sopenharmony_cipatternProperties:
7662306a36Sopenharmony_ci  "^sata-port@[0-9a-f]+$":
7762306a36Sopenharmony_ci    $ref: '#/$defs/ahci-port'
7862306a36Sopenharmony_ci    description:
7962306a36Sopenharmony_ci      It is optionally possible to describe the ports as sub-nodes so
8062306a36Sopenharmony_ci      to enable each port independently when dealing with multiple PHYs.
8162306a36Sopenharmony_ci
8262306a36Sopenharmony_cirequired:
8362306a36Sopenharmony_ci  - reg
8462306a36Sopenharmony_ci  - interrupts
8562306a36Sopenharmony_ci
8662306a36Sopenharmony_ciadditionalProperties: true
8762306a36Sopenharmony_ci
8862306a36Sopenharmony_ci$defs:
8962306a36Sopenharmony_ci  ahci-port:
9062306a36Sopenharmony_ci    $ref: /schemas/ata/sata-common.yaml#/$defs/sata-port
9162306a36Sopenharmony_ci
9262306a36Sopenharmony_ci    properties:
9362306a36Sopenharmony_ci      reg:
9462306a36Sopenharmony_ci        description:
9562306a36Sopenharmony_ci          AHCI SATA port identifier. By design AHCI controller can't have
9662306a36Sopenharmony_ci          more than 32 ports due to the CAP.NP fields and PI register size
9762306a36Sopenharmony_ci          constraints.
9862306a36Sopenharmony_ci        minimum: 0
9962306a36Sopenharmony_ci        maximum: 31
10062306a36Sopenharmony_ci
10162306a36Sopenharmony_ci      phys:
10262306a36Sopenharmony_ci        description: Individual AHCI SATA port PHY
10362306a36Sopenharmony_ci        maxItems: 1
10462306a36Sopenharmony_ci
10562306a36Sopenharmony_ci      phy-names:
10662306a36Sopenharmony_ci        description: AHCI SATA port PHY ID
10762306a36Sopenharmony_ci        const: sata-phy
10862306a36Sopenharmony_ci
10962306a36Sopenharmony_ci      target-supply:
11062306a36Sopenharmony_ci        description: Power regulator for SATA port target device
11162306a36Sopenharmony_ci
11262306a36Sopenharmony_ci      hba-port-cap:
11362306a36Sopenharmony_ci        $ref: /schemas/types.yaml#/definitions/uint32
11462306a36Sopenharmony_ci        description:
11562306a36Sopenharmony_ci          Bitfield of the HBA port-specific platform capabilities like Hot
11662306a36Sopenharmony_ci          plugging, eSATA, FIS-based Switching, etc (see AHCI specification
11762306a36Sopenharmony_ci          for details). It can be used to initialize the HWinit fields of
11862306a36Sopenharmony_ci          the PxCMD register in case if the system firmware hasn't done it.
11962306a36Sopenharmony_ci
12062306a36Sopenharmony_ci    required:
12162306a36Sopenharmony_ci      - reg
12262306a36Sopenharmony_ci
12362306a36Sopenharmony_ci...
124