[<prev] [next>] [<thread-prev] [thread-next>] [day] [month] [year] [list]
Message-ID: <20260109080859.1285-1-lizhi2@eswincomputing.com>
Date: Fri, 9 Jan 2026 16:08:59 +0800
From: lizhi2@...incomputing.com
To: devicetree@...r.kernel.org,
andrew+netdev@...n.ch,
davem@...emloft.net,
edumazet@...gle.com,
kuba@...nel.org,
robh@...nel.org,
krzk+dt@...nel.org,
conor+dt@...nel.org,
netdev@...r.kernel.org,
pabeni@...hat.com,
mcoquelin.stm32@...il.com,
alexandre.torgue@...s.st.com,
rmk+kernel@...linux.org.uk,
linux-stm32@...md-mailman.stormreply.com,
linux-arm-kernel@...ts.infradead.org,
linux-kernel@...r.kernel.org
Cc: ningyu@...incomputing.com,
linmin@...incomputing.com,
pinkesh.vaghela@...fochips.com,
weishangjuan@...incomputing.com,
Zhi Li <lizhi2@...incomputing.com>
Subject: [PATCH v1 1/2] dt-bindings: ethernet: eswin: add clock sampling control
From: Zhi Li <lizhi2@...incomputing.com>
The second Ethernet controller (eth1) on the EIC7700 SoC may experience
RX data sampling issues at high speed due to EIC7700-specific receive
clock to data skew at the MAC input.
Add vendor-specific device tree properties to describe optional receive
and transmit clock inversion controls used to compensate for the EIC7700
Ethernet MAC, which may be required to ensure correct RX sampling at
high speed.
This binding also updates the enum values of the rx-internal-delay-ps
and tx-internal-delay-ps properties to reflect the actual delay step
resolution implemented by the EIC7700 hardware. The hardware applies
delay in 20 ps increments, while the previous enum values were based on
an incorrect mapping. This change corrects the DT-to-hardware mapping
without changing the meaning of the delay properties.
In addition, the binding also describes the relevant HSP CSR registers
accessed by the MAC. The TXD and RXD delay control registers are included
so the driver can explicitly clear any residual configuration left by
the bootloader, ensuring the hardware is initialized into a known and
deterministic state.
Fixes: 888bd0eca93c ("dt-bindings: ethernet: eswin: Document for EIC7700 SoC")
Signed-off-by: Zhi Li <lizhi2@...incomputing.com>
---
.../bindings/net/eswin,eic7700-eth.yaml | 57 +++++++++++++++++--
1 file changed, 51 insertions(+), 6 deletions(-)
diff --git a/Documentation/devicetree/bindings/net/eswin,eic7700-eth.yaml b/Documentation/devicetree/bindings/net/eswin,eic7700-eth.yaml
index 91e8cd1db67b..c948f62e97e9 100644
--- a/Documentation/devicetree/bindings/net/eswin,eic7700-eth.yaml
+++ b/Documentation/devicetree/bindings/net/eswin,eic7700-eth.yaml
@@ -63,10 +63,25 @@ properties:
- const: stmmaceth
rx-internal-delay-ps:
- enum: [0, 200, 600, 1200, 1600, 1800, 2000, 2200, 2400]
+ enum: [0, 20, 60, 100, 200, 400, 800, 1600, 2400]
tx-internal-delay-ps:
- enum: [0, 200, 600, 1200, 1600, 1800, 2000, 2200, 2400]
+ enum: [0, 20, 60, 100, 200, 400, 800, 1600, 2400]
+
+ eswin,rx-clk-invert:
+ description:
+ Invert the receive clock sampling polarity at the MAC input.
+ This property may be used to compensate for SoC-specific
+ receive clock to data skew and help ensure correct RX data
+ sampling at high speed.
+ type: boolean
+
+ eswin,tx-clk-invert:
+ description:
+ Invert the transmit clock polarity driven by the MAC.
+ This property provides SoC-specific transmit clock control
+ when required by the platform.
+ type: boolean
eswin,hsp-sp-csr:
description:
@@ -81,7 +96,9 @@ properties:
or external clock selection
- description: Offset of AXI clock controller Low-Power request
register
+ - description: Offset of register controlling TXD delay
- description: Offset of register controlling TX/RX clock delay
+ - description: Offset of register controlling RXD delay
required:
- compatible
@@ -111,17 +128,45 @@ examples:
interrupts = <61>;
interrupt-names = "macirq";
phy-mode = "rgmii-id";
- phy-handle = <&phy0>;
+ phy-handle = <&gmac0_phy0>;
resets = <&reset 95>;
reset-names = "stmmaceth";
+ rx-internal-delay-ps = <20>;
+ tx-internal-delay-ps = <100>;
+ eswin,hsp-sp-csr = <&hsp_sp_csr 0x100 0x108 0x114 0x118 0x11c>;
+ snps,axi-config = <&stmmac_axi_setup_gmac0>;
+ snps,aal;
+ snps,fixed-burst;
+ snps,tso;
+ stmmac_axi_setup_gmac0: stmmac-axi-config {
+ snps,blen = <0 0 0 0 16 8 4>;
+ snps,rd_osr_lmt = <2>;
+ snps,wr_osr_lmt = <2>;
+ };
+ };
+
+ ethernet@...10000 {
+ compatible = "eswin,eic7700-qos-eth", "snps,dwmac-5.20";
+ reg = <0x50410000 0x10000>;
+ clocks = <&d0_clock 186>, <&d0_clock 171>, <&d0_clock 40>,
+ <&d0_clock 194>;
+ clock-names = "axi", "cfg", "stmmaceth", "tx";
+ interrupt-parent = <&plic>;
+ interrupts = <70>;
+ interrupt-names = "macirq";
+ phy-mode = "rgmii-rxid";
+ phy-handle = <&gmac1_phy0>;
+ resets = <&reset 94>;
+ reset-names = "stmmaceth";
rx-internal-delay-ps = <200>;
tx-internal-delay-ps = <200>;
- eswin,hsp-sp-csr = <&hsp_sp_csr 0x100 0x108 0x118>;
- snps,axi-config = <&stmmac_axi_setup>;
+ eswin,rx-clk-invert;
+ eswin,hsp-sp-csr = <&hsp_sp_csr 0x200 0x208 0x214 0x218 0x21c>;
+ snps,axi-config = <&stmmac_axi_setup_gmac1>;
snps,aal;
snps,fixed-burst;
snps,tso;
- stmmac_axi_setup: stmmac-axi-config {
+ stmmac_axi_setup_gmac1: stmmac-axi-config {
snps,blen = <0 0 0 0 16 8 4>;
snps,rd_osr_lmt = <2>;
snps,wr_osr_lmt = <2>;
--
2.25.1
Powered by blists - more mailing lists