1# SPDX-License-Identifier: GPL-2.0 2%YAML 1.2 3--- 4$id: http://devicetree.org/schemas/ata/ahci-platform.yaml# 5$schema: http://devicetree.org/meta-schemas/core.yaml# 6 7title: AHCI SATA Controller 8 9description: | 10 SATA nodes are defined to describe on-chip Serial ATA controllers. 11 Each SATA controller should have its own node. 12 13 It is possible, but not required, to represent each port as a sub-node. 14 It allows to enable each port independently when dealing with multiple 15 PHYs. 16 17maintainers: 18 - Hans de Goede <hdegoede@redhat.com> 19 - Jens Axboe <axboe@kernel.dk> 20 21properties: 22 compatible: 23 oneOf: 24 - items: 25 - enum: 26 - brcm,iproc-ahci 27 - marvell,armada-8k-ahci 28 - marvell,berlin2-ahci 29 - marvell,berlin2q-ahci 30 - qcom,apq8064-ahci 31 - qcom,ipq806x-ahci 32 - socionext,uniphier-pro4-ahci 33 - socionext,uniphier-pxs2-ahci 34 - socionext,uniphier-pxs3-ahci 35 - const: generic-ahci 36 - enum: 37 - cavium,octeon-7130-ahci 38 - hisilicon,hisi-ahci 39 - ibm,476gtr-ahci 40 - marvell,armada-3700-ahci 41 42 reg: 43 minItems: 1 44 maxItems: 2 45 46 reg-names: 47 maxItems: 1 48 49 clocks: 50 minItems: 1 51 maxItems: 5 52 53 clock-names: 54 minItems: 1 55 maxItems: 5 56 57 interrupts: 58 maxItems: 1 59 60 power-domains: 61 maxItems: 1 62 63 resets: 64 minItems: 1 65 maxItems: 3 66 67 iommus: 68 maxItems: 1 69 70patternProperties: 71 "^sata-port@[0-9a-f]+$": 72 $ref: /schemas/ata/ahci-common.yaml#/$defs/ahci-port 73 74 anyOf: 75 - required: [ phys ] 76 - required: [ target-supply ] 77 78 unevaluatedProperties: false 79 80required: 81 - compatible 82 - reg 83 - interrupts 84 85allOf: 86 - $ref: ahci-common.yaml# 87 88 - if: 89 properties: 90 compatible: 91 contains: 92 enum: 93 - qcom,apq8064-ahci 94 - qcom,ipq806x-ahci 95 then: 96 properties: 97 clocks: 98 minItems: 5 99 clock-names: 100 items: 101 - const: slave_iface 102 - const: iface 103 - const: core 104 - const: rxoob 105 - const: pmalive 106 required: 107 - phys 108 - phy-names 109 - clocks 110 - clock-names 111 112 - if: 113 properties: 114 compatible: 115 contains: 116 const: socionext,uniphier-pro4-ahci 117 then: 118 properties: 119 resets: 120 items: 121 - description: reset line for the parent 122 - description: reset line for the glue logic 123 - description: reset line for the controller 124 required: 125 - resets 126 else: 127 if: 128 properties: 129 compatible: 130 contains: 131 enum: 132 - socionext,uniphier-pxs2-ahci 133 - socionext,uniphier-pxs3-ahci 134 then: 135 properties: 136 resets: 137 items: 138 - description: reset for the glue logic 139 - description: reset for the controller 140 required: 141 - resets 142 else: 143 properties: 144 resets: 145 maxItems: 1 146 147unevaluatedProperties: false 148 149examples: 150 - | 151 sata@ffe08000 { 152 compatible = "snps,spear-ahci"; 153 reg = <0xffe08000 0x1000>; 154 interrupts = <115>; 155 }; 156 - | 157 #include <dt-bindings/interrupt-controller/arm-gic.h> 158 #include <dt-bindings/clock/berlin2q.h> 159 #include <dt-bindings/ata/ahci.h> 160 161 sata@f7e90000 { 162 compatible = "marvell,berlin2q-ahci", "generic-ahci"; 163 reg = <0xf7e90000 0x1000>; 164 interrupts = <GIC_SPI 7 IRQ_TYPE_LEVEL_HIGH>; 165 clocks = <&chip CLKID_SATA>; 166 #address-cells = <1>; 167 #size-cells = <0>; 168 169 hba-cap = <HBA_SMPS>; 170 171 sata0: sata-port@0 { 172 reg = <0>; 173 174 phys = <&sata_phy 0>; 175 target-supply = <®_sata0>; 176 177 hba-port-cap = <(HBA_PORT_FBSCP | HBA_PORT_ESP)>; 178 }; 179 180 sata1: sata-port@1 { 181 reg = <1>; 182 183 phys = <&sata_phy 1>; 184 target-supply = <®_sata1>; 185 186 hba-port-cap = <(HBA_PORT_HPCP | HBA_PORT_MPSP | HBA_PORT_FBSCP)>; 187 }; 188 }; 189