* [PATCH net-next v8 01/15] net: stmmac: Fix CSR divider comment
2024-12-05 16:42 [PATCH net-next v8 00/15] Add support for Synopsis DWMAC IP on NXP Automotive SoCs S32G2xx/S32G3xx/S32R45 Jan Petrous via B4 Relay
@ 2024-12-05 16:42 ` Jan Petrous via B4 Relay
2024-12-05 16:51 ` Russell King (Oracle)
2024-12-05 16:42 ` [PATCH net-next v8 02/15] net: stmmac: Extend CSR calc support Jan Petrous via B4 Relay
` (14 subsequent siblings)
15 siblings, 1 reply; 23+ messages in thread
From: Jan Petrous via B4 Relay @ 2024-12-05 16:42 UTC (permalink / raw)
To: Maxime Coquelin, Alexandre Torgue, Jose Abreu, David S. Miller,
Eric Dumazet, Jakub Kicinski, Paolo Abeni, Vinod Koul,
Richard Cochran, Andrew Lunn, Heiner Kallweit, Russell King,
Shawn Guo, Sascha Hauer, Pengutronix Kernel Team, Fabio Estevam,
Emil Renner Berthing, Minda Chen, Nicolas Ferre, Claudiu Beznea,
Iyappan Subramanian, Keyur Chudgar, Quan Nguyen, Rob Herring,
Krzysztof Kozlowski, Conor Dooley, Giuseppe Cavallaro,
Andrew Lunn
Cc: linux-stm32, linux-arm-kernel, linux-kernel, netdev,
linux-arm-msm, imx, devicetree, NXP S32 Linux Team, 0x1207,
fancer.lancer, Jan Petrous (OSS), Jacob Keller
From: "Jan Petrous (OSS)" <jan.petrous@oss.nxp.com>
The comment in declaration of STMMAC_CSR_250_300M
incorrectly describes the constant as '/* MDC = clk_scr_i/122 */'
but the DWC Ether QOS Handbook version 5.20a says it is
CSR clock/124.
Signed-off-by: Jan Petrous (OSS) <jan.petrous@oss.nxp.com>
Reviewed-by: Jacob Keller <jacob.e.keller@intel.com>
---
include/linux/stmmac.h | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/include/linux/stmmac.h b/include/linux/stmmac.h
index d79ff252cfdc..75cbfb576358 100644
--- a/include/linux/stmmac.h
+++ b/include/linux/stmmac.h
@@ -33,7 +33,7 @@
#define STMMAC_CSR_20_35M 0x2 /* MDC = clk_scr_i/16 */
#define STMMAC_CSR_35_60M 0x3 /* MDC = clk_scr_i/26 */
#define STMMAC_CSR_150_250M 0x4 /* MDC = clk_scr_i/102 */
-#define STMMAC_CSR_250_300M 0x5 /* MDC = clk_scr_i/122 */
+#define STMMAC_CSR_250_300M 0x5 /* MDC = clk_scr_i/124 */
/* MTL algorithms identifiers */
#define MTL_TX_ALGORITHM_WRR 0x0
--
2.47.0
^ permalink raw reply related [flat|nested] 23+ messages in thread* Re: [PATCH net-next v8 01/15] net: stmmac: Fix CSR divider comment
2024-12-05 16:42 ` [PATCH net-next v8 01/15] net: stmmac: Fix CSR divider comment Jan Petrous via B4 Relay
@ 2024-12-05 16:51 ` Russell King (Oracle)
2024-12-05 16:55 ` Jan Petrous
0 siblings, 1 reply; 23+ messages in thread
From: Russell King (Oracle) @ 2024-12-05 16:51 UTC (permalink / raw)
To: jan.petrous
Cc: Maxime Coquelin, Alexandre Torgue, Jose Abreu, David S. Miller,
Eric Dumazet, Jakub Kicinski, Paolo Abeni, Vinod Koul,
Richard Cochran, Andrew Lunn, Heiner Kallweit, Shawn Guo,
Sascha Hauer, Pengutronix Kernel Team, Fabio Estevam,
Emil Renner Berthing, Minda Chen, Nicolas Ferre, Claudiu Beznea,
Iyappan Subramanian, Keyur Chudgar, Quan Nguyen, Rob Herring,
Krzysztof Kozlowski, Conor Dooley, Giuseppe Cavallaro,
Andrew Lunn, linux-stm32, linux-arm-kernel, linux-kernel, netdev,
linux-arm-msm, imx, devicetree, NXP S32 Linux Team, 0x1207,
fancer.lancer, Jacob Keller
On Thu, Dec 05, 2024 at 05:42:58PM +0100, Jan Petrous via B4 Relay wrote:
> From: "Jan Petrous (OSS)" <jan.petrous@oss.nxp.com>
>
> The comment in declaration of STMMAC_CSR_250_300M
> incorrectly describes the constant as '/* MDC = clk_scr_i/122 */'
> but the DWC Ether QOS Handbook version 5.20a says it is
> CSR clock/124.
>
> Signed-off-by: Jan Petrous (OSS) <jan.petrous@oss.nxp.com>
> Reviewed-by: Jacob Keller <jacob.e.keller@intel.com>
I gave my reviewed-by for this patch in the previous posting, but you
haven't included it.
Reviewed-by: Russell King (Oracle) <rmk+kernel@armlinux.org.uk>
--
RMK's Patch system: https://www.armlinux.org.uk/developer/patches/
FTTP is here! 80Mbps down 10Mbps up. Decent connectivity at last!
^ permalink raw reply [flat|nested] 23+ messages in thread
* Re: [PATCH net-next v8 01/15] net: stmmac: Fix CSR divider comment
2024-12-05 16:51 ` Russell King (Oracle)
@ 2024-12-05 16:55 ` Jan Petrous
2024-12-05 17:01 ` Russell King (Oracle)
2024-12-05 23:45 ` Andrew Lunn
0 siblings, 2 replies; 23+ messages in thread
From: Jan Petrous @ 2024-12-05 16:55 UTC (permalink / raw)
To: Russell King (Oracle)
Cc: Maxime Coquelin, Alexandre Torgue, Jose Abreu, David S. Miller,
Eric Dumazet, Jakub Kicinski, Paolo Abeni, Vinod Koul,
Richard Cochran, Andrew Lunn, Heiner Kallweit, Shawn Guo,
Sascha Hauer, Pengutronix Kernel Team, Fabio Estevam,
Emil Renner Berthing, Minda Chen, Nicolas Ferre, Claudiu Beznea,
Iyappan Subramanian, Keyur Chudgar, Quan Nguyen, Rob Herring,
Krzysztof Kozlowski, Conor Dooley, Giuseppe Cavallaro,
Andrew Lunn, linux-stm32, linux-arm-kernel, linux-kernel, netdev,
linux-arm-msm, imx, devicetree, NXP S32 Linux Team, 0x1207,
fancer.lancer, Jacob Keller
On Thu, Dec 05, 2024 at 04:51:19PM +0000, Russell King (Oracle) wrote:
> On Thu, Dec 05, 2024 at 05:42:58PM +0100, Jan Petrous via B4 Relay wrote:
> > From: "Jan Petrous (OSS)" <jan.petrous@oss.nxp.com>
> >
> > The comment in declaration of STMMAC_CSR_250_300M
> > incorrectly describes the constant as '/* MDC = clk_scr_i/122 */'
> > but the DWC Ether QOS Handbook version 5.20a says it is
> > CSR clock/124.
> >
> > Signed-off-by: Jan Petrous (OSS) <jan.petrous@oss.nxp.com>
> > Reviewed-by: Jacob Keller <jacob.e.keller@intel.com>
>
> I gave my reviewed-by for this patch in the previous posting, but you
> haven't included it.
>
> Reviewed-by: Russell King (Oracle) <rmk+kernel@armlinux.org.uk>
Hi Russell,
sorry for that, I missed it. Should I resend the v8 series?
BR.
/Jan
^ permalink raw reply [flat|nested] 23+ messages in thread
* Re: [PATCH net-next v8 01/15] net: stmmac: Fix CSR divider comment
2024-12-05 16:55 ` Jan Petrous
@ 2024-12-05 17:01 ` Russell King (Oracle)
2024-12-05 23:45 ` Andrew Lunn
1 sibling, 0 replies; 23+ messages in thread
From: Russell King (Oracle) @ 2024-12-05 17:01 UTC (permalink / raw)
To: Jan Petrous
Cc: Maxime Coquelin, Alexandre Torgue, Jose Abreu, David S. Miller,
Eric Dumazet, Jakub Kicinski, Paolo Abeni, Vinod Koul,
Richard Cochran, Andrew Lunn, Heiner Kallweit, Shawn Guo,
Sascha Hauer, Pengutronix Kernel Team, Fabio Estevam,
Emil Renner Berthing, Minda Chen, Nicolas Ferre, Claudiu Beznea,
Iyappan Subramanian, Keyur Chudgar, Quan Nguyen, Rob Herring,
Krzysztof Kozlowski, Conor Dooley, Giuseppe Cavallaro,
Andrew Lunn, linux-stm32, linux-arm-kernel, linux-kernel, netdev,
linux-arm-msm, imx, devicetree, NXP S32 Linux Team, 0x1207,
fancer.lancer, Jacob Keller
On Thu, Dec 05, 2024 at 05:55:22PM +0100, Jan Petrous wrote:
> On Thu, Dec 05, 2024 at 04:51:19PM +0000, Russell King (Oracle) wrote:
> > On Thu, Dec 05, 2024 at 05:42:58PM +0100, Jan Petrous via B4 Relay wrote:
> > > From: "Jan Petrous (OSS)" <jan.petrous@oss.nxp.com>
> > >
> > > The comment in declaration of STMMAC_CSR_250_300M
> > > incorrectly describes the constant as '/* MDC = clk_scr_i/122 */'
> > > but the DWC Ether QOS Handbook version 5.20a says it is
> > > CSR clock/124.
> > >
> > > Signed-off-by: Jan Petrous (OSS) <jan.petrous@oss.nxp.com>
> > > Reviewed-by: Jacob Keller <jacob.e.keller@intel.com>
> >
> > I gave my reviewed-by for this patch in the previous posting, but you
> > haven't included it.
> >
> > Reviewed-by: Russell King (Oracle) <rmk+kernel@armlinux.org.uk>
>
> Hi Russell,
> sorry for that, I missed it. Should I resend the v8 series?
Patchwork will add it if this series is merged, so there's no immediate
need to resend. However, please update your series with it in case there
is another reason to send another version.
Thanks.
--
RMK's Patch system: https://www.armlinux.org.uk/developer/patches/
FTTP is here! 80Mbps down 10Mbps up. Decent connectivity at last!
^ permalink raw reply [flat|nested] 23+ messages in thread
* Re: [PATCH net-next v8 01/15] net: stmmac: Fix CSR divider comment
2024-12-05 16:55 ` Jan Petrous
2024-12-05 17:01 ` Russell King (Oracle)
@ 2024-12-05 23:45 ` Andrew Lunn
1 sibling, 0 replies; 23+ messages in thread
From: Andrew Lunn @ 2024-12-05 23:45 UTC (permalink / raw)
To: Jan Petrous
Cc: Russell King (Oracle), Maxime Coquelin, Alexandre Torgue,
Jose Abreu, David S. Miller, Eric Dumazet, Jakub Kicinski,
Paolo Abeni, Vinod Koul, Richard Cochran, Heiner Kallweit,
Shawn Guo, Sascha Hauer, Pengutronix Kernel Team, Fabio Estevam,
Emil Renner Berthing, Minda Chen, Nicolas Ferre, Claudiu Beznea,
Iyappan Subramanian, Keyur Chudgar, Quan Nguyen, Rob Herring,
Krzysztof Kozlowski, Conor Dooley, Giuseppe Cavallaro,
Andrew Lunn, linux-stm32, linux-arm-kernel, linux-kernel, netdev,
linux-arm-msm, imx, devicetree, NXP S32 Linux Team, 0x1207,
fancer.lancer, Jacob Keller
On Thu, Dec 05, 2024 at 05:55:22PM +0100, Jan Petrous wrote:
> On Thu, Dec 05, 2024 at 04:51:19PM +0000, Russell King (Oracle) wrote:
> > On Thu, Dec 05, 2024 at 05:42:58PM +0100, Jan Petrous via B4 Relay wrote:
> > > From: "Jan Petrous (OSS)" <jan.petrous@oss.nxp.com>
> > >
> > > The comment in declaration of STMMAC_CSR_250_300M
> > > incorrectly describes the constant as '/* MDC = clk_scr_i/122 */'
> > > but the DWC Ether QOS Handbook version 5.20a says it is
> > > CSR clock/124.
> > >
> > > Signed-off-by: Jan Petrous (OSS) <jan.petrous@oss.nxp.com>
> > > Reviewed-by: Jacob Keller <jacob.e.keller@intel.com>
> >
> > I gave my reviewed-by for this patch in the previous posting, but you
> > haven't included it.
> >
> > Reviewed-by: Russell King (Oracle) <rmk+kernel@armlinux.org.uk>
>
> Hi Russell,
> sorry for that, I missed it. Should I resend the v8 series?
b4 is pretty good at handling this, it will find such tags and add
them to your patchset if you are using b4 to manage it.
Andrew
^ permalink raw reply [flat|nested] 23+ messages in thread
* [PATCH net-next v8 02/15] net: stmmac: Extend CSR calc support
2024-12-05 16:42 [PATCH net-next v8 00/15] Add support for Synopsis DWMAC IP on NXP Automotive SoCs S32G2xx/S32G3xx/S32R45 Jan Petrous via B4 Relay
2024-12-05 16:42 ` [PATCH net-next v8 01/15] net: stmmac: Fix CSR divider comment Jan Petrous via B4 Relay
@ 2024-12-05 16:42 ` Jan Petrous via B4 Relay
2024-12-05 16:43 ` [PATCH net-next v8 03/15] net: stmmac: Fix clock rate variables size Jan Petrous via B4 Relay
` (13 subsequent siblings)
15 siblings, 0 replies; 23+ messages in thread
From: Jan Petrous via B4 Relay @ 2024-12-05 16:42 UTC (permalink / raw)
To: Maxime Coquelin, Alexandre Torgue, Jose Abreu, David S. Miller,
Eric Dumazet, Jakub Kicinski, Paolo Abeni, Vinod Koul,
Richard Cochran, Andrew Lunn, Heiner Kallweit, Russell King,
Shawn Guo, Sascha Hauer, Pengutronix Kernel Team, Fabio Estevam,
Emil Renner Berthing, Minda Chen, Nicolas Ferre, Claudiu Beznea,
Iyappan Subramanian, Keyur Chudgar, Quan Nguyen, Rob Herring,
Krzysztof Kozlowski, Conor Dooley, Giuseppe Cavallaro,
Andrew Lunn
Cc: linux-stm32, linux-arm-kernel, linux-kernel, netdev,
linux-arm-msm, imx, devicetree, NXP S32 Linux Team, 0x1207,
fancer.lancer, Jan Petrous (OSS), Jacob Keller,
Russell King (Oracle)
From: "Jan Petrous (OSS)" <jan.petrous@oss.nxp.com>
Add support for CSR clock range up to 800 MHz.
Reviewed-by: Jacob Keller <jacob.e.keller@intel.com>
Reviewed-by: Russell King (Oracle) <rmk+kernel@armlinux.org.uk>
Signed-off-by: Jan Petrous (OSS) <jan.petrous@oss.nxp.com>
---
drivers/net/ethernet/stmicro/stmmac/common.h | 2 ++
drivers/net/ethernet/stmicro/stmmac/stmmac_main.c | 4 ++++
include/linux/stmmac.h | 2 ++
3 files changed, 8 insertions(+)
diff --git a/drivers/net/ethernet/stmicro/stmmac/common.h b/drivers/net/ethernet/stmicro/stmmac/common.h
index 1367fa5c9b8e..70d601f45481 100644
--- a/drivers/net/ethernet/stmicro/stmmac/common.h
+++ b/drivers/net/ethernet/stmicro/stmmac/common.h
@@ -257,6 +257,8 @@ struct stmmac_safety_stats {
#define CSR_F_150M 150000000
#define CSR_F_250M 250000000
#define CSR_F_300M 300000000
+#define CSR_F_500M 500000000
+#define CSR_F_800M 800000000
#define MAC_CSR_H_FRQ_MASK 0x20
diff --git a/drivers/net/ethernet/stmicro/stmmac/stmmac_main.c b/drivers/net/ethernet/stmicro/stmmac/stmmac_main.c
index 9b262cdad60b..3cb7ad6ccc4e 100644
--- a/drivers/net/ethernet/stmicro/stmmac/stmmac_main.c
+++ b/drivers/net/ethernet/stmicro/stmmac/stmmac_main.c
@@ -325,6 +325,10 @@ static void stmmac_clk_csr_set(struct stmmac_priv *priv)
priv->clk_csr = STMMAC_CSR_150_250M;
else if ((clk_rate >= CSR_F_250M) && (clk_rate <= CSR_F_300M))
priv->clk_csr = STMMAC_CSR_250_300M;
+ else if ((clk_rate >= CSR_F_300M) && (clk_rate < CSR_F_500M))
+ priv->clk_csr = STMMAC_CSR_300_500M;
+ else if ((clk_rate >= CSR_F_500M) && (clk_rate < CSR_F_800M))
+ priv->clk_csr = STMMAC_CSR_500_800M;
}
if (priv->plat->flags & STMMAC_FLAG_HAS_SUN8I) {
diff --git a/include/linux/stmmac.h b/include/linux/stmmac.h
index 75cbfb576358..865d0fe26f98 100644
--- a/include/linux/stmmac.h
+++ b/include/linux/stmmac.h
@@ -34,6 +34,8 @@
#define STMMAC_CSR_35_60M 0x3 /* MDC = clk_scr_i/26 */
#define STMMAC_CSR_150_250M 0x4 /* MDC = clk_scr_i/102 */
#define STMMAC_CSR_250_300M 0x5 /* MDC = clk_scr_i/124 */
+#define STMMAC_CSR_300_500M 0x6 /* MDC = clk_scr_i/204 */
+#define STMMAC_CSR_500_800M 0x7 /* MDC = clk_scr_i/324 */
/* MTL algorithms identifiers */
#define MTL_TX_ALGORITHM_WRR 0x0
--
2.47.0
^ permalink raw reply related [flat|nested] 23+ messages in thread* [PATCH net-next v8 03/15] net: stmmac: Fix clock rate variables size
2024-12-05 16:42 [PATCH net-next v8 00/15] Add support for Synopsis DWMAC IP on NXP Automotive SoCs S32G2xx/S32G3xx/S32R45 Jan Petrous via B4 Relay
2024-12-05 16:42 ` [PATCH net-next v8 01/15] net: stmmac: Fix CSR divider comment Jan Petrous via B4 Relay
2024-12-05 16:42 ` [PATCH net-next v8 02/15] net: stmmac: Extend CSR calc support Jan Petrous via B4 Relay
@ 2024-12-05 16:43 ` Jan Petrous via B4 Relay
2024-12-05 16:43 ` [PATCH net-next v8 04/15] net: phy: Add helper for mapping RGMII link speed to clock rate Jan Petrous via B4 Relay
` (12 subsequent siblings)
15 siblings, 0 replies; 23+ messages in thread
From: Jan Petrous via B4 Relay @ 2024-12-05 16:43 UTC (permalink / raw)
To: Maxime Coquelin, Alexandre Torgue, Jose Abreu, David S. Miller,
Eric Dumazet, Jakub Kicinski, Paolo Abeni, Vinod Koul,
Richard Cochran, Andrew Lunn, Heiner Kallweit, Russell King,
Shawn Guo, Sascha Hauer, Pengutronix Kernel Team, Fabio Estevam,
Emil Renner Berthing, Minda Chen, Nicolas Ferre, Claudiu Beznea,
Iyappan Subramanian, Keyur Chudgar, Quan Nguyen, Rob Herring,
Krzysztof Kozlowski, Conor Dooley, Giuseppe Cavallaro,
Andrew Lunn
Cc: linux-stm32, linux-arm-kernel, linux-kernel, netdev,
linux-arm-msm, imx, devicetree, NXP S32 Linux Team, 0x1207,
fancer.lancer, Jan Petrous (OSS), Russell King (Oracle)
From: "Jan Petrous (OSS)" <jan.petrous@oss.nxp.com>
The clock API clk_get_rate() returns unsigned long value.
Expand affected members of stmmac platform data and
convert the stmmac_clk_csr_set() and dwmac4_core_init() methods
to defining the unsigned long clk_rate local variables.
Reviewed-by: Andrew Lunn <andrew@lunn.ch>
Reviewed-by: Serge Semin <fancer.lancer@gmail.com>
Reviewed-by: Russell King (Oracle) <rmk+kernel@armlinux.org.uk>
Signed-off-by: Jan Petrous (OSS) <jan.petrous@oss.nxp.com>
---
drivers/net/ethernet/stmicro/stmmac/dwmac-qcom-ethqos.c | 2 +-
drivers/net/ethernet/stmicro/stmmac/dwmac4_core.c | 2 +-
drivers/net/ethernet/stmicro/stmmac/stmmac_main.c | 2 +-
drivers/net/ethernet/stmicro/stmmac/stmmac_platform.c | 2 +-
include/linux/stmmac.h | 6 +++---
5 files changed, 7 insertions(+), 7 deletions(-)
diff --git a/drivers/net/ethernet/stmicro/stmmac/dwmac-qcom-ethqos.c b/drivers/net/ethernet/stmicro/stmmac/dwmac-qcom-ethqos.c
index 901a3c1959fa..2a5b38723635 100644
--- a/drivers/net/ethernet/stmicro/stmmac/dwmac-qcom-ethqos.c
+++ b/drivers/net/ethernet/stmicro/stmmac/dwmac-qcom-ethqos.c
@@ -777,7 +777,7 @@ static void ethqos_ptp_clk_freq_config(struct stmmac_priv *priv)
netdev_err(priv->dev, "Failed to max out clk_ptp_ref: %d\n", err);
plat_dat->clk_ptp_rate = clk_get_rate(plat_dat->clk_ptp_ref);
- netdev_dbg(priv->dev, "PTP rate %d\n", plat_dat->clk_ptp_rate);
+ netdev_dbg(priv->dev, "PTP rate %lu\n", plat_dat->clk_ptp_rate);
}
static int qcom_ethqos_probe(struct platform_device *pdev)
diff --git a/drivers/net/ethernet/stmicro/stmmac/dwmac4_core.c b/drivers/net/ethernet/stmicro/stmmac/dwmac4_core.c
index c25781874aa7..c36f90a782c5 100644
--- a/drivers/net/ethernet/stmicro/stmmac/dwmac4_core.c
+++ b/drivers/net/ethernet/stmicro/stmmac/dwmac4_core.c
@@ -27,7 +27,7 @@ static void dwmac4_core_init(struct mac_device_info *hw,
struct stmmac_priv *priv = netdev_priv(dev);
void __iomem *ioaddr = hw->pcsr;
u32 value = readl(ioaddr + GMAC_CONFIG);
- u32 clk_rate;
+ unsigned long clk_rate;
value |= GMAC_CORE_INIT;
diff --git a/drivers/net/ethernet/stmicro/stmmac/stmmac_main.c b/drivers/net/ethernet/stmicro/stmmac/stmmac_main.c
index 3cb7ad6ccc4e..d45fd7a3acd5 100644
--- a/drivers/net/ethernet/stmicro/stmmac/stmmac_main.c
+++ b/drivers/net/ethernet/stmicro/stmmac/stmmac_main.c
@@ -301,7 +301,7 @@ static void stmmac_global_err(struct stmmac_priv *priv)
*/
static void stmmac_clk_csr_set(struct stmmac_priv *priv)
{
- u32 clk_rate;
+ unsigned long clk_rate;
clk_rate = clk_get_rate(priv->plat->stmmac_clk);
diff --git a/drivers/net/ethernet/stmicro/stmmac/stmmac_platform.c b/drivers/net/ethernet/stmicro/stmmac/stmmac_platform.c
index 3ac32444e492..06e07e6e180b 100644
--- a/drivers/net/ethernet/stmicro/stmmac/stmmac_platform.c
+++ b/drivers/net/ethernet/stmicro/stmmac/stmmac_platform.c
@@ -640,7 +640,7 @@ stmmac_probe_config_dt(struct platform_device *pdev, u8 *mac)
dev_info(&pdev->dev, "PTP uses main clock\n");
} else {
plat->clk_ptp_rate = clk_get_rate(plat->clk_ptp_ref);
- dev_dbg(&pdev->dev, "PTP rate %d\n", plat->clk_ptp_rate);
+ dev_dbg(&pdev->dev, "PTP rate %lu\n", plat->clk_ptp_rate);
}
plat->stmmac_rst = devm_reset_control_get_optional(&pdev->dev,
diff --git a/include/linux/stmmac.h b/include/linux/stmmac.h
index 865d0fe26f98..c9878a612e53 100644
--- a/include/linux/stmmac.h
+++ b/include/linux/stmmac.h
@@ -252,8 +252,8 @@ struct plat_stmmacenet_data {
struct clk *stmmac_clk;
struct clk *pclk;
struct clk *clk_ptp_ref;
- unsigned int clk_ptp_rate;
- unsigned int clk_ref_rate;
+ unsigned long clk_ptp_rate;
+ unsigned long clk_ref_rate;
unsigned int mult_fact_100ns;
s32 ptp_max_adj;
u32 cdc_error_adj;
@@ -265,7 +265,7 @@ struct plat_stmmacenet_data {
int mac_port_sel_speed;
int has_xgmac;
u8 vlan_fail_q;
- unsigned int eee_usecs_rate;
+ unsigned long eee_usecs_rate;
struct pci_dev *pdev;
int int_snapshot_num;
int msi_mac_vec;
--
2.47.0
^ permalink raw reply related [flat|nested] 23+ messages in thread* [PATCH net-next v8 04/15] net: phy: Add helper for mapping RGMII link speed to clock rate
2024-12-05 16:42 [PATCH net-next v8 00/15] Add support for Synopsis DWMAC IP on NXP Automotive SoCs S32G2xx/S32G3xx/S32R45 Jan Petrous via B4 Relay
` (2 preceding siblings ...)
2024-12-05 16:43 ` [PATCH net-next v8 03/15] net: stmmac: Fix clock rate variables size Jan Petrous via B4 Relay
@ 2024-12-05 16:43 ` Jan Petrous via B4 Relay
2024-12-05 16:43 ` [PATCH net-next v8 05/15] net: dwmac-dwc-qos-eth: Use helper rgmii_clock Jan Petrous via B4 Relay
` (11 subsequent siblings)
15 siblings, 0 replies; 23+ messages in thread
From: Jan Petrous via B4 Relay @ 2024-12-05 16:43 UTC (permalink / raw)
To: Maxime Coquelin, Alexandre Torgue, Jose Abreu, David S. Miller,
Eric Dumazet, Jakub Kicinski, Paolo Abeni, Vinod Koul,
Richard Cochran, Andrew Lunn, Heiner Kallweit, Russell King,
Shawn Guo, Sascha Hauer, Pengutronix Kernel Team, Fabio Estevam,
Emil Renner Berthing, Minda Chen, Nicolas Ferre, Claudiu Beznea,
Iyappan Subramanian, Keyur Chudgar, Quan Nguyen, Rob Herring,
Krzysztof Kozlowski, Conor Dooley, Giuseppe Cavallaro,
Andrew Lunn
Cc: linux-stm32, linux-arm-kernel, linux-kernel, netdev,
linux-arm-msm, imx, devicetree, NXP S32 Linux Team, 0x1207,
fancer.lancer, Jan Petrous (OSS), Russell King (Oracle)
From: "Jan Petrous (OSS)" <jan.petrous@oss.nxp.com>
The RGMII interface supports three data rates: 10/100 Mbps
and 1 Gbps. These speeds correspond to clock frequencies
of 2.5/25 MHz and 125 MHz, respectively.
Many Ethernet drivers, including glues in stmmac, follow
a similar pattern of converting RGMII speed to clock frequency.
To simplify code, define the helper rgmii_clock(speed)
to convert connection speed to clock frequency.
Suggested-by: Russell King (Oracle) <rmk+kernel@armlinux.org.uk>
Reviewed-by: Andrew Lunn <andrew@lunn.ch>
Reviewed-by: Russell King (Oracle) <rmk+kernel@armlinux.org.uk>
Signed-off-by: Jan Petrous (OSS) <jan.petrous@oss.nxp.com>
---
include/linux/phy.h | 23 +++++++++++++++++++++++
1 file changed, 23 insertions(+)
diff --git a/include/linux/phy.h b/include/linux/phy.h
index 563c46205685..a746f056ed57 100644
--- a/include/linux/phy.h
+++ b/include/linux/phy.h
@@ -298,6 +298,29 @@ static inline const char *phy_modes(phy_interface_t interface)
}
}
+/**
+ * rgmii_clock - map link speed to the clock rate
+ * @speed: link speed value
+ *
+ * Description: maps RGMII supported link speeds
+ * into the clock rates.
+ *
+ * Returns: clock rate or negative errno
+ */
+static inline long rgmii_clock(int speed)
+{
+ switch (speed) {
+ case SPEED_10:
+ return 2500000;
+ case SPEED_100:
+ return 25000000;
+ case SPEED_1000:
+ return 125000000;
+ default:
+ return -EINVAL;
+ }
+}
+
#define PHY_INIT_TIMEOUT 100000
#define PHY_FORCE_TIMEOUT 10
--
2.47.0
^ permalink raw reply related [flat|nested] 23+ messages in thread* [PATCH net-next v8 05/15] net: dwmac-dwc-qos-eth: Use helper rgmii_clock
2024-12-05 16:42 [PATCH net-next v8 00/15] Add support for Synopsis DWMAC IP on NXP Automotive SoCs S32G2xx/S32G3xx/S32R45 Jan Petrous via B4 Relay
` (3 preceding siblings ...)
2024-12-05 16:43 ` [PATCH net-next v8 04/15] net: phy: Add helper for mapping RGMII link speed to clock rate Jan Petrous via B4 Relay
@ 2024-12-05 16:43 ` Jan Petrous via B4 Relay
2024-12-05 16:43 ` [PATCH net-next v8 06/15] net: dwmac-imx: " Jan Petrous via B4 Relay
` (10 subsequent siblings)
15 siblings, 0 replies; 23+ messages in thread
From: Jan Petrous via B4 Relay @ 2024-12-05 16:43 UTC (permalink / raw)
To: Maxime Coquelin, Alexandre Torgue, Jose Abreu, David S. Miller,
Eric Dumazet, Jakub Kicinski, Paolo Abeni, Vinod Koul,
Richard Cochran, Andrew Lunn, Heiner Kallweit, Russell King,
Shawn Guo, Sascha Hauer, Pengutronix Kernel Team, Fabio Estevam,
Emil Renner Berthing, Minda Chen, Nicolas Ferre, Claudiu Beznea,
Iyappan Subramanian, Keyur Chudgar, Quan Nguyen, Rob Herring,
Krzysztof Kozlowski, Conor Dooley, Giuseppe Cavallaro,
Andrew Lunn
Cc: linux-stm32, linux-arm-kernel, linux-kernel, netdev,
linux-arm-msm, imx, devicetree, NXP S32 Linux Team, 0x1207,
fancer.lancer, Jan Petrous (OSS), Russell King (Oracle)
From: "Jan Petrous (OSS)" <jan.petrous@oss.nxp.com>
Utilize a new helper function rgmii_clock().
Reviewed-by: Andrew Lunn <andrew@lunn.ch>
Reviewed-by: Russell King (Oracle) <rmk+kernel@armlinux.org.uk>
Signed-off-by: Jan Petrous (OSS) <jan.petrous@oss.nxp.com>
---
drivers/net/ethernet/stmicro/stmmac/dwmac-dwc-qos-eth.c | 11 +++--------
1 file changed, 3 insertions(+), 8 deletions(-)
diff --git a/drivers/net/ethernet/stmicro/stmmac/dwmac-dwc-qos-eth.c b/drivers/net/ethernet/stmicro/stmmac/dwmac-dwc-qos-eth.c
index 83290e707df5..bd4eb187f8c6 100644
--- a/drivers/net/ethernet/stmicro/stmmac/dwmac-dwc-qos-eth.c
+++ b/drivers/net/ethernet/stmicro/stmmac/dwmac-dwc-qos-eth.c
@@ -181,24 +181,19 @@ static void dwc_qos_remove(struct platform_device *pdev)
static void tegra_eqos_fix_speed(void *priv, unsigned int speed, unsigned int mode)
{
struct tegra_eqos *eqos = priv;
- unsigned long rate = 125000000;
bool needs_calibration = false;
+ long rate = 125000000;
u32 value;
int err;
switch (speed) {
case SPEED_1000:
- needs_calibration = true;
- rate = 125000000;
- break;
-
case SPEED_100:
needs_calibration = true;
- rate = 25000000;
- break;
+ fallthrough;
case SPEED_10:
- rate = 2500000;
+ rate = rgmii_clock(speed);
break;
default:
--
2.47.0
^ permalink raw reply related [flat|nested] 23+ messages in thread* [PATCH net-next v8 06/15] net: dwmac-imx: Use helper rgmii_clock
2024-12-05 16:42 [PATCH net-next v8 00/15] Add support for Synopsis DWMAC IP on NXP Automotive SoCs S32G2xx/S32G3xx/S32R45 Jan Petrous via B4 Relay
` (4 preceding siblings ...)
2024-12-05 16:43 ` [PATCH net-next v8 05/15] net: dwmac-dwc-qos-eth: Use helper rgmii_clock Jan Petrous via B4 Relay
@ 2024-12-05 16:43 ` Jan Petrous via B4 Relay
2024-12-05 16:43 ` [PATCH net-next v8 07/15] net: dwmac-intel-plat: " Jan Petrous via B4 Relay
` (9 subsequent siblings)
15 siblings, 0 replies; 23+ messages in thread
From: Jan Petrous via B4 Relay @ 2024-12-05 16:43 UTC (permalink / raw)
To: Maxime Coquelin, Alexandre Torgue, Jose Abreu, David S. Miller,
Eric Dumazet, Jakub Kicinski, Paolo Abeni, Vinod Koul,
Richard Cochran, Andrew Lunn, Heiner Kallweit, Russell King,
Shawn Guo, Sascha Hauer, Pengutronix Kernel Team, Fabio Estevam,
Emil Renner Berthing, Minda Chen, Nicolas Ferre, Claudiu Beznea,
Iyappan Subramanian, Keyur Chudgar, Quan Nguyen, Rob Herring,
Krzysztof Kozlowski, Conor Dooley, Giuseppe Cavallaro,
Andrew Lunn
Cc: linux-stm32, linux-arm-kernel, linux-kernel, netdev,
linux-arm-msm, imx, devicetree, NXP S32 Linux Team, 0x1207,
fancer.lancer, Jan Petrous (OSS), Russell King (Oracle)
From: "Jan Petrous (OSS)" <jan.petrous@oss.nxp.com>
Utilize a new helper function rgmii_clock().
Reviewed-by: Andrew Lunn <andrew@lunn.ch>
Reviewed-by: Russell King (Oracle) <rmk+kernel@armlinux.org.uk>
Signed-off-by: Jan Petrous (OSS) <jan.petrous@oss.nxp.com>
---
drivers/net/ethernet/stmicro/stmmac/dwmac-imx.c | 15 +++------------
1 file changed, 3 insertions(+), 12 deletions(-)
diff --git a/drivers/net/ethernet/stmicro/stmmac/dwmac-imx.c b/drivers/net/ethernet/stmicro/stmmac/dwmac-imx.c
index 641f3cd019a3..43e0fbba4f77 100644
--- a/drivers/net/ethernet/stmicro/stmmac/dwmac-imx.c
+++ b/drivers/net/ethernet/stmicro/stmmac/dwmac-imx.c
@@ -186,7 +186,7 @@ static void imx_dwmac_fix_speed(void *priv, unsigned int speed, unsigned int mod
{
struct plat_stmmacenet_data *plat_dat;
struct imx_priv_data *dwmac = priv;
- unsigned long rate;
+ long rate;
int err;
plat_dat = dwmac->plat_dat;
@@ -196,17 +196,8 @@ static void imx_dwmac_fix_speed(void *priv, unsigned int speed, unsigned int mod
(plat_dat->mac_interface == PHY_INTERFACE_MODE_MII))
return;
- switch (speed) {
- case SPEED_1000:
- rate = 125000000;
- break;
- case SPEED_100:
- rate = 25000000;
- break;
- case SPEED_10:
- rate = 2500000;
- break;
- default:
+ rate = rgmii_clock(speed);
+ if (rate < 0) {
dev_err(dwmac->dev, "invalid speed %u\n", speed);
return;
}
--
2.47.0
^ permalink raw reply related [flat|nested] 23+ messages in thread* [PATCH net-next v8 07/15] net: dwmac-intel-plat: Use helper rgmii_clock
2024-12-05 16:42 [PATCH net-next v8 00/15] Add support for Synopsis DWMAC IP on NXP Automotive SoCs S32G2xx/S32G3xx/S32R45 Jan Petrous via B4 Relay
` (5 preceding siblings ...)
2024-12-05 16:43 ` [PATCH net-next v8 06/15] net: dwmac-imx: " Jan Petrous via B4 Relay
@ 2024-12-05 16:43 ` Jan Petrous via B4 Relay
2024-12-05 16:58 ` Russell King (Oracle)
2024-12-05 16:43 ` [PATCH net-next v8 08/15] net: dwmac-rk: " Jan Petrous via B4 Relay
` (8 subsequent siblings)
15 siblings, 1 reply; 23+ messages in thread
From: Jan Petrous via B4 Relay @ 2024-12-05 16:43 UTC (permalink / raw)
To: Maxime Coquelin, Alexandre Torgue, Jose Abreu, David S. Miller,
Eric Dumazet, Jakub Kicinski, Paolo Abeni, Vinod Koul,
Richard Cochran, Andrew Lunn, Heiner Kallweit, Russell King,
Shawn Guo, Sascha Hauer, Pengutronix Kernel Team, Fabio Estevam,
Emil Renner Berthing, Minda Chen, Nicolas Ferre, Claudiu Beznea,
Iyappan Subramanian, Keyur Chudgar, Quan Nguyen, Rob Herring,
Krzysztof Kozlowski, Conor Dooley, Giuseppe Cavallaro,
Andrew Lunn
Cc: linux-stm32, linux-arm-kernel, linux-kernel, netdev,
linux-arm-msm, imx, devicetree, NXP S32 Linux Team, 0x1207,
fancer.lancer, Jan Petrous (OSS)
From: "Jan Petrous (OSS)" <jan.petrous@oss.nxp.com>
Utilize a new helper function rgmii_clock().
When in, remove dead code in kmb_eth_fix_mac_speed().
Reviewed-by: Andrew Lunn <andrew@lunn.ch>
Signed-off-by: Jan Petrous (OSS) <jan.petrous@oss.nxp.com>
---
.../net/ethernet/stmicro/stmmac/dwmac-intel-plat.c | 22 ++++------------------
1 file changed, 4 insertions(+), 18 deletions(-)
diff --git a/drivers/net/ethernet/stmicro/stmmac/dwmac-intel-plat.c b/drivers/net/ethernet/stmicro/stmmac/dwmac-intel-plat.c
index d94f0a150e93..ddee6154d40b 100644
--- a/drivers/net/ethernet/stmicro/stmmac/dwmac-intel-plat.c
+++ b/drivers/net/ethernet/stmicro/stmmac/dwmac-intel-plat.c
@@ -31,27 +31,13 @@ struct intel_dwmac_data {
static void kmb_eth_fix_mac_speed(void *priv, unsigned int speed, unsigned int mode)
{
struct intel_dwmac *dwmac = priv;
- unsigned long rate;
+ long rate;
int ret;
- rate = clk_get_rate(dwmac->tx_clk);
-
- switch (speed) {
- case SPEED_1000:
- rate = 125000000;
- break;
-
- case SPEED_100:
- rate = 25000000;
- break;
-
- case SPEED_10:
- rate = 2500000;
- break;
-
- default:
+ rate = rgmii_clock(speed);
+ if (rate < 0) {
dev_err(dwmac->dev, "Invalid speed\n");
- break;
+ return;
}
ret = clk_set_rate(dwmac->tx_clk, rate);
--
2.47.0
^ permalink raw reply related [flat|nested] 23+ messages in thread* Re: [PATCH net-next v8 07/15] net: dwmac-intel-plat: Use helper rgmii_clock
2024-12-05 16:43 ` [PATCH net-next v8 07/15] net: dwmac-intel-plat: " Jan Petrous via B4 Relay
@ 2024-12-05 16:58 ` Russell King (Oracle)
0 siblings, 0 replies; 23+ messages in thread
From: Russell King (Oracle) @ 2024-12-05 16:58 UTC (permalink / raw)
To: jan.petrous
Cc: Maxime Coquelin, Alexandre Torgue, Jose Abreu, David S. Miller,
Eric Dumazet, Jakub Kicinski, Paolo Abeni, Vinod Koul,
Richard Cochran, Andrew Lunn, Heiner Kallweit, Shawn Guo,
Sascha Hauer, Pengutronix Kernel Team, Fabio Estevam,
Emil Renner Berthing, Minda Chen, Nicolas Ferre, Claudiu Beznea,
Iyappan Subramanian, Keyur Chudgar, Quan Nguyen, Rob Herring,
Krzysztof Kozlowski, Conor Dooley, Giuseppe Cavallaro,
Andrew Lunn, linux-stm32, linux-arm-kernel, linux-kernel, netdev,
linux-arm-msm, imx, devicetree, NXP S32 Linux Team, 0x1207,
fancer.lancer
On Thu, Dec 05, 2024 at 05:43:04PM +0100, Jan Petrous via B4 Relay wrote:
> From: "Jan Petrous (OSS)" <jan.petrous@oss.nxp.com>
>
> Utilize a new helper function rgmii_clock().
>
> When in, remove dead code in kmb_eth_fix_mac_speed().
>
> Reviewed-by: Andrew Lunn <andrew@lunn.ch>
> Signed-off-by: Jan Petrous (OSS) <jan.petrous@oss.nxp.com>
Reviewed-by: Russell King (Oracle) <rmk+kernel@armlinux.org.uk>
Thanks!
--
RMK's Patch system: https://www.armlinux.org.uk/developer/patches/
FTTP is here! 80Mbps down 10Mbps up. Decent connectivity at last!
^ permalink raw reply [flat|nested] 23+ messages in thread
* [PATCH net-next v8 08/15] net: dwmac-rk: Use helper rgmii_clock
2024-12-05 16:42 [PATCH net-next v8 00/15] Add support for Synopsis DWMAC IP on NXP Automotive SoCs S32G2xx/S32G3xx/S32R45 Jan Petrous via B4 Relay
` (6 preceding siblings ...)
2024-12-05 16:43 ` [PATCH net-next v8 07/15] net: dwmac-intel-plat: " Jan Petrous via B4 Relay
@ 2024-12-05 16:43 ` Jan Petrous via B4 Relay
2024-12-05 16:43 ` [PATCH net-next v8 09/15] net: dwmac-starfive: " Jan Petrous via B4 Relay
` (7 subsequent siblings)
15 siblings, 0 replies; 23+ messages in thread
From: Jan Petrous via B4 Relay @ 2024-12-05 16:43 UTC (permalink / raw)
To: Maxime Coquelin, Alexandre Torgue, Jose Abreu, David S. Miller,
Eric Dumazet, Jakub Kicinski, Paolo Abeni, Vinod Koul,
Richard Cochran, Andrew Lunn, Heiner Kallweit, Russell King,
Shawn Guo, Sascha Hauer, Pengutronix Kernel Team, Fabio Estevam,
Emil Renner Berthing, Minda Chen, Nicolas Ferre, Claudiu Beznea,
Iyappan Subramanian, Keyur Chudgar, Quan Nguyen, Rob Herring,
Krzysztof Kozlowski, Conor Dooley, Giuseppe Cavallaro,
Andrew Lunn
Cc: linux-stm32, linux-arm-kernel, linux-kernel, netdev,
linux-arm-msm, imx, devicetree, NXP S32 Linux Team, 0x1207,
fancer.lancer, Jan Petrous (OSS), Russell King (Oracle)
From: "Jan Petrous (OSS)" <jan.petrous@oss.nxp.com>
Utilize a new helper function rgmii_clock().
Reviewed-by: Andrew Lunn <andrew@lunn.ch>
Reviewed-by: Russell King (Oracle) <rmk+kernel@armlinux.org.uk>
Signed-off-by: Jan Petrous (OSS) <jan.petrous@oss.nxp.com>
---
drivers/net/ethernet/stmicro/stmmac/dwmac-rk.c | 30 ++++++--------------------
1 file changed, 6 insertions(+), 24 deletions(-)
diff --git a/drivers/net/ethernet/stmicro/stmmac/dwmac-rk.c b/drivers/net/ethernet/stmicro/stmmac/dwmac-rk.c
index 8cb374668b74..a4dc89e23a68 100644
--- a/drivers/net/ethernet/stmicro/stmmac/dwmac-rk.c
+++ b/drivers/net/ethernet/stmicro/stmmac/dwmac-rk.c
@@ -1079,20 +1079,11 @@ static void rk3568_set_gmac_speed(struct rk_priv_data *bsp_priv, int speed)
{
struct clk *clk_mac_speed = bsp_priv->clks[RK_CLK_MAC_SPEED].clk;
struct device *dev = &bsp_priv->pdev->dev;
- unsigned long rate;
+ long rate;
int ret;
- switch (speed) {
- case 10:
- rate = 2500000;
- break;
- case 100:
- rate = 25000000;
- break;
- case 1000:
- rate = 125000000;
- break;
- default:
+ rate = rgmii_clock(speed);
+ if (rate < 0) {
dev_err(dev, "unknown speed value for GMAC speed=%d", speed);
return;
}
@@ -1540,20 +1531,11 @@ static void rv1126_set_rgmii_speed(struct rk_priv_data *bsp_priv, int speed)
{
struct clk *clk_mac_speed = bsp_priv->clks[RK_CLK_MAC_SPEED].clk;
struct device *dev = &bsp_priv->pdev->dev;
- unsigned long rate;
+ long rate;
int ret;
- switch (speed) {
- case 10:
- rate = 2500000;
- break;
- case 100:
- rate = 25000000;
- break;
- case 1000:
- rate = 125000000;
- break;
- default:
+ rate = rgmii_clock(speed);
+ if (rate < 0) {
dev_err(dev, "unknown speed value for RGMII speed=%d", speed);
return;
}
--
2.47.0
^ permalink raw reply related [flat|nested] 23+ messages in thread* [PATCH net-next v8 09/15] net: dwmac-starfive: Use helper rgmii_clock
2024-12-05 16:42 [PATCH net-next v8 00/15] Add support for Synopsis DWMAC IP on NXP Automotive SoCs S32G2xx/S32G3xx/S32R45 Jan Petrous via B4 Relay
` (7 preceding siblings ...)
2024-12-05 16:43 ` [PATCH net-next v8 08/15] net: dwmac-rk: " Jan Petrous via B4 Relay
@ 2024-12-05 16:43 ` Jan Petrous via B4 Relay
2024-12-05 16:43 ` [PATCH net-next v8 10/15] net: macb: " Jan Petrous via B4 Relay
` (6 subsequent siblings)
15 siblings, 0 replies; 23+ messages in thread
From: Jan Petrous via B4 Relay @ 2024-12-05 16:43 UTC (permalink / raw)
To: Maxime Coquelin, Alexandre Torgue, Jose Abreu, David S. Miller,
Eric Dumazet, Jakub Kicinski, Paolo Abeni, Vinod Koul,
Richard Cochran, Andrew Lunn, Heiner Kallweit, Russell King,
Shawn Guo, Sascha Hauer, Pengutronix Kernel Team, Fabio Estevam,
Emil Renner Berthing, Minda Chen, Nicolas Ferre, Claudiu Beznea,
Iyappan Subramanian, Keyur Chudgar, Quan Nguyen, Rob Herring,
Krzysztof Kozlowski, Conor Dooley, Giuseppe Cavallaro,
Andrew Lunn
Cc: linux-stm32, linux-arm-kernel, linux-kernel, netdev,
linux-arm-msm, imx, devicetree, NXP S32 Linux Team, 0x1207,
fancer.lancer, Jan Petrous (OSS), Russell King (Oracle),
Emil Renner Berthing
From: "Jan Petrous (OSS)" <jan.petrous@oss.nxp.com>
Utilize a new helper function rgmii_clock().
Reviewed-by: Andrew Lunn <andrew@lunn.ch>
Reviewed-by: Russell King (Oracle) <rmk+kernel@armlinux.org.uk>
Reviewed-by: Emil Renner Berthing <emil.renner.berthing@canonical.com>
Signed-off-by: Jan Petrous (OSS) <jan.petrous@oss.nxp.com>
---
drivers/net/ethernet/stmicro/stmmac/dwmac-starfive.c | 19 ++++---------------
1 file changed, 4 insertions(+), 15 deletions(-)
diff --git a/drivers/net/ethernet/stmicro/stmmac/dwmac-starfive.c b/drivers/net/ethernet/stmicro/stmmac/dwmac-starfive.c
index 421666279dd3..0a0a363d3730 100644
--- a/drivers/net/ethernet/stmicro/stmmac/dwmac-starfive.c
+++ b/drivers/net/ethernet/stmicro/stmmac/dwmac-starfive.c
@@ -34,24 +34,13 @@ struct starfive_dwmac {
static void starfive_dwmac_fix_mac_speed(void *priv, unsigned int speed, unsigned int mode)
{
struct starfive_dwmac *dwmac = priv;
- unsigned long rate;
+ long rate;
int err;
- rate = clk_get_rate(dwmac->clk_tx);
-
- switch (speed) {
- case SPEED_1000:
- rate = 125000000;
- break;
- case SPEED_100:
- rate = 25000000;
- break;
- case SPEED_10:
- rate = 2500000;
- break;
- default:
+ rate = rgmii_clock(speed);
+ if (rate < 0) {
dev_err(dwmac->dev, "invalid speed %u\n", speed);
- break;
+ return;
}
err = clk_set_rate(dwmac->clk_tx, rate);
--
2.47.0
^ permalink raw reply related [flat|nested] 23+ messages in thread* [PATCH net-next v8 10/15] net: macb: Use helper rgmii_clock
2024-12-05 16:42 [PATCH net-next v8 00/15] Add support for Synopsis DWMAC IP on NXP Automotive SoCs S32G2xx/S32G3xx/S32R45 Jan Petrous via B4 Relay
` (8 preceding siblings ...)
2024-12-05 16:43 ` [PATCH net-next v8 09/15] net: dwmac-starfive: " Jan Petrous via B4 Relay
@ 2024-12-05 16:43 ` Jan Petrous via B4 Relay
2024-12-06 9:47 ` Nicolas Ferre
2024-12-05 16:43 ` [PATCH net-next v8 11/15] net: xgene_enet: " Jan Petrous via B4 Relay
` (5 subsequent siblings)
15 siblings, 1 reply; 23+ messages in thread
From: Jan Petrous via B4 Relay @ 2024-12-05 16:43 UTC (permalink / raw)
To: Maxime Coquelin, Alexandre Torgue, Jose Abreu, David S. Miller,
Eric Dumazet, Jakub Kicinski, Paolo Abeni, Vinod Koul,
Richard Cochran, Andrew Lunn, Heiner Kallweit, Russell King,
Shawn Guo, Sascha Hauer, Pengutronix Kernel Team, Fabio Estevam,
Emil Renner Berthing, Minda Chen, Nicolas Ferre, Claudiu Beznea,
Iyappan Subramanian, Keyur Chudgar, Quan Nguyen, Rob Herring,
Krzysztof Kozlowski, Conor Dooley, Giuseppe Cavallaro,
Andrew Lunn
Cc: linux-stm32, linux-arm-kernel, linux-kernel, netdev,
linux-arm-msm, imx, devicetree, NXP S32 Linux Team, 0x1207,
fancer.lancer, Jan Petrous (OSS), Russell King (Oracle)
From: "Jan Petrous (OSS)" <jan.petrous@oss.nxp.com>
Utilize a new helper function rgmii_clock().
Reviewed-by: Andrew Lunn <andrew@lunn.ch>
Reviewed-by: Russell King (Oracle) <rmk+kernel@armlinux.org.uk>
Signed-off-by: Jan Petrous (OSS) <jan.petrous@oss.nxp.com>
---
drivers/net/ethernet/cadence/macb_main.c | 14 ++------------
1 file changed, 2 insertions(+), 12 deletions(-)
diff --git a/drivers/net/ethernet/cadence/macb_main.c b/drivers/net/ethernet/cadence/macb_main.c
index daa416fb1724..640f500f989d 100644
--- a/drivers/net/ethernet/cadence/macb_main.c
+++ b/drivers/net/ethernet/cadence/macb_main.c
@@ -530,19 +530,9 @@ static void macb_set_tx_clk(struct macb *bp, int speed)
if (bp->phy_interface == PHY_INTERFACE_MODE_MII)
return;
- switch (speed) {
- case SPEED_10:
- rate = 2500000;
- break;
- case SPEED_100:
- rate = 25000000;
- break;
- case SPEED_1000:
- rate = 125000000;
- break;
- default:
+ rate = rgmii_clock(speed);
+ if (rate < 0)
return;
- }
rate_rounded = clk_round_rate(bp->tx_clk, rate);
if (rate_rounded < 0)
--
2.47.0
^ permalink raw reply related [flat|nested] 23+ messages in thread* Re: [PATCH net-next v8 10/15] net: macb: Use helper rgmii_clock
2024-12-05 16:43 ` [PATCH net-next v8 10/15] net: macb: " Jan Petrous via B4 Relay
@ 2024-12-06 9:47 ` Nicolas Ferre
0 siblings, 0 replies; 23+ messages in thread
From: Nicolas Ferre @ 2024-12-06 9:47 UTC (permalink / raw)
To: jan.petrous, Maxime Coquelin, Alexandre Torgue, Jose Abreu,
David S. Miller, Eric Dumazet, Jakub Kicinski, Paolo Abeni,
Vinod Koul, Richard Cochran, Andrew Lunn, Heiner Kallweit,
Russell King, Shawn Guo, Sascha Hauer, Pengutronix Kernel Team,
Fabio Estevam, Emil Renner Berthing, Minda Chen, Claudiu Beznea,
Iyappan Subramanian, Keyur Chudgar, Quan Nguyen, Rob Herring,
Krzysztof Kozlowski, Conor Dooley, Giuseppe Cavallaro,
Andrew Lunn
Cc: linux-stm32, linux-arm-kernel, linux-kernel, netdev,
linux-arm-msm, imx, devicetree, NXP S32 Linux Team, 0x1207,
fancer.lancer, Russell King (Oracle)
On 05/12/2024 at 17:43, Jan Petrous via B4 Relay wrote:
> From: "Jan Petrous (OSS)" <jan.petrous@oss.nxp.com>
>
> Utilize a new helper function rgmii_clock().
>
> Reviewed-by: Andrew Lunn <andrew@lunn.ch>
> Reviewed-by: Russell King (Oracle) <rmk+kernel@armlinux.org.uk>
> Signed-off-by: Jan Petrous (OSS) <jan.petrous@oss.nxp.com>
If needed:
Acked-by: Nicolas Ferre <nicolas.ferre@microchip.com>
Thanks, best regards,
Nicolas
> ---
> drivers/net/ethernet/cadence/macb_main.c | 14 ++------------
> 1 file changed, 2 insertions(+), 12 deletions(-)
>
> diff --git a/drivers/net/ethernet/cadence/macb_main.c b/drivers/net/ethernet/cadence/macb_main.c
> index daa416fb1724..640f500f989d 100644
> --- a/drivers/net/ethernet/cadence/macb_main.c
> +++ b/drivers/net/ethernet/cadence/macb_main.c
> @@ -530,19 +530,9 @@ static void macb_set_tx_clk(struct macb *bp, int speed)
> if (bp->phy_interface == PHY_INTERFACE_MODE_MII)
> return;
>
> - switch (speed) {
> - case SPEED_10:
> - rate = 2500000;
> - break;
> - case SPEED_100:
> - rate = 25000000;
> - break;
> - case SPEED_1000:
> - rate = 125000000;
> - break;
> - default:
> + rate = rgmii_clock(speed);
> + if (rate < 0)
> return;
> - }
>
> rate_rounded = clk_round_rate(bp->tx_clk, rate);
> if (rate_rounded < 0)
>
> --
> 2.47.0
>
>
^ permalink raw reply [flat|nested] 23+ messages in thread
* [PATCH net-next v8 11/15] net: xgene_enet: Use helper rgmii_clock
2024-12-05 16:42 [PATCH net-next v8 00/15] Add support for Synopsis DWMAC IP on NXP Automotive SoCs S32G2xx/S32G3xx/S32R45 Jan Petrous via B4 Relay
` (9 preceding siblings ...)
2024-12-05 16:43 ` [PATCH net-next v8 10/15] net: macb: " Jan Petrous via B4 Relay
@ 2024-12-05 16:43 ` Jan Petrous via B4 Relay
2024-12-05 16:43 ` [PATCH net-next v8 12/15] net: dwmac-sti: " Jan Petrous via B4 Relay
` (4 subsequent siblings)
15 siblings, 0 replies; 23+ messages in thread
From: Jan Petrous via B4 Relay @ 2024-12-05 16:43 UTC (permalink / raw)
To: Maxime Coquelin, Alexandre Torgue, Jose Abreu, David S. Miller,
Eric Dumazet, Jakub Kicinski, Paolo Abeni, Vinod Koul,
Richard Cochran, Andrew Lunn, Heiner Kallweit, Russell King,
Shawn Guo, Sascha Hauer, Pengutronix Kernel Team, Fabio Estevam,
Emil Renner Berthing, Minda Chen, Nicolas Ferre, Claudiu Beznea,
Iyappan Subramanian, Keyur Chudgar, Quan Nguyen, Rob Herring,
Krzysztof Kozlowski, Conor Dooley, Giuseppe Cavallaro,
Andrew Lunn
Cc: linux-stm32, linux-arm-kernel, linux-kernel, netdev,
linux-arm-msm, imx, devicetree, NXP S32 Linux Team, 0x1207,
fancer.lancer, Jan Petrous (OSS), Russell King (Oracle)
From: "Jan Petrous (OSS)" <jan.petrous@oss.nxp.com>
Utilize a new helper function rgmii_clock().
Reviewed-by: Andrew Lunn <andrew@lunn.ch>
Reviewed-by: Russell King (Oracle) <rmk+kernel@armlinux.org.uk>
Signed-off-by: Jan Petrous (OSS) <jan.petrous@oss.nxp.com>
---
drivers/net/ethernet/apm/xgene/xgene_enet_hw.c | 16 +++++-----------
1 file changed, 5 insertions(+), 11 deletions(-)
diff --git a/drivers/net/ethernet/apm/xgene/xgene_enet_hw.c b/drivers/net/ethernet/apm/xgene/xgene_enet_hw.c
index e641dbbea1e2..b854b6b42d77 100644
--- a/drivers/net/ethernet/apm/xgene/xgene_enet_hw.c
+++ b/drivers/net/ethernet/apm/xgene/xgene_enet_hw.c
@@ -421,18 +421,12 @@ static void xgene_enet_configure_clock(struct xgene_enet_pdata *pdata)
if (dev->of_node) {
struct clk *parent = clk_get_parent(pdata->clk);
+ long rate = rgmii_clock(pdata->phy_speed);
- switch (pdata->phy_speed) {
- case SPEED_10:
- clk_set_rate(parent, 2500000);
- break;
- case SPEED_100:
- clk_set_rate(parent, 25000000);
- break;
- default:
- clk_set_rate(parent, 125000000);
- break;
- }
+ if (rate < 0)
+ rate = 125000000;
+
+ clk_set_rate(parent, rate);
}
#ifdef CONFIG_ACPI
else {
--
2.47.0
^ permalink raw reply related [flat|nested] 23+ messages in thread* [PATCH net-next v8 12/15] net: dwmac-sti: Use helper rgmii_clock
2024-12-05 16:42 [PATCH net-next v8 00/15] Add support for Synopsis DWMAC IP on NXP Automotive SoCs S32G2xx/S32G3xx/S32R45 Jan Petrous via B4 Relay
` (10 preceding siblings ...)
2024-12-05 16:43 ` [PATCH net-next v8 11/15] net: xgene_enet: " Jan Petrous via B4 Relay
@ 2024-12-05 16:43 ` Jan Petrous via B4 Relay
2024-12-05 16:43 ` [PATCH net-next v8 13/15] dt-bindings: net: Add DT bindings for DWMAC on NXP S32G/R SoCs Jan Petrous via B4 Relay
` (3 subsequent siblings)
15 siblings, 0 replies; 23+ messages in thread
From: Jan Petrous via B4 Relay @ 2024-12-05 16:43 UTC (permalink / raw)
To: Maxime Coquelin, Alexandre Torgue, Jose Abreu, David S. Miller,
Eric Dumazet, Jakub Kicinski, Paolo Abeni, Vinod Koul,
Richard Cochran, Andrew Lunn, Heiner Kallweit, Russell King,
Shawn Guo, Sascha Hauer, Pengutronix Kernel Team, Fabio Estevam,
Emil Renner Berthing, Minda Chen, Nicolas Ferre, Claudiu Beznea,
Iyappan Subramanian, Keyur Chudgar, Quan Nguyen, Rob Herring,
Krzysztof Kozlowski, Conor Dooley, Giuseppe Cavallaro,
Andrew Lunn
Cc: linux-stm32, linux-arm-kernel, linux-kernel, netdev,
linux-arm-msm, imx, devicetree, NXP S32 Linux Team, 0x1207,
fancer.lancer, Jan Petrous (OSS), Russell King (Oracle)
From: "Jan Petrous (OSS)" <jan.petrous@oss.nxp.com>
Utilize a new helper function rgmii_clock().
Reviewed-by: Andrew Lunn <andrew@lunn.ch>
Reviewed-by: Russell King (Oracle) <rmk+kernel@armlinux.org.uk>
Signed-off-by: Jan Petrous (OSS) <jan.petrous@oss.nxp.com>
---
drivers/net/ethernet/stmicro/stmmac/dwmac-sti.c | 18 +++++-------------
1 file changed, 5 insertions(+), 13 deletions(-)
diff --git a/drivers/net/ethernet/stmicro/stmmac/dwmac-sti.c b/drivers/net/ethernet/stmicro/stmmac/dwmac-sti.c
index a6ff02d905a9..eabc4da9e1a9 100644
--- a/drivers/net/ethernet/stmicro/stmmac/dwmac-sti.c
+++ b/drivers/net/ethernet/stmicro/stmmac/dwmac-sti.c
@@ -21,10 +21,7 @@
#include "stmmac_platform.h"
-#define DWMAC_125MHZ 125000000
#define DWMAC_50MHZ 50000000
-#define DWMAC_25MHZ 25000000
-#define DWMAC_2_5MHZ 2500000
#define IS_PHY_IF_MODE_RGMII(iface) (iface == PHY_INTERFACE_MODE_RGMII || \
iface == PHY_INTERFACE_MODE_RGMII_ID || \
@@ -140,7 +137,7 @@ static void stih4xx_fix_retime_src(void *priv, u32 spd, unsigned int mode)
struct sti_dwmac *dwmac = priv;
u32 src = dwmac->tx_retime_src;
u32 reg = dwmac->ctrl_reg;
- u32 freq = 0;
+ long freq = 0;
if (dwmac->interface == PHY_INTERFACE_MODE_MII) {
src = TX_RETIME_SRC_TXCLK;
@@ -153,19 +150,14 @@ static void stih4xx_fix_retime_src(void *priv, u32 spd, unsigned int mode)
}
} else if (IS_PHY_IF_MODE_RGMII(dwmac->interface)) {
/* On GiGa clk source can be either ext or from clkgen */
- if (spd == SPEED_1000) {
- freq = DWMAC_125MHZ;
- } else {
+ freq = rgmii_clock(spd);
+
+ if (spd != SPEED_1000 && freq > 0)
/* Switch to clkgen for these speeds */
src = TX_RETIME_SRC_CLKGEN;
- if (spd == SPEED_100)
- freq = DWMAC_25MHZ;
- else if (spd == SPEED_10)
- freq = DWMAC_2_5MHZ;
- }
}
- if (src == TX_RETIME_SRC_CLKGEN && freq)
+ if (src == TX_RETIME_SRC_CLKGEN && freq > 0)
clk_set_rate(dwmac->clk, freq);
regmap_update_bits(dwmac->regmap, reg, STIH4XX_RETIME_SRC_MASK,
--
2.47.0
^ permalink raw reply related [flat|nested] 23+ messages in thread* [PATCH net-next v8 13/15] dt-bindings: net: Add DT bindings for DWMAC on NXP S32G/R SoCs
2024-12-05 16:42 [PATCH net-next v8 00/15] Add support for Synopsis DWMAC IP on NXP Automotive SoCs S32G2xx/S32G3xx/S32R45 Jan Petrous via B4 Relay
` (11 preceding siblings ...)
2024-12-05 16:43 ` [PATCH net-next v8 12/15] net: dwmac-sti: " Jan Petrous via B4 Relay
@ 2024-12-05 16:43 ` Jan Petrous via B4 Relay
2024-12-05 16:43 ` [PATCH net-next v8 14/15] net: stmmac: dwmac-s32: add basic NXP S32G/S32R glue driver Jan Petrous via B4 Relay
` (2 subsequent siblings)
15 siblings, 0 replies; 23+ messages in thread
From: Jan Petrous via B4 Relay @ 2024-12-05 16:43 UTC (permalink / raw)
To: Maxime Coquelin, Alexandre Torgue, Jose Abreu, David S. Miller,
Eric Dumazet, Jakub Kicinski, Paolo Abeni, Vinod Koul,
Richard Cochran, Andrew Lunn, Heiner Kallweit, Russell King,
Shawn Guo, Sascha Hauer, Pengutronix Kernel Team, Fabio Estevam,
Emil Renner Berthing, Minda Chen, Nicolas Ferre, Claudiu Beznea,
Iyappan Subramanian, Keyur Chudgar, Quan Nguyen, Rob Herring,
Krzysztof Kozlowski, Conor Dooley, Giuseppe Cavallaro,
Andrew Lunn
Cc: linux-stm32, linux-arm-kernel, linux-kernel, netdev,
linux-arm-msm, imx, devicetree, NXP S32 Linux Team, 0x1207,
fancer.lancer, Jan Petrous (OSS)
From: "Jan Petrous (OSS)" <jan.petrous@oss.nxp.com>
Add basic description for DWMAC ethernet IP on NXP S32G2xx, S32G3xx
and S32R45 automotive series SoCs.
Reviewed-by: Rob Herring (Arm) <robh@kernel.org>
Signed-off-by: Jan Petrous (OSS) <jan.petrous@oss.nxp.com>
---
.../devicetree/bindings/net/nxp,s32-dwmac.yaml | 105 +++++++++++++++++++++
.../devicetree/bindings/net/snps,dwmac.yaml | 1 +
2 files changed, 106 insertions(+)
diff --git a/Documentation/devicetree/bindings/net/nxp,s32-dwmac.yaml b/Documentation/devicetree/bindings/net/nxp,s32-dwmac.yaml
new file mode 100644
index 000000000000..2b8b74c5feec
--- /dev/null
+++ b/Documentation/devicetree/bindings/net/nxp,s32-dwmac.yaml
@@ -0,0 +1,105 @@
+# SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause)
+# Copyright 2021-2024 NXP
+%YAML 1.2
+---
+$id: http://devicetree.org/schemas/net/nxp,s32-dwmac.yaml#
+$schema: http://devicetree.org/meta-schemas/core.yaml#
+
+title: NXP S32G2xx/S32G3xx/S32R45 GMAC ethernet controller
+
+maintainers:
+ - Jan Petrous (OSS) <jan.petrous@oss.nxp.com>
+
+description:
+ This device is a Synopsys DWC IP, integrated on NXP S32G/R SoCs.
+ The SoC series S32G2xx and S32G3xx feature one DWMAC instance,
+ the SoC S32R45 has two instances. The devices can use RGMII/RMII/MII
+ interface over Pinctrl device or the output can be routed
+ to the embedded SerDes for SGMII connectivity.
+
+properties:
+ compatible:
+ oneOf:
+ - const: nxp,s32g2-dwmac
+ - items:
+ - enum:
+ - nxp,s32g3-dwmac
+ - nxp,s32r45-dwmac
+ - const: nxp,s32g2-dwmac
+
+ reg:
+ items:
+ - description: Main GMAC registers
+ - description: GMAC PHY mode control register
+
+ interrupts:
+ maxItems: 1
+
+ interrupt-names:
+ const: macirq
+
+ clocks:
+ items:
+ - description: Main GMAC clock
+ - description: Transmit clock
+ - description: Receive clock
+ - description: PTP reference clock
+
+ clock-names:
+ items:
+ - const: stmmaceth
+ - const: tx
+ - const: rx
+ - const: ptp_ref
+
+required:
+ - clocks
+ - clock-names
+
+allOf:
+ - $ref: snps,dwmac.yaml#
+
+unevaluatedProperties: false
+
+examples:
+ - |
+ #include <dt-bindings/interrupt-controller/arm-gic.h>
+ #include <dt-bindings/interrupt-controller/irq.h>
+ #include <dt-bindings/phy/phy.h>
+ bus {
+ #address-cells = <2>;
+ #size-cells = <2>;
+
+ ethernet@4033c000 {
+ compatible = "nxp,s32g2-dwmac";
+ reg = <0x0 0x4033c000 0x0 0x2000>, /* gmac IP */
+ <0x0 0x4007c004 0x0 0x4>; /* GMAC_0_CTRL_STS */
+ interrupt-parent = <&gic>;
+ interrupts = <GIC_SPI 57 IRQ_TYPE_LEVEL_HIGH>;
+ interrupt-names = "macirq";
+ snps,mtl-rx-config = <&mtl_rx_setup>;
+ snps,mtl-tx-config = <&mtl_tx_setup>;
+ clocks = <&clks 24>, <&clks 17>, <&clks 16>, <&clks 15>;
+ clock-names = "stmmaceth", "tx", "rx", "ptp_ref";
+ phy-mode = "rgmii-id";
+ phy-handle = <&phy0>;
+
+ mtl_rx_setup: rx-queues-config {
+ snps,rx-queues-to-use = <5>;
+ };
+
+ mtl_tx_setup: tx-queues-config {
+ snps,tx-queues-to-use = <5>;
+ };
+
+ mdio {
+ #address-cells = <1>;
+ #size-cells = <0>;
+ compatible = "snps,dwmac-mdio";
+
+ phy0: ethernet-phy@0 {
+ reg = <0>;
+ };
+ };
+ };
+ };
diff --git a/Documentation/devicetree/bindings/net/snps,dwmac.yaml b/Documentation/devicetree/bindings/net/snps,dwmac.yaml
index eb1f3ae41ab9..91e75eb3f329 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
+ - nxp,s32g2-dwmac
- qcom,qcs404-ethqos
- qcom,sa8775p-ethqos
- qcom,sc8280xp-ethqos
--
2.47.0
^ permalink raw reply related [flat|nested] 23+ messages in thread* [PATCH net-next v8 14/15] net: stmmac: dwmac-s32: add basic NXP S32G/S32R glue driver
2024-12-05 16:42 [PATCH net-next v8 00/15] Add support for Synopsis DWMAC IP on NXP Automotive SoCs S32G2xx/S32G3xx/S32R45 Jan Petrous via B4 Relay
` (12 preceding siblings ...)
2024-12-05 16:43 ` [PATCH net-next v8 13/15] dt-bindings: net: Add DT bindings for DWMAC on NXP S32G/R SoCs Jan Petrous via B4 Relay
@ 2024-12-05 16:43 ` Jan Petrous via B4 Relay
2024-12-05 16:43 ` [PATCH net-next v8 15/15] MAINTAINERS: Add Jan Petrous as the NXP S32G/R DWMAC driver maintainer Jan Petrous via B4 Relay
2024-12-10 5:10 ` [PATCH net-next v8 00/15] Add support for Synopsis DWMAC IP on NXP Automotive SoCs S32G2xx/S32G3xx/S32R45 patchwork-bot+netdevbpf
15 siblings, 0 replies; 23+ messages in thread
From: Jan Petrous via B4 Relay @ 2024-12-05 16:43 UTC (permalink / raw)
To: Maxime Coquelin, Alexandre Torgue, Jose Abreu, David S. Miller,
Eric Dumazet, Jakub Kicinski, Paolo Abeni, Vinod Koul,
Richard Cochran, Andrew Lunn, Heiner Kallweit, Russell King,
Shawn Guo, Sascha Hauer, Pengutronix Kernel Team, Fabio Estevam,
Emil Renner Berthing, Minda Chen, Nicolas Ferre, Claudiu Beznea,
Iyappan Subramanian, Keyur Chudgar, Quan Nguyen, Rob Herring,
Krzysztof Kozlowski, Conor Dooley, Giuseppe Cavallaro,
Andrew Lunn
Cc: linux-stm32, linux-arm-kernel, linux-kernel, netdev,
linux-arm-msm, imx, devicetree, NXP S32 Linux Team, 0x1207,
fancer.lancer, Jan Petrous (OSS)
From: "Jan Petrous (OSS)" <jan.petrous@oss.nxp.com>
NXP S32G2xx/S32G3xx and S32R45 are automotive grade SoCs
that integrate one or two Synopsys DWMAC 5.10/5.20 IPs.
The basic driver supports only RGMII interface.
Signed-off-by: Jan Petrous (OSS) <jan.petrous@oss.nxp.com>
---
drivers/net/ethernet/stmicro/stmmac/Kconfig | 12 ++
drivers/net/ethernet/stmicro/stmmac/Makefile | 1 +
drivers/net/ethernet/stmicro/stmmac/dwmac-s32.c | 202 ++++++++++++++++++++++++
3 files changed, 215 insertions(+)
diff --git a/drivers/net/ethernet/stmicro/stmmac/Kconfig b/drivers/net/ethernet/stmicro/stmmac/Kconfig
index 6658536a4e17..4cc85a36a1ab 100644
--- a/drivers/net/ethernet/stmicro/stmmac/Kconfig
+++ b/drivers/net/ethernet/stmicro/stmmac/Kconfig
@@ -154,6 +154,18 @@ config DWMAC_RZN1
the stmmac device driver. This support can make use of a custom MII
converter PCS device.
+config DWMAC_S32
+ tristate "NXP S32G/S32R GMAC support"
+ default ARCH_S32
+ depends on OF && (ARCH_S32 || COMPILE_TEST)
+ help
+ Support for ethernet controller on NXP S32CC SOCs.
+
+ This selects NXP SoC glue layer support for the stmmac
+ device driver. This driver is used for the S32CC series
+ SOCs GMAC ethernet controller, ie. S32G2xx, S32G3xx and
+ S32R45.
+
config DWMAC_SOCFPGA
tristate "SOCFPGA dwmac support"
default ARCH_INTEL_SOCFPGA
diff --git a/drivers/net/ethernet/stmicro/stmmac/Makefile b/drivers/net/ethernet/stmicro/stmmac/Makefile
index 2389fd261344..b26f0e79c2b3 100644
--- a/drivers/net/ethernet/stmicro/stmmac/Makefile
+++ b/drivers/net/ethernet/stmicro/stmmac/Makefile
@@ -22,6 +22,7 @@ obj-$(CONFIG_DWMAC_MESON) += dwmac-meson.o dwmac-meson8b.o
obj-$(CONFIG_DWMAC_QCOM_ETHQOS) += dwmac-qcom-ethqos.o
obj-$(CONFIG_DWMAC_ROCKCHIP) += dwmac-rk.o
obj-$(CONFIG_DWMAC_RZN1) += dwmac-rzn1.o
+obj-$(CONFIG_DWMAC_S32) += dwmac-s32.o
obj-$(CONFIG_DWMAC_SOCFPGA) += dwmac-altr-socfpga.o
obj-$(CONFIG_DWMAC_STARFIVE) += dwmac-starfive.o
obj-$(CONFIG_DWMAC_STI) += dwmac-sti.o
diff --git a/drivers/net/ethernet/stmicro/stmmac/dwmac-s32.c b/drivers/net/ethernet/stmicro/stmmac/dwmac-s32.c
new file mode 100644
index 000000000000..9cc0e5817416
--- /dev/null
+++ b/drivers/net/ethernet/stmicro/stmmac/dwmac-s32.c
@@ -0,0 +1,202 @@
+// SPDX-License-Identifier: GPL-2.0
+/*
+ * NXP S32G/R GMAC glue layer
+ *
+ * Copyright 2019-2024 NXP
+ *
+ */
+
+#include <linux/clk.h>
+#include <linux/clk-provider.h>
+#include <linux/device.h>
+#include <linux/ethtool.h>
+#include <linux/io.h>
+#include <linux/module.h>
+#include <linux/of_mdio.h>
+#include <linux/of_address.h>
+#include <linux/phy.h>
+#include <linux/phylink.h>
+#include <linux/platform_device.h>
+#include <linux/stmmac.h>
+
+#include "stmmac_platform.h"
+
+#define GMAC_INTF_RATE_125M 125000000 /* 125MHz */
+
+/* SoC PHY interface control register */
+#define PHY_INTF_SEL_MII 0x00
+#define PHY_INTF_SEL_SGMII 0x01
+#define PHY_INTF_SEL_RGMII 0x02
+#define PHY_INTF_SEL_RMII 0x08
+
+struct s32_priv_data {
+ void __iomem *ioaddr;
+ void __iomem *ctrl_sts;
+ struct device *dev;
+ phy_interface_t *intf_mode;
+ struct clk *tx_clk;
+ struct clk *rx_clk;
+};
+
+static int s32_gmac_write_phy_intf_select(struct s32_priv_data *gmac)
+{
+ writel(PHY_INTF_SEL_RGMII, gmac->ctrl_sts);
+
+ dev_dbg(gmac->dev, "PHY mode set to %s\n", phy_modes(*gmac->intf_mode));
+
+ return 0;
+}
+
+static int s32_gmac_init(struct platform_device *pdev, void *priv)
+{
+ struct s32_priv_data *gmac = priv;
+ int ret;
+
+ /* Set initial TX interface clock */
+ ret = clk_prepare_enable(gmac->tx_clk);
+ if (ret) {
+ dev_err(&pdev->dev, "Can't enable tx clock\n");
+ return ret;
+ }
+ ret = clk_set_rate(gmac->tx_clk, GMAC_INTF_RATE_125M);
+ if (ret) {
+ dev_err(&pdev->dev, "Can't set tx clock\n");
+ goto err_tx_disable;
+ }
+
+ /* Set initial RX interface clock */
+ ret = clk_prepare_enable(gmac->rx_clk);
+ if (ret) {
+ dev_err(&pdev->dev, "Can't enable rx clock\n");
+ goto err_tx_disable;
+ }
+ ret = clk_set_rate(gmac->rx_clk, GMAC_INTF_RATE_125M);
+ if (ret) {
+ dev_err(&pdev->dev, "Can't set rx clock\n");
+ goto err_txrx_disable;
+ }
+
+ /* Set interface mode */
+ ret = s32_gmac_write_phy_intf_select(gmac);
+ if (ret) {
+ dev_err(&pdev->dev, "Can't set PHY interface mode\n");
+ goto err_txrx_disable;
+ }
+
+ return 0;
+
+err_txrx_disable:
+ clk_disable_unprepare(gmac->rx_clk);
+err_tx_disable:
+ clk_disable_unprepare(gmac->tx_clk);
+ return ret;
+}
+
+static void s32_gmac_exit(struct platform_device *pdev, void *priv)
+{
+ struct s32_priv_data *gmac = priv;
+
+ clk_disable_unprepare(gmac->tx_clk);
+ clk_disable_unprepare(gmac->rx_clk);
+}
+
+static void s32_fix_mac_speed(void *priv, unsigned int speed, unsigned int mode)
+{
+ struct s32_priv_data *gmac = priv;
+ long tx_clk_rate;
+ int ret;
+
+ tx_clk_rate = rgmii_clock(speed);
+ if (tx_clk_rate < 0) {
+ dev_err(gmac->dev, "Unsupported/Invalid speed: %d\n", speed);
+ return;
+ }
+
+ dev_dbg(gmac->dev, "Set tx clock to %ld Hz\n", tx_clk_rate);
+ ret = clk_set_rate(gmac->tx_clk, tx_clk_rate);
+ if (ret)
+ dev_err(gmac->dev, "Can't set tx clock\n");
+}
+
+static int s32_dwmac_probe(struct platform_device *pdev)
+{
+ struct plat_stmmacenet_data *plat;
+ struct device *dev = &pdev->dev;
+ struct stmmac_resources res;
+ struct s32_priv_data *gmac;
+ int ret;
+
+ gmac = devm_kzalloc(&pdev->dev, sizeof(*gmac), GFP_KERNEL);
+ if (!gmac)
+ return -ENOMEM;
+
+ gmac->dev = &pdev->dev;
+
+ ret = stmmac_get_platform_resources(pdev, &res);
+ if (ret)
+ return dev_err_probe(dev, ret,
+ "Failed to get platform resources\n");
+
+ plat = devm_stmmac_probe_config_dt(pdev, res.mac);
+ if (IS_ERR(plat))
+ return dev_err_probe(dev, PTR_ERR(plat),
+ "dt configuration failed\n");
+
+ /* PHY interface mode control reg */
+ gmac->ctrl_sts = devm_platform_get_and_ioremap_resource(pdev, 1, NULL);
+ if (IS_ERR(gmac->ctrl_sts))
+ return dev_err_probe(dev, PTR_ERR(gmac->ctrl_sts),
+ "S32CC config region is missing\n");
+
+ /* tx clock */
+ gmac->tx_clk = devm_clk_get(&pdev->dev, "tx");
+ if (IS_ERR(gmac->tx_clk))
+ return dev_err_probe(dev, PTR_ERR(gmac->tx_clk),
+ "tx clock not found\n");
+
+ /* rx clock */
+ gmac->rx_clk = devm_clk_get(&pdev->dev, "rx");
+ if (IS_ERR(gmac->rx_clk))
+ return dev_err_probe(dev, PTR_ERR(gmac->rx_clk),
+ "rx clock not found\n");
+
+ gmac->intf_mode = &plat->phy_interface;
+ gmac->ioaddr = res.addr;
+
+ /* S32CC core feature set */
+ plat->has_gmac4 = true;
+ plat->pmt = 1;
+ plat->flags |= STMMAC_FLAG_SPH_DISABLE;
+ plat->rx_fifo_size = 20480;
+ plat->tx_fifo_size = 20480;
+
+ plat->init = s32_gmac_init;
+ plat->exit = s32_gmac_exit;
+ plat->fix_mac_speed = s32_fix_mac_speed;
+
+ plat->bsp_priv = gmac;
+
+ return stmmac_pltfr_probe(pdev, plat, &res);
+}
+
+static const struct of_device_id s32_dwmac_match[] = {
+ { .compatible = "nxp,s32g2-dwmac" },
+ { }
+};
+MODULE_DEVICE_TABLE(of, s32_dwmac_match);
+
+static struct platform_driver s32_dwmac_driver = {
+ .probe = s32_dwmac_probe,
+ .remove = stmmac_pltfr_remove,
+ .driver = {
+ .name = "s32-dwmac",
+ .pm = &stmmac_pltfr_pm_ops,
+ .of_match_table = s32_dwmac_match,
+ },
+};
+module_platform_driver(s32_dwmac_driver);
+
+MODULE_AUTHOR("Jan Petrous (OSS) <jan.petrous@oss.nxp.com>");
+MODULE_DESCRIPTION("NXP S32G/R common chassis GMAC driver");
+MODULE_LICENSE("GPL");
+
--
2.47.0
^ permalink raw reply related [flat|nested] 23+ messages in thread* [PATCH net-next v8 15/15] MAINTAINERS: Add Jan Petrous as the NXP S32G/R DWMAC driver maintainer
2024-12-05 16:42 [PATCH net-next v8 00/15] Add support for Synopsis DWMAC IP on NXP Automotive SoCs S32G2xx/S32G3xx/S32R45 Jan Petrous via B4 Relay
` (13 preceding siblings ...)
2024-12-05 16:43 ` [PATCH net-next v8 14/15] net: stmmac: dwmac-s32: add basic NXP S32G/S32R glue driver Jan Petrous via B4 Relay
@ 2024-12-05 16:43 ` Jan Petrous via B4 Relay
2024-12-10 5:10 ` [PATCH net-next v8 00/15] Add support for Synopsis DWMAC IP on NXP Automotive SoCs S32G2xx/S32G3xx/S32R45 patchwork-bot+netdevbpf
15 siblings, 0 replies; 23+ messages in thread
From: Jan Petrous via B4 Relay @ 2024-12-05 16:43 UTC (permalink / raw)
To: Maxime Coquelin, Alexandre Torgue, Jose Abreu, David S. Miller,
Eric Dumazet, Jakub Kicinski, Paolo Abeni, Vinod Koul,
Richard Cochran, Andrew Lunn, Heiner Kallweit, Russell King,
Shawn Guo, Sascha Hauer, Pengutronix Kernel Team, Fabio Estevam,
Emil Renner Berthing, Minda Chen, Nicolas Ferre, Claudiu Beznea,
Iyappan Subramanian, Keyur Chudgar, Quan Nguyen, Rob Herring,
Krzysztof Kozlowski, Conor Dooley, Giuseppe Cavallaro,
Andrew Lunn
Cc: linux-stm32, linux-arm-kernel, linux-kernel, netdev,
linux-arm-msm, imx, devicetree, NXP S32 Linux Team, 0x1207,
fancer.lancer, Jan Petrous (OSS)
From: "Jan Petrous (OSS)" <jan.petrous@oss.nxp.com>
Add myself as NXP S32G/R DWMAC Ethernet driver maintainer.
Reviewed-by: Andrew Lunn <andrew@lunn.ch>
Signed-off-by: Jan Petrous (OSS) <jan.petrous@oss.nxp.com>
---
MAINTAINERS | 7 +++++++
1 file changed, 7 insertions(+)
diff --git a/MAINTAINERS b/MAINTAINERS
index 1e930c7a58b1..baf41d73d14e 100644
--- a/MAINTAINERS
+++ b/MAINTAINERS
@@ -2836,6 +2836,13 @@ S: Maintained
F: arch/arm64/boot/dts/freescale/s32g*.dts*
F: drivers/pinctrl/nxp/
+ARM/NXP S32G/S32R DWMAC ETHERNET DRIVER
+M: Jan Petrous <jan.petrous@oss.nxp.com>
+L: NXP S32 Linux Team <s32@nxp.com>
+S: Maintained
+F: Documentation/devicetree/bindings/net/nxp,s32-dwmac.yaml
+F: drivers/net/ethernet/stmicro/stmmac/dwmac-s32.c
+
ARM/Orion SoC/Technologic Systems TS-78xx platform support
M: Alexander Clouter <alex@digriz.org.uk>
L: linux-arm-kernel@lists.infradead.org (moderated for non-subscribers)
--
2.47.0
^ permalink raw reply related [flat|nested] 23+ messages in thread* Re: [PATCH net-next v8 00/15] Add support for Synopsis DWMAC IP on NXP Automotive SoCs S32G2xx/S32G3xx/S32R45
2024-12-05 16:42 [PATCH net-next v8 00/15] Add support for Synopsis DWMAC IP on NXP Automotive SoCs S32G2xx/S32G3xx/S32R45 Jan Petrous via B4 Relay
` (14 preceding siblings ...)
2024-12-05 16:43 ` [PATCH net-next v8 15/15] MAINTAINERS: Add Jan Petrous as the NXP S32G/R DWMAC driver maintainer Jan Petrous via B4 Relay
@ 2024-12-10 5:10 ` patchwork-bot+netdevbpf
15 siblings, 0 replies; 23+ messages in thread
From: patchwork-bot+netdevbpf @ 2024-12-10 5:10 UTC (permalink / raw)
To: Jan Petrous via B4 Relay
Cc: mcoquelin.stm32, alexandre.torgue, joabreu, davem, edumazet, kuba,
pabeni, vkoul, richardcochran, andrew, hkallweit1, linux,
shawnguo, s.hauer, kernel, festevam, kernel, minda.chen,
nicolas.ferre, claudiu.beznea, iyappan, keyur, quan, robh,
krzk+dt, conor+dt, peppe.cavallaro, andrew+netdev, linux-stm32,
linux-arm-kernel, linux-kernel, netdev, linux-arm-msm, imx,
devicetree, s32, 0x1207, fancer.lancer, jan.petrous,
jacob.e.keller, rmk+kernel, emil.renner.berthing
Hello:
This series was applied to netdev/net-next.git (main)
by Jakub Kicinski <kuba@kernel.org>:
On Thu, 05 Dec 2024 17:42:57 +0100 you wrote:
> The SoC series S32G2xx and S32G3xx feature one DWMAC instance,
> the SoC S32R45 has two instances. The devices can use RGMII/RMII/MII
> interface over Pinctrl device or the output can be routed
> to the embedded SerDes for SGMII connectivity.
>
> The provided stmmac glue code implements only basic functionality,
> interface support is restricted to RGMII only. More, including
> SGMII/SerDes support will come later.
>
> [...]
Here is the summary with links:
- [net-next,v8,01/15] net: stmmac: Fix CSR divider comment
https://git.kernel.org/netdev/net-next/c/31cdd8418234
- [net-next,v8,02/15] net: stmmac: Extend CSR calc support
https://git.kernel.org/netdev/net-next/c/c8fab05d021d
- [net-next,v8,03/15] net: stmmac: Fix clock rate variables size
https://git.kernel.org/netdev/net-next/c/cb09f61a9ab8
- [net-next,v8,04/15] net: phy: Add helper for mapping RGMII link speed to clock rate
https://git.kernel.org/netdev/net-next/c/386aa60abdb6
- [net-next,v8,05/15] net: dwmac-dwc-qos-eth: Use helper rgmii_clock
https://git.kernel.org/netdev/net-next/c/37b66c483e4c
- [net-next,v8,06/15] net: dwmac-imx: Use helper rgmii_clock
https://git.kernel.org/netdev/net-next/c/839b75ea4d94
- [net-next,v8,07/15] net: dwmac-intel-plat: Use helper rgmii_clock
https://git.kernel.org/netdev/net-next/c/8470bfc83515
- [net-next,v8,08/15] net: dwmac-rk: Use helper rgmii_clock
https://git.kernel.org/netdev/net-next/c/30b4a9b5c335
- [net-next,v8,09/15] net: dwmac-starfive: Use helper rgmii_clock
https://git.kernel.org/netdev/net-next/c/b561d717a799
- [net-next,v8,10/15] net: macb: Use helper rgmii_clock
https://git.kernel.org/netdev/net-next/c/04207d28f468
- [net-next,v8,11/15] net: xgene_enet: Use helper rgmii_clock
https://git.kernel.org/netdev/net-next/c/fd59bca4d5ea
- [net-next,v8,12/15] net: dwmac-sti: Use helper rgmii_clock
https://git.kernel.org/netdev/net-next/c/1ead57775507
- [net-next,v8,13/15] dt-bindings: net: Add DT bindings for DWMAC on NXP S32G/R SoCs
https://git.kernel.org/netdev/net-next/c/91f10e589520
- [net-next,v8,14/15] net: stmmac: dwmac-s32: add basic NXP S32G/S32R glue driver
https://git.kernel.org/netdev/net-next/c/cd197ac5d661
- [net-next,v8,15/15] MAINTAINERS: Add Jan Petrous as the NXP S32G/R DWMAC driver maintainer
https://git.kernel.org/netdev/net-next/c/6bc6234cbd5e
You are awesome, thank you!
--
Deet-doot-dot, I am a bot.
https://korg.docs.kernel.org/patchwork/pwbot.html
^ permalink raw reply [flat|nested] 23+ messages in thread