From: Niklas Cassel <cassel@kernel.org>
To: hehuan1@eswincomputing.com
Cc: dlemoal@kernel.org, robh@kernel.org, krzk+dt@kernel.org,
conor+dt@kernel.org, linux-ide@vger.kernel.org,
devicetree@vger.kernel.org, linux-kernel@vger.kernel.org,
p.zabel@pengutronix.de, ningyu@eswincomputing.com,
linmin@eswincomputing.com, luyulin@eswincomputing.com,
Serge Semin <fancer.lancer@gmail.com>
Subject: Re: [PATCH v1 1/2] dt-bindings: sata: eswin: Document for EIC7700 SoC
Date: Thu, 15 May 2025 13:25:35 +0200 [thread overview]
Message-ID: <aCXPL8m0OjEOI_q9@ryzen> (raw)
In-Reply-To: <20250515085723.1706-1-hehuan1@eswincomputing.com>
Hello Huan He,
On Thu, May 15, 2025 at 04:57:23PM +0800, hehuan1@eswincomputing.com wrote:
> From: Huan He <hehuan1@eswincomputing.com>
>
> Add eic7700 AHCI SATA controller device with single port support.
> For the eic7700 SATA registers, it supports AHCI standard interface,
> interrupt modes (INTx/MSI/PME), APB reset control,
> and HSP_SP_CSR register configuration.
>
> Co-developed-by: Yulin Lu <luyulin@eswincomputing.com>
> Signed-off-by: Yulin Lu <luyulin@eswincomputing.com>
> Signed-off-by: Huan He <hehuan1@eswincomputing.com>
> ---
> .../bindings/ata/eswin,eic7700-sata.yaml | 80 +++++++++++++++++++
> 1 file changed, 80 insertions(+)
> create mode 100644 Documentation/devicetree/bindings/ata/eswin,eic7700-sata.yaml
>
> diff --git a/Documentation/devicetree/bindings/ata/eswin,eic7700-sata.yaml b/Documentation/devicetree/bindings/ata/eswin,eic7700-sata.yaml
> new file mode 100644
> index 000000000000..71e1b865ed2a
> --- /dev/null
> +++ b/Documentation/devicetree/bindings/ata/eswin,eic7700-sata.yaml
> @@ -0,0 +1,80 @@
> +# SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause)
> +%YAML 1.2
> +---
> +$id: http://devicetree.org/schemas/ata/eswin,eic7700-sata.yaml#
> +$schema: http://devicetree.org/meta-schemas/core.yaml#
> +
> +title: Eswin EIC7700 SoC SATA Controller
> +
> +maintainers:
> + - Yulin Lu <luyulin@eswincomputing.com>
> + - Huan He <hehuan1@eswincomputing.com>
> +
> +description: |
> + This binding describes the SATA controller integrated in the Eswin EIC7700 SoC.
> + The controller is compatible with the AHCI (Advanced Host Controller Interface)
> + specification and supports up to 1 port.
> +
> +properties:
> + compatible:
> + const: eswin,eic7700-ahci
> +
> + reg:
> + maxItems: 1
> + description: Address range of the SATA registers
> +
> + interrupt-names:
> + items:
> + - const: intrq
> + - const: msi
> + - const: pme
> +
> + interrupts:
> + maxItems: 3
> + description: The SATA interrupt numbers
> +
> + ports-implemented:
> + maximum: 0x1
> +
> + resets:
> + maxItems: 1
> + description: resets to be used by the controller.
> +
> + reset-names:
> + const: apb
> +
> + '#address-cells':
> + const: 2
> +
> + '#size-cells':
> + const: 2
> +
> + eswin,hsp_sp_csr:
> + $ref: /schemas/types.yaml#/definitions/phandle-array
> + description: hsp_sp_csr regs to be used by the controller.
> +
> +required:
> + - compatible
> + - reg
> + - interrupt-names
> + - interrupts
> + - resets
> + - reset-names
> + - eswin,hsp_sp_csr
> +
> +additionalProperties: false
> +
> +examples:
> + - |
> + sata: sata@50420000 {
> + compatible = "eswin,eic7700-ahci";
> + reg = <0x50420000 0x10000>;
> + interrupt-parent = <&plic>;
> + interrupt-names = "intrq", "msi", "pme";
> + interrupts = <58>, <59>, <60>;
> + ports-implemented = <0x1>;
> + resets = <&reset 7 (1 << 27)>;
> + reset-names = "apb";
> + #size-cells = <2>;
> + eswin,hsp_sp_csr = <&hsp_sp_csr 0x1050>;
> + };
> --
> 2.25.1
>
I'm surprised that you AHCI controller does not need any clocks ;)
When looking at the EIC7700X TRM:
https://github.com/eswincomputing/EIC7700X-SoC-Technical-Reference-Manual/releases/download/v1.0.0-20250103/EIC7700X_SoC_Technical_Reference_Manual_Part2.pdf
It is obvious that this SoC integrates the DWC AHCI controller.
Thus, I would have expected your DT binding to have a:
$ref: snps,dwc-ahci-common.yaml#
Please have a look at these bindings:
baikal,bt1-ahci.yaml: - $ref: snps,dwc-ahci-common.yaml#
baikal,bt1-ahci.yaml: $ref: /schemas/ata/snps,dwc-ahci-common.yaml#/$defs/dwc-ahci-port
rockchip,dwc-ahci.yaml: $ref: /schemas/ata/snps,dwc-ahci-common.yaml#/$defs/dwc-ahci-port
rockchip,dwc-ahci.yaml: - $ref: snps,dwc-ahci-common.yaml#
snps,dwc-ahci-common.yaml:$id: http://devicetree.org/schemas/ata/snps,dwc-ahci-common.yaml#
snps,dwc-ahci.yaml: - $ref: snps,dwc-ahci-common.yaml#
snps,dwc-ahci.yaml: $ref: /schemas/ata/snps,dwc-ahci-common.yaml#/$defs/dwc-ahci-port
The good news is that snps,dwc-ahci-common.yaml has defined and documented
all the SATA clocks and resets for your board already (a lot of them which
you missed to include in this binding).
Looking quickly at:
eswin,hsp_sp_csr = <&hsp_sp_csr 0x1050>;
I can't help to wonder if these regs shouldn't be in a SATA PHY binding
instead.
Do e.g. a
$ git grep -A 20 snps,dwc-ahci arch/
There are multiple examples that use a PHY driver.
If you were to implement a PHY driver, it is possible that you would
not need to create a new (AHCI) DT binding at all, you could probably
just add your compatible string to snps,dwc-ahci.yaml, as (from a quick)
glance, all the only platform specific things appear to be PHY related.
Kind regards,
Niklas
next prev parent reply other threads:[~2025-05-15 11:25 UTC|newest]
Thread overview: 9+ messages / expand[flat|nested] mbox.gz Atom feed top
2025-05-15 8:51 [PATCH v1 0/2] ESWIN EIC7700 sata driver hehuan1
2025-05-15 8:57 ` [PATCH v1 1/2] dt-bindings: sata: eswin: Document for EIC7700 SoC hehuan1
2025-05-15 10:18 ` Rob Herring (Arm)
2025-05-15 11:25 ` Niklas Cassel [this message]
2025-08-14 9:51 ` luyulin
2025-08-14 14:32 ` Niklas Cassel
2025-05-15 9:00 ` [PATCH v1 2/2] sata: eswin: Add eic7700 sata driver hehuan1
2025-05-15 11:56 ` Niklas Cassel
2025-05-16 14:33 ` kernel test robot
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=aCXPL8m0OjEOI_q9@ryzen \
--to=cassel@kernel.org \
--cc=conor+dt@kernel.org \
--cc=devicetree@vger.kernel.org \
--cc=dlemoal@kernel.org \
--cc=fancer.lancer@gmail.com \
--cc=hehuan1@eswincomputing.com \
--cc=krzk+dt@kernel.org \
--cc=linmin@eswincomputing.com \
--cc=linux-ide@vger.kernel.org \
--cc=linux-kernel@vger.kernel.org \
--cc=luyulin@eswincomputing.com \
--cc=ningyu@eswincomputing.com \
--cc=p.zabel@pengutronix.de \
--cc=robh@kernel.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.