Skip to content

[PW_SID:1085941] net: stmmac: eic7700: fix EIC7700 eth1 RX sampling timing#1820

Closed
linux-riscv-bot wants to merge 5 commits into
workflowfrom
pw1085941
Closed

[PW_SID:1085941] net: stmmac: eic7700: fix EIC7700 eth1 RX sampling timing#1820
linux-riscv-bot wants to merge 5 commits into
workflowfrom
pw1085941

Conversation

@linux-riscv-bot
Copy link
Copy Markdown

PR for series 1085941 applied to workflow

Name: net: stmmac: eic7700: fix EIC7700 eth1 RX sampling timing
URL: https://patchwork.kernel.org/project/linux-riscv/list/?series=1085941
Version: 7

Linux RISC-V bot and others added 5 commits April 26, 2026 22:07
Due to chip backend reasons, there is already an approximately 4-5 ns
skew between the RX clock and data of the eth1 MAC controller inside
the silicon.

For 1000M, the RX clock must be inverted since it is not possible to
meet the RGMII timing requirements using only rx-internal-delay-ps on
the MAC together with the standard 2 ns delay on the PHY. Therefore,
even on a properly designed board, eth1 still requires RX clock
inversion.

This behaviour effectively breaks the RGMII timing assumptions at the
SoC level.

For the TX path of eth1, there is also a skew between the TX clock
and data on the MAC controller inside the silicon. This skew happens
to be approximately 2 ns. Therefore, it can be considered that the
2 ns delay of TX is provided by the MAC, so the TX is compliant with
the RGMII standard.

For 10/100 operation, the approximately 4-5 ns skew in the chip does
not break the standard. The RGMII timing table (Section 3.3) specifies
that for 10/100 operation the maximum value is unspecified:
https://community.nxp.com/pwmxy87654/attachments/pwmxy87654/imx-processors/20655/1/RGMIIv2_0_final_hp.pdf

Due to the eth1 silicon behavior described above, a new compatible
string "eswin,eic7700-qos-eth-clk-inversion" is added to the device
tree. This allows the driver to handle the differences between eth1
and eth0 through dedicated logic.

The rx-internal-delay-ps and tx-internal-delay-ps properties now use
minimum and maximum constraints to reflect the actual hardware delay
range (0-2540 ps) applied in 20 ps steps. This relaxes the binding
validation compared to the previous enum-based definition and avoids
regressions for existing DTBs while keeping the same hardware limits.

Treat the RX/TX internal delay properties as optional, board-specific
tuning knobs and remove them from the example to avoid encouraging
their use.

In addition, the binding now includes additional background information
about the 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.

Background reference for the High-Speed Subsystem and HSP CSR block is
available in Chapter 10 ("High-Speed Interface") of the EIC7700X SoC
Technical Reference Manual, Part 4
(EIC7700X_SoC_Technical_Reference_Manual_Part4.pdf):
https://github.com/eswincomputing/EIC7700X-SoC-Technical-Reference-Manual/releases

There are currently no in-tree users of the EIC7700 Ethernet driver, so
these changes are safe.

Fixes: 888bd0e ("dt-bindings: ethernet: eswin: Document for EIC7700 SoC")
Signed-off-by: Zhi Li <lizhi2@eswincomputing.com>
Acked-by: Conor Dooley <conor.dooley@microchip.com>
Signed-off-by: Linux RISC-V bot <linux.riscv.bot@gmail.com>
…RX sampling timing

The second Ethernet controller (eth1) on the Eswin EIC7700 SoC may fail
to sample RX data correctly at Gigabit speed due to EIC7700-specific
receive clock to data skew at the MAC input in the silicon.

The existing internal delay configuration does not provide sufficient
adjustment range to compensate for this condition at 1000Mbps.
Update the EIC7700 DWMAC glue driver to apply EIC7700-specific clock
sampling inversion only during Gigabit operation on MAC instances
that require it.

TXD and RXD delay registers are explicitly cleared during initialization
to override any residual configuration left by the bootloader. All HSP
CSR register accesses are performed only after the required clocks are
enabled.

