1# SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause)
2%YAML 1.2
3---
4$id: http://devicetree.org/schemas/ata/ahci-common.yaml#
5$schema: http://devicetree.org/meta-schemas/core.yaml#
6
7title: Common Properties for Serial ATA AHCI controllers
8
9maintainers:
10  - Hans de Goede <hdegoede@redhat.com>
11  - Damien Le Moal <damien.lemoal@opensource.wdc.com>
12
13description:
14  This document defines device tree properties for a common AHCI SATA
15  controller implementation. It's hardware interface is supposed to
16  conform to the technical standard defined by Intel (see Serial ATA
17  Advanced Host Controller Interface specification for details). The
18  document doesn't constitute a DT-node binding by itself but merely
19  defines a set of common properties for the AHCI-compatible devices.
20
21select: false
22
23allOf:
24  - $ref: sata-common.yaml#
25
26properties:
27  reg:
28    description:
29      Generic AHCI registers space conforming to the Serial ATA AHCI
30      specification.
31
32  reg-names:
33    description: CSR space IDs
34    contains:
35      const: ahci
36
37  interrupts:
38    description:
39      Generic AHCI state change interrupt. Can be implemented either as a
40      single line attached to the controller or as a set of the signals
41      indicating the particular port events.
42    minItems: 1
43    maxItems: 32
44
45  ahci-supply:
46    description: Power regulator for AHCI controller
47
48  target-supply:
49    description: Power regulator for SATA target device
50
51  phy-supply:
52    description: Power regulator for SATA PHY
53
54  phys:
55    description: Reference to the SATA PHY node
56    maxItems: 1
57
58  phy-names:
59    const: sata-phy
60
61  hba-cap:
62    $ref: /schemas/types.yaml#/definitions/uint32
63    description:
64      Bitfield of the HBA generic platform capabilities like Staggered
65      Spin-up or Mechanical Presence Switch support. It can be used to
66      appropriately initialize the HWinit fields of the HBA CAP register
67      in case if the system firmware hasn't done it.
68
69  ports-implemented:
70    $ref: /schemas/types.yaml#/definitions/uint32
71    description:
72      Mask that indicates which ports the HBA supports. Useful if PI is not
73      programmed by the BIOS, which is true for some embedded SoC's.
74
75patternProperties:
76  "^sata-port@[0-9a-f]+$":
77    $ref: '#/$defs/ahci-port'
78    description:
79      It is optionally possible to describe the ports as sub-nodes so
80      to enable each port independently when dealing with multiple PHYs.
81
82required:
83  - reg
84  - interrupts
85
86additionalProperties: true
87
88$defs:
89  ahci-port:
90    $ref: /schemas/ata/sata-common.yaml#/$defs/sata-port
91
92    properties:
93      reg:
94        description:
95          AHCI SATA port identifier. By design AHCI controller can't have
96          more than 32 ports due to the CAP.NP fields and PI register size
97          constraints.
98        minimum: 0
99        maximum: 31
100
101      phys:
102        description: Individual AHCI SATA port PHY
103        maxItems: 1
104
105      phy-names:
106        description: AHCI SATA port PHY ID
107        const: sata-phy
108
109      target-supply:
110        description: Power regulator for SATA port target device
111
112      hba-port-cap:
113        $ref: /schemas/types.yaml#/definitions/uint32
114        description:
115          Bitfield of the HBA port-specific platform capabilities like Hot
116          plugging, eSATA, FIS-based Switching, etc (see AHCI specification
117          for details). It can be used to initialize the HWinit fields of
118          the PxCMD register in case if the system firmware hasn't done it.
119
120    required:
121      - reg
122
123...
124