[PW_SID:1118672] net: stmmac: eic7700: add eth1 variant support and update delay bindings#2168
[PW_SID:1118672] net: stmmac: eic7700: add eth1 variant support and update delay bindings#2168linux-riscv-bot wants to merge 7 commits into
Conversation
…ed constraints Relax internal delay constraints for EIC7700 Ethernet binding. Replace fixed enumeration of rx-internal-delay-ps and tx-internal-delay-ps with a range-based definition (0-2540 ps, 20 ps steps) to reflect actual hardware capability. Mark rx/tx internal delay properties as optional, as they are board- specific tuning parameters rather than mandatory configuration. Update the device tree example to align with the relaxed constraint model and remove delay properties from the example to avoid implying they are required. No functional change to existing DT users. Reviewed-by: Rob Herring (Arm) <robh@kernel.org> Signed-off-by: Zhi Li <lizhi2@eswincomputing.com> Signed-off-by: Linux RISC-V bot <linux.riscv.bot@gmail.com>
…iant
The EIC7700 SoC integrates two GMAC instances. The eth1 MAC exhibits
different RX clock sampling characteristics due to silicon-inherent
timing behavior.
The eth1 MAC has a fixed, non-configurable RX clock-to-data skew at the
MAC input in the order of 4-5 ns. This cannot be compensated solely by
the standard MAC internal delay configuration and PHY delay, and RX clock
inversion is required at 1000Mbps for correct sampling.
The eth1 TX path also includes a fixed silicon-inherent delay of
approximately 2 ns. This delay is always present and cannot be disabled.
It is therefore part of the effective transmit timing observed on the
wire.
For the eth1 variant, the valid tx-internal-delay-ps values include
this fixed delay component. Consequently, the effective range becomes
2000-4540 ps (approximately 2000 ps fixed delay plus 0-2540 ps
programmable delay).
Introduce a dedicated compatible string
"eswin,eic7700-qos-eth-clk-inversion" to represent the eth1 variant,
allowing the driver to apply RX clock inversion only when required by
hardware variant selection.
This keeps SoC-level differentiation without exposing silicon-fixed skew
as configurable device tree parameters.
To reflect this, model the TX internal delay as a base 0-4540 ps range,
and constrain valid values per compatible using conditional schema rules.
Update the binding schema as follows:
- Define tx-internal-delay-ps as a base range: 0-4540 ps
- Add compatible-specific constraints using if/then rules:
* eswin,eic7700-qos-eth:
max 2540 ps
* eswin,eic7700-qos-eth-clk-inversion:
minimum 2000 ps (effective range 2000-4540 ps)
No functional change for existing "eswin,eic7700-qos-eth" users.
Signed-off-by: Zhi Li <lizhi2@eswincomputing.com>
Signed-off-by: Linux RISC-V bot <linux.riscv.bot@gmail.com>
Make rx-internal-delay-ps and tx-internal-delay-ps optional in the EIC7700 DWMAC driver. The driver previously required both properties to be present and would fail probe when they were missing. This restricts valid hardware configurations where RGMII timing is instead provided by the PHY or board design. Update the driver to treat missing delay properties as zero delay, allowing systems without explicit MAC-side delay tuning to operate correctly. This aligns the driver behavior with the updated device tree binding and provides a safe default configuration when MAC-side delay programming is not required. Signed-off-by: Zhi Li <lizhi2@eswincomputing.com> Signed-off-by: Linux RISC-V bot <linux.riscv.bot@gmail.com>
The eth1 MAC exhibits silicon-inherent RX and TX timing behavior that differs from the eth0 implementation. At 1000Mbps, RX sampling requires clock inversion due to a fixed MAC input skew that cannot be compensated by standard RGMII delay settings. The TX path includes a fixed ~2ns internal delay introduced by the MAC silicon. This delay is always present and is already accounted for in the device tree tx-internal-delay-ps property as part of the effective output timing. The tx-internal-delay-ps property describes the effective delay seen at the MAC output. Since the hardware register controls only the programmable portion of the delay, the driver subtracts the fixed silicon-inherent component before programming the delay register. Use compatible-specific match data to identify the eth1 variant and apply RX clock inversion only at 1000Mbps. The PHY interface mode is adjusted via phy_fix_phy_mode_for_mac_delays() to avoid double-application of RGMII delays when MAC-side delays are already present. Link speed dependency means RX sampling configuration is applied in the fix_mac_speed callback after negotiation. No behavior changes for the existing eth0 controller. 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. This patch is included only to provide the DTS context for reviewing the binding and driver changes in this series. The upstream DTS series will be submitted separately after the binding and driver changes are finalized. Acked-by: Conor Dooley <conor.dooley@microchip.com> 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. This patch is included only to provide the DTS context for reviewing the binding and driver changes in this series. The upstream DTS series will be submitted separately after the binding and driver changes are finalized. Signed-off-by: Zhi Li <lizhi2@eswincomputing.com> Signed-off-by: Linux RISC-V bot <linux.riscv.bot@gmail.com>
|
Patch 1: "[net-next,v9,1/6] dt-bindings: ethernet: eswin: relax internal delay model to range-based constraints" |
|
Patch 1: "[net-next,v9,1/6] dt-bindings: ethernet: eswin: relax internal delay model to range-based constraints" |
|
Patch 1: "[net-next,v9,1/6] dt-bindings: ethernet: eswin: relax internal delay model to range-based constraints" |
|
Patch 1: "[net-next,v9,1/6] dt-bindings: ethernet: eswin: relax internal delay model to range-based constraints" |
|
Patch 1: "[net-next,v9,1/6] dt-bindings: ethernet: eswin: relax internal delay model to range-based constraints" |
|
Patch 1: "[net-next,v9,1/6] dt-bindings: ethernet: eswin: relax internal delay model to range-based constraints" |
|
Patch 1: "[net-next,v9,1/6] dt-bindings: ethernet: eswin: relax internal delay model to range-based constraints" |
|
Patch 1: "[net-next,v9,1/6] dt-bindings: ethernet: eswin: relax internal delay model to range-based constraints" |
|
Patch 1: "[net-next,v9,1/6] dt-bindings: ethernet: eswin: relax internal delay model to range-based constraints" |
|
Patch 1: "[net-next,v9,1/6] dt-bindings: ethernet: eswin: relax internal delay model to range-based constraints" |
|
Patch 1: "[net-next,v9,1/6] dt-bindings: ethernet: eswin: relax internal delay model to range-based constraints" |
|
Patch 1: "[net-next,v9,1/6] dt-bindings: ethernet: eswin: relax internal delay model to range-based constraints" |
|
Patch 2: "[net-next,v9,2/6] dt-bindings: ethernet: eswin: add EIC7700 eth1 RX clock inversion variant" |
|
Patch 2: "[net-next,v9,2/6] dt-bindings: ethernet: eswin: add EIC7700 eth1 RX clock inversion variant" |
|
Patch 2: "[net-next,v9,2/6] dt-bindings: ethernet: eswin: add EIC7700 eth1 RX clock inversion variant" |
|
Patch 2: "[net-next,v9,2/6] dt-bindings: ethernet: eswin: add EIC7700 eth1 RX clock inversion variant" |
|
Patch 2: "[net-next,v9,2/6] dt-bindings: ethernet: eswin: add EIC7700 eth1 RX clock inversion variant" |
|
Patch 2: "[net-next,v9,2/6] dt-bindings: ethernet: eswin: add EIC7700 eth1 RX clock inversion variant" |
|
Patch 2: "[net-next,v9,2/6] dt-bindings: ethernet: eswin: add EIC7700 eth1 RX clock inversion variant" |
|
Patch 2: "[net-next,v9,2/6] dt-bindings: ethernet: eswin: add EIC7700 eth1 RX clock inversion variant" |
|
Patch 2: "[net-next,v9,2/6] dt-bindings: ethernet: eswin: add EIC7700 eth1 RX clock inversion variant" |
|
Patch 2: "[net-next,v9,2/6] dt-bindings: ethernet: eswin: add EIC7700 eth1 RX clock inversion variant" |
|
Patch 2: "[net-next,v9,2/6] dt-bindings: ethernet: eswin: add EIC7700 eth1 RX clock inversion variant" |
|
Patch 4: "[net-next,v9,4/6] net: stmmac: eic7700: add support for eth1 clock inversion variant" |
|
Patch 4: "[net-next,v9,4/6] net: stmmac: eic7700: add support for eth1 clock inversion variant" |
|
Patch 4: "[net-next,v9,4/6] net: stmmac: eic7700: add support for eth1 clock inversion variant" |
|
Patch 5: "[net-next,v9,5/6] dt-bindings: mfd: syscon: add ESWIN EIC7700 compatible" |
|
Patch 5: "[net-next,v9,5/6] dt-bindings: mfd: syscon: add ESWIN EIC7700 compatible" |
|
Patch 5: "[net-next,v9,5/6] dt-bindings: mfd: syscon: add ESWIN EIC7700 compatible" |
|
Patch 5: "[net-next,v9,5/6] dt-bindings: mfd: syscon: add ESWIN EIC7700 compatible" |
|
Patch 5: "[net-next,v9,5/6] dt-bindings: mfd: syscon: add ESWIN EIC7700 compatible" |
|
Patch 5: "[net-next,v9,5/6] dt-bindings: mfd: syscon: add ESWIN EIC7700 compatible" |
|
Patch 5: "[net-next,v9,5/6] dt-bindings: mfd: syscon: add ESWIN EIC7700 compatible" |
|
Patch 5: "[net-next,v9,5/6] dt-bindings: mfd: syscon: add ESWIN EIC7700 compatible" |
|
Patch 5: "[net-next,v9,5/6] dt-bindings: mfd: syscon: add ESWIN EIC7700 compatible" |
|
Patch 5: "[net-next,v9,5/6] dt-bindings: mfd: syscon: add ESWIN EIC7700 compatible" |
|
Patch 5: "[net-next,v9,5/6] dt-bindings: mfd: syscon: add ESWIN EIC7700 compatible" |
|
Patch 5: "[net-next,v9,5/6] dt-bindings: mfd: syscon: add ESWIN EIC7700 compatible" |
|
Patch 6: "[net-next,v9,6/6] riscv: dts: eswin: eic7700-hifive-premier-p550: enable Ethernet controller" |
|
Patch 6: "[net-next,v9,6/6] riscv: dts: eswin: eic7700-hifive-premier-p550: enable Ethernet controller" |
|
Patch 6: "[net-next,v9,6/6] riscv: dts: eswin: eic7700-hifive-premier-p550: enable Ethernet controller" |
|
Patch 6: "[net-next,v9,6/6] riscv: dts: eswin: eic7700-hifive-premier-p550: enable Ethernet controller" |
|
Patch 6: "[net-next,v9,6/6] riscv: dts: eswin: eic7700-hifive-premier-p550: enable Ethernet controller" |
|
Patch 6: "[net-next,v9,6/6] riscv: dts: eswin: eic7700-hifive-premier-p550: enable Ethernet controller" |
|
Patch 6: "[net-next,v9,6/6] riscv: dts: eswin: eic7700-hifive-premier-p550: enable Ethernet controller" |
|
Patch 6: "[net-next,v9,6/6] riscv: dts: eswin: eic7700-hifive-premier-p550: enable Ethernet controller" |
|
Patch 6: "[net-next,v9,6/6] riscv: dts: eswin: eic7700-hifive-premier-p550: enable Ethernet controller" |
|
Patch 6: "[net-next,v9,6/6] riscv: dts: eswin: eic7700-hifive-premier-p550: enable Ethernet controller" |
|
Patch 6: "[net-next,v9,6/6] riscv: dts: eswin: eic7700-hifive-premier-p550: enable Ethernet controller" |
|
Patch 6: "[net-next,v9,6/6] riscv: dts: eswin: eic7700-hifive-premier-p550: enable Ethernet controller" |
4d827ba to
89be0ce
Compare
PR for series 1118672 applied to workflow__riscv__fixes
Name: net: stmmac: eic7700: add eth1 variant support and update delay bindings
URL: https://patchwork.kernel.org/project/linux-riscv/list/?series=1118672
Version: 9