Add the SiFive FU740-C000 ethernet controller compatible string to the Cadence MACB binding documentation. The FU740 ethernet controller uses the same GEMGXL management block as the FU540, which is tightly coupled with the Cadence MACB IP. This follows the SiFive IP versioning scheme which requires SoC-specific compatible strings for proper hardware identification. Signed-off-by: Max Hsu --- Documentation/devicetree/bindings/net/cdns,macb.yaml | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/Documentation/devicetree/bindings/net/cdns,macb.yaml b/Documentation/devicetree/bindings/net/cdns,macb.yaml index cb14c35ba996..b46dde1da170 100644 --- a/Documentation/devicetree/bindings/net/cdns,macb.yaml +++ b/Documentation/devicetree/bindings/net/cdns,macb.yaml @@ -63,6 +63,7 @@ properties: - mobileye,eyeq5-gem # Mobileye EyeQ5 SoCs - raspberrypi,rp1-gem # Raspberry Pi RP1 gigabit ethernet interface - sifive,fu540-c000-gem # SiFive FU540-C000 SoC + - sifive,fu740-c000-gem # SiFive FU740-C000 SoC - items: - enum: @@ -74,7 +75,7 @@ properties: minItems: 1 items: - description: Basic register set - - description: GEMGXL Management block registers on SiFive FU540-C000 SoC + - description: GEMGXL Management block registers on SiFive FU540/FU740 SoCs interrupts: minItems: 1 @@ -181,7 +182,9 @@ allOf: properties: compatible: contains: - const: sifive,fu540-c000-gem + enum: + - sifive,fu540-c000-gem + - sifive,fu740-c000-gem then: properties: reg: -- 2.43.0 Add the SiFive FU740-C000 PLIC compatible string to the binding documentation. This follows the SiFive IP versioning scheme which requires SoC-specific compatible strings for proper hardware identification, even when the IP blocks are functionally identical. Signed-off-by: Max Hsu --- .../devicetree/bindings/interrupt-controller/sifive,plic-1.0.0.yaml | 1 + 1 file changed, 1 insertion(+) diff --git a/Documentation/devicetree/bindings/interrupt-controller/sifive,plic-1.0.0.yaml b/Documentation/devicetree/bindings/interrupt-controller/sifive,plic-1.0.0.yaml index e0267223887e..351d26ab1956 100644 --- a/Documentation/devicetree/bindings/interrupt-controller/sifive,plic-1.0.0.yaml +++ b/Documentation/devicetree/bindings/interrupt-controller/sifive,plic-1.0.0.yaml @@ -63,6 +63,7 @@ properties: - eswin,eic7700-plic - microchip,pic64gx-plic - sifive,fu540-c000-plic + - sifive,fu740-c000-plic - spacemit,k1-plic - starfive,jh7100-plic - starfive,jh7110-plic -- 2.43.0 Add a distinct configuration for the SiFive FU740-C000 ethernet controller to comply with the SiFive IP versioning guidelines. The FU740 ethernet controller uses the same management IP block as the FU540, which is tightly coupled with the Cadence MACB IP and manages boundary signals. To avoid code duplication while maintaining distinct SoC identification, this patch: - Renames sifive_fu540_macb_mgmt to sifive_macb_mgmt to reflect that it's shared between FU540 and FU740 - Adds a fu740_c000_config structure that reuses the FU540 initialization functions - Follows the established pattern in this driver where multiple SoC configs share the same init functions Signed-off-by: Max Hsu --- drivers/net/ethernet/cadence/macb_main.c | 17 ++++++++++++++--- 1 file changed, 14 insertions(+), 3 deletions(-) diff --git a/drivers/net/ethernet/cadence/macb_main.c b/drivers/net/ethernet/cadence/macb_main.c index 43cd013bb70e..10d049391a73 100644 --- a/drivers/net/ethernet/cadence/macb_main.c +++ b/drivers/net/ethernet/cadence/macb_main.c @@ -39,8 +39,8 @@ #include #include "macb.h" -/* This structure is only used for MACB on SiFive FU540 devices */ -struct sifive_fu540_macb_mgmt { +/* This structure is used for MACB on SiFive FU540/FU740 devices */ +struct sifive_macb_mgmt { void __iomem *reg; unsigned long rate; struct clk_hw hw; @@ -4650,7 +4650,7 @@ static const struct macb_usrio_config macb_default_usrio = { /* max number of receive buffers */ #define AT91ETHER_MAX_RX_DESCR 9 -static struct sifive_fu540_macb_mgmt *mgmt; +static struct sifive_macb_mgmt *mgmt; static int at91ether_alloc_coherent(struct macb *lp) { @@ -5236,6 +5236,16 @@ static const struct macb_config fu540_c000_config = { .usrio = &macb_default_usrio, }; +static const struct macb_config fu740_c000_config = { + .caps = MACB_CAPS_GIGABIT_MODE_AVAILABLE | MACB_CAPS_JUMBO | + MACB_CAPS_GEM_HAS_PTP, + .dma_burst_length = 16, + .clk_init = fu540_c000_clk_init, + .init = fu540_c000_init, + .jumbo_max_len = 10240, + .usrio = &macb_default_usrio, +}; + static const struct macb_config at91sam9260_config = { .caps = MACB_CAPS_USRIO_HAS_CLKEN | MACB_CAPS_USRIO_DEFAULT_IS_MII_GMII, .clk_init = macb_clk_init, @@ -5411,6 +5421,7 @@ static const struct of_device_id macb_dt_ids[] = { { .compatible = "cdns,zynqmp-gem", .data = &zynqmp_config}, /* deprecated */ { .compatible = "cdns,zynq-gem", .data = &zynq_config }, /* deprecated */ { .compatible = "sifive,fu540-c000-gem", .data = &fu540_c000_config }, + { .compatible = "sifive,fu740-c000-gem", .data = &fu740_c000_config }, { .compatible = "microchip,mpfs-macb", .data = &mpfs_config }, { .compatible = "microchip,sama7g5-gem", .data = &sama7g5_gem_config }, { .compatible = "microchip,sama7g5-emac", .data = &sama7g5_emac_config }, -- 2.43.0 Update the ethernet node compatible string from "sifive,fu540-c000-gem" to "sifive,fu740-c000-gem" to comply with the SiFive IP versioning scheme documented in sifive-blocks-ip-versioning.txt. The versioning scheme requires SoC-specific compatible strings even when IP blocks are functionally identical. Signed-off-by: Max Hsu --- arch/riscv/boot/dts/sifive/fu740-c000.dtsi | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/arch/riscv/boot/dts/sifive/fu740-c000.dtsi b/arch/riscv/boot/dts/sifive/fu740-c000.dtsi index 6150f3397bff..15e11a03582a 100644 --- a/arch/riscv/boot/dts/sifive/fu740-c000.dtsi +++ b/arch/riscv/boot/dts/sifive/fu740-c000.dtsi @@ -273,7 +273,7 @@ spi0: spi@10050000 { status = "disabled"; }; eth0: ethernet@10090000 { - compatible = "sifive,fu540-c000-gem"; + compatible = "sifive,fu740-c000-gem"; interrupt-parent = <&plic0>; interrupts = <55>; reg = <0x0 0x10090000 0x0 0x2000>, -- 2.43.0 Update the PLIC compatible string from "sifive,fu540-c000-plic" to "sifive,fu740-c000-plic" to comply with the SiFive IP versioning scheme documented in sifive-blocks-ip-versioning.txt. The versioning scheme requires SoC-specific compatible strings for proper hardware identification. Signed-off-by: Max Hsu --- arch/riscv/boot/dts/sifive/fu740-c000.dtsi | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/arch/riscv/boot/dts/sifive/fu740-c000.dtsi b/arch/riscv/boot/dts/sifive/fu740-c000.dtsi index 15e11a03582a..a44ccbf4822b 100644 --- a/arch/riscv/boot/dts/sifive/fu740-c000.dtsi +++ b/arch/riscv/boot/dts/sifive/fu740-c000.dtsi @@ -182,7 +182,7 @@ soc { plic0: interrupt-controller@c000000 { #interrupt-cells = <1>; #address-cells = <0>; - compatible = "sifive,fu540-c000-plic", "sifive,plic-1.0.0"; + compatible = "sifive,fu740-c000-plic", "sifive,plic-1.0.0"; reg = <0x0 0xc000000 0x0 0x4000000>; riscv,ndev = <69>; interrupt-controller; -- 2.43.0