Fixes: ea77dbb ("net: stmmac: add Eswin EIC7700 glue driver")
Signed-off-by: Zhi Li <lizhi2@eswincomputing.com>
Signed-off-by: Linux RISC-V bot <linux.riscv.bot@gmail.com>
Document ESWIN EIC7700 SoC compatible for syscon registers.

Signed-off-by: Zhi Li <lizhi2@eswincomputing.com>
Signed-off-by: Linux RISC-V bot <linux.riscv.bot@gmail.com>
…oller

Enable the on-board Gigabit Ethernet controller on the
HiFive Premier P550 development board.

Signed-off-by: Zhi Li <lizhi2@eswincomputing.com>
Signed-off-by: Linux RISC-V bot <linux.riscv.bot@gmail.com>
@linux-riscv-bot
Copy link
Copy Markdown
Author

Patch 1: "[net-next,v7,1/4] dt-bindings: ethernet: eswin: add clock sampling control"
build-rv32-defconfig
Desc: Builds riscv32 defconfig
Duration: 140.55 seconds
Result: PASS

@linux-riscv-bot
Copy link
Copy Markdown
Author

Patch 1: "[net-next,v7,1/4] dt-bindings: ethernet: eswin: add clock sampling control"
build-rv64-clang-allmodconfig
Desc: Builds riscv64 allmodconfig with Clang, and checks for errors and added warnings
Duration: 1020.27 seconds
Result: PASS

@linux-riscv-bot
Copy link
Copy Markdown
Author

Patch 1: "[net-next,v7,1/4] dt-bindings: ethernet: eswin: add clock sampling control"
build-rv64-gcc-allmodconfig
Desc: Builds riscv64 allmodconfig with GCC, and checks for errors and added warnings
Duration: 1394.61 seconds
Result: PASS

@linux-riscv-bot
Copy link
Copy Markdown
Author

Patch 1: "[net-next,v7,1/4] dt-bindings: ethernet: eswin: add clock sampling control"
build-rv64-nommu-k210-defconfig
Desc: Builds riscv64 defconfig with NOMMU for K210
Duration: 25.64 seconds
Result: PASS

@linux-riscv-bot
Copy link
Copy Markdown
Author

Patch 1: "[net-next,v7,1/4] dt-bindings: ethernet: eswin: add clock sampling control"
build-rv64-nommu-k210-virt
Desc: Builds riscv64 defconfig with NOMMU for the virt platform
Duration: 27.26 seconds
Result: PASS

@linux-riscv-bot
Copy link
Copy Markdown
Author

Patch 1: "[net-next,v7,1/4] dt-bindings: ethernet: eswin: add clock sampling control"
checkpatch
Desc: Runs checkpatch.pl on the patch
Duration: 0.77 seconds
Result: PASS

@linux-riscv-bot
Copy link
Copy Markdown
Author

Patch 1: "[net-next,v7,1/4] dt-bindings: ethernet: eswin: add clock sampling control"
dtb-warn-rv64
Desc: Checks for Device Tree warnings/errors
Duration: 87.84 seconds
Result: PASS

@linux-riscv-bot
Copy link
Copy Markdown
Author

Patch 1: "[net-next,v7,1/4] dt-bindings: ethernet: eswin: add clock sampling control"
header-inline
Desc: Detects static functions without inline keyword in header files
Duration: 0.39 seconds
Result: PASS

@linux-riscv-bot
Copy link
Copy Markdown
Author

Patch 1: "[net-next,v7,1/4] dt-bindings: ethernet: eswin: add clock sampling control"
kdoc
Desc: Detects for kdoc errors
Duration: 0.93 seconds
Result: PASS

@linux-riscv-bot
Copy link
Copy Markdown
Author

Patch 1: "[net-next,v7,1/4] dt-bindings: ethernet: eswin: add clock sampling control"
module-param
Desc: Detect module_param changes
Duration: 0.26 seconds
Result: PASS

@linux-riscv-bot
Copy link
Copy Markdown
Author

Patch 1: "[net-next,v7,1/4] dt-bindings: ethernet: eswin: add clock sampling control"
verify-fixes
Desc: Verifies that the Fixes: tags exist
Duration: 0.27 seconds
Result: PASS

@linux-riscv-bot
Copy link
Copy Markdown
Author

