* [PATCH v6 0/2] Add driver support for Eswin eic7700 SoC ethernet controller
@ 2025-09-12 5:53 weishangjuan
2025-09-12 5:56 ` [PATCH v6 1/2] dt-bindings: ethernet: eswin: Document for EIC7700 SoC weishangjuan
2025-09-12 5:57 ` [PATCH v6 2/2] ethernet: eswin: Add eic7700 ethernet driver weishangjuan
0 siblings, 2 replies; 7+ messages in thread
From: weishangjuan @ 2025-09-12 5:53 UTC (permalink / raw)
To: devicetree, andrew+netdev, davem, edumazet, kuba, pabeni, robh,
krzk+dt, conor+dt, linux-arm-kernel, mcoquelin.stm32,
alexandre.torgue, yong.liang.choong, vladimir.oltean, rmk+kernel,
faizal.abdul.rahim, prabhakar.mahadev-lad.rj, inochiama,
jan.petrous, jszhang, p.zabel, boon.khai.ng, 0x1207, netdev,
linux-kernel, linux-stm32, emil.renner.berthing
Cc: ningyu, linmin, lizhi2, pinkesh.vaghela, Shangjuan Wei
From: Shangjuan Wei <weishangjuan@eswincomputing.com>
This series depends on the config option patch [1].
[1] https://lore.kernel.org/all/20250825132427.1618089-3-pinkesh.vaghela@einfochips.com/
Updates:
Changes in v6:
- Update driver patch's commit message
- Update eswin,eic7700-eth.yaml
- Modify the description content
- Update dwmac-eic7700.c
- Move three variables from priv to local scope
- Inline eic7700_apply_delay logic directly into the probe function
- Link to v5: https://lore.kernel.org/all/20250904085913.2494-1-weishangjuan@eswincomputing.com/
Changes in v5:
- Update eswin,eic7700-eth.yaml
- Use "items" instead "enum" for clock-names
- Arrange clocks description in correct order
- Delete redundant descriptions for eswin,hsp-sp-csr property
- Update dwmac-eic7700.c
- Optimize the implementation of eic7700_ appy_delay
- Update comments and remove reg checking
- Use FIELD_PREP in eic7700_apply_delay function
- Use clk_bulk related APIs to manage clks
- Link to v4: https://lore.kernel.org/all/20250827081135.2243-1-weishangjuan@eswincomputing.com/
Changes in v4:
- Update eswin,eic7700-eth.yaml
- Modify reg:minItems:1 to reg:maxItems: 1
- Delete minItems and maxItems of clock and clock-names
- Delete phy-mode and phy-handle properties
- Add description for clock
- Add types of clock-names
- Delete descriptions for rx-internal-delay-ps and tx-internal-delay-ps
- Add enum value for rx-internal-delay-ps and tx-internal-delay-ps
- Modify description for eswin,hsp-sp-csr property
- Delete eswin,syscrg-csr and eswin,dly-hsp-reg properties
- Modify phy-mode="rgmii" to phy-mode="rgmii-id"
- Update dwmac-eic7700.c
- Remove fix_mac_speed and configure different delays for different rates
- Merge the offset of the dly register into the eswin, hsp sp csr attributes
for unified management
- Add missing Author and optimize the number of characters per
line to within 80
- Support default delay configuration and add the handling of vendor delay
configuration
- Add clks_config for pm_runtime
- Modify the attribute format, such as eswin,hsp_sp_csr to eswin,hsp-sp-csr
- Link to v3: https://lore.kernel.org/all/20250703091808.1092-1-weishangjuan@eswincomputing.com/
Changes in v3:
- Update eswin,eic7700-eth.yaml
- Modify snps,dwmac to snps,dwmac-5.20
- Remove the description of reg
- Modify the value of clock minItems and maxItems
- Modify the value of clock-names minItems and maxItems
- Add descriptions of snps,write-questions, snps,read-questions
- Add rx-internal-delay-ps and tx-internal-delay-ps properties
- Modify descriptions for custom properties, such as eswin,hsp-sp-csr
- Delete snps,axi-config property
- Add snps,fixed-burst snps,aal snps,tso properties
- Delete snps,lpi_en property
- Modify format of custom properties
- Update dwmac-eic7700.c
- Simplify drivers and remove unnecessary API and DTS attribute configurations
- Increase the mapping from tx/rx_delay_ps to private dly
- Link to v2: https://lore.kernel.org/all/aDad+8YHEFdOIs38@mev-dev.igk.intel.com/
Changes in v2:
- Update eswin,eic7700-eth.yaml
- Add snps,dwmac in binding file
- Modify the description of reg
- Modify the number of clock-names
- Change the names of reset-names and phy-mode
- Add description for custom properties, such as eswin,hsp_sp_csr
- Delete snps,blen snps,rd_osr_lmt snps,wr_osr_lmt properties
- Updat dwmac-eic7700.c
- Remove the code related to PHY LED configuration from the MAC driver
- Adjust the code format and driver interfaces, such as replacing kzalloc
with devm_kzalloc, etc.
- Use phylib instead of the GPIO API in the driver to implement the PHY
reset function
- Link to v1: https://lore.kernel.org/all/20250516010849.784-1-weishangjuan@eswincomputing.com/
Shangjuan Wei (2):
dt-bindings: ethernet: eswin: Document for EIC7700 SoC
ethernet: eswin: Add eic7700 ethernet driver
.../bindings/net/eswin,eic7700-eth.yaml | 128 ++++++++++
drivers/net/ethernet/stmicro/stmmac/Kconfig | 11 +
drivers/net/ethernet/stmicro/stmmac/Makefile | 1 +
.../ethernet/stmicro/stmmac/dwmac-eic7700.c | 226 ++++++++++++++++++
4 files changed, 366 insertions(+)
create mode 100644 Documentation/devicetree/bindings/net/eswin,eic7700-eth.yaml
create mode 100644 drivers/net/ethernet/stmicro/stmmac/dwmac-eic7700.c
--
2.17.1
^ permalink raw reply [flat|nested] 7+ messages in thread
* [PATCH v6 1/2] dt-bindings: ethernet: eswin: Document for EIC7700 SoC
2025-09-12 5:53 [PATCH v6 0/2] Add driver support for Eswin eic7700 SoC ethernet controller weishangjuan
@ 2025-09-12 5:56 ` weishangjuan
2025-09-12 13:14 ` Krzysztof Kozlowski
2025-09-12 5:57 ` [PATCH v6 2/2] ethernet: eswin: Add eic7700 ethernet driver weishangjuan
1 sibling, 1 reply; 7+ messages in thread
From: weishangjuan @ 2025-09-12 5:56 UTC (permalink / raw)
To: devicetree, andrew+netdev, davem, edumazet, kuba, pabeni, robh,
krzk+dt, conor+dt, linux-arm-kernel, mcoquelin.stm32,
alexandre.torgue, yong.liang.choong, vladimir.oltean, rmk+kernel,
faizal.abdul.rahim, prabhakar.mahadev-lad.rj, inochiama,
jan.petrous, jszhang, p.zabel, boon.khai.ng, 0x1207, netdev,
linux-kernel, linux-stm32, emil.renner.berthing
Cc: ningyu, linmin, lizhi2, pinkesh.vaghela, Shangjuan Wei
From: Shangjuan Wei <weishangjuan@eswincomputing.com>
Add ESWIN EIC7700 Ethernet controller, supporting clock
configuration, delay adjustment and speed adaptive functions.
Signed-off-by: Zhi Li <lizhi2@eswincomputing.com>
Signed-off-by: Shangjuan Wei <weishangjuan@eswincomputing.com>
---
.../bindings/net/eswin,eic7700-eth.yaml | 128 ++++++++++++++++++
1 file changed, 128 insertions(+)
create mode 100644 Documentation/devicetree/bindings/net/eswin,eic7700-eth.yaml
diff --git a/Documentation/devicetree/bindings/net/eswin,eic7700-eth.yaml b/Documentation/devicetree/bindings/net/eswin,eic7700-eth.yaml
new file mode 100644
index 000000000000..9771fed9604e
--- /dev/null
+++ b/Documentation/devicetree/bindings/net/eswin,eic7700-eth.yaml
@@ -0,0 +1,128 @@
+# SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause)
+%YAML 1.2
+---
+$id: http://devicetree.org/schemas/net/eswin,eic7700-eth.yaml#
+$schema: http://devicetree.org/meta-schemas/core.yaml#
+
+title: Eswin EIC7700 SOC Eth Controller
+
+maintainers:
+ - Shuang Liang <liangshuang@eswincomputing.com>
+ - Zhi Li <lizhi2@eswincomputing.com>
+ - Shangjuan Wei <weishangjuan@eswincomputing.com>
+
+description:
+ Platform glue layer implementation for STMMAC Ethernet driver.
+
+select:
+ properties:
+ compatible:
+ contains:
+ enum:
+ - eswin,eic7700-qos-eth
+ required:
+ - compatible
+
+allOf:
+ - $ref: snps,dwmac.yaml#
+
+properties:
+ compatible:
+ items:
+ - const: eswin,eic7700-qos-eth
+ - const: snps,dwmac-5.20
+
+ reg:
+ maxItems: 1
+
+ interrupts:
+ maxItems: 1
+
+ interrupt-names:
+ const: macirq
+
+ clocks:
+ items:
+ - description: AXI clock
+ - description: Configuration clock
+ - description: GMAC main clock
+ - description: Tx clock
+
+ clock-names:
+ items:
+ - const: axi
+ - const: cfg
+ - const: stmmaceth
+ - const: tx
+
+ resets:
+ maxItems: 1
+
+ reset-names:
+ items:
+ - const: stmmaceth
+
+ rx-internal-delay-ps:
+ enum: [0, 200, 600, 1200, 1600, 1800, 2000, 2200, 2400]
+
+ tx-internal-delay-ps:
+ enum: [0, 200, 600, 1200, 1600, 1800, 2000, 2200, 2400]
+
+ eswin,hsp-sp-csr:
+ $ref: /schemas/types.yaml#/definitions/phandle-array
+ items:
+ - description: Phandle to HSP(High-Speed Peripheral) device
+ - description: Offset of phy control register for internal
+ or external clock selection
+ - description: Offset of AXI clock controller Low-Power request
+ register
+ - description: Offset of register controlling TX/RX clock delay
+ description: |
+ High-Speed Peripheral device needed to configure clock selection,
+ clock low-power mode and clock delay.
+
+required:
+ - compatible
+ - reg
+ - clocks
+ - clock-names
+ - interrupts
+ - interrupt-names
+ - phy-mode
+ - resets
+ - reset-names
+ - rx-internal-delay-ps
+ - tx-internal-delay-ps
+ - eswin,hsp-sp-csr
+
+unevaluatedProperties: false
+
+examples:
+ - |
+ ethernet@50400000 {
+ compatible = "eswin,eic7700-qos-eth", "snps,dwmac-5.20";
+ reg = <0x50400000 0x10000>;
+ clocks = <&d0_clock 186>, <&d0_clock 171>, <&d0_clock 40>,
+ <&d0_clock 193>;
+ clock-names = "axi", "cfg", "stmmaceth", "tx";
+ interrupt-parent = <&plic>;
+ interrupts = <61>;
+ interrupt-names = "macirq";
+ phy-mode = "rgmii-id";
+ phy-handle = <&phy0>;
+ resets = <&reset 95>;
+ 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>;
+ snps,aal;
+ snps,fixed-burst;
+ snps,tso;
+ stmmac_axi_setup: stmmac-axi-config {
+ snps,blen = <0 0 0 0 16 8 4>;
+ snps,rd_osr_lmt = <2>;
+ snps,wr_osr_lmt = <2>;
+ };
+ };
--
2.17.1
^ permalink raw reply related [flat|nested] 7+ messages in thread
* [PATCH v6 2/2] ethernet: eswin: Add eic7700 ethernet driver
2025-09-12 5:53 [PATCH v6 0/2] Add driver support for Eswin eic7700 SoC ethernet controller weishangjuan
2025-09-12 5:56 ` [PATCH v6 1/2] dt-bindings: ethernet: eswin: Document for EIC7700 SoC weishangjuan
@ 2025-09-12 5:57 ` weishangjuan
2025-09-12 20:30 ` Andrew Lunn
1 sibling, 1 reply; 7+ messages in thread
From: weishangjuan @ 2025-09-12 5:57 UTC (permalink / raw)
To: devicetree, andrew+netdev, davem, edumazet, kuba, pabeni, robh,
krzk+dt, conor+dt, linux-arm-kernel, mcoquelin.stm32,
alexandre.torgue, yong.liang.choong, vladimir.oltean, rmk+kernel,
faizal.abdul.rahim, prabhakar.mahadev-lad.rj, inochiama,
jan.petrous, jszhang, p.zabel, boon.khai.ng, 0x1207, netdev,
linux-kernel, linux-stm32, emil.renner.berthing
Cc: ningyu, linmin, lizhi2, pinkesh.vaghela, Shangjuan Wei
From: Shangjuan Wei <weishangjuan@eswincomputing.com>
Add Ethernet controller support for Eswin's eic7700 SoC. The driver
implements hardware initialization, clock configuration, delay
adjustment functions based on DWC Ethernet controller, and supports
device tree configuration and platform driver integration.
Signed-off-by: Zhi Li <lizhi2@eswincomputing.com>
Signed-off-by: Shangjuan Wei <weishangjuan@eswincomputing.com>
---
drivers/net/ethernet/stmicro/stmmac/Kconfig | 11 +
drivers/net/ethernet/stmicro/stmmac/Makefile | 1 +
.../ethernet/stmicro/stmmac/dwmac-eic7700.c | 226 ++++++++++++++++++
3 files changed, 238 insertions(+)
create mode 100644 drivers/net/ethernet/stmicro/stmmac/dwmac-eic7700.c
diff --git a/drivers/net/ethernet/stmicro/stmmac/Kconfig b/drivers/net/ethernet/stmicro/stmmac/Kconfig
index 67fa879b1e52..a13b15ce1abd 100644
--- a/drivers/net/ethernet/stmicro/stmmac/Kconfig
+++ b/drivers/net/ethernet/stmicro/stmmac/Kconfig
@@ -67,6 +67,17 @@ config DWMAC_ANARION
This selects the Anarion SoC glue layer support for the stmmac driver.
+config DWMAC_EIC7700
+ tristate "Support for Eswin eic7700 ethernet driver"
+ select CRC32
+ select MII
+ depends on OF && HAS_DMA && ARCH_ESWIN || COMPILE_TEST
+ help
+ This driver supports the Eswin EIC7700 Ethernet controller,
+ which integrates Synopsys DesignWare QoS features. It enables
+ high-speed networking with DMA acceleration and is optimized
+ for embedded systems.
+
config DWMAC_INGENIC
tristate "Ingenic MAC support"
default MACH_INGENIC
diff --git a/drivers/net/ethernet/stmicro/stmmac/Makefile b/drivers/net/ethernet/stmicro/stmmac/Makefile
index b591d93f8503..f4ec5fc16571 100644
--- a/drivers/net/ethernet/stmicro/stmmac/Makefile
+++ b/drivers/net/ethernet/stmicro/stmmac/Makefile
@@ -14,6 +14,7 @@ stmmac-$(CONFIG_STMMAC_SELFTESTS) += stmmac_selftests.o
# Ordering matters. Generic driver must be last.
obj-$(CONFIG_STMMAC_PLATFORM) += stmmac-platform.o
obj-$(CONFIG_DWMAC_ANARION) += dwmac-anarion.o
+obj-$(CONFIG_DWMAC_EIC7700) += dwmac-eic7700.o
obj-$(CONFIG_DWMAC_INGENIC) += dwmac-ingenic.o
obj-$(CONFIG_DWMAC_IPQ806X) += dwmac-ipq806x.o
obj-$(CONFIG_DWMAC_LPC18XX) += dwmac-lpc18xx.o
diff --git a/drivers/net/ethernet/stmicro/stmmac/dwmac-eic7700.c b/drivers/net/ethernet/stmicro/stmmac/dwmac-eic7700.c
new file mode 100644
index 000000000000..ca297621fcf1
--- /dev/null
+++ b/drivers/net/ethernet/stmicro/stmmac/dwmac-eic7700.c
@@ -0,0 +1,226 @@
+// SPDX-License-Identifier: GPL-2.0
+/*
+ * Eswin DWC Ethernet linux driver
+ *
+ * Copyright 2025, Beijing ESWIN Computing Technology Co., Ltd.
+ *
+ * Authors:
+ * Zhi Li <lizhi2@eswincomputing.com>
+ * Shuang Liang <liangshuang@eswincomputing.com>
+ * Shangjuan Wei <weishangjuan@eswincomputing.com>
+ */
+
+#include <linux/platform_device.h>
+#include <linux/mfd/syscon.h>
+#include <linux/stmmac.h>
+#include <linux/regmap.h>
+#include <linux/of.h>
+
+#include "stmmac_platform.h"
+
+/* eth_phy_ctrl_offset eth0:0x100 */
+#define EIC7700_ETH_TX_CLK_SEL BIT(16)
+#define EIC7700_ETH_PHY_INTF_SELI BIT(0)
+
+/* eth_axi_lp_ctrl_offset eth0:0x108 */
+#define EIC7700_ETH_CSYSREQ_VAL BIT(0)
+
+/*
+ * TX/RX Clock Delay Bit Masks:
+ * - TX Delay: bits [14:8] — TX_CLK delay (unit: 0.1ns per bit)
+ * - RX Delay: bits [30:24] — RX_CLK delay (unit: 0.1ns per bit)
+ */
+#define EIC7700_ETH_TX_ADJ_DELAY GENMASK(14, 8)
+#define EIC7700_ETH_RX_ADJ_DELAY GENMASK(30, 24)
+
+#define EIC7700_MAX_DELAY_UNIT 0x7F
+
+static const char * const eic7700_clk_names[] = {
+ "tx", "axi", "cfg",
+};
+
+struct eic7700_qos_priv {
+ struct plat_stmmacenet_data *plat_dat;
+ struct device *dev;
+};
+
+static int eic7700_clks_config(void *priv, bool enabled)
+{
+ struct eic7700_qos_priv *dwc = (struct eic7700_qos_priv *)priv;
+ struct plat_stmmacenet_data *plat = dwc->plat_dat;
+ int ret = 0;
+
+ if (enabled)
+ ret = clk_bulk_prepare_enable(plat->num_clks, plat->clks);
+ else
+ clk_bulk_disable_unprepare(plat->num_clks, plat->clks);
+
+ return ret;
+}
+
+static int eic7700_dwmac_probe(struct platform_device *pdev)
+{
+ struct plat_stmmacenet_data *plat_dat;
+ struct stmmac_resources stmmac_res;
+ struct eic7700_qos_priv *dwc_priv;
+ struct regmap *eic7700_hsp_regmap;
+ u32 eth_axi_lp_ctrl_offset;
+ u32 eth_phy_ctrl_offset;
+ u32 eth_phy_ctrl_regset;
+ u32 eth_rxd_dly_offset;
+ u32 eth_dly_param = 0;
+ u32 delay_ps;
+ int i, ret;
+
+ ret = stmmac_get_platform_resources(pdev, &stmmac_res);
+ if (ret)
+ return dev_err_probe(&pdev->dev, ret,
+ "failed to get resources\n");
+
+ plat_dat = devm_stmmac_probe_config_dt(pdev, stmmac_res.mac);
+ if (IS_ERR(plat_dat))
+ return dev_err_probe(&pdev->dev, PTR_ERR(plat_dat),
+ "dt configuration failed\n");
+
+ dwc_priv = devm_kzalloc(&pdev->dev, sizeof(*dwc_priv), GFP_KERNEL);
+ if (!dwc_priv)
+ return -ENOMEM;
+
+ dwc_priv->dev = &pdev->dev;
+
+ /* Read rx-internal-delay-ps and update rx_clk delay */
+ if (!of_property_read_u32(pdev->dev.of_node,
+ "rx-internal-delay-ps", &delay_ps)) {
+ u32 val = min(delay_ps / 100, EIC7700_MAX_DELAY_UNIT);
+
+ eth_dly_param &= ~EIC7700_ETH_RX_ADJ_DELAY;
+ eth_dly_param |= FIELD_PREP(EIC7700_ETH_RX_ADJ_DELAY, val);
+ } else {
+ dev_warn(&pdev->dev, "can't get rx-internal-delay-ps\n");
+ }
+
+ /* Read tx-internal-delay-ps and update tx_clk delay */
+ if (!of_property_read_u32(pdev->dev.of_node,
+ "tx-internal-delay-ps", &delay_ps)) {
+ u32 val = min(delay_ps / 100, EIC7700_MAX_DELAY_UNIT);
+
+ eth_dly_param &= ~EIC7700_ETH_TX_ADJ_DELAY;
+ eth_dly_param |= FIELD_PREP(EIC7700_ETH_TX_ADJ_DELAY, val);
+ } else {
+ dev_warn(&pdev->dev, "can't get tx-internal-delay-ps\n");
+ }
+
+ eic7700_hsp_regmap = syscon_regmap_lookup_by_phandle(pdev->dev.of_node,
+ "eswin,hsp-sp-csr");
+ if (IS_ERR(eic7700_hsp_regmap))
+ return dev_err_probe(&pdev->dev,
+ PTR_ERR(eic7700_hsp_regmap),
+ "Failed to get hsp-sp-csr regmap\n");
+
+ ret = of_property_read_u32_index(pdev->dev.of_node,
+ "eswin,hsp-sp-csr",
+ 1, ð_phy_ctrl_offset);
+ if (ret)
+ return dev_err_probe(&pdev->dev,
+ ret,
+ "can't get eth_phy_ctrl_offset\n");
+
+ regmap_read(eic7700_hsp_regmap, eth_phy_ctrl_offset,
+ ð_phy_ctrl_regset);
+ eth_phy_ctrl_regset |=
+ (EIC7700_ETH_TX_CLK_SEL | EIC7700_ETH_PHY_INTF_SELI);
+ regmap_write(eic7700_hsp_regmap, eth_phy_ctrl_offset,
+ eth_phy_ctrl_regset);
+
+ ret = of_property_read_u32_index(pdev->dev.of_node,
+ "eswin,hsp-sp-csr",
+ 2, ð_axi_lp_ctrl_offset);
+ if (ret)
+ return dev_err_probe(&pdev->dev,
+ ret,
+ "can't get eth_axi_lp_ctrl_offset\n");
+
+ regmap_write(eic7700_hsp_regmap, eth_axi_lp_ctrl_offset,
+ EIC7700_ETH_CSYSREQ_VAL);
+
+ ret = of_property_read_u32_index(pdev->dev.of_node,
+ "eswin,hsp-sp-csr",
+ 3, ð_rxd_dly_offset);
+ if (ret)
+ return dev_err_probe(&pdev->dev,
+ ret,
+ "can't get eth_rxd_dly_offset\n");
+
+ regmap_write(eic7700_hsp_regmap, eth_rxd_dly_offset,
+ eth_dly_param);
+
+ plat_dat->num_clks = ARRAY_SIZE(eic7700_clk_names);
+ plat_dat->clks = devm_kcalloc(&pdev->dev,
+ plat_dat->num_clks,
+ sizeof(*plat_dat->clks),
+ GFP_KERNEL);
+ if (!plat_dat->clks)
+ return -ENOMEM;
+
+ for (i = 0; i < ARRAY_SIZE(eic7700_clk_names); i++)
+ plat_dat->clks[i].id = eic7700_clk_names[i];
+
+ ret = devm_clk_bulk_get_optional(&pdev->dev,
+ plat_dat->num_clks,
+ plat_dat->clks);
+ if (ret)
+ return dev_err_probe(&pdev->dev,
+ ret,
+ "Failed to get clocks\n");
+
+ plat_dat->clk_tx_i = stmmac_pltfr_find_clk(plat_dat, "tx");
+ plat_dat->set_clk_tx_rate = stmmac_set_clk_tx_rate;
+ plat_dat->bsp_priv = dwc_priv;
+ plat_dat->clks_config = eic7700_clks_config;
+ dwc_priv->plat_dat = plat_dat;
+
+ ret = eic7700_clks_config(dwc_priv, true);
+ if (ret)
+ return dev_err_probe(&pdev->dev,
+ ret,
+ "error enable clock\n");
+
+ ret = stmmac_dvr_probe(&pdev->dev, plat_dat, &stmmac_res);
+ if (ret) {
+ eic7700_clks_config(dwc_priv, false);
+ return dev_err_probe(&pdev->dev,
+ ret,
+ "Failed to driver probe\n");
+ }
+
+ return ret;
+}
+
+static void eic7700_dwmac_remove(struct platform_device *pdev)
+{
+ struct eic7700_qos_priv *dwc_priv = get_stmmac_bsp_priv(&pdev->dev);
+
+ stmmac_pltfr_remove(pdev);
+ eic7700_clks_config(dwc_priv, false);
+}
+
+static const struct of_device_id eic7700_dwmac_match[] = {
+ { .compatible = "eswin,eic7700-qos-eth" },
+ { }
+};
+MODULE_DEVICE_TABLE(of, eic7700_dwmac_match);
+
+static struct platform_driver eic7700_dwmac_driver = {
+ .probe = eic7700_dwmac_probe,
+ .remove = eic7700_dwmac_remove,
+ .driver = {
+ .name = "eic7700-eth-dwmac",
+ .pm = &stmmac_pltfr_pm_ops,
+ .of_match_table = eic7700_dwmac_match,
+ },
+};
+module_platform_driver(eic7700_dwmac_driver);
+
+MODULE_AUTHOR("Zhi Li <lizhi2@eswincomputing.com>");
+MODULE_AUTHOR("Shuang Liang <liangshuang@eswincomputing.com>");
+MODULE_AUTHOR("Shangjuan Wei <weishangjuan@eswincomputing.com>");
+MODULE_DESCRIPTION("Eswin eic7700 qos ethernet driver");
+MODULE_LICENSE("GPL");
--
2.17.1
^ permalink raw reply related [flat|nested] 7+ messages in thread
* Re: [PATCH v6 1/2] dt-bindings: ethernet: eswin: Document for EIC7700 SoC
2025-09-12 5:56 ` [PATCH v6 1/2] dt-bindings: ethernet: eswin: Document for EIC7700 SoC weishangjuan
@ 2025-09-12 13:14 ` Krzysztof Kozlowski
2025-09-12 13:18 ` Krzysztof Kozlowski
2025-09-15 9:50 ` 韦尚娟
0 siblings, 2 replies; 7+ messages in thread
From: Krzysztof Kozlowski @ 2025-09-12 13:14 UTC (permalink / raw)
To: weishangjuan, devicetree, andrew+netdev, davem, edumazet, kuba,
pabeni, robh, krzk+dt, conor+dt, linux-arm-kernel,
mcoquelin.stm32, alexandre.torgue, yong.liang.choong,
vladimir.oltean, rmk+kernel, faizal.abdul.rahim,
prabhakar.mahadev-lad.rj, inochiama, jan.petrous, jszhang,
p.zabel, boon.khai.ng, 0x1207, netdev, linux-kernel, linux-stm32,
emil.renner.berthing
Cc: ningyu, linmin, lizhi2, pinkesh.vaghela
On 12/09/2025 07:56, weishangjuan@eswincomputing.com wrote:
> From: Shangjuan Wei <weishangjuan@eswincomputing.com>
>
> Add ESWIN EIC7700 Ethernet controller, supporting clock
> configuration, delay adjustment and speed adaptive functions.
>
> Signed-off-by: Zhi Li <lizhi2@eswincomputing.com>
> Signed-off-by: Shangjuan Wei <weishangjuan@eswincomputing.com>
There is no explanation of dropping the tag. Please read CAREFULLY
submitting patches.
Comparing also fails:
b4 diff '<20250912055352.2832-1-weishangjuan@eswincomputing.com>'
Using cached copy of the lookup
---
Analyzing 55 messages in the thread
Preparing fake-am for v6: dt-bindings: ethernet: eswin: Document for
EIC7700 SoC
ERROR: Could not fake-am version v6
---
Could not create fake-am range for upper series v6
I am not going to review twice, so you can drop my tag again without
explanation.
Best regards,
Krzysztof
^ permalink raw reply [flat|nested] 7+ messages in thread
* Re: [PATCH v6 1/2] dt-bindings: ethernet: eswin: Document for EIC7700 SoC
2025-09-12 13:14 ` Krzysztof Kozlowski
@ 2025-09-12 13:18 ` Krzysztof Kozlowski
2025-09-15 9:50 ` 韦尚娟
1 sibling, 0 replies; 7+ messages in thread
From: Krzysztof Kozlowski @ 2025-09-12 13:18 UTC (permalink / raw)
To: weishangjuan, devicetree, andrew+netdev, davem, edumazet, kuba,
pabeni, robh, krzk+dt, conor+dt, linux-arm-kernel,
mcoquelin.stm32, alexandre.torgue, yong.liang.choong,
vladimir.oltean, rmk+kernel, faizal.abdul.rahim,
prabhakar.mahadev-lad.rj, inochiama, jan.petrous, jszhang,
p.zabel, boon.khai.ng, 0x1207, netdev, linux-kernel, linux-stm32,
emil.renner.berthing
Cc: ningyu, linmin, lizhi2, pinkesh.vaghela
On 12/09/2025 15:14, Krzysztof Kozlowski wrote:
> On 12/09/2025 07:56, weishangjuan@eswincomputing.com wrote:
>> From: Shangjuan Wei <weishangjuan@eswincomputing.com>
>>
>> Add ESWIN EIC7700 Ethernet controller, supporting clock
>> configuration, delay adjustment and speed adaptive functions.
>>
>> Signed-off-by: Zhi Li <lizhi2@eswincomputing.com>
>> Signed-off-by: Shangjuan Wei <weishangjuan@eswincomputing.com>
>
> There is no explanation of dropping the tag. Please read CAREFULLY
> submitting patches.
>
> Comparing also fails:
>
> b4 diff '<20250912055352.2832-1-weishangjuan@eswincomputing.com>'
> Using cached copy of the lookup
> ---
> Analyzing 55 messages in the thread
> Preparing fake-am for v6: dt-bindings: ethernet: eswin: Document for
> EIC7700 SoC
> ERROR: Could not fake-am version v6
> ---
> Could not create fake-am range for upper series v6
Ah, that because your patchset is broken.
Please start using b4, which would solve such problems. Otherwise you
just waste your own and ours time, because this cannot be applied and
cannot be tested.
>
> I am not going to review twice, so you can drop my tag again without
> explanation.
Best regards,
Krzysztof
^ permalink raw reply [flat|nested] 7+ messages in thread
* Re: [PATCH v6 2/2] ethernet: eswin: Add eic7700 ethernet driver
2025-09-12 5:57 ` [PATCH v6 2/2] ethernet: eswin: Add eic7700 ethernet driver weishangjuan
@ 2025-09-12 20:30 ` Andrew Lunn
0 siblings, 0 replies; 7+ messages in thread
From: Andrew Lunn @ 2025-09-12 20:30 UTC (permalink / raw)
To: weishangjuan
Cc: devicetree, andrew+netdev, davem, edumazet, kuba, pabeni, robh,
krzk+dt, conor+dt, linux-arm-kernel, mcoquelin.stm32,
alexandre.torgue, yong.liang.choong, vladimir.oltean, rmk+kernel,
faizal.abdul.rahim, prabhakar.mahadev-lad.rj, inochiama,
jan.petrous, jszhang, p.zabel, boon.khai.ng, 0x1207, netdev,
linux-kernel, linux-stm32, emil.renner.berthing, ningyu, linmin,
lizhi2, pinkesh.vaghela
> + /* Read rx-internal-delay-ps and update rx_clk delay */
> + if (!of_property_read_u32(pdev->dev.of_node,
> + "rx-internal-delay-ps", &delay_ps)) {
> + u32 val = min(delay_ps / 100, EIC7700_MAX_DELAY_UNIT);
> +
> + eth_dly_param &= ~EIC7700_ETH_RX_ADJ_DELAY;
> + eth_dly_param |= FIELD_PREP(EIC7700_ETH_RX_ADJ_DELAY, val);
> + } else {
> + dev_warn(&pdev->dev, "can't get rx-internal-delay-ps\n");
> + }
The binding specifies the X-internal-delay-ps values are required. So
this should be dev_err_probe() and return -EINVAL to stop the probe.
Andrew
^ permalink raw reply [flat|nested] 7+ messages in thread
* Re: Re: [PATCH v6 1/2] dt-bindings: ethernet: eswin: Document for EIC7700 SoC
2025-09-12 13:14 ` Krzysztof Kozlowski
2025-09-12 13:18 ` Krzysztof Kozlowski
@ 2025-09-15 9:50 ` 韦尚娟
1 sibling, 0 replies; 7+ messages in thread
From: 韦尚娟 @ 2025-09-15 9:50 UTC (permalink / raw)
To: Krzysztof Kozlowski
Cc: devicetree, andrew+netdev, davem, edumazet, kuba, pabeni, robh,
krzk+dt, conor+dt, linux-arm-kernel, mcoquelin.stm32,
alexandre.torgue, yong.liang.choong, vladimir.oltean, rmk+kernel,
faizal.abdul.rahim, prabhakar.mahadev-lad.rj, inochiama,
jan.petrous, jszhang, p.zabel, boon.khai.ng, 0x1207, netdev,
linux-kernel, linux-stm32, emil.renner.berthing, ningyu, linmin,
lizhi2, pinkesh.vaghela
Dear Krzysztof Kozlowski,
I am writing to sincerely apologize for omitting your "Reviewed-by" tag
in the v6 patch series without providing an explanation. This was an oversight
on my part, and I truly regret any inconvenience or frustration it has caused.
The reason why I didn't add tags is that I made modifications to the description
in the YAML file. Due to these changes that alter the content you have previously
viewed, I believe these modifications may require a re examination and therefore
should not be retained without your confirmation.
I understand that when submitting the patch, I should clearly state the reason.
I have carefully read the submission guidelines and will ensure full compliance
with the process in all future contributions, including proper use of b4 and clear
communication of changes.
Thank you for your patience and guidance.
Best regards,
Shangjuan Wei
> -----原始邮件-----
> 发件人: "Krzysztof Kozlowski" <krzk@kernel.org>
> 发送时间:2025-09-12 21:14:24 (星期五)
> 收件人: weishangjuan@eswincomputing.com, devicetree@vger.kernel.org, andrew+netdev@lunn.ch, davem@davemloft.net, edumazet@google.com, kuba@kernel.org, pabeni@redhat.com, robh@kernel.org, krzk+dt@kernel.org, conor+dt@kernel.org, linux-arm-kernel@lists.infradead.org, mcoquelin.stm32@gmail.com, alexandre.torgue@foss.st.com, yong.liang.choong@linux.intel.com, vladimir.oltean@nxp.com, rmk+kernel@armlinux.org.uk, faizal.abdul.rahim@linux.intel.com, prabhakar.mahadev-lad.rj@bp.renesas.com, inochiama@gmail.com, jan.petrous@oss.nxp.com, jszhang@kernel.org, p.zabel@pengutronix.de, boon.khai.ng@altera.com, 0x1207@gmail.com, netdev@vger.kernel.org, linux-kernel@vger.kernel.org, linux-stm32@st-md-mailman.stormreply.com, emil.renner.berthing@canonical.com
> 抄送: ningyu@eswincomputing.com, linmin@eswincomputing.com, lizhi2@eswincomputing.com, pinkesh.vaghela@einfochips.com
> 主题: Re: [PATCH v6 1/2] dt-bindings: ethernet: eswin: Document for EIC7700 SoC
>
> On 12/09/2025 07:56, weishangjuan@eswincomputing.com wrote:
> > From: Shangjuan Wei <weishangjuan@eswincomputing.com>
> >
> > Add ESWIN EIC7700 Ethernet controller, supporting clock
> > configuration, delay adjustment and speed adaptive functions.
> >
> > Signed-off-by: Zhi Li <lizhi2@eswincomputing.com>
> > Signed-off-by: Shangjuan Wei <weishangjuan@eswincomputing.com>
>
> There is no explanation of dropping the tag. Please read CAREFULLY
> submitting patches.
>
> Comparing also fails:
>
> b4 diff '<20250912055352.2832-1-weishangjuan@eswincomputing.com>'
> Using cached copy of the lookup
> ---
> Analyzing 55 messages in the thread
> Preparing fake-am for v6: dt-bindings: ethernet: eswin: Document for
> EIC7700 SoC
> ERROR: Could not fake-am version v6
> ---
> Could not create fake-am range for upper series v6
>
> I am not going to review twice, so you can drop my tag again without
> explanation.
>
> Best regards,
> Krzysztof
^ permalink raw reply [flat|nested] 7+ messages in thread
end of thread, other threads:[~2025-09-15 9:50 UTC | newest]
Thread overview: 7+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2025-09-12 5:53 [PATCH v6 0/2] Add driver support for Eswin eic7700 SoC ethernet controller weishangjuan
2025-09-12 5:56 ` [PATCH v6 1/2] dt-bindings: ethernet: eswin: Document for EIC7700 SoC weishangjuan
2025-09-12 13:14 ` Krzysztof Kozlowski
2025-09-12 13:18 ` Krzysztof Kozlowski
2025-09-15 9:50 ` 韦尚娟
2025-09-12 5:57 ` [PATCH v6 2/2] ethernet: eswin: Add eic7700 ethernet driver weishangjuan
2025-09-12 20:30 ` Andrew Lunn
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).