[<prev] [next>] [<thread-prev] [thread-next>] [day] [month] [year] [list]
Message-ID: <20220324001628.13028-11-Sergey.Semin@baikalelectronics.ru>
Date: Thu, 24 Mar 2022 03:16:17 +0300
From: Serge Semin <Sergey.Semin@...kalelectronics.ru>
To: Damien Le Moal <damien.lemoal@...nsource.wdc.com>,
Hans de Goede <hdegoede@...hat.com>,
Jens Axboe <axboe@...nel.dk>, Rob Herring <robh+dt@...nel.org>
CC: Serge Semin <Sergey.Semin@...kalelectronics.ru>,
Serge Semin <fancer.lancer@...il.com>,
Alexey Malahov <Alexey.Malahov@...kalelectronics.ru>,
Pavel Parkhomenko <Pavel.Parkhomenko@...kalelectronics.ru>,
<linux-ide@...r.kernel.org>, <linux-kernel@...r.kernel.org>,
<devicetree@...r.kernel.org>
Subject: [PATCH 10/21] dt-bindings: ata: ahci: Add platform capability properties
In case if the platform doesn't have BIOS or a comprehensive firmware
installed then the HBA capability flags will be left uninitialized. As a
good alternative we can define a set AHCI DT-node properties to describe
all of HW-init capabilities flags. Luckily there aren't too many of them.
SSS - Staggered Spin-up support and MPS - Mechanical Presence Switch
support determine the corresponding feature availability for whole HBA by
means of the "hba-sss" and "hba-smps" properties. Each port can have the
"hba-{hpcp,mpsp,cpd,esp,fbscp}" defined indicatating that the port
supports the next functionality: HPCP - HotPlug capable port, MPSP -
Mechanical Presence Switch attached to a port, CPD - Cold Plug detection,
ESP - External SATA Port (eSATA), FBSCP - FIS-based switching capable
port.
Signed-off-by: Serge Semin <Sergey.Semin@...kalelectronics.ru>
---
Alternatively we could define them as a bitfield, but having a set of
boolean properties seemed a better idea since in that case we can
implement a simple inter-dependency rules for them, which can't be done
should we take the bitfields path.
---
.../devicetree/bindings/ata/ahci-common.yaml | 66 +++++++++++++++++++
.../devicetree/bindings/ata/generic-ahci.yaml | 9 +++
2 files changed, 75 insertions(+)
diff --git a/Documentation/devicetree/bindings/ata/ahci-common.yaml b/Documentation/devicetree/bindings/ata/ahci-common.yaml
index 054819930538..1901c55a5468 100644
--- a/Documentation/devicetree/bindings/ata/ahci-common.yaml
+++ b/Documentation/devicetree/bindings/ata/ahci-common.yaml
@@ -67,6 +67,19 @@ properties:
phy-names:
const: sata-phy
+ hba-sss:
+ type: boolean
+ description:
+ Staggered Spin-up Support. Indicates whether the HBA supports the
+ staggered spin-up on its ports, for use in balancing power spikes.
+
+ hba-smps:
+ type: boolean
+ description:
+ Mechanical Presence Switch Support. Indicates whether the HBA supports
+ mechanical presence switches on its ports for use in hot plug
+ operations.
+
ports-implemented:
$ref: /schemas/types.yaml#/definitions/uint32
description:
@@ -88,6 +101,40 @@ patternProperties:
minimum: 0
maximum: 31
+ hba-hpcp:
+ type: boolean
+ description:
+ Hot Plug Capable Port. Indicates that this port’s signal and power
+ connectors are externally accessible via a joint signal and power
+ connector for blindmate device hot plug. It is mutually exclusive
+ with the ESP feature.
+
+ hba-mpsp:
+ type: boolean
+ description:
+ Mechanical Presence Switch Attached to Port. Indicates whether
+ the platform an mechanical presence switch attached to this
+ port.
+
+ hba-cpd:
+ type: boolean
+ description:
+ Cold Presence Detection. Indicates whether the platform supports
+ cold presence detection on this port.
+
+ hba-esp:
+ type: boolean
+ description:
+ External SATA Port. Indicates that this port’s signal connector
+ is externally accessible on a signal only connector (e.g. eSATA
+ connector).
+
+ hba-fbscp:
+ type: boolean
+ description:
+ FIS-based Switching Capable Port. Indicates whether this port
+ supports Port Multiplier FIS-based switching.
+
phys:
description: Individual AHCI SATA port PHY
maxItems: 1
@@ -101,6 +148,25 @@ patternProperties:
required:
- reg
+ # eSATA can't be enabled together with the HotPlug capability
+ oneOf:
+ - required:
+ - hba-hpcp
+ - required:
+ - hba-esp
+ - not:
+ anyOf:
+ - required:
+ - hba-hpcp
+ - required:
+ - hba-esp
+
+ # HotPlug capability must be enabled together with Cold Plug
+ # Detection and Mechanical Presence Switching.
+ dependencies:
+ hba-cpd: ["hba-hpcp"]
+ hba-mpsp: ["hba-hpcp"]
+
required:
- reg
- interrupts
diff --git a/Documentation/devicetree/bindings/ata/generic-ahci.yaml b/Documentation/devicetree/bindings/ata/generic-ahci.yaml
index 957f45c4f488..6c147350b5f9 100644
--- a/Documentation/devicetree/bindings/ata/generic-ahci.yaml
+++ b/Documentation/devicetree/bindings/ata/generic-ahci.yaml
@@ -74,14 +74,23 @@ examples:
interrupts = <GIC_SPI 438 IRQ_TYPE_LEVEL_HIGH>;
+ hba-smps;
+
sata-port@0 {
reg = <0>;
+
+ hba-fbscp;
+ hba-esp;
phys = <&sata_phy0>;
phy-names = "sata-phy";
};
sata-port@1 {
reg = <1>;
+
+ hba-fbscp;
+ hba-hpcp;
+ hba-mpsp;
phys = <&sata_phy1>;
phy-names = "sata-phy";
};
--
2.35.1
Powered by blists - more mailing lists