Patch 1: "[net-next,v7,1/4] dt-bindings: ethernet: eswin: add clock sampling control"
verify-signedoff
Desc: Verifies that Signed-off-by: tags are correct
Duration: 0.31 seconds
Result: PASS

@linux-riscv-bot
Copy link
Copy Markdown
Author

Patch 2: "[net-next,v7,2/4] net: stmmac: eic7700: enable clocks before syscon access and correct RX sampling timing"
build-rv32-defconfig
Desc: Builds riscv32 defconfig
Duration: 138.08 seconds
Result: PASS

@linux-riscv-bot
Copy link
Copy Markdown
Author

Patch 2: "[net-next,v7,2/4] net: stmmac: eic7700: enable clocks before syscon access and correct RX sampling timing"
build-rv64-clang-allmodconfig
Desc: Builds riscv64 allmodconfig with Clang, and checks for errors and added warnings
Duration: 1049.03 seconds
Result: PASS

@linux-riscv-bot
Copy link
Copy Markdown
Author

Patch 2: "[net-next,v7,2/4] net: stmmac: eic7700: enable clocks before syscon access and correct RX sampling timing"
build-rv64-gcc-allmodconfig
Desc: Builds riscv64 allmodconfig with GCC, and checks for errors and added warnings
Duration: 1435.18 seconds
Result: PASS

@linux-riscv-bot
Copy link
Copy Markdown
Author

Patch 2: "[net-next,v7,2/4] net: stmmac: eic7700: enable clocks before syscon access and correct RX sampling timing"
build-rv64-nommu-k210-defconfig
Desc: Builds riscv64 defconfig with NOMMU for K210
Duration: 26.33 seconds
Result: PASS

@linux-riscv-bot
Copy link
Copy Markdown
Author

Patch 2: "[net-next,v7,2/4] net: stmmac: eic7700: enable clocks before syscon access and correct RX sampling timing"
build-rv64-nommu-k210-virt
Desc: Builds riscv64 defconfig with NOMMU for the virt platform
Duration: 27.45 seconds
Result: PASS

@linux-riscv-bot
Copy link
Copy Markdown
Author

Patch 2: "[net-next,v7,2/4] net: stmmac: eic7700: enable clocks before syscon access and correct RX sampling timing"
checkpatch
Desc: Runs checkpatch.pl on the patch
Duration: 1.00 seconds
Result: PASS

@linux-riscv-bot
Copy link
Copy Markdown
Author

Patch 2: "[net-next,v7,2/4] net: stmmac: eic7700: enable clocks before syscon access and correct RX sampling timing"
dtb-warn-rv64
Desc: Checks for Device Tree warnings/errors
Duration: 85.36 seconds
Result: PASS

@linux-riscv-bot
Copy link
Copy Markdown
Author

Patch 2: "[net-next,v7,2/4] net: stmmac: eic7700: enable clocks before syscon access and correct RX sampling timing"
header-inline
Desc: Detects static functions without inline keyword in header files
Duration: 0.24 seconds
Result: PASS

@linux-riscv-bot
Copy link
Copy Markdown
Author

Patch 2: "[net-next,v7,2/4] net: stmmac: eic7700: enable clocks before syscon access and correct RX sampling timing"
kdoc
Desc: Detects for kdoc errors
Duration: 0.89 seconds
Result: PASS

@linux-riscv-bot
Copy link
Copy Markdown
Author

Patch 2: "[net-next,v7,2/4] net: stmmac: eic7700: enable clocks before syscon access and correct RX sampling timing"
module-param
Desc: Detect module_param changes
Duration: 0.27 seconds
Result: PASS

@linux-riscv-bot
Copy link
Copy Markdown
Author

Patch 2: "[net-next,v7,2/4] net: stmmac: eic7700: enable clocks before syscon access and correct RX sampling timing"
verify-fixes
Desc: Verifies that the Fixes: tags exist
Duration: 0.29 seconds
Result: PASS

@linux-riscv-bot
Copy link
Copy Markdown
Author

Patch 2: "[net-next,v7,2/4] net: stmmac: eic7700: enable clocks before syscon access and correct RX sampling timing"
verify-signedoff
Desc: Verifies that Signed-off-by: tags are correct
Duration: 0.31 seconds
Result: PASS

