* [PATCH v3 1/3] dt-bindings: net: nuvoton: Add schema for Nuvoton MA35 family GMAC
2024-11-18 8:27 [PATCH v3 0/3] Add support for Nuvoton MA35D1 GMAC Joey Lu
@ 2024-11-18 8:27 ` Joey Lu
2024-11-19 18:12 ` Rob Herring
2024-11-18 8:27 ` [PATCH v3 2/3] arm64: dts: nuvoton: Add Ethernet nodes Joey Lu
2024-11-18 8:27 ` [PATCH v3 3/3] net: stmmac: dwmac-nuvoton: Add dwmac glue for Nuvoton MA35 family Joey Lu
2 siblings, 1 reply; 13+ messages in thread
From: Joey Lu @ 2024-11-18 8:27 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.
Signed-off-by: Joey Lu <a0987203069@gmail.com>
---
.../bindings/net/nuvoton,ma35d1-dwmac.yaml | 173 ++++++++++++++++++
.../devicetree/bindings/net/snps,dwmac.yaml | 1 +
2 files changed, 174 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..92cbbcc72f2b
--- /dev/null
+++ b/Documentation/devicetree/bindings/net/nuvoton,ma35d1-dwmac.yaml
@@ -0,0 +1,173 @@
+# 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).
+
+# We need a select here so we don't match all nodes with 'snps,dwmac'
+select:
+ properties:
+ compatible:
+ contains:
+ enum:
+ - nuvoton,ma35d1-dwmac
+ required:
+ - compatible
+
+allOf:
+ - $ref: snps,dwmac.yaml#
+
+properties:
+ compatible:
+ oneOf:
+ - enum:
+ - nuvoton,ma35d1-dwmac
+ - const: snps,dwmac-3.70a
+
+ reg:
+ 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
+
+ phy-handle:
+ $ref: /schemas/types.yaml#/definitions/phandle
+ description:
+ Specifies a reference to a node representing a PHY device.
+
+ tx-internal-delay-ps:
+ enum: [0, 2000]
+ default: 0
+ 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.
+
+ rx-internal-delay-ps:
+ enum: [0, 2000]
+ default: 0
+ 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.
+
+ mdio:
+ $ref: /schemas/net/mdio.yaml#
+
+required:
+ - compatible
+ - reg
+ - interrupts
+ - interrupt-names
+ - clocks
+ - clock-names
+ - nuvoton,sys
+ - resets
+ - reset-names
+ - phy-mode
+
+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>
+ //Example 1
+ 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>;
+ mdio0: mdio {
+ compatible = "snps,dwmac-mdio";
+ #address-cells = <1>;
+ #size-cells = <0>;
+
+ eth_phy0: ethernet-phy@0 {
+ reg = <0>;
+ };
+ };
+ };
+
+ - |
+ //Example 2
+ 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 = "rmii";
+ phy-handle = <ð_phy1>;
+ mdio1: mdio {
+ compatible = "snps,dwmac-mdio";
+ #address-cells = <1>;
+ #size-cells = <0>;
+
+ eth_phy1: ethernet-phy@1 {
+ reg = <1>;
+ };
+ };
+ };
diff --git a/Documentation/devicetree/bindings/net/snps,dwmac.yaml b/Documentation/devicetree/bindings/net/snps,dwmac.yaml
index 4e2ba1bf788c..aecdb3d37b53 100644
--- a/Documentation/devicetree/bindings/net/snps,dwmac.yaml
+++ b/Documentation/devicetree/bindings/net/snps,dwmac.yaml
@@ -66,6 +66,7 @@ properties:
- ingenic,x2000-mac
- loongson,ls2k-dwmac
- loongson,ls7a-dwmac
+ - nuvoton,ma35d1-dwmac
- qcom,qcs404-ethqos
- qcom,sa8775p-ethqos
- qcom,sc8280xp-ethqos
--
2.34.1
^ permalink raw reply related [flat|nested] 13+ messages in thread* Re: [PATCH v3 1/3] dt-bindings: net: nuvoton: Add schema for Nuvoton MA35 family GMAC
2024-11-18 8:27 ` [PATCH v3 1/3] dt-bindings: net: nuvoton: Add schema for Nuvoton MA35 family GMAC Joey Lu
@ 2024-11-19 18:12 ` Rob Herring
0 siblings, 0 replies; 13+ messages in thread
From: Rob Herring @ 2024-11-19 18:12 UTC (permalink / raw)
To: Joey Lu
Cc: andrew+netdev, davem, edumazet, kuba, pabeni, 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
On Mon, Nov 18, 2024 at 04:27:05PM +0800, Joey Lu wrote:
> Create initial schema for Nuvoton MA35 family Gigabit MAC.
>
> Signed-off-by: Joey Lu <a0987203069@gmail.com>
> ---
> .../bindings/net/nuvoton,ma35d1-dwmac.yaml | 173 ++++++++++++++++++
> .../devicetree/bindings/net/snps,dwmac.yaml | 1 +
> 2 files changed, 174 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..92cbbcc72f2b
> --- /dev/null
> +++ b/Documentation/devicetree/bindings/net/nuvoton,ma35d1-dwmac.yaml
> @@ -0,0 +1,173 @@
> +# 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).
> +
> +# We need a select here so we don't match all nodes with 'snps,dwmac'
You mean snps,dwmac-3.70a?
> +select:
> + properties:
> + compatible:
> + contains:
> + enum:
> + - nuvoton,ma35d1-dwmac
> + required:
> + - compatible
> +
> +allOf:
> + - $ref: snps,dwmac.yaml#
> +
> +properties:
> + compatible:
> + oneOf:
oneOf is not correct. I think you wanted 'items'.
> + - enum:
> + - nuvoton,ma35d1-dwmac
> + - const: snps,dwmac-3.70a
But you said above the h/w is 3.73a.
Really, I'd prefer to just drop this because it's not useful on its own.
But the driver does check for snps,dwmac-3.70a. All those
of_device_is_compatible() calls in the driver should really be replaced
with static match data structs.
> +
> + reg:
> + description:
> + Register range should be one of the GMAC interface.
Need to define how many entries and what they are if more than 1.
> +
> + 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
> +
> + phy-handle:
> + $ref: /schemas/types.yaml#/definitions/phandle
The type is already defined. Drop.
> + description:
> + Specifies a reference to a node representing a PHY device.
> +
> + tx-internal-delay-ps:
> + enum: [0, 2000]
> + default: 0
> + 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.
> +
> + rx-internal-delay-ps:
> + enum: [0, 2000]
> + default: 0
> + 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.
> +
> + mdio:
> + $ref: /schemas/net/mdio.yaml#
> +
> +required:
> + - compatible
> + - reg
> + - interrupts
> + - interrupt-names
> + - clocks
> + - clock-names
> + - nuvoton,sys
> + - resets
> + - reset-names
> + - phy-mode
> +
> +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>
> + //Example 1
Not a useful comment.
> + gmac0: ethernet@40120000 {
Drop unused labels.
> + 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>;
> + mdio0: mdio {
> + compatible = "snps,dwmac-mdio";
> + #address-cells = <1>;
> + #size-cells = <0>;
> +
> + eth_phy0: ethernet-phy@0 {
> + reg = <0>;
> + };
> + };
> + };
> +
> + - |
> + //Example 2
> + gmac1: ethernet@40130000 {
Drop the example. It's almost the same as the first one.
> + 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 = "rmii";
> + phy-handle = <ð_phy1>;
> + mdio1: mdio {
> + compatible = "snps,dwmac-mdio";
> + #address-cells = <1>;
> + #size-cells = <0>;
> +
> + eth_phy1: ethernet-phy@1 {
> + reg = <1>;
> + };
> + };
> + };
> diff --git a/Documentation/devicetree/bindings/net/snps,dwmac.yaml b/Documentation/devicetree/bindings/net/snps,dwmac.yaml
> index 4e2ba1bf788c..aecdb3d37b53 100644
> --- a/Documentation/devicetree/bindings/net/snps,dwmac.yaml
> +++ b/Documentation/devicetree/bindings/net/snps,dwmac.yaml
> @@ -66,6 +66,7 @@ properties:
> - ingenic,x2000-mac
> - loongson,ls2k-dwmac
> - loongson,ls7a-dwmac
> + - nuvoton,ma35d1-dwmac
> - qcom,qcs404-ethqos
> - qcom,sa8775p-ethqos
> - qcom,sc8280xp-ethqos
> --
> 2.34.1
>
^ permalink raw reply [flat|nested] 13+ messages in thread
* [PATCH v3 2/3] arm64: dts: nuvoton: Add Ethernet nodes
2024-11-18 8:27 [PATCH v3 0/3] Add support for Nuvoton MA35D1 GMAC Joey Lu
2024-11-18 8:27 ` [PATCH v3 1/3] dt-bindings: net: nuvoton: Add schema for Nuvoton MA35 family GMAC Joey Lu
@ 2024-11-18 8:27 ` Joey Lu
2024-11-26 10:08 ` Krzysztof Kozlowski
2024-11-18 8:27 ` [PATCH v3 3/3] net: stmmac: dwmac-nuvoton: Add dwmac glue for Nuvoton MA35 family Joey Lu
2 siblings, 1 reply; 13+ messages in thread
From: Joey Lu @ 2024-11-18 8:27 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 | 52 +++++++++++++++++++
3 files changed, 74 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..2e0071329309 100644
--- a/arch/arm64/boot/dts/nuvoton/ma35d1.dtsi
+++ b/arch/arm64/boot/dts/nuvoton/ma35d1.dtsi
@@ -379,5 +379,57 @@ 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";
+ status = "disabled";
+
+ phy-mode = "rgmii-id";
+ phy-handle = <ð_phy0>;
+ 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";
+ status = "disabled";
+
+ phy-mode = "rgmii-id";
+ phy-handle = <ð_phy1>;
+ 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] 13+ messages in thread* Re: [PATCH v3 2/3] arm64: dts: nuvoton: Add Ethernet nodes
2024-11-18 8:27 ` [PATCH v3 2/3] arm64: dts: nuvoton: Add Ethernet nodes Joey Lu
@ 2024-11-26 10:08 ` Krzysztof Kozlowski
2024-11-27 8:01 ` Joey Lu
0 siblings, 1 reply; 13+ messages in thread
From: Krzysztof Kozlowski @ 2024-11-26 10:08 UTC (permalink / raw)
To: Joey Lu, 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
On 18/11/2024 09:27, Joey Lu wrote:
> diff --git a/arch/arm64/boot/dts/nuvoton/ma35d1.dtsi b/arch/arm64/boot/dts/nuvoton/ma35d1.dtsi
> index e51b98f5bdce..2e0071329309 100644
> --- a/arch/arm64/boot/dts/nuvoton/ma35d1.dtsi
> +++ b/arch/arm64/boot/dts/nuvoton/ma35d1.dtsi
> @@ -379,5 +379,57 @@ 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";
> + status = "disabled";
Status is always, always the last property. Please read and follow DTS
coding style.
Best regards,
Krzysztof
^ permalink raw reply [flat|nested] 13+ messages in thread* Re: [PATCH v3 2/3] arm64: dts: nuvoton: Add Ethernet nodes
2024-11-26 10:08 ` Krzysztof Kozlowski
@ 2024-11-27 8:01 ` Joey Lu
0 siblings, 0 replies; 13+ messages in thread
From: Joey Lu @ 2024-11-27 8:01 UTC (permalink / raw)
To: Krzysztof Kozlowski, 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
Dear Krzysztof,
Thank you for your reply.
Krzysztof Kozlowski 於 11/26/2024 6:08 PM 寫道:
> On 18/11/2024 09:27, Joey Lu wrote:
>> diff --git a/arch/arm64/boot/dts/nuvoton/ma35d1.dtsi b/arch/arm64/boot/dts/nuvoton/ma35d1.dtsi
>> index e51b98f5bdce..2e0071329309 100644
>> --- a/arch/arm64/boot/dts/nuvoton/ma35d1.dtsi
>> +++ b/arch/arm64/boot/dts/nuvoton/ma35d1.dtsi
>> @@ -379,5 +379,57 @@ 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";
>> + status = "disabled";
> Status is always, always the last property. Please read and follow DTS
> coding style.
>
> Best regards,
> Krzysztof
Got it. I will fix these.
Thanks!
BR,
Joey
^ permalink raw reply [flat|nested] 13+ messages in thread
* [PATCH v3 3/3] net: stmmac: dwmac-nuvoton: Add dwmac glue for Nuvoton MA35 family
2024-11-18 8:27 [PATCH v3 0/3] Add support for Nuvoton MA35D1 GMAC Joey Lu
2024-11-18 8:27 ` [PATCH v3 1/3] dt-bindings: net: nuvoton: Add schema for Nuvoton MA35 family GMAC Joey Lu
2024-11-18 8:27 ` [PATCH v3 2/3] arm64: dts: nuvoton: Add Ethernet nodes Joey Lu
@ 2024-11-18 8:27 ` Joey Lu
2024-11-19 1:48 ` Andrew Lunn
` (2 more replies)
2 siblings, 3 replies; 13+ messages in thread
From: Joey Lu @ 2024-11-18 8:27 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 support for Gigabit Ethernet on Nuvoton MA35 series using dwmac driver.
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 | 180 ++++++++++++++++++
3 files changed, 192 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 05cc07b8f48c..55d94f669be3 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 c2f0e91f6bf8..c08fcfdd7b31 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..ac57384b393d
--- /dev/null
+++ b/drivers/net/ethernet/stmicro/stmmac/dwmac-nuvoton.c
@@ -0,0 +1,180 @@
+// 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 REG_SYS_GMAC0MISCR 0x108
+#define REG_SYS_GMAC1MISCR 0x10C
+
+#define MISCR_RMII BIT(0)
+
+/* 2000ps is mapped to 0 ~ 0xF */
+#define PATH_DELAY_DEC 134
+#define TX_DELAY_OFFSET 16
+#define TX_DELAY_MASK GENMASK(19, 16)
+#define RX_DELAY_OFFSET 20
+#define RX_DELAY_MASK GENMASK(23, 20)
+
+struct nvt_priv_data {
+ struct platform_device *pdev;
+ struct regmap *regmap;
+};
+
+static struct nvt_priv_data *
+nuvoton_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(dev, "Failed to get sys register\n");
+ return ERR_PTR(-ENODEV);
+ }
+ if (macid > 1) {
+ dev_err(dev, "Invalid sys arguments\n");
+ return ERR_PTR(-EINVAL);
+ }
+
+ if (of_property_read_u32(dev->of_node, "tx-internal-delay-ps", &arg)) {
+ tx_delay = 0; /* Default value is 0 */
+ } else {
+ if (arg <= 2000) {
+ tx_delay = (arg == 2000) ? 0xF : (arg / 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; /* Default value is 0 */
+ } else {
+ if (arg <= 2000) {
+ rx_delay = (arg == 2000) ? 0xF : (arg / 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 ? REG_SYS_GMAC0MISCR : REG_SYS_GMAC1MISCR, ®);
+ reg &= ~(TX_DELAY_MASK | 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 &= ~MISCR_RMII;
+ break;
+ case PHY_INTERFACE_MODE_RMII:
+ reg |= MISCR_RMII;
+ break;
+ default:
+ dev_err(dev, "Unsupported phy-mode (%d)\n", phy_mode);
+ return ERR_PTR(-EINVAL);
+ }
+
+ if (!(reg & MISCR_RMII)) {
+ reg |= tx_delay << TX_DELAY_OFFSET;
+ reg |= rx_delay << RX_DELAY_OFFSET;
+ }
+
+ regmap_write(bsp_priv->regmap,
+ macid == 0 ? REG_SYS_GMAC0MISCR : REG_SYS_GMAC1MISCR, reg);
+
+ bsp_priv->pdev = pdev;
+
+ return bsp_priv;
+}
+
+static int nuvoton_gmac_probe(struct platform_device *pdev)
+{
+ struct plat_stmmacenet_data *plat_dat;
+ struct stmmac_resources stmmac_res;
+ 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;
+
+ plat_dat->bsp_priv = nuvoton_gmac_setup(pdev, plat_dat);
+ if (IS_ERR(plat_dat->bsp_priv)) {
+ ret = PTR_ERR(plat_dat->bsp_priv);
+ return ret;
+ }
+
+ ret = stmmac_dvr_probe(&pdev->dev, plat_dat, &stmmac_res);
+ if (ret)
+ return ret;
+
+ /* We support WoL by magic packet, override pmt to make it work! */
+ plat_dat->pmt = 1;
+ dev_info(&pdev->dev, "Wake-Up On Lan supported\n");
+ device_set_wakeup_capable(&pdev->dev, 1);
+
+ return 0;
+}
+
+static const struct of_device_id nuvoton_dwmac_match[] = {
+ { .compatible = "nuvoton,ma35d1-dwmac"},
+ { }
+};
+MODULE_DEVICE_TABLE(of, nuvoton_dwmac_match);
+
+static struct platform_driver nuvoton_dwmac_driver = {
+ .probe = nuvoton_gmac_probe,
+ .remove_new = stmmac_pltfr_remove,
+ .driver = {
+ .name = "nuvoton-dwmac",
+ .pm = &stmmac_pltfr_pm_ops,
+ .of_match_table = nuvoton_dwmac_match,
+ },
+};
+module_platform_driver(nuvoton_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] 13+ messages in thread* Re: [PATCH v3 3/3] net: stmmac: dwmac-nuvoton: Add dwmac glue for Nuvoton MA35 family
2024-11-18 8:27 ` [PATCH v3 3/3] net: stmmac: dwmac-nuvoton: Add dwmac glue for Nuvoton MA35 family Joey Lu
@ 2024-11-19 1:48 ` Andrew Lunn
2024-11-19 10:08 ` Joey Lu
2024-11-20 14:56 ` Uwe Kleine-König
2024-11-26 10:10 ` Krzysztof Kozlowski
2 siblings, 1 reply; 13+ messages in thread
From: Andrew Lunn @ 2024-11-19 1:48 UTC (permalink / raw)
To: Joey Lu
Cc: andrew+netdev, davem, edumazet, kuba, 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
> + if (of_property_read_u32(dev->of_node, "tx-internal-delay-ps", &arg)) {
> + tx_delay = 0; /* Default value is 0 */
> + } else {
> + if (arg <= 2000) {
> + tx_delay = (arg == 2000) ? 0xF : (arg / PATH_DELAY_DEC);
> + dev_dbg(dev, "Set Tx path delay to 0x%x\n", tx_delay);
The device tree binding says:
+ tx-internal-delay-ps:
+ enum: [0, 2000]
So only two values are allowed. Yet the C code is
arg / PATH_DELAY_DEC
which seems to allow 16 values?
Please make this consistent.
Andrew
---
pw-bot: cr
^ permalink raw reply [flat|nested] 13+ messages in thread* Re: [PATCH v3 3/3] net: stmmac: dwmac-nuvoton: Add dwmac glue for Nuvoton MA35 family
2024-11-19 1:48 ` Andrew Lunn
@ 2024-11-19 10:08 ` Joey Lu
0 siblings, 0 replies; 13+ messages in thread
From: Joey Lu @ 2024-11-19 10:08 UTC (permalink / raw)
To: Andrew Lunn
Cc: andrew+netdev, davem, edumazet, kuba, 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 於 11/19/2024 9:48 AM 寫道:
>> + if (of_property_read_u32(dev->of_node, "tx-internal-delay-ps", &arg)) {
>> + tx_delay = 0; /* Default value is 0 */
>> + } else {
>> + if (arg <= 2000) {
>> + tx_delay = (arg == 2000) ? 0xF : (arg / PATH_DELAY_DEC);
>> + dev_dbg(dev, "Set Tx path delay to 0x%x\n", tx_delay);
> The device tree binding says:
>
> + tx-internal-delay-ps:
> + enum: [0, 2000]
>
>
> So only two values are allowed. Yet the C code is
>
> arg / PATH_DELAY_DEC
>
> which seems to allow 16 values?
>
> Please make this consistent.
>
>
> Andrew
Oops. That was my misuse; I will change it to minimum and maximum.
Thanks!
BR,
Joey
>
> ---
> pw-bot: cr
^ permalink raw reply [flat|nested] 13+ messages in thread
* Re: [PATCH v3 3/3] net: stmmac: dwmac-nuvoton: Add dwmac glue for Nuvoton MA35 family
2024-11-18 8:27 ` [PATCH v3 3/3] net: stmmac: dwmac-nuvoton: Add dwmac glue for Nuvoton MA35 family Joey Lu
2024-11-19 1:48 ` Andrew Lunn
@ 2024-11-20 14:56 ` Uwe Kleine-König
2024-11-26 9:39 ` Joey Lu
2024-11-26 10:10 ` Krzysztof Kozlowski
2 siblings, 1 reply; 13+ messages in thread
From: Uwe Kleine-König @ 2024-11-20 14:56 UTC (permalink / raw)
To: Joey Lu
Cc: andrew+netdev, davem, edumazet, kuba, 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
[-- Attachment #1: Type: text/plain, Size: 252 bytes --]
Hello,
On Mon, Nov 18, 2024 at 04:27:07PM +0800, Joey Lu wrote:
> +static struct platform_driver nuvoton_dwmac_driver = {
> + .probe = nuvoton_gmac_probe,
> + .remove_new = stmmac_pltfr_remove,
Please use .remove instead of .remove_new.
Thanks
Uwe
[-- Attachment #2: signature.asc --]
[-- Type: application/pgp-signature, Size: 488 bytes --]
^ permalink raw reply [flat|nested] 13+ messages in thread* Re: [PATCH v3 3/3] net: stmmac: dwmac-nuvoton: Add dwmac glue for Nuvoton MA35 family
2024-11-20 14:56 ` Uwe Kleine-König
@ 2024-11-26 9:39 ` Joey Lu
0 siblings, 0 replies; 13+ messages in thread
From: Joey Lu @ 2024-11-26 9:39 UTC (permalink / raw)
To: Uwe Kleine-König
Cc: andrew+netdev, davem, edumazet, kuba, 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
Dear Uwe,
Thank you for the details!
Uwe Kleine-König 於 11/20/2024 10:56 PM 寫道:
> Hello,
>
> On Mon, Nov 18, 2024 at 04:27:07PM +0800, Joey Lu wrote:
>> +static struct platform_driver nuvoton_dwmac_driver = {
>> + .probe = nuvoton_gmac_probe,
>> + .remove_new = stmmac_pltfr_remove,
> Please use .remove instead of .remove_new.
>
> Thanks
> Uwe
I will use .remove instead.
Thanks!
BR,
Joey
^ permalink raw reply [flat|nested] 13+ messages in thread
* Re: [PATCH v3 3/3] net: stmmac: dwmac-nuvoton: Add dwmac glue for Nuvoton MA35 family
2024-11-18 8:27 ` [PATCH v3 3/3] net: stmmac: dwmac-nuvoton: Add dwmac glue for Nuvoton MA35 family Joey Lu
2024-11-19 1:48 ` Andrew Lunn
2024-11-20 14:56 ` Uwe Kleine-König
@ 2024-11-26 10:10 ` Krzysztof Kozlowski
2024-11-27 8:03 ` Joey Lu
2 siblings, 1 reply; 13+ messages in thread
From: Krzysztof Kozlowski @ 2024-11-26 10:10 UTC (permalink / raw)
To: Joey Lu, 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
On 18/11/2024 09:27, Joey Lu wrote:
> +
> +static struct nvt_priv_data *
> +nuvoton_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(dev, "Failed to get sys register\n");
Syntax is: return dev_err_probe
> + return ERR_PTR(-ENODEV);
> + }
> + if (macid > 1) {
> + dev_err(dev, "Invalid sys arguments\n");
> + return ERR_PTR(-EINVAL);
> + }
> +
...
> +
> + ret = stmmac_dvr_probe(&pdev->dev, plat_dat, &stmmac_res);
> + if (ret)
> + return ret;
> +
> + /* We support WoL by magic packet, override pmt to make it work! */
> + plat_dat->pmt = 1;
> + dev_info(&pdev->dev, "Wake-Up On Lan supported\n");
Drop, driver should be silent on success.
> + device_set_wakeup_capable(&pdev->dev, 1);
> +
> + return 0;
> +}
Best regards,
Krzysztof
^ permalink raw reply [flat|nested] 13+ messages in thread* Re: [PATCH v3 3/3] net: stmmac: dwmac-nuvoton: Add dwmac glue for Nuvoton MA35 family
2024-11-26 10:10 ` Krzysztof Kozlowski
@ 2024-11-27 8:03 ` Joey Lu
0 siblings, 0 replies; 13+ messages in thread
From: Joey Lu @ 2024-11-27 8:03 UTC (permalink / raw)
To: Krzysztof Kozlowski, 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
Krzysztof Kozlowski 於 11/26/2024 6:10 PM 寫道:
> On 18/11/2024 09:27, Joey Lu wrote:
>> +
>> +static struct nvt_priv_data *
>> +nuvoton_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(dev, "Failed to get sys register\n");
> Syntax is: return dev_err_probe
I will use dev_err_probe instead.
>
>> + return ERR_PTR(-ENODEV);
>> + }
>> + if (macid > 1) {
>> + dev_err(dev, "Invalid sys arguments\n");
>> + return ERR_PTR(-EINVAL);
>> + }
>> +
>
>
> ...
>
I will use dev_err_probe instead.
>> +
>> + ret = stmmac_dvr_probe(&pdev->dev, plat_dat, &stmmac_res);
>> + if (ret)
>> + return ret;
>> +
>> + /* We support WoL by magic packet, override pmt to make it work! */
>> + plat_dat->pmt = 1;
>> + dev_info(&pdev->dev, "Wake-Up On Lan supported\n");
>
> Drop, driver should be silent on success.
Got it.
>
>> + device_set_wakeup_capable(&pdev->dev, 1);
>> +
>> + return 0;
>> +}
>
>
> Best regards,
> Krzysztof
Thanks!
BR,
Joey
^ permalink raw reply [flat|nested] 13+ messages in thread