* [PATCH net-next v3 0/3] Add GBETH glue layer driver for Renesas RZ/V2H(P) SoC
@ 2025-03-11 22:17 Prabhakar
2025-03-11 22:17 ` [PATCH net-next v3 1/3] dt-bindings: net: dwmac: Increase 'maxItems' for 'interrupts' and 'interrupt-names' Prabhakar
` (2 more replies)
0 siblings, 3 replies; 9+ messages in thread
From: Prabhakar @ 2025-03-11 22:17 UTC (permalink / raw)
To: Andrew Lunn, David S. Miller, Eric Dumazet, Jakub Kicinski,
Paolo Abeni, Rob Herring, Krzysztof Kozlowski, Conor Dooley,
Philipp Zabel, Geert Uytterhoeven, Russell King (Oracle),
Giuseppe Cavallaro, Jose Abreu, Alexandre Torgue
Cc: netdev, devicetree, linux-kernel, linux-renesas-soc, Prabhakar,
Biju Das, Fabrizio Castro, Lad Prabhakar
From: Lad Prabhakar <prabhakar.mahadev-lad.rj@bp.renesas.com>
Hi All,
This patch series adds support for the GBETH (Gigabit Ethernet) interface
on the Renesas RZ/V2H(P) SoC. The changes include updating the device tree
bindings, documenting the GBETH bindings, and adding the DWMAC glue layer
for the Renesas GBETH.
Note, this patch series depends on [0].
[0] https://lore.kernel.org/all/Z82tWYZulV12Pjir@shell.armlinux.org.uk/
v2->v3
- Fixed review comments from Rob and Russell
v1->v2
- Updated commit description for patch 2/3
- Updated tx/rx queue completion interrupt names
- Added clks_config callback
v1:
https://lore.kernel.org/all/20250302181808.728734-1-prabhakar.mahadev-lad.rj@bp.renesas.com/
Cheers,
Prabhakar
Lad Prabhakar (3):
dt-bindings: net: dwmac: Increase 'maxItems' for 'interrupts' and
'interrupt-names'
dt-bindings: net: Document support for Renesas RZ/V2H(P) GBETH
net: stmmac: Add DWMAC glue layer for Renesas GBETH
.../bindings/net/renesas,r9a09g057-gbeth.yaml | 201 ++++++++++++++++++
.../devicetree/bindings/net/snps,dwmac.yaml | 25 ++-
drivers/net/ethernet/stmicro/stmmac/Kconfig | 11 +
drivers/net/ethernet/stmicro/stmmac/Makefile | 1 +
.../stmicro/stmmac/dwmac-renesas-gbeth.c | 166 +++++++++++++++
5 files changed, 395 insertions(+), 9 deletions(-)
create mode 100644 Documentation/devicetree/bindings/net/renesas,r9a09g057-gbeth.yaml
create mode 100644 drivers/net/ethernet/stmicro/stmmac/dwmac-renesas-gbeth.c
--
2.43.0
^ permalink raw reply [flat|nested] 9+ messages in thread* [PATCH net-next v3 1/3] dt-bindings: net: dwmac: Increase 'maxItems' for 'interrupts' and 'interrupt-names' 2025-03-11 22:17 [PATCH net-next v3 0/3] Add GBETH glue layer driver for Renesas RZ/V2H(P) SoC Prabhakar @ 2025-03-11 22:17 ` Prabhakar 2025-03-12 13:16 ` Rob Herring 2025-03-11 22:17 ` [PATCH net-next v3 2/3] dt-bindings: net: Document support for Renesas RZ/V2H(P) GBETH Prabhakar 2025-03-11 22:17 ` [PATCH net-next v3 3/3] net: stmmac: Add DWMAC glue layer for Renesas GBETH Prabhakar 2 siblings, 1 reply; 9+ messages in thread From: Prabhakar @ 2025-03-11 22:17 UTC (permalink / raw) To: Andrew Lunn, David S. Miller, Eric Dumazet, Jakub Kicinski, Paolo Abeni, Rob Herring, Krzysztof Kozlowski, Conor Dooley, Philipp Zabel, Geert Uytterhoeven, Russell King (Oracle), Giuseppe Cavallaro, Jose Abreu, Alexandre Torgue Cc: netdev, devicetree, linux-kernel, linux-renesas-soc, Prabhakar, Biju Das, Fabrizio Castro, Lad Prabhakar From: Lad Prabhakar <prabhakar.mahadev-lad.rj@bp.renesas.com> Increase the `maxItems` value for the `interrupts` and `interrupt-names` properties to 11 to support additional per-channel Tx/Rx completion interrupts on the Renesas RZ/V2H(P) SoC, which features the `snps,dwmac-5.20` IP. Refactor the `interrupt-names` property by replacing repeated `enum` entries with a `oneOf` list. Add support for per-channel receive and transmit completion interrupts using regex patterns. Signed-off-by: Lad Prabhakar <prabhakar.mahadev-lad.rj@bp.renesas.com> --- Note, for adding constraints to vendor bindings patch [0] has been sent out seprately. [0] https://lore.kernel.org/all/20250309003301.1152228-1-prabhakar.mahadev-lad.rj@bp.renesas.com/ v2->v3 - Dropped adding `additionalItems` - Moved interrupts description into interrupt-names - Replaced enum with a oneOf and added Rx/Tx regex patterns v1->v2 - No change --- .../devicetree/bindings/net/snps,dwmac.yaml | 24 ++++++++++++------- 1 file changed, 15 insertions(+), 9 deletions(-) diff --git a/Documentation/devicetree/bindings/net/snps,dwmac.yaml b/Documentation/devicetree/bindings/net/snps,dwmac.yaml index 78b3030dc56d..bacec6e6514b 100644 --- a/Documentation/devicetree/bindings/net/snps,dwmac.yaml +++ b/Documentation/devicetree/bindings/net/snps,dwmac.yaml @@ -114,19 +114,25 @@ properties: interrupts: minItems: 1 - items: - - description: Combined signal for various interrupt events - - description: The interrupt to manage the remote wake-up packet detection - - description: The interrupt that occurs when Rx exits the LPI state - - description: The interrupt that occurs when HW safety error triggered + maxItems: 11 interrupt-names: minItems: 1 + maxItems: 26 items: - - const: macirq - - enum: [eth_wake_irq, eth_lpi, sfty] - - enum: [eth_wake_irq, eth_lpi, sfty] - - enum: [eth_wake_irq, eth_lpi, sfty] + oneOf: + - description: Combined signal for various interrupt events + const: macirq + - description: The interrupt to manage the remote wake-up packet detection + const: eth_wake_irq + - description: The interrupt that occurs when Rx exits the LPI state + const: eth_lpi + - description: The interrupt that occurs when HW safety error triggered + const: sfty + - description: Per channel receive completion interrupt + pattern: '^rx-queue-[0-3]$' + - description: Per channel transmit completion interrupt + pattern: '^tx-queue-[0-3]$' clocks: minItems: 1 -- 2.43.0 ^ permalink raw reply related [flat|nested] 9+ messages in thread
* Re: [PATCH net-next v3 1/3] dt-bindings: net: dwmac: Increase 'maxItems' for 'interrupts' and 'interrupt-names' 2025-03-11 22:17 ` [PATCH net-next v3 1/3] dt-bindings: net: dwmac: Increase 'maxItems' for 'interrupts' and 'interrupt-names' Prabhakar @ 2025-03-12 13:16 ` Rob Herring 2025-03-14 2:22 ` Lad, Prabhakar 0 siblings, 1 reply; 9+ messages in thread From: Rob Herring @ 2025-03-12 13:16 UTC (permalink / raw) To: Prabhakar Cc: Andrew Lunn, David S. Miller, Eric Dumazet, Jakub Kicinski, Paolo Abeni, Krzysztof Kozlowski, Conor Dooley, Philipp Zabel, Geert Uytterhoeven, Russell King (Oracle), Giuseppe Cavallaro, Jose Abreu, Alexandre Torgue, netdev, devicetree, linux-kernel, linux-renesas-soc, Biju Das, Fabrizio Castro, Lad Prabhakar On Tue, Mar 11, 2025 at 10:17:28PM +0000, Prabhakar wrote: > From: Lad Prabhakar <prabhakar.mahadev-lad.rj@bp.renesas.com> > > Increase the `maxItems` value for the `interrupts` and `interrupt-names` > properties to 11 to support additional per-channel Tx/Rx completion > interrupts on the Renesas RZ/V2H(P) SoC, which features the > `snps,dwmac-5.20` IP. > > Refactor the `interrupt-names` property by replacing repeated `enum` > entries with a `oneOf` list. Add support for per-channel receive and > transmit completion interrupts using regex patterns. > > Signed-off-by: Lad Prabhakar <prabhakar.mahadev-lad.rj@bp.renesas.com> > --- > Note, for adding constraints to vendor bindings patch [0] has been sent > out seprately. > > [0] https://lore.kernel.org/all/20250309003301.1152228-1-prabhakar.mahadev-lad.rj@bp.renesas.com/ > > v2->v3 > - Dropped adding `additionalItems` > - Moved interrupts description into interrupt-names > - Replaced enum with a oneOf and added Rx/Tx regex patterns > > v1->v2 > - No change > --- > .../devicetree/bindings/net/snps,dwmac.yaml | 24 ++++++++++++------- > 1 file changed, 15 insertions(+), 9 deletions(-) > > diff --git a/Documentation/devicetree/bindings/net/snps,dwmac.yaml b/Documentation/devicetree/bindings/net/snps,dwmac.yaml > index 78b3030dc56d..bacec6e6514b 100644 > --- a/Documentation/devicetree/bindings/net/snps,dwmac.yaml > +++ b/Documentation/devicetree/bindings/net/snps,dwmac.yaml > @@ -114,19 +114,25 @@ properties: > > interrupts: > minItems: 1 > - items: > - - description: Combined signal for various interrupt events > - - description: The interrupt to manage the remote wake-up packet detection > - - description: The interrupt that occurs when Rx exits the LPI state > - - description: The interrupt that occurs when HW safety error triggered > + maxItems: 11 > > interrupt-names: > minItems: 1 > + maxItems: 26 Oops! I assume you meant 11. With that fixed: Reviewed-by: Rob Herring (Arm) <robh@kernel.org> > items: > - - const: macirq > - - enum: [eth_wake_irq, eth_lpi, sfty] > - - enum: [eth_wake_irq, eth_lpi, sfty] > - - enum: [eth_wake_irq, eth_lpi, sfty] > + oneOf: > + - description: Combined signal for various interrupt events > + const: macirq > + - description: The interrupt to manage the remote wake-up packet detection > + const: eth_wake_irq > + - description: The interrupt that occurs when Rx exits the LPI state > + const: eth_lpi > + - description: The interrupt that occurs when HW safety error triggered > + const: sfty > + - description: Per channel receive completion interrupt > + pattern: '^rx-queue-[0-3]$' > + - description: Per channel transmit completion interrupt > + pattern: '^tx-queue-[0-3]$' > > clocks: > minItems: 1 > -- > 2.43.0 > ^ permalink raw reply [flat|nested] 9+ messages in thread
* Re: [PATCH net-next v3 1/3] dt-bindings: net: dwmac: Increase 'maxItems' for 'interrupts' and 'interrupt-names' 2025-03-12 13:16 ` Rob Herring @ 2025-03-14 2:22 ` Lad, Prabhakar 0 siblings, 0 replies; 9+ messages in thread From: Lad, Prabhakar @ 2025-03-14 2:22 UTC (permalink / raw) To: Rob Herring Cc: Andrew Lunn, David S. Miller, Eric Dumazet, Jakub Kicinski, Paolo Abeni, Krzysztof Kozlowski, Conor Dooley, Philipp Zabel, Geert Uytterhoeven, Russell King (Oracle), Giuseppe Cavallaro, Jose Abreu, Alexandre Torgue, netdev, devicetree, linux-kernel, linux-renesas-soc, Biju Das, Fabrizio Castro, Lad Prabhakar Hi Rob, Thank you for the review. On Wed, Mar 12, 2025 at 1:16 PM Rob Herring <robh@kernel.org> wrote: > > On Tue, Mar 11, 2025 at 10:17:28PM +0000, Prabhakar wrote: > > From: Lad Prabhakar <prabhakar.mahadev-lad.rj@bp.renesas.com> > > > > Increase the `maxItems` value for the `interrupts` and `interrupt-names` > > properties to 11 to support additional per-channel Tx/Rx completion > > interrupts on the Renesas RZ/V2H(P) SoC, which features the > > `snps,dwmac-5.20` IP. > > > > Refactor the `interrupt-names` property by replacing repeated `enum` > > entries with a `oneOf` list. Add support for per-channel receive and > > transmit completion interrupts using regex patterns. > > > > Signed-off-by: Lad Prabhakar <prabhakar.mahadev-lad.rj@bp.renesas.com> > > --- > > Note, for adding constraints to vendor bindings patch [0] has been sent > > out seprately. > > > > [0] https://lore.kernel.org/all/20250309003301.1152228-1-prabhakar.mahadev-lad.rj@bp.renesas.com/ > > > > v2->v3 > > - Dropped adding `additionalItems` > > - Moved interrupts description into interrupt-names > > - Replaced enum with a oneOf and added Rx/Tx regex patterns > > > > v1->v2 > > - No change > > --- > > .../devicetree/bindings/net/snps,dwmac.yaml | 24 ++++++++++++------- > > 1 file changed, 15 insertions(+), 9 deletions(-) > > > > diff --git a/Documentation/devicetree/bindings/net/snps,dwmac.yaml b/Documentation/devicetree/bindings/net/snps,dwmac.yaml > > index 78b3030dc56d..bacec6e6514b 100644 > > --- a/Documentation/devicetree/bindings/net/snps,dwmac.yaml > > +++ b/Documentation/devicetree/bindings/net/snps,dwmac.yaml > > @@ -114,19 +114,25 @@ properties: > > > > interrupts: > > minItems: 1 > > - items: > > - - description: Combined signal for various interrupt events > > - - description: The interrupt to manage the remote wake-up packet detection > > - - description: The interrupt that occurs when Rx exits the LPI state > > - - description: The interrupt that occurs when HW safety error triggered > > + maxItems: 11 > > > > interrupt-names: > > minItems: 1 > > + maxItems: 26 > > Oops! I assume you meant 11. With that fixed: Ouch, I will fix this in v4. > > Reviewed-by: Rob Herring (Arm) <robh@kernel.org> > > > items: > > - - const: macirq > > - - enum: [eth_wake_irq, eth_lpi, sfty] > > - - enum: [eth_wake_irq, eth_lpi, sfty] > > - - enum: [eth_wake_irq, eth_lpi, sfty] > > + oneOf: > > + - description: Combined signal for various interrupt events > > + const: macirq > > + - description: The interrupt to manage the remote wake-up packet detection > > + const: eth_wake_irq > > + - description: The interrupt that occurs when Rx exits the LPI state > > + const: eth_lpi > > + - description: The interrupt that occurs when HW safety error triggered > > + const: sfty > > + - description: Per channel receive completion interrupt > > + pattern: '^rx-queue-[0-3]$' > > + - description: Per channel transmit completion interrupt > > + pattern: '^tx-queue-[0-3]$' > > > > clocks: > > minItems: 1 > > -- > > 2.43.0 > > Cheers, Prabhakar ^ permalink raw reply [flat|nested] 9+ messages in thread
* [PATCH net-next v3 2/3] dt-bindings: net: Document support for Renesas RZ/V2H(P) GBETH 2025-03-11 22:17 [PATCH net-next v3 0/3] Add GBETH glue layer driver for Renesas RZ/V2H(P) SoC Prabhakar 2025-03-11 22:17 ` [PATCH net-next v3 1/3] dt-bindings: net: dwmac: Increase 'maxItems' for 'interrupts' and 'interrupt-names' Prabhakar @ 2025-03-11 22:17 ` Prabhakar 2025-03-11 22:17 ` [PATCH net-next v3 3/3] net: stmmac: Add DWMAC glue layer for Renesas GBETH Prabhakar 2 siblings, 0 replies; 9+ messages in thread From: Prabhakar @ 2025-03-11 22:17 UTC (permalink / raw) To: Andrew Lunn, David S. Miller, Eric Dumazet, Jakub Kicinski, Paolo Abeni, Rob Herring, Krzysztof Kozlowski, Conor Dooley, Philipp Zabel, Geert Uytterhoeven, Russell King (Oracle), Giuseppe Cavallaro, Jose Abreu, Alexandre Torgue Cc: netdev, devicetree, linux-kernel, linux-renesas-soc, Prabhakar, Biju Das, Fabrizio Castro, Lad Prabhakar From: Lad Prabhakar <prabhakar.mahadev-lad.rj@bp.renesas.com> GBETH IP on the Renesas RZ/V2H(P) SoC is integrated with Synopsys DesignWare MAC (version 5.20). Document the device tree bindings for the GBETH glue layer. Generic compatible string 'renesas,rzv2h-gbeth' is added since this module is identical on both the RZ/V2H(P) and RZ/G3E SoCs. The Rx/Tx clocks supplied for GBETH on the RZ/V2H(P) SoC is depicted below: Rx / Tx -------+------------- on / off ------- | | Rx-180 / Tx-180 +---- not ---- on / off ------- Signed-off-by: Lad Prabhakar <prabhakar.mahadev-lad.rj@bp.renesas.com> Reviewed-by: Rob Herring (Arm) <robh@kernel.org> --- Hi Rob, Ive restored your Ack with below changes, please let me know if you are not OK. v2->v3 - Dropped interrupts description from interrupts property as snps,dwmac.yaml already describes it. - Dropped snps,en-tx-lpi-clockgating as this is being marked as deprecated. - Updated Rx/Tx interrupt names to match the regex from patch 1/3 - Listed Rx interrupts before Tx interrupts in example node for consistency. v1->v2 - Updated commit description - Updated interrupts description for clarity - Updated interrupt-names for clarity - Updated example node --- .../bindings/net/renesas,r9a09g057-gbeth.yaml | 201 ++++++++++++++++++ .../devicetree/bindings/net/snps,dwmac.yaml | 1 + 2 files changed, 202 insertions(+) create mode 100644 Documentation/devicetree/bindings/net/renesas,r9a09g057-gbeth.yaml diff --git a/Documentation/devicetree/bindings/net/renesas,r9a09g057-gbeth.yaml b/Documentation/devicetree/bindings/net/renesas,r9a09g057-gbeth.yaml new file mode 100644 index 000000000000..02a6793c26f5 --- /dev/null +++ b/Documentation/devicetree/bindings/net/renesas,r9a09g057-gbeth.yaml @@ -0,0 +1,201 @@ +# SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause) +%YAML 1.2 +--- +$id: http://devicetree.org/schemas/net/renesas,r9a09g057-gbeth.yaml# +$schema: http://devicetree.org/meta-schemas/core.yaml# + +title: GBETH glue layer for Renesas RZ/V2H(P) (and similar SoCs) + +maintainers: + - Lad Prabhakar <prabhakar.mahadev-lad.rj@bp.renesas.com> + +select: + properties: + compatible: + contains: + enum: + - renesas,r9a09g057-gbeth + - renesas,rzv2h-gbeth + required: + - compatible + +properties: + compatible: + items: + - enum: + - renesas,r9a09g057-gbeth # RZ/V2H(P) + - const: renesas,rzv2h-gbeth + - const: snps,dwmac-5.20 + + reg: + maxItems: 1 + + clocks: + items: + - description: CSR clock + - description: AXI system clock + - description: PTP clock + - description: TX clock + - description: RX clock + - description: TX clock phase-shifted by 180 degrees + - description: RX clock phase-shifted by 180 degrees + + clock-names: + items: + - const: stmmaceth + - const: pclk + - const: ptp_ref + - const: tx + - const: rx + - const: tx-180 + - const: rx-180 + + interrupts: + minItems: 11 + + interrupt-names: + items: + - const: macirq + - const: eth_wake_irq + - const: eth_lpi + - const: rx-queue-0 + - const: rx-queue-1 + - const: rx-queue-2 + - const: rx-queue-3 + - const: tx-queue-0 + - const: tx-queue-1 + - const: tx-queue-2 + - const: tx-queue-3 + + resets: + items: + - description: AXI power-on system reset + +required: + - compatible + - reg + - clocks + - clock-names + - interrupts + - interrupt-names + - resets + +allOf: + - $ref: snps,dwmac.yaml# + +unevaluatedProperties: false + +examples: + - | + #include <dt-bindings/clock/renesas-cpg-mssr.h> + #include <dt-bindings/interrupt-controller/arm-gic.h> + + ethernet@15c30000 { + compatible = "renesas,r9a09g057-gbeth", "renesas,rzv2h-gbeth", "snps,dwmac-5.20"; + reg = <0x15c30000 0x10000>; + clocks = <&cpg CPG_MOD 0xbd>, <&cpg CPG_MOD 0xbc>, + <&ptp_clock>, <&cpg CPG_MOD 0xb8>, + <&cpg CPG_MOD 0xb9>, <&cpg CPG_MOD 0xba>, + <&cpg CPG_MOD 0xbb>; + clock-names = "stmmaceth", "pclk", "ptp_ref", + "tx", "rx", "tx-180", "rx-180"; + resets = <&cpg 0xb0>; + interrupts = <GIC_SPI 765 IRQ_TYPE_LEVEL_HIGH>, + <GIC_SPI 767 IRQ_TYPE_LEVEL_HIGH>, + <GIC_SPI 766 IRQ_TYPE_LEVEL_HIGH>, + <GIC_SPI 772 IRQ_TYPE_LEVEL_HIGH>, + <GIC_SPI 773 IRQ_TYPE_LEVEL_HIGH>, + <GIC_SPI 774 IRQ_TYPE_LEVEL_HIGH>, + <GIC_SPI 745 IRQ_TYPE_LEVEL_HIGH>, + <GIC_SPI 768 IRQ_TYPE_LEVEL_HIGH>, + <GIC_SPI 769 IRQ_TYPE_LEVEL_HIGH>, + <GIC_SPI 770 IRQ_TYPE_LEVEL_HIGH>, + <GIC_SPI 771 IRQ_TYPE_LEVEL_HIGH>; + interrupt-names = "macirq", "eth_wake_irq", "eth_lpi", + "rx-queue-0", "rx-queue-1", "rx-queue-2", + "rx-queue-3", "tx-queue-0", "tx-queue-1", + "tx-queue-2", "tx-queue-3"; + phy-mode = "rgmii-id"; + snps,multicast-filter-bins = <256>; + snps,perfect-filter-entries = <128>; + rx-fifo-depth = <8192>; + tx-fifo-depth = <8192>; + snps,fixed-burst; + snps,force_thresh_dma_mode; + snps,axi-config = <&stmmac_axi_setup>; + snps,mtl-rx-config = <&mtl_rx_setup>; + snps,mtl-tx-config = <&mtl_tx_setup>; + snps,txpbl = <32>; + snps,rxpbl = <32>; + phy-handle = <&phy0>; + + stmmac_axi_setup: stmmac-axi-config { + snps,lpi_en; + snps,wr_osr_lmt = <0xf>; + snps,rd_osr_lmt = <0xf>; + snps,blen = <16 8 4 0 0 0 0>; + }; + + mtl_rx_setup: rx-queues-config { + snps,rx-queues-to-use = <4>; + snps,rx-sched-sp; + + queue0 { + snps,dcb-algorithm; + snps,priority = <0x1>; + snps,map-to-dma-channel = <0>; + }; + + queue1 { + snps,dcb-algorithm; + snps,priority = <0x2>; + snps,map-to-dma-channel = <1>; + }; + + queue2 { + snps,dcb-algorithm; + snps,priority = <0x4>; + snps,map-to-dma-channel = <2>; + }; + + queue3 { + snps,dcb-algorithm; + snps,priority = <0x8>; + snps,map-to-dma-channel = <3>; + }; + }; + + mtl_tx_setup: tx-queues-config { + snps,tx-queues-to-use = <4>; + + queue0 { + snps,dcb-algorithm; + snps,priority = <0x1>; + }; + + queue1 { + snps,dcb-algorithm; + snps,priority = <0x2>; + }; + + queue2 { + snps,dcb-algorithm; + snps,priority = <0x4>; + }; + + queue3 { + snps,dcb-algorithm; + snps,priority = <0x1>; + }; + }; + + mdio { + #address-cells = <1>; + #size-cells = <0>; + compatible = "snps,dwmac-mdio"; + + phy0: ethernet-phy@0 { + reg = <0>; + }; + }; + }; diff --git a/Documentation/devicetree/bindings/net/snps,dwmac.yaml b/Documentation/devicetree/bindings/net/snps,dwmac.yaml index bacec6e6514b..7280886d03a7 100644 --- a/Documentation/devicetree/bindings/net/snps,dwmac.yaml +++ b/Documentation/devicetree/bindings/net/snps,dwmac.yaml @@ -75,6 +75,7 @@ properties: - qcom,sm8150-ethqos - renesas,r9a06g032-gmac - renesas,rzn1-gmac + - renesas,rzv2h-gbeth - rockchip,px30-gmac - rockchip,rk3128-gmac - rockchip,rk3228-gmac -- 2.43.0 ^ permalink raw reply related [flat|nested] 9+ messages in thread
* [PATCH net-next v3 3/3] net: stmmac: Add DWMAC glue layer for Renesas GBETH 2025-03-11 22:17 [PATCH net-next v3 0/3] Add GBETH glue layer driver for Renesas RZ/V2H(P) SoC Prabhakar 2025-03-11 22:17 ` [PATCH net-next v3 1/3] dt-bindings: net: dwmac: Increase 'maxItems' for 'interrupts' and 'interrupt-names' Prabhakar 2025-03-11 22:17 ` [PATCH net-next v3 2/3] dt-bindings: net: Document support for Renesas RZ/V2H(P) GBETH Prabhakar @ 2025-03-11 22:17 ` Prabhakar 2025-03-18 11:49 ` Paolo Abeni 2 siblings, 1 reply; 9+ messages in thread From: Prabhakar @ 2025-03-11 22:17 UTC (permalink / raw) To: Andrew Lunn, David S. Miller, Eric Dumazet, Jakub Kicinski, Paolo Abeni, Rob Herring, Krzysztof Kozlowski, Conor Dooley, Philipp Zabel, Geert Uytterhoeven, Russell King (Oracle), Giuseppe Cavallaro, Jose Abreu, Alexandre Torgue Cc: netdev, devicetree, linux-kernel, linux-renesas-soc, Prabhakar, Biju Das, Fabrizio Castro, Lad Prabhakar From: Lad Prabhakar <prabhakar.mahadev-lad.rj@bp.renesas.com> Add the DWMAC glue layer for the GBETH IP found in the Renesas RZ/V2H(P) SoC. Signed-off-by: Lad Prabhakar <prabhakar.mahadev-lad.rj@bp.renesas.com> --- v2->v3 - Handle clks from plat_dat - Replaced STMMAC_FLAG_EN_TX_LPI_CLOCKGATING flag with STMMAC_FLAG_EN_TX_LPI_CLK_PHY_CAP. v1->v2 - Dropped __initconst for renesas_gbeth_clks array - Added clks_config callback - Dropped STMMAC_FLAG_RX_CLK_RUNS_IN_LPI flag as this needs investigation. --- drivers/net/ethernet/stmicro/stmmac/Kconfig | 11 ++ drivers/net/ethernet/stmicro/stmmac/Makefile | 1 + .../stmicro/stmmac/dwmac-renesas-gbeth.c | 166 ++++++++++++++++++ 3 files changed, 178 insertions(+) create mode 100644 drivers/net/ethernet/stmicro/stmmac/dwmac-renesas-gbeth.c diff --git a/drivers/net/ethernet/stmicro/stmmac/Kconfig b/drivers/net/ethernet/stmicro/stmmac/Kconfig index 3c820ef56775..2c99b23f0faa 100644 --- a/drivers/net/ethernet/stmicro/stmmac/Kconfig +++ b/drivers/net/ethernet/stmicro/stmmac/Kconfig @@ -131,6 +131,17 @@ config DWMAC_QCOM_ETHQOS This selects the Qualcomm ETHQOS glue layer support for the stmmac device driver. +config DWMAC_RENESAS_GBETH + tristate "Renesas RZ/V2H(P) GBETH support" + default ARCH_RENESAS + depends on OF && (ARCH_RENESAS || COMPILE_TEST) + help + Support for Gigabit Ethernet Interface (GBETH) on Renesas + RZ/V2H(P) SoCs. + + This selects the Renesas RZ/V2H(P) Soc specific glue layer support + for the stmmac device driver. + config DWMAC_ROCKCHIP tristate "Rockchip dwmac support" default ARCH_ROCKCHIP diff --git a/drivers/net/ethernet/stmicro/stmmac/Makefile b/drivers/net/ethernet/stmicro/stmmac/Makefile index 594883fb4164..91050215511b 100644 --- a/drivers/net/ethernet/stmicro/stmmac/Makefile +++ b/drivers/net/ethernet/stmicro/stmmac/Makefile @@ -20,6 +20,7 @@ obj-$(CONFIG_DWMAC_LPC18XX) += dwmac-lpc18xx.o obj-$(CONFIG_DWMAC_MEDIATEK) += dwmac-mediatek.o obj-$(CONFIG_DWMAC_MESON) += dwmac-meson.o dwmac-meson8b.o obj-$(CONFIG_DWMAC_QCOM_ETHQOS) += dwmac-qcom-ethqos.o +obj-$(CONFIG_DWMAC_RENESAS_GBETH) += dwmac-renesas-gbeth.o obj-$(CONFIG_DWMAC_ROCKCHIP) += dwmac-rk.o obj-$(CONFIG_DWMAC_RZN1) += dwmac-rzn1.o obj-$(CONFIG_DWMAC_S32) += dwmac-s32.o diff --git a/drivers/net/ethernet/stmicro/stmmac/dwmac-renesas-gbeth.c b/drivers/net/ethernet/stmicro/stmmac/dwmac-renesas-gbeth.c new file mode 100644 index 000000000000..c5710e59323e --- /dev/null +++ b/drivers/net/ethernet/stmicro/stmmac/dwmac-renesas-gbeth.c @@ -0,0 +1,166 @@ +// SPDX-License-Identifier: GPL-2.0+ +/* + * dwmac-renesas-gbeth.c - DWMAC Specific Glue layer for Renesas GBETH + * + * The Rx and Tx clocks are supplied as follows for the GBETH IP. + * + * Rx / Tx + * -------+------------- on / off ------- + * | + * | Rx-180 / Tx-180 + * +---- not ---- on / off ------- + * + * Copyright (C) 2025 Renesas Electronics Corporation + */ + +#include <linux/clk.h> +#include <linux/device.h> +#include <linux/module.h> +#include <linux/platform_device.h> +#include <linux/reset.h> + +#include "dwmac4.h" +#include "stmmac_platform.h" + +struct renesas_gbeth { + struct plat_stmmacenet_data *plat_dat; + struct reset_control *rstc; + struct device *dev; + void __iomem *regs; +}; + +static const char *const renesas_gbeth_clks[] = { + "tx", "tx-180", "rx", "rx-180", +}; + +static struct clk *renesas_gbeth_find_clk(struct plat_stmmacenet_data *plat_dat, + const char *name) +{ + for (unsigned int i = 0; i < plat_dat->num_clks; i++) + if (!strcmp(plat_dat->clks[i].id, name)) + return plat_dat->clks[i].clk; + + return NULL; +} + +static int renesas_gbeth_clks_config(void *priv, bool enabled) +{ + struct renesas_gbeth *gbeth = priv; + struct plat_stmmacenet_data *plat_dat = gbeth->plat_dat; + int ret; + + if (enabled) { + ret = reset_control_deassert(gbeth->rstc); + if (ret) { + dev_err(gbeth->dev, "Reset deassert failed\n"); + return ret; + } + + ret = clk_bulk_prepare_enable(plat_dat->num_clks, plat_dat->clks); + if (ret) + reset_control_assert(gbeth->rstc); + } else { + clk_bulk_disable_unprepare(plat_dat->num_clks, plat_dat->clks); + ret = reset_control_assert(gbeth->rstc); + if (ret) + dev_err(gbeth->dev, "Reset assert failed\n"); + } + + return ret; +} + +static int renesas_gbeth_probe(struct platform_device *pdev) +{ + struct plat_stmmacenet_data *plat_dat; + struct stmmac_resources stmmac_res; + struct device *dev = &pdev->dev; + struct renesas_gbeth *gbeth; + unsigned int i; + int err; + + err = stmmac_get_platform_resources(pdev, &stmmac_res); + if (err) + return dev_err_probe(dev, err, + "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(dev, PTR_ERR(plat_dat), + "dt configuration failed\n"); + + gbeth = devm_kzalloc(dev, sizeof(*gbeth), GFP_KERNEL); + if (!gbeth) + return -ENOMEM; + + plat_dat->num_clks = ARRAY_SIZE(renesas_gbeth_clks); + plat_dat->clks = devm_kcalloc(dev, plat_dat->num_clks, + sizeof(*plat_dat->clks), GFP_KERNEL); + if (!plat_dat->clks) + return -ENOMEM; + + for (i = 0; i < plat_dat->num_clks; i++) + plat_dat->clks[i].id = renesas_gbeth_clks[i]; + + err = devm_clk_bulk_get(dev, plat_dat->num_clks, plat_dat->clks); + if (err < 0) + return err; + + plat_dat->clk_tx_i = renesas_gbeth_find_clk(plat_dat, "tx"); + if (!plat_dat->clk_tx_i) + return dev_err_probe(dev, -EINVAL, + "error finding tx clock\n"); + + gbeth->rstc = devm_reset_control_get_exclusive(dev, NULL); + if (IS_ERR(gbeth->rstc)) + return PTR_ERR(gbeth->rstc); + + gbeth->dev = dev; + gbeth->regs = stmmac_res.addr; + gbeth->plat_dat = plat_dat; + plat_dat->bsp_priv = gbeth; + plat_dat->set_clk_tx_rate = stmmac_set_clk_tx_rate; + plat_dat->clks_config = renesas_gbeth_clks_config; + plat_dat->flags |= STMMAC_FLAG_HWTSTAMP_CORRECT_LATENCY | + STMMAC_FLAG_EN_TX_LPI_CLK_PHY_CAP | + STMMAC_FLAG_SPH_DISABLE; + + err = renesas_gbeth_clks_config(gbeth, true); + if (err) + return err; + + err = stmmac_dvr_probe(dev, plat_dat, &stmmac_res); + if (err) { + renesas_gbeth_clks_config(gbeth, false); + return err; + } + + return 0; +} + +static void renesas_gbeth_remove(struct platform_device *pdev) +{ + stmmac_dvr_remove(&pdev->dev); + + renesas_gbeth_clks_config(get_stmmac_bsp_priv(&pdev->dev), false); +} + +static const struct of_device_id renesas_gbeth_match[] = { + { .compatible = "renesas,rzv2h-gbeth", }, + { /* Sentinel */ } +}; +MODULE_DEVICE_TABLE(of, renesas_gbeth_match); + +static struct platform_driver renesas_gbeth_driver = { + .probe = renesas_gbeth_probe, + .remove = renesas_gbeth_remove, + .driver = { + .name = "renesas-gbeth", + .pm = &stmmac_pltfr_pm_ops, + .of_match_table = renesas_gbeth_match, + }, +}; +module_platform_driver(renesas_gbeth_driver); + +MODULE_AUTHOR("Lad Prabhakar <prabhakar.mahadev-lad.rj@bp.renesas.com>"); +MODULE_DESCRIPTION("Renesas GBETH DWMAC Specific Glue layer"); +MODULE_LICENSE("GPL"); -- 2.43.0 ^ permalink raw reply related [flat|nested] 9+ messages in thread
* Re: [PATCH net-next v3 3/3] net: stmmac: Add DWMAC glue layer for Renesas GBETH 2025-03-11 22:17 ` [PATCH net-next v3 3/3] net: stmmac: Add DWMAC glue layer for Renesas GBETH Prabhakar @ 2025-03-18 11:49 ` Paolo Abeni 2025-03-18 12:05 ` Russell King (Oracle) 2025-03-18 12:23 ` Lad, Prabhakar 0 siblings, 2 replies; 9+ messages in thread From: Paolo Abeni @ 2025-03-18 11:49 UTC (permalink / raw) To: Prabhakar, Andrew Lunn, David S. Miller, Eric Dumazet, Jakub Kicinski, Rob Herring, Krzysztof Kozlowski, Conor Dooley, Philipp Zabel, Geert Uytterhoeven, Russell King (Oracle), Giuseppe Cavallaro, Jose Abreu, Alexandre Torgue Cc: netdev, devicetree, linux-kernel, linux-renesas-soc, Biju Das, Fabrizio Castro, Lad Prabhakar On 3/11/25 11:17 PM, Prabhakar wrote: > @@ -0,0 +1,166 @@ > +// SPDX-License-Identifier: GPL-2.0+ > +/* > + * dwmac-renesas-gbeth.c - DWMAC Specific Glue layer for Renesas GBETH > + * > + * The Rx and Tx clocks are supplied as follows for the GBETH IP. > + * > + * Rx / Tx > + * -------+------------- on / off ------- > + * | > + * | Rx-180 / Tx-180 > + * +---- not ---- on / off ------- > + * > + * Copyright (C) 2025 Renesas Electronics Corporation > + */ > + > +#include <linux/clk.h> > +#include <linux/device.h> > +#include <linux/module.h> > +#include <linux/platform_device.h> > +#include <linux/reset.h> > + > +#include "dwmac4.h" > +#include "stmmac_platform.h" > + > +struct renesas_gbeth { > + struct plat_stmmacenet_data *plat_dat; > + struct reset_control *rstc; > + struct device *dev; > + void __iomem *regs; > +}; > + > +static const char *const renesas_gbeth_clks[] = { > + "tx", "tx-180", "rx", "rx-180", > +}; > + > +static struct clk *renesas_gbeth_find_clk(struct plat_stmmacenet_data *plat_dat, > + const char *name) > +{ > + for (unsigned int i = 0; i < plat_dat->num_clks; i++) > + if (!strcmp(plat_dat->clks[i].id, name)) > + return plat_dat->clks[i].clk; > + > + return NULL; > +} > + > +static int renesas_gbeth_clks_config(void *priv, bool enabled) > +{ > + struct renesas_gbeth *gbeth = priv; > + struct plat_stmmacenet_data *plat_dat = gbeth->plat_dat; Minor nit: please respect the reverse christmas tree order above: struct plat_stmmacenet_data *plat_dat; struct renesas_gbeth *gbeth = priv; and init plat_dat later. > + int ret; > + > + if (enabled) { > + ret = reset_control_deassert(gbeth->rstc); > + if (ret) { > + dev_err(gbeth->dev, "Reset deassert failed\n"); > + return ret; > + } > + > + ret = clk_bulk_prepare_enable(plat_dat->num_clks, plat_dat->clks); > + if (ret) > + reset_control_assert(gbeth->rstc); > + } else { > + clk_bulk_disable_unprepare(plat_dat->num_clks, plat_dat->clks); > + ret = reset_control_assert(gbeth->rstc); > + if (ret) > + dev_err(gbeth->dev, "Reset assert failed\n"); > + } > + > + return ret; > +} > + > +static int renesas_gbeth_probe(struct platform_device *pdev) > +{ > + struct plat_stmmacenet_data *plat_dat; > + struct stmmac_resources stmmac_res; > + struct device *dev = &pdev->dev; > + struct renesas_gbeth *gbeth; > + unsigned int i; > + int err; > + > + err = stmmac_get_platform_resources(pdev, &stmmac_res); > + if (err) > + return dev_err_probe(dev, err, > + "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(dev, PTR_ERR(plat_dat), > + "dt configuration failed\n"); > + > + gbeth = devm_kzalloc(dev, sizeof(*gbeth), GFP_KERNEL); > + if (!gbeth) > + return -ENOMEM; > + > + plat_dat->num_clks = ARRAY_SIZE(renesas_gbeth_clks); > + plat_dat->clks = devm_kcalloc(dev, plat_dat->num_clks, > + sizeof(*plat_dat->clks), GFP_KERNEL); > + if (!plat_dat->clks) > + return -ENOMEM; > + > + for (i = 0; i < plat_dat->num_clks; i++) > + plat_dat->clks[i].id = renesas_gbeth_clks[i]; > + > + err = devm_clk_bulk_get(dev, plat_dat->num_clks, plat_dat->clks); > + if (err < 0) > + return err; > + > + plat_dat->clk_tx_i = renesas_gbeth_find_clk(plat_dat, "tx"); > + if (!plat_dat->clk_tx_i) > + return dev_err_probe(dev, -EINVAL, > + "error finding tx clock\n"); > + > + gbeth->rstc = devm_reset_control_get_exclusive(dev, NULL); > + if (IS_ERR(gbeth->rstc)) > + return PTR_ERR(gbeth->rstc); > + > + gbeth->dev = dev; > + gbeth->regs = stmmac_res.addr; > + gbeth->plat_dat = plat_dat; > + plat_dat->bsp_priv = gbeth; > + plat_dat->set_clk_tx_rate = stmmac_set_clk_tx_rate; > + plat_dat->clks_config = renesas_gbeth_clks_config; > + plat_dat->flags |= STMMAC_FLAG_HWTSTAMP_CORRECT_LATENCY | > + STMMAC_FLAG_EN_TX_LPI_CLK_PHY_CAP | The above does not compile: ../drivers/net/ethernet/stmicro/stmmac/dwmac-renesas-gbeth.c:124:7: error: use of undeclared identifier 'STMMAC_FLAG_EN_TX_LPI_CLK_PHY_CAP' > + STMMAC_FLAG_SPH_DISABLE; > + > + err = renesas_gbeth_clks_config(gbeth, true); > + if (err) > + return err; > + > + err = stmmac_dvr_probe(dev, plat_dat, &stmmac_res); > + if (err) { > + renesas_gbeth_clks_config(gbeth, false); > + return err; Just: if (err) renesas_gbeth_clks_config(gbeth, false); return err; Thanks, Paolo ^ permalink raw reply [flat|nested] 9+ messages in thread
* Re: [PATCH net-next v3 3/3] net: stmmac: Add DWMAC glue layer for Renesas GBETH 2025-03-18 11:49 ` Paolo Abeni @ 2025-03-18 12:05 ` Russell King (Oracle) 2025-03-18 12:23 ` Lad, Prabhakar 1 sibling, 0 replies; 9+ messages in thread From: Russell King (Oracle) @ 2025-03-18 12:05 UTC (permalink / raw) To: Paolo Abeni Cc: Prabhakar, Andrew Lunn, David S. Miller, Eric Dumazet, Jakub Kicinski, Rob Herring, Krzysztof Kozlowski, Conor Dooley, Philipp Zabel, Geert Uytterhoeven, Giuseppe Cavallaro, Jose Abreu, Alexandre Torgue, netdev, devicetree, linux-kernel, linux-renesas-soc, Biju Das, Fabrizio Castro, Lad Prabhakar On Tue, Mar 18, 2025 at 12:49:00PM +0100, Paolo Abeni wrote: > On 3/11/25 11:17 PM, Prabhakar wrote: > > + gbeth->dev = dev; > > + gbeth->regs = stmmac_res.addr; > > + gbeth->plat_dat = plat_dat; > > + plat_dat->bsp_priv = gbeth; > > + plat_dat->set_clk_tx_rate = stmmac_set_clk_tx_rate; > > + plat_dat->clks_config = renesas_gbeth_clks_config; > > + plat_dat->flags |= STMMAC_FLAG_HWTSTAMP_CORRECT_LATENCY | > > + STMMAC_FLAG_EN_TX_LPI_CLK_PHY_CAP | > > The above does not compile: > > ../drivers/net/ethernet/stmicro/stmmac/dwmac-renesas-gbeth.c:124:7: > error: use of undeclared identifier 'STMMAC_FLAG_EN_TX_LPI_CLK_PHY_CAP' This is because this patch depends on patches that I previously submitted on the 10th March, but because of a cockup with the Cc header, were re-submitted on 12th March: https://patchwork.kernel.org/project/netdevbpf/patch/E1tsITp-005vG9-Px@rmk-PC.armlinux.org.uk/ -- RMK's Patch system: https://www.armlinux.org.uk/developer/patches/ FTTP is here! 80Mbps down 10Mbps up. Decent connectivity at last! ^ permalink raw reply [flat|nested] 9+ messages in thread
* Re: [PATCH net-next v3 3/3] net: stmmac: Add DWMAC glue layer for Renesas GBETH 2025-03-18 11:49 ` Paolo Abeni 2025-03-18 12:05 ` Russell King (Oracle) @ 2025-03-18 12:23 ` Lad, Prabhakar 1 sibling, 0 replies; 9+ messages in thread From: Lad, Prabhakar @ 2025-03-18 12:23 UTC (permalink / raw) To: Paolo Abeni Cc: Andrew Lunn, David S. Miller, Eric Dumazet, Jakub Kicinski, Rob Herring, Krzysztof Kozlowski, Conor Dooley, Philipp Zabel, Geert Uytterhoeven, Russell King (Oracle), Giuseppe Cavallaro, Jose Abreu, Alexandre Torgue, netdev, devicetree, linux-kernel, linux-renesas-soc, Biju Das, Fabrizio Castro, Lad Prabhakar Hi Paolo, Thank you for the review. On Tue, Mar 18, 2025 at 11:49 AM Paolo Abeni <pabeni@redhat.com> wrote: > > On 3/11/25 11:17 PM, Prabhakar wrote: > > @@ -0,0 +1,166 @@ > > +// SPDX-License-Identifier: GPL-2.0+ > > +/* > > + * dwmac-renesas-gbeth.c - DWMAC Specific Glue layer for Renesas GBETH > > + * > > + * The Rx and Tx clocks are supplied as follows for the GBETH IP. > > + * > > + * Rx / Tx > > + * -------+------------- on / off ------- > > + * | > > + * | Rx-180 / Tx-180 > > + * +---- not ---- on / off ------- > > + * > > + * Copyright (C) 2025 Renesas Electronics Corporation > > + */ > > + > > +#include <linux/clk.h> > > +#include <linux/device.h> > > +#include <linux/module.h> > > +#include <linux/platform_device.h> > > +#include <linux/reset.h> > > + > > +#include "dwmac4.h" > > +#include "stmmac_platform.h" > > + > > +struct renesas_gbeth { > > + struct plat_stmmacenet_data *plat_dat; > > + struct reset_control *rstc; > > + struct device *dev; > > + void __iomem *regs; > > +}; > > + > > +static const char *const renesas_gbeth_clks[] = { > > + "tx", "tx-180", "rx", "rx-180", > > +}; > > + > > +static struct clk *renesas_gbeth_find_clk(struct plat_stmmacenet_data *plat_dat, > > + const char *name) > > +{ > > + for (unsigned int i = 0; i < plat_dat->num_clks; i++) > > + if (!strcmp(plat_dat->clks[i].id, name)) > > + return plat_dat->clks[i].clk; > > + > > + return NULL; > > +} > > + > > +static int renesas_gbeth_clks_config(void *priv, bool enabled) > > +{ > > + struct renesas_gbeth *gbeth = priv; > > + struct plat_stmmacenet_data *plat_dat = gbeth->plat_dat; > > Minor nit: please respect the reverse christmas tree order above: > Agreed, I will fix that. > struct plat_stmmacenet_data *plat_dat; > struct renesas_gbeth *gbeth = priv; > > and init plat_dat later. > OK. > > + int ret; > > + > > + if (enabled) { > > + ret = reset_control_deassert(gbeth->rstc); > > + if (ret) { > > + dev_err(gbeth->dev, "Reset deassert failed\n"); > > + return ret; > > + } > > + > > + ret = clk_bulk_prepare_enable(plat_dat->num_clks, plat_dat->clks); > > + if (ret) > > + reset_control_assert(gbeth->rstc); > > + } else { > > + clk_bulk_disable_unprepare(plat_dat->num_clks, plat_dat->clks); > > + ret = reset_control_assert(gbeth->rstc); > > + if (ret) > > + dev_err(gbeth->dev, "Reset assert failed\n"); > > + } > > + > > + return ret; > > +} > > + > > +static int renesas_gbeth_probe(struct platform_device *pdev) > > +{ > > + struct plat_stmmacenet_data *plat_dat; > > + struct stmmac_resources stmmac_res; > > + struct device *dev = &pdev->dev; > > + struct renesas_gbeth *gbeth; > > + unsigned int i; > > + int err; > > + > > + err = stmmac_get_platform_resources(pdev, &stmmac_res); > > + if (err) > > + return dev_err_probe(dev, err, > > + "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(dev, PTR_ERR(plat_dat), > > + "dt configuration failed\n"); > > + > > + gbeth = devm_kzalloc(dev, sizeof(*gbeth), GFP_KERNEL); > > + if (!gbeth) > > + return -ENOMEM; > > + > > + plat_dat->num_clks = ARRAY_SIZE(renesas_gbeth_clks); > > + plat_dat->clks = devm_kcalloc(dev, plat_dat->num_clks, > > + sizeof(*plat_dat->clks), GFP_KERNEL); > > + if (!plat_dat->clks) > > + return -ENOMEM; > > + > > + for (i = 0; i < plat_dat->num_clks; i++) > > + plat_dat->clks[i].id = renesas_gbeth_clks[i]; > > + > > + err = devm_clk_bulk_get(dev, plat_dat->num_clks, plat_dat->clks); > > + if (err < 0) > > + return err; > > + > > + plat_dat->clk_tx_i = renesas_gbeth_find_clk(plat_dat, "tx"); > > + if (!plat_dat->clk_tx_i) > > + return dev_err_probe(dev, -EINVAL, > > + "error finding tx clock\n"); > > + > > + gbeth->rstc = devm_reset_control_get_exclusive(dev, NULL); > > + if (IS_ERR(gbeth->rstc)) > > + return PTR_ERR(gbeth->rstc); > > + > > + gbeth->dev = dev; > > + gbeth->regs = stmmac_res.addr; > > + gbeth->plat_dat = plat_dat; > > + plat_dat->bsp_priv = gbeth; > > + plat_dat->set_clk_tx_rate = stmmac_set_clk_tx_rate; > > + plat_dat->clks_config = renesas_gbeth_clks_config; > > + plat_dat->flags |= STMMAC_FLAG_HWTSTAMP_CORRECT_LATENCY | > > + STMMAC_FLAG_EN_TX_LPI_CLK_PHY_CAP | > > The above does not compile: > > ../drivers/net/ethernet/stmicro/stmmac/dwmac-renesas-gbeth.c:124:7: > error: use of undeclared identifier 'STMMAC_FLAG_EN_TX_LPI_CLK_PHY_CAP' > As pointed out by Russell it depends on patch [0]. https://lore.kernel.org/all/E1tsITp-005vG9-Px@rmk-PC.armlinux.org.uk/ > > > + STMMAC_FLAG_SPH_DISABLE; > > + > > + err = renesas_gbeth_clks_config(gbeth, true); > > + if (err) > > + return err; > > + > > + err = stmmac_dvr_probe(dev, plat_dat, &stmmac_res); > > + if (err) { > > + renesas_gbeth_clks_config(gbeth, false); > > + return err; > > Just: > > if (err) > renesas_gbeth_clks_config(gbeth, false); > > return err; > Ok, I will update the code as above. Cheers, Prabhakar ^ permalink raw reply [flat|nested] 9+ messages in thread
end of thread, other threads:[~2025-03-18 12:23 UTC | newest] Thread overview: 9+ messages (download: mbox.gz follow: Atom feed -- links below jump to the message on this page -- 2025-03-11 22:17 [PATCH net-next v3 0/3] Add GBETH glue layer driver for Renesas RZ/V2H(P) SoC Prabhakar 2025-03-11 22:17 ` [PATCH net-next v3 1/3] dt-bindings: net: dwmac: Increase 'maxItems' for 'interrupts' and 'interrupt-names' Prabhakar 2025-03-12 13:16 ` Rob Herring 2025-03-14 2:22 ` Lad, Prabhakar 2025-03-11 22:17 ` [PATCH net-next v3 2/3] dt-bindings: net: Document support for Renesas RZ/V2H(P) GBETH Prabhakar 2025-03-11 22:17 ` [PATCH net-next v3 3/3] net: stmmac: Add DWMAC glue layer for Renesas GBETH Prabhakar 2025-03-18 11:49 ` Paolo Abeni 2025-03-18 12:05 ` Russell King (Oracle) 2025-03-18 12:23 ` Lad, Prabhakar
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).