@linux-riscv-bot
Copy link
Copy Markdown
Author

Patch 3: "[net-next,v7,3/4] dt-bindings: mfd: syscon: add ESWIN EIC7700 compatible"
build-rv32-defconfig
Desc: Builds riscv32 defconfig
Duration: 140.75 seconds
Result: PASS

@linux-riscv-bot
Copy link
Copy Markdown
Author

Patch 3: "[net-next,v7,3/4] dt-bindings: mfd: syscon: add ESWIN EIC7700 compatible"
build-rv64-clang-allmodconfig
Desc: Builds riscv64 allmodconfig with Clang, and checks for errors and added warnings
Duration: 1022.92 seconds
Result: PASS

@linux-riscv-bot
Copy link
Copy Markdown
Author

Patch 3: "[net-next,v7,3/4] dt-bindings: mfd: syscon: add ESWIN EIC7700 compatible"
build-rv64-gcc-allmodconfig
Desc: Builds riscv64 allmodconfig with GCC, and checks for errors and added warnings
Duration: 1395.90 seconds
Result: PASS

@linux-riscv-bot
Copy link
Copy Markdown
Author

Patch 3: "[net-next,v7,3/4] dt-bindings: mfd: syscon: add ESWIN EIC7700 compatible"
build-rv64-nommu-k210-defconfig
Desc: Builds riscv64 defconfig with NOMMU for K210
Duration: 25.56 seconds
Result: PASS

@linux-riscv-bot
Copy link
Copy Markdown
Author

Patch 3: "[net-next,v7,3/4] dt-bindings: mfd: syscon: add ESWIN EIC7700 compatible"
build-rv64-nommu-k210-virt
Desc: Builds riscv64 defconfig with NOMMU for the virt platform
Duration: 27.22 seconds
Result: PASS

@linux-riscv-bot
Copy link
Copy Markdown
Author

Patch 3: "[net-next,v7,3/4] dt-bindings: mfd: syscon: add ESWIN EIC7700 compatible"
checkpatch
Desc: Runs checkpatch.pl on the patch
Duration: 1.19 seconds
Result: PASS

@linux-riscv-bot
Copy link
Copy Markdown
Author

Patch 3: "[net-next,v7,3/4] dt-bindings: mfd: syscon: add ESWIN EIC7700 compatible"
dtb-warn-rv64
Desc: Checks for Device Tree warnings/errors
Duration: 86.37 seconds
Result: PASS

@linux-riscv-bot
Copy link
Copy Markdown
Author

Patch 3: "[net-next,v7,3/4] dt-bindings: mfd: syscon: add ESWIN EIC7700 compatible"
header-inline
Desc: Detects static functions without inline keyword in header files
Duration: 0.25 seconds
Result: PASS

@linux-riscv-bot
Copy link
Copy Markdown
Author

Patch 3: "[net-next,v7,3/4] dt-bindings: mfd: syscon: add ESWIN EIC7700 compatible"
kdoc
Desc: Detects for kdoc errors
Duration: 0.86 seconds
Result: PASS

@linux-riscv-bot
Copy link
Copy Markdown
Author

Patch 3: "[net-next,v7,3/4] dt-bindings: mfd: syscon: add ESWIN EIC7700 compatible"
module-param
Desc: Detect module_param changes
Duration: 0.27 seconds
Result: PASS

@linux-riscv-bot
Copy link
Copy Markdown
Author

Patch 3: "[net-next,v7,3/4] dt-bindings: mfd: syscon: add ESWIN EIC7700 compatible"
verify-fixes
Desc: Verifies that the Fixes: tags exist
Duration: 0.24 seconds
Result: PASS

@linux-riscv-bot
Copy link
Copy Markdown
Author

Patch 3: "[net-next,v7,3/4] dt-bindings: mfd: syscon: add ESWIN EIC7700 compatible"
verify-signedoff
Desc: Verifies that Signed-off-by: tags are correct
Duration: 0.32 seconds
Result: PASS

@linux-riscv-bot
Copy link
Copy Markdown
Author

Patch 4: "[net-next,v7,4/4] riscv: dts: eswin: eic7700-hifive-premier-p550: enable Ethernet controller"
build-rv32-defconfig
Desc: Builds riscv32 defconfig
Duration: 139.67 seconds
Result: PASS

@linux-riscv-bot
Copy link
Copy Markdown
Author

Patch 4: "[net-next,v7,4/4] riscv: dts: eswin: eic7700-hifive-premier-p550: enable Ethernet controller"
build-rv64-clang-allmodconfig
Desc: Builds riscv64 allmodconfig with Clang, and checks for errors and added warnings
Duration: 1085.35 seconds
Result: PASS

@linux-riscv-bot
Copy link
Copy Markdown
Author

Patch 4: "[net-next,v7,4/4] riscv: dts: eswin: eic7700-hifive-premier-p550: enable Ethernet controller"
build-rv64-gcc-allmodconfig
Desc: Builds riscv64 allmodconfig with GCC, and checks for errors and added warnings
Duration: 1467.94 seconds
Result: PASS

@linux-riscv-bot
Copy link
Copy Markdown
Author

Patch 4: "[net-next,v7,4/4] riscv: dts: eswin: eic7700-hifive-premier-p550: enable Ethernet controller"
build-rv64-nommu-k210-defconfig
Desc: Builds riscv64 defconfig with NOMMU for K210
Duration: 26.17 seconds
Result: PASS

@linux-riscv-bot
Copy link
Copy Markdown
Author

Patch 4: "[net-next,v7,4/4] riscv: dts: eswin: eic7700-hifive-premier-p550: enable Ethernet controller"
build-rv64-nommu-k210-virt
Desc: Builds riscv64 defconfig with NOMMU for the virt platform
Duration: 27.14 seconds
Result: PASS

@linux-riscv-bot
Copy link
Copy Markdown
Author

Patch 4: "[net-next,v7,4/4] riscv: dts: eswin: eic7700-hifive-premier-p550: enable Ethernet controller"
checkpatch
Desc: Runs checkpatch.pl on the patch
Duration: 1.52 seconds
Result: PASS

@linux-riscv-bot
Copy link
Copy Markdown
Author

Patch 4: "[net-next,v7,4/4] riscv: dts: eswin: eic7700-hifive-premier-p550: enable Ethernet controller"
dtb-warn-rv64
Desc: Checks for Device Tree warnings/errors
Duration: 87.16 seconds
Result: PASS

@linux-riscv-bot
Copy link
Copy Markdown
Author

Patch 4: "[net-next,v7,4/4] riscv: dts: eswin: eic7700-hifive-premier-p550: enable Ethernet controller"
header-inline
Desc: Detects static functions without inline keyword in header files
Duration: 0.25 seconds
Result: PASS

@linux-riscv-bot
Copy link
Copy Markdown
Author

Patch 4: "[net-next,v7,4/4] riscv: dts: eswin: eic7700-hifive-premier-p550: enable Ethernet controller"
kdoc
Desc: Detects for kdoc errors
Duration: 0.90 seconds
Result: PASS

@linux-riscv-bot
Copy link
Copy Markdown
Author

Patch 4: "[net-next,v7,4/4] riscv: dts: eswin: eic7700-hifive-premier-p550: enable Ethernet controller"
module-param
Desc: Detect module_param changes
Duration: 4.35 seconds
Result: PASS

@linux-riscv-bot
Copy link
Copy Markdown
Author

Patch 4: "[net-next,v7,4/4] riscv: dts: eswin: eic7700-hifive-premier-p550: enable Ethernet controller"
verify-fixes
Desc: Verifies that the Fixes: tags exist
Duration: 0.41 seconds
Result: PASS

@linux-riscv-bot
Copy link
Copy Markdown
Author

Patch 4: "[net-next,v7,4/4] riscv: dts: eswin: eic7700-hifive-premier-p550: enable Ethernet controller"
verify-signedoff
Desc: Verifies that Signed-off-by: tags are correct
Duration: 0.29 seconds
Result: PASS

@linux-riscv-bot linux-riscv-bot force-pushed the workflow branch 5 times, most recently from 83cebcb to e5fd44b Compare April 30, 2026 17:01
@linux-riscv-bot linux-riscv-bot deleted the pw1085941 branch April 30, 2026 20:02
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants