mirror of
https://github.com/openwrt/openwrt.git
synced 2024-12-30 18:47:06 +00:00
72 lines
2.2 KiB
Diff
72 lines
2.2 KiB
Diff
|
From bb7ab910631ee0ade0758a3c4aa8dadc3b6934b6 Mon Sep 17 00:00:00 2001
|
||
|
From: Marek Vasut <marex@denx.de>
|
||
|
Date: Tue, 11 Jun 2024 10:36:02 +0200
|
||
|
Subject: [PATCH 5/8] net: stmmac: dwmac-stm32: Extract PMCR configuration
|
||
|
|
||
|
Pull the PMCR clock mux configuration into a separate function. This is
|
||
|
the final change of three, which moves external clock rate validation,
|
||
|
external clock selector decoding, and clock mux configuration into
|
||
|
separate functions. This should make the code easier to understand.
|
||
|
No functional change intended.
|
||
|
|
||
|
Signed-off-by: Marek Vasut <marex@denx.de>
|
||
|
Signed-off-by: Christophe Roullier <christophe.roullier@foss.st.com>
|
||
|
Signed-off-by: Paolo Abeni <pabeni@redhat.com>
|
||
|
---
|
||
|
.../net/ethernet/stmicro/stmmac/dwmac-stm32.c | 27 ++++++++++++-------
|
||
|
1 file changed, 17 insertions(+), 10 deletions(-)
|
||
|
|
||
|
--- a/drivers/net/ethernet/stmicro/stmmac/dwmac-stm32.c
|
||
|
+++ b/drivers/net/ethernet/stmicro/stmmac/dwmac-stm32.c
|
||
|
@@ -219,15 +219,11 @@ static int stm32mp1_validate_ethck_rate(
|
||
|
return -EINVAL;
|
||
|
}
|
||
|
|
||
|
-static int stm32mp1_set_mode(struct plat_stmmacenet_data *plat_dat)
|
||
|
+static int stm32mp1_configure_pmcr(struct plat_stmmacenet_data *plat_dat)
|
||
|
{
|
||
|
struct stm32_dwmac *dwmac = plat_dat->bsp_priv;
|
||
|
u32 reg = dwmac->mode_reg;
|
||
|
- int val, ret;
|
||
|
-
|
||
|
- ret = stm32mp1_select_ethck_external(plat_dat);
|
||
|
- if (ret)
|
||
|
- return ret;
|
||
|
+ int val;
|
||
|
|
||
|
switch (plat_dat->mac_interface) {
|
||
|
case PHY_INTERFACE_MODE_MII:
|
||
|
@@ -262,10 +258,6 @@ static int stm32mp1_set_mode(struct plat
|
||
|
return -EINVAL;
|
||
|
}
|
||
|
|
||
|
- ret = stm32mp1_validate_ethck_rate(plat_dat);
|
||
|
- if (ret)
|
||
|
- return ret;
|
||
|
-
|
||
|
/* Need to update PMCCLRR (clear register) */
|
||
|
regmap_write(dwmac->regmap, reg + SYSCFG_PMCCLRR_OFFSET,
|
||
|
dwmac->ops->syscfg_eth_mask);
|
||
|
@@ -275,6 +267,21 @@ static int stm32mp1_set_mode(struct plat
|
||
|
dwmac->ops->syscfg_eth_mask, val);
|
||
|
}
|
||
|
|
||
|
+static int stm32mp1_set_mode(struct plat_stmmacenet_data *plat_dat)
|
||
|
+{
|
||
|
+ int ret;
|
||
|
+
|
||
|
+ ret = stm32mp1_select_ethck_external(plat_dat);
|
||
|
+ if (ret)
|
||
|
+ return ret;
|
||
|
+
|
||
|
+ ret = stm32mp1_validate_ethck_rate(plat_dat);
|
||
|
+ if (ret)
|
||
|
+ return ret;
|
||
|
+
|
||
|
+ return stm32mp1_configure_pmcr(plat_dat);
|
||
|
+}
|
||
|
+
|
||
|
static int stm32mcu_set_mode(struct plat_stmmacenet_data *plat_dat)
|
||
|
{
|
||
|
struct stm32_dwmac *dwmac = plat_dat->bsp_priv;
|