* [net-next,PATCH v2 0/2] Series to deliver Ethernet for STM32MP25
@ 2024-06-17 15:45 Christophe Roullier
2024-06-17 15:45 ` [net-next,PATCH v2 1/2] dt-bindings: net: add STM32MP25 compatible in documentation for stm32 Christophe Roullier
2024-06-17 15:45 ` [net-next,PATCH v2 2/2] net: stmmac: dwmac-stm32: stm32: add management of stm32mp25 " Christophe Roullier
0 siblings, 2 replies; 5+ messages in thread
From: Christophe Roullier @ 2024-06-17 15:45 UTC (permalink / raw)
To: David S . Miller, Eric Dumazet, Jakub Kicinski, Paolo Abeni,
Rob Herring, Krzysztof Kozlowski, Conor Dooley, Maxime Coquelin,
Alexandre Torgue, Richard Cochran, Jose Abreu, Liam Girdwood,
Mark Brown, Christophe Roullier, Marek Vasut
Cc: netdev, devicetree, linux-stm32, linux-arm-kernel, linux-kernel
STM32MP25 is STM32 SOC with 2 GMACs instances.
GMAC IP version is SNPS 5.3x.
GMAC IP configure with 2 RX and 4 TX queue.
DMA HW capability register supported
RX Checksum Offload Engine supported
TX Checksum insertion supported
Wake-Up On Lan supported
TSO supported
V2: - Remark from Marek (sort compatible in YAML, change in glue to simplify)
Christophe Roullier (2):
dt-bindings: net: add STM32MP25 compatible in documentation for stm32
net: stmmac: dwmac-stm32: stm32: add management of stm32mp25 for stm32
.../devicetree/bindings/net/stm32-dwmac.yaml | 8 +-
.../net/ethernet/stmicro/stmmac/dwmac-stm32.c | 77 ++++++++++++++++++-
2 files changed, 81 insertions(+), 4 deletions(-)
base-commit: 4314175af49668ab20c0d60d7d7657986e1d0c7c
--
2.25.1
^ permalink raw reply [flat|nested] 5+ messages in thread
* [net-next,PATCH v2 1/2] dt-bindings: net: add STM32MP25 compatible in documentation for stm32
2024-06-17 15:45 [net-next,PATCH v2 0/2] Series to deliver Ethernet for STM32MP25 Christophe Roullier
@ 2024-06-17 15:45 ` Christophe Roullier
2024-06-17 16:19 ` Conor Dooley
2024-06-17 15:45 ` [net-next,PATCH v2 2/2] net: stmmac: dwmac-stm32: stm32: add management of stm32mp25 " Christophe Roullier
1 sibling, 1 reply; 5+ messages in thread
From: Christophe Roullier @ 2024-06-17 15:45 UTC (permalink / raw)
To: David S . Miller, Eric Dumazet, Jakub Kicinski, Paolo Abeni,
Rob Herring, Krzysztof Kozlowski, Conor Dooley, Maxime Coquelin,
Alexandre Torgue, Richard Cochran, Jose Abreu, Liam Girdwood,
Mark Brown, Christophe Roullier, Marek Vasut
Cc: netdev, devicetree, linux-stm32, linux-arm-kernel, linux-kernel
New STM32 SOC have 2 GMACs instances.
GMAC IP version is SNPS 5.30
Signed-off-by: Christophe Roullier <christophe.roullier@foss.st.com>
---
Documentation/devicetree/bindings/net/stm32-dwmac.yaml | 8 +++++++-
1 file changed, 7 insertions(+), 1 deletion(-)
diff --git a/Documentation/devicetree/bindings/net/stm32-dwmac.yaml b/Documentation/devicetree/bindings/net/stm32-dwmac.yaml
index f6e5e0626a3f..bf23838fe6e8 100644
--- a/Documentation/devicetree/bindings/net/stm32-dwmac.yaml
+++ b/Documentation/devicetree/bindings/net/stm32-dwmac.yaml
@@ -23,12 +23,17 @@ select:
- st,stm32-dwmac
- st,stm32mp1-dwmac
- st,stm32mp13-dwmac
+ - st,stm32mp25-dwmac
required:
- compatible
properties:
compatible:
oneOf:
+ - items:
+ - enum:
+ - st,stm32mp25-dwmac
+ - const: snps,dwmac-5.20
- items:
- enum:
- st,stm32mp1-dwmac
@@ -121,8 +126,9 @@ allOf:
compatible:
contains:
enum:
- - st,stm32mp1-dwmac
- st,stm32-dwmac
+ - st,stm32mp1-dwmac
+ - st,stm32mp25-dwmac
then:
properties:
st,syscon:
--
2.25.1
^ permalink raw reply related [flat|nested] 5+ messages in thread
* [net-next,PATCH v2 2/2] net: stmmac: dwmac-stm32: stm32: add management of stm32mp25 for stm32
2024-06-17 15:45 [net-next,PATCH v2 0/2] Series to deliver Ethernet for STM32MP25 Christophe Roullier
2024-06-17 15:45 ` [net-next,PATCH v2 1/2] dt-bindings: net: add STM32MP25 compatible in documentation for stm32 Christophe Roullier
@ 2024-06-17 15:45 ` Christophe Roullier
2024-06-19 13:56 ` Simon Horman
1 sibling, 1 reply; 5+ messages in thread
From: Christophe Roullier @ 2024-06-17 15:45 UTC (permalink / raw)
To: David S . Miller, Eric Dumazet, Jakub Kicinski, Paolo Abeni,
Rob Herring, Krzysztof Kozlowski, Conor Dooley, Maxime Coquelin,
Alexandre Torgue, Richard Cochran, Jose Abreu, Liam Girdwood,
Mark Brown, Christophe Roullier, Marek Vasut
Cc: netdev, devicetree, linux-stm32, linux-arm-kernel, linux-kernel
Add Ethernet support for STM32MP25.
STM32MP25 is STM32 SOC with 2 GMACs instances.
GMAC IP version is SNPS 5.3x.
GMAC IP configure with 2 RX and 4 TX queue.
DMA HW capability register supported
RX Checksum Offload Engine supported
TX Checksum insertion supported
Wake-Up On Lan supported
TSO supported
Signed-off-by: Christophe Roullier <christophe.roullier@foss.st.com>
---
.../net/ethernet/stmicro/stmmac/dwmac-stm32.c | 77 ++++++++++++++++++-
1 file changed, 74 insertions(+), 3 deletions(-)
diff --git a/drivers/net/ethernet/stmicro/stmmac/dwmac-stm32.c b/drivers/net/ethernet/stmicro/stmmac/dwmac-stm32.c
index b2db0e26c4e4..71a187b4b5b1 100644
--- a/drivers/net/ethernet/stmicro/stmmac/dwmac-stm32.c
+++ b/drivers/net/ethernet/stmicro/stmmac/dwmac-stm32.c
@@ -53,7 +53,18 @@
#define SYSCFG_MCU_ETH_SEL_MII 0
#define SYSCFG_MCU_ETH_SEL_RMII 1
-/* STM32MP1 register definitions
+/* STM32MP2 register definitions */
+#define SYSCFG_MP2_ETH_MASK GENMASK(31, 0)
+
+#define SYSCFG_ETHCR_ETH_PTP_CLK_SEL BIT(2)
+#define SYSCFG_ETHCR_ETH_CLK_SEL BIT(1)
+#define SYSCFG_ETHCR_ETH_REF_CLK_SEL BIT(0)
+
+#define SYSCFG_ETHCR_ETH_SEL_MII 0
+#define SYSCFG_ETHCR_ETH_SEL_RGMII BIT(4)
+#define SYSCFG_ETHCR_ETH_SEL_RMII BIT(6)
+
+/* STM32MPx register definitions
*
* Below table summarizes the clock requirement and clock sources for
* supported phy interface modes.
@@ -104,7 +115,7 @@ struct stm32_ops {
int (*parse_data)(struct stm32_dwmac *dwmac,
struct device *dev);
bool clk_rx_enable_in_suspend;
- bool is_mp13;
+ bool is_mp13, is_mp2;
u32 syscfg_clr_off;
};
@@ -277,8 +288,52 @@ static int stm32mp1_configure_pmcr(struct plat_stmmacenet_data *plat_dat)
dwmac->mode_mask, val);
}
+static int stm32mp2_configure_syscfg(struct plat_stmmacenet_data *plat_dat)
+{
+ struct stm32_dwmac *dwmac = plat_dat->bsp_priv;
+ u32 reg = dwmac->mode_reg;
+ int val = 0;
+
+ switch (plat_dat->mac_interface) {
+ case PHY_INTERFACE_MODE_MII:
+ break;
+ case PHY_INTERFACE_MODE_GMII:
+ if (dwmac->enable_eth_ck)
+ val |= SYSCFG_ETHCR_ETH_CLK_SEL;
+ break;
+ case PHY_INTERFACE_MODE_RMII:
+ val = SYSCFG_ETHCR_ETH_SEL_RMII;
+ if (dwmac->enable_eth_ck)
+ val |= SYSCFG_ETHCR_ETH_REF_CLK_SEL;
+ break;
+ case PHY_INTERFACE_MODE_RGMII:
+ case PHY_INTERFACE_MODE_RGMII_ID:
+ case PHY_INTERFACE_MODE_RGMII_RXID:
+ case PHY_INTERFACE_MODE_RGMII_TXID:
+ val = SYSCFG_ETHCR_ETH_SEL_RGMII;
+ if (dwmac->enable_eth_ck)
+ val |= SYSCFG_ETHCR_ETH_CLK_SEL;
+ break;
+ default:
+ dev_err(dwmac->dev, "Mode %s not supported",
+ phy_modes(plat_dat->mac_interface));
+ /* Do not manage others interfaces */
+ return -EINVAL;
+ }
+
+ dev_dbg(dwmac->dev, "Mode %s", phy_modes(plat_dat->mac_interface));
+
+ /* Select PTP (IEEE1588) clock selection from RCC (ck_ker_ethxptp) */
+ val |= SYSCFG_ETHCR_ETH_PTP_CLK_SEL;
+
+ /* Update ETHCR (set register) */
+ return regmap_update_bits(dwmac->regmap, reg,
+ SYSCFG_MP2_ETH_MASK, val);
+}
+
static int stm32mp1_set_mode(struct plat_stmmacenet_data *plat_dat)
{
+ struct stm32_dwmac *dwmac = plat_dat->bsp_priv;
int ret;
ret = stm32mp1_select_ethck_external(plat_dat);
@@ -289,7 +344,10 @@ static int stm32mp1_set_mode(struct plat_stmmacenet_data *plat_dat)
if (ret)
return ret;
- return stm32mp1_configure_pmcr(plat_dat);
+ if (!dwmac->ops->is_mp2)
+ return stm32mp1_configure_pmcr(plat_dat);
+ else
+ return stm32mp2_configure_syscfg(plat_dat);
}
static int stm32mcu_set_mode(struct plat_stmmacenet_data *plat_dat)
@@ -365,6 +423,9 @@ static int stm32_dwmac_parse_data(struct stm32_dwmac *dwmac,
return err;
}
+ if (dwmac->ops->is_mp2)
+ return err;
+
dwmac->mode_mask = SYSCFG_MP1_ETH_MASK;
err = of_property_read_u32_index(np, "st,syscon", 2, &dwmac->mode_mask);
if (err) {
@@ -586,10 +647,20 @@ static struct stm32_ops stm32mp13_dwmac_data = {
.clk_rx_enable_in_suspend = true
};
+static struct stm32_ops stm32mp25_dwmac_data = {
+ .set_mode = stm32mp1_set_mode,
+ .suspend = stm32mp1_suspend,
+ .resume = stm32mp1_resume,
+ .parse_data = stm32mp1_parse_data,
+ .is_mp2 = true,
+ .clk_rx_enable_in_suspend = true
+};
+
static const struct of_device_id stm32_dwmac_match[] = {
{ .compatible = "st,stm32-dwmac", .data = &stm32mcu_dwmac_data},
{ .compatible = "st,stm32mp1-dwmac", .data = &stm32mp1_dwmac_data},
{ .compatible = "st,stm32mp13-dwmac", .data = &stm32mp13_dwmac_data},
+ { .compatible = "st,stm32mp25-dwmac", .data = &stm32mp25_dwmac_data},
{ }
};
MODULE_DEVICE_TABLE(of, stm32_dwmac_match);
--
2.25.1
^ permalink raw reply related [flat|nested] 5+ messages in thread
* Re: [net-next,PATCH v2 1/2] dt-bindings: net: add STM32MP25 compatible in documentation for stm32
2024-06-17 15:45 ` [net-next,PATCH v2 1/2] dt-bindings: net: add STM32MP25 compatible in documentation for stm32 Christophe Roullier
@ 2024-06-17 16:19 ` Conor Dooley
0 siblings, 0 replies; 5+ messages in thread
From: Conor Dooley @ 2024-06-17 16:19 UTC (permalink / raw)
To: Christophe Roullier
Cc: David S . Miller, Eric Dumazet, Jakub Kicinski, Paolo Abeni,
Rob Herring, Krzysztof Kozlowski, Conor Dooley, Maxime Coquelin,
Alexandre Torgue, Richard Cochran, Jose Abreu, Liam Girdwood,
Mark Brown, Marek Vasut, netdev, devicetree, linux-stm32,
linux-arm-kernel, linux-kernel
[-- Attachment #1: Type: text/plain, Size: 277 bytes --]
On Mon, Jun 17, 2024 at 05:45:15PM +0200, Christophe Roullier wrote:
> New STM32 SOC have 2 GMACs instances.
> GMAC IP version is SNPS 5.30
>
> Signed-off-by: Christophe Roullier <christophe.roullier@foss.st.com>
Reviewed-by: Conor Dooley <conor.dooley@microchip.com>
[-- Attachment #2: signature.asc --]
[-- Type: application/pgp-signature, Size: 228 bytes --]
^ permalink raw reply [flat|nested] 5+ messages in thread
* Re: [net-next,PATCH v2 2/2] net: stmmac: dwmac-stm32: stm32: add management of stm32mp25 for stm32
2024-06-17 15:45 ` [net-next,PATCH v2 2/2] net: stmmac: dwmac-stm32: stm32: add management of stm32mp25 " Christophe Roullier
@ 2024-06-19 13:56 ` Simon Horman
0 siblings, 0 replies; 5+ messages in thread
From: Simon Horman @ 2024-06-19 13:56 UTC (permalink / raw)
To: Christophe Roullier
Cc: David S. Miller, Eric Dumazet, Jakub Kicinski, Paolo Abeni,
Rob Herring, Krzysztof Kozlowski, Conor Dooley, Maxime Coquelin,
Alexandre Torgue, Richard Cochran, Jose Abreu, Liam Girdwood,
Mark Brown, Marek Vasut, netdev, devicetree, linux-stm32,
linux-arm-kernel, linux-kernel
On Mon, Jun 17, 2024 at 05:45:16PM +0200, Christophe Roullier wrote:
> Add Ethernet support for STM32MP25.
> STM32MP25 is STM32 SOC with 2 GMACs instances.
> GMAC IP version is SNPS 5.3x.
> GMAC IP configure with 2 RX and 4 TX queue.
> DMA HW capability register supported
> RX Checksum Offload Engine supported
> TX Checksum insertion supported
> Wake-Up On Lan supported
> TSO supported
>
> Signed-off-by: Christophe Roullier <christophe.roullier@foss.st.com>
The nit below notwithstanding, this looks good to me,
and appears to address review of earlier versions.
Reviewed-by: Simon Horman <horms@kernel.org>
> ---
> .../net/ethernet/stmicro/stmmac/dwmac-stm32.c | 77 ++++++++++++++++++-
> 1 file changed, 74 insertions(+), 3 deletions(-)
>
> diff --git a/drivers/net/ethernet/stmicro/stmmac/dwmac-stm32.c b/drivers/net/ethernet/stmicro/stmmac/dwmac-stm32.c
...
> @@ -365,6 +423,9 @@ static int stm32_dwmac_parse_data(struct stm32_dwmac *dwmac,
> return err;
> }
>
> + if (dwmac->ops->is_mp2)
> + return err;
> +
nit: As far as I understand things, the intention here is to return early,
rather than to return an error. And err will always be 0.
So it might be clearer to simply:
return 0;
> dwmac->mode_mask = SYSCFG_MP1_ETH_MASK;
> err = of_property_read_u32_index(np, "st,syscon", 2, &dwmac->mode_mask);
> if (err) {
...
^ permalink raw reply [flat|nested] 5+ messages in thread
end of thread, other threads:[~2024-06-19 13:57 UTC | newest]
Thread overview: 5+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2024-06-17 15:45 [net-next,PATCH v2 0/2] Series to deliver Ethernet for STM32MP25 Christophe Roullier
2024-06-17 15:45 ` [net-next,PATCH v2 1/2] dt-bindings: net: add STM32MP25 compatible in documentation for stm32 Christophe Roullier
2024-06-17 16:19 ` Conor Dooley
2024-06-17 15:45 ` [net-next,PATCH v2 2/2] net: stmmac: dwmac-stm32: stm32: add management of stm32mp25 " Christophe Roullier
2024-06-19 13:56 ` Simon Horman
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).