* [PATCH net-next v7 0/3] Add support for Nuvoton MA35D1 GMAC
@ 2025-01-13 5:54 ` Joey Lu
0 siblings, 0 replies; 27+ messages in thread
From: Joey Lu @ 2025-01-13 5:54 UTC (permalink / raw)
To: andrew+netdev, davem, edumazet, kuba, pabeni, robh, krzk+dt,
conor+dt, mcoquelin.stm32, richardcochran
Cc: alexandre.torgue, joabreu, ychuang3, schung, yclu4,
peppe.cavallaro, linux-arm-kernel, netdev, devicetree,
linux-kernel, openbmc, linux-stm32, Joey Lu
This patch series is submitted to add GMAC support for Nuvoton MA35D1
SoC platform. This work involves implementing a GMAC driver glue layer
based on Synopsys DWMAC driver framework to leverage MA35D1's dual GMAC
interface capabilities.
Overview:
1. Added a GMAC driver glue layer for MA35D1 SoC, providing support for
the platform's two GMAC interfaces.
2. Added device tree settings, with specific configurations for our
development boards:
a. SOM board: Configured for two RGMII interfaces.
b. IoT board: Configured with one RGMII and one RMII interface.
3. Added dt-bindings for the GMAC interfaces.
v7:
- Update dwmac-nuvoton driver
- Update probe function to use stmmac_pltfr_probe instead.
v6:
- Update dwmac-nuvoton driver
- Use NVT as the previx for all functions, structs, and defines.
- Remove unnecessary comments.
v5:
- Update yaml
- Remove the properties already defined in snps dwmac.
- Update dwmac-nuvoton driver
- Add a comment to explain the override of PMT flag.
v4:
- Update yaml
- Remove unnecessary property 'select'.
- Remove unnecessary compatible entries and fix items.
- Specify number of entries for 'reg'.
- Remove already defined property 'phy-handle'.
- Update example.
- Modify the property internal path delay to match the driver.
- Update dtsi
- Move 'status' to be the last property.
- Update dwmac-nuvoton driver
- Use remove instead of remove_new.
- Use dev_err_probe instead.
v3:
- Update yaml
- Fix for dt_binding_check warnings & errors.
- Add compatible in snps dwmac.
- Update dtsi
- Update dtsi to follow examples in yaml.
- Update dwmac-nuvoton driver
- Fix for auto build test warnings.
- Invalid path delay arguments will be returned.
v2:
- Update yaml
- Rename file to align with the compatible property.
- Add an argument to syscon to replace mac-id,
with corresponding descriptions.
- Use tx-internal-delay-ps and rx-internal-delay-ps properties for
configurable path delay with corresponding descriptions,
allowing selection between GMAC internal and PHY.
- Add all supported phy-mode options.
- Remove unused properties.
- Update dtsi
- Modify syscon configuration to include an argument for
GMAC interface selection.
- Update dwmac-nuvoton driver
- Remove redundant device information print statements.
- Remove non-global parameters.
- Retrieve GMAC interface selection from the syscon argument.
- Parse Tx and Rx path delays by correct properties.
- Update configurations to support Wake-on-LAN.
Joey Lu (3):
dt-bindings: net: nuvoton: Add schema for Nuvoton MA35 family GMAC
arm64: dts: nuvoton: Add Ethernet nodes
net: stmmac: dwmac-nuvoton: Add dwmac glue for Nuvoton MA35 family
.../bindings/net/nuvoton,ma35d1-dwmac.yaml | 126 ++++++++++++
.../devicetree/bindings/net/snps,dwmac.yaml | 1 +
.../boot/dts/nuvoton/ma35d1-iot-512m.dts | 12 ++
.../boot/dts/nuvoton/ma35d1-som-256m.dts | 10 +
arch/arm64/boot/dts/nuvoton/ma35d1.dtsi | 54 ++++++
drivers/net/ethernet/stmicro/stmmac/Kconfig | 11 ++
drivers/net/ethernet/stmicro/stmmac/Makefile | 1 +
.../ethernet/stmicro/stmmac/dwmac-nuvoton.c | 179 ++++++++++++++++++
8 files changed, 394 insertions(+)
create mode 100644 Documentation/devicetree/bindings/net/nuvoton,ma35d1-dwmac.yaml
create mode 100644 drivers/net/ethernet/stmicro/stmmac/dwmac-nuvoton.c
--
2.34.1
^ permalink raw reply [flat|nested] 27+ messages in thread* [PATCH net-next v7 0/3] Add support for Nuvoton MA35D1 GMAC @ 2025-01-13 5:54 ` Joey Lu 0 siblings, 0 replies; 27+ messages in thread From: Joey Lu @ 2025-01-13 5:54 UTC (permalink / raw) To: andrew+netdev, davem, edumazet, kuba, pabeni, robh, krzk+dt, conor+dt, mcoquelin.stm32, richardcochran Cc: devicetree, ychuang3, Joey Lu, netdev, openbmc, alexandre.torgue, linux-kernel, joabreu, schung, peppe.cavallaro, yclu4, linux-stm32, linux-arm-kernel This patch series is submitted to add GMAC support for Nuvoton MA35D1 SoC platform. This work involves implementing a GMAC driver glue layer based on Synopsys DWMAC driver framework to leverage MA35D1's dual GMAC interface capabilities. Overview: 1. Added a GMAC driver glue layer for MA35D1 SoC, providing support for the platform's two GMAC interfaces. 2. Added device tree settings, with specific configurations for our development boards: a. SOM board: Configured for two RGMII interfaces. b. IoT board: Configured with one RGMII and one RMII interface. 3. Added dt-bindings for the GMAC interfaces. v7: - Update dwmac-nuvoton driver - Update probe function to use stmmac_pltfr_probe instead. v6: - Update dwmac-nuvoton driver - Use NVT as the previx for all functions, structs, and defines. - Remove unnecessary comments. v5: - Update yaml - Remove the properties already defined in snps dwmac. - Update dwmac-nuvoton driver - Add a comment to explain the override of PMT flag. v4: - Update yaml - Remove unnecessary property 'select'. - Remove unnecessary compatible entries and fix items. - Specify number of entries for 'reg'. - Remove already defined property 'phy-handle'. - Update example. - Modify the property internal path delay to match the driver. - Update dtsi - Move 'status' to be the last property. - Update dwmac-nuvoton driver - Use remove instead of remove_new. - Use dev_err_probe instead. v3: - Update yaml - Fix for dt_binding_check warnings & errors. - Add compatible in snps dwmac. - Update dtsi - Update dtsi to follow examples in yaml. - Update dwmac-nuvoton driver - Fix for auto build test warnings. - Invalid path delay arguments will be returned. v2: - Update yaml - Rename file to align with the compatible property. - Add an argument to syscon to replace mac-id, with corresponding descriptions. - Use tx-internal-delay-ps and rx-internal-delay-ps properties for configurable path delay with corresponding descriptions, allowing selection between GMAC internal and PHY. - Add all supported phy-mode options. - Remove unused properties. - Update dtsi - Modify syscon configuration to include an argument for GMAC interface selection. - Update dwmac-nuvoton driver - Remove redundant device information print statements. - Remove non-global parameters. - Retrieve GMAC interface selection from the syscon argument. - Parse Tx and Rx path delays by correct properties. - Update configurations to support Wake-on-LAN. Joey Lu (3): dt-bindings: net: nuvoton: Add schema for Nuvoton MA35 family GMAC arm64: dts: nuvoton: Add Ethernet nodes net: stmmac: dwmac-nuvoton: Add dwmac glue for Nuvoton MA35 family .../bindings/net/nuvoton,ma35d1-dwmac.yaml | 126 ++++++++++++ .../devicetree/bindings/net/snps,dwmac.yaml | 1 + .../boot/dts/nuvoton/ma35d1-iot-512m.dts | 12 ++ .../boot/dts/nuvoton/ma35d1-som-256m.dts | 10 + arch/arm64/boot/dts/nuvoton/ma35d1.dtsi | 54 ++++++ drivers/net/ethernet/stmicro/stmmac/Kconfig | 11 ++ drivers/net/ethernet/stmicro/stmmac/Makefile | 1 + .../ethernet/stmicro/stmmac/dwmac-nuvoton.c | 179 ++++++++++++++++++ 8 files changed, 394 insertions(+) create mode 100644 Documentation/devicetree/bindings/net/nuvoton,ma35d1-dwmac.yaml create mode 100644 drivers/net/ethernet/stmicro/stmmac/dwmac-nuvoton.c -- 2.34.1 ^ permalink raw reply [flat|nested] 27+ messages in thread
* [PATCH net-next v7 1/3] dt-bindings: net: nuvoton: Add schema for Nuvoton MA35 family GMAC 2025-01-13 5:54 ` Joey Lu @ 2025-01-13 5:54 ` Joey Lu -1 siblings, 0 replies; 27+ messages in thread From: Joey Lu @ 2025-01-13 5:54 UTC (permalink / raw) To: andrew+netdev, davem, edumazet, kuba, pabeni, robh, krzk+dt, conor+dt, mcoquelin.stm32, richardcochran Cc: alexandre.torgue, joabreu, ychuang3, schung, yclu4, peppe.cavallaro, linux-arm-kernel, netdev, devicetree, linux-kernel, openbmc, linux-stm32, Joey Lu Create initial schema for Nuvoton MA35 family Gigabit MAC. Reviewed-by: Rob Herring (Arm) <robh@kernel.org> Signed-off-by: Joey Lu <a0987203069@gmail.com> --- .../bindings/net/nuvoton,ma35d1-dwmac.yaml | 126 ++++++++++++++++++ .../devicetree/bindings/net/snps,dwmac.yaml | 1 + 2 files changed, 127 insertions(+) create mode 100644 Documentation/devicetree/bindings/net/nuvoton,ma35d1-dwmac.yaml diff --git a/Documentation/devicetree/bindings/net/nuvoton,ma35d1-dwmac.yaml b/Documentation/devicetree/bindings/net/nuvoton,ma35d1-dwmac.yaml new file mode 100644 index 000000000000..c3f2ad423cc0 --- /dev/null +++ b/Documentation/devicetree/bindings/net/nuvoton,ma35d1-dwmac.yaml @@ -0,0 +1,126 @@ +# SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause) +%YAML 1.2 +--- +$id: http://devicetree.org/schemas/net/nuvoton,ma35d1-dwmac.yaml# +$schema: http://devicetree.org/meta-schemas/core.yaml# + +title: Nuvoton DWMAC glue layer controller + +maintainers: + - Joey Lu <yclu4@nuvoton.com> + +description: + Nuvoton 10/100/1000Mbps Gigabit Ethernet MAC Controller is based on + Synopsys DesignWare MAC (version 3.73a). + +allOf: + - $ref: snps,dwmac.yaml# + +properties: + compatible: + items: + - enum: + - nuvoton,ma35d1-dwmac + + reg: + maxItems: 1 + description: + Register range should be one of the GMAC interface. + + interrupts: + maxItems: 1 + + clocks: + items: + - description: MAC clock + - description: PTP clock + + clock-names: + items: + - const: stmmaceth + - const: ptp_ref + + nuvoton,sys: + $ref: /schemas/types.yaml#/definitions/phandle-array + items: + - items: + - description: phandle to access syscon registers. + - description: GMAC interface ID. + enum: + - 0 + - 1 + description: + A phandle to the syscon with one argument that configures system registers + for MA35D1's two GMACs. The argument specifies the GMAC interface ID. + + resets: + maxItems: 1 + + reset-names: + items: + - const: stmmaceth + + phy-mode: + enum: + - rmii + - rgmii + - rgmii-id + - rgmii-txid + - rgmii-rxid + + tx-internal-delay-ps: + default: 0 + minimum: 0 + maximum: 2000 + description: + RGMII TX path delay used only when PHY operates in RGMII mode with + internal delay (phy-mode is 'rgmii-id' or 'rgmii-txid') in pico-seconds. + Allowed values are from 0 to 2000. + + rx-internal-delay-ps: + default: 0 + minimum: 0 + maximum: 2000 + description: + RGMII RX path delay used only when PHY operates in RGMII mode with + internal delay (phy-mode is 'rgmii-id' or 'rgmii-rxid') in pico-seconds. + Allowed values are from 0 to 2000. + +required: + - clocks + - clock-names + - nuvoton,sys + - resets + - reset-names + +unevaluatedProperties: false + +examples: + - | + #include <dt-bindings/interrupt-controller/arm-gic.h> + #include <dt-bindings/clock/nuvoton,ma35d1-clk.h> + #include <dt-bindings/reset/nuvoton,ma35d1-reset.h> + ethernet@40120000 { + compatible = "nuvoton,ma35d1-dwmac"; + reg = <0x40120000 0x10000>; + interrupts = <GIC_SPI 23 IRQ_TYPE_LEVEL_HIGH>; + interrupt-names = "macirq"; + clocks = <&clk EMAC0_GATE>, <&clk EPLL_DIV8>; + clock-names = "stmmaceth", "ptp_ref"; + + nuvoton,sys = <&sys 0>; + resets = <&sys MA35D1_RESET_GMAC0>; + reset-names = "stmmaceth"; + + phy-mode = "rgmii-id"; + phy-handle = <ð_phy0>; + mdio { + compatible = "snps,dwmac-mdio"; + #address-cells = <1>; + #size-cells = <0>; + + ethernet-phy@0 { + reg = <0>; + }; + }; + }; diff --git a/Documentation/devicetree/bindings/net/snps,dwmac.yaml b/Documentation/devicetree/bindings/net/snps,dwmac.yaml index 91e75eb3f329..c43dcae74495 100644 --- a/Documentation/devicetree/bindings/net/snps,dwmac.yaml +++ b/Documentation/devicetree/bindings/net/snps,dwmac.yaml @@ -67,6 +67,7 @@ properties: - ingenic,x2000-mac - loongson,ls2k-dwmac - loongson,ls7a-dwmac + - nuvoton,ma35d1-dwmac - nxp,s32g2-dwmac - qcom,qcs404-ethqos - qcom,sa8775p-ethqos -- 2.34.1 ^ permalink raw reply related [flat|nested] 27+ messages in thread
* [PATCH net-next v7 1/3] dt-bindings: net: nuvoton: Add schema for Nuvoton MA35 family GMAC @ 2025-01-13 5:54 ` Joey Lu 0 siblings, 0 replies; 27+ messages in thread From: Joey Lu @ 2025-01-13 5:54 UTC (permalink / raw) To: andrew+netdev, davem, edumazet, kuba, pabeni, robh, krzk+dt, conor+dt, mcoquelin.stm32, richardcochran Cc: devicetree, ychuang3, Joey Lu, netdev, openbmc, alexandre.torgue, linux-kernel, joabreu, schung, peppe.cavallaro, yclu4, linux-stm32, linux-arm-kernel Create initial schema for Nuvoton MA35 family Gigabit MAC. Reviewed-by: Rob Herring (Arm) <robh@kernel.org> Signed-off-by: Joey Lu <a0987203069@gmail.com> --- .../bindings/net/nuvoton,ma35d1-dwmac.yaml | 126 ++++++++++++++++++ .../devicetree/bindings/net/snps,dwmac.yaml | 1 + 2 files changed, 127 insertions(+) create mode 100644 Documentation/devicetree/bindings/net/nuvoton,ma35d1-dwmac.yaml diff --git a/Documentation/devicetree/bindings/net/nuvoton,ma35d1-dwmac.yaml b/Documentation/devicetree/bindings/net/nuvoton,ma35d1-dwmac.yaml new file mode 100644 index 000000000000..c3f2ad423cc0 --- /dev/null +++ b/Documentation/devicetree/bindings/net/nuvoton,ma35d1-dwmac.yaml @@ -0,0 +1,126 @@ +# SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause) +%YAML 1.2 +--- +$id: http://devicetree.org/schemas/net/nuvoton,ma35d1-dwmac.yaml# +$schema: http://devicetree.org/meta-schemas/core.yaml# + +title: Nuvoton DWMAC glue layer controller + +maintainers: + - Joey Lu <yclu4@nuvoton.com> + +description: + Nuvoton 10/100/1000Mbps Gigabit Ethernet MAC Controller is based on + Synopsys DesignWare MAC (version 3.73a). + +allOf: + - $ref: snps,dwmac.yaml# + +properties: + compatible: + items: + - enum: + - nuvoton,ma35d1-dwmac + + reg: + maxItems: 1 + description: + Register range should be one of the GMAC interface. + + interrupts: + maxItems: 1 + + clocks: + items: + - description: MAC clock + - description: PTP clock + + clock-names: + items: + - const: stmmaceth + - const: ptp_ref + + nuvoton,sys: + $ref: /schemas/types.yaml#/definitions/phandle-array + items: + - items: + - description: phandle to access syscon registers. + - description: GMAC interface ID. + enum: + - 0 + - 1 + description: + A phandle to the syscon with one argument that configures system registers + for MA35D1's two GMACs. The argument specifies the GMAC interface ID. + + resets: + maxItems: 1 + + reset-names: + items: + - const: stmmaceth + + phy-mode: + enum: + - rmii + - rgmii + - rgmii-id + - rgmii-txid + - rgmii-rxid + + tx-internal-delay-ps: + default: 0 + minimum: 0 + maximum: 2000 + description: + RGMII TX path delay used only when PHY operates in RGMII mode with + internal delay (phy-mode is 'rgmii-id' or 'rgmii-txid') in pico-seconds. + Allowed values are from 0 to 2000. + + rx-internal-delay-ps: + default: 0 + minimum: 0 + maximum: 2000 + description: + RGMII RX path delay used only when PHY operates in RGMII mode with + internal delay (phy-mode is 'rgmii-id' or 'rgmii-rxid') in pico-seconds. + Allowed values are from 0 to 2000. + +required: + - clocks + - clock-names + - nuvoton,sys + - resets + - reset-names + +unevaluatedProperties: false + +examples: + - | + #include <dt-bindings/interrupt-controller/arm-gic.h> + #include <dt-bindings/clock/nuvoton,ma35d1-clk.h> + #include <dt-bindings/reset/nuvoton,ma35d1-reset.h> + ethernet@40120000 { + compatible = "nuvoton,ma35d1-dwmac"; + reg = <0x40120000 0x10000>; + interrupts = <GIC_SPI 23 IRQ_TYPE_LEVEL_HIGH>; + interrupt-names = "macirq"; + clocks = <&clk EMAC0_GATE>, <&clk EPLL_DIV8>; + clock-names = "stmmaceth", "ptp_ref"; + + nuvoton,sys = <&sys 0>; + resets = <&sys MA35D1_RESET_GMAC0>; + reset-names = "stmmaceth"; + + phy-mode = "rgmii-id"; + phy-handle = <ð_phy0>; + mdio { + compatible = "snps,dwmac-mdio"; + #address-cells = <1>; + #size-cells = <0>; + + ethernet-phy@0 { + reg = <0>; + }; + }; + }; diff --git a/Documentation/devicetree/bindings/net/snps,dwmac.yaml b/Documentation/devicetree/bindings/net/snps,dwmac.yaml index 91e75eb3f329..c43dcae74495 100644 --- a/Documentation/devicetree/bindings/net/snps,dwmac.yaml +++ b/Documentation/devicetree/bindings/net/snps,dwmac.yaml @@ -67,6 +67,7 @@ properties: - ingenic,x2000-mac - loongson,ls2k-dwmac - loongson,ls7a-dwmac + - nuvoton,ma35d1-dwmac - nxp,s32g2-dwmac - qcom,qcs404-ethqos - qcom,sa8775p-ethqos -- 2.34.1 ^ permalink raw reply related [flat|nested] 27+ messages in thread
* [PATCH net-next v7 2/3] arm64: dts: nuvoton: Add Ethernet nodes 2025-01-13 5:54 ` Joey Lu @ 2025-01-13 5:54 ` Joey Lu -1 siblings, 0 replies; 27+ messages in thread From: Joey Lu @ 2025-01-13 5:54 UTC (permalink / raw) To: andrew+netdev, davem, edumazet, kuba, pabeni, robh, krzk+dt, conor+dt, mcoquelin.stm32, richardcochran Cc: alexandre.torgue, joabreu, ychuang3, schung, yclu4, peppe.cavallaro, linux-arm-kernel, netdev, devicetree, linux-kernel, openbmc, linux-stm32, Joey Lu Add GMAC nodes for our MA35D1 development boards: two RGMII interfaces for SOM board, and one RGMII and one RMII interface for IoT board. Signed-off-by: Joey Lu <a0987203069@gmail.com> --- .../boot/dts/nuvoton/ma35d1-iot-512m.dts | 12 +++++ .../boot/dts/nuvoton/ma35d1-som-256m.dts | 10 ++++ arch/arm64/boot/dts/nuvoton/ma35d1.dtsi | 54 +++++++++++++++++++ 3 files changed, 76 insertions(+) diff --git a/arch/arm64/boot/dts/nuvoton/ma35d1-iot-512m.dts b/arch/arm64/boot/dts/nuvoton/ma35d1-iot-512m.dts index 9482bec1aa57..5cc712ae92d8 100644 --- a/arch/arm64/boot/dts/nuvoton/ma35d1-iot-512m.dts +++ b/arch/arm64/boot/dts/nuvoton/ma35d1-iot-512m.dts @@ -18,6 +18,8 @@ aliases { serial12 = &uart12; serial13 = &uart13; serial14 = &uart14; + ethernet0 = &gmac0; + ethernet1 = &gmac1; }; chosen { @@ -126,3 +128,13 @@ &uart14 { pinctrl-0 = <&pinctrl_uart14>; status = "okay"; }; + +&gmac0 { + phy-mode = "rgmii-id"; + status = "okay"; +}; + +&gmac1 { + phy-mode = "rmii"; + status = "okay"; +}; diff --git a/arch/arm64/boot/dts/nuvoton/ma35d1-som-256m.dts b/arch/arm64/boot/dts/nuvoton/ma35d1-som-256m.dts index f6f20a17e501..1d9ac350a1f1 100644 --- a/arch/arm64/boot/dts/nuvoton/ma35d1-som-256m.dts +++ b/arch/arm64/boot/dts/nuvoton/ma35d1-som-256m.dts @@ -18,6 +18,8 @@ aliases { serial12 = &uart12; serial14 = &uart14; serial16 = &uart16; + ethernet0 = &gmac0; + ethernet1 = &gmac1; }; chosen { @@ -129,3 +131,11 @@ &uart16 { pinctrl-0 = <&pinctrl_uart16>; status = "okay"; }; + +&gmac0 { + status = "okay"; +}; + +&gmac1 { + status = "okay"; +}; diff --git a/arch/arm64/boot/dts/nuvoton/ma35d1.dtsi b/arch/arm64/boot/dts/nuvoton/ma35d1.dtsi index e51b98f5bdce..89712e262ee6 100644 --- a/arch/arm64/boot/dts/nuvoton/ma35d1.dtsi +++ b/arch/arm64/boot/dts/nuvoton/ma35d1.dtsi @@ -379,5 +379,59 @@ uart16: serial@40880000 { clocks = <&clk UART16_GATE>; status = "disabled"; }; + + gmac0: ethernet@40120000 { + compatible = "nuvoton,ma35d1-dwmac"; + reg = <0x0 0x40120000 0x0 0x10000>; + interrupts = <GIC_SPI 23 IRQ_TYPE_LEVEL_HIGH>; + interrupt-names = "macirq"; + clocks = <&clk EMAC0_GATE>, <&clk EPLL_DIV8>; + clock-names = "stmmaceth", "ptp_ref"; + + nuvoton,sys = <&sys 0>; + resets = <&sys MA35D1_RESET_GMAC0>; + reset-names = "stmmaceth"; + + phy-mode = "rgmii-id"; + phy-handle = <ð_phy0>; + status = "disabled"; + + mdio0: mdio { + compatible = "snps,dwmac-mdio"; + #address-cells = <1>; + #size-cells = <0>; + + eth_phy0: ethernet-phy@0 { + reg = <0>; + }; + }; + }; + + gmac1: ethernet@40130000 { + compatible = "nuvoton,ma35d1-dwmac"; + reg = <0x0 0x40130000 0x0 0x10000>; + interrupts = <GIC_SPI 24 IRQ_TYPE_LEVEL_HIGH>; + interrupt-names = "macirq"; + clocks = <&clk EMAC1_GATE>, <&clk EPLL_DIV8>; + clock-names = "stmmaceth", "ptp_ref"; + + nuvoton,sys = <&sys 1>; + resets = <&sys MA35D1_RESET_GMAC1>; + reset-names = "stmmaceth"; + + phy-mode = "rgmii-id"; + phy-handle = <ð_phy1>; + status = "disabled"; + + mdio1: mdio { + compatible = "snps,dwmac-mdio"; + #address-cells = <1>; + #size-cells = <0>; + + eth_phy1: ethernet-phy@1 { + reg = <1>; + }; + }; + }; }; }; -- 2.34.1 ^ permalink raw reply related [flat|nested] 27+ messages in thread
* [PATCH net-next v7 2/3] arm64: dts: nuvoton: Add Ethernet nodes @ 2025-01-13 5:54 ` Joey Lu 0 siblings, 0 replies; 27+ messages in thread From: Joey Lu @ 2025-01-13 5:54 UTC (permalink / raw) To: andrew+netdev, davem, edumazet, kuba, pabeni, robh, krzk+dt, conor+dt, mcoquelin.stm32, richardcochran Cc: devicetree, ychuang3, Joey Lu, netdev, openbmc, alexandre.torgue, linux-kernel, joabreu, schung, peppe.cavallaro, yclu4, linux-stm32, linux-arm-kernel Add GMAC nodes for our MA35D1 development boards: two RGMII interfaces for SOM board, and one RGMII and one RMII interface for IoT board. Signed-off-by: Joey Lu <a0987203069@gmail.com> --- .../boot/dts/nuvoton/ma35d1-iot-512m.dts | 12 +++++ .../boot/dts/nuvoton/ma35d1-som-256m.dts | 10 ++++ arch/arm64/boot/dts/nuvoton/ma35d1.dtsi | 54 +++++++++++++++++++ 3 files changed, 76 insertions(+) diff --git a/arch/arm64/boot/dts/nuvoton/ma35d1-iot-512m.dts b/arch/arm64/boot/dts/nuvoton/ma35d1-iot-512m.dts index 9482bec1aa57..5cc712ae92d8 100644 --- a/arch/arm64/boot/dts/nuvoton/ma35d1-iot-512m.dts +++ b/arch/arm64/boot/dts/nuvoton/ma35d1-iot-512m.dts @@ -18,6 +18,8 @@ aliases { serial12 = &uart12; serial13 = &uart13; serial14 = &uart14; + ethernet0 = &gmac0; + ethernet1 = &gmac1; }; chosen { @@ -126,3 +128,13 @@ &uart14 { pinctrl-0 = <&pinctrl_uart14>; status = "okay"; }; + +&gmac0 { + phy-mode = "rgmii-id"; + status = "okay"; +}; + +&gmac1 { + phy-mode = "rmii"; + status = "okay"; +}; diff --git a/arch/arm64/boot/dts/nuvoton/ma35d1-som-256m.dts b/arch/arm64/boot/dts/nuvoton/ma35d1-som-256m.dts index f6f20a17e501..1d9ac350a1f1 100644 --- a/arch/arm64/boot/dts/nuvoton/ma35d1-som-256m.dts +++ b/arch/arm64/boot/dts/nuvoton/ma35d1-som-256m.dts @@ -18,6 +18,8 @@ aliases { serial12 = &uart12; serial14 = &uart14; serial16 = &uart16; + ethernet0 = &gmac0; + ethernet1 = &gmac1; }; chosen { @@ -129,3 +131,11 @@ &uart16 { pinctrl-0 = <&pinctrl_uart16>; status = "okay"; }; + +&gmac0 { + status = "okay"; +}; + +&gmac1 { + status = "okay"; +}; diff --git a/arch/arm64/boot/dts/nuvoton/ma35d1.dtsi b/arch/arm64/boot/dts/nuvoton/ma35d1.dtsi index e51b98f5bdce..89712e262ee6 100644 --- a/arch/arm64/boot/dts/nuvoton/ma35d1.dtsi +++ b/arch/arm64/boot/dts/nuvoton/ma35d1.dtsi @@ -379,5 +379,59 @@ uart16: serial@40880000 { clocks = <&clk UART16_GATE>; status = "disabled"; }; + + gmac0: ethernet@40120000 { + compatible = "nuvoton,ma35d1-dwmac"; + reg = <0x0 0x40120000 0x0 0x10000>; + interrupts = <GIC_SPI 23 IRQ_TYPE_LEVEL_HIGH>; + interrupt-names = "macirq"; + clocks = <&clk EMAC0_GATE>, <&clk EPLL_DIV8>; + clock-names = "stmmaceth", "ptp_ref"; + + nuvoton,sys = <&sys 0>; + resets = <&sys MA35D1_RESET_GMAC0>; + reset-names = "stmmaceth"; + + phy-mode = "rgmii-id"; + phy-handle = <ð_phy0>; + status = "disabled"; + + mdio0: mdio { + compatible = "snps,dwmac-mdio"; + #address-cells = <1>; + #size-cells = <0>; + + eth_phy0: ethernet-phy@0 { + reg = <0>; + }; + }; + }; + + gmac1: ethernet@40130000 { + compatible = "nuvoton,ma35d1-dwmac"; + reg = <0x0 0x40130000 0x0 0x10000>; + interrupts = <GIC_SPI 24 IRQ_TYPE_LEVEL_HIGH>; + interrupt-names = "macirq"; + clocks = <&clk EMAC1_GATE>, <&clk EPLL_DIV8>; + clock-names = "stmmaceth", "ptp_ref"; + + nuvoton,sys = <&sys 1>; + resets = <&sys MA35D1_RESET_GMAC1>; + reset-names = "stmmaceth"; + + phy-mode = "rgmii-id"; + phy-handle = <ð_phy1>; + status = "disabled"; + + mdio1: mdio { + compatible = "snps,dwmac-mdio"; + #address-cells = <1>; + #size-cells = <0>; + + eth_phy1: ethernet-phy@1 { + reg = <1>; + }; + }; + }; }; }; -- 2.34.1 ^ permalink raw reply related [flat|nested] 27+ messages in thread
* [PATCH net-next v7 3/3] net: stmmac: dwmac-nuvoton: Add dwmac glue for Nuvoton MA35 family 2025-01-13 5:54 ` Joey Lu @ 2025-01-13 5:54 ` Joey Lu -1 siblings, 0 replies; 27+ messages in thread From: Joey Lu @ 2025-01-13 5:54 UTC (permalink / raw) To: andrew+netdev, davem, edumazet, kuba, pabeni, robh, krzk+dt, conor+dt, mcoquelin.stm32, richardcochran Cc: alexandre.torgue, joabreu, ychuang3, schung, yclu4, peppe.cavallaro, linux-arm-kernel, netdev, devicetree, linux-kernel, openbmc, linux-stm32, Joey Lu, Andrew Lunn Add support for Gigabit Ethernet on Nuvoton MA35 series using dwmac driver. Reviewed-by: Andrew Lunn <andrew@lunn.ch> Signed-off-by: Joey Lu <a0987203069@gmail.com> --- drivers/net/ethernet/stmicro/stmmac/Kconfig | 11 ++ drivers/net/ethernet/stmicro/stmmac/Makefile | 1 + .../ethernet/stmicro/stmmac/dwmac-nuvoton.c | 179 ++++++++++++++++++ 3 files changed, 191 insertions(+) create mode 100644 drivers/net/ethernet/stmicro/stmmac/dwmac-nuvoton.c diff --git a/drivers/net/ethernet/stmicro/stmmac/Kconfig b/drivers/net/ethernet/stmicro/stmmac/Kconfig index 4cc85a36a1ab..2b424544cf6f 100644 --- a/drivers/net/ethernet/stmicro/stmmac/Kconfig +++ b/drivers/net/ethernet/stmicro/stmmac/Kconfig @@ -121,6 +121,17 @@ config DWMAC_MESON the stmmac device driver. This driver is used for Meson6, Meson8, Meson8b and GXBB SoCs. +config DWMAC_NUVOTON + tristate "Nuvoton MA35 dwmac support" + default ARCH_MA35 + depends on OF && (ARCH_MA35 || COMPILE_TEST) + select MFD_SYSCON + help + Support for Ethernet controller on Nuvoton MA35 series SoC. + + This selects the Nuvoton MA35 series SoC glue layer support + for the stmmac device driver. + config DWMAC_QCOM_ETHQOS tristate "Qualcomm ETHQOS support" default ARCH_QCOM diff --git a/drivers/net/ethernet/stmicro/stmmac/Makefile b/drivers/net/ethernet/stmicro/stmmac/Makefile index b26f0e79c2b3..48e25b85ea06 100644 --- a/drivers/net/ethernet/stmicro/stmmac/Makefile +++ b/drivers/net/ethernet/stmicro/stmmac/Makefile @@ -19,6 +19,7 @@ obj-$(CONFIG_DWMAC_IPQ806X) += dwmac-ipq806x.o 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_NUVOTON) += dwmac-nuvoton.o obj-$(CONFIG_DWMAC_QCOM_ETHQOS) += dwmac-qcom-ethqos.o obj-$(CONFIG_DWMAC_ROCKCHIP) += dwmac-rk.o obj-$(CONFIG_DWMAC_RZN1) += dwmac-rzn1.o diff --git a/drivers/net/ethernet/stmicro/stmmac/dwmac-nuvoton.c b/drivers/net/ethernet/stmicro/stmmac/dwmac-nuvoton.c new file mode 100644 index 000000000000..edf1b88ce1cd --- /dev/null +++ b/drivers/net/ethernet/stmicro/stmmac/dwmac-nuvoton.c @@ -0,0 +1,179 @@ +// SPDX-License-Identifier: GPL-2.0-only +/* + * Nuvoton DWMAC specific glue layer + * + * Copyright (C) 2024 Nuvoton Technology Corp. + * + * Author: Joey Lu <yclu4@nuvoton.com> + */ + +#include <linux/mfd/syscon.h> +#include <linux/of_device.h> +#include <linux/of_net.h> +#include <linux/platform_device.h> +#include <linux/regmap.h> +#include <linux/stmmac.h> + +#include "stmmac.h" +#include "stmmac_platform.h" + +#define NVT_REG_SYS_GMAC0MISCR 0x108 +#define NVT_REG_SYS_GMAC1MISCR 0x10C + +#define NVT_MISCR_RMII BIT(0) + +/* 2000ps is mapped to 0x0 ~ 0xF */ +#define NVT_PATH_DELAY_DEC 134 +#define NVT_TX_DELAY_MASK GENMASK(19, 16) +#define NVT_RX_DELAY_MASK GENMASK(23, 20) + +struct nvt_priv_data { + struct platform_device *pdev; + struct regmap *regmap; +}; + +static struct nvt_priv_data * +nvt_gmac_setup(struct platform_device *pdev, struct plat_stmmacenet_data *plat) +{ + struct device *dev = &pdev->dev; + struct nvt_priv_data *bsp_priv; + phy_interface_t phy_mode; + u32 tx_delay, rx_delay; + u32 macid, arg, reg; + + bsp_priv = devm_kzalloc(dev, sizeof(*bsp_priv), GFP_KERNEL); + if (!bsp_priv) + return ERR_PTR(-ENOMEM); + + bsp_priv->regmap = + syscon_regmap_lookup_by_phandle_args(dev->of_node, "nuvoton,sys", 1, &macid); + if (IS_ERR(bsp_priv->regmap)) { + dev_err_probe(dev, PTR_ERR(bsp_priv->regmap), "Failed to get sys register\n"); + return ERR_PTR(-ENODEV); + } + if (macid > 1) { + dev_err_probe(dev, -EINVAL, "Invalid sys arguments\n"); + return ERR_PTR(-EINVAL); + } + + if (of_property_read_u32(dev->of_node, "tx-internal-delay-ps", &arg)) { + tx_delay = 0; + } else { + if (arg <= 2000) { + tx_delay = (arg == 2000) ? 0xF : (arg / NVT_PATH_DELAY_DEC); + dev_dbg(dev, "Set Tx path delay to 0x%x\n", tx_delay); + } else { + dev_err(dev, "Invalid Tx path delay argument.\n"); + return ERR_PTR(-EINVAL); + } + } + if (of_property_read_u32(dev->of_node, "rx-internal-delay-ps", &arg)) { + rx_delay = 0; + } else { + if (arg <= 2000) { + rx_delay = (arg == 2000) ? 0xF : (arg / NVT_PATH_DELAY_DEC); + dev_dbg(dev, "Set Rx path delay to 0x%x\n", rx_delay); + } else { + dev_err(dev, "Invalid Rx path delay argument.\n"); + return ERR_PTR(-EINVAL); + } + } + + regmap_read(bsp_priv->regmap, + macid == 0 ? NVT_REG_SYS_GMAC0MISCR : NVT_REG_SYS_GMAC1MISCR, ®); + reg &= ~(NVT_TX_DELAY_MASK | NVT_RX_DELAY_MASK); + + if (of_get_phy_mode(pdev->dev.of_node, &phy_mode)) { + dev_err(dev, "missing phy mode property\n"); + return ERR_PTR(-EINVAL); + } + + switch (phy_mode) { + case PHY_INTERFACE_MODE_RGMII: + case PHY_INTERFACE_MODE_RGMII_ID: + case PHY_INTERFACE_MODE_RGMII_RXID: + case PHY_INTERFACE_MODE_RGMII_TXID: + reg &= ~NVT_MISCR_RMII; + break; + case PHY_INTERFACE_MODE_RMII: + reg |= NVT_MISCR_RMII; + break; + default: + dev_err(dev, "Unsupported phy-mode (%d)\n", phy_mode); + return ERR_PTR(-EINVAL); + } + + if (!(reg & NVT_MISCR_RMII)) { + reg |= FIELD_PREP(NVT_TX_DELAY_MASK, tx_delay); + reg |= FIELD_PREP(NVT_RX_DELAY_MASK, rx_delay); + } + + regmap_write(bsp_priv->regmap, + macid == 0 ? NVT_REG_SYS_GMAC0MISCR : NVT_REG_SYS_GMAC1MISCR, reg); + + bsp_priv->pdev = pdev; + + return bsp_priv; +} + +static int nvt_gmac_probe(struct platform_device *pdev) +{ + struct plat_stmmacenet_data *plat_dat; + struct stmmac_resources stmmac_res; + struct nvt_priv_data *priv_data; + int ret; + + ret = stmmac_get_platform_resources(pdev, &stmmac_res); + if (ret) + return ret; + + plat_dat = devm_stmmac_probe_config_dt(pdev, stmmac_res.mac); + if (IS_ERR(plat_dat)) + return PTR_ERR(plat_dat); + + /* Nuvoton DWMAC configs */ + plat_dat->has_gmac = 1; + plat_dat->tx_fifo_size = 2048; + plat_dat->rx_fifo_size = 4096; + plat_dat->multicast_filter_bins = 0; + plat_dat->unicast_filter_entries = 8; + plat_dat->flags &= ~STMMAC_FLAG_USE_PHY_WOL; + + priv_data = nvt_gmac_setup(pdev, plat_dat); + if (IS_ERR(priv_data)) + return PTR_ERR(priv_data); + + ret = stmmac_pltfr_probe(pdev, plat_dat, &stmmac_res); + if (ret) + return ret; + + /* The PMT flag is determined by the RWK property. + * However, our hardware is configured to support only MGK. + * This is an override on PMT to enable WoL capability. + */ + plat_dat->pmt = 1; + device_set_wakeup_capable(&pdev->dev, 1); + + return 0; +} + +static const struct of_device_id nvt_dwmac_match[] = { + { .compatible = "nuvoton,ma35d1-dwmac"}, + { } +}; +MODULE_DEVICE_TABLE(of, nvt_dwmac_match); + +static struct platform_driver nvt_dwmac_driver = { + .probe = nvt_gmac_probe, + .remove = stmmac_pltfr_remove, + .driver = { + .name = "nuvoton-dwmac", + .pm = &stmmac_pltfr_pm_ops, + .of_match_table = nvt_dwmac_match, + }, +}; +module_platform_driver(nvt_dwmac_driver); + +MODULE_AUTHOR("Joey Lu <yclu4@nuvoton.com>"); +MODULE_DESCRIPTION("Nuvoton DWMAC specific glue layer"); +MODULE_LICENSE("GPL v2"); -- 2.34.1 ^ permalink raw reply related [flat|nested] 27+ messages in thread
* [PATCH net-next v7 3/3] net: stmmac: dwmac-nuvoton: Add dwmac glue for Nuvoton MA35 family @ 2025-01-13 5:54 ` Joey Lu 0 siblings, 0 replies; 27+ messages in thread From: Joey Lu @ 2025-01-13 5:54 UTC (permalink / raw) To: andrew+netdev, davem, edumazet, kuba, pabeni, robh, krzk+dt, conor+dt, mcoquelin.stm32, richardcochran Cc: devicetree, ychuang3, Joey Lu, netdev, openbmc, alexandre.torgue, linux-kernel, joabreu, Andrew Lunn, schung, peppe.cavallaro, yclu4, linux-stm32, linux-arm-kernel Add support for Gigabit Ethernet on Nuvoton MA35 series using dwmac driver. Reviewed-by: Andrew Lunn <andrew@lunn.ch> Signed-off-by: Joey Lu <a0987203069@gmail.com> --- drivers/net/ethernet/stmicro/stmmac/Kconfig | 11 ++ drivers/net/ethernet/stmicro/stmmac/Makefile | 1 + .../ethernet/stmicro/stmmac/dwmac-nuvoton.c | 179 ++++++++++++++++++ 3 files changed, 191 insertions(+) create mode 100644 drivers/net/ethernet/stmicro/stmmac/dwmac-nuvoton.c diff --git a/drivers/net/ethernet/stmicro/stmmac/Kconfig b/drivers/net/ethernet/stmicro/stmmac/Kconfig index 4cc85a36a1ab..2b424544cf6f 100644 --- a/drivers/net/ethernet/stmicro/stmmac/Kconfig +++ b/drivers/net/ethernet/stmicro/stmmac/Kconfig @@ -121,6 +121,17 @@ config DWMAC_MESON the stmmac device driver. This driver is used for Meson6, Meson8, Meson8b and GXBB SoCs. +config DWMAC_NUVOTON + tristate "Nuvoton MA35 dwmac support" + default ARCH_MA35 + depends on OF && (ARCH_MA35 || COMPILE_TEST) + select MFD_SYSCON + help + Support for Ethernet controller on Nuvoton MA35 series SoC. + + This selects the Nuvoton MA35 series SoC glue layer support + for the stmmac device driver. + config DWMAC_QCOM_ETHQOS tristate "Qualcomm ETHQOS support" default ARCH_QCOM diff --git a/drivers/net/ethernet/stmicro/stmmac/Makefile b/drivers/net/ethernet/stmicro/stmmac/Makefile index b26f0e79c2b3..48e25b85ea06 100644 --- a/drivers/net/ethernet/stmicro/stmmac/Makefile +++ b/drivers/net/ethernet/stmicro/stmmac/Makefile @@ -19,6 +19,7 @@ obj-$(CONFIG_DWMAC_IPQ806X) += dwmac-ipq806x.o 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_NUVOTON) += dwmac-nuvoton.o obj-$(CONFIG_DWMAC_QCOM_ETHQOS) += dwmac-qcom-ethqos.o obj-$(CONFIG_DWMAC_ROCKCHIP) += dwmac-rk.o obj-$(CONFIG_DWMAC_RZN1) += dwmac-rzn1.o diff --git a/drivers/net/ethernet/stmicro/stmmac/dwmac-nuvoton.c b/drivers/net/ethernet/stmicro/stmmac/dwmac-nuvoton.c new file mode 100644 index 000000000000..edf1b88ce1cd --- /dev/null +++ b/drivers/net/ethernet/stmicro/stmmac/dwmac-nuvoton.c @@ -0,0 +1,179 @@ +// SPDX-License-Identifier: GPL-2.0-only +/* + * Nuvoton DWMAC specific glue layer + * + * Copyright (C) 2024 Nuvoton Technology Corp. + * + * Author: Joey Lu <yclu4@nuvoton.com> + */ + +#include <linux/mfd/syscon.h> +#include <linux/of_device.h> +#include <linux/of_net.h> +#include <linux/platform_device.h> +#include <linux/regmap.h> +#include <linux/stmmac.h> + +#include "stmmac.h" +#include "stmmac_platform.h" + +#define NVT_REG_SYS_GMAC0MISCR 0x108 +#define NVT_REG_SYS_GMAC1MISCR 0x10C + +#define NVT_MISCR_RMII BIT(0) + +/* 2000ps is mapped to 0x0 ~ 0xF */ +#define NVT_PATH_DELAY_DEC 134 +#define NVT_TX_DELAY_MASK GENMASK(19, 16) +#define NVT_RX_DELAY_MASK GENMASK(23, 20) + +struct nvt_priv_data { + struct platform_device *pdev; + struct regmap *regmap; +}; + +static struct nvt_priv_data * +nvt_gmac_setup(struct platform_device *pdev, struct plat_stmmacenet_data *plat) +{ + struct device *dev = &pdev->dev; + struct nvt_priv_data *bsp_priv; + phy_interface_t phy_mode; + u32 tx_delay, rx_delay; + u32 macid, arg, reg; + + bsp_priv = devm_kzalloc(dev, sizeof(*bsp_priv), GFP_KERNEL); + if (!bsp_priv) + return ERR_PTR(-ENOMEM); + + bsp_priv->regmap = + syscon_regmap_lookup_by_phandle_args(dev->of_node, "nuvoton,sys", 1, &macid); + if (IS_ERR(bsp_priv->regmap)) { + dev_err_probe(dev, PTR_ERR(bsp_priv->regmap), "Failed to get sys register\n"); + return ERR_PTR(-ENODEV); + } + if (macid > 1) { + dev_err_probe(dev, -EINVAL, "Invalid sys arguments\n"); + return ERR_PTR(-EINVAL); + } + + if (of_property_read_u32(dev->of_node, "tx-internal-delay-ps", &arg)) { + tx_delay = 0; + } else { + if (arg <= 2000) { + tx_delay = (arg == 2000) ? 0xF : (arg / NVT_PATH_DELAY_DEC); + dev_dbg(dev, "Set Tx path delay to 0x%x\n", tx_delay); + } else { + dev_err(dev, "Invalid Tx path delay argument.\n"); + return ERR_PTR(-EINVAL); + } + } + if (of_property_read_u32(dev->of_node, "rx-internal-delay-ps", &arg)) { + rx_delay = 0; + } else { + if (arg <= 2000) { + rx_delay = (arg == 2000) ? 0xF : (arg / NVT_PATH_DELAY_DEC); + dev_dbg(dev, "Set Rx path delay to 0x%x\n", rx_delay); + } else { + dev_err(dev, "Invalid Rx path delay argument.\n"); + return ERR_PTR(-EINVAL); + } + } + + regmap_read(bsp_priv->regmap, + macid == 0 ? NVT_REG_SYS_GMAC0MISCR : NVT_REG_SYS_GMAC1MISCR, ®); + reg &= ~(NVT_TX_DELAY_MASK | NVT_RX_DELAY_MASK); + + if (of_get_phy_mode(pdev->dev.of_node, &phy_mode)) { + dev_err(dev, "missing phy mode property\n"); + return ERR_PTR(-EINVAL); + } + + switch (phy_mode) { + case PHY_INTERFACE_MODE_RGMII: + case PHY_INTERFACE_MODE_RGMII_ID: + case PHY_INTERFACE_MODE_RGMII_RXID: + case PHY_INTERFACE_MODE_RGMII_TXID: + reg &= ~NVT_MISCR_RMII; + break; + case PHY_INTERFACE_MODE_RMII: + reg |= NVT_MISCR_RMII; + break; + default: + dev_err(dev, "Unsupported phy-mode (%d)\n", phy_mode); + return ERR_PTR(-EINVAL); + } + + if (!(reg & NVT_MISCR_RMII)) { + reg |= FIELD_PREP(NVT_TX_DELAY_MASK, tx_delay); + reg |= FIELD_PREP(NVT_RX_DELAY_MASK, rx_delay); + } + + regmap_write(bsp_priv->regmap, + macid == 0 ? NVT_REG_SYS_GMAC0MISCR : NVT_REG_SYS_GMAC1MISCR, reg); + + bsp_priv->pdev = pdev; + + return bsp_priv; +} + +static int nvt_gmac_probe(struct platform_device *pdev) +{ + struct plat_stmmacenet_data *plat_dat; + struct stmmac_resources stmmac_res; + struct nvt_priv_data *priv_data; + int ret; + + ret = stmmac_get_platform_resources(pdev, &stmmac_res); + if (ret) + return ret; + + plat_dat = devm_stmmac_probe_config_dt(pdev, stmmac_res.mac); + if (IS_ERR(plat_dat)) + return PTR_ERR(plat_dat); + + /* Nuvoton DWMAC configs */ + plat_dat->has_gmac = 1; + plat_dat->tx_fifo_size = 2048; + plat_dat->rx_fifo_size = 4096; + plat_dat->multicast_filter_bins = 0; + plat_dat->unicast_filter_entries = 8; + plat_dat->flags &= ~STMMAC_FLAG_USE_PHY_WOL; + + priv_data = nvt_gmac_setup(pdev, plat_dat); + if (IS_ERR(priv_data)) + return PTR_ERR(priv_data); + + ret = stmmac_pltfr_probe(pdev, plat_dat, &stmmac_res); + if (ret) + return ret; + + /* The PMT flag is determined by the RWK property. + * However, our hardware is configured to support only MGK. + * This is an override on PMT to enable WoL capability. + */ + plat_dat->pmt = 1; + device_set_wakeup_capable(&pdev->dev, 1); + + return 0; +} + +static const struct of_device_id nvt_dwmac_match[] = { + { .compatible = "nuvoton,ma35d1-dwmac"}, + { } +}; +MODULE_DEVICE_TABLE(of, nvt_dwmac_match); + +static struct platform_driver nvt_dwmac_driver = { + .probe = nvt_gmac_probe, + .remove = stmmac_pltfr_remove, + .driver = { + .name = "nuvoton-dwmac", + .pm = &stmmac_pltfr_pm_ops, + .of_match_table = nvt_dwmac_match, + }, +}; +module_platform_driver(nvt_dwmac_driver); + +MODULE_AUTHOR("Joey Lu <yclu4@nuvoton.com>"); +MODULE_DESCRIPTION("Nuvoton DWMAC specific glue layer"); +MODULE_LICENSE("GPL v2"); -- 2.34.1 ^ permalink raw reply related [flat|nested] 27+ messages in thread
* Re: [PATCH net-next v7 3/3] net: stmmac: dwmac-nuvoton: Add dwmac glue for Nuvoton MA35 family 2025-01-13 5:54 ` Joey Lu @ 2025-01-14 1:49 ` Paul Menzel -1 siblings, 0 replies; 27+ messages in thread From: Paul Menzel @ 2025-01-14 1:49 UTC (permalink / raw) To: Joey Lu Cc: andrew+netdev, davem, edumazet, kuba, pabeni, robh, krzk+dt, conor+dt, mcoquelin.stm32, richardcochran, devicetree, ychuang3, netdev, openbmc, alexandre.torgue, linux-kernel, joabreu, Andrew Lunn, schung, peppe.cavallaro, yclu4, linux-stm32, linux-arm-kernel Dear Joey, Thank you for your patch. Am 13.01.25 um 00:54 schrieb Joey Lu: > Add support for Gigabit Ethernet on Nuvoton MA35 series using dwmac driver. It’d be great if you added the datasheet name and revision to the commit message. Also, please document how tested the driver. Maybe even paste new log messages. > Reviewed-by: Andrew Lunn <andrew@lunn.ch> > Signed-off-by: Joey Lu <a0987203069@gmail.com> As you use your company email address in the AUTHOR line below, please also add that email address to the commit message (and maybe even as the author). > --- > drivers/net/ethernet/stmicro/stmmac/Kconfig | 11 ++ > drivers/net/ethernet/stmicro/stmmac/Makefile | 1 + > .../ethernet/stmicro/stmmac/dwmac-nuvoton.c | 179 ++++++++++++++++++ > 3 files changed, 191 insertions(+) > create mode 100644 drivers/net/ethernet/stmicro/stmmac/dwmac-nuvoton.c > > diff --git a/drivers/net/ethernet/stmicro/stmmac/Kconfig b/drivers/net/ethernet/stmicro/stmmac/Kconfig > index 4cc85a36a1ab..2b424544cf6f 100644 > --- a/drivers/net/ethernet/stmicro/stmmac/Kconfig > +++ b/drivers/net/ethernet/stmicro/stmmac/Kconfig > @@ -121,6 +121,17 @@ config DWMAC_MESON > the stmmac device driver. This driver is used for Meson6, > Meson8, Meson8b and GXBB SoCs. > > +config DWMAC_NUVOTON > + tristate "Nuvoton MA35 dwmac support" > + default ARCH_MA35 > + depends on OF && (ARCH_MA35 || COMPILE_TEST) > + select MFD_SYSCON > + help > + Support for Ethernet controller on Nuvoton MA35 series SoC. > + > + This selects the Nuvoton MA35 series SoC glue layer support > + for the stmmac device driver. Also mention the module name `dwmac-nuvoton`? > + > config DWMAC_QCOM_ETHQOS > tristate "Qualcomm ETHQOS support" > default ARCH_QCOM > diff --git a/drivers/net/ethernet/stmicro/stmmac/Makefile b/drivers/net/ethernet/stmicro/stmmac/Makefile > index b26f0e79c2b3..48e25b85ea06 100644 > --- a/drivers/net/ethernet/stmicro/stmmac/Makefile > +++ b/drivers/net/ethernet/stmicro/stmmac/Makefile > @@ -19,6 +19,7 @@ obj-$(CONFIG_DWMAC_IPQ806X) += dwmac-ipq806x.o > 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_NUVOTON) += dwmac-nuvoton.o > obj-$(CONFIG_DWMAC_QCOM_ETHQOS) += dwmac-qcom-ethqos.o > obj-$(CONFIG_DWMAC_ROCKCHIP) += dwmac-rk.o > obj-$(CONFIG_DWMAC_RZN1) += dwmac-rzn1.o > diff --git a/drivers/net/ethernet/stmicro/stmmac/dwmac-nuvoton.c b/drivers/net/ethernet/stmicro/stmmac/dwmac-nuvoton.c > new file mode 100644 > index 000000000000..edf1b88ce1cd > --- /dev/null > +++ b/drivers/net/ethernet/stmicro/stmmac/dwmac-nuvoton.c > @@ -0,0 +1,179 @@ > +// SPDX-License-Identifier: GPL-2.0-only > +/* > + * Nuvoton DWMAC specific glue layer > + * > + * Copyright (C) 2024 Nuvoton Technology Corp. > + * > + * Author: Joey Lu <yclu4@nuvoton.com> > + */ > + > +#include <linux/mfd/syscon.h> > +#include <linux/of_device.h> > +#include <linux/of_net.h> > +#include <linux/platform_device.h> > +#include <linux/regmap.h> > +#include <linux/stmmac.h> > + > +#include "stmmac.h" > +#include "stmmac_platform.h" > + > +#define NVT_REG_SYS_GMAC0MISCR 0x108 > +#define NVT_REG_SYS_GMAC1MISCR 0x10C > + > +#define NVT_MISCR_RMII BIT(0) > + > +/* 2000ps is mapped to 0x0 ~ 0xF */ Excuse my ignorance: What is ps? > +#define NVT_PATH_DELAY_DEC 134 > +#define NVT_TX_DELAY_MASK GENMASK(19, 16) > +#define NVT_RX_DELAY_MASK GENMASK(23, 20) > + > +struct nvt_priv_data { > + struct platform_device *pdev; > + struct regmap *regmap; > +}; > + > +static struct nvt_priv_data * > +nvt_gmac_setup(struct platform_device *pdev, struct plat_stmmacenet_data *plat) > +{ > + struct device *dev = &pdev->dev; > + struct nvt_priv_data *bsp_priv; > + phy_interface_t phy_mode; > + u32 tx_delay, rx_delay; Please append the unit to the variable name. > + u32 macid, arg, reg; > + > + bsp_priv = devm_kzalloc(dev, sizeof(*bsp_priv), GFP_KERNEL); > + if (!bsp_priv) > + return ERR_PTR(-ENOMEM); > + > + bsp_priv->regmap = > + syscon_regmap_lookup_by_phandle_args(dev->of_node, "nuvoton,sys", 1, &macid); > + if (IS_ERR(bsp_priv->regmap)) { > + dev_err_probe(dev, PTR_ERR(bsp_priv->regmap), "Failed to get sys register\n"); > + return ERR_PTR(-ENODEV); > + } > + if (macid > 1) { > + dev_err_probe(dev, -EINVAL, "Invalid sys arguments\n"); > + return ERR_PTR(-EINVAL); > + } > + > + if (of_property_read_u32(dev->of_node, "tx-internal-delay-ps", &arg)) { > + tx_delay = 0; > + } else { > + if (arg <= 2000) { > + tx_delay = (arg == 2000) ? 0xF : (arg / NVT_PATH_DELAY_DEC); Write hexcharacters lowercase? > + dev_dbg(dev, "Set Tx path delay to 0x%x\n", tx_delay); > + } else { > + dev_err(dev, "Invalid Tx path delay argument.\n"); > + return ERR_PTR(-EINVAL); > + } > + } > + if (of_property_read_u32(dev->of_node, "rx-internal-delay-ps", &arg)) { > + rx_delay = 0; > + } else { > + if (arg <= 2000) { > + rx_delay = (arg == 2000) ? 0xF : (arg / NVT_PATH_DELAY_DEC); > + dev_dbg(dev, "Set Rx path delay to 0x%x\n", rx_delay); > + } else { > + dev_err(dev, "Invalid Rx path delay argument.\n"); > + return ERR_PTR(-EINVAL); > + } > + } > + > + regmap_read(bsp_priv->regmap, > + macid == 0 ? NVT_REG_SYS_GMAC0MISCR : NVT_REG_SYS_GMAC1MISCR, ®); > + reg &= ~(NVT_TX_DELAY_MASK | NVT_RX_DELAY_MASK); > + > + if (of_get_phy_mode(pdev->dev.of_node, &phy_mode)) { > + dev_err(dev, "missing phy mode property\n"); > + return ERR_PTR(-EINVAL); > + } > + > + switch (phy_mode) { > + case PHY_INTERFACE_MODE_RGMII: > + case PHY_INTERFACE_MODE_RGMII_ID: > + case PHY_INTERFACE_MODE_RGMII_RXID: > + case PHY_INTERFACE_MODE_RGMII_TXID: > + reg &= ~NVT_MISCR_RMII; > + break; > + case PHY_INTERFACE_MODE_RMII: > + reg |= NVT_MISCR_RMII; > + break; > + default: > + dev_err(dev, "Unsupported phy-mode (%d)\n", phy_mode); > + return ERR_PTR(-EINVAL); > + } > + > + if (!(reg & NVT_MISCR_RMII)) { > + reg |= FIELD_PREP(NVT_TX_DELAY_MASK, tx_delay); > + reg |= FIELD_PREP(NVT_RX_DELAY_MASK, rx_delay); > + } > + > + regmap_write(bsp_priv->regmap, > + macid == 0 ? NVT_REG_SYS_GMAC0MISCR : NVT_REG_SYS_GMAC1MISCR, reg); > + > + bsp_priv->pdev = pdev; > + > + return bsp_priv; > +} > + > +static int nvt_gmac_probe(struct platform_device *pdev) > +{ > + struct plat_stmmacenet_data *plat_dat; > + struct stmmac_resources stmmac_res; > + struct nvt_priv_data *priv_data; > + int ret; > + > + ret = stmmac_get_platform_resources(pdev, &stmmac_res); > + if (ret) > + return ret; > + > + plat_dat = devm_stmmac_probe_config_dt(pdev, stmmac_res.mac); > + if (IS_ERR(plat_dat)) > + return PTR_ERR(plat_dat); > + > + /* Nuvoton DWMAC configs */ > + plat_dat->has_gmac = 1; > + plat_dat->tx_fifo_size = 2048; > + plat_dat->rx_fifo_size = 4096; > + plat_dat->multicast_filter_bins = 0; > + plat_dat->unicast_filter_entries = 8; > + plat_dat->flags &= ~STMMAC_FLAG_USE_PHY_WOL; > + > + priv_data = nvt_gmac_setup(pdev, plat_dat); > + if (IS_ERR(priv_data)) > + return PTR_ERR(priv_data); > + > + ret = stmmac_pltfr_probe(pdev, plat_dat, &stmmac_res); > + if (ret) > + return ret; > + > + /* The PMT flag is determined by the RWK property. > + * However, our hardware is configured to support only MGK. > + * This is an override on PMT to enable WoL capability. > + */ > + plat_dat->pmt = 1; > + device_set_wakeup_capable(&pdev->dev, 1); > + > + return 0; > +} > + > +static const struct of_device_id nvt_dwmac_match[] = { > + { .compatible = "nuvoton,ma35d1-dwmac"}, > + { } > +}; > +MODULE_DEVICE_TABLE(of, nvt_dwmac_match); > + > +static struct platform_driver nvt_dwmac_driver = { > + .probe = nvt_gmac_probe, > + .remove = stmmac_pltfr_remove, > + .driver = { > + .name = "nuvoton-dwmac", > + .pm = &stmmac_pltfr_pm_ops, > + .of_match_table = nvt_dwmac_match, > + }, > +}; > +module_platform_driver(nvt_dwmac_driver); > + > +MODULE_AUTHOR("Joey Lu <yclu4@nuvoton.com>"); Maybe Nuvoton can set up a generic address? > +MODULE_DESCRIPTION("Nuvoton DWMAC specific glue layer"); > +MODULE_LICENSE("GPL v2"); Kind regards, Paul ^ permalink raw reply [flat|nested] 27+ messages in thread
* Re: [PATCH net-next v7 3/3] net: stmmac: dwmac-nuvoton: Add dwmac glue for Nuvoton MA35 family @ 2025-01-14 1:49 ` Paul Menzel 0 siblings, 0 replies; 27+ messages in thread From: Paul Menzel @ 2025-01-14 1:49 UTC (permalink / raw) To: Joey Lu Cc: Andrew Lunn, alexandre.torgue, edumazet, schung, yclu4, linux-stm32, robh, openbmc, joabreu, kuba, pabeni, devicetree, conor+dt, richardcochran, ychuang3, peppe.cavallaro, linux-arm-kernel, netdev, linux-kernel, andrew+netdev, mcoquelin.stm32, krzk+dt, davem Dear Joey, Thank you for your patch. Am 13.01.25 um 00:54 schrieb Joey Lu: > Add support for Gigabit Ethernet on Nuvoton MA35 series using dwmac driver. It’d be great if you added the datasheet name and revision to the commit message. Also, please document how tested the driver. Maybe even paste new log messages. > Reviewed-by: Andrew Lunn <andrew@lunn.ch> > Signed-off-by: Joey Lu <a0987203069@gmail.com> As you use your company email address in the AUTHOR line below, please also add that email address to the commit message (and maybe even as the author). > --- > drivers/net/ethernet/stmicro/stmmac/Kconfig | 11 ++ > drivers/net/ethernet/stmicro/stmmac/Makefile | 1 + > .../ethernet/stmicro/stmmac/dwmac-nuvoton.c | 179 ++++++++++++++++++ > 3 files changed, 191 insertions(+) > create mode 100644 drivers/net/ethernet/stmicro/stmmac/dwmac-nuvoton.c > > diff --git a/drivers/net/ethernet/stmicro/stmmac/Kconfig b/drivers/net/ethernet/stmicro/stmmac/Kconfig > index 4cc85a36a1ab..2b424544cf6f 100644 > --- a/drivers/net/ethernet/stmicro/stmmac/Kconfig > +++ b/drivers/net/ethernet/stmicro/stmmac/Kconfig > @@ -121,6 +121,17 @@ config DWMAC_MESON > the stmmac device driver. This driver is used for Meson6, > Meson8, Meson8b and GXBB SoCs. > > +config DWMAC_NUVOTON > + tristate "Nuvoton MA35 dwmac support" > + default ARCH_MA35 > + depends on OF && (ARCH_MA35 || COMPILE_TEST) > + select MFD_SYSCON > + help > + Support for Ethernet controller on Nuvoton MA35 series SoC. > + > + This selects the Nuvoton MA35 series SoC glue layer support > + for the stmmac device driver. Also mention the module name `dwmac-nuvoton`? > + > config DWMAC_QCOM_ETHQOS > tristate "Qualcomm ETHQOS support" > default ARCH_QCOM > diff --git a/drivers/net/ethernet/stmicro/stmmac/Makefile b/drivers/net/ethernet/stmicro/stmmac/Makefile > index b26f0e79c2b3..48e25b85ea06 100644 > --- a/drivers/net/ethernet/stmicro/stmmac/Makefile > +++ b/drivers/net/ethernet/stmicro/stmmac/Makefile > @@ -19,6 +19,7 @@ obj-$(CONFIG_DWMAC_IPQ806X) += dwmac-ipq806x.o > 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_NUVOTON) += dwmac-nuvoton.o > obj-$(CONFIG_DWMAC_QCOM_ETHQOS) += dwmac-qcom-ethqos.o > obj-$(CONFIG_DWMAC_ROCKCHIP) += dwmac-rk.o > obj-$(CONFIG_DWMAC_RZN1) += dwmac-rzn1.o > diff --git a/drivers/net/ethernet/stmicro/stmmac/dwmac-nuvoton.c b/drivers/net/ethernet/stmicro/stmmac/dwmac-nuvoton.c > new file mode 100644 > index 000000000000..edf1b88ce1cd > --- /dev/null > +++ b/drivers/net/ethernet/stmicro/stmmac/dwmac-nuvoton.c > @@ -0,0 +1,179 @@ > +// SPDX-License-Identifier: GPL-2.0-only > +/* > + * Nuvoton DWMAC specific glue layer > + * > + * Copyright (C) 2024 Nuvoton Technology Corp. > + * > + * Author: Joey Lu <yclu4@nuvoton.com> > + */ > + > +#include <linux/mfd/syscon.h> > +#include <linux/of_device.h> > +#include <linux/of_net.h> > +#include <linux/platform_device.h> > +#include <linux/regmap.h> > +#include <linux/stmmac.h> > + > +#include "stmmac.h" > +#include "stmmac_platform.h" > + > +#define NVT_REG_SYS_GMAC0MISCR 0x108 > +#define NVT_REG_SYS_GMAC1MISCR 0x10C > + > +#define NVT_MISCR_RMII BIT(0) > + > +/* 2000ps is mapped to 0x0 ~ 0xF */ Excuse my ignorance: What is ps? > +#define NVT_PATH_DELAY_DEC 134 > +#define NVT_TX_DELAY_MASK GENMASK(19, 16) > +#define NVT_RX_DELAY_MASK GENMASK(23, 20) > + > +struct nvt_priv_data { > + struct platform_device *pdev; > + struct regmap *regmap; > +}; > + > +static struct nvt_priv_data * > +nvt_gmac_setup(struct platform_device *pdev, struct plat_stmmacenet_data *plat) > +{ > + struct device *dev = &pdev->dev; > + struct nvt_priv_data *bsp_priv; > + phy_interface_t phy_mode; > + u32 tx_delay, rx_delay; Please append the unit to the variable name. > + u32 macid, arg, reg; > + > + bsp_priv = devm_kzalloc(dev, sizeof(*bsp_priv), GFP_KERNEL); > + if (!bsp_priv) > + return ERR_PTR(-ENOMEM); > + > + bsp_priv->regmap = > + syscon_regmap_lookup_by_phandle_args(dev->of_node, "nuvoton,sys", 1, &macid); > + if (IS_ERR(bsp_priv->regmap)) { > + dev_err_probe(dev, PTR_ERR(bsp_priv->regmap), "Failed to get sys register\n"); > + return ERR_PTR(-ENODEV); > + } > + if (macid > 1) { > + dev_err_probe(dev, -EINVAL, "Invalid sys arguments\n"); > + return ERR_PTR(-EINVAL); > + } > + > + if (of_property_read_u32(dev->of_node, "tx-internal-delay-ps", &arg)) { > + tx_delay = 0; > + } else { > + if (arg <= 2000) { > + tx_delay = (arg == 2000) ? 0xF : (arg / NVT_PATH_DELAY_DEC); Write hexcharacters lowercase? > + dev_dbg(dev, "Set Tx path delay to 0x%x\n", tx_delay); > + } else { > + dev_err(dev, "Invalid Tx path delay argument.\n"); > + return ERR_PTR(-EINVAL); > + } > + } > + if (of_property_read_u32(dev->of_node, "rx-internal-delay-ps", &arg)) { > + rx_delay = 0; > + } else { > + if (arg <= 2000) { > + rx_delay = (arg == 2000) ? 0xF : (arg / NVT_PATH_DELAY_DEC); > + dev_dbg(dev, "Set Rx path delay to 0x%x\n", rx_delay); > + } else { > + dev_err(dev, "Invalid Rx path delay argument.\n"); > + return ERR_PTR(-EINVAL); > + } > + } > + > + regmap_read(bsp_priv->regmap, > + macid == 0 ? NVT_REG_SYS_GMAC0MISCR : NVT_REG_SYS_GMAC1MISCR, ®); > + reg &= ~(NVT_TX_DELAY_MASK | NVT_RX_DELAY_MASK); > + > + if (of_get_phy_mode(pdev->dev.of_node, &phy_mode)) { > + dev_err(dev, "missing phy mode property\n"); > + return ERR_PTR(-EINVAL); > + } > + > + switch (phy_mode) { > + case PHY_INTERFACE_MODE_RGMII: > + case PHY_INTERFACE_MODE_RGMII_ID: > + case PHY_INTERFACE_MODE_RGMII_RXID: > + case PHY_INTERFACE_MODE_RGMII_TXID: > + reg &= ~NVT_MISCR_RMII; > + break; > + case PHY_INTERFACE_MODE_RMII: > + reg |= NVT_MISCR_RMII; > + break; > + default: > + dev_err(dev, "Unsupported phy-mode (%d)\n", phy_mode); > + return ERR_PTR(-EINVAL); > + } > + > + if (!(reg & NVT_MISCR_RMII)) { > + reg |= FIELD_PREP(NVT_TX_DELAY_MASK, tx_delay); > + reg |= FIELD_PREP(NVT_RX_DELAY_MASK, rx_delay); > + } > + > + regmap_write(bsp_priv->regmap, > + macid == 0 ? NVT_REG_SYS_GMAC0MISCR : NVT_REG_SYS_GMAC1MISCR, reg); > + > + bsp_priv->pdev = pdev; > + > + return bsp_priv; > +} > + > +static int nvt_gmac_probe(struct platform_device *pdev) > +{ > + struct plat_stmmacenet_data *plat_dat; > + struct stmmac_resources stmmac_res; > + struct nvt_priv_data *priv_data; > + int ret; > + > + ret = stmmac_get_platform_resources(pdev, &stmmac_res); > + if (ret) > + return ret; > + > + plat_dat = devm_stmmac_probe_config_dt(pdev, stmmac_res.mac); > + if (IS_ERR(plat_dat)) > + return PTR_ERR(plat_dat); > + > + /* Nuvoton DWMAC configs */ > + plat_dat->has_gmac = 1; > + plat_dat->tx_fifo_size = 2048; > + plat_dat->rx_fifo_size = 4096; > + plat_dat->multicast_filter_bins = 0; > + plat_dat->unicast_filter_entries = 8; > + plat_dat->flags &= ~STMMAC_FLAG_USE_PHY_WOL; > + > + priv_data = nvt_gmac_setup(pdev, plat_dat); > + if (IS_ERR(priv_data)) > + return PTR_ERR(priv_data); > + > + ret = stmmac_pltfr_probe(pdev, plat_dat, &stmmac_res); > + if (ret) > + return ret; > + > + /* The PMT flag is determined by the RWK property. > + * However, our hardware is configured to support only MGK. > + * This is an override on PMT to enable WoL capability. > + */ > + plat_dat->pmt = 1; > + device_set_wakeup_capable(&pdev->dev, 1); > + > + return 0; > +} > + > +static const struct of_device_id nvt_dwmac_match[] = { > + { .compatible = "nuvoton,ma35d1-dwmac"}, > + { } > +}; > +MODULE_DEVICE_TABLE(of, nvt_dwmac_match); > + > +static struct platform_driver nvt_dwmac_driver = { > + .probe = nvt_gmac_probe, > + .remove = stmmac_pltfr_remove, > + .driver = { > + .name = "nuvoton-dwmac", > + .pm = &stmmac_pltfr_pm_ops, > + .of_match_table = nvt_dwmac_match, > + }, > +}; > +module_platform_driver(nvt_dwmac_driver); > + > +MODULE_AUTHOR("Joey Lu <yclu4@nuvoton.com>"); Maybe Nuvoton can set up a generic address? > +MODULE_DESCRIPTION("Nuvoton DWMAC specific glue layer"); > +MODULE_LICENSE("GPL v2"); Kind regards, Paul ^ permalink raw reply [flat|nested] 27+ messages in thread
* Re: [PATCH net-next v7 3/3] net: stmmac: dwmac-nuvoton: Add dwmac glue for Nuvoton MA35 family 2025-01-14 1:49 ` Paul Menzel @ 2025-01-14 2:16 ` Andrew Lunn -1 siblings, 0 replies; 27+ messages in thread From: Andrew Lunn @ 2025-01-14 2:16 UTC (permalink / raw) To: Paul Menzel Cc: Joey Lu, andrew+netdev, davem, edumazet, kuba, pabeni, robh, krzk+dt, conor+dt, mcoquelin.stm32, richardcochran, devicetree, ychuang3, netdev, openbmc, alexandre.torgue, linux-kernel, joabreu, schung, peppe.cavallaro, yclu4, linux-stm32, linux-arm-kernel > > +#define NVT_MISCR_RMII BIT(0) > > + > > +/* 2000ps is mapped to 0x0 ~ 0xF */ > > Excuse my ignorance: What is ps? picoseconds. An RGMII link needs a 2ns delay between the clock line and the data lines. Some MACs allow you to tune the delay they can insert, in this case in steps of 2ns / 16. > > +#define NVT_PATH_DELAY_DEC 134 > > +#define NVT_TX_DELAY_MASK GENMASK(19, 16) > > +#define NVT_RX_DELAY_MASK GENMASK(23, 20) > > + > > +struct nvt_priv_data { > > + struct platform_device *pdev; > > + struct regmap *regmap; > > +}; > > + > > +static struct nvt_priv_data * > > +nvt_gmac_setup(struct platform_device *pdev, struct plat_stmmacenet_data *plat) > > +{ > > + struct device *dev = &pdev->dev; > > + struct nvt_priv_data *bsp_priv; > > + phy_interface_t phy_mode; > > + u32 tx_delay, rx_delay; > > Please append the unit to the variable name. Which is trick, because they are in units of 2000/16 of a picosecond. Andrew ^ permalink raw reply [flat|nested] 27+ messages in thread
* Re: [PATCH net-next v7 3/3] net: stmmac: dwmac-nuvoton: Add dwmac glue for Nuvoton MA35 family @ 2025-01-14 2:16 ` Andrew Lunn 0 siblings, 0 replies; 27+ messages in thread From: Andrew Lunn @ 2025-01-14 2:16 UTC (permalink / raw) To: Paul Menzel Cc: alexandre.torgue, linux-kernel, edumazet, schung, yclu4, linux-stm32, robh, openbmc, joabreu, kuba, pabeni, devicetree, conor+dt, richardcochran, ychuang3, peppe.cavallaro, linux-arm-kernel, netdev, Joey Lu, andrew+netdev, mcoquelin.stm32, krzk+dt, davem > > +#define NVT_MISCR_RMII BIT(0) > > + > > +/* 2000ps is mapped to 0x0 ~ 0xF */ > > Excuse my ignorance: What is ps? picoseconds. An RGMII link needs a 2ns delay between the clock line and the data lines. Some MACs allow you to tune the delay they can insert, in this case in steps of 2ns / 16. > > +#define NVT_PATH_DELAY_DEC 134 > > +#define NVT_TX_DELAY_MASK GENMASK(19, 16) > > +#define NVT_RX_DELAY_MASK GENMASK(23, 20) > > + > > +struct nvt_priv_data { > > + struct platform_device *pdev; > > + struct regmap *regmap; > > +}; > > + > > +static struct nvt_priv_data * > > +nvt_gmac_setup(struct platform_device *pdev, struct plat_stmmacenet_data *plat) > > +{ > > + struct device *dev = &pdev->dev; > > + struct nvt_priv_data *bsp_priv; > > + phy_interface_t phy_mode; > > + u32 tx_delay, rx_delay; > > Please append the unit to the variable name. Which is trick, because they are in units of 2000/16 of a picosecond. Andrew ^ permalink raw reply [flat|nested] 27+ messages in thread
* Re: [PATCH net-next v7 3/3] net: stmmac: dwmac-nuvoton: Add dwmac glue for Nuvoton MA35 family 2025-01-14 2:16 ` Andrew Lunn @ 2025-01-14 2:21 ` Paul Menzel -1 siblings, 0 replies; 27+ messages in thread From: Paul Menzel @ 2025-01-14 2:21 UTC (permalink / raw) To: Andrew Lunn Cc: Joey Lu, andrew+netdev, davem, edumazet, kuba, pabeni, robh, krzk+dt, conor+dt, mcoquelin.stm32, richardcochran, devicetree, ychuang3, netdev, openbmc, alexandre.torgue, linux-kernel, joabreu, schung, peppe.cavallaro, yclu4, linux-stm32, linux-arm-kernel Dear Andrew, Thank you for your quick reply. Am 14.01.25 um 21:16 schrieb Andrew Lunn: >>> +#define NVT_MISCR_RMII BIT(0) >>> + >>> +/* 2000ps is mapped to 0x0 ~ 0xF */ >> >> Excuse my ignorance: What is ps? > > picoseconds. An RGMII link needs a 2ns delay between the clock line > and the data lines. Some MACs allow you to tune the delay they can > insert, in this case in steps of 2ns / 16. Thank you for the clarification. Maybe it’s my English, but I didn’t deduce this from how the comment is worded. I do not have a better idea either. >>> +#define NVT_PATH_DELAY_DEC 134 >>> +#define NVT_TX_DELAY_MASK GENMASK(19, 16) >>> +#define NVT_RX_DELAY_MASK GENMASK(23, 20) >>> + >>> +struct nvt_priv_data { >>> + struct platform_device *pdev; >>> + struct regmap *regmap; >>> +}; >>> + >>> +static struct nvt_priv_data * >>> +nvt_gmac_setup(struct platform_device *pdev, struct plat_stmmacenet_data *plat) >>> +{ >>> + struct device *dev = &pdev->dev; >>> + struct nvt_priv_data *bsp_priv; >>> + phy_interface_t phy_mode; >>> + u32 tx_delay, rx_delay; >> >> Please append the unit to the variable name. > > Which is trick, because they are in units of 2000/16 of a picosecond. Understood. Maybe a comment could be added? Kind regards, Paul ^ permalink raw reply [flat|nested] 27+ messages in thread
* Re: [PATCH net-next v7 3/3] net: stmmac: dwmac-nuvoton: Add dwmac glue for Nuvoton MA35 family @ 2025-01-14 2:21 ` Paul Menzel 0 siblings, 0 replies; 27+ messages in thread From: Paul Menzel @ 2025-01-14 2:21 UTC (permalink / raw) To: Andrew Lunn Cc: alexandre.torgue, linux-kernel, edumazet, schung, yclu4, linux-stm32, robh, openbmc, joabreu, kuba, pabeni, devicetree, conor+dt, richardcochran, ychuang3, peppe.cavallaro, linux-arm-kernel, netdev, Joey Lu, andrew+netdev, mcoquelin.stm32, krzk+dt, davem Dear Andrew, Thank you for your quick reply. Am 14.01.25 um 21:16 schrieb Andrew Lunn: >>> +#define NVT_MISCR_RMII BIT(0) >>> + >>> +/* 2000ps is mapped to 0x0 ~ 0xF */ >> >> Excuse my ignorance: What is ps? > > picoseconds. An RGMII link needs a 2ns delay between the clock line > and the data lines. Some MACs allow you to tune the delay they can > insert, in this case in steps of 2ns / 16. Thank you for the clarification. Maybe it’s my English, but I didn’t deduce this from how the comment is worded. I do not have a better idea either. >>> +#define NVT_PATH_DELAY_DEC 134 >>> +#define NVT_TX_DELAY_MASK GENMASK(19, 16) >>> +#define NVT_RX_DELAY_MASK GENMASK(23, 20) >>> + >>> +struct nvt_priv_data { >>> + struct platform_device *pdev; >>> + struct regmap *regmap; >>> +}; >>> + >>> +static struct nvt_priv_data * >>> +nvt_gmac_setup(struct platform_device *pdev, struct plat_stmmacenet_data *plat) >>> +{ >>> + struct device *dev = &pdev->dev; >>> + struct nvt_priv_data *bsp_priv; >>> + phy_interface_t phy_mode; >>> + u32 tx_delay, rx_delay; >> >> Please append the unit to the variable name. > > Which is trick, because they are in units of 2000/16 of a picosecond. Understood. Maybe a comment could be added? Kind regards, Paul ^ permalink raw reply [flat|nested] 27+ messages in thread
* Re: [PATCH net-next v7 3/3] net: stmmac: dwmac-nuvoton: Add dwmac glue for Nuvoton MA35 family 2025-01-14 2:21 ` Paul Menzel @ 2025-01-14 10:29 ` Yanteng Si -1 siblings, 0 replies; 27+ messages in thread From: Yanteng Si @ 2025-01-14 10:29 UTC (permalink / raw) To: Paul Menzel, Andrew Lunn Cc: Joey Lu, andrew+netdev, davem, edumazet, kuba, pabeni, robh, krzk+dt, conor+dt, mcoquelin.stm32, richardcochran, devicetree, ychuang3, netdev, openbmc, alexandre.torgue, linux-kernel, joabreu, schung, peppe.cavallaro, yclu4, linux-stm32, linux-arm-kernel 在 2025/1/14 10:21, Paul Menzel 写道: > Dear Andrew, > > > Thank you for your quick reply. > > > Am 14.01.25 um 21:16 schrieb Andrew Lunn: >>>> +#define NVT_MISCR_RMII BIT(0) >>>> + >>>> +/* 2000ps is mapped to 0x0 ~ 0xF */ >>> >>> Excuse my ignorance: What is ps? >> >> picoseconds. An RGMII link needs a 2ns delay between the clock line >> and the data lines. Some MACs allow you to tune the delay they can >> insert, in this case in steps of 2ns / 16. > > Thank you for the clarification. Maybe it’s my English, but I didn’t > deduce this from how the comment is worded. I do not have a better idea > either. Hmmm, how about: 2000 ps is xxxx I checked the kernel code and it looks like folks usually put a space between the number and the unit. I looked into the rules of a bunch of publishers again. It seems like there's a rule about putting a space between a number and a unit, but when the unit is a symbol, that's an exception: space: 10 kg 10 ℃ 10 h no space: 22°36′48″N, 114°10′10″E Thanks, Yanteng ^ permalink raw reply [flat|nested] 27+ messages in thread
* Re: [PATCH net-next v7 3/3] net: stmmac: dwmac-nuvoton: Add dwmac glue for Nuvoton MA35 family @ 2025-01-14 10:29 ` Yanteng Si 0 siblings, 0 replies; 27+ messages in thread From: Yanteng Si @ 2025-01-14 10:29 UTC (permalink / raw) To: Paul Menzel, Andrew Lunn Cc: alexandre.torgue, linux-kernel, edumazet, schung, yclu4, linux-stm32, robh, openbmc, joabreu, kuba, pabeni, devicetree, conor+dt, richardcochran, ychuang3, peppe.cavallaro, linux-arm-kernel, netdev, Joey Lu, andrew+netdev, mcoquelin.stm32, krzk+dt, davem 在 2025/1/14 10:21, Paul Menzel 写道: > Dear Andrew, > > > Thank you for your quick reply. > > > Am 14.01.25 um 21:16 schrieb Andrew Lunn: >>>> +#define NVT_MISCR_RMII BIT(0) >>>> + >>>> +/* 2000ps is mapped to 0x0 ~ 0xF */ >>> >>> Excuse my ignorance: What is ps? >> >> picoseconds. An RGMII link needs a 2ns delay between the clock line >> and the data lines. Some MACs allow you to tune the delay they can >> insert, in this case in steps of 2ns / 16. > > Thank you for the clarification. Maybe it’s my English, but I didn’t > deduce this from how the comment is worded. I do not have a better idea > either. Hmmm, how about: 2000 ps is xxxx I checked the kernel code and it looks like folks usually put a space between the number and the unit. I looked into the rules of a bunch of publishers again. It seems like there's a rule about putting a space between a number and a unit, but when the unit is a symbol, that's an exception: space: 10 kg 10 ℃ 10 h no space: 22°36′48″N, 114°10′10″E Thanks, Yanteng ^ permalink raw reply [flat|nested] 27+ messages in thread
* Re: [PATCH net-next v7 3/3] net: stmmac: dwmac-nuvoton: Add dwmac glue for Nuvoton MA35 family 2025-01-14 1:49 ` Paul Menzel @ 2025-01-14 23:35 ` Jakub Kicinski -1 siblings, 0 replies; 27+ messages in thread From: Jakub Kicinski @ 2025-01-14 23:35 UTC (permalink / raw) To: Paul Menzel Cc: Joey Lu, andrew+netdev, davem, edumazet, pabeni, robh, krzk+dt, conor+dt, mcoquelin.stm32, richardcochran, devicetree, ychuang3, netdev, openbmc, alexandre.torgue, linux-kernel, joabreu, Andrew Lunn, schung, peppe.cavallaro, yclu4, linux-stm32, linux-arm-kernel On Tue, 14 Jan 2025 02:49:31 +0100 Paul Menzel wrote: > > +MODULE_AUTHOR("Joey Lu <yclu4@nuvoton.com>"); > > Maybe Nuvoton can set up a generic address? FWIW we prefer people to mailing lists in netdev. Humans tend to have more of a sense of responsibility than corporations :S ^ permalink raw reply [flat|nested] 27+ messages in thread
* Re: [PATCH net-next v7 3/3] net: stmmac: dwmac-nuvoton: Add dwmac glue for Nuvoton MA35 family @ 2025-01-14 23:35 ` Jakub Kicinski 0 siblings, 0 replies; 27+ messages in thread From: Jakub Kicinski @ 2025-01-14 23:35 UTC (permalink / raw) To: Paul Menzel Cc: Andrew Lunn, alexandre.torgue, linux-kernel, edumazet, schung, yclu4, linux-stm32, robh, openbmc, joabreu, pabeni, devicetree, conor+dt, richardcochran, ychuang3, peppe.cavallaro, linux-arm-kernel, netdev, Joey Lu, andrew+netdev, mcoquelin.stm32, krzk+dt, davem On Tue, 14 Jan 2025 02:49:31 +0100 Paul Menzel wrote: > > +MODULE_AUTHOR("Joey Lu <yclu4@nuvoton.com>"); > > Maybe Nuvoton can set up a generic address? FWIW we prefer people to mailing lists in netdev. Humans tend to have more of a sense of responsibility than corporations :S ^ permalink raw reply [flat|nested] 27+ messages in thread
* Re: [PATCH net-next v7 3/3] net: stmmac: dwmac-nuvoton: Add dwmac glue for Nuvoton MA35 family 2025-01-14 1:49 ` Paul Menzel ` (2 preceding siblings ...) (?) @ 2025-01-15 9:03 ` Joey Lu 2025-01-15 9:22 ` Paul Menzel -1 siblings, 1 reply; 27+ messages in thread From: Joey Lu @ 2025-01-15 9:03 UTC (permalink / raw) To: Paul Menzel Cc: Andrew Lunn, alexandre.torgue, edumazet, schung, yclu4, linux-stm32, robh, openbmc, joabreu, kuba, pabeni, devicetree, conor+dt, richardcochran, ychuang3, peppe.cavallaro, linux-arm-kernel, netdev, linux-kernel, andrew+netdev, mcoquelin.stm32, krzk+dt, davem [-- Attachment #1: Type: text/plain, Size: 13685 bytes --] Dear Paul, Thank you for the reply! Paul Menzel 於 1/14/2025 9:49 AM 寫道: > Dear Joey, > > > Thank you for your patch. > > Am 13.01.25 um 00:54 schrieb Joey Lu: >> Add support for Gigabit Ethernet on Nuvoton MA35 series using dwmac >> driver. > > It’d be great if you added the datasheet name and revision to the > commit message. I will update the commit message in the next patch. For reference, the datasheet is *MA35D1 Series Datasheet*. > > Also, please document how tested the driver. Maybe even paste new log > messages. These are the kernel configurations for testing the MA35D1 GMAC driver: ARCH_MA35, STMMAC_PLATFORM, DWMAC_NUVOTON. I'm not sure if this information is sufficient, so please provide some guidance on what else I should include to meet your requirements. I will include the log messages at the end of the email. > >> Reviewed-by: Andrew Lunn <andrew@lunn.ch> >> Signed-off-by: Joey Lu <a0987203069@gmail.com> > > As you use your company email address in the AUTHOR line below, please > also add that email address to the commit message (and maybe even as > the author). > I will update the AUTHOR to use my personal email address instead of the company email. >> --- >> drivers/net/ethernet/stmicro/stmmac/Kconfig | 11 ++ >> drivers/net/ethernet/stmicro/stmmac/Makefile | 1 + >> .../ethernet/stmicro/stmmac/dwmac-nuvoton.c | 179 ++++++++++++++++++ >> 3 files changed, 191 insertions(+) >> create mode 100644 drivers/net/ethernet/stmicro/stmmac/dwmac-nuvoton.c >> >> diff --git a/drivers/net/ethernet/stmicro/stmmac/Kconfig >> b/drivers/net/ethernet/stmicro/stmmac/Kconfig >> index 4cc85a36a1ab..2b424544cf6f 100644 >> --- a/drivers/net/ethernet/stmicro/stmmac/Kconfig >> +++ b/drivers/net/ethernet/stmicro/stmmac/Kconfig >> @@ -121,6 +121,17 @@ config DWMAC_MESON >> the stmmac device driver. This driver is used for Meson6, >> Meson8, Meson8b and GXBB SoCs. >> +config DWMAC_NUVOTON >> + tristate "Nuvoton MA35 dwmac support" >> + default ARCH_MA35 >> + depends on OF && (ARCH_MA35 || COMPILE_TEST) >> + select MFD_SYSCON >> + help >> + Support for Ethernet controller on Nuvoton MA35 series SoC. >> + >> + This selects the Nuvoton MA35 series SoC glue layer support >> + for the stmmac device driver. > > Also mention the module name `dwmac-nuvoton`? > Got it! >> + >> config DWMAC_QCOM_ETHQOS >> tristate "Qualcomm ETHQOS support" >> default ARCH_QCOM >> diff --git a/drivers/net/ethernet/stmicro/stmmac/Makefile >> b/drivers/net/ethernet/stmicro/stmmac/Makefile >> index b26f0e79c2b3..48e25b85ea06 100644 >> --- a/drivers/net/ethernet/stmicro/stmmac/Makefile >> +++ b/drivers/net/ethernet/stmicro/stmmac/Makefile >> @@ -19,6 +19,7 @@ obj-$(CONFIG_DWMAC_IPQ806X) += dwmac-ipq806x.o >> 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_NUVOTON) += dwmac-nuvoton.o >> obj-$(CONFIG_DWMAC_QCOM_ETHQOS) += dwmac-qcom-ethqos.o >> obj-$(CONFIG_DWMAC_ROCKCHIP) += dwmac-rk.o >> obj-$(CONFIG_DWMAC_RZN1) += dwmac-rzn1.o >> diff --git a/drivers/net/ethernet/stmicro/stmmac/dwmac-nuvoton.c >> b/drivers/net/ethernet/stmicro/stmmac/dwmac-nuvoton.c >> new file mode 100644 >> index 000000000000..edf1b88ce1cd >> --- /dev/null >> +++ b/drivers/net/ethernet/stmicro/stmmac/dwmac-nuvoton.c >> @@ -0,0 +1,179 @@ >> +// SPDX-License-Identifier: GPL-2.0-only >> +/* >> + * Nuvoton DWMAC specific glue layer >> + * >> + * Copyright (C) 2024 Nuvoton Technology Corp. >> + * >> + * Author: Joey Lu <yclu4@nuvoton.com> >> + */ >> + >> +#include <linux/mfd/syscon.h> >> +#include <linux/of_device.h> >> +#include <linux/of_net.h> >> +#include <linux/platform_device.h> >> +#include <linux/regmap.h> >> +#include <linux/stmmac.h> >> + >> +#include "stmmac.h" >> +#include "stmmac_platform.h" >> + >> +#define NVT_REG_SYS_GMAC0MISCR 0x108 >> +#define NVT_REG_SYS_GMAC1MISCR 0x10C >> + >> +#define NVT_MISCR_RMII BIT(0) >> + >> +/* 2000ps is mapped to 0x0 ~ 0xF */ > > Excuse my ignorance: What is ps? > Sorry for the confusion. I will include a complete and clear description in the next patch. >> +#define NVT_PATH_DELAY_DEC 134 >> +#define NVT_TX_DELAY_MASK GENMASK(19, 16) >> +#define NVT_RX_DELAY_MASK GENMASK(23, 20) >> + >> +struct nvt_priv_data { >> + struct platform_device *pdev; >> + struct regmap *regmap; >> +}; >> + >> +static struct nvt_priv_data * >> +nvt_gmac_setup(struct platform_device *pdev, struct >> plat_stmmacenet_data *plat) >> +{ >> + struct device *dev = &pdev->dev; >> + struct nvt_priv_data *bsp_priv; >> + phy_interface_t phy_mode; >> + u32 tx_delay, rx_delay; > > Please append the unit to the variable name. > Got it! >> + u32 macid, arg, reg; >> + >> + bsp_priv = devm_kzalloc(dev, sizeof(*bsp_priv), GFP_KERNEL); >> + if (!bsp_priv) >> + return ERR_PTR(-ENOMEM); >> + >> + bsp_priv->regmap = >> + syscon_regmap_lookup_by_phandle_args(dev->of_node, >> "nuvoton,sys", 1, &macid); >> + if (IS_ERR(bsp_priv->regmap)) { >> + dev_err_probe(dev, PTR_ERR(bsp_priv->regmap), "Failed to get >> sys register\n"); >> + return ERR_PTR(-ENODEV); >> + } >> + if (macid > 1) { >> + dev_err_probe(dev, -EINVAL, "Invalid sys arguments\n"); >> + return ERR_PTR(-EINVAL); >> + } >> + >> + if (of_property_read_u32(dev->of_node, "tx-internal-delay-ps", >> &arg)) { >> + tx_delay = 0; >> + } else { >> + if (arg <= 2000) { >> + tx_delay = (arg == 2000) ? 0xF : (arg / >> NVT_PATH_DELAY_DEC); > > Write hexcharacters lowercase? > Got it! >> + dev_dbg(dev, "Set Tx path delay to 0x%x\n", tx_delay); >> + } else { >> + dev_err(dev, "Invalid Tx path delay argument.\n"); >> + return ERR_PTR(-EINVAL); >> + } >> + } >> + if (of_property_read_u32(dev->of_node, "rx-internal-delay-ps", >> &arg)) { >> + rx_delay = 0; >> + } else { >> + if (arg <= 2000) { >> + rx_delay = (arg == 2000) ? 0xF : (arg / >> NVT_PATH_DELAY_DEC); >> + dev_dbg(dev, "Set Rx path delay to 0x%x\n", rx_delay); >> + } else { >> + dev_err(dev, "Invalid Rx path delay argument.\n"); >> + return ERR_PTR(-EINVAL); >> + } >> + } >> + >> + regmap_read(bsp_priv->regmap, >> + macid == 0 ? NVT_REG_SYS_GMAC0MISCR : >> NVT_REG_SYS_GMAC1MISCR, ®); >> + reg &= ~(NVT_TX_DELAY_MASK | NVT_RX_DELAY_MASK); >> + >> + if (of_get_phy_mode(pdev->dev.of_node, &phy_mode)) { >> + dev_err(dev, "missing phy mode property\n"); >> + return ERR_PTR(-EINVAL); >> + } >> + >> + switch (phy_mode) { >> + case PHY_INTERFACE_MODE_RGMII: >> + case PHY_INTERFACE_MODE_RGMII_ID: >> + case PHY_INTERFACE_MODE_RGMII_RXID: >> + case PHY_INTERFACE_MODE_RGMII_TXID: >> + reg &= ~NVT_MISCR_RMII; >> + break; >> + case PHY_INTERFACE_MODE_RMII: >> + reg |= NVT_MISCR_RMII; >> + break; >> + default: >> + dev_err(dev, "Unsupported phy-mode (%d)\n", phy_mode); >> + return ERR_PTR(-EINVAL); >> + } >> + >> + if (!(reg & NVT_MISCR_RMII)) { >> + reg |= FIELD_PREP(NVT_TX_DELAY_MASK, tx_delay); >> + reg |= FIELD_PREP(NVT_RX_DELAY_MASK, rx_delay); >> + } >> + >> + regmap_write(bsp_priv->regmap, >> + macid == 0 ? NVT_REG_SYS_GMAC0MISCR : >> NVT_REG_SYS_GMAC1MISCR, reg); >> + >> + bsp_priv->pdev = pdev; >> + >> + return bsp_priv; >> +} >> + >> +static int nvt_gmac_probe(struct platform_device *pdev) >> +{ >> + struct plat_stmmacenet_data *plat_dat; >> + struct stmmac_resources stmmac_res; >> + struct nvt_priv_data *priv_data; >> + int ret; >> + >> + ret = stmmac_get_platform_resources(pdev, &stmmac_res); >> + if (ret) >> + return ret; >> + >> + plat_dat = devm_stmmac_probe_config_dt(pdev, stmmac_res.mac); >> + if (IS_ERR(plat_dat)) >> + return PTR_ERR(plat_dat); >> + >> + /* Nuvoton DWMAC configs */ >> + plat_dat->has_gmac = 1; >> + plat_dat->tx_fifo_size = 2048; >> + plat_dat->rx_fifo_size = 4096; >> + plat_dat->multicast_filter_bins = 0; >> + plat_dat->unicast_filter_entries = 8; >> + plat_dat->flags &= ~STMMAC_FLAG_USE_PHY_WOL; >> + >> + priv_data = nvt_gmac_setup(pdev, plat_dat); >> + if (IS_ERR(priv_data)) >> + return PTR_ERR(priv_data); >> + >> + ret = stmmac_pltfr_probe(pdev, plat_dat, &stmmac_res); >> + if (ret) >> + return ret; >> + >> + /* The PMT flag is determined by the RWK property. >> + * However, our hardware is configured to support only MGK. >> + * This is an override on PMT to enable WoL capability. >> + */ >> + plat_dat->pmt = 1; >> + device_set_wakeup_capable(&pdev->dev, 1); >> + >> + return 0; >> +} >> + >> +static const struct of_device_id nvt_dwmac_match[] = { >> + { .compatible = "nuvoton,ma35d1-dwmac"}, >> + { } >> +}; >> +MODULE_DEVICE_TABLE(of, nvt_dwmac_match); >> + >> +static struct platform_driver nvt_dwmac_driver = { >> + .probe = nvt_gmac_probe, >> + .remove = stmmac_pltfr_remove, >> + .driver = { >> + .name = "nuvoton-dwmac", >> + .pm = &stmmac_pltfr_pm_ops, >> + .of_match_table = nvt_dwmac_match, >> + }, >> +}; >> +module_platform_driver(nvt_dwmac_driver); >> + >> +MODULE_AUTHOR("Joey Lu <yclu4@nuvoton.com>"); > > Maybe Nuvoton can set up a generic address? > I will switch to using my personal email instead.🙂 >> +MODULE_DESCRIPTION("Nuvoton DWMAC specific glue layer"); >> +MODULE_LICENSE("GPL v2"); > > > Kind regards, > > Paul BR, Joey log: [ T0] Booting Linux on physical CPU 0x0000000000 [0x411fd040] [ T0] Linux version 6.13.0-rc7 (joeylu@ubuntu) (aarch64-nuvoton-linux-gnu-gcc.br_real (Buildroot 2021.02.6) 9.4.0, GNU ld (GNU Binutils) 2.35.2) [ T0] Machine model: Nuvoton MA35D1-SOM [ T0] Memory limited to 248MB ... [ T1] nuvoton-dwmac 40120000.ethernet: IRQ eth_wake_irq not found [ T1] nuvoton-dwmac 40120000.ethernet: IRQ eth_lpi not found [ T1] nuvoton-dwmac 40120000.ethernet: IRQ sfty not found [ T1] nuvoton-dwmac 40120000.ethernet: User ID: 0x10, Synopsys ID: 0x37 [ T1] nuvoton-dwmac 40120000.ethernet: DWMAC1000 [ T1] nuvoton-dwmac 40120000.ethernet: DMA HW capability register supported [ T1] nuvoton-dwmac 40120000.ethernet: RX Checksum Offload Engine supported [ T1] nuvoton-dwmac 40120000.ethernet: COE Type 2 [ T1] nuvoton-dwmac 40120000.ethernet: TX Checksum insertion supported [ T1] nuvoton-dwmac 40120000.ethernet: Enhanced/Alternate descriptors [ T1] nuvoton-dwmac 40120000.ethernet: Enabled extended descriptors [ T1] nuvoton-dwmac 40120000.ethernet: Ring mode enabled [ T1] nuvoton-dwmac 40120000.ethernet: Enable RX Mitigation via HW Watchdog Timer [ T1] nuvoton-dwmac 40130000.ethernet: IRQ eth_wake_irq not found [ T1] nuvoton-dwmac 40130000.ethernet: IRQ eth_lpi not found [ T1] nuvoton-dwmac 40130000.ethernet: IRQ sfty not found [ T1] nuvoton-dwmac 40130000.ethernet: User ID: 0x10, Synopsys ID: 0x37 [ T1] nuvoton-dwmac 40130000.ethernet: DWMAC1000 [ T1] nuvoton-dwmac 40130000.ethernet: DMA HW capability register supported [ T1] nuvoton-dwmac 40130000.ethernet: RX Checksum Offload Engine supported [ T1] nuvoton-dwmac 40130000.ethernet: COE Type 2 [ T1] nuvoton-dwmac 40130000.ethernet: TX Checksum insertion supported [ T1] nuvoton-dwmac 40130000.ethernet: Enhanced/Alternate descriptors [ T1] nuvoton-dwmac 40130000.ethernet: Enabled extended descriptors [ T1] nuvoton-dwmac 40130000.ethernet: Ring mode enabled [ T1] nuvoton-dwmac 40130000.ethernet: Enable RX Mitigation via HW Watchdog Timer ... # udhcpc -i eth0 udhcpc: started, v1.33.1 [ T93] nuvoton-dwmac 40120000.ethernet eth0: Register MEM_TYPE_PAGE_POOL RxQ-0 [ T93] nuvoton-dwmac 40120000.ethernet eth0: PHY [stmmac-0:00] driver [Generic PHY] (irq=POLL) [ T93] nuvoton-dwmac 40120000.ethernet eth0: No Safety Features support found [ T93] nuvoton-dwmac 40120000.ethernet eth0: No MAC Management Counters available [ T93] nuvoton-dwmac 40120000.ethernet eth0: IEEE 1588-2008 Advanced Timestamp supported [ T93] nuvoton-dwmac 40120000.ethernet eth0: registered PTP clock [ T93] nuvoton-dwmac 40120000.ethernet eth0: configuring for phy/rgmii-id link mode udhcpc: sending discover udhcpc: sending discover [ T33] nuvoton-dwmac 40120000.ethernet eth0: Link is Up - 1Gbps/Full - flow control rx/tx udhcpc: sending discover udhcpc: sending select for 192.168.0.103 udhcpc: lease of 192.168.0.103 obtained, lease time 86400 deleting routers adding dns 192.168.0.1 [-- Attachment #2: Type: text/html, Size: 21239 bytes --] ^ permalink raw reply [flat|nested] 27+ messages in thread
* Re: [PATCH net-next v7 3/3] net: stmmac: dwmac-nuvoton: Add dwmac glue for Nuvoton MA35 family 2025-01-15 9:03 ` Joey Lu @ 2025-01-15 9:22 ` Paul Menzel 0 siblings, 0 replies; 27+ messages in thread From: Paul Menzel @ 2025-01-15 9:22 UTC (permalink / raw) To: Joey Lu Cc: andrew+netdev, davem, edumazet, kuba, pabeni, robh, krzk+dt, conor+dt, mcoquelin.stm32, richardcochran, devicetree, ychuang3, netdev, openbmc, alexandre.torgue, linux-kernel, joabreu, Andrew Lunn, schung, peppe.cavallaro, yclu4, linux-stm32, linux-arm-kernel Dear Joey, Thank you for your prompt reply. Am 15.01.25 um 10:03 schrieb Joey Lu: > Paul Menzel 於 1/14/2025 9:49 AM 寫道: […] >> Am 13.01.25 um 00:54 schrieb Joey Lu: >>> Add support for Gigabit Ethernet on Nuvoton MA35 series using dwmac >>> driver. […] >> Also, please document how tested the driver. Maybe even paste new log >> messages. > > These are the kernel configurations for testing the MA35D1 GMAC driver: > ARCH_MA35, STMMAC_PLATFORM, DWMAC_NUVOTON. > > I'm not sure if this information is sufficient, so please provide some > guidance on what else I should include to meet your requirements. I’d be interested on what hardware you tested it. Probably some evaluation or customer reference board. > I will include the log messages at the end of the email. Awesome. Thank you. Personally, I also like to see those in the commit message. >>> Reviewed-by: Andrew Lunn <andrew@lunn.ch> >>> Signed-off-by: Joey Lu <a0987203069@gmail.com> >> >> As you use your company email address in the AUTHOR line below, please >> also add that email address to the commit message (and maybe even as >> the author). > > I will update the AUTHOR to use my personal email address instead of the > company email. Understood. (yclu4@nuvoton.com is also personal, but the Gmail address is private, I guess. ;-)). For statistics, how companies contribute to the Linux kernel, having the company address somewhere would be nice though, as you are doing this as your work at Nuvoton, right? >>> --- >>> drivers/net/ethernet/stmicro/stmmac/Kconfig | 11 ++ >>> drivers/net/ethernet/stmicro/stmmac/Makefile | 1 + >>> .../ethernet/stmicro/stmmac/dwmac-nuvoton.c | 179 ++++++++++++++++++ >>> 3 files changed, 191 insertions(+) >>> create mode 100644 drivers/net/ethernet/stmicro/stmmac/dwmac-nuvoton.c […] > log: > > [ T0] Booting Linux on physical CPU 0x0000000000 [0x411fd040] Out of curiosity, how do you get these timestamps T0, T1, …? […] Thank you and kind regards, Paul ^ permalink raw reply [flat|nested] 27+ messages in thread
* Re: [PATCH net-next v7 3/3] net: stmmac: dwmac-nuvoton: Add dwmac glue for Nuvoton MA35 family @ 2025-01-15 9:22 ` Paul Menzel 0 siblings, 0 replies; 27+ messages in thread From: Paul Menzel @ 2025-01-15 9:22 UTC (permalink / raw) To: Joey Lu Cc: Andrew Lunn, alexandre.torgue, edumazet, schung, yclu4, linux-stm32, robh, openbmc, joabreu, kuba, pabeni, devicetree, conor+dt, richardcochran, ychuang3, peppe.cavallaro, linux-arm-kernel, netdev, linux-kernel, andrew+netdev, mcoquelin.stm32, krzk+dt, davem Dear Joey, Thank you for your prompt reply. Am 15.01.25 um 10:03 schrieb Joey Lu: > Paul Menzel 於 1/14/2025 9:49 AM 寫道: […] >> Am 13.01.25 um 00:54 schrieb Joey Lu: >>> Add support for Gigabit Ethernet on Nuvoton MA35 series using dwmac >>> driver. […] >> Also, please document how tested the driver. Maybe even paste new log >> messages. > > These are the kernel configurations for testing the MA35D1 GMAC driver: > ARCH_MA35, STMMAC_PLATFORM, DWMAC_NUVOTON. > > I'm not sure if this information is sufficient, so please provide some > guidance on what else I should include to meet your requirements. I’d be interested on what hardware you tested it. Probably some evaluation or customer reference board. > I will include the log messages at the end of the email. Awesome. Thank you. Personally, I also like to see those in the commit message. >>> Reviewed-by: Andrew Lunn <andrew@lunn.ch> >>> Signed-off-by: Joey Lu <a0987203069@gmail.com> >> >> As you use your company email address in the AUTHOR line below, please >> also add that email address to the commit message (and maybe even as >> the author). > > I will update the AUTHOR to use my personal email address instead of the > company email. Understood. (yclu4@nuvoton.com is also personal, but the Gmail address is private, I guess. ;-)). For statistics, how companies contribute to the Linux kernel, having the company address somewhere would be nice though, as you are doing this as your work at Nuvoton, right? >>> --- >>> drivers/net/ethernet/stmicro/stmmac/Kconfig | 11 ++ >>> drivers/net/ethernet/stmicro/stmmac/Makefile | 1 + >>> .../ethernet/stmicro/stmmac/dwmac-nuvoton.c | 179 ++++++++++++++++++ >>> 3 files changed, 191 insertions(+) >>> create mode 100644 drivers/net/ethernet/stmicro/stmmac/dwmac-nuvoton.c […] > log: > > [ T0] Booting Linux on physical CPU 0x0000000000 [0x411fd040] Out of curiosity, how do you get these timestamps T0, T1, …? […] Thank you and kind regards, Paul ^ permalink raw reply [flat|nested] 27+ messages in thread
* Re: [PATCH net-next v7 3/3] net: stmmac: dwmac-nuvoton: Add dwmac glue for Nuvoton MA35 family 2025-01-15 9:22 ` Paul Menzel @ 2025-01-15 11:05 ` Joey Lu -1 siblings, 0 replies; 27+ messages in thread From: Joey Lu @ 2025-01-15 11:05 UTC (permalink / raw) To: Paul Menzel Cc: andrew+netdev, davem, edumazet, kuba, pabeni, robh, krzk+dt, conor+dt, mcoquelin.stm32, richardcochran, devicetree, ychuang3, netdev, openbmc, alexandre.torgue, linux-kernel, joabreu, Andrew Lunn, schung, peppe.cavallaro, yclu4, linux-stm32, linux-arm-kernel Dear Paul, Thank you for your kind reply. Paul Menzel 於 1/15/2025 5:22 PM 寫道: > Dear Joey, > > > Thank you for your prompt reply. > > > Am 15.01.25 um 10:03 schrieb Joey Lu: > >> Paul Menzel 於 1/14/2025 9:49 AM 寫道: > > […] > >>> Am 13.01.25 um 00:54 schrieb Joey Lu: >>>> Add support for Gigabit Ethernet on Nuvoton MA35 series using dwmac >>>> driver. > > […] > >>> Also, please document how tested the driver. Maybe even paste new >>> log messages. >> >> These are the kernel configurations for testing the MA35D1 GMAC >> driver: ARCH_MA35, STMMAC_PLATFORM, DWMAC_NUVOTON. >> >> I'm not sure if this information is sufficient, so please provide >> some guidance on what else I should include to meet your requirements. > > I’d be interested on what hardware you tested it. Probably some > evaluation or customer reference board. The driver has been validated on our development boards, NuMaker-IoT-MA35D1-A1 and NuMaker-HMI-MA35D1-S1. > >> I will include the log messages at the end of the email. > > Awesome. Thank you. Personally, I also like to see those in the commit > message. Understood. I will include in the commit message in the next patch. > >>>> Reviewed-by: Andrew Lunn <andrew@lunn.ch> >>>> Signed-off-by: Joey Lu <a0987203069@gmail.com> >>> >>> As you use your company email address in the AUTHOR line below, >>> please also add that email address to the commit message (and maybe >>> even as the author). >> >> I will update the AUTHOR to use my personal email address instead of >> the company email. > > Understood. (yclu4@nuvoton.com is also personal, but the Gmail address > is private, I guess. ;-)). Oops, I meant to say "private" instead. > > For statistics, how companies contribute to the Linux kernel, having > the company address somewhere would be nice though, as you are doing > this as your work at Nuvoton, right? I will keep the company information in the driver header as you mentioned. > >>>> --- >>>> drivers/net/ethernet/stmicro/stmmac/Kconfig | 11 ++ >>>> drivers/net/ethernet/stmicro/stmmac/Makefile | 1 + >>>> .../ethernet/stmicro/stmmac/dwmac-nuvoton.c | 179 >>>> ++++++++++++++++++ >>>> 3 files changed, 191 insertions(+) >>>> create mode 100644 >>>> drivers/net/ethernet/stmicro/stmmac/dwmac-nuvoton.c > > […] > >> log: >> >> [ T0] Booting Linux on physical CPU 0x0000000000 [0x411fd040] > > Out of curiosity, how do you get these timestamps T0, T1, …? > > […] > > > Thank you and kind regards, > > Paul I simply forgot to enable CONFIG_PRINTK_TIME. Here is what the log looks like after enabling it. [ 1.886100] nuvoton-dwmac 40120000.ethernet: TX Checksum insertion supported [ 1.893104] nuvoton-dwmac 40120000.ethernet: Enhanced/Alternate descriptors [ 1.900048] nuvoton-dwmac 40120000.ethernet: Enabled extended descriptors [ 1.906806] nuvoton-dwmac 40120000.ethernet: Ring mode enabled [ 1.912611] nuvoton-dwmac 40120000.ethernet: Enable RX Mitigation via HW Watchdog Timer BR, Joey ^ permalink raw reply [flat|nested] 27+ messages in thread
* Re: [PATCH net-next v7 3/3] net: stmmac: dwmac-nuvoton: Add dwmac glue for Nuvoton MA35 family @ 2025-01-15 11:05 ` Joey Lu 0 siblings, 0 replies; 27+ messages in thread From: Joey Lu @ 2025-01-15 11:05 UTC (permalink / raw) To: Paul Menzel Cc: Andrew Lunn, alexandre.torgue, edumazet, schung, yclu4, linux-stm32, robh, openbmc, joabreu, kuba, pabeni, devicetree, conor+dt, richardcochran, ychuang3, peppe.cavallaro, linux-arm-kernel, netdev, linux-kernel, andrew+netdev, mcoquelin.stm32, krzk+dt, davem Dear Paul, Thank you for your kind reply. Paul Menzel 於 1/15/2025 5:22 PM 寫道: > Dear Joey, > > > Thank you for your prompt reply. > > > Am 15.01.25 um 10:03 schrieb Joey Lu: > >> Paul Menzel 於 1/14/2025 9:49 AM 寫道: > > […] > >>> Am 13.01.25 um 00:54 schrieb Joey Lu: >>>> Add support for Gigabit Ethernet on Nuvoton MA35 series using dwmac >>>> driver. > > […] > >>> Also, please document how tested the driver. Maybe even paste new >>> log messages. >> >> These are the kernel configurations for testing the MA35D1 GMAC >> driver: ARCH_MA35, STMMAC_PLATFORM, DWMAC_NUVOTON. >> >> I'm not sure if this information is sufficient, so please provide >> some guidance on what else I should include to meet your requirements. > > I’d be interested on what hardware you tested it. Probably some > evaluation or customer reference board. The driver has been validated on our development boards, NuMaker-IoT-MA35D1-A1 and NuMaker-HMI-MA35D1-S1. > >> I will include the log messages at the end of the email. > > Awesome. Thank you. Personally, I also like to see those in the commit > message. Understood. I will include in the commit message in the next patch. > >>>> Reviewed-by: Andrew Lunn <andrew@lunn.ch> >>>> Signed-off-by: Joey Lu <a0987203069@gmail.com> >>> >>> As you use your company email address in the AUTHOR line below, >>> please also add that email address to the commit message (and maybe >>> even as the author). >> >> I will update the AUTHOR to use my personal email address instead of >> the company email. > > Understood. (yclu4@nuvoton.com is also personal, but the Gmail address > is private, I guess. ;-)). Oops, I meant to say "private" instead. > > For statistics, how companies contribute to the Linux kernel, having > the company address somewhere would be nice though, as you are doing > this as your work at Nuvoton, right? I will keep the company information in the driver header as you mentioned. > >>>> --- >>>> drivers/net/ethernet/stmicro/stmmac/Kconfig | 11 ++ >>>> drivers/net/ethernet/stmicro/stmmac/Makefile | 1 + >>>> .../ethernet/stmicro/stmmac/dwmac-nuvoton.c | 179 >>>> ++++++++++++++++++ >>>> 3 files changed, 191 insertions(+) >>>> create mode 100644 >>>> drivers/net/ethernet/stmicro/stmmac/dwmac-nuvoton.c > > […] > >> log: >> >> [ T0] Booting Linux on physical CPU 0x0000000000 [0x411fd040] > > Out of curiosity, how do you get these timestamps T0, T1, …? > > […] > > > Thank you and kind regards, > > Paul I simply forgot to enable CONFIG_PRINTK_TIME. Here is what the log looks like after enabling it. [ 1.886100] nuvoton-dwmac 40120000.ethernet: TX Checksum insertion supported [ 1.893104] nuvoton-dwmac 40120000.ethernet: Enhanced/Alternate descriptors [ 1.900048] nuvoton-dwmac 40120000.ethernet: Enabled extended descriptors [ 1.906806] nuvoton-dwmac 40120000.ethernet: Ring mode enabled [ 1.912611] nuvoton-dwmac 40120000.ethernet: Enable RX Mitigation via HW Watchdog Timer BR, Joey ^ permalink raw reply [flat|nested] 27+ messages in thread
* Re: [PATCH net-next v7 3/3] net: stmmac: dwmac-nuvoton: Add dwmac glue for Nuvoton MA35 family 2025-01-13 5:54 ` Joey Lu @ 2025-01-14 23:33 ` Jakub Kicinski -1 siblings, 0 replies; 27+ messages in thread From: Jakub Kicinski @ 2025-01-14 23:33 UTC (permalink / raw) To: Joey Lu Cc: andrew+netdev, davem, edumazet, pabeni, robh, krzk+dt, conor+dt, mcoquelin.stm32, richardcochran, alexandre.torgue, joabreu, ychuang3, schung, yclu4, peppe.cavallaro, linux-arm-kernel, netdev, devicetree, linux-kernel, openbmc, linux-stm32, Andrew Lunn On Mon, 13 Jan 2025 13:54:34 +0800 Joey Lu wrote: > + regmap_write(bsp_priv->regmap, > + macid == 0 ? NVT_REG_SYS_GMAC0MISCR : NVT_REG_SYS_GMAC1MISCR, reg); This is a pretty long line and you do it twice, so save the address to a temp variable, pls > +MODULE_LICENSE("GPL v2"); checkpatch insists: WARNING: Prefer "GPL" over "GPL v2" - see commit bf7fbeeae6db ("module: Cure the MODULE_LICENSE "GPL" vs. "GPL v2" bogosity") -- pw-bot: cr ^ permalink raw reply [flat|nested] 27+ messages in thread
* Re: [PATCH net-next v7 3/3] net: stmmac: dwmac-nuvoton: Add dwmac glue for Nuvoton MA35 family @ 2025-01-14 23:33 ` Jakub Kicinski 0 siblings, 0 replies; 27+ messages in thread From: Jakub Kicinski @ 2025-01-14 23:33 UTC (permalink / raw) To: Joey Lu Cc: Andrew Lunn, ychuang3, edumazet, schung, yclu4, linux-stm32, robh, openbmc, joabreu, pabeni, devicetree, conor+dt, richardcochran, alexandre.torgue, peppe.cavallaro, linux-arm-kernel, netdev, linux-kernel, andrew+netdev, mcoquelin.stm32, krzk+dt, davem On Mon, 13 Jan 2025 13:54:34 +0800 Joey Lu wrote: > + regmap_write(bsp_priv->regmap, > + macid == 0 ? NVT_REG_SYS_GMAC0MISCR : NVT_REG_SYS_GMAC1MISCR, reg); This is a pretty long line and you do it twice, so save the address to a temp variable, pls > +MODULE_LICENSE("GPL v2"); checkpatch insists: WARNING: Prefer "GPL" over "GPL v2" - see commit bf7fbeeae6db ("module: Cure the MODULE_LICENSE "GPL" vs. "GPL v2" bogosity") -- pw-bot: cr ^ permalink raw reply [flat|nested] 27+ messages in thread
* Re: [PATCH net-next v7 3/3] net: stmmac: dwmac-nuvoton: Add dwmac glue for Nuvoton MA35 family 2025-01-14 23:33 ` Jakub Kicinski @ 2025-01-15 9:09 ` Joey Lu -1 siblings, 0 replies; 27+ messages in thread From: Joey Lu @ 2025-01-15 9:09 UTC (permalink / raw) To: Jakub Kicinski Cc: andrew+netdev, davem, edumazet, pabeni, robh, krzk+dt, conor+dt, mcoquelin.stm32, richardcochran, alexandre.torgue, joabreu, ychuang3, schung, yclu4, peppe.cavallaro, linux-arm-kernel, netdev, devicetree, linux-kernel, openbmc, linux-stm32, Andrew Lunn Dear Jakub, Thank you for the reply. Jakub Kicinski 於 1/15/2025 7:33 AM 寫道: > On Mon, 13 Jan 2025 13:54:34 +0800 Joey Lu wrote: >> + regmap_write(bsp_priv->regmap, >> + macid == 0 ? NVT_REG_SYS_GMAC0MISCR : NVT_REG_SYS_GMAC1MISCR, reg); > This is a pretty long line and you do it twice, so save the address > to a temp variable, pls Got it! >> +MODULE_LICENSE("GPL v2"); > checkpatch insists: > > WARNING: Prefer "GPL" over "GPL v2" - see commit bf7fbeeae6db ("module: Cure the MODULE_LICENSE "GPL" vs. "GPL v2" bogosity") Understood. I will fix the warning. BR, Joey ^ permalink raw reply [flat|nested] 27+ messages in thread
* Re: [PATCH net-next v7 3/3] net: stmmac: dwmac-nuvoton: Add dwmac glue for Nuvoton MA35 family @ 2025-01-15 9:09 ` Joey Lu 0 siblings, 0 replies; 27+ messages in thread From: Joey Lu @ 2025-01-15 9:09 UTC (permalink / raw) To: Jakub Kicinski Cc: Andrew Lunn, ychuang3, edumazet, schung, yclu4, linux-stm32, robh, openbmc, joabreu, pabeni, devicetree, conor+dt, richardcochran, alexandre.torgue, peppe.cavallaro, linux-arm-kernel, netdev, linux-kernel, andrew+netdev, mcoquelin.stm32, krzk+dt, davem Dear Jakub, Thank you for the reply. Jakub Kicinski 於 1/15/2025 7:33 AM 寫道: > On Mon, 13 Jan 2025 13:54:34 +0800 Joey Lu wrote: >> + regmap_write(bsp_priv->regmap, >> + macid == 0 ? NVT_REG_SYS_GMAC0MISCR : NVT_REG_SYS_GMAC1MISCR, reg); > This is a pretty long line and you do it twice, so save the address > to a temp variable, pls Got it! >> +MODULE_LICENSE("GPL v2"); > checkpatch insists: > > WARNING: Prefer "GPL" over "GPL v2" - see commit bf7fbeeae6db ("module: Cure the MODULE_LICENSE "GPL" vs. "GPL v2" bogosity") Understood. I will fix the warning. BR, Joey ^ permalink raw reply [flat|nested] 27+ messages in thread
end of thread, other threads:[~2025-01-15 23:43 UTC | newest] Thread overview: 27+ messages (download: mbox.gz follow: Atom feed -- links below jump to the message on this page -- 2025-01-13 5:54 [PATCH net-next v7 0/3] Add support for Nuvoton MA35D1 GMAC Joey Lu 2025-01-13 5:54 ` Joey Lu 2025-01-13 5:54 ` [PATCH net-next v7 1/3] dt-bindings: net: nuvoton: Add schema for Nuvoton MA35 family GMAC Joey Lu 2025-01-13 5:54 ` Joey Lu 2025-01-13 5:54 ` [PATCH net-next v7 2/3] arm64: dts: nuvoton: Add Ethernet nodes Joey Lu 2025-01-13 5:54 ` Joey Lu 2025-01-13 5:54 ` [PATCH net-next v7 3/3] net: stmmac: dwmac-nuvoton: Add dwmac glue for Nuvoton MA35 family Joey Lu 2025-01-13 5:54 ` Joey Lu 2025-01-14 1:49 ` Paul Menzel 2025-01-14 1:49 ` Paul Menzel 2025-01-14 2:16 ` Andrew Lunn 2025-01-14 2:16 ` Andrew Lunn 2025-01-14 2:21 ` Paul Menzel 2025-01-14 2:21 ` Paul Menzel 2025-01-14 10:29 ` Yanteng Si 2025-01-14 10:29 ` Yanteng Si 2025-01-14 23:35 ` Jakub Kicinski 2025-01-14 23:35 ` Jakub Kicinski 2025-01-15 9:03 ` Joey Lu 2025-01-15 9:22 ` Paul Menzel 2025-01-15 9:22 ` Paul Menzel 2025-01-15 11:05 ` Joey Lu 2025-01-15 11:05 ` Joey Lu 2025-01-14 23:33 ` Jakub Kicinski 2025-01-14 23:33 ` Jakub Kicinski 2025-01-15 9:09 ` Joey Lu 2025-01-15 9:09 ` Joey Lu
This is an external index of several public inboxes, see mirroring instructions on how to clone and mirror all data and code used by this